From 72f496b966f872a4b97789d996213a4549d69b8e Mon Sep 17 00:00:00 2001 From: wandji20 Date: Fri, 29 Mar 2024 08:47:42 +0100 Subject: [PATCH] Add task to global search page [SCI-10472] --- app/controllers/search_controller.rb | 17 ++++++- .../vue/global_search/groups/my_modules.vue | 51 ++++++++++++++++++- .../global_search/my_module_serializer.rb | 35 +++++++++++++ 3 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 app/serializers/global_search/my_module_serializer.rb diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 7ad0248e2..ad380dddf 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -72,6 +72,21 @@ class SearchController < ApplicationController next_page: results.try(:next_page) } return + when 'tasks' + @module_search_count = fetch_cached_count MyModule + search_modules + results = if params[:preview] == 'true' + @module_results.limit(Constants::GLOBAL_SEARCH_PREVIEW_LIMIT) + else + @module_results.page(params[:page]).per(Constants::SEARCH_LIMIT) + end + render json: results.includes(experiment: { project: :team }), + each_serializer: GlobalSearch::MyModuleSerializer, + meta: { + total: @search_count, + next_page: results.try(:next_page) + } + return when 'protocols' @protocol_search_count = fetch_cached_count(Protocol) search_protocols @@ -380,7 +395,7 @@ class SearchController < ApplicationController end def search_modules - @module_results = [] + @module_results = MyModule.none @module_results = search_by_name(MyModule) if @module_search_count.positive? @search_count = @module_search_count end diff --git a/app/javascript/vue/global_search/groups/my_modules.vue b/app/javascript/vue/global_search/groups/my_modules.vue index 393a825ea..35209bb0b 100644 --- a/app/javascript/vue/global_search/groups/my_modules.vue +++ b/app/javascript/vue/global_search/groups/my_modules.vue @@ -1,14 +1,61 @@ diff --git a/app/serializers/global_search/my_module_serializer.rb b/app/serializers/global_search/my_module_serializer.rb new file mode 100644 index 000000000..c3089ab5e --- /dev/null +++ b/app/serializers/global_search/my_module_serializer.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module GlobalSearch + class MyModuleSerializer < ActiveModel::Serializer + include Rails.application.routes.url_helpers + + attributes :id, :name, :code, :created_at, :updated_at, :team, :experiment, :archived, :url + + def team + { + name: object.experiment.project.team.name, + url: projects_path(team_id: object.experiment.project.team.id) + } + end + + def experiment + { + name: object.experiment.name, + url: my_modules_experiment_path(object.experiment.id) + } + end + + def created_at + I18n.l(object.created_at, format: :full_date) + end + + def updated_at + I18n.l(object.updated_at, format: :full_date) + end + + def url + protocols_my_module_path(object.id) + end + end +end