From 3b513fc72688369c79d76141adeb620abdb1d1fd Mon Sep 17 00:00:00 2001 From: Jose Farias Date: Mon, 11 Nov 2024 15:40:10 -0600 Subject: [PATCH] Wire up search --- app/controllers/bubbles_controller.rb | 5 ++++- app/helpers/filters_helper.rb | 14 +++++++++++--- app/views/bubbles/_filters.html.erb | 11 ++++++----- app/views/bubbles/index.html.erb | 2 +- app/views/filter_buttons/create.turbo_stream.erb | 4 +++- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/controllers/bubbles_controller.rb b/app/controllers/bubbles_controller.rb index 7765be897..97cc84a2a 100644 --- a/app/controllers/bubbles_controller.rb +++ b/app/controllers/bubbles_controller.rb @@ -8,7 +8,10 @@ class BubblesController < ApplicationController def index @bubbles = @filter.bubbles - @bubbles = @bubbles.mentioning(params[:term]) if params[:term].present? + + Array.wrap(params[:terms]).each do |term| + @bubbles = @bubbles.mentioning(term) + end end def create diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index f2f224dd6..ef458cb44 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -3,10 +3,16 @@ module FiltersHelper "#{name}_filter--#{value}" end - def filter_buttons(filter, **) - filter.to_h.map do |kind, object| + def filter_buttons(filter, terms, **) + filters = filter.to_h.map do |kind, object| filter_button_from kind, object, ** - end.join.html_safe + end + + terms = Array.wrap(terms).map do |term| + filter_button_from :terms, term, ** + end + + safe_join filters + terms end def filter_button_tag(display:, value:, name:, **options) @@ -50,6 +56,8 @@ module FiltersHelper [ object.humanize, object, "indexed_by" ] when :assignments [ object.humanize, object, "assignments" ] + when :terms + [ %Q("#{object}"), object, "terms[]" ] end.then do |display, value, name| { display: display, value: value, name: name } end diff --git a/app/views/bubbles/_filters.html.erb b/app/views/bubbles/_filters.html.erb index f5233e139..e64765602 100644 --- a/app/views/bubbles/_filters.html.erb +++ b/app/views/bubbles/_filters.html.erb @@ -10,7 +10,7 @@ <%= form_with url: bubbles_path, method: :get, class: "flex-inline center align-center gap-half", data: { controller: "form" } do %> - <%= filter_buttons filter %> + <%= filter_buttons filter, terms %> <% end %> @@ -38,18 +38,19 @@ <%= form_with url: bubbles_path, id: :filter_form, method: :get, class: "flex-inline center align-center gap-half" do %> - <%= filter_buttons filter, class: "fill-selected" %> + <%= filter_buttons filter, terms, class: "fill-selected" %> <% end %> -
- + <%= form_with url: filter_buttons_path, method: :post, class: "flex gap flex-item-grow align-center justify-center full-width center margin-block" do %> + <%= hidden_field_tag :name, "terms[]" %> + -
+ <% end %>
diff --git a/app/views/bubbles/index.html.erb b/app/views/bubbles/index.html.erb index 406a1960d..9065ff749 100644 --- a/app/views/bubbles/index.html.erb +++ b/app/views/bubbles/index.html.erb @@ -8,7 +8,7 @@ <% end %>
- <%= render "bubbles/filters", filter: @filter %> + <%= render "bubbles/filters", filter: @filter, terms: params[:terms] %>
<% if @filter.buckets.any? %> diff --git a/app/views/filter_buttons/create.turbo_stream.erb b/app/views/filter_buttons/create.turbo_stream.erb index 0a242797e..b7546c382 100644 --- a/app/views/filter_buttons/create.turbo_stream.erb +++ b/app/views/filter_buttons/create.turbo_stream.erb @@ -1,4 +1,6 @@ <%= turbo_stream.remove filter_button_id(params[:value], params[:name]) %> + <%= turbo_stream.append :filter_form do %> - <%= filter_button_tag display: params[:display], value: params[:value], name: params[:name], class: "fill-selected" %> + <%= filter_button_tag display: params[:display] || %Q("#{params[:value]}"), + value: params[:value], name: params[:name], class: "fill-selected" %> <% end %>