From bb861af1704a9005de2c9f3c81a4c9ac514cebe3 Mon Sep 17 00:00:00 2001 From: Space Date: Fri, 7 Nov 2025 05:49:53 +0000 Subject: [PATCH] Add param checks on load (#591) --- app/controllers/static_pages_controller.rb | 15 + .../_filterable_dashboard.html.erb | 711 ++++++++---------- .../_filterable_dashboard_content.html.erb | 2 +- 3 files changed, 344 insertions(+), 384 deletions(-) diff --git a/app/controllers/static_pages_controller.rb b/app/controllers/static_pages_controller.rb index 1cc3a2c..8ae84ca 100644 --- a/app/controllers/static_pages_controller.rb +++ b/app/controllers/static_pages_controller.rb @@ -262,6 +262,21 @@ class StaticPagesController < ApplicationController cache_key << params[filter] end + def dashboard + @project = Project.distinct.pluck(:name) + @language = Language.distinct.pluck(:name) + @operating_system = OperatingSystem.distinct.pluck(:name) + @editor = Editor.distinct.pluck(:name) + @category = Category.distinct.pluck(:name) + + # Parse filter selections from params for initial load and deep-linking + @selected_project = params[:project]&.split(",") || [] + @selected_language = params[:language]&.split(",") || [] + @selected_operating_system = params[:operating_system]&.split(",") || [] + @selected_editor = params[:editor]&.split(",") || [] + @selected_category = params[:category]&.split(",") || [] + end + filtered_heartbeats = current_user.heartbeats # Load filter options and apply filters with caching Rails.cache.fetch(cache_key, expires_in: 5.minutes) do diff --git a/app/views/static_pages/_filterable_dashboard.html.erb b/app/views/static_pages/_filterable_dashboard.html.erb index 18096d9..54608fe 100644 --- a/app/views/static_pages/_filterable_dashboard.html.erb +++ b/app/views/static_pages/_filterable_dashboard.html.erb @@ -1,410 +1,355 @@ <%= turbo_frame_tag "filterable_dashboard" do %> -
-
- <%= render partial: 'shared/multi_select', locals: { - label: 'Project', - param: 'project', - values: @project, - selected: params[:project] - } %> +
+
+ <%= render partial: "shared/multi_select", locals: { + label: "Project", + param: "project", + values: @project, + selected: @selected_project + } %> - <%= render partial: 'shared/multi_select', locals: { - label: 'Language', - param: 'language', - values: @language, - selected: params[:language] - } %> + <%= render partial: "shared/multi_select", locals: { + label: "Language", + param: "language", + values: @language, + selected: @selected_language + } %> - <%= render partial: 'shared/multi_select', locals: { - label: 'OS', - param: 'operating_system', - values: @operating_system, - selected: params[:operating_system] - } %> + <%= render partial: "shared/multi_select", locals: { + label: "OS", + param: "operating_system", + values: @operating_system, + selected: @selected_operating_system + } %> - <%= render partial: 'shared/multi_select', locals: { - label: 'Editor', - param: 'editor', - values: @editor, - selected: params[:editor] - } %> + <%= render partial: "shared/multi_select", locals: { + label: "Editor", + param: "editor", + values: @editor, + selected: @selected_editor + } %> - <%= render partial: 'shared/multi_select', locals: { - label: 'Category', - param: 'category', - values: @category, - selected: params[:category] - } %> -
+ <%= render partial: "shared/multi_select", locals: { + label: "Category", + param: "category", + values: @category, + selected: @selected_category + } %> +
- <%= render partial: 'filterable_dashboard_content' %> + <%= render partial: "filterable_dashboard_content" %>
- -<% end %> +<% end %> \ No newline at end of file diff --git a/app/views/static_pages/_filterable_dashboard_content.html.erb b/app/views/static_pages/_filterable_dashboard_content.html.erb index 2920146..ce042f4 100644 --- a/app/views/static_pages/_filterable_dashboard_content.html.erb +++ b/app/views/static_pages/_filterable_dashboard_content.html.erb @@ -129,7 +129,7 @@ <% end %>
-

Project Timeline

+

Project Timeline