diff --git a/app/controllers/pupils/public_displays_controller.rb b/app/controllers/pupils/digital_signage_controller.rb similarity index 91% rename from app/controllers/pupils/public_displays_controller.rb rename to app/controllers/pupils/digital_signage_controller.rb index c64dbfc48f..16c2a3a853 100644 --- a/app/controllers/pupils/public_displays_controller.rb +++ b/app/controllers/pupils/digital_signage_controller.rb @@ -1,5 +1,5 @@ module Pupils - class PublicDisplaysController < ApplicationController + class DigitalSignageController < ApplicationController load_resource :school include SchoolAggregation @@ -7,12 +7,14 @@ class PublicDisplaysController < ApplicationController include ActionView::Context skip_before_action :authenticate_user! - before_action :set_fuel_type, except: :index + before_action :set_fuel_type before_action :check_fuel_type, only: :charts - before_action :set_analysis_dates, except: :index + before_action :set_analysis_dates after_action :allow_iframe, only: [:equivalences, :charts] - layout 'public_displays' + layout 'digital_signage' + + CHART_TYPES = %i[last-week out-of-hours].freeze rescue_from StandardError do |exception| Rollbar.error(exception, school: @school.name, school_id: @school.id) @@ -23,10 +25,6 @@ class PublicDisplaysController < ApplicationController end end - def index - render 'index', layout: 'application' - end - def equivalences meter_types = case @fuel_type when :electricity @@ -42,10 +40,10 @@ def charts raise 'Not data enabled' unless @school.data_enabled? @chart_type = params.require(:chart_type).to_sym - # avoid showing stale date on weekly comparion chart, issue temporary redirect + # avoid showing stale date on weekly comparison chart, issue temporary redirect # ensures pages don't break in case of lagging data or a meter fault if lagging_data?(@chart_type) - redirect_to pupils_school_public_displays_equivalences_path(@school, @fuel_type) and return + redirect_to pupils_school_digital_signage_equivalences_path(@school, @fuel_type) and return end @chart = find_chart(@fuel_type, @chart_type) end @@ -53,7 +51,7 @@ def charts private def lagging_data?(chart_type) - return false if chart_type == :out_of_hours + return false if chart_type == :"out-of-hours" (Time.zone.today - @analysis_dates.end_date) > 30 end @@ -96,14 +94,14 @@ def find_chart(fuel_type, chart_type) case fuel_type when :electricity case chart_type - when :out_of_hours + when :"out-of-hours" :daytype_breakdown_electricity_tolerant else :public_displays_electricity_weekly_comparison end when :gas case chart_type - when :out_of_hours + when :"out-of-hours" :daytype_breakdown_gas_tolerant else :public_displays_gas_weekly_comparison diff --git a/app/controllers/school_groups/digital_signage_controller.rb b/app/controllers/school_groups/digital_signage_controller.rb new file mode 100644 index 0000000000..017e380364 --- /dev/null +++ b/app/controllers/school_groups/digital_signage_controller.rb @@ -0,0 +1,89 @@ +module SchoolGroups + class DigitalSignageController < ApplicationController + load_and_authorize_resource :school_group + + def index + end + + def charts + send_data charts_csv, filename: csv_filename_for(:charts) + end + + def equivalences + send_data equivalences_csv, filename: csv_filename_for(:equivalences) + end + + private + + def csv_filename_for(link_type) + title = I18n.t("pupils.digital_signage.index.school_group.links.#{link_type}") + "#{@school_group.name}-#{title}-#{Time.zone.now.strftime('%Y-%m-%d')}".parameterize + '.csv' + end + + def equivalences_csv + CSV.generate do |csv| + csv << [ + t('common.school'), + t('advice_pages.index.priorities.table.columns.fuel_type'), + t('pupils.digital_signage.table.columns.link') + ] + schools.each do |school| + if school.has_electricity? + csv << [ + school.name, + t('common.electricity'), + pupils_school_digital_signage_equivalences_url(school, :electricity) + ] + end + if school.has_gas? + csv << [ + school.name, + t('common.gas'), + pupils_school_digital_signage_equivalences_url(school, :gas) + ] + end + end + end + end + + def charts_csv + CSV.generate do |csv| + csv << [ + t('common.school'), + t('advice_pages.index.priorities.table.columns.fuel_type'), + t('pupils.digital_signage.table.columns.chart_type'), + t('pupils.digital_signage.table.columns.description'), + t('pupils.digital_signage.table.columns.link') + ] + schools.each do |school| + if school.has_electricity? + Pupils::DigitalSignageController::CHART_TYPES.each do |chart_type| + csv << [ + school.name, + t('common.electricity'), + t("pupils.digital_signage.index.charts.#{chart_type}.title"), + t("pupils.digital_signage.index.charts.#{chart_type}.description"), + pupils_school_digital_signage_charts_url(school, :electricity, chart_type) + ] + end + end + if school.has_gas? + Pupils::DigitalSignageController::CHART_TYPES.each do |chart_type| + csv << [ + school.name, + t('common.gas'), + t("pupils.digital_signage.index.charts.#{chart_type}.title"), + t("pupils.digital_signage.index.charts.#{chart_type}.description"), + pupils_school_digital_signage_charts_url(school, :gas, chart_type) + ] + end + end + end + end + end + + def schools + @school_group.schools.active.data_enabled.where(data_sharing: :public).order(:name) + end + end +end diff --git a/app/controllers/schools/digital_signage_controller.rb b/app/controllers/schools/digital_signage_controller.rb new file mode 100644 index 0000000000..c6829967b8 --- /dev/null +++ b/app/controllers/schools/digital_signage_controller.rb @@ -0,0 +1,8 @@ +module Schools + class DigitalSignageController < ApplicationController + load_and_authorize_resource :school + + def index + end + end +end diff --git a/app/views/layouts/public_displays.html.erb b/app/views/layouts/digital_signage.html.erb similarity index 100% rename from app/views/layouts/public_displays.html.erb rename to app/views/layouts/digital_signage.html.erb diff --git a/app/views/pupils/public_displays/charts.html.erb b/app/views/pupils/digital_signage/charts.html.erb similarity index 83% rename from app/views/pupils/public_displays/charts.html.erb rename to app/views/pupils/digital_signage/charts.html.erb index 5572ec3beb..a964bdfd3f 100644 --- a/app/views/pupils/public_displays/charts.html.erb +++ b/app/views/pupils/digital_signage/charts.html.erb @@ -2,10 +2,10 @@
<%= t('pupils.public_displays.index.equivalences.intro_html') %>
-<%= t('advice_pages.index.priorities.table.columns.fuel_type') %> | -<%= t('pupils.public_displays.table.columns.url_pattern') %> | -<%= t('pupils.public_displays.table.columns.link') %> | -
---|---|---|
<%= t('common.electricity') %> | -/pupils/schools/<%= @school.slug %>/public-displays/electricity/equivalences |
- <%= link_to t('pupils.public_displays.table.columns.link'), - pupils_school_public_displays_equivalences_path(@school, :electricity) %> | -
<%= t('common.gas') %> | -/pupils/schools/<%= @school.slug %>/public-displays/gas/equivalences |
- <%= link_to t('pupils.public_displays.table.columns.link'), - pupils_school_public_displays_equivalences_path(@school, :gas) %> | -
<%= t('pupils.public_displays.index.charts.intro_html') %>
-<%= t('advice_pages.index.priorities.table.columns.fuel_type') %> | -<%= t('pupils.public_displays.table.columns.chart_type') %> | -<%= t('pupils.public_displays.table.columns.description') %> | -<%= t('pupils.public_displays.table.columns.url_pattern') %> | -<%= t('pupils.public_displays.table.columns.link') %> | -
---|---|---|---|---|
<%= t('common.electricity') %> | -<%= t("pupils.public_displays.index.charts.#{chart_type}.title") %> | -<%= t("pupils.public_displays.index.charts.#{chart_type}.description") %> | -/pupils/schools/<%= @school.slug %>/public-displays/electricity/charts/<%= chart_type %> |
- <%= link_to t('pupils.public_displays.table.columns.link'), - pupils_school_public_displays_charts_path(@school, :electricity, chart_type) %> | -
<%= t('common.gas') %> | -<%= t("pupils.public_displays.index.charts.#{chart_type}.title") %> | -<%= t("pupils.public_displays.index.charts.#{chart_type}.description") %> | -/pupils/schools/<%= @school.slug %>/public-displays/gas/charts/<%= chart_type %> |
- <%= link_to t('pupils.public_displays.table.columns.link'), - pupils_school_public_displays_charts_path(@school, :gas, chart_type) %> | -
+ <%= t('pupils.digital_signage.index.prompt.text') %> +
+ <% end %> +<%= t('pupils.digital_signage.index.equivalences.intro_html') %>
+<%= link_to t('common.labels.download'), + equivalences_school_group_digital_signage_index_path(@school_group, format: :csv), + class: 'btn btn-sm btn-default' %>
+<%= t('pupils.digital_signage.index.charts.intro_html') %>
+<%= link_to t('common.labels.download'), + charts_school_group_digital_signage_index_path(@school_group, format: :csv), + class: 'btn btn-sm btn-default' %>
++ <%= t('pupils.digital_signage.index.prompt.text') %> +
+ <% end %> +<%= t('pupils.digital_signage.index.equivalences.intro_html') %>
+<%= t('advice_pages.index.priorities.table.columns.fuel_type') %> | +<%= t('pupils.digital_signage.table.columns.url_pattern') %> | +<%= t('pupils.digital_signage.table.columns.link') %> | +
---|---|---|
<%= t('common.electricity') %> | +/pupils/schools/<%= @school.slug %>/digital-signage/electricity/equivalences |
+ <%= link_to t('pupils.digital_signage.table.columns.link'), + pupils_school_digital_signage_equivalences_path(@school, :electricity) %> | +
<%= t('common.gas') %> | +/pupils/schools/<%= @school.slug %>/digital-signage/gas/equivalences |
+ <%= link_to t('pupils.digital_signage.table.columns.link'), + pupils_school_digital_signage_equivalences_path(@school, :gas) %> | +
<%= t('pupils.digital_signage.index.charts.intro_html') %>
+<%= t('advice_pages.index.priorities.table.columns.fuel_type') %> | +<%= t('pupils.digital_signage.table.columns.chart_type') %> | +<%= t('pupils.digital_signage.table.columns.description') %> | +<%= t('pupils.digital_signage.table.columns.url_pattern') %> | +<%= t('pupils.digital_signage.table.columns.link') %> | +
---|---|---|---|---|
<%= t('common.electricity') %> | +<%= t("pupils.digital_signage.index.charts.#{chart_type}.title") %> | +<%= t("pupils.digital_signage.index.charts.#{chart_type}.description") %> | +/pupils/schools/<%= @school.slug %>/digital-signage/electricity/charts/<%= chart_type %> |
+ <%= link_to t('pupils.digital_signage.table.columns.link'), + pupils_school_digital_signage_charts_path(@school, :electricity, chart_type) %> | +
<%= t('common.gas') %> | +<%= t("pupils.digital_signage.index.charts.#{chart_type}.title") %> | +<%= t("pupils.digital_signage.index.charts.#{chart_type}.description") %> | +/pupils/schools/<%= @school.slug %>/digital-signage/gas/charts/<%= chart_type %> |
+ <%= link_to t('pupils.digital_signage.table.columns.link'), + pupils_school_digital_signage_charts_path(@school, :gas, chart_type) %> | +