mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-11 00:10:35 -07:00
Display in the variance graph only those measures that have sufficient data
This commit is contained in:
parent
07b7561b55
commit
161db3bf3e
4 changed files with 40 additions and 15 deletions
|
|
@ -46,4 +46,8 @@ module VarianceHelper
|
|||
def measures_with_insufficient_data(presenters:)
|
||||
presenters.filter { |presenter| presenter.score == nil }
|
||||
end
|
||||
|
||||
def measures_with_sufficient_data(presenters:)
|
||||
presenters.filter { |presenter| presenter.score != nil }
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
|
||||
<% unless measures_with_insufficient_data(presenters: presenters).empty? %>
|
||||
<p>Note: The following measures are not displayed due to limited availability of school admin data and/or low survey response rates: <%= measures_with_insufficient_data(presenters: presenters).map(&:measure_name).join('; ') %>.</p>
|
||||
<% end %>
|
||||
|
||||
<svg width="100%" height=<%= graph_height(presenters.size) %> xmlns="http://www.w3.org/2000/svg">
|
||||
<% displayed_presenters = measures_with_sufficient_data(presenters: presenters) %>
|
||||
<svg width="100%" height=<%= graph_height(displayed_presenters.size) %> xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<filter id="inset-shadow" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<feComponentTransfer in=SourceAlpha>
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
x="<%= label_width_percentage %>%"
|
||||
y="0"
|
||||
width="<%= graph_width_percentage %>%"
|
||||
height=<%= graph_background_height(number_of_rows: presenters.size) %>
|
||||
height=<%= graph_background_height(number_of_rows: displayed_presenters.size) %>
|
||||
filter="url(#inset-shadow)"
|
||||
>
|
||||
<g id="zone-headings">
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
|
||||
<g id="measure-rows">
|
||||
<svg id="measure-row-labels" x="0" y=<%= heading_gutter %>>
|
||||
<%= presenters.each_with_index do |presenter, index| %>
|
||||
<%= displayed_presenters.each_with_index do |presenter, index| %>
|
||||
<text
|
||||
class="font-cabin"
|
||||
x="<%= label_width_percentage %>%"
|
||||
|
|
@ -68,6 +68,7 @@
|
|||
y="<%= index * measure_row_height + measure_row_height / 2 %>"
|
||||
text-anchor="end"
|
||||
dominant-baseline="middle"
|
||||
data-variance-row-label
|
||||
>
|
||||
<%= presenter.measure_name %>
|
||||
</text>
|
||||
|
|
@ -80,13 +81,14 @@
|
|||
y="<%= heading_gutter %>"
|
||||
width="<%= graph_width_percentage %>%"
|
||||
>
|
||||
<%= presenters.each_with_index do |presenter, index| %>
|
||||
<%= displayed_presenters.each_with_index do |presenter, index| %>
|
||||
<rect
|
||||
class="measure-row-bar <%= presenter.bar_color %>"
|
||||
x="<%= presenter.x_offset %>"
|
||||
y="<%= index * measure_row_height + (measure_row_height - measure_row_bar_height) / 2 %>"
|
||||
width="<%= presenter.bar_width %>"
|
||||
height=<%= measure_row_bar_height %> data-for-measure-id="<%= presenter.measure_id %>"
|
||||
height=<%= measure_row_bar_height %>
|
||||
data-for-measure-id="<%= presenter.measure_id %>"
|
||||
stroke="none"
|
||||
/>
|
||||
<% end %>
|
||||
|
|
@ -98,7 +100,7 @@
|
|||
x="<%= label_width_percentage %>%"
|
||||
y="0"
|
||||
width="<%= graph_width_percentage %>%"
|
||||
height="<%= graph_background_height(number_of_rows: presenters.size) %>"
|
||||
height="<%= graph_background_height(number_of_rows: displayed_presenters.size) %>"
|
||||
>
|
||||
<g transform="translate(0, <%= heading_gutter %>)">
|
||||
<rect
|
||||
|
|
@ -122,7 +124,7 @@
|
|||
<text
|
||||
class="graph-footer"
|
||||
x="60%"
|
||||
y="<%= graph_background_height(number_of_rows: presenters.size) + (footer_gutter / 2) %>"
|
||||
y="<%= graph_background_height(number_of_rows: displayed_presenters.size) + (footer_gutter / 2) %>"
|
||||
text-anchor="middle"
|
||||
>
|
||||
Benchmark
|
||||
|
|
|
|||
|
|
@ -227,9 +227,7 @@ def district_admin_sees_dashboard_content
|
|||
district_admin_sees_student_physical_safety
|
||||
district_admin_sees_problem_solving_emphasis
|
||||
|
||||
expect(page).to have_css("[data-for-measure-id='3A-i'][width='0.0%']")
|
||||
|
||||
page.assert_selector('.measure-row-bar', count: Measure.count)
|
||||
page.assert_selector('.measure-row-bar', count: 5)
|
||||
|
||||
district_admin_sees_measures_in_correct_order
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'dashboard/index.html.erb' do
|
||||
subject { Nokogiri::HTML(rendered) }
|
||||
|
||||
let(:support_for_teaching) { create(:measure, name: 'Support For Teaching Development & Growth') }
|
||||
let(:effective_leadership) { create(:measure, name: 'Effective Leadership') }
|
||||
|
|
@ -13,11 +14,11 @@ describe 'dashboard/index.html.erb' do
|
|||
render
|
||||
end
|
||||
|
||||
context 'when there are measures for which, in the given academic year, the school has insufficient responses' do
|
||||
context 'when some presenters have a nil score' do
|
||||
let(:measure_graph_row_presenters) {
|
||||
[
|
||||
MeasureGraphRowPresenter.new(measure: support_for_teaching, score: nil),
|
||||
MeasureGraphRowPresenter.new(measure: create(:measure), score: rand),
|
||||
MeasureGraphRowPresenter.new(measure: create(:measure, name: 'Should Be Displayed', measure_id: 'should-be-displayed'), score: rand),
|
||||
MeasureGraphRowPresenter.new(measure: effective_leadership, score: nil),
|
||||
MeasureGraphRowPresenter.new(measure: professional_qualifications, score: nil)
|
||||
]
|
||||
|
|
@ -26,17 +27,37 @@ describe 'dashboard/index.html.erb' do
|
|||
it 'displays a note detailing which measures have insufficient responses for the given school & academic year' do
|
||||
expect(rendered).to match /Note: The following measures are not displayed due to limited availability of school admin data and\/or low survey response rates: Support For Teaching Development & Growth; Effective Leadership; Professional Qualifications./
|
||||
end
|
||||
|
||||
it 'displays a variance row and label only those presenters for which the score is not nil' do
|
||||
displayed_variance_rows = subject.css('[data-for-measure-id]')
|
||||
expect(displayed_variance_rows.count).to eq 1
|
||||
expect(displayed_variance_rows.first.attribute('data-for-measure-id').value).to eq 'should-be-displayed'
|
||||
|
||||
displayed_variance_labels = subject.css('[data-variance-row-label]')
|
||||
expect(displayed_variance_labels.count).to eq 1
|
||||
expect(displayed_variance_labels.first.inner_text).to include 'Should Be Displayed'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when there are no measures for which, in the given academic year, the school has insufficient responses' do
|
||||
context 'when all the presenters have a non-nil score' do
|
||||
let(:measure_graph_row_presenters) {
|
||||
[
|
||||
MeasureGraphRowPresenter.new(measure: create(:measure), score: rand)
|
||||
MeasureGraphRowPresenter.new(measure: create(:measure, name: 'Display Me', measure_id: 'display-me'), score: rand)
|
||||
]
|
||||
}
|
||||
|
||||
it 'does not display a note detailing which measures have insufficient responses for the given school & academic year' do
|
||||
expect(rendered).not_to match /Note: The following measures are not displayed due to limited availability of school admin data and\/or low survey response rates/
|
||||
end
|
||||
|
||||
it 'displays a variance row for each presenter' do
|
||||
displayed_variance_rows = subject.css('[data-for-measure-id]')
|
||||
expect(displayed_variance_rows.count).to eq 1
|
||||
expect(displayed_variance_rows.first.attribute('data-for-measure-id').value).to eq 'display-me'
|
||||
|
||||
displayed_variance_labels = subject.css('[data-variance-row-label]')
|
||||
expect(displayed_variance_labels.count).to eq 1
|
||||
expect(displayed_variance_labels.first.inner_text).to include 'Display Me'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue