From b7abf2bc8bb1a727c6c3fc09b518f8d7402a5af9 Mon Sep 17 00:00:00 2001 From: rebuilt Date: Tue, 12 Jul 2022 20:31:53 -0700 Subject: [PATCH] continue refactoring --- app/models/score.rb | 5 +++++ app/presenters/analyze_bar_presenter.rb | 8 ++++---- app/presenters/variance_chart_row_presenter.rb | 3 ++- app/presenters/zones.rb | 10 ++-------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/models/score.rb b/app/models/score.rb index cb5521ad..8fe68ee8 100644 --- a/app/models/score.rb +++ b/app/models/score.rb @@ -2,4 +2,9 @@ class Score < Struct.new(:average, :meets_teacher_threshold?, :meets_student_threshold?, :meets_admin_data_threshold?) NIL_SCORE = Score.new(nil, false, false, false) + def in_zone?(zone:) + return false if average.nil? || average.is_a?(Float) && average.nan? + + average.between?(zone.low_benchmark, zone.high_benchmark) + end end diff --git a/app/presenters/analyze_bar_presenter.rb b/app/presenters/analyze_bar_presenter.rb index 12086bb2..32582411 100644 --- a/app/presenters/analyze_bar_presenter.rb +++ b/app/presenters/analyze_bar_presenter.rb @@ -16,11 +16,12 @@ class AnalyzeBarPresenter end def y_offset + benchmark_height = analyze_zone_height * 2 case zone.type when :ideal, :approval - (analyze_zone_height * 2) - bar_height_percentage + benchmark_height - bar_height_percentage else - (analyze_zone_height * 2) + benchmark_height end end @@ -49,8 +50,7 @@ class AnalyzeBarPresenter end def average - average = score.average - return 0 if average.nil? + average = score.average || 0 average.round(6) end diff --git a/app/presenters/variance_chart_row_presenter.rb b/app/presenters/variance_chart_row_presenter.rb index 251caa5a..52cce6e1 100644 --- a/app/presenters/variance_chart_row_presenter.rb +++ b/app/presenters/variance_chart_row_presenter.rb @@ -100,7 +100,8 @@ class VarianceChartRowPresenter end def percentage - (@score - zone.low_benchmark) / (zone.high_benchmark - zone.low_benchmark) + low_benchmark = zone.low_benchmark + (@score - low_benchmark) / (zone.high_benchmark - low_benchmark) end def zone diff --git a/app/presenters/zones.rb b/app/presenters/zones.rb index 53cee49a..50987a7d 100644 --- a/app/presenters/zones.rb +++ b/app/presenters/zones.rb @@ -9,13 +9,7 @@ class Zones @warning_low_benchmark = 1 end - Zone = Struct.new(:low_benchmark, :high_benchmark, :type) do - def contains?(number) - return false if number.nil? || number.is_a?(Float) && number.nan? - - number.between?(low_benchmark, high_benchmark) - end - end + Zone = Struct.new(:low_benchmark, :high_benchmark, :type) def all_zones [ @@ -48,6 +42,6 @@ class Zones end def zone_for_score(score) - all_zones.find { |zone| zone.contains?(score) } || insufficient_data + all_zones.find { |zone| Score.new(score).in_zone?(zone:) } || insufficient_data end end