mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-06 11:57:16 +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'"
|
:valueType="'stringWithoutTimezone'"
|
||||||
:clearable="true"/>
|
:clearable="true"/>
|
||||||
<template v-else-if="this.params.data[this.params.field].value_formatted">
|
<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>
|
<div class="pl-1">
|
||||||
{{ 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>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
{{ this.params.emptyPlaceholder }}
|
<div class="pl-2">{{ this.params.emptyPlaceholder }}</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -116,6 +116,10 @@ module Lists
|
||||||
@records.order(Arel.sql('COALESCE(experiments.archived_on, projects.archived_on) DESC'))
|
@records.order(Arel.sql('COALESCE(experiments.archived_on, projects.archived_on) DESC'))
|
||||||
.group('experiments.archived_on', 'projects.archived_on')
|
.group('experiments.archived_on', 'projects.archived_on')
|
||||||
end
|
end
|
||||||
|
when 'favorite'
|
||||||
|
@records.order(Arel.sql("CASE
|
||||||
|
WHEN favorites IS NULL THEN 1
|
||||||
|
ELSE 0 END #{sort_direction(order_params)}"))
|
||||||
when 'status'
|
when 'status'
|
||||||
@records.order(Arel.sql("CASE
|
@records.order(Arel.sql("CASE
|
||||||
WHEN experiments.started_at IS NULL AND experiments.done_at IS NULL THEN -1
|
WHEN experiments.started_at IS NULL AND experiments.done_at IS NULL THEN -1
|
||||||
|
|
|
@ -122,9 +122,9 @@ module Lists
|
||||||
.group('my_modules.id')
|
.group('my_modules.id')
|
||||||
.order(Arel.sql('COUNT(DISTINCT tags.id) DESC'))
|
.order(Arel.sql('COUNT(DISTINCT tags.id) DESC'))
|
||||||
when 'favorite_ASC'
|
when 'favorite_ASC'
|
||||||
@records = @records.order(:favorite)
|
|
||||||
when 'favorite_DESC'
|
|
||||||
@records = @records.order(favorite: :desc)
|
@records = @records.order(favorite: :desc)
|
||||||
|
when 'favorite_DESC'
|
||||||
|
@records = @records.order(:favorite)
|
||||||
else
|
else
|
||||||
__send__("#{sortable_columns[order_params[:column].to_sym]}_sort", sort_direction(order_params))
|
__send__("#{sortable_columns[order_params[:column].to_sym]}_sort", sort_direction(order_params))
|
||||||
end
|
end
|
||||||
|
|
|
@ -141,9 +141,9 @@ module Lists
|
||||||
|
|
||||||
case sort
|
case sort
|
||||||
when 'created_at_ASC'
|
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) }
|
@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'
|
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'
|
||||||
|
@ -161,9 +161,9 @@ module Lists
|
||||||
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 { |object| project_timestamp(:updated_at, object) }.reverse!
|
|
||||||
when 'updated_at_DESC'
|
|
||||||
@records = @records.sort_by { |object| project_timestamp(:updated_at, object) }
|
@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'
|
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'
|
||||||
|
@ -192,6 +192,14 @@ module Lists
|
||||||
@records = @records.sort_by { |object| project_description(object) }
|
@records = @records.sort_by { |object| project_description(object) }
|
||||||
when 'description_DESC'
|
when 'description_DESC'
|
||||||
@records = @records.sort_by { |object| project_description(object) }.reverse!
|
@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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -200,23 +208,21 @@ module Lists
|
||||||
end
|
end
|
||||||
|
|
||||||
def project_comments_count(object)
|
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
|
end
|
||||||
|
|
||||||
def project_users_count(object)
|
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
|
end
|
||||||
|
|
||||||
def project_favorites(object)
|
def project_favorites(object)
|
||||||
if project?(object)
|
return [1, 0, -1] unless project?(object)
|
||||||
object.favorite ? 1 : 0
|
|
||||||
else
|
[0, can_read_project?(@user, object) ? 0 : 1, object.favorite ? 0 : 1]
|
||||||
-1
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def project_start_date(object)
|
def project_start_date(object)
|
||||||
|
@ -246,7 +252,7 @@ module Lists
|
||||||
def project_supervised_by(object)
|
def project_supervised_by(object)
|
||||||
return [1, '', 1] unless project?(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
|
end
|
||||||
|
|
||||||
def project_description(object)
|
def project_description(object)
|
||||||
|
@ -259,6 +265,18 @@ module Lists
|
||||||
project?(object) ? object[timestamp_name] : Constants::INFINITE_DATE
|
project?(object) ? object[timestamp_name] : Constants::INFINITE_DATE
|
||||||
end
|
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)
|
def project?(object)
|
||||||
object.instance_of?(Project)
|
object.instance_of?(Project)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue