ikuseiGmbH/smart-village-app-cms

View on GitHub
app/views/constructions/_form.html.erb

Summary

Maintainability
Test Coverage
<%= fields_for :construction, construction do |f| %>
  <%= hidden_field_tag "construction[id]", f.object.id if f.object.id.present? %>
  <%= hidden_field_tag "construction[generic_type]", construction.generic_type %>

  <div class="row">
    <div class="col">
      <div class="form-group">
        <label for="description">Baustellen-Titel *</label>
        <%= f.text_field :title, required: true, class: "form-control" %>
      </div>
    </div>
  </div>

  <% list_of_content_blocks = construction.content_blocks.presence || [OpenStruct.new] %>
  <div class="row">
    <div class="col">
      <div class="form-group">
        <label for="description">Weitere Informationen</label>
        <% list_of_content_blocks.each_with_index do |content_block, index| %>
          <%= f.fields_for "content_blocks[#{index}]", content_block do |fcb| %>
            <%= fcb.text_area :body, class: "form-control", rows: 10 %>
          <% end %>
        <% end %>
      </div>
    </div>
  </div>

  <div class="row">
    <div class="col">
      <div class="form-group">
        <label for="description">Richtung</label>
        <%= text_field_tag(
              "construction_payload_direction",
              (construction.payload || {})["direction"],
              placeholder: "Norden, Osten, Süden, Westen",
              class: "form-control",
              name: "construction[payload][direction]"
            )%>
      </div>
    </div>
  </div>

  <div class="row">
    <div class="col">
      <div class="form-group">
        <label for="description">Grund</label>
        <%= text_field_tag(
              "construction_payload_cause",
              (construction.payload || {})["cause"],
              class: "form-control",
              name: "construction[payload][cause]"
            )%>
      </div>
    </div>
  </div>

  <%= render partial: "shared/partials/restrictions_form", locals: { record: construction, record_type: "construction", form: f } %>

  <div class="row">
    <div class="col">
      <h2 class="d-sm-flex align-items-center justify-content-between my-4">
        Kategorien
      </h2>
      <p>
        Jede Baustelle kann in einer oder mehreren Kategorien abgelegt werden.
      <p>

      <%= render partial: "shared/partials/categories_form", locals: { record: construction, record_type: "construction", form: f, tag_filter: "generic_item_construction_site" } %>

      <%= link_to "#", class: "btn btn-sm btn-secondary", id: "nested-add-category" do %>
        <i class="fas fa-plus text-white mr-2"></i>
        Kategorie hinzufügen
      <% end %>
    </div>
  </div>

  <hr />

  <div class="row">
    <div class="col">
      <h3 class="d-sm-flex align-items-center justify-content-between my-4">
        Dateien
      </h3>
    </div>
  </div>

  <%= render partial: "shared/partials/media_contents_form", locals: { record: construction, form: f } %>

  <hr />

  <% list_of_locations = construction.locations.presence || [OpenStruct.new(geo_location: nil)] %>
  <% list_of_locations.each_with_index do |location, index| %>
    <%= fields_for "construction[locations][#{index}]", location do |fl| %>
      <div class="row">
        <div class="col">
          <div class="form-group">
            <label for="description">Standort</label>
            <%= fl.text_field :name, class: "form-control" %>
          </div>
        </div>
      </div>
    <% end %>

    <%= fields_for "construction[locations][#{index}][geo_location]", location.geo_location do |fgl| %>
      <div class="row">
        <div class="col-lg-6">
          <div class="form-group">
            <label for="description">Latitude</label>
            <%= fgl.text_field :latitude, class: "form-control" %>
          </div>

          <div class="form-group">
            <label for="description">Longitude</label>
            <%= fgl.text_field :longitude, class: "form-control" %>
          </div>
        </div>

        <div class="col-lg-6">
          <div class="form-group">
            <div id="leafletMap" class="leafletMap"></div>
          </div>
        </div>
      </div>
    <% end %>
  <% end %>

  <hr />

  <%= render(
        partial: "shared/partials/dates_form",
        locals: {
          record: construction,
          form: f,
          requireds: ["date_start", "date_end"],
          values: {
            date_start: Time.now.to_date,
            date_end: Time.now.to_date
          },
          force_visibility: true
      }) %>

  <script type="text/javascript">
    $('#construction_dates_0__date_start').change(function() {
      $('#construction_dates_0__date_end').val($('#construction_dates_0__date_start').val())
    });
  </script>

  <hr />

  <div class="row justify-content-center pb-4">
    <%= f.submit "Speichern", class: "btn btn-primary btn--big" %>
  </div>
<% end %>