From da11c0f6266a1c39c66f1854cfcf56de949ecc49 Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Wed, 29 Apr 2020 22:26:48 +0200 Subject: [PATCH] Restyled quantity header Exposure close button removed, toggling only from select --- app/controllers/meals_controller.rb | 7 ++++--- app/helpers/body_trackers_helper.rb | 14 +++++++++----- app/views/meals/_index.html.erb | 24 ++++++++++++++---------- app/views/meals/_options.html.erb | 2 +- assets/stylesheets/body_tracking.css | 9 ++++++++- config/locales/en.yml | 4 ++++ 6 files changed, 40 insertions(+), 20 deletions(-) diff --git a/app/controllers/meals_controller.rb b/app/controllers/meals_controller.rb index 915f6ff..a7de62d 100644 --- a/app/controllers/meals_controller.rb +++ b/app/controllers/meals_controller.rb @@ -92,9 +92,10 @@ class MealsController < ApplicationController [i, [n_amount && n_amount * i.amount / i.food.ref_amount, n_unit]] end.to_h max_value = @nutrients[q].values.max_by { |a, u| a || 0 }.first - @nutrients[q][:mfu_unit] = @nutrients[q].values.map(&:last) - .each_with_object(Hash.new(0)) { |u, h| h[u] += 1 }.max_by(&:last).first - @nutrients[q][:precision] = [3 - max_value.exponent, 0].max + + @nutrients[q][:mfu_unit] = @nutrients[q] + .each_with_object(Hash.new(0)) { |(i, v), h| h[v.last] += 1 }.max_by(&:last).first + @nutrients[q][:precision] = max_value && [3 - max_value.exponent, 0].max end @meals_by_date = @project.meals.reject { |m,*| m.new_record? } diff --git a/app/helpers/body_trackers_helper.rb b/app/helpers/body_trackers_helper.rb index 9e47de2..bcd85cd 100644 --- a/app/helpers/body_trackers_helper.rb +++ b/app/helpers/body_trackers_helper.rb @@ -19,13 +19,17 @@ module BodyTrackersHelper end def toggle_exposure_options(enabled, domain) - disabled = [] - enabled = enabled.to_a - options = nested_set_options(@project.quantities.send(domain)) do |q| - disabled << q.id if enabled.include?(q) + enabled = enabled.map { |q| [q.name, q.id] } + enabled_ids = enabled.map(&:last) + + options = [[t('body_trackers.helpers.exposures_available'), 0]] + options += nested_set_options(@project.quantities.send(domain)) do |q| raw("#{' ' * q.level}#{q.name}") end - options_for_select(options, disabled: disabled) + options.collect! { |name, id| [name, enabled_ids.include?(id) ? 0 : id] } + + options = [[t('body_trackers.helpers.exposures_enabled'), 0]] + enabled + options + options_for_select(options, disabled: 0) end def unit_options diff --git a/app/views/meals/_index.html.erb b/app/views/meals/_index.html.erb index 0548736..d3c2755 100644 --- a/app/views/meals/_index.html.erb +++ b/app/views/meals/_index.html.erb @@ -10,23 +10,27 @@ <% total_width = 4 + @quantities.length %> <% @meals_by_date.reverse_each do |date, meals| %> - +

<%= date == Date.current ? 'Today' : date.strftime('%F') %>

- + <%= l(:field_amount) %> <% @quantities.each do |q| %> - -
- <%= link_to '', - toggle_exposure_project_meals_path(@project, quantity_id: q.id), - {class: "icon icon-close", method: :post, remote: true} %> -
- <%= q.name %> + + <%= q.name %> + + <% end %> + + + + <% @quantities.each do |q| %> + + <% mfu_unit = @nutrients[q][:mfu_unit] %> + <%= "[#{ mfu_unit ? mfu_unit.shortname : '-'}]" %> <% end %> - <% meals.each_with_index do |m, index| %> diff --git a/app/views/meals/_options.html.erb b/app/views/meals/_options.html.erb index 06d0496..897f000 100644 --- a/app/views/meals/_options.html.erb +++ b/app/views/meals/_options.html.erb @@ -10,7 +10,7 @@ <%= select_tag 'quantity_id', toggle_exposure_options(@project.meal_quantities, :diet) %> - <%= submit_tag l(:button_add) %> + <%= submit_tag l(:button_toggle) %> <% end %> diff --git a/assets/stylesheets/body_tracking.css b/assets/stylesheets/body_tracking.css index db79efb..b33ed55 100644 --- a/assets/stylesheets/body_tracking.css +++ b/assets/stylesheets/body_tracking.css @@ -5,11 +5,18 @@ table.list tr.food.hidden {opacity: 0.4} table.list .date, table.list .name, table.list .quantity {text-align: left;} +/* TODO: merge with .closable */ +table.list .quantityhead { + text-align: center; + vertical-align: bottom; + position: relative; + padding: 2px 0; +} table.list .action, table.list .value {text-align: right;} -table.list th.closable {padding-right: 0;} +table.list .closable {padding-right: 0;} table.list .unwrappable {white-space: nowrap;} table.list .ellipsible { overflow: hidden; diff --git a/config/locales/en.yml b/config/locales/en.yml index 2e0670d..b304df1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -23,6 +23,7 @@ en: button_notes: 'Notes' button_retake: 'Retake' button_child: 'Child' + button_toggle: 'Toggle' activerecord: errors: models: @@ -56,6 +57,9 @@ en: body_trackers: index: heading: 'Summary' + helpers: + exposures_enabled: '--- enabled ---' + exposures_available: '--- available ---' layouts: sidebar: heading_body_trackers: 'Body trackers'