diff --git a/app/services/lists/experiments_service.rb b/app/services/lists/experiments_service.rb index 88cb71ad2..8a6209cd4 100644 --- a/app/services/lists/experiments_service.rb +++ b/app/services/lists/experiments_service.rb @@ -75,7 +75,10 @@ module Lists created_at: 'experiments.created_at', name: 'experiments.name', code: 'experiments.id', - archived_on: 'COALESCE(experiments.archived_on, projects.archived_on)' + archived_on: 'COALESCE(experiments.archived_on, projects.archived_on)', + updated_at: 'experiments.updated_at', + total_tasks: 'task_count', + description: 'experiments.description' } end end diff --git a/app/services/lists/my_modules_service.rb b/app/services/lists/my_modules_service.rb index 28fcf74a0..b6018b721 100644 --- a/app/services/lists/my_modules_service.rb +++ b/app/services/lists/my_modules_service.rb @@ -44,7 +44,13 @@ module Lists due_date: 'due_date', name: 'name', id: 'id', - archived_on: 'archived_on' + archived_on: 'archived_on', + age: 'age', + status: 'status', + designated: 'designated', + results: 'results', + tags: 'tags', + signatures: 'signatures' } end @@ -70,6 +76,40 @@ module Lists @records = @records.order(Arel.sql('COALESCE(my_modules.archived_on, my_modules.archived_on) ASC')) when 'archived_on_DESC' @records = @records.order(Arel.sql('COALESCE(my_modules.archived_on, my_modules.archived_on) DESC')) + when 'age_ASC' + @records = @records.order(:created_at) + when 'age_DESC' + @records = @records.order(created_at: :desc) + when 'status_ASC' + @records = @records.order(:my_module_status_id) + when 'status_DESC' + @records = @records.order(my_module_status_id: :desc) + when 'designated_ASC' + @records = @records.left_joins(:user_my_modules) + .group('my_modules.id') + .order(Arel.sql('COUNT(DISTINCT user_my_modules.id) ASC')) + when 'designated_DESC' + @records = @records.left_joins(:user_my_modules) + .group('my_modules.id') + .order(Arel.sql('COUNT(DISTINCT user_my_modules.id) DESC')) + when 'results_ASC' + @records = @records.left_joins(:results) + .group('my_modules.id') + .order(Arel.sql('COUNT(DISTINCT results.id) ASC')) + when 'results_DESC' + @records = @records.left_joins(:results) + .group('my_modules.id') + .order(Arel.sql('COUNT(DISTINCT results.id) DESC')) + when 'tags_ASC' + @records = @records.left_joins(:tags) + .group('my_modules.id') + .order(Arel.sql('COUNT(DISTINCT tags.id) ASC')) + when 'tags_DESC' + @records = @records.left_joins(:tags) + .group('my_modules.id') + .order(Arel.sql('COUNT(DISTINCT tags.id) DESC')) + else + __send__("#{sortable_columns[order_params[:column].to_sym]}_sort", sort_direction(order_params)) end end diff --git a/app/services/lists/projects_service.rb b/app/services/lists/projects_service.rb index a780151de..598ba0afa 100644 --- a/app/services/lists/projects_service.rb +++ b/app/services/lists/projects_service.rb @@ -115,6 +115,10 @@ module Lists @records = @records.sort_by(&:archived_on) when 'archived_on_DESC' @records = @records.sort_by(&:archived_on).reverse! + when 'users_ASC' + @records = @records.sort_by { |project| project.users.count } + when 'users_DESC' + @records = @records.sort_by { |project| project.users.count }.reverse! end end