SpeciesFileGroup/taxonworks

View on GitHub
app/views/otus/_otu_picker.html.erb

Summary

Maintainability
Test Coverage
<% field_name ||= :otu_id %>
<% object_method ||= :otu %>

<div class="otu_picker" id="XXX_otu_picker" data-object-name="<%= f.object_name -%>">
  <%= f.label field_name, 'OTU' %><br>
  <div class="field inline_otu_picker">  
    <%= f.text_field field_name, value: otu_autocomplete_selected_tag(f.object.send(object_method)), 
      id: 'XXX_otu_picker_autocomplete', 
      class: 'otu_picker_autocomplete expandable', 
      placeholder: 'Select or create an OTU' 
    %>
    <%= link_to 'Add new', '#', id: :otu_picker_add_new, data: { turbolinks: false }, class: 'new_plus', hidden: true %> 
  </div>

  <div id="new_otu" class="add_new" hidden >
    <%= content_tag(:div, 'New OTU', class: 'injected_new_header') -%>

    <%= f.fields_for :otu_attributes, Otu.new do |o| %>
      <div class="flex-separate inline_fields">
        <div class="fields"> 
          <div class="field">
            <%= o.label :name %>
            <%= o.text_field :name, id: 'XXX_otu_name_field' %>
          </div>

          <div class="field">
            <%= o.label :taxon_name %>
            <%= render'/workbench/elements/forms/ajax_select',
              fields_for_object: o,
              controller:  '/taxon_names',
              object: "#{f.object_name}[otu_attributes]",
              method:  'taxon_name_id',
              tag_id:  'taxon_name_id_for_inline_otu_picker',
              display: nil,
              size: 20 %>
        </div>
        </div>
        <div class="fields">
          <%= o.hidden_field :id, value: f.object.try(object_method).to_param, id: :selected_otu_id, name: "#{f.object_name}[#{field_name}]" -%>

          <div class="link">
            <%= link_to "Add", '#', id: 'otu_picker_add_ok', data: { turbolinks: false }, title: 'Add'  %>
            <%= link_to "Undo", '#', id: 'otu_picker_new_undo', data: { turbolinks: false }, title: 'Undo'  %>
          </div>
        </div>
      </div>
    <% end %>
  </div>
</div>