From a164eec850a9bb5aac413e4561044e4990da38b8 Mon Sep 17 00:00:00 2001 From: Giga Chubinidze Date: Fri, 9 Feb 2024 03:32:43 +0400 Subject: [PATCH 1/5] Implement sorting on all columns of tables revamped in v.1 [SCI-10100] --- app/javascript/vue/experiments/list.vue | 6 +++--- app/javascript/vue/my_modules/list.vue | 10 +++++----- app/javascript/vue/projects/list.vue | 2 +- app/javascript/vue/repositories/table.vue | 5 +++++ app/serializers/lists/repository_serializer.rb | 2 +- app/services/lists/repositories_service.rb | 4 +++- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/javascript/vue/experiments/list.vue b/app/javascript/vue/experiments/list.vue index 2a12a44a8..5b9d06fd8 100644 --- a/app/javascript/vue/experiments/list.vue +++ b/app/javascript/vue/experiments/list.vue @@ -127,7 +127,7 @@ export default { { field: 'updated_at', headerName: this.i18n.t('experiments.card.modified_date'), - sortable: false + sortable: true } ]; @@ -143,13 +143,13 @@ export default { field: 'total_tasks', headerName: this.i18n.t('experiments.card.completed_task'), cellRenderer: CompletedTasksRenderer, - sortable: false, + sortable: true, minWidth: 120 }); columns.push({ field: 'description', headerName: this.i18n.t('experiments.card.description'), - sortable: false, + sortable: true, cellStyle: { 'white-space': 'normal' }, cellRenderer: DescriptionRenderer, autoHeight: true diff --git a/app/javascript/vue/my_modules/list.vue b/app/javascript/vue/my_modules/list.vue index 835195161..f2e6be22a 100644 --- a/app/javascript/vue/my_modules/list.vue +++ b/app/javascript/vue/my_modules/list.vue @@ -124,18 +124,18 @@ export default { { field: 'results', headerName: this.i18n.t('experiments.table.column.results_html'), - sortable: false, + sortable: true, cellRenderer: this.resultsRenderer }, { field: 'age', headerName: this.i18n.t('experiments.table.column.age_html'), - sortable: false + sortable: true }, { field: 'status', headerName: this.i18n.t('experiments.table.column.status_html'), - sortable: false, + sortable: true, cellRenderer: this.statusRenderer } ]; @@ -151,14 +151,14 @@ export default { columns.push({ field: 'designated', headerName: this.i18n.t('experiments.table.column.assigned_html'), - sortable: false, + sortable: true, cellRenderer: DesignatedUsers, minWidth: 220 }); columns.push({ field: 'tags', headerName: this.i18n.t('experiments.table.column.tags_html'), - sortable: false, + sortable: true, cellRenderer: TagsRenderer }); columns.push({ diff --git a/app/javascript/vue/projects/list.vue b/app/javascript/vue/projects/list.vue index a6d767423..f217296b9 100644 --- a/app/javascript/vue/projects/list.vue +++ b/app/javascript/vue/projects/list.vue @@ -137,7 +137,7 @@ export default { field: 'users', headerName: this.i18n.t('projects.index.card.users'), cellRenderer: 'UsersRenderer', - sortable: false, + sortable: true, minWidth: 210, notSelectable: true }, diff --git a/app/javascript/vue/repositories/table.vue b/app/javascript/vue/repositories/table.vue index ebafb90a4..628218dc9 100644 --- a/app/javascript/vue/repositories/table.vue +++ b/app/javascript/vue/repositories/table.vue @@ -128,6 +128,11 @@ export default { notSelectable: true, cellRenderer: this.nameRenderer }, + { + field: 'code', + headerName: this.i18n.t('libraries.index.table.id'), + sortable: true + }, { field: 'nr_of_rows', headerName: this.i18n.t('libraries.index.table.number_of_items') diff --git a/app/serializers/lists/repository_serializer.rb b/app/serializers/lists/repository_serializer.rb index 8f0d0bea4..07452e8e5 100644 --- a/app/serializers/lists/repository_serializer.rb +++ b/app/serializers/lists/repository_serializer.rb @@ -5,7 +5,7 @@ module Lists include Canaid::Helpers::PermissionsHelper include Rails.application.routes.url_helpers - attributes :name, :nr_of_rows, :shared, :shared_label, :ishared, + attributes :name, :code, :nr_of_rows, :shared, :shared_label, :ishared, :team, :created_at, :created_by, :archived_on, :archived_by, :urls, :shared_read, :shared_write, :shareable_write diff --git a/app/services/lists/repositories_service.rb b/app/services/lists/repositories_service.rb index 57bb91c60..2d37b1b27 100644 --- a/app/services/lists/repositories_service.rb +++ b/app/services/lists/repositories_service.rb @@ -19,6 +19,7 @@ module Lists .select('teams.name AS team_name') .select('creators.full_name AS created_by_user') .select('archivers.full_name AS archived_by_user') + .select('repositories.id as code') view_mode = @params[:view_mode] || 'active' @@ -47,7 +48,8 @@ module Lists created_by: 'creators.full_name', created_at: 'repositories.created_at', archived_on: 'repositories.archived_on', - archived_by: 'archivers.full_name' + archived_by: 'archivers.full_name', + code: 'code' } end end From 26881eccdb08263d9bf1d5820ca979e2f8f330ca Mon Sep 17 00:00:00 2001 From: Giga Chubinidze Date: Mon, 19 Feb 2024 02:55:18 +0400 Subject: [PATCH 2/5] Fixed repository id column [SCI-10100] --- app/services/lists/repositories_service.rb | 4 ++-- config/locales/en.yml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/services/lists/repositories_service.rb b/app/services/lists/repositories_service.rb index 2d37b1b27..415c5089e 100644 --- a/app/services/lists/repositories_service.rb +++ b/app/services/lists/repositories_service.rb @@ -19,7 +19,7 @@ module Lists .select('teams.name AS team_name') .select('creators.full_name AS created_by_user') .select('archivers.full_name AS archived_by_user') - .select('repositories.id as code') + .select('repositories.id') view_mode = @params[:view_mode] || 'active' @@ -49,7 +49,7 @@ module Lists created_at: 'repositories.created_at', archived_on: 'repositories.archived_on', archived_by: 'archivers.full_name', - code: 'code' + code: 'repositories.id' } end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 87bee5a39..55821e483 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2533,6 +2533,7 @@ en: head_title_archived: "Archived Inventories" table: name: "Name" + id: "ID" number_of_items: "No. of items" shared: "Shared" ownership: "Ownership" From caab8fbc387dd5d50e7902b2a1a8a7ba3da6aa6f Mon Sep 17 00:00:00 2001 From: Giga Chubinidze Date: Wed, 21 Feb 2024 04:31:49 +0400 Subject: [PATCH 3/5] removed repository id query [SCI-10100] --- app/services/lists/repositories_service.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/services/lists/repositories_service.rb b/app/services/lists/repositories_service.rb index 415c5089e..e24b96c27 100644 --- a/app/services/lists/repositories_service.rb +++ b/app/services/lists/repositories_service.rb @@ -19,7 +19,6 @@ module Lists .select('teams.name AS team_name') .select('creators.full_name AS created_by_user') .select('archivers.full_name AS archived_by_user') - .select('repositories.id') view_mode = @params[:view_mode] || 'active' From 980468cb41f5f0676428ec0f4935ccdcdbe96705 Mon Sep 17 00:00:00 2001 From: Giga Chubinidze Date: Tue, 27 Feb 2024 16:34:55 +0400 Subject: [PATCH 4/5] Added back backend code for table column sorting [SCI-10100] --- app/services/lists/experiments_service.rb | 5 ++- app/services/lists/my_modules_service.rb | 42 ++++++++++++++++++++++- app/services/lists/projects_service.rb | 4 +++ 3 files changed, 49 insertions(+), 2 deletions(-) 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 From 4488243fadcd541b4a6d9a9c70de85ab586b22f8 Mon Sep 17 00:00:00 2001 From: Giga Chubinidze Date: Tue, 27 Feb 2024 16:41:20 +0400 Subject: [PATCH 5/5] hound fix [SCI-10100] --- app/services/lists/experiments_service.rb | 2 +- app/services/lists/my_modules_service.rb | 24 +++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/services/lists/experiments_service.rb b/app/services/lists/experiments_service.rb index 8a6209cd4..5b897d55d 100644 --- a/app/services/lists/experiments_service.rb +++ b/app/services/lists/experiments_service.rb @@ -78,7 +78,7 @@ module Lists archived_on: 'COALESCE(experiments.archived_on, projects.archived_on)', updated_at: 'experiments.updated_at', total_tasks: 'task_count', - description: 'experiments.description' + description: 'experiments.description' } end end diff --git a/app/services/lists/my_modules_service.rb b/app/services/lists/my_modules_service.rb index 60ee515ae..b9392dc99 100644 --- a/app/services/lists/my_modules_service.rb +++ b/app/services/lists/my_modules_service.rb @@ -86,28 +86,28 @@ module Lists @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')) + .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')) + .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')) + .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')) + .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')) + .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')) + .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