mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-09 07:28:41 -07:00
Modifies the overview page so when there is an empty dataset, there is clearer explanatory text and an empty version of the variance chart. Finishes #180118088
This commit is contained in:
parent
f553c3c11c
commit
eb4c699f60
4 changed files with 58 additions and 16 deletions
|
|
@ -16,6 +16,7 @@ module VarianceHelper
|
|||
end
|
||||
|
||||
def graph_background_height(number_of_rows:)
|
||||
number_of_rows += 1 if @has_empty_dataset
|
||||
graph_height(number_of_rows) - footer_gutter
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<% displayed_presenters = presenters.filter { |p| p.sufficient_data? }.sort %>
|
||||
<% not_displayed_presenters = presenters - displayed_presenters %>
|
||||
|
||||
<% if not_displayed_presenters.present? %>
|
||||
<% if displayed_presenters.none? %>
|
||||
<p class="caption mb-5">Note: No measures can be displayed due to limited availability of school admin data and/or low survey response rates.</p>
|
||||
<% elsif not_displayed_presenters.present? %>
|
||||
<p class="caption mb-5">Note: The following measures are not displayed due to limited availability of school admin data and/or low survey response rates: <%= not_displayed_presenters.map(&:measure_name).join('; ') %>.</p>
|
||||
<% end %>
|
||||
|
||||
|
|
@ -87,6 +89,18 @@
|
|||
<%= presenter.measure_name %>
|
||||
</text>
|
||||
<% end %>
|
||||
|
||||
<% if displayed_presenters.none? %>
|
||||
<text
|
||||
class="font-cabin"
|
||||
x="0"
|
||||
y="<%= 0 * measure_row_height + measure_row_height / 2 %>"
|
||||
dominant-baseline="middle"
|
||||
data-variance-row-label
|
||||
>
|
||||
Insufficient data
|
||||
</text>
|
||||
<% end %>
|
||||
</svg>
|
||||
|
||||
<svg
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@
|
|||
<div class="card">
|
||||
<h2 class="sub-header-2 mb-4">Distance From Benchmark</h2>
|
||||
|
||||
<%= render partial: "variance_chart", locals: { presenters: @variance_chart_row_presenters} %>
|
||||
<%= render partial: "variance_chart", locals: { presenters: @variance_chart_row_presenters } %>
|
||||
</div>
|
||||
|
||||
<%= render partial: 'layouts/empty_dataset_modal' if @has_empty_dataset %>
|
||||
|
|
|
|||
|
|
@ -1,26 +1,53 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'overview/_variance_chart.html.erb' do
|
||||
subject { Nokogiri::HTML(rendered) }
|
||||
context 'When there are scores to show' do
|
||||
subject { Nokogiri::HTML(rendered) }
|
||||
|
||||
let(:higher_scoring_measure) { create(:measure) }
|
||||
let(:lower_scoring_measure) { create(:measure) }
|
||||
let(:higher_scoring_measure) { create(:measure) }
|
||||
let(:lower_scoring_measure) { create(:measure) }
|
||||
|
||||
before :each do
|
||||
presenters = [
|
||||
VarianceChartRowPresenter.new(measure: lower_scoring_measure, score: Score.new(1)),
|
||||
VarianceChartRowPresenter.new(measure: higher_scoring_measure, score: Score.new(5))
|
||||
]
|
||||
before :each do
|
||||
presenters = [
|
||||
VarianceChartRowPresenter.new(measure: lower_scoring_measure, score: Score.new(1)),
|
||||
VarianceChartRowPresenter.new(measure: higher_scoring_measure, score: Score.new(5))
|
||||
]
|
||||
|
||||
render partial: 'variance_chart', locals: { presenters: presenters }
|
||||
render partial: 'variance_chart', locals: { presenters: presenters}
|
||||
end
|
||||
|
||||
it 'displays higher scoring measures above lower scoring measures' do
|
||||
measure_row_bars = subject.css('rect.measure-row-bar')
|
||||
|
||||
higher_scoring_measure_index = measure_row_bars.find_index do |bar|
|
||||
bar['data-for-measure-id'] == higher_scoring_measure.measure_id
|
||||
end
|
||||
lower_scoring_measure_index = measure_row_bars.find_index do |bar|
|
||||
bar['data-for-measure-id'] == lower_scoring_measure.measure_id
|
||||
end
|
||||
|
||||
expect(higher_scoring_measure_index).to be < lower_scoring_measure_index
|
||||
end
|
||||
end
|
||||
|
||||
it 'displays higher scoring measures above lower scoring measures' do
|
||||
measure_row_bars = subject.css("rect.measure-row-bar")
|
||||
context 'When there are no scores to show for any measures' do
|
||||
before :each do
|
||||
measure_lacking_score = create(:measure)
|
||||
another_measure_lacking_score = create(:measure)
|
||||
presenters = [
|
||||
VarianceChartRowPresenter.new(measure: measure_lacking_score, score: Score.new(nil)),
|
||||
VarianceChartRowPresenter.new(measure: another_measure_lacking_score, score: Score.new(nil))
|
||||
]
|
||||
|
||||
higher_scoring_measure_index = measure_row_bars.find_index { |bar| bar['data-for-measure-id'] == higher_scoring_measure.measure_id }
|
||||
lower_scoring_measure_index = measure_row_bars.find_index { |bar| bar['data-for-measure-id'] == lower_scoring_measure.measure_id }
|
||||
render partial: 'variance_chart', locals: { presenters: presenters}
|
||||
end
|
||||
|
||||
expect(higher_scoring_measure_index).to be < lower_scoring_measure_index
|
||||
it "displays the text 'insufficient data' for an empty dataset" do
|
||||
expect(rendered).to have_text 'Insufficient data'
|
||||
end
|
||||
|
||||
it "does not display the partial data text: 'The following measures are not displayed due to limited availability of school admin data and/or low survey response rates:' " do
|
||||
expect(rendered).not_to have_text 'The following measures are not displayed due to limited availability of school admin data and/or low survey response rates:'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue