mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-06 20:05:55 +08:00
Merge pull request #8456 from aignatov-bio/ai-sci-11835-update-sorting-for-projects-table
Add new sorting for projects table [SCI-11835]
This commit is contained in:
commit
513acfd125
2 changed files with 72 additions and 0 deletions
|
@ -108,6 +108,8 @@ class ProjectFolder < ApplicationRecord
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def description; end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def inherit_team_from_parent_folder
|
def inherit_team_from_parent_folder
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
module Lists
|
module Lists
|
||||||
class ProjectsService < BaseService
|
class ProjectsService < BaseService
|
||||||
|
include ActionView::Helpers::SanitizeHelper
|
||||||
|
|
||||||
def initialize(team, user, folder, params)
|
def initialize(team, user, folder, params)
|
||||||
@team = team
|
@team = team
|
||||||
@user = user
|
@user = user
|
||||||
|
@ -152,6 +154,26 @@ module Lists
|
||||||
@records = @records.sort_by { |object| project_favorites(object) }
|
@records = @records.sort_by { |object| project_favorites(object) }
|
||||||
when 'favorite_DESC'
|
when 'favorite_DESC'
|
||||||
@records = @records.sort_by { |object| project_favorites(object) }.reverse!
|
@records = @records.sort_by { |object| project_favorites(object) }.reverse!
|
||||||
|
when 'start_on_ASC'
|
||||||
|
@records = @records.sort_by { |object| project_start_on(object) }
|
||||||
|
when 'start_on_DESC'
|
||||||
|
@records = @records.sort_by { |object| project_start_on(object) }.reverse!
|
||||||
|
when 'due_date_ASC'
|
||||||
|
@records = @records.sort_by { |object| project_due_date(object) }
|
||||||
|
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') }
|
||||||
|
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') }
|
||||||
|
when 'supervised_by_DESC'
|
||||||
|
@records = @records.sort_by { |object| project_supervised_by(object, 'desc') }.reverse!
|
||||||
|
when 'description_ASC'
|
||||||
|
@records = @records.sort_by { |object| project_description(object, 'asc') }
|
||||||
|
when 'description_DESC'
|
||||||
|
@records = @records.sort_by { |object| project_description(object, 'desc') }.reverse!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -175,6 +197,54 @@ module Lists
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def project_start_on(object)
|
||||||
|
return Date.new(2100, 1, 1) unless project?(object)
|
||||||
|
|
||||||
|
object.start_on || Date.new(2100, 1, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def project_due_date(object)
|
||||||
|
return Date.new(2100, 1, 1) unless project?(object)
|
||||||
|
|
||||||
|
object.due_date || Date.new(2100, 1, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def project_status(object, direction)
|
||||||
|
return (direction == 'asc' ? 10 : -1) unless project?(object)
|
||||||
|
|
||||||
|
statuses = {
|
||||||
|
not_started: 0,
|
||||||
|
started: 1,
|
||||||
|
completed: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
statuses[object.status.to_sym]
|
||||||
|
end
|
||||||
|
|
||||||
|
def project_supervised_by(object, direction)
|
||||||
|
no_value = direction == 'asc' ? 1 : 0
|
||||||
|
has_value = direction == 'asc' ? 0 : 1
|
||||||
|
|
||||||
|
return [no_value, ''] unless project?(object)
|
||||||
|
|
||||||
|
if object.supervised_by
|
||||||
|
[has_value, object.supervised_by.name]
|
||||||
|
else
|
||||||
|
[no_value, '']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def project_description(object, direction)
|
||||||
|
no_value = direction == 'asc' ? 1 : 0
|
||||||
|
has_value = direction == 'asc' ? 0 : 1
|
||||||
|
|
||||||
|
if object.description.present?
|
||||||
|
[has_value, strip_tags(object.description)]
|
||||||
|
else
|
||||||
|
[no_value, '']
|
||||||
|
end
|
||||||
|
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