mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-03-04 19:53:19 +08:00
Fix task visibility for current task widget
This commit is contained in:
parent
a09d6151cd
commit
eb4a783337
3 changed files with 27 additions and 7 deletions
|
@ -9,7 +9,10 @@ module Dashboard
|
||||||
start_date = date.at_beginning_of_month.utc - 7.days
|
start_date = date.at_beginning_of_month.utc - 7.days
|
||||||
end_date = date.at_end_of_month.utc + 14.days
|
end_date = date.at_end_of_month.utc + 14.days
|
||||||
due_dates = current_user.my_modules.active.uncomplete
|
due_dates = current_user.my_modules.active.uncomplete
|
||||||
.where('due_date > ? AND due_date < ?', start_date, end_date)
|
.joins(experiment: :project)
|
||||||
|
.where('experiments.archived': false)
|
||||||
|
.where('projects.archived': false)
|
||||||
|
.where('my_modules.due_date > ? AND my_modules.due_date < ?', start_date, end_date)
|
||||||
.joins(:protocols).where('protocols.team_id = ?', current_team.id)
|
.joins(:protocols).where('protocols.team_id = ?', current_team.id)
|
||||||
.pluck(:due_date)
|
.pluck(:due_date)
|
||||||
render json: { events: due_dates.map { |i| { date: i } } }
|
render json: { events: due_dates.map { |i| { date: i } } }
|
||||||
|
@ -18,6 +21,9 @@ module Dashboard
|
||||||
def day
|
def day
|
||||||
date = DateTime.parse(params[:date]).utc
|
date = DateTime.parse(params[:date]).utc
|
||||||
my_modules = current_user.my_modules.active.uncomplete
|
my_modules = current_user.my_modules.active.uncomplete
|
||||||
|
.joins(experiment: :project)
|
||||||
|
.where('experiments.archived': false)
|
||||||
|
.where('projects.archived': false)
|
||||||
.where('DATE(my_modules.due_date) = DATE(?)', date)
|
.where('DATE(my_modules.due_date) = DATE(?)', date)
|
||||||
.where('projects.team_id = ?', current_team.id)
|
.where('projects.team_id = ?', current_team.id)
|
||||||
.my_modules_list_partial
|
.my_modules_list_partial
|
||||||
|
|
|
@ -12,10 +12,15 @@ module Dashboard
|
||||||
tasks = if @experiment
|
tasks = if @experiment
|
||||||
@experiment.my_modules.active
|
@experiment.my_modules.active
|
||||||
elsif @project
|
elsif @project
|
||||||
MyModule.active.joins(:experiment).where('experiments.project_id': @project.id)
|
MyModule.active.where('projects.id': @project.id)
|
||||||
else
|
else
|
||||||
MyModule.active.viewable_by_user(current_user, current_team)
|
MyModule.active.viewable_by_user(current_user, current_team)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
tasks = tasks.joins(experiment: :project)
|
||||||
|
.where('experiments.archived': false)
|
||||||
|
.where('projects.archived': false)
|
||||||
|
|
||||||
if task_filters[:mode] == 'assigned'
|
if task_filters[:mode] == 'assigned'
|
||||||
tasks = tasks.left_outer_joins(:user_my_modules).where('user_my_modules.user_id': current_user.id)
|
tasks = tasks.left_outer_joins(:user_my_modules).where('user_my_modules.user_id': current_user.id)
|
||||||
end
|
end
|
||||||
|
@ -60,7 +65,11 @@ module Dashboard
|
||||||
end
|
end
|
||||||
|
|
||||||
def project_filter
|
def project_filter
|
||||||
projects = current_team.projects.search(current_user, false, params[:query], 1, current_team).select(:id, :name)
|
projects = current_team.projects
|
||||||
|
.where(archived: false)
|
||||||
|
.viewable_by_user(current_user, current_team)
|
||||||
|
.search_by_name(current_user, current_team, params[:query]).select(:id, :name)
|
||||||
|
|
||||||
unless params[:mode] == 'team'
|
unless params[:mode] == 'team'
|
||||||
projects = projects.where(id: current_user.my_modules.joins(:experiment)
|
projects = projects.where(id: current_user.my_modules.joins(:experiment)
|
||||||
.group(:project_id).select(:project_id).pluck(:project_id))
|
.group(:project_id).select(:project_id).pluck(:project_id))
|
||||||
|
@ -73,7 +82,11 @@ module Dashboard
|
||||||
render json: []
|
render json: []
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
experiments = @project.experiments.search(current_user, false, params[:query], 1, current_team).select(:id, :name)
|
experiments = @project.experiments
|
||||||
|
.where(archived: false)
|
||||||
|
.viewable_by_user(current_user, current_team)
|
||||||
|
.search_by_name(current_user, current_team, params[:query]).select(:id, :name)
|
||||||
|
|
||||||
unless params[:mode] == 'team'
|
unless params[:mode] == 'team'
|
||||||
experiments = experiments.where(id: current_user.my_modules
|
experiments = experiments.where(id: current_user.my_modules
|
||||||
.group(:experiment_id).select(:experiment_id).pluck(:experiment_id))
|
.group(:experiment_id).select(:experiment_id).pluck(:experiment_id))
|
||||||
|
|
|
@ -81,13 +81,14 @@ class MyModule < ApplicationRecord
|
||||||
scope :workflow_ordered, -> { order(workflow_order: :asc) }
|
scope :workflow_ordered, -> { order(workflow_order: :asc) }
|
||||||
scope :uncomplete, -> { where(state: 'uncompleted') }
|
scope :uncomplete, -> { where(state: 'uncompleted') }
|
||||||
scope :with_step_statistics, (lambda do
|
scope :with_step_statistics, (lambda do
|
||||||
joins(protocols: :steps)
|
left_outer_joins(protocols: :steps)
|
||||||
.group(:id)
|
.group(:id)
|
||||||
.select('my_modules.*')
|
.select('my_modules.*')
|
||||||
.select('COUNT(steps.id) AS steps_total')
|
.select('COUNT(steps.id) AS steps_total')
|
||||||
.select('COUNT(steps.id) FILTER (where steps.completed = true) AS steps_completed')
|
.select('COUNT(steps.id) FILTER (where steps.completed = true) AS steps_completed')
|
||||||
.select('((COUNT(steps.id) FILTER (where steps.completed = true)) * 100 / COUNT(steps.id)) '\
|
.select('CASE COUNT(steps.id) WHEN 0 THEN 0 ELSE'\
|
||||||
'AS steps_completed_percentage')
|
'((COUNT(steps.id) FILTER (where steps.completed = true)) * 100 / COUNT(steps.id)) '\
|
||||||
|
'END AS steps_completed_percentage')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
# A module takes this much space in canvas (x, y) in database
|
# A module takes this much space in canvas (x, y) in database
|
||||||
|
|
Loading…
Reference in a new issue