mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
Sort measures by the highest score to lowest score [finishes #179726949]
This commit is contained in:
parent
d7ead5bac9
commit
87f268dd7a
4 changed files with 35 additions and 0 deletions
|
|
@ -4,6 +4,7 @@ class DashboardController < ApplicationController
|
|||
@measure_graph_row_presenters = measure_ids
|
||||
.map { |measure_id| Measure.find_by_measure_id measure_id }
|
||||
.map(&method(:presenter_for_measure))
|
||||
.sort().reverse
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
class MeasureGraphRowPresenter
|
||||
include Comparable
|
||||
def initialize(measure:, score:)
|
||||
@measure = measure
|
||||
@score = score
|
||||
|
|
@ -29,6 +30,14 @@ class MeasureGraphRowPresenter
|
|||
end
|
||||
end
|
||||
|
||||
def <=>(other_presenter)
|
||||
if x_offset.to_f == other_presenter.x_offset.to_f
|
||||
return bar_width.to_f <=> other_presenter.bar_width.to_f
|
||||
end
|
||||
|
||||
x_offset.to_f <=> other_presenter.x_offset.to_f
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
IDEAL_ZONE_WIDTH_PERCENTAGE = 0.5 / 2
|
||||
|
|
|
|||
|
|
@ -69,6 +69,11 @@ feature 'School dashboard', type: feature do
|
|||
expect(problem_solving_emphasis_row['x']).to eq '0.0%'
|
||||
|
||||
page.assert_selector('.measure-row-bar', count: Measure.count)
|
||||
professional_qualifications_row_index = measure_row_bars.find_index { |item| item['data-for-measure-id'] == '1A-i' }
|
||||
student_physical_safety_row_index = measure_row_bars.find_index { |item| item['data-for-measure-id'] == '2A-i' }
|
||||
problem_solving_emphasis_row_index = measure_row_bars.find_index { |item| item['data-for-measure-id'] == '4C-i' }
|
||||
expect(student_physical_safety_row_index).to be < professional_qualifications_row_index
|
||||
expect(professional_qualifications_row_index).to be < problem_solving_emphasis_row_index
|
||||
end
|
||||
|
||||
let(:username) { 'winchester' }
|
||||
|
|
|
|||
|
|
@ -122,4 +122,24 @@ RSpec.describe MeasureGraphRowPresenter do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'sorting scores' do
|
||||
it 'selects a shorter bar width before a longer bar' do
|
||||
this_presenter = MeasureGraphRowPresenter.new measure: measure, score: 3.7
|
||||
other_presenter = MeasureGraphRowPresenter.new measure: measure, score: 4.4
|
||||
expect(this_presenter <=> other_presenter).to be < 0
|
||||
end
|
||||
|
||||
it 'selects a warning bar before a ideal bar' do
|
||||
this_presenter = MeasureGraphRowPresenter.new measure: measure, score: 1.0
|
||||
other_presenter = MeasureGraphRowPresenter.new measure: measure, score: 5.0
|
||||
expect(this_presenter <=> other_presenter).to be < 0
|
||||
end
|
||||
|
||||
it 'selects an ideal bar after a warning bar' do
|
||||
this_presenter = MeasureGraphRowPresenter.new measure: measure, score: 4.4
|
||||
other_presenter = MeasureGraphRowPresenter.new measure: measure, score: 1.0
|
||||
expect(this_presenter <=> other_presenter).to be > 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue