app/views/setup/activities/_form.html.erb

Summary

Maintainability
Test Coverage
<%= f.input :name, input_html: {value: params.has_key?(:activity) ? params[:activity][:name] : @activity.name} %>
<%= f.input :short_name, input_html: {value: params.has_key?(:activity) ? params[:activity][:short_name] : @activity.short_name} %>
<%= f.input :code, input_html: {value: params.has_key?(:activity) ? params[:activity][:code] : @activity.code} %>

<%if activity.missing_activity_states? %>
<hr>
<h3>Some data elements are not mapped for the state used by the following packages</h3>
      <% activity.activity_packages.each do |activity_package| %>

        <li><%= activity_package.package.name %>
          <% if activity_package.package.missing_activity_states[activity] && activity_package.package.missing_activity_states[activity].any? %>
            <br>
            <%= icon('fas', "exclamation-triangle", class: "text-warning")%> Missing element for :  <%= activity_package.package.missing_activity_states[activity].map(&:name).join(',') %>
          <% end%>
        </li>
      <%end%>
<br>
<p>If the data element exists us the "Add data element for state mapping" feature below.<p>
<p>
If they don't exist yet in dhis2, you can create them via this <%= link_to "page", mass_creation_setup_project_activities_path(@current_project, activity_id: activity) %>
</p>
<%end%>
<hr>
<h2>Add dhis2 data for state mappings</h2>
  <select class="state-mapping-action form-control" name="state-mapping-action">
    <%= options_for_select([
        ["Add data elements", "data_element"],
        ["Add data elements with category option combo", "data_element_coc"],
        ["Add indicators", "indicator"],
        ["Add constants", "constant"]
      ], params["state-mapping-action"] || "data_element") %>
  </select>
<ul>
<br>
<div class="state-mapping-form" data-action="data_element_coc">
   <div class="row">
    <div class="col-md-6 " >
        <div class="form-group">
          <label class="control-label">Data Elements</label>
          <select id="data_elementcocs_selector" data-selected=""
                data-placeholder="Lookup the data elements here..."
                data-selection = "data_elementcocs_selection"
                data-url = "<%= data_elements_setup_project_autocomplete_index_path(@activity.project) %>"
                class="form-control sol-powered" name="data_element_cocs[]" multiple="multiple">
          </select>
        </div>
    </div>
    <div class="col-md-6">
     <div class="col-md-12" id="data_elementcocs_selection"></div>
    </div>
   </div>
   <div class="col-md-6">
     <div >
      <%= f.button :submit, 'Add for state mapping', class: "btn btn-primary" %>
    </div>
  </div>
</div>

<div class="state-mapping-form" data-action="data_element">
   <div class="row">
    <div class="col-md-6 " >
        <div class="form-group">
          <label class="control-label">Data Elements</label>
          <select id="data_elements_selector"
                  data-selected=""
                  data-placeholder="Lookup the data elements here..."
                  data-selection = "data_elements_selection"
                  data-url = "<%= data_elements_setup_project_autocomplete_index_path(@activity.project) %>"
                  class="form-control sol-powered"
                  name="data_elements[]"
                  multiple="multiple">
          </select>
        </div>
    </div>
    <div class="col-md-6">
     <div class="col-md-12" id="data_elements_selection"></div>
    </div>
   </div>
   <div class="col-md-6">
     <div class="col-md-12" id="data_elements_selection"></div>
     <div >
      <%= f.button :submit, 'Add for state mapping', class: "btn btn-primary" %>
    </div>
  </div>
</div>


<div class="row state-mapping-form" data-action="indicator">
    <div class="col-md-6">
      <div class="form-group">
        <label class="control-label">Indicators</label>
        <select id="indicators_selector"
                data-selected=""
                data-placeholder="Lookup the indicators here..."
                data-selection = "indicators_selection"
                data-url = "<%= indicators_setup_project_autocomplete_index_path(@activity.project) %>"
                class="form-control sol-powered" name="indicators[]" multiple="multiple">
        </select>
    </div>

     <div class="col-md-12" id="indicators_selection"></div>
     <div >
      <%= f.button :submit, 'Add indicators for state mapping', class: "btn btn-primary" %>
    </div>
  </div>
</div>

<div class="row state-mapping-form" data-action="constant">
    <%= link_to_add_association 'Add a constant', f, :activity_states, partial: 'constant',class: "btn btn-secondary" %>
    <%= f.button :submit, 'Add for state mapping', class: "btn btn-primary" %>
</div>
</ul>
<br>
<hr>

<% if params.has_key?(:activity) || activity.activity_states.present? %>
<h2>Map data to state</h2>
<div>
    <table class="table table-striped table-condensed">
        <thead>
            <tr>
                <th>Activity</th>
                <th>Remove</th>
                <th style="text-align: center;">State</th>
                <th>Value</th>
                <th>Origin</th>
            </tr>
        </thead>
        <body>
          <%= f.simple_fields_for :activity_states do |activity_state_form| %>
            <%= render partial: "activity_state",  locals: {
               f: activity_state_form,
               activity_state: activity_state_form.object,
               prefix:  "activity[activity_states_attributes][#{activity_state_form.index}]"
               } %>
          <% end %>
        </body>
    </table>
</div>

<div>
<table class="tabke table-striped table-condensed">
</table>
</div>
  <br><br>
<% end %>
<%= f.button :submit, class: "btn btn-success" %>
<%= link_to "Cancel and back to setup", root_path(activity.project, anchor: "step-activities") ,class: "btn btn-default"%>
  <br><br>
    <br><br>
      <br><br>