Added zero_nil to Ingredients filter formula
Displaying formulas errors for Nutrients view Substituted onblur for Ingredients filters with hidden submit
This commit is contained in:
parent
c3b783e942
commit
10325c9c39
@ -69,7 +69,7 @@ class IngredientsController < BodyTrackingPluginController
|
||||
end
|
||||
|
||||
def filter
|
||||
session[:i_filters] = params[:filters]
|
||||
session[:i_filters] = params.permit(:name, :visibility, formula: [:code, :zero_nil])
|
||||
prepare_items
|
||||
render :index
|
||||
end
|
||||
@ -178,7 +178,7 @@ class IngredientsController < BodyTrackingPluginController
|
||||
private
|
||||
|
||||
def init_session_filters
|
||||
session[:i_filters] ||= {}
|
||||
session[:i_filters] ||= {formula: {}}
|
||||
end
|
||||
|
||||
def ingredient_params
|
||||
|
@ -69,8 +69,7 @@ class MeasurementsController < BodyTrackingPluginController
|
||||
end
|
||||
|
||||
def filter
|
||||
session[:m_filters][:name] = params[:filters][:name]
|
||||
session[:m_filters][:formula] = params[:filters][:formula]
|
||||
session[:m_filters] = params.permit(:name, formula: [:code, :zero_nil])
|
||||
readouts_view? ? prepare_readouts : prepare_measurements
|
||||
render :index
|
||||
end
|
||||
|
@ -9,20 +9,16 @@
|
||||
<table class="filter">
|
||||
<tr>
|
||||
<td>
|
||||
<%= text_field_tag 'filters[name]', session[:i_filters][:name], placeholder: 'name',
|
||||
onblur: '$("#filters-form").submit(); return false;' %>
|
||||
<%= text_field_tag 'name', session[:i_filters][:name], placeholder: 'name' %>
|
||||
</td>
|
||||
<td>
|
||||
<%= select_tag 'filters[visibility]',
|
||||
visibility_options(session[:i_filters][:visibility]),
|
||||
prompt: t('.visibility_prompt'),
|
||||
onchange: '$("#filters-form").submit();' %>
|
||||
<%= select_tag 'visibility', visibility_options(session[:i_filters][:visibility]),
|
||||
prompt: t('.visibility_prompt'), onchange: '$("#filters-form").submit();' %>
|
||||
</td>
|
||||
<td style="width:100%;">
|
||||
<%= text_field_tag 'filters[formula]', session[:i_filters][:formula],
|
||||
<%= text_field_tag 'formula[code]', session[:i_filters][:formula][:code],
|
||||
placeholder: 'conditional expression including nutrients', size: 40,
|
||||
style: 'box-sizing:border-box; width:100%;',
|
||||
onblur: '$("#filters-form").submit(); return false;' %>
|
||||
style: 'box-sizing:border-box; width:100%;' %>
|
||||
</td>
|
||||
<td>
|
||||
<%= link_to l(:button_apply), '#', class: "icon icon-checked",
|
||||
@ -34,7 +30,20 @@
|
||||
$("#filters-form").submit(); return false;' %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td style="padding-top:4px;">
|
||||
<%= label_tag do %>
|
||||
<%= check_box_tag 'formula[zero_nil]', session[:i_filters][:formula][:zero_nil] %>
|
||||
<%= t 'quantities.form.zero_nil' %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<%= submit_tag '', style: 'display:none;' %>
|
||||
<% end %>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<% if @ingredients.any? %>
|
||||
<%= render partial: 'ingredients/options' %>
|
||||
|
||||
<%= error_messages_for *@quantities.map { |q| q.formula } %>
|
||||
<%= error_messages_for @formula_q.formula, *@quantities.map { |q| q.formula } %>
|
||||
|
||||
<table class="nutrients list odd-even">
|
||||
<thead>
|
||||
|
@ -9,14 +9,12 @@
|
||||
<table class="filter">
|
||||
<tr>
|
||||
<td>
|
||||
<%= text_field_tag 'filters[name]', session[:m_filters][:name], placeholder: 'name',
|
||||
onblur: '$("#filters-form").submit(); return false;' %>
|
||||
<%= text_field_tag 'name', session[:m_filters][:name], placeholder: 'name' %>
|
||||
</td>
|
||||
<td style="width:100%;">
|
||||
<%= text_field_tag 'filters[formula][code]', session[:m_filters][:formula][:code],
|
||||
<%= text_field_tag 'formula[code]', session[:m_filters][:formula][:code],
|
||||
placeholder: 'conditional expression including readouts', size: 40,
|
||||
style: 'box-sizing:border-box; width:100%;',
|
||||
onblur: '$("#filters-form").submit(); return false;' %>
|
||||
style: 'box-sizing:border-box; width:100%;' %>
|
||||
</td>
|
||||
<td>
|
||||
<%= link_to l(:button_apply), '#', class: "icon icon-checked",
|
||||
@ -32,8 +30,7 @@
|
||||
<td></td>
|
||||
<td style="padding-top:4px;">
|
||||
<%= label_tag do %>
|
||||
<%= check_box_tag 'filters[formula][zero_nil]',
|
||||
session[:m_filters][:formula][:zero_nil] %>
|
||||
<%= check_box_tag 'formula[zero_nil]', session[:m_filters][:formula][:zero_nil] %>
|
||||
<%= t 'quantities.form.zero_nil' %>
|
||||
<% end %>
|
||||
</td>
|
||||
@ -41,6 +38,7 @@
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<%= submit_tag '', style: 'display:none;' %>
|
||||
<% end %>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
@ -23,8 +23,8 @@ module BodyTracking
|
||||
project = proxy_association.owner
|
||||
domain = QUANTITY_DOMAINS[proxy_association.klass]
|
||||
formula_q = if filters[:formula].present?
|
||||
project.quantities.new(name: '__internal_q',
|
||||
formula: filters[:formula],
|
||||
project.quantities.new(name: 'Filter formula',
|
||||
formula_attributes: filters[:formula],
|
||||
domain: domain)
|
||||
end
|
||||
apply_formula = formula_q.present? && formula_q.valid?
|
||||
@ -89,7 +89,7 @@ module BodyTracking
|
||||
begin
|
||||
calculated = q.formula.calculate(inputs.to_h)
|
||||
rescue Exception => e
|
||||
output_ids.each { |oid| subitems[q.name][oid] = BigDecimal::NAN }
|
||||
output_ids.each { |oid| subitems[q.name][oid] = [BigDecimal::NAN, nil] }
|
||||
q.formula.errors.add(:code, :computation_failed,
|
||||
{quantity: q.name, description: e.message, count: output_ids.size})
|
||||
else
|
||||
|
Reference in New Issue
Block a user