Merge pull request #8542 from artoscinote/ma_SCI_11942

Fix project list issues [SCI-11942]
This commit is contained in:
Martin Artnik 2025-06-06 16:27:24 +02:00 committed by GitHub
commit 6cb4985da5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 19 deletions

View file

@ -84,7 +84,7 @@ export default {
}, },
computed: { computed: {
canManage() { canManage() {
return this.params.data.urls.assigned_users && !this.params.data.archived_on; return this.params.data.urls.update;
} }
}, },
methods: { methods: {

View file

@ -141,9 +141,9 @@ module Lists
case sort case sort
when 'created_at_ASC' 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' when 'created_at_DESC'
@records = @records.sort_by(&:created_at) @records = @records.sort_by { |object| project_timestamp(:created_at, object) }
when 'name_ASC' when 'name_ASC'
@records = @records.sort_by { |c| c.name.downcase } @records = @records.sort_by { |c| c.name.downcase }
when 'name_DESC' when 'name_DESC'
@ -153,17 +153,17 @@ module Lists
when 'code_DESC' when 'code_DESC'
@records = @records.sort_by(&:id).reverse! @records = @records.sort_by(&:id).reverse!
when 'archived_on_ASC' when 'archived_on_ASC'
@records = @records.sort_by(&:archived_on) @records = @records.sort_by { |object| project_timestamp(:archived_on, object) }
when 'archived_on_DESC' 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' when 'users_ASC'
@records = @records.sort_by { |object| project_users_count(object) } @records = @records.sort_by { |object| project_users_count(object) }
when 'users_DESC' when 'users_DESC'
@records = @records.sort_by { |object| project_users_count(object) }.reverse! @records = @records.sort_by { |object| project_users_count(object) }.reverse!
when 'updated_at_ASC' 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' when 'updated_at_DESC'
@records = @records.sort_by(&:updated_at) @records = @records.sort_by { |object| project_timestamp(:updated_at, object) }
when 'comments_ASC' when 'comments_ASC'
@records = @records.sort_by { |object| project_comments_count(object) } @records = @records.sort_by { |object| project_comments_count(object) }
when 'comments_DESC' when 'comments_DESC'
@ -181,9 +181,9 @@ module Lists
when 'due_date_DESC' when 'due_date_DESC'
@records = @records.sort_by { |object| project_due_date(object) }.reverse! @records = @records.sort_by { |object| project_due_date(object) }.reverse!
when 'status_ASC' when 'status_ASC'
@records = @records.sort_by { |object| project_status(object, 'asc') } @records = @records.sort_by { |object| project_status(object) }
when 'status_DESC' 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' when 'supervised_by_ASC'
@records = @records.sort_by { |object| project_supervised_by(object) } @records = @records.sort_by { |object| project_supervised_by(object) }
when 'supervised_by_DESC' when 'supervised_by_DESC'
@ -202,7 +202,7 @@ module Lists
def project_comments_count(object) def project_comments_count(object)
return [0, 0, -1] unless project?(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 end
def project_users_count(object) def project_users_count(object)
@ -220,24 +220,24 @@ module Lists
end end
def project_start_date(object) def project_start_date(object)
return Date.new(2100, 1, 1) unless project?(object) return Date::Infinity.new unless project?(object)
object.start_date || Date.new(2100, 1, 1) object.start_date || Date::Infinity.new
end end
def project_due_date(object) def project_due_date(object)
return Date.new(2100, 1, 1) unless project?(object) return Date::Infinity.new unless project?(object)
object.due_date || Date.new(2100, 1, 1) object.due_date || Date::Infinity.new
end end
def project_status(object, direction) def project_status(object)
return (direction == 'asc' ? 10 : -1) unless project?(object) return 3 unless project?(object) # should come after done (2)
statuses = { statuses = {
not_started: 0, not_started: 0,
started: 1, in_progress: 1,
completed: 2 done: 2
} }
statuses[object.status.to_sym] statuses[object.status.to_sym]
@ -252,7 +252,11 @@ module Lists
def project_description(object) def project_description(object)
return [1, '', 1] unless project?(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] : Date::Infinity.new
end end
def project?(object) def project?(object)