From 9d60eee16b908e82d5d361e3d19ef6c93e94bf84 Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Wed, 22 Jan 2025 16:03:26 +0100 Subject: [PATCH] Add Measurements tab and #new form --- .../pictograms/plus-multiple-outline.svg | 1 + .../images/pictograms/scale-bathroom.svg | 1 + app/assets/stylesheets/application.css | 32 ++++++++++--------- app/controllers/measurements_controller.rb | 14 ++++++++ app/helpers/application_helper.rb | 6 ++++ app/helpers/measurements_helper.rb | 2 ++ app/views/layouts/application.html.erb | 2 +- app/views/measurements/index.html.erb | 16 ++++++++++ config/locales/en.yml | 6 ++++ config/routes.rb | 2 ++ .../measurements_controller_test.rb | 8 +++++ 11 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 app/assets/images/pictograms/plus-multiple-outline.svg create mode 100644 app/assets/images/pictograms/scale-bathroom.svg create mode 100644 app/controllers/measurements_controller.rb create mode 100644 app/helpers/measurements_helper.rb create mode 100644 app/views/measurements/index.html.erb create mode 100644 test/controllers/measurements_controller_test.rb diff --git a/app/assets/images/pictograms/plus-multiple-outline.svg b/app/assets/images/pictograms/plus-multiple-outline.svg new file mode 100644 index 0000000..0e1452e --- /dev/null +++ b/app/assets/images/pictograms/plus-multiple-outline.svg @@ -0,0 +1 @@ + diff --git a/app/assets/images/pictograms/scale-bathroom.svg b/app/assets/images/pictograms/scale-bathroom.svg new file mode 100644 index 0000000..93458bf --- /dev/null +++ b/app/assets/images/pictograms/scale-bathroom.svg @@ -0,0 +1 @@ + diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index a99390e..ef20958 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -200,9 +200,7 @@ textarea:read-only { } -.header { - display: flex; - gap: 0.8em; +header { grid-area: header; } @@ -243,6 +241,18 @@ textarea:read-only { } +.buttongrid { + display: grid; + gap: 0.4em; + grid-template-areas: "context empty tools"; + grid-template-columns: auto 1fr auto; + grid-template-rows: max-content; +} +.tools { + grid-area: tools; +} + + #flashes { display: grid; gap: 0.2em; @@ -502,6 +512,10 @@ table.items select:focus-visible { .extendedright { margin-right: auto; } +.htoolbox { + display: flex; + gap: 0.8em; +} [disabled] { border-color: var(--color-border-gray) !important; color: var(--color-border-gray) !important; @@ -512,15 +526,3 @@ table.items select:focus-visible { .unwrappable { white-space: nowrap; } - - -.buttongrid { - display: grid; - gap: 0.4em; - grid-template-areas: "context empty tools"; - grid-template-columns: auto 1fr auto; - grid-template-rows: max-content; -} -.tools { - grid-area: tools; -} diff --git a/app/controllers/measurements_controller.rb b/app/controllers/measurements_controller.rb new file mode 100644 index 0000000..1980b22 --- /dev/null +++ b/app/controllers/measurements_controller.rb @@ -0,0 +1,14 @@ +class MeasurementsController < ApplicationController + def index + @quantities = current_user.quantities.ordered + end + + def new + end + + def create + end + + def destroy + end +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c5a0bd5..bdd8e8f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -125,6 +125,7 @@ module ApplicationHelper def navigation_menu menu_tabs = [ + ['measurements', 'scale-bathroom', :restricted], ['quantities', 'axis-arrow', :restricted, 'right'], ['units', 'weight-gram', :restricted], ['users', 'account-multiple-outline', :admin], @@ -144,6 +145,11 @@ module ApplicationHelper button_to name, options, html_options end + def image_button_tag(name, image = nil, html_options = {}) + name, html_options = link_or_button_options(:button, name, image, html_options) + button_tag name, html_options + end + def image_link_to(name, image = nil, options = nil, html_options = {}) name, html_options = link_or_button_options(:link, name, image, html_options) link_to name, options, html_options diff --git a/app/helpers/measurements_helper.rb b/app/helpers/measurements_helper.rb new file mode 100644 index 0000000..cb642a9 --- /dev/null +++ b/app/helpers/measurements_helper.rb @@ -0,0 +1,2 @@ +module MeasurementsHelper +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 04665b2..2e89934 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -23,7 +23,7 @@ -
+
<%= image_link_to t(".source_code"), "code-braces", source_code_url %> <%= image_link_to t(".issue_tracker"), "bug-outline", issue_tracker_url, class: "extendedright" %> diff --git a/app/views/measurements/index.html.erb b/app/views/measurements/index.html.erb new file mode 100644 index 0000000..165101b --- /dev/null +++ b/app/views/measurements/index.html.erb @@ -0,0 +1,16 @@ +
+ <% if current_user.at_least(:active) %> + <%# TODO: show hint when no quantities/units defined %> + <%= form_tag new_measurement_path, method: :get, class: "htoolbox", + data: {turbo_stream: true} do %> + <%= select_tag :id, + options_from_collection_for_select(@quantities, :id, + ->(q) { sanitize('- '*q.depth + q.name) }) %> + <%= image_button_tag t('.new_quantity'), 'plus-outline', name: :scope -%> + <%= image_button_tag t('.new_children'), 'plus-multiple-outline', name: :scope, + value: :children -%> + <%= image_button_tag t('.new_subtree'), 'plus-multiple-outline', name: :scope, + value: :subtree -%> + <% end %> + <% end %> +
diff --git a/config/locales/en.yml b/config/locales/en.yml index 73e34cb..7ad730d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -62,6 +62,12 @@ en: revert: Revert sign_out: Sign out source_code: Get code + measurements: + navigation: Measurements + index: + new_quantity: Add selected + new_children: Add children + new_subtree: Add subtree quantities: navigation: Quantities no_items: There are no configured quantities. You can Add some or Import from defaults. diff --git a/config/routes.rb b/config/routes.rb index 25aa414..7d97b26 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,6 @@ Rails.application.routes.draw do + resources :measurements + resources :quantities, except: [:show], path_names: {new: '(/:id)/new'} do member { post :reparent } end diff --git a/test/controllers/measurements_controller_test.rb b/test/controllers/measurements_controller_test.rb new file mode 100644 index 0000000..025e77e --- /dev/null +++ b/test/controllers/measurements_controller_test.rb @@ -0,0 +1,8 @@ +require "test_helper" + +class MeasurementsControllerTest < ActionDispatch::IntegrationTest + #test "should get index" do + # get measurements_index_url + # assert_response :success + #end +end