mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-08 23:18:18 -07:00
feat: add parent survey gauges
This commit is contained in:
parent
973f59c299
commit
e5e969b968
14 changed files with 307 additions and 11 deletions
|
|
@ -24,6 +24,10 @@ class Measure < ActiveRecord::Base
|
|||
@student_survey_items ||= survey_items.student_survey_items
|
||||
end
|
||||
|
||||
def parent_survey_items
|
||||
@parent_survey_items ||= survey_items.parent_survey_items
|
||||
end
|
||||
|
||||
def student_survey_items_with_sufficient_responses(school:, academic_year:)
|
||||
@student_survey_items_with_sufficient_responses ||= Hash.new do |memo, (school, academic_year)|
|
||||
memo[[school, academic_year]] = SurveyItem.where(id: SurveyItem.joins("inner join survey_item_responses on survey_item_responses.survey_item_id = survey_items.id")
|
||||
|
|
@ -59,6 +63,10 @@ class Measure < ActiveRecord::Base
|
|||
@includes_admin_data_items ||= admin_data_items.length.positive?
|
||||
end
|
||||
|
||||
def includes_parent_survey_items?
|
||||
@includes_parent_survey_items ||= parent_survey_items.length.positive?
|
||||
end
|
||||
|
||||
def score(school:, academic_year:)
|
||||
@score ||= Hash.new do |memo, (school, academic_year)|
|
||||
next Score::NIL_SCORE if incalculable_score(school:, academic_year:)
|
||||
|
|
@ -103,6 +111,15 @@ class Measure < ActiveRecord::Base
|
|||
@admin_score[[school, academic_year]]
|
||||
end
|
||||
|
||||
def parent_score(school:, academic_year:)
|
||||
@parent_score ||= Hash.new do |memo, (school, academic_year)|
|
||||
average = parent_averages(school:, academic_year:).average.round(2)
|
||||
memo[[school, academic_year]] = scorify(average:, school:, academic_year:)
|
||||
end
|
||||
|
||||
@parent_score[[school, academic_year]]
|
||||
end
|
||||
|
||||
def warning_low_benchmark
|
||||
1
|
||||
end
|
||||
|
|
@ -222,4 +239,9 @@ class Measure < ActiveRecord::Base
|
|||
def admin_data_averages(school:, academic_year:)
|
||||
AdminDataValue.where(school:, academic_year:, admin_data_item: admin_data_items).pluck(:likert_score)
|
||||
end
|
||||
|
||||
def parent_averages(school:, academic_year:)
|
||||
SurveyItemResponse.where(school:, academic_year:,
|
||||
survey_item_id: parent_survey_items).group(:survey_item).average(:likert_score).values
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@ class SurveyItem < ActiveRecord::Base
|
|||
scope :early_education_survey_items, lambda {
|
||||
where("survey_items.survey_item_id LIKE '%-%-es%'")
|
||||
}
|
||||
scope :parent_survey_items, lambda {
|
||||
where("survey_items.survey_item_id LIKE 'p-%'")
|
||||
}
|
||||
|
||||
scope :survey_items_for_grade, lambda { |school, academic_year, grade|
|
||||
includes(:survey_item_responses)
|
||||
|
|
@ -75,6 +78,8 @@ class SurveyItem < ActiveRecord::Base
|
|||
return :teacher if survey_item_ids.subset? teacher_survey_items.map(&:survey_item_id).to_set
|
||||
return :standard if survey_item_ids.subset? standard_survey_items.map(&:survey_item_id).to_set
|
||||
|
||||
return :parent if parent_survey_items.count.positive?
|
||||
|
||||
:unknown
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue