Implement bullet suggestions and cache overview graph

pull/1/head
Nelson Jovel 4 years ago
parent 7a9830915b
commit a134de3fdd

@ -6,7 +6,7 @@ class AnalyzeController < SqmApplicationController
@subcategory ||= Subcategory.find_by_subcategory_id(params[:subcategory_id]) @subcategory ||= Subcategory.find_by_subcategory_id(params[:subcategory_id])
@subcategory ||= Subcategory.find_by_subcategory_id('1A') @subcategory ||= Subcategory.find_by_subcategory_id('1A')
@measure = @subcategory.measures.first @measure = @subcategory.measures.includes([:admin_data_items]).first
@academic_year ||= AcademicYear.order('range DESC').first @academic_year ||= AcademicYear.order('range DESC').first
end end
end end

@ -3,7 +3,7 @@ class OverviewController < SqmApplicationController
helper VarianceHelper helper VarianceHelper
def index def index
@variance_chart_row_presenters = Measure.all.map(&method(:presenter_for_measure)) @variance_chart_row_presenters = measures.map(&method(:presenter_for_measure))
@category_presenters = Category.sorted.map { |category| CategoryPresenter.new(category:) } @category_presenters = Category.sorted.map { |category| CategoryPresenter.new(category:) }
end end
@ -16,8 +16,13 @@ class OverviewController < SqmApplicationController
end end
def check_empty_dataset def check_empty_dataset
@has_empty_dataset = Measure.all.all? do |measure| @has_empty_dataset = measures.all? do |measure|
measure.none_meet_threshold? school: @school, academic_year: @academic_year measure.none_meet_threshold? school: @school, academic_year: @academic_year
end end
end end
def measures
@measures ||= Measure.all.includes(%i[scales admin_data_items subcategory
category]).includes(subcategory: :measures)
end
end end

@ -1,5 +1,6 @@
class Measure < ActiveRecord::Base class Measure < ActiveRecord::Base
belongs_to :subcategory belongs_to :subcategory
has_one :category, through: :subcategory
has_many :scales has_many :scales
has_many :admin_data_items, through: :scales has_many :admin_data_items, through: :scales
has_many :survey_items, through: :scales has_many :survey_items, through: :scales
@ -94,13 +95,14 @@ class Measure < ActiveRecord::Base
def sufficient_student_data?(school:, academic_year:) def sufficient_student_data?(school:, academic_year:)
return false unless includes_student_survey_items? return false unless includes_student_survey_items?
subcategory.student_response_rate(school:, academic_year:).meets_student_threshold? @sufficient_student_data ||= subcategory.student_response_rate(school:,
academic_year:).meets_student_threshold?
end end
def sufficient_teacher_data?(school:, academic_year:) def sufficient_teacher_data?(school:, academic_year:)
return false unless includes_teacher_survey_items? return false unless includes_teacher_survey_items?
subcategory.teacher_response_rate(school:, academic_year:).meets_teacher_threshold? @sufficient_teacher_data ||= subcategory.teacher_response_rate(school:, academic_year:).meets_teacher_threshold?
end end
def all_admin_data_collected?(school:, academic_year:) def all_admin_data_collected?(school:, academic_year:)

@ -10,7 +10,7 @@ class VarianceChartRowPresenter
@meets_student_threshold = score.meets_student_threshold? @meets_student_threshold = score.meets_student_threshold?
@measure_name = @measure.name @measure_name = @measure.name
@measure_id = @measure.measure_id @measure_id = @measure.measure_id
@category = @measure.subcategory.category @category = @measure.category
end end
def sufficient_data? def sufficient_data?

@ -63,6 +63,7 @@
</symbol> </symbol>
</svg> </svg>
<% cache [@school, @academic_year] do %>
<div class="card"> <div class="card">
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<h2 class="sub-header-2">School Quality Framework Indicators</h2> <h2 class="sub-header-2">School Quality Framework Indicators</h2>
@ -88,14 +89,15 @@
</div> </div>
</div> </div>
<%= render partial: "quality_framework_indicators", locals: { category_presenters: @category_presenters } %> <%= render partial: "quality_framework_indicators", locals: { category_presenters: @category_presenters }, cached: true %>
</div> </div>
<div class="card"> <div class="card">
<h2 class="sub-header-2 mb-4">Distance From Benchmark</h2> <h2 class="sub-header-2 mb-4">Distance From Benchmark</h2>
<%= render partial: "variance_chart", locals: { presenters: @variance_chart_row_presenters } %> <%= render partial: "variance_chart", locals: { presenters: @variance_chart_row_presenters } , cached: true %>
</div> </div>
<% end %>
<% if @district == District.find_by_name("Boston") %> <% if @district == District.find_by_name("Boston") %>
<%= render partial: 'layouts/boston_modal' %> <%= render partial: 'layouts/boston_modal' %>

Loading…
Cancel
Save