From 75930b99c3784478d6ad0de627a86e5b8a6dbf4f Mon Sep 17 00:00:00 2001 From: aignatov-bio Date: Mon, 20 Jul 2020 15:01:00 +0200 Subject: [PATCH] Fix global activities filters --- app/assets/javascripts/global_activities/side_pane.js | 2 +- app/controllers/global_activities_controller.rb | 2 +- app/services/activities_service.rb | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/global_activities/side_pane.js b/app/assets/javascripts/global_activities/side_pane.js index ef286ccfd..c2e02c157 100644 --- a/app/assets/javascripts/global_activities/side_pane.js +++ b/app/assets/javascripts/global_activities/side_pane.js @@ -57,7 +57,7 @@ var globalActivities = (function() { Project: convertToInt(dropdownSelector.getValues(projectFilter) || []), Experiment: convertToInt(dropdownSelector.getValues(experimentFilter) || []), MyModule: convertToInt(dropdownSelector.getValues(taskFilter) || []), - Repository: convertToInt(dropdownSelector.getValues(inventoryFilter) || []), + RepositoryBase: convertToInt(dropdownSelector.getValues(inventoryFilter) || []), RepositoryRow: convertToInt(dropdownSelector.getValues(inventoryItemFilter) || []), Protocol: convertToInt(dropdownSelector.getValues(protocolFilter) || []), Report: convertToInt(dropdownSelector.getValues(reportFilter) || []) diff --git a/app/controllers/global_activities_controller.rb b/app/controllers/global_activities_controller.rb index a52d40e2a..a0b79c68b 100644 --- a/app/controllers/global_activities_controller.rb +++ b/app/controllers/global_activities_controller.rb @@ -132,7 +132,7 @@ class GlobalActivitiesController < ApplicationController selected_subject = subject_search_params[:subjects] matched = matched.where(project_id: selected_subject['Project']) if subject == Experiment matched = matched.where(experiment_id: selected_subject['Experiment']) if subject == MyModule - matched = matched.where(repository_id: selected_subject['Repository']) if subject == RepositoryRow + matched = matched.where(repository_id: selected_subject['RepositoryBase']) if subject == RepositoryRow matched = matched.limit(Constants::SEARCH_LIMIT).pluck(:id, :name) matched.map { |pr| { value: pr[0], label: escape_input(pr[1]) } } diff --git a/app/services/activities_service.rb b/app/services/activities_service.rb index add2401e7..5ff3244ac 100644 --- a/app/services/activities_service.rb +++ b/app/services/activities_service.rb @@ -14,9 +14,9 @@ class ActivitiesService if filters[:subjects].present? subjects_with_children = load_subjects_children(filters[:subjects]) - if subjects_with_children[:project] - query = query.where('project_id IN (?)', subjects_with_children[:project]) - subjects_with_children.except!(:project) + if subjects_with_children['Project'] + query = query.where('project_id IN (?)', subjects_with_children['Project']) + subjects_with_children.except!('Project') end where_condition = subjects_with_children.map { '(subject_type = ? AND subject_id IN(?))' }.join(' OR ') where_arguments = subjects_with_children.flatten @@ -50,10 +50,11 @@ class ActivitiesService def self.load_subjects_children(subjects = {}) Extends::ACTIVITY_SUBJECT_CHILDREN.each do |subject_name, children| + subject_name = subject_name.to_s.camelize next unless children && subjects[subject_name] children.each do |child| - parent_model = subject_name.to_s.camelize.constantize + parent_model = subject_name.constantize child_model = parent_model.reflect_on_association(child).class_name.to_sym next if subjects[child_model]