You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sqm-dashboards/app/models/report/pillar.rb

84 lines
2.2 KiB

module Report
class Pillar
attr_reader :period, :measures, :indicator, :school, :academic_year
def initialize(school:, period:, measures:, indicator:, academic_year:)
@school = school
@measures = measures
@indicator = indicator
@period = period
@academic_year = academic_year
end
def school_name
school.name
end
def pillar
PILLARS[indicator.to_sym]
end
def score
measures.map do |measure|
measure.score(school:, academic_year:).average
end.flatten.compact.average
end
def category
measures.first.category.name
end
def measure_ids
measures.map(&:measure_id).join(' & ')
end
def zone
zones = Zones.new(watch_low_benchmark:,
growth_low_benchmark:,
approval_low_benchmark:,
ideal_low_benchmark:)
zones.zone_for_score(score).type.to_s.capitalize
end
private
PILLARS =
{ "Teaching Environment": 'Operational Efficiency',
"Safety": 'Safe and Welcoming Environment',
"Relationships": 'Safe and Welcoming Environment',
"Academic Orientation": 'Safe and Welcoming Environment',
"Facilities & Personnel": 'Operational Efficiency',
"Family-School Relationships": 'Family and Community Engagement',
"Community Involvement & External Partners": 'Family and Community Engagement',
"Perception of Performance": 'Academics and Student Achievement',
"Student Commitment To Learning": 'Academics and Student Achievement',
"Critical Thinking": 'Academics and Student Achievement',
"College & Career Readiness": 'Academics and Student Achievement' }
def watch_low_benchmark
measures.map do |measure|
measure.watch_low_benchmark
end.average
end
def growth_low_benchmark
measures.map do |measure|
measure.growth_low_benchmark
end.average
end
def approval_low_benchmark
measures.map do |measure|
measure.approval_low_benchmark
end.average
end
def ideal_low_benchmark
measures.map do |measure|
measure.ideal_low_benchmark
end.average
end
end
end