WIP: refactor so multiple graphs can be defined for a given slug WIP: fixed scale view but broke 'All Parent' graph WIP: working state. All views working properly WIP: Refactor graph_map into two collections; measure_level_graphs and scale_level_graphs WIP: refacter GroupedBarColumnPresenter to accept a 'construct' instead of specifying measure or scale WIP: fix scale graphs being shown on incorrect view WIP: Merge parents_by_language class with parents_by_language_by_scale so it can handle display of both measure-level and scale-level graphsmciea-main
parent
fb0944e726
commit
f0a3cad4e6
@ -1,60 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module Analyze
|
|
||||||
module Graph
|
|
||||||
module Column
|
|
||||||
class Language < ColumnBase
|
|
||||||
attr_reader :language, :label
|
|
||||||
|
|
||||||
def initialize(languages:, label:)
|
|
||||||
@language = languages
|
|
||||||
@label = label
|
|
||||||
end
|
|
||||||
|
|
||||||
def basis
|
|
||||||
"parent surveys"
|
|
||||||
end
|
|
||||||
|
|
||||||
def show_irrelevancy_message?(measure:)
|
|
||||||
false
|
|
||||||
end
|
|
||||||
|
|
||||||
def show_insufficient_data_message?(measure:, school:, academic_years:)
|
|
||||||
false
|
|
||||||
end
|
|
||||||
|
|
||||||
def type
|
|
||||||
:parent
|
|
||||||
end
|
|
||||||
|
|
||||||
def n_size(measure:, school:, academic_year:)
|
|
||||||
SurveyItemResponse.joins([parent: :languages]).where(languages: { designation: designations }, survey_item: measure.parent_survey_items, school:, academic_year:).select(:parent_id).distinct.count
|
|
||||||
end
|
|
||||||
|
|
||||||
def score(measure:, school:, academic_year:)
|
|
||||||
return Score::NIL_SCORE if n_size(measure:, school:, academic_year:) < 10
|
|
||||||
|
|
||||||
averages = SurveyItemResponse.averages_for_language(measure.parent_survey_items, school, academic_year,
|
|
||||||
designations)
|
|
||||||
average = bubble_up_averages(measure:, averages:).round(2)
|
|
||||||
Score.new(average:,
|
|
||||||
meets_teacher_threshold: false,
|
|
||||||
meets_student_threshold: true,
|
|
||||||
meets_admin_data_threshold: false)
|
|
||||||
end
|
|
||||||
|
|
||||||
def designations
|
|
||||||
language.map(&:designation)
|
|
||||||
end
|
|
||||||
|
|
||||||
def bubble_up_averages(measure:, averages:)
|
|
||||||
measure.parent_scales.map do |scale|
|
|
||||||
scale.survey_items.map do |survey_item|
|
|
||||||
averages[survey_item]
|
|
||||||
end.remove_blanks.average
|
|
||||||
end.remove_blanks.average
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Analyze
|
||||||
|
module Graph
|
||||||
|
module Column
|
||||||
|
module Parent
|
||||||
|
class Language < ColumnBase
|
||||||
|
attr_reader :language, :label
|
||||||
|
|
||||||
|
def initialize(languages:, label:)
|
||||||
|
@language = languages
|
||||||
|
@label = label
|
||||||
|
end
|
||||||
|
|
||||||
|
def basis
|
||||||
|
"parent surveys"
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_irrelevancy_message?(construct:)
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_insufficient_data_message?(construct:, school:, academic_years:)
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
|
def type
|
||||||
|
:parent
|
||||||
|
end
|
||||||
|
|
||||||
|
def n_size(construct:, school:, academic_year:)
|
||||||
|
SurveyItemResponse.joins([parent: :languages]).where(languages: { designation: designations }, survey_item: construct.parent_survey_items, school:, academic_year:).select(:parent_id).distinct.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def score(construct:, school:, academic_year:)
|
||||||
|
return Score::NIL_SCORE if n_size(construct:, school:, academic_year:) < 10
|
||||||
|
|
||||||
|
averages = SurveyItemResponse.averages_for_language(construct.parent_survey_items, school, academic_year,
|
||||||
|
designations)
|
||||||
|
average = bubble_up_averages(construct:, averages:).round(2)
|
||||||
|
Score.new(average:,
|
||||||
|
meets_teacher_threshold: false,
|
||||||
|
meets_student_threshold: true,
|
||||||
|
meets_admin_data_threshold: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
def designations
|
||||||
|
language.map(&:designation)
|
||||||
|
end
|
||||||
|
|
||||||
|
def bubble_up_averages(construct:, averages:)
|
||||||
|
name = construct.class.name.downcase
|
||||||
|
send("#{name}_bubble_up_averages", construct:, averages:)
|
||||||
|
end
|
||||||
|
|
||||||
|
def measure_bubble_up_averages(construct:, averages:)
|
||||||
|
construct.parent_scales.map do |scale|
|
||||||
|
scale_bubble_up_averages(construct: scale, averages:)
|
||||||
|
end.remove_blanks.average
|
||||||
|
end
|
||||||
|
|
||||||
|
def scale_bubble_up_averages(construct:, averages:)
|
||||||
|
construct.survey_items.map do |survey_item|
|
||||||
|
averages[survey_item]
|
||||||
|
end.remove_blanks.average
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 511 B |
Loading…
Reference in new issue