diff --git a/app/javascript/vue/experiments/list.vue b/app/javascript/vue/experiments/list.vue index e90658f57..f80cbf8ec 100644 --- a/app/javascript/vue/experiments/list.vue +++ b/app/javascript/vue/experiments/list.vue @@ -128,7 +128,7 @@ export default { { field: 'updated_at', headerName: this.i18n.t('experiments.card.modified_date'), - sortable: false + sortable: true } ]; @@ -144,13 +144,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 f8f4b9913..1fa5cee97 100644 --- a/app/javascript/vue/my_modules/list.vue +++ b/app/javascript/vue/my_modules/list.vue @@ -126,18 +126,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 } ]; @@ -153,14 +153,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/repositories/table.vue b/app/javascript/vue/repositories/table.vue index 8b986cad9..7aa4ce6a7 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 8425d8e23..e03aab95b 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/experiments_service.rb b/app/services/lists/experiments_service.rb index 88cb71ad2..5b897d55d 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 47e3bc304..b9392dc99 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 diff --git a/app/services/lists/repositories_service.rb b/app/services/lists/repositories_service.rb index 69eecf495..70c2baf48 100644 --- a/app/services/lists/repositories_service.rb +++ b/app/services/lists/repositories_service.rb @@ -50,7 +50,8 @@ module Lists created_at: 'repositories.created_at', archived_on: 'repositories.archived_on', archived_by: 'archived_by_user', - nr_of_rows: 'row_count' + nr_of_rows: 'row_count', + code: 'repositories.id' } end end diff --git a/config/locales/en.yml b/config/locales/en.yml index a61568f22..d6136695a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2539,6 +2539,7 @@ en: head_title_archived: "Archived Inventories" table: name: "Inventory name" + id: "ID" number_of_items: "No. of items" shared: "Shared" ownership: "Owned by"