BathHacked/energy-sparks

View on GitHub
app/views/schools/meters/show.html.erb

Summary

Maintainability
Test Coverage
<div class="d-flex justify-content-between align-items-center">
  <h1>
    <% meter_name = @meter.name.present? ? @meter.name : t('schools.meters.show.meter') %>
    <%= t('schools.meters.show.title', meter_name: meter_name, meter_mpan_mprn: @meter.mpan_mprn) %>
  </h1>
  <div class="h5">
    <%= link_to t('schools.meters.show.school_meter_management'), school_meters_path(@school), class: 'btn btn-outline-dark round-pill' %>
  </div>
</div>

<div class="mb-2 alert alert-secondary row">
  <div class="col-md-5">
    <%= link_to "#{fa_icon('file-download')} #{t('schools.meters.show.download_readings')}".html_safe, school_meter_path(@school, @meter, format: "csv"), class: 'btn btn-info btn-sm' if @meter.amr_validated_readings.any? %>
    <%= link_to t('common.labels.edit'), edit_school_meter_path(@school, @meter), class: 'btn btn-sm btn-warning' %>
    <% if can?(:report_on, @meter) && @meter.amr_validated_readings.any? %>
      <%= link_to t('common.labels.report'), admin_reports_amr_validated_reading_path(@meter), class: 'btn btn-info btn-sm' %>
    <% end %>
    <% if can?(:view_meter_attributes, @meter) %>
      <%= link_to t('common.labels.attributes'), admin_school_single_meter_attribute_path(@school, @meter), class: 'btn btn-sm' %>
    <% end %>
    <% if @meter.active? %>
      <%= link_to t('common.labels.deactivate'), deactivate_school_meter_path(@school, @meter), method: :put, class: 'btn btn-sm btn-secondary' %>
    <% else %>
      <%= link_to t('common.labels.activate'), activate_school_meter_path(@school, @meter), method: :put, class: 'btn btn-sm btn-secondary' %>
    <% end %>
    <%= render 'admin/issues/modal', label: t("schools.meters.meter_issues.button_label"), meter: @meter if current_user.admin? %>
  </div>
  <div class="col-md-7">
    <% if @meter.dcc_meter? %>
      <% if @meter.can_withdraw_consent? && can?(:withdraw_consent, @meter) %>
        <%= link_to t('schools.meters.show.withdraw_consent'), admin_withdraw_dcc_consent_path(mpxn: @meter.mpan_mprn), method: :post, class: 'btn btn-info btn-sm' %>
      <% end %>
      <% if @meter.can_grant_consent? && can?(:grant_consent, @meter) %>
        <%= link_to t('schools.meters.show.grant_consent'), admin_grant_dcc_consent_path(mpxn: @meter.mpan_mprn), method: :post, class: 'btn btn-info btn-sm' %>
      <% end %>
      <% if can?(:view_inventory, @meter) %>
        <%= link_to t('schools.meters.show.inventory'), inventory_school_meter_path(@school, @meter), class: 'btn btn-info btn-sm' %>
      <% end %>
      <% if can?(:view_tariff_reports, @meter)%>
        <%= link_to t('schools.meters.show.tariff_report'), smart_meter_tariffs_school_energy_tariffs_path(@school), class: 'btn btn-info btn-sm' %>
      <% end %>
    <% end %>
  </div>
</div>

<div class="row">
  <div class="col-md-5">
    <h3><%= t('schools.meters.show.basic_information') %></h3>
    <dl class="row">
      <% if current_user.admin? %>
        <dt class="col-sm-3"><%= t('schools.meters.show.data_source') %></dt>
        <dd class="col-sm-9"><%= @meter.data_source ? link_to(@meter.data_source.name, admin_data_source_path(@meter.data_source)) : t('common.labels.not_set') %></dd>
      <% end %>
      <dt class="col-sm-3">MPAN/MPRN</dt>
      <dd class="col-sm-9"><%= @meter.mpan_mprn %></dd>
      <dt class="col-sm-3"><%= t('schools.meters.show.serial_number') %></dt>
      <dd class="col-sm-9"><%= @meter.meter_serial_number %></dd>
      <dt class="col-sm-3"><%= t('common.labels.type') %></dt>
      <dd class="col-sm-9"><%= @meter.meter_type.capitalize %></dd>
      <dt class="col-sm-3"><%= t('common.labels.status') %></dt>
      <dd class="col-sm-9"><%= @meter.active ? t('common.labels.active') : t('common.labels.inactive') %></dd>
      <dt class="col-sm-3"><%= t('common.labels.created') %></dt>
      <dd class="col-sm-9"><%= nice_date_times @meter.created_at %></dd>
      <dt class="col-sm-3"><%= t('common.labels.last_updated') %></dt>
      <dd class="col-sm-9"><%= nice_date_times @meter.updated_at %></dd>
    </dl>
  </div>
  <div class="col-md-7">
    <% if current_user.admin? %>
      <h3><%= t('schools.meters.show.dcc_information') %></h3>
      <% if @meter.dcc_meter? %>
        <dl class="row">
          <dt class="col-sm-3"><%= t('schools.meters.show.n3rgy_known_meter') %></dt>
          <dd class="col-sm-9"><%= @known_to_n3rgy %></dd>
          <dt class="col-sm-3"><%= t('schools.meters.show.user_consented') %>?</dt>
          <dd class="col-sm-9"><%= @meter.meter_review.present? %></dd>
          <dt class="col-sm-3"><%= t('schools.meters.show.dcc_consented') %>?</dt>
          <dd class="col-sm-9"><%= @meter.consent_granted? %></dd>
          <dt class="col-sm-3"><%= t('schools.meters.show.n3rgy_consent_confirmed') %>?</dt>
          <dd class="col-sm-9"><%= @n3rgy_consent_confirmed %></dd>
          <dt class="col-sm-3"><%= t('schools.meters.show.n3rgy_api_status') %></dt>
          <dd class="col-sm-9"><%= @n3rgy_status.to_s.humanize %></dd>
          <dt class="col-sm-3"><%= t('schools.meters.show.available_cache_range') %></dt>
          <dd class="col-sm-9"><%= @available_cache_range %></dd>
        </dl>
      <% else %>
        <p><%= t('schools.meters.show.not_configured_as_a_dcc_meter') %></p>
        <dl class="row">
          <dt class="col-sm-3"><%= t('schools.meters.show.dcc_last_checked') %></dt>
          <dd class="col-sm-9"><%= nice_date_times @meter.dcc_checked_at %></dd>
          <dt class="col-sm-3"><%= t('schools.meters.show.n3rgy_known_meter') %></dt>
          <dd class="col-sm-9"><%= @known_to_n3rgy %></dd>
        </dl>
      <% end %>
    <% end %>
  </div>
</div>