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

pull/1/head
Nelson Jovel 4 years ago
parent f553c3c11c
commit eb4c699f60

@ -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))
]
render partial: 'variance_chart', locals: { presenters: presenters}
end
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 }
it "displays the text 'insufficient data' for an empty dataset" do
expect(rendered).to have_text 'Insufficient data'
end
expect(higher_scoring_measure_index).to be < lower_scoring_measure_index
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…
Cancel
Save