diff --git a/app/controllers/analyze_controller.rb b/app/controllers/analyze_controller.rb index 7705a26c..8bc4be52 100644 --- a/app/controllers/analyze_controller.rb +++ b/app/controllers/analyze_controller.rb @@ -13,12 +13,9 @@ class AnalyzeController < SqmApplicationController @available_academic_years = AcademicYear.order(:range).all @academic_year_params = params[:academic_years].split(',') if params[:academic_years] @selected_academic_years = [] - if @academic_year_params.present? - @academic_year_params.each do |year| - @selected_academic_years << AcademicYear.find_by_range(year) - end - else - @selected_academic_years = [@academic_year] + @academic_year_params ||= [] + @academic_year_params.each do |year| + @selected_academic_years << AcademicYear.find_by_range(year) end end end diff --git a/app/helpers/analyze_helper.rb b/app/helpers/analyze_helper.rb index 5ec40629..03cd001f 100644 --- a/app/helpers/analyze_helper.rb +++ b/app/helpers/analyze_helper.rb @@ -60,7 +60,7 @@ module AnalyzeHelper end def analyze_category_link(district:, school:, academic_year:, category:) - "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}&category=#{category.category_id}" + "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}&academic_years=#{academic_year.range}&category=#{category.category_id}" end def analyze_subcategory_link(district:, school:, academic_year:, category:, subcategory:) @@ -70,4 +70,14 @@ module AnalyzeHelper def colors @colors ||= ['#49416D', '#FFC857', '#920020', '#00B0B3', '#B2D236', '#595959'] end + + def empty_dataset?(measures:, school:, academic_year:) + @empty_dataset ||= Hash.new do |memo, (school, academic_year)| + memo[[school, academic_year]] = measures.all? do |measure| + measure.survey_item_responses.where(school:, academic_year:).none? || measure.none_meet_threshold?(school:, academic_year:) + end + end + + @empty_dataset[[school, academic_year]] + end end diff --git a/app/helpers/header_helper.rb b/app/helpers/header_helper.rb index cbcf787d..9124d634 100644 --- a/app/helpers/header_helper.rb +++ b/app/helpers/header_helper.rb @@ -8,7 +8,7 @@ module HeaderHelper end def link_to_analyze(district:, school:, academic_year:) - "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}&category=1" + "/districts/#{district.slug}/schools/#{school.slug}/analyze?year=#{academic_year.range}&category=1&academic_years=#{academic_year.range}" end def district_url_for(district:, academic_year:) @@ -60,7 +60,7 @@ module HeaderHelper end def analyze_link(district_slug:, school_slug:, academic_year_range:) - "/districts/#{district_slug}/schools/#{school_slug}/analyze?year=#{academic_year_range}" + "/districts/#{district_slug}/schools/#{school_slug}/analyze?year=#{academic_year_range}&academic_years=#{academic_year_range}" end def browse_link(district_slug:, school_slug:, academic_year_range:) diff --git a/app/views/analyze/index.html.erb b/app/views/analyze/index.html.erb index 4a408894..bc8b59be 100644 --- a/app/views/analyze/index.html.erb +++ b/app/views/analyze/index.html.erb @@ -20,16 +20,31 @@

School Years

<% @available_academic_years.each_with_index do | year, index | %>
- data-action="click->analyze#refresh"> + + data-action="click->analyze#refresh" + <%= empty_dataset?(measures: @measures, school: @school, academic_year: year) ? "disabled" : "" %> + >
-
+
+ <% if empty_dataset?(measures: @measures, school: @school, academic_year: year) %> + + + <% end %>
<% end %> diff --git a/spec/views/analyze/index.html.erb_spec.rb b/spec/views/analyze/index.html.erb_spec.rb index 8b37c00c..c574d926 100644 --- a/spec/views/analyze/index.html.erb_spec.rb +++ b/spec/views/analyze/index.html.erb_spec.rb @@ -84,8 +84,8 @@ describe 'analyze/index' do displayed_variance_rows = subject.css('[data-for-measure-id]') expect(displayed_variance_rows.first.attribute('data-for-measure-id').value).to eq '1A-I' - # displayed_variance_rows = subject.css('data-for-academic-year') - # expect(displayed_variance_rows.count).to eq 9 + # displayed_academic_years = subject.css('[data-for-academic-year]') + # expect(displayed_academic_years.count).to eq 9 displayed_variance_labels = subject.css('[data-grouped-bar-label]') expect(displayed_variance_labels.count).to eq 9 @@ -105,6 +105,11 @@ describe 'analyze/index' do expect(subject).to have_css '#select-subcategory' expect(subject).to have_css "##{academic_year.range}" end + + it 'displays disabled checkboxes for years that dont have data' do + year_checkbox = subject.css("##{academic_year.range}").first + expect(year_checkbox).to have_attribute 'disabled' + end end context 'when presenters have a score' do