continue refactoring

pull/1/head
rebuilt 3 years ago
parent e89358dacc
commit b7abf2bc8b

@ -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

@ -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

@ -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

@ -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

Loading…
Cancel
Save