BathHacked/energy-sparks

View on GitHub
app/controllers/comparisons/heating_coming_on_too_early_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Comparisons
  class HeatingComingOnTooEarlyController < BaseController
    include MultipleTableComparison

    def index
      @headers_optimum_start_analysis = headers_optimum_start_analysis
      super
    end

    private

    def headers
      [t('analytics.benchmarking.configuration.column_headings.school'),
       t('analytics.benchmarking.configuration.column_headings.average_heating_start_time_last_week'),
       t('analytics.benchmarking.configuration.column_headings.average_heating_start_time_last_year'),
       t('analytics.benchmarking.configuration.column_headings.last_year_saving_if_improve_to_exemplar')]
    end

    def headers_optimum_start_analysis
      [t('analytics.benchmarking.configuration.column_headings.school'),
       t('analytics.benchmarking.configuration.column_headings.average_heating_start_time_last_year'),
       t('analytics.benchmarking.configuration.column_headings.standard_deviation_of_start_time__hours_last_year'),
       t('analytics.benchmarking.configuration.column_headings.optimum_start_rating'),
       t('analytics.benchmarking.configuration.column_headings.regression_model_optimum_start_time'),
       t('analytics.benchmarking.configuration.column_headings.regression_model_optimum_start_sensitivity_to_outside_temperature'),
       t('analytics.benchmarking.configuration.column_headings.regression_model_optimum_start_r2'),
       t('analytics.benchmarking.configuration.column_headings.average_heating_start_time_last_week')]
    end

    def key
      :heating_coming_on_too_early
    end

    def advice_page_key
      :heating_control
    end

    def load_data
      Comparison::HeatingComingOnTooEarly.for_schools(@schools).with_data.sort_default
    end

    def create_charts(results)
      @chart_heating_coming_on_too_early = create_chart(
        results,
        { avg_week_start_time_to_time_of_day: :average_heating_start_time_last_week },
        nil,
        :timeofday
      )
      @chart_heating_coming_on_too_early[:id] = :heating_coming_on_too_early

      @chart_optimum_start_analysis = create_chart(
        results,
        { average_start_time_hh_mm_to_time_of_day: :average_heating_start_time_last_year },
        nil,
        :timeofday
      )
      @chart_optimum_start_analysis[:id] = :optimum_start_analysis
      [true]
    end

    def table_configuration
      {
        table: I18n.t('comparisons.tables.heating_start_time'),
        optimum_start_analysis: I18n.t('comparisons.tables.optimum_start_analysis')
      }
    end
  end
end