1
0

Measurement improvements

Added 'new' action.
Separated js views for new/create/edit.
Displaying taken_at in local time.
Fixed readout destruction on edit.
This commit is contained in:
cryptogopher
2019-12-06 21:48:06 +01:00
parent 65d811d9fb
commit 681c0279fb
14 changed files with 91 additions and 79 deletions

View File

@@ -0,0 +1,15 @@
<%= labelled_form_for @measurement,
url: measurement_path(@measurement),
method: :patch, remote: true,
html: {id: 'measurement-edit-form', name: 'measurement-edit-form'} do |f| %>
<%= render partial: 'measurements/form', locals: {f: f} %>
<div class="tabular">
<p>
<%= submit_tag l(:button_save) %>
<%= link_to l(:button_cancel), "#",
onclick: '$(this).closest("tr").remove(); return false;' %>
</p>
</div>
<% end %>

View File

@@ -6,7 +6,7 @@
<p><%= f.text_field :name, size: 40, required: true %></p>
<p>
<%= f.date_field :taken_at_date, required: true %>
<%= f.time_field :taken_at_time, value: @measurement.taken_at.strftime("%H:%M"),
<%= f.time_field :taken_at_time, value: @measurement.taken_at.getlocal.strftime("%R"),
required: true, label: '' %>
</p>
<% @measurement.readouts.each_with_index do |r, index| %>
@@ -26,35 +26,35 @@
<% end %>
<% end %>
<p>
<%= link_to t(".button_add_readout"), '#', class: 'icon icon-add',
onclick: 'addReadout(); return false;' %>
<%= link_to t(".button_new_readout"), '#', class: 'icon icon-add',
onclick: 'newReadout(); return false;' %>
</p>
</div>
<%= javascript_tag do %>
function addReadout() {
var row = $('p.readout:visible:last');
function newReadout() {
var form = $(event.target).closest('form');
var row = form.find('p.readout:visible:last');
var new_row = row.clone().insertAfter(row);
new_row.find('input[id$=__id], input[id$=__value], select[id$=_quantity__id]').val('');
new_row.find('select[id$=__unit_id]').val(row.find('select[id$=__unit_id]').val());
new_row.find('input[id$=__destroy]').val('false');
new_row.find('label:first').text('');
if ($('p.readout:visible').length > 1) {
$('p.readout a.icon-del').show();
}
new_row.find('input[id$=__destroy]').val('');
new_row.find('label:first').hide();
form.find('p.readout:visible a.icon-del').show();
}
function deleteReadout() {
var form = $(event.target).closest('form');
var row = $(event.target).closest('p.readout');
if (row.find('input[id$=__id]').val()) {
row.hide();
row.find('input[id$=__destroy]').val('true');
row.find('input[id$=__destroy]').val('1');
} else {
row.remove();
}
$('p.readout:visible:first label:first').text('<%= t "field_readouts" %>');
if ($('p.readout:visible').length <= 1) {
$('p.readout a.icon-del').hide();
form.find('p.readout:visible:first label:first').show();
if (form.find('p.readout:visible').length <= 1) {
form.find('p.readout:visible a.icon-del').hide();
}
}
<% end %>

View File

@@ -12,7 +12,7 @@
<% @measurements.each do |m| %>
<% next if m.new_record? %>
<tr id="measurement-<%= m.id %>" class="measurement <%= 'hidden' if m.hidden %>">
<td class="date"><%= m.taken_at.strftime("%F %R") %></td>
<td class="date"><%= m.taken_at.getlocal.strftime("%F %R") %></td>
<td class="name">
<div style="float:left;"><%= m.name %></div>
<div style="float:right;">
@@ -32,30 +32,15 @@
<%= delete_link measurement_path(m), {remote: true, data: {}} %>
</td>
</tr>
<% next unless (m == @measurement) &&
((action_name == "edit") ||
(action_name == "update" && @measurement.errors.present?)) %>
<tr>
<td class="form" colspan="5">
<div id="edit-measurement">
<%= labelled_form_for @measurement,
url: measurement_path(@measurement),
method: :patch, remote: true,
html: {id: 'measurement-edit-form', name: 'measurement-edit-form'} do |f| %>
<%= render partial: 'measurements/form', locals: {f: f} %>
<div class="tabular">
<p>
<%= submit_tag l(:button_save) %>
<%= link_to l(:button_cancel), "#",
onclick: '$(this).closest("tr").remove(); return false;' %>
</p>
</div>
<% end %>
</div>
</td>
</tr>
<% if (m == @measurement) && @measurement.errors.present? %>
<tr>
<td class="form" colspan="5">
<div id="edit-measurement">
<%= render partial: 'measurements/edit_form' %>
</div>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>

View File

@@ -0,0 +1,18 @@
<h2><%= t ".heading_new_measurement" %></h2>
<%= labelled_form_for @measurement,
url: project_measurements_path(@project),
remote: true,
html: {id: 'new-measurement-form', name: 'new-measurement-form'} do |f| %>
<%= render partial: 'measurements/form', locals: {f: f} %>
<div class="tabular">
<p>
<%= submit_tag l(:button_create) %>
<%= link_to l(:button_cancel), "#",
onclick: '$("#new-measurement").empty(); return false;' %>
</p>
</div>
<% end %>
<hr>

View File

@@ -0,0 +1,4 @@
$('div[id^=flash_]').remove();
$('#content').prepend('<%= j render_flash_messages %>');
$('#new-measurement').empty();
$('#measurements').html('<%= j render partial: 'measurements/index' %>');

View File

@@ -0,0 +1,3 @@
$('div[id^=flash_]').remove();
$('#content').prepend('<%= j render_flash_messages %>');
$('tr[id=measurement-<%= @measurement.id %>]').after('<tr><td class="form" colspan="5"><div id="edit-measurement"><%= j render partial: "measurements/edit_form" %></div></td></tr>');

View File

@@ -4,31 +4,14 @@
<div class="contextual">
<% if User.current.allowed_to?(:manage_common, @project) %>
<%= link_to t(".link_new_measurement"), '#', class: 'icon icon-add',
onclick: '$("#add-measurement").toggle(); $("#measurement_name").focus(); return false;'
%>
<%= link_to t(".link_new_measurement"), new_project_measurement_path(@project), {
remote: true,
class: 'icon icon-add'
} %>
<% end %>
</div>
<% hide_add_form = @measurement.errors.empty? && (action_name != "retake") %>
<div id="add-measurement" <%= 'style=display:none;' if hide_add_form %>>
<h2><%= t ".heading_new_measurement" %></h2>
<%= labelled_form_for @measurement,
url: project_measurements_path(@project),
html: {id: 'measurement-add-form', name: 'measurement-add-form'} do |f| %>
<%= render partial: 'measurements/form', locals: {f: f} %>
<div class="tabular">
<p>
<%= submit_tag l(:button_create) %>
<%= link_to l(:button_cancel), "#",
onclick: '$("#add-measurement").hide(); return false;' %>
</p>
</div>
<% end %>
<hr>
<div id="new-measurement">
</div>
<h2><%= t ".heading" %></h2>

View File

@@ -1,3 +1,3 @@
$('div[id^=flash_]').remove();
$('#content').prepend('<%= escape_javascript(render_flash_messages) %>');
$('#measurements').html('<%= escape_javascript(render partial: 'measurements/index') %>');
$('#content').prepend('<%= j render_flash_messages %>');
$('#measurements').html('<%= j render partial: 'measurements/index' %>');

View File

@@ -0,0 +1,3 @@
$('div[id^=flash_]').remove();
$('#content').prepend('<%= j render_flash_messages %>');
$('#new-measurement').html('<%= j render partial: 'measurements/new_form' %>');