From 3e425b7786cfad4bb04fb57adece382c8c36716b Mon Sep 17 00:00:00 2001 From: Martin Artnik Date: Wed, 4 Jun 2025 12:08:24 +0200 Subject: [PATCH] Fix project list issues [SCI-11942] --- .../vue/projects/renderers/superviser.vue | 2 +- app/services/lists/projects_service.rb | 28 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/javascript/vue/projects/renderers/superviser.vue b/app/javascript/vue/projects/renderers/superviser.vue index 77522a3e8..73e5a1c67 100644 --- a/app/javascript/vue/projects/renderers/superviser.vue +++ b/app/javascript/vue/projects/renderers/superviser.vue @@ -84,7 +84,7 @@ export default { }, computed: { canManage() { - return this.params.data.urls.assigned_users && !this.params.data.archived_on; + return this.params.data.urls.update; } }, methods: { diff --git a/app/services/lists/projects_service.rb b/app/services/lists/projects_service.rb index 2340b1144..43fcc7576 100644 --- a/app/services/lists/projects_service.rb +++ b/app/services/lists/projects_service.rb @@ -141,9 +141,9 @@ module Lists case sort when 'created_at_ASC' - @records = @records.sort_by(&:created_at).reverse! + @records = @records.sort_by { |object| project_timestamp(:created_at, object) }.reverse! when 'created_at_DESC' - @records = @records.sort_by(&:created_at) + @records = @records.sort_by { |object| project_timestamp(:created_at, object) } when 'name_ASC' @records = @records.sort_by { |c| c.name.downcase } when 'name_DESC' @@ -153,17 +153,17 @@ module Lists when 'code_DESC' @records = @records.sort_by(&:id).reverse! when 'archived_on_ASC' - @records = @records.sort_by(&:archived_on) + @records = @records.sort_by { |object| project_timestamp(:archived_on, object) } when 'archived_on_DESC' - @records = @records.sort_by(&:archived_on).reverse! + @records = @records.sort_by { |object| project_timestamp(:archived_on, object) }.reverse! when 'users_ASC' @records = @records.sort_by { |object| project_users_count(object) } when 'users_DESC' @records = @records.sort_by { |object| project_users_count(object) }.reverse! when 'updated_at_ASC' - @records = @records.sort_by(&:updated_at).reverse! + @records = @records.sort_by { |object| project_timestamp(:updated_at, object) }.reverse! when 'updated_at_DESC' - @records = @records.sort_by(&:updated_at) + @records = @records.sort_by { |object| project_timestamp(:updated_at, object) } when 'comments_ASC' @records = @records.sort_by { |object| project_comments_count(object) } when 'comments_DESC' @@ -181,9 +181,9 @@ module Lists when 'due_date_DESC' @records = @records.sort_by { |object| project_due_date(object) }.reverse! when 'status_ASC' - @records = @records.sort_by { |object| project_status(object, 'asc') } + @records = @records.sort_by { |object| project_status(object) } when 'status_DESC' - @records = @records.sort_by { |object| project_status(object, 'desc') }.reverse! + @records = @records.sort_by { |object| project_status(object) }.reverse! when 'supervised_by_ASC' @records = @records.sort_by { |object| project_supervised_by(object) } when 'supervised_by_DESC' @@ -202,7 +202,7 @@ module Lists def project_comments_count(object) return [0, 0, -1] unless project?(object) - [1, can_create_project_comments?(@user, object) ? 1 : 0, object.comments.count] + [1, object.comments.count, can_create_project_comments?(@user, object) ? 1 : 0] end def project_users_count(object) @@ -231,8 +231,8 @@ module Lists object.due_date || Date.new(2100, 1, 1) end - def project_status(object, direction) - return (direction == 'asc' ? 10 : -1) unless project?(object) + def project_status(object) + return 3 unless project?(object) statuses = { not_started: 0, @@ -252,7 +252,11 @@ module Lists def project_description(object) return [1, '', 1] unless project?(object) - [object.description ? 0 : 1, strip_tags(object.description || ''), 0] + [object.description ? 0 : 1, strip_tags(object.description&.downcase || ''), 0] + end + + def project_timestamp(timestamp_name, object) + project?(object) ? object[timestamp_name] : DateTime.new(2100, 1, 1) end def project?(object)