Fix task visibility for current task widget

This commit is contained in:
aignatov-bio 2020-03-03 13:13:46 +01:00
parent a09d6151cd
commit eb4a783337
3 changed files with 27 additions and 7 deletions

View file

@ -9,7 +9,10 @@ module Dashboard
start_date = date.at_beginning_of_month.utc - 7.days
end_date = date.at_end_of_month.utc + 14.days
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)
.pluck(:due_date)
render json: { events: due_dates.map { |i| { date: i } } }
@ -18,6 +21,9 @@ module Dashboard
def day
date = DateTime.parse(params[:date]).utc
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('projects.team_id = ?', current_team.id)
.my_modules_list_partial

View file

@ -12,10 +12,15 @@ module Dashboard
tasks = if @experiment
@experiment.my_modules.active
elsif @project
MyModule.active.joins(:experiment).where('experiments.project_id': @project.id)
MyModule.active.where('projects.id': @project.id)
else
MyModule.active.viewable_by_user(current_user, current_team)
end
tasks = tasks.joins(experiment: :project)
.where('experiments.archived': false)
.where('projects.archived': false)
if task_filters[:mode] == 'assigned'
tasks = tasks.left_outer_joins(:user_my_modules).where('user_my_modules.user_id': current_user.id)
end
@ -60,7 +65,11 @@ module Dashboard
end
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'
projects = projects.where(id: current_user.my_modules.joins(:experiment)
.group(:project_id).select(:project_id).pluck(:project_id))
@ -73,7 +82,11 @@ module Dashboard
render json: []
return false
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'
experiments = experiments.where(id: current_user.my_modules
.group(:experiment_id).select(:experiment_id).pluck(:experiment_id))

View file

@ -81,13 +81,14 @@ class MyModule < ApplicationRecord
scope :workflow_ordered, -> { order(workflow_order: :asc) }
scope :uncomplete, -> { where(state: 'uncompleted') }
scope :with_step_statistics, (lambda do
joins(protocols: :steps)
left_outer_joins(protocols: :steps)
.group(:id)
.select('my_modules.*')
.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)) * 100 / COUNT(steps.id)) '\
'AS steps_completed_percentage')
.select('CASE COUNT(steps.id) WHEN 0 THEN 0 ELSE'\
'((COUNT(steps.id) FILTER (where steps.completed = true)) * 100 / COUNT(steps.id)) '\
'END AS steps_completed_percentage')
end)
# A module takes this much space in canvas (x, y) in database