From d6fe0d919c8c933053236a2a9dc9b34768f10a6d Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Wed, 20 Aug 2025 12:20:18 +0200 Subject: [PATCH] =?UTF-8?q?Reorganize=20=C6=92ilter's=20menu=20templates?= =?UTF-8?q?=20(WIP)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/concerns/filter_scoped.rb | 5 ++ app/controllers/events_controller.rb | 1 - app/helpers/filters_helper.rb | 1 + app/models/user/filtering.rb | 25 +++++++++ .../filter/_all_collections_option.html.erb | 12 ++--- app/views/events/index.html.erb | 2 +- app/views/filters/_menu.html.erb | 23 ++++++++ app/views/filters/_settings.html.erb | 4 +- app/views/filters/menu/_button.html.erb | 19 +++++++ app/views/filters/menu/_collections.html.erb | 12 +++++ app/views/filters/menu/_custom.html.erb | 6 +++ app/views/filters/menu/_header.html.erb | 37 +++++++++++++ app/views/filters/menu/_places.html.erb | 52 +++++++++++++++++++ .../filters/menu/_shortcut_notice.html.erb | 5 ++ app/views/filters/menu/_tags.html.erb | 5 ++ app/views/filters/menu/_users.html.erb | 4 ++ .../menu/collections/_all_option.html.erb | 23 ++++++++ .../menu/collections/_collection.html.erb | 19 +++++++ .../filters/menu/custom/_create.html.erb | 9 ++++ .../filters/menu/custom/_filter.html.erb | 10 ++++ app/views/filters/menu/tags/_tag.html.erb | 7 +++ app/views/filters/menu/users/_user.html.erb | 7 +++ 22 files changed, 277 insertions(+), 11 deletions(-) create mode 100644 app/models/user/filtering.rb create mode 100644 app/views/filters/_menu.html.erb create mode 100644 app/views/filters/menu/_button.html.erb create mode 100644 app/views/filters/menu/_collections.html.erb create mode 100644 app/views/filters/menu/_custom.html.erb create mode 100644 app/views/filters/menu/_header.html.erb create mode 100644 app/views/filters/menu/_places.html.erb create mode 100644 app/views/filters/menu/_shortcut_notice.html.erb create mode 100644 app/views/filters/menu/_tags.html.erb create mode 100644 app/views/filters/menu/_users.html.erb create mode 100644 app/views/filters/menu/collections/_all_option.html.erb create mode 100644 app/views/filters/menu/collections/_collection.html.erb create mode 100644 app/views/filters/menu/custom/_create.html.erb create mode 100644 app/views/filters/menu/custom/_filter.html.erb create mode 100644 app/views/filters/menu/tags/_tag.html.erb create mode 100644 app/views/filters/menu/users/_user.html.erb diff --git a/app/controllers/concerns/filter_scoped.rb b/app/controllers/concerns/filter_scoped.rb index 3d5f1fc91..c75c0fc96 100644 --- a/app/controllers/concerns/filter_scoped.rb +++ b/app/controllers/concerns/filter_scoped.rb @@ -3,6 +3,7 @@ module FilterScoped included do before_action :set_filter + before_action :set_user_filtering end private @@ -16,4 +17,8 @@ module FilterScoped @filter = Current.user.filters.from_params params.reverse_merge(**DEFAULT_PARAMS).permit(*Filter::PERMITTED_PARAMS) end end + + def set_user_filtering + @user_filtering = User::Filtering.new(Current.user, @filter) + end end diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index ee040c720..1340def1d 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -2,6 +2,5 @@ class EventsController < ApplicationController include DayTimelinesScoped def index - @filters = Current.user.filters.all end end diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 08fb73b16..9fb4bf7ac 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -21,6 +21,7 @@ module FiltersHelper hidden_field_tag name, value, id: nil end + # TODO: REMOVE def filter_selected_collections_sentence(filter) if filter.collections.any? filter.collections.collect { "#{it.name}" }.uniq.sort.to_sentence diff --git a/app/models/user/filtering.rb b/app/models/user/filtering.rb new file mode 100644 index 000000000..e52cea178 --- /dev/null +++ b/app/models/user/filtering.rb @@ -0,0 +1,25 @@ +class User::Filtering + attr_reader :user, :filter + + delegate :as_params, to: :filter + + def initialize(user, filter) + @user, @filter = user, filter + end + + def collections + @collections ||= user.collections.ordered_by_recently_accessed + end + + def tags + Tag.all.alphabetically + end + + def users + User.active.alphabetically + end + + def filters + @filters ||= Current.user.filters.all + end +end diff --git a/app/views/events/filter/_all_collections_option.html.erb b/app/views/events/filter/_all_collections_option.html.erb index 961fad266..37e96d800 100644 --- a/app/views/events/filter/_all_collections_option.html.erb +++ b/app/views/events/filter/_all_collections_option.html.erb @@ -1,13 +1,13 @@ -<% if Current.user.collections.one? %> - <%= link_to cards_path(filter.as_params.except(:collection_ids)), class: "popup__group", data: { filter_target: "item", navigable_list_target: "item" } do %> +<% if user_filtering.collections.one? %> + <%= link_to route_for(filter.as_params.except(:collection_ids)), class: "popup__group", data: { filter_target: "item", navigable_list_target: "item" } do %> <%= tag.div class: "popup__item btn" do %> - <%= Current.user.collections.first.name %> + <%= user_filtering.collections.first.name %> GO TO <% end %> <% end %> -<% elsif Current.user.collections.many? %> +<% elsif user_filtering.collections.many? %>