mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-08 23:18:18 -07:00
Refactor variance chart to make view responsible for sorting measures
This commit is contained in:
parent
f5e5abc27e
commit
ad7dd85524
9 changed files with 58 additions and 62 deletions
|
|
@ -1,24 +1,16 @@
|
|||
class DashboardController < SqmApplicationController
|
||||
|
||||
def index
|
||||
@measure_graph_row_presenters = measure_ids
|
||||
.map { |measure_id| Measure.find_by_measure_id measure_id }
|
||||
.map(&method(:presenter_for_measure))
|
||||
.sort
|
||||
.reverse
|
||||
@variance_chart_row_presenters = Measure.all.map(&method(:presenter_for_measure))
|
||||
|
||||
@category_presenters = SqmCategory.sorted.map { |sqm_category| CategoryPresenter.new(category: sqm_category) }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def measure_ids
|
||||
Measure.all.map(&:measure_id)
|
||||
end
|
||||
|
||||
def presenter_for_measure(measure)
|
||||
score = SurveyItemResponse.score_for_measure(measure: measure, school: @school, academic_year: @academic_year)
|
||||
|
||||
MeasureGraphRowPresenter.new(measure: measure, score: score)
|
||||
VarianceChartRowPresenter.new(measure: measure, score: score)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -42,12 +42,4 @@ module VarianceHelper
|
|||
def zone_width_percentage
|
||||
100.0/zones.size
|
||||
end
|
||||
|
||||
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,4 +1,4 @@
|
|||
class MeasureGraphRowPresenter
|
||||
class VarianceChartRowPresenter
|
||||
include Comparable
|
||||
|
||||
attr_reader :score
|
||||
|
|
@ -49,7 +49,7 @@ class MeasureGraphRowPresenter
|
|||
end
|
||||
|
||||
def <=>(other_presenter)
|
||||
order <=> other_presenter.order
|
||||
other_presenter.order <=> order
|
||||
end
|
||||
|
||||
private
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
<% unless measures_with_insufficient_data(presenters: presenters).empty? %>
|
||||
<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: <%= measures_with_insufficient_data(presenters: presenters).map(&:measure_name).join('; ') %>.</p>
|
||||
<% displayed_presenters = presenters.filter { |p| p.sufficient_data? }.sort %>
|
||||
<% not_displayed_presenters = presenters - displayed_presenters %>
|
||||
|
||||
<% if 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 %>
|
||||
|
||||
<% 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%">
|
||||
|
|
@ -25,7 +27,7 @@
|
|||
x="<%= label_width_percentage %>%"
|
||||
y="0"
|
||||
width="<%= graph_width_percentage %>%"
|
||||
height=<%= graph_background_height(number_of_rows: displayed_presenters.size) %>
|
||||
height="<%= graph_background_height(number_of_rows: displayed_presenters.size) %>"
|
||||
filter="url(#inset-shadow)"
|
||||
>
|
||||
<g id="zone-headings">
|
||||
|
|
@ -87,7 +89,7 @@
|
|||
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 %>
|
||||
height="<%= measure_row_bar_height %>"
|
||||
data-for-measure-id="<%= presenter.measure_id %>"
|
||||
stroke="none"
|
||||
/>
|
||||
|
|
@ -75,5 +75,5 @@
|
|||
<div class="card">
|
||||
<h2 class="sub-header-2 mb-4">Distance From Benchmark</h2>
|
||||
|
||||
<%= render partial: "variance_graph", locals: { presenters: @measure_graph_row_presenters} %>
|
||||
<%= render partial: "variance_chart", locals: { presenters: @variance_chart_row_presenters} %>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue