mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-04 02:45:53 +08:00
Fix sorting on PET tables [SCI-11995]
This commit is contained in:
parent
c6fe2b4d8c
commit
c7ec773825
4 changed files with 43 additions and 19 deletions
|
@ -11,11 +11,13 @@
|
|||
:valueType="'stringWithoutTimezone'"
|
||||
:clearable="true"/>
|
||||
<template v-else-if="this.params.data[this.params.field].value_formatted">
|
||||
<i :class="this.params.data[this.params.field].icon || 'sn-icon sn-icon-calendar'"></i>
|
||||
{{ this.params.data[this.params.field].value_formatted }}
|
||||
<div class="pl-1">
|
||||
<i :class="this.params.data[this.params.field].icon || 'sn-icon sn-icon-calendar'"></i>
|
||||
{{ this.params.data[this.params.field].value_formatted }}
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ this.params.emptyPlaceholder }}
|
||||
<div class="pl-2">{{ this.params.emptyPlaceholder }}</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -116,6 +116,10 @@ module Lists
|
|||
@records.order(Arel.sql('COALESCE(experiments.archived_on, projects.archived_on) DESC'))
|
||||
.group('experiments.archived_on', 'projects.archived_on')
|
||||
end
|
||||
when 'favorite'
|
||||
@records.order(Arel.sql("CASE
|
||||
WHEN favorites IS NULL THEN 1
|
||||
ELSE 0 END #{sort_direction(order_params)}"))
|
||||
when 'status'
|
||||
@records.order(Arel.sql("CASE
|
||||
WHEN experiments.started_at IS NULL AND experiments.done_at IS NULL THEN -1
|
||||
|
|
|
@ -122,9 +122,9 @@ module Lists
|
|||
.group('my_modules.id')
|
||||
.order(Arel.sql('COUNT(DISTINCT tags.id) DESC'))
|
||||
when 'favorite_ASC'
|
||||
@records = @records.order(:favorite)
|
||||
when 'favorite_DESC'
|
||||
@records = @records.order(favorite: :desc)
|
||||
when 'favorite_DESC'
|
||||
@records = @records.order(:favorite)
|
||||
else
|
||||
__send__("#{sortable_columns[order_params[:column].to_sym]}_sort", sort_direction(order_params))
|
||||
end
|
||||
|
|
|
@ -141,9 +141,9 @@ module Lists
|
|||
|
||||
case sort
|
||||
when 'created_at_ASC'
|
||||
@records = @records.sort_by { |object| project_timestamp(:created_at, object) }.reverse!
|
||||
when 'created_at_DESC'
|
||||
@records = @records.sort_by { |object| project_timestamp(:created_at, object) }
|
||||
when 'created_at_DESC'
|
||||
@records = @records.sort_by { |object| project_timestamp(:created_at, object) }.reverse!
|
||||
when 'name_ASC'
|
||||
@records = @records.sort_by { |c| c.name.downcase }
|
||||
when 'name_DESC'
|
||||
|
@ -161,9 +161,9 @@ module Lists
|
|||
when 'users_DESC'
|
||||
@records = @records.sort_by { |object| project_users_count(object) }.reverse!
|
||||
when 'updated_at_ASC'
|
||||
@records = @records.sort_by { |object| project_timestamp(:updated_at, object) }.reverse!
|
||||
when 'updated_at_DESC'
|
||||
@records = @records.sort_by { |object| project_timestamp(:updated_at, object) }
|
||||
when 'updated_at_DESC'
|
||||
@records = @records.sort_by { |object| project_timestamp(:updated_at, object) }.reverse!
|
||||
when 'comments_ASC'
|
||||
@records = @records.sort_by { |object| project_comments_count(object) }
|
||||
when 'comments_DESC'
|
||||
|
@ -192,6 +192,14 @@ module Lists
|
|||
@records = @records.sort_by { |object| project_description(object) }
|
||||
when 'description_DESC'
|
||||
@records = @records.sort_by { |object| project_description(object) }.reverse!
|
||||
when 'completed_experiments_ASC'
|
||||
@records = @records.sort_by { |object| completed_experiments(object) }
|
||||
when 'completed_experiments_DESC'
|
||||
@records = @records.sort_by { |object| completed_experiments(object) }.reverse!
|
||||
when 'completed_tasks_ASC'
|
||||
@records = @records.sort_by { |object| completed_tasks(object) }
|
||||
when 'completed_tasks_DESC'
|
||||
@records = @records.sort_by { |object| completed_tasks(object) }.reverse!
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -200,23 +208,21 @@ module Lists
|
|||
end
|
||||
|
||||
def project_comments_count(object)
|
||||
return [0, 0, -1] unless project?(object)
|
||||
return [1, 0, -1] unless project?(object)
|
||||
|
||||
[1, object.comments.count, can_create_project_comments?(@user, object) ? 1 : 0]
|
||||
[0, object.comments.count, can_create_project_comments?(@user, object) ? 1 : 0]
|
||||
end
|
||||
|
||||
def project_users_count(object)
|
||||
return [0, -1] unless project?(object)
|
||||
return [1, -1] unless project?(object)
|
||||
|
||||
[1, object.users.count]
|
||||
[0, object.users.count]
|
||||
end
|
||||
|
||||
def project_favorites(object)
|
||||
if project?(object)
|
||||
object.favorite ? 1 : 0
|
||||
else
|
||||
-1
|
||||
end
|
||||
return [1, 0, -1] unless project?(object)
|
||||
|
||||
[0, can_read_project?(@user, object) ? 0 : 1, object.favorite ? 0 : 1]
|
||||
end
|
||||
|
||||
def project_start_date(object)
|
||||
|
@ -246,7 +252,7 @@ module Lists
|
|||
def project_supervised_by(object)
|
||||
return [1, '', 1] unless project?(object)
|
||||
|
||||
[object.supervised_by_id ? 0 : 1, object.supervised_by&.full_name || '', 0]
|
||||
[object.supervised_by_id ? 0 : 1, strip_tags(object.supervised_by&.full_name&.downcase || ''), 0]
|
||||
end
|
||||
|
||||
def project_description(object)
|
||||
|
@ -259,6 +265,18 @@ module Lists
|
|||
project?(object) ? object[timestamp_name] : Constants::INFINITE_DATE
|
||||
end
|
||||
|
||||
def completed_experiments(object)
|
||||
return [1, -1] unless project?(object)
|
||||
|
||||
[0, object.completed_experiments_count]
|
||||
end
|
||||
|
||||
def completed_tasks(object)
|
||||
return [1, -1] unless project?(object)
|
||||
|
||||
[0, object.completed_tasks_count]
|
||||
end
|
||||
|
||||
def project?(object)
|
||||
object.instance_of?(Project)
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue