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 7cdb59be..57fe7799 100644
--- a/app/presenters/analyze/graph/column/all_admin.rb
+++ b/app/presenters/analyze/graph/column/all_admin.rb
@@ -5,11 +5,11 @@ module Analyze
module Column
class AllAdmin < GroupedBarColumnPresenter
def label
- 'All Admin'
+ "All Admin"
end
def basis
- 'admin data'
+ "admin data"
end
def show_irrelevancy_message?
@@ -23,12 +23,16 @@ module Analyze
end
def insufficiency_message
- ['data not', 'available']
+ ["data not", "available"]
end
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 fc2a28f1..7d5c4e1a 100644
--- a/app/presenters/analyze/graph/column/grouped_bar_column_presenter.rb
+++ b/app/presenters/analyze/graph/column/grouped_bar_column_presenter.rb
@@ -105,11 +105,27 @@ module Analyze
"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%"]
end
- # TODO: figure out why this doesn't work
def sufficient_data?(year_index)
case basis
when "student"
@@ -121,6 +137,10 @@ module Analyze
end
end
+ def grades(year_index)
+ Respondent.find_by(school:, academic_year: academic_years[year_index]).counts_by_grade.keys
+ end
+
private
YearlyScore = Struct.new(:year, :score)
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 9d80d105..54dadae5 100644
--- a/app/views/analyze/_grouped_bar_column.html.erb
+++ b/app/views/analyze/_grouped_bar_column.html.erb
@@ -2,13 +2,25 @@
<% score_label_y = [5, 10, 15, 5, 10, 15 ] %>
<% column.bars.each_with_index do |bar, index| %>
<% 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 %>
+
<% 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
+ })
+}