Merge pull request #8527 from artoscinote/ma_SCI_11942

Project list fixes [SCI-11942]
This commit is contained in:
Martin Artnik 2025-05-30 14:10:52 +02:00 committed by GitHub
commit 9103188975
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 28 additions and 34 deletions

View file

@ -8,6 +8,7 @@
:borderless="true"
:optionRenderer="optionRenderer"
:labelRenderer="optionRenderer"
:disabled="!params.data.urls.update"
/>
</div>
</template>

View file

@ -1,6 +1,6 @@
<template>
<div v-if="params.data.comments" class="w-9 flex justify-end items-center h-10">
<span v-if="!params.data.permissions.create_comments && params.data.comments.count === 0">0</span>
<span class="px-1" v-if="!params.data.permissions.create_comments && params.data.comments.count === 0">0</span>
<a v-else
href="#"
class="open-comments-sidebar relative px-1 h-4 leading-4" tabindex=0 :id="'comment-count-' + params.data.id"

View file

@ -1,5 +1,5 @@
<template>
<div v-if="hasFavorite">
<div v-if="canFavorite">
<button @click="updateFavorite(!favorite)"
class="p-0 flex items-center w-full h-9 bg-transparent border-none cursor-pointer">
<div v-if="favorite" class="sn-icon sn-icon-star-filled text-sn-alert-brittlebush"></div>
@ -29,8 +29,8 @@ export default {
this.favorite = this.params.data.favorite;
},
computed: {
hasFavorite() {
return this.params.data.favorite !== null;
canFavorite() {
return this.params.data.urls.favorite;
}
},
methods: {

View file

@ -124,13 +124,11 @@ module Lists
urls_list[:show] = nil if project? && !can_read_project?(object)
urls_list[:update] = if project?
project_path(object)
else
project_folder_path(object)
end
if !project? || can_manage_project?(object)
urls_list[:update] = project? ? project_path(object) : project_folder_path(object)
end
if project?
if project? && can_read_project?(object)
urls_list[:favorite] = favorite_project_url(object)
urls_list[:unfavorite] = unfavorite_project_url(object)
end

View file

@ -1,6 +1,9 @@
# frozen_string_literal: true
module Lists
class ProjectsService < BaseService
include ActionView::Helpers::SanitizeHelper
include Canaid::Helpers::PermissionsHelper
def initialize(team, user, folder, params)
@team = team
@ -167,13 +170,13 @@ module Lists
when 'status_DESC'
@records = @records.sort_by { |object| project_status(object, 'desc') }.reverse!
when 'supervised_by_ASC'
@records = @records.sort_by { |object| project_supervised_by(object, 'asc') }
@records = @records.sort_by { |object| project_supervised_by(object) }
when 'supervised_by_DESC'
@records = @records.sort_by { |object| project_supervised_by(object, 'desc') }.reverse!
@records = @records.sort_by { |object| project_supervised_by(object) }.reverse!
when 'description_ASC'
@records = @records.sort_by { |object| project_description(object, 'asc') }
@records = @records.sort_by { |object| project_description(object) }
when 'description_DESC'
@records = @records.sort_by { |object| project_description(object, 'desc') }.reverse!
@records = @records.sort_by { |object| project_description(object) }.reverse!
end
end
@ -182,11 +185,15 @@ module Lists
end
def project_comments_count(object)
project?(object) ? object.comments.count : -1
return [0, 0, -1] unless project?(object)
[1, can_create_project_comments?(@user, object) ? 1 : 0, object.comments.count]
end
def project_users_count(object)
project?(object) ? object.users.count : -1
return [0, -1] unless project?(object)
[1, object.users.count]
end
def project_favorites(object)
@ -221,28 +228,16 @@ module Lists
statuses[object.status.to_sym]
end
def project_supervised_by(object, direction)
no_value = direction == 'asc' ? 1 : 0
has_value = direction == 'asc' ? 0 : 1
def project_supervised_by(object)
return [1, '', 1] unless project?(object)
return [no_value, ''] unless project?(object)
if object.supervised_by
[has_value, object.supervised_by.name]
else
[no_value, '']
end
[object.supervised_by_id ? 0 : 1, object.supervised_by&.full_name || '', 0]
end
def project_description(object, direction)
no_value = direction == 'asc' ? 1 : 0
has_value = direction == 'asc' ? 0 : 1
def project_description(object)
return [1, '', 1] unless project?(object)
if object.description.present?
[has_value, strip_tags(object.description)]
else
[no_value, '']
end
[object.description ? 0 : 1, strip_tags(object.description || ''), 0]
end
def project?(object)