Disable checkboxes for years that don't have data to show. Add exclamation icon with explanatory text. Finishes #182332983

pull/1/head
rebuilt 4 years ago
parent 50256cacce
commit e8f3109df9

@ -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

@ -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

@ -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:)

@ -20,16 +20,31 @@
</select>
<select id="select-subcategory" class="mx-3 form-select mt-3" data-id="subcategory-dropdown" data-action="analyze#refresh">
<% @subcategories.each do |subcategory| %>
<option value="<%= analyze_subcategory_link(district: @district, school: @school, academic_year: @academic_year, category: @category, subcategory: subcategory) %>" <%= @subcategory.subcategory_id == subcategory.subcategory_id ? "selected": "" %> ><%= "#{subcategory.subcategory_id}: #{subcategory.name}" %></option>
<option value="<%= analyze_subcategory_link(district: @district, school: @school, academic_year: @academic_year, category: @category, subcategory: subcategory) %>" <%= @subcategory.subcategory_id == subcategory.subcategory_id ? "selected": "" %>>
<%= "#{subcategory.subcategory_id}: #{subcategory.name}" %>
</option>
<% end %>
</select>
<h3 class="sub-header-4 mt-5">School Years</h3>
<% @available_academic_years.each_with_index do | year, index | %>
<div class="d-flex justify-content-start align-items-center mt-1" data-controller="analyze">
<input type="checkbox" id="<%= year.range %>" name="year-checkbox" value="<%= analyze_subcategory_link(district: @district, school: @school, academic_year: @academic_year, category: @category, subcategory: @subcategory) %>" <%= @selected_academic_years.include?(year) ? "checked" : "" %> data-action="click->analyze#refresh">
<input type="checkbox"
id="<%= year.range %>"
name="year-checkbox"
value="<%= analyze_subcategory_link(district: @district, school: @school, academic_year: @academic_year, category: @category, subcategory: @subcategory) %>"
<%= @selected_academic_years.include?(year) ? "checked" : "" %>
data-action="click->analyze#refresh"
<%= empty_dataset?(measures: @measures, school: @school, academic_year: year) ? "disabled" : "" %>
>
<label class="px-3" for="<%= year.range %>" ><%= year.range %></label><br>
<div class="bg-color-blue" style="width:20px;height:20px;background-color:<%= colors[index] %>;"></div>
<div class="bg-color-blue px-3" style="width:20px;height:20px;background-color:<%= colors[index] %>;"></div>
<% if empty_dataset?(measures: @measures, school: @school, academic_year: year) %>
<i class="fa-solid fa-circle-exclamation px-3"
data-bs-toggle="popover" data-bs-placement="right"
data-bs-content="Teacher and student survey response rates below <%= ResponseRate::TEACHER_RATE_THRESHOLD %>%" >
</i>
<% end %>
</div>
<% end %>
</div>

@ -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

Loading…
Cancel
Save