diff --git a/app/presenters/analyze/graph/all_data.rb b/app/presenters/analyze/graph/all_data.rb index 04266a1a..3d6e738d 100644 --- a/app/presenters/analyze/graph/all_data.rb +++ b/app/presenters/analyze/graph/all_data.rb @@ -5,11 +5,11 @@ module Analyze class AllData include Analyze::Graph::Column def to_s - 'All Data' + "All Data" end def slug - 'all-data' + "all-data" end def columns diff --git a/app/presenters/analyze/graph/column/all_admin.rb b/app/presenters/analyze/graph/column/all_admin.rb index 410cc4f6..f1a9951c 100644 --- a/app/presenters/analyze/graph/column/all_admin.rb +++ b/app/presenters/analyze/graph/column/all_admin.rb @@ -29,6 +29,10 @@ module Analyze def score(year_index) measure.admin_score(school:, academic_year: academic_years[year_index]) end + + def type + :admin + end end end end diff --git a/app/presenters/analyze/graph/column/all_student.rb b/app/presenters/analyze/graph/column/all_student.rb index 811563c3..ed133d34 100644 --- a/app/presenters/analyze/graph/column/all_student.rb +++ b/app/presenters/analyze/graph/column/all_student.rb @@ -5,7 +5,7 @@ module Analyze module Column class AllStudent < GroupedBarColumnPresenter def label - 'All Students' + "All Students" end def show_irrelevancy_message? @@ -23,6 +23,10 @@ module Analyze def score(year_index) measure.student_score(school:, academic_year: academic_years[year_index]) end + + def type + :student + end end end end diff --git a/app/presenters/analyze/graph/column/all_survey_data.rb b/app/presenters/analyze/graph/column/all_survey_data.rb index b0cf9036..1e4d5e2c 100644 --- a/app/presenters/analyze/graph/column/all_survey_data.rb +++ b/app/presenters/analyze/graph/column/all_survey_data.rb @@ -5,7 +5,7 @@ module Analyze module Column class AllSurveyData < GroupedBarColumnPresenter def label - 'Survey Data' + "Survey Data" end def show_irrelevancy_message? @@ -24,6 +24,10 @@ module Analyze combined_score(school:, academic_year: academic_years[year_index]) end + def type + :all_survey_data + end + private def combined_score(school:, academic_year:) diff --git a/app/presenters/analyze/graph/column/all_teacher.rb b/app/presenters/analyze/graph/column/all_teacher.rb index 533ff29c..14dfbf82 100644 --- a/app/presenters/analyze/graph/column/all_teacher.rb +++ b/app/presenters/analyze/graph/column/all_teacher.rb @@ -5,11 +5,11 @@ module Analyze module Column class AllTeacher < GroupedBarColumnPresenter def label - 'All Teachers' + "All Teachers" end def basis - 'teacher surveys' + "teacher surveys" end def show_irrelevancy_message? @@ -27,6 +27,15 @@ module Analyze def score(year_index) measure.teacher_score(school:, academic_year: academic_years[year_index]) end + + def type + :teacher + end + + def n_size(year_index) + SurveyItemResponse.where(survey_item: measure.teacher_survey_items, school:, + academic_year: academic_years[year_index]).count + end end end end diff --git a/app/presenters/analyze/graph/column/gender_column/female.rb b/app/presenters/analyze/graph/column/gender_column/female.rb index a4ea0af6..e55691bf 100644 --- a/app/presenters/analyze/graph/column/gender_column/female.rb +++ b/app/presenters/analyze/graph/column/gender_column/female.rb @@ -6,12 +6,13 @@ module Analyze module GenderColumn class Female < GroupedBarColumnPresenter include Analyze::Graph::Column::GenderColumn::ScoreForGender + include Analyze::Graph::Column::GenderColumn::GenderCount def label - 'Female' + "Female" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/gender_column/gender_count.rb b/app/presenters/analyze/graph/column/gender_column/gender_count.rb new file mode 100644 index 00000000..97460248 --- /dev/null +++ b/app/presenters/analyze/graph/column/gender_column/gender_count.rb @@ -0,0 +1,18 @@ +module Analyze + module Graph + module Column + module GenderColumn + module GenderCount + def type + :student + end + + def n_size(year_index) + SurveyItemResponse.where(gender:, survey_item: measure.student_survey_items, school:, grade: grades(year_index), + academic_year: academic_years[year_index]).select(:response_id).distinct.count + end + end + end + end + end +end diff --git a/app/presenters/analyze/graph/column/gender_column/male.rb b/app/presenters/analyze/graph/column/gender_column/male.rb index f8403e6c..7158d2d8 100644 --- a/app/presenters/analyze/graph/column/gender_column/male.rb +++ b/app/presenters/analyze/graph/column/gender_column/male.rb @@ -6,12 +6,13 @@ module Analyze module GenderColumn class Male < GroupedBarColumnPresenter include Analyze::Graph::Column::GenderColumn::ScoreForGender + include Analyze::Graph::Column::GenderColumn::GenderCount def label - 'Male' + "Male" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/gender_column/non_binary.rb b/app/presenters/analyze/graph/column/gender_column/non_binary.rb index 61778768..c9e4cda0 100644 --- a/app/presenters/analyze/graph/column/gender_column/non_binary.rb +++ b/app/presenters/analyze/graph/column/gender_column/non_binary.rb @@ -6,12 +6,13 @@ module Analyze module GenderColumn class NonBinary < GroupedBarColumnPresenter include Analyze::Graph::Column::GenderColumn::ScoreForGender + include Analyze::Graph::Column::GenderColumn::GenderCount def label - 'Non-Binary' + "Non-Binary" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/gender_column/unknown.rb b/app/presenters/analyze/graph/column/gender_column/unknown.rb index 325b58a9..f8e119cd 100644 --- a/app/presenters/analyze/graph/column/gender_column/unknown.rb +++ b/app/presenters/analyze/graph/column/gender_column/unknown.rb @@ -6,12 +6,13 @@ module Analyze module GenderColumn class Unknown < GroupedBarColumnPresenter include Analyze::Graph::Column::GenderColumn::ScoreForGender + include Analyze::Graph::Column::GenderColumn::GenderCount def label - 'Unknown' + "Unknown" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/eight.rb b/app/presenters/analyze/graph/column/grade/eight.rb index 530fada1..ca31d21d 100644 --- a/app/presenters/analyze/graph/column/grade/eight.rb +++ b/app/presenters/analyze/graph/column/grade/eight.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Eight < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 8' + "Grade 8" end def basis - 'student' + "student" end def show_irrelevancy_message? @@ -30,4 +31,3 @@ module Analyze end end end - diff --git a/app/presenters/analyze/graph/column/grade/eleven.rb b/app/presenters/analyze/graph/column/grade/eleven.rb index 45dd257b..5a6a2e41 100644 --- a/app/presenters/analyze/graph/column/grade/eleven.rb +++ b/app/presenters/analyze/graph/column/grade/eleven.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Eleven < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 11' + "Grade 11" end def basis - 'student' + "student" end def show_irrelevancy_message? @@ -30,4 +31,3 @@ module Analyze end end end - diff --git a/app/presenters/analyze/graph/column/grade/five.rb b/app/presenters/analyze/graph/column/grade/five.rb index b6f2f5e3..5eb75d15 100644 --- a/app/presenters/analyze/graph/column/grade/five.rb +++ b/app/presenters/analyze/graph/column/grade/five.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Five < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 5' + "Grade 5" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/four.rb b/app/presenters/analyze/graph/column/grade/four.rb index ce1be6b3..6477ec4e 100644 --- a/app/presenters/analyze/graph/column/grade/four.rb +++ b/app/presenters/analyze/graph/column/grade/four.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Four < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 4' + "Grade 4" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/grade_count.rb b/app/presenters/analyze/graph/column/grade/grade_count.rb new file mode 100644 index 00000000..42ed3a23 --- /dev/null +++ b/app/presenters/analyze/graph/column/grade/grade_count.rb @@ -0,0 +1,18 @@ +module Analyze + module Graph + module Column + module Grade + module GradeCount + def type + :student + end + + def n_size(year_index) + SurveyItemResponse.where(grade:, survey_item: measure.student_survey_items, school:, + academic_year: academic_years[year_index]).select(:response_id).distinct.count + end + end + end + end + end +end diff --git a/app/presenters/analyze/graph/column/grade/nine.rb b/app/presenters/analyze/graph/column/grade/nine.rb index 9a3f91d8..ebdff840 100644 --- a/app/presenters/analyze/graph/column/grade/nine.rb +++ b/app/presenters/analyze/graph/column/grade/nine.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Nine < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 9' + "Grade 9" end def basis - 'student' + "student" end def show_irrelevancy_message? @@ -30,5 +31,3 @@ module Analyze end end end - - diff --git a/app/presenters/analyze/graph/column/grade/one.rb b/app/presenters/analyze/graph/column/grade/one.rb index 3e6d1367..a2163a1d 100644 --- a/app/presenters/analyze/graph/column/grade/one.rb +++ b/app/presenters/analyze/graph/column/grade/one.rb @@ -6,12 +6,13 @@ module Analyze module Grade class One < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 1' + "Grade 1" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/seven.rb b/app/presenters/analyze/graph/column/grade/seven.rb index ae82b562..729c6301 100644 --- a/app/presenters/analyze/graph/column/grade/seven.rb +++ b/app/presenters/analyze/graph/column/grade/seven.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Seven < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 7' + "Grade 7" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/six.rb b/app/presenters/analyze/graph/column/grade/six.rb index d6aadba9..b30d8fd0 100644 --- a/app/presenters/analyze/graph/column/grade/six.rb +++ b/app/presenters/analyze/graph/column/grade/six.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Six < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 6' + "Grade 6" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/ten.rb b/app/presenters/analyze/graph/column/grade/ten.rb index 9224881b..86e94930 100644 --- a/app/presenters/analyze/graph/column/grade/ten.rb +++ b/app/presenters/analyze/graph/column/grade/ten.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Ten < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 10' + "Grade 10" end def basis - 'student' + "student" end def show_irrelevancy_message? @@ -30,5 +31,3 @@ module Analyze end end end - - diff --git a/app/presenters/analyze/graph/column/grade/three.rb b/app/presenters/analyze/graph/column/grade/three.rb index 570664da..c5ce994f 100644 --- a/app/presenters/analyze/graph/column/grade/three.rb +++ b/app/presenters/analyze/graph/column/grade/three.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Three < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 3' + "Grade 3" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/twelve.rb b/app/presenters/analyze/graph/column/grade/twelve.rb index 52ec06e9..6d1defc3 100644 --- a/app/presenters/analyze/graph/column/grade/twelve.rb +++ b/app/presenters/analyze/graph/column/grade/twelve.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Twelve < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 12' + "Grade 12" end def basis - 'student' + "student" end def show_irrelevancy_message? @@ -30,5 +31,3 @@ module Analyze end end end - - diff --git a/app/presenters/analyze/graph/column/grade/two.rb b/app/presenters/analyze/graph/column/grade/two.rb index c2541d6b..9bb80df3 100644 --- a/app/presenters/analyze/graph/column/grade/two.rb +++ b/app/presenters/analyze/graph/column/grade/two.rb @@ -8,12 +8,13 @@ module Analyze attr_reader :sufficient_responses include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Grade 2' + "Grade 2" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grade/zero.rb b/app/presenters/analyze/graph/column/grade/zero.rb index b4fd9e02..64e213ae 100644 --- a/app/presenters/analyze/graph/column/grade/zero.rb +++ b/app/presenters/analyze/graph/column/grade/zero.rb @@ -6,12 +6,13 @@ module Analyze module Grade class Zero < GroupedBarColumnPresenter include Analyze::Graph::Column::Grade::ScoreForGrade + include Analyze::Graph::Column::Grade::GradeCount def label - 'Kindergarten' + "Kindergarten" end def basis - 'student' + "student" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/grouped_bar_column_presenter.rb b/app/presenters/analyze/graph/column/grouped_bar_column_presenter.rb index ceb425ba..e796af97 100644 --- a/app/presenters/analyze/graph/column/grouped_bar_column_presenter.rb +++ b/app/presenters/analyze/graph/column/grouped_bar_column_presenter.rb @@ -35,11 +35,11 @@ module Analyze end def label - 'All Data' + "All Data" end def basis - '' + "" end def show_irrelevancy_message? @@ -106,11 +106,43 @@ module Analyze end def basis - 'student surveys' + "student surveys" + end + + def type + :all_data + end + + def show_popover? + %i[student teacher].include? type + end + + def n_size(year_index) + SurveyItemResponse.where(survey_item: measure.student_survey_items, school:, grade: grades(year_index), + academic_year: academic_years[year_index]).select(:response_id).distinct.count + end + + def popover_content(year_index) + "#{n_size(year_index)} #{type.to_s.capitalize}s" end def insufficiency_message - ['survey response', 'rate below 25%'] + ["survey response", "rate below 25%"] + end + + def sufficient_data?(year_index) + case basis + when "student" + score(year_index).meets_student_threshold + when "teacher" + score(year_index).meets_teacher_threshold + else + true + end + end + + def grades(year_index) + Respondent.find_by(school:, academic_year: academic_years[year_index]).counts_by_grade.keys end private diff --git a/app/presenters/analyze/graph/column/income_column/disadvantaged.rb b/app/presenters/analyze/graph/column/income_column/disadvantaged.rb index ecf5469a..c6569611 100644 --- a/app/presenters/analyze/graph/column/income_column/disadvantaged.rb +++ b/app/presenters/analyze/graph/column/income_column/disadvantaged.rb @@ -6,6 +6,7 @@ module Analyze module IncomeColumn class Disadvantaged < GroupedBarColumnPresenter include Analyze::Graph::Column::IncomeColumn::ScoreForIncome + include Analyze::Graph::Column::IncomeColumn::IncomeCount def label "Economically Disadvantaged" end diff --git a/app/presenters/analyze/graph/column/income_column/income_count.rb b/app/presenters/analyze/graph/column/income_column/income_count.rb new file mode 100644 index 00000000..642f7308 --- /dev/null +++ b/app/presenters/analyze/graph/column/income_column/income_count.rb @@ -0,0 +1,18 @@ +module Analyze + module Graph + module Column + module IncomeColumn + module IncomeCount + def type + :student + end + + def n_size(year_index) + SurveyItemResponse.where(income:, survey_item: measure.student_survey_items, school:, grade: grades(year_index), + academic_year: academic_years[year_index]).select(:response_id).distinct.count + end + end + end + end + end +end diff --git a/app/presenters/analyze/graph/column/income_column/not_disadvantaged.rb b/app/presenters/analyze/graph/column/income_column/not_disadvantaged.rb index 8b75d723..e48c653f 100644 --- a/app/presenters/analyze/graph/column/income_column/not_disadvantaged.rb +++ b/app/presenters/analyze/graph/column/income_column/not_disadvantaged.rb @@ -6,6 +6,7 @@ module Analyze module IncomeColumn class NotDisadvantaged < GroupedBarColumnPresenter include Analyze::Graph::Column::IncomeColumn::ScoreForIncome + include Analyze::Graph::Column::IncomeColumn::IncomeCount def label "Not Disadvantaged" end diff --git a/app/presenters/analyze/graph/column/income_column/unknown.rb b/app/presenters/analyze/graph/column/income_column/unknown.rb index 3583856c..eee7c8be 100644 --- a/app/presenters/analyze/graph/column/income_column/unknown.rb +++ b/app/presenters/analyze/graph/column/income_column/unknown.rb @@ -6,6 +6,7 @@ module Analyze module IncomeColumn class Unknown < GroupedBarColumnPresenter include Analyze::Graph::Column::IncomeColumn::ScoreForIncome + include Analyze::Graph::Column::IncomeColumn::IncomeCount def label "Unknown" end diff --git a/app/presenters/analyze/graph/column/race_column/american_indian.rb b/app/presenters/analyze/graph/column/race_column/american_indian.rb index 7c0a70c2..25e46da6 100644 --- a/app/presenters/analyze/graph/column/race_column/american_indian.rb +++ b/app/presenters/analyze/graph/column/race_column/american_indian.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class AmericanIndian < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'American Indian' + "American Indian" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/asian.rb b/app/presenters/analyze/graph/column/race_column/asian.rb index dc289d27..c60b012e 100644 --- a/app/presenters/analyze/graph/column/race_column/asian.rb +++ b/app/presenters/analyze/graph/column/race_column/asian.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class Asian < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'Asian' + "Asian" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/black.rb b/app/presenters/analyze/graph/column/race_column/black.rb index 4b707586..6433068e 100644 --- a/app/presenters/analyze/graph/column/race_column/black.rb +++ b/app/presenters/analyze/graph/column/race_column/black.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class Black < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'Black' + "Black" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/hispanic.rb b/app/presenters/analyze/graph/column/race_column/hispanic.rb index a4fb233f..1a902d90 100644 --- a/app/presenters/analyze/graph/column/race_column/hispanic.rb +++ b/app/presenters/analyze/graph/column/race_column/hispanic.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class Hispanic < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'Hispanic' + "Hispanic" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/middle_eastern.rb b/app/presenters/analyze/graph/column/race_column/middle_eastern.rb index 54cfc08b..80e5089e 100644 --- a/app/presenters/analyze/graph/column/race_column/middle_eastern.rb +++ b/app/presenters/analyze/graph/column/race_column/middle_eastern.rb @@ -6,9 +6,10 @@ module Analyze module RaceColumn class MiddleEastern < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'Middle Eastern' + "Middle Eastern" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/multiracial.rb b/app/presenters/analyze/graph/column/race_column/multiracial.rb index f33f7641..85b359fb 100644 --- a/app/presenters/analyze/graph/column/race_column/multiracial.rb +++ b/app/presenters/analyze/graph/column/race_column/multiracial.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class Multiracial < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'Multiracial' + "Multiracial" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/race_count.rb b/app/presenters/analyze/graph/column/race_column/race_count.rb new file mode 100644 index 00000000..b46d3de1 --- /dev/null +++ b/app/presenters/analyze/graph/column/race_column/race_count.rb @@ -0,0 +1,20 @@ +module Analyze + module Graph + module Column + module RaceColumn + module RaceCount + def type + :student + end + + def n_size(year_index) + SurveyItemResponse.joins("JOIN student_races on survey_item_responses.student_id = student_races.student_id JOIN students on students.id = student_races.student_id").where( + school:, academic_year: academic_years[year_index], + survey_item: measure.student_survey_items + ).where("student_races.race_id": race.id).select(:response_id).distinct.count + end + end + end + end + end +end diff --git a/app/presenters/analyze/graph/column/race_column/unknown.rb b/app/presenters/analyze/graph/column/race_column/unknown.rb index 26df95c2..25e130c0 100644 --- a/app/presenters/analyze/graph/column/race_column/unknown.rb +++ b/app/presenters/analyze/graph/column/race_column/unknown.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class Unknown < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'Not Listed' + "Not Listed" end def show_irrelevancy_message? diff --git a/app/presenters/analyze/graph/column/race_column/white.rb b/app/presenters/analyze/graph/column/race_column/white.rb index 143d5287..3dbf3695 100644 --- a/app/presenters/analyze/graph/column/race_column/white.rb +++ b/app/presenters/analyze/graph/column/race_column/white.rb @@ -6,8 +6,9 @@ module Analyze module RaceColumn class White < GroupedBarColumnPresenter include Analyze::Graph::Column::ScoreForRace + include Analyze::Graph::Column::RaceColumn::RaceCount def label - 'White' + "White" end def show_irrelevancy_message? diff --git a/app/services/race_score_loader.rb b/app/services/race_score_loader.rb index a6a102ad..99977608 100644 --- a/app/services/race_score_loader.rb +++ b/app/services/race_score_loader.rb @@ -60,9 +60,9 @@ class RaceScoreLoader def self.grouped_responses(school:, academic_year:, survey_items:, race:) @grouped_responses ||= Hash.new do |memo, (school, academic_year, survey_items, race)| memo[[school, academic_year, survey_items, race]] = - SurveyItemResponse.joins('JOIN student_races on survey_item_responses.student_id = student_races.student_id JOIN students on students.id = student_races.student_id').where( + SurveyItemResponse.joins("JOIN student_races on survey_item_responses.student_id = student_races.student_id JOIN students on students.id = student_races.student_id").where( school:, academic_year: - ).where("student_races.race_id": race.id).group(:survey_item_id).average(:likert_score) + ).where("student_races.race_id": race.id).group(:survey_item_id).having("count(*) >= 10").average(:likert_score) end @grouped_responses[[school, academic_year, survey_items, race]] @@ -88,7 +88,7 @@ class RaceScoreLoader def self.sufficient_responses(school:, academic_year:, race:) @sufficient_responses ||= Hash.new do |memo, (school, academic_year, race)| - number_of_students_for_a_racial_group = SurveyItemResponse.joins('JOIN student_races on survey_item_responses.student_id = student_races.student_id JOIN students on students.id = student_races.student_id').where( + number_of_students_for_a_racial_group = SurveyItemResponse.joins("JOIN student_races on survey_item_responses.student_id = student_races.student_id JOIN students on students.id = student_races.student_id").where( school:, academic_year: ).where("student_races.race_id": race.id).distinct.pluck(:student_id).count memo[[school, academic_year, race]] = number_of_students_for_a_racial_group >= 10 diff --git a/app/views/analyze/_grouped_bar_column.html.erb b/app/views/analyze/_grouped_bar_column.html.erb index cbf722fe..4e15b9ce 100644 --- a/app/views/analyze/_grouped_bar_column.html.erb +++ b/app/views/analyze/_grouped_bar_column.html.erb @@ -1,12 +1,35 @@ <% score_label_y = [5, 10, 15, 5, 10, 15 ] %> <% column.bars.each_with_index do |bar, index| %> +<<<<<<< HEAD <% if ENV["SCORES"].present? && ENV["SCORES"].upcase == "SHOW" %> <%= bar.average %> +======= + <% if column.sufficient_data?(index) %> + + data-bs-toggle="popover" + data-bs-placement="right" + data-bs-content="<%= column.popover_content(index) %>" + <% end %> + data-for-academic-year="<%= bar.academic_year.range %>" + x="<%= bar.x_position %>%" + y="<%= bar.y_offset %>%" + width="<%= column.bar_width %>%" + height="<%= bar.bar_height_percentage %>%" + fill="<%= bar.color %>" /> + + <% if ENV["SCORES"].present? && ENV["SCORES"].upcase == "SHOW" %> + + <%= bar.average %> + + <% end %> + +>>>>>>> 67e469a6 (feat: add popover to analyze graphs that displays the n-size of the different columns. Make sure to only calculate a score for a race if there are more than 10 respondents to a question.) <% end %> <% end %> diff --git a/cypress/e2e/analyze.cy.js b/cypress/e2e/analyze.cy.js new file mode 100644 index 00000000..6c2800bd --- /dev/null +++ b/cypress/e2e/analyze.cy.js @@ -0,0 +1,15 @@ +describe('navigates the analyze page', () => { + it('it displays counts of students and teacher in the hovers', () => { + + login("/districts/lee-public-schools/schools/lee-elementary-school/analyze?year=2022-23&academic_years=2022-23", "bGVlOmxlZSE=") + }) +}) + +function login(path, credentials) { + cy.visit(path, { + headers: { + authorization: `Basic ${credentials}` + }, + failOnStatusCode: false + }) +}