BathHacked/energy-sparks

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

Summary

Maintainability
Test Coverage
<p><%= t('schools.meters.form.title') %></p>
<%= form_for [school, meter] do |form| %>
  <%= render 'shared/errors', subject: meter, subject_name: 'meter' %>

  <div class="form-group">
    <%= form.label :mpan_mprn, t('schools.meters.form.meter_point_number') %>
    <% if disabled_for_pseudo_meter?(meter) && current_user.admin? %>
      <span class='badge badge-warning'>
        <%= t('schools.meters.form.editing_disabled_for_pseudo_meters') %>
      </span>
    <% end %>
    <%= form.text_field :mpan_mprn, class: 'form-control', disabled: disabled_for_pseudo_meter?(meter) %>
  </div>
  <div class="form-group">
    <%= form.label :name,  t('schools.meters.form.name') %>
    <%= form.text_field :name, class: 'form-control' %>
  </div>
  <div class="form-group">
    <%= form.label :meter_serial_number, t('schools.meters.form.serial_number') %>
    <%= form.text_field :meter_serial_number, class: 'form-control' %>
  </div>
  <div class="form-group">
    <%= form.label :meter_type, t('schools.meters.form.type') %>
    <% if disabled_for_pseudo_meter?(meter) && current_user.admin? %>
      <span class='badge badge-warning'>
        <%= t('schools.meters.form.editing_disabled_for_pseudo_meters') %>
      </span>
    <% end %>
    <% Meter::CREATABLE_METER_TYPES.each do |meter_type| %>
      <div class="form-check">
        <%= form.radio_button :meter_type, meter_type, class: "form-check-input", disabled: disabled_for_pseudo_meter?(meter) %>
        <%= form.label "meter_type_#{meter_type.to_sym}", t("schools.meters.creatable_meter_types.#{meter_type}"),  class: "form-check-label col-form-label-sm" %>
      </div>
    <% end %>
  </div>

  <% if current_user.admin? %>
    <div class="form-group">
      <%= form.label :meter_system, t('schools.meters.form.meter_system') %>
      <%= form.select(:meter_system, Meter.meter_systems.keys.map { |meter_system| [I18n.t("meter.meter_system.#{meter_system}"), meter_system] }, { include_blank: false }, class: 'form-control') %>
    </div>
    <div class="form-group">
      <%= form.label :data_source_id, t('schools.meters.form.data_source') %>
      <%= form.select(:data_source_id, DataSource.all.order(:name).collect { |d| [ d.name, d.id ] }, { include_blank: true }, class: 'form-control') %>
    </div>
    <div class="form-group">
      <%= form.label :procurement_route_id, t('schools.meters.form.procurement_route') %>
      <%= form.select(:procurement_route_id, ProcurementRoute.all.order(:organisation_name).collect { |p| [ p.organisation_name, p.id ] }, { include_blank: true }, class: 'form-control') %>
    </div>
    <div class="form-group">
      <%= form.label :admin_meter_status, 'Admin meter status' %>
      <%= form.select(:admin_meter_statuses_id, AdminMeterStatus.all.order(:label).collect { |d| [ d.label, d.id ] }, { include_blank: true }, class: 'form-control') %>
    </div>
  <% end %>

  <div class="form-group">
    <% if show_dcc_fields %>
      <p class="alert alert-warning"><%= t('schools.meters.form.admin_only_features_for_n3rgy_integration') %></p>

      <div class="custom-control custom-checkbox">
        <%= form.check_box :dcc_meter, class: 'custom-control-input'  %>
        <%= form.label :dcc_meter, t('schools.meters.form.dcc_smart_meter'), class: "custom-control-label"  %>
        <small class="form-text text-muted">
          <%= t('schools.meters.form.leave_this_blank_message') %>
        </small>
      </div>
    <% end %>
  </div>

  <div class="actions">
    <% submit_label = action_name == 'edit' ? t('schools.meters.form.update_meter') : t('schools.meters.form.create_meter') %>
    <%= form.submit submit_label, class: 'btn btn-primary'%>
  </div>
<% end %>

<script>
  $("input[type='radio'][name='meter[meter_type]']").change(function () {
    switch($("input[type='radio'][name='meter[meter_type]']:checked").val()) {
      case 'electricity':
        document.getElementById('meter_data_source_id').value=<%= @school&.school_group&.default_data_source_electricity_id || 'null' %>
        document.getElementById('meter_procurement_route_id').value=<%= @school&.school_group&.default_procurement_route_electricity_id || 'null' %>
        document.getElementById('meter_admin_meter_statuses_id').value=<%= @school&.school_group&.admin_meter_statuses_electricity_id || 'null' %>
        break;
      case 'gas':
        document.getElementById('meter_data_source_id').value=<%= @school&.school_group&.default_data_source_gas_id || 'null' %>
        document.getElementById('meter_procurement_route_id').value=<%= @school&.school_group&.default_procurement_route_gas_id || 'null' %>
        document.getElementById('meter_admin_meter_statuses_id').value=<%= @school&.school_group&.admin_meter_statuses_gas_id || 'null' %>
        break;
      case 'solar_pv': case 'exported_solar_pv':
        document.getElementById('meter_data_source_id').value=<%= @school&.school_group&.default_data_source_solar_pv_id || 'null' %>
        document.getElementById('meter_procurement_route_id').value=<%= @school&.school_group&.default_procurement_route_solar_pv_id || 'null' %>
        document.getElementById('meter_admin_meter_statuses_id').value=<%= @school&.school_group&.admin_meter_statuses_solar_pv_id || 'null' %>
        break;
    }
  })
</script>