mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
Disable checkboxes for years that don't have data to show. Add exclamation icon with explanatory text. Finishes #182332983
This commit is contained in:
parent
50256cacce
commit
e8f3109df9
5 changed files with 41 additions and 14 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue