Add lock icon to current task section on dashboard

This commit is contained in:
Urban Rotnik 2020-10-22 08:02:15 +02:00
parent c8083f730c
commit 58013e215d
3 changed files with 25 additions and 27 deletions

View file

@ -7,20 +7,9 @@ var DasboardCurrentTasksWidget = (function() {
var projectFilter = '.current-tasks-filters .project-filter';
var experimentFilter = '.current-tasks-filters .experiment-filter';
function generateTasksListHtml(json, container) {
function appendTasksList(json, container) {
$.each(json.data, (i, task) => {
var currentTaskItem = ` <a class="current-task-item" href="${task.link}">
<div class="current-task-breadcrumbs">${task.project}<span class="slash">/</span>${task.experiment}</div>
<div class="task-name row-border">${task.name}</div>
<div class="task-due-date row-border ${task.due_date.state}">
<span class="${task.due_date.text ? '' : 'hidden'}">
<i class="fas fa-calendar-day"></i> ${task.due_date.text}
</span>
</div>
<div class="task-status-container row-border">
<span class="task-status" style="background:${task.status_color}">${task.status_name}</span>
</div>
</a>`;
var currentTaskItem = task;
$(container).append(currentTaskItem);
});
}
@ -42,7 +31,7 @@ var DasboardCurrentTasksWidget = (function() {
InfiniteScroll.init('.current-tasks-list', {
url: $('.current-tasks-list').data('tasksListUrl'),
customResponse: (json, container) => {
generateTasksListHtml(json, container);
appendTasksList(json, container);
},
customParams: (params) => {
params.project_id = dropdownSelector.getValues(projectFilter);
@ -130,7 +119,7 @@ var DasboardCurrentTasksWidget = (function() {
$currentTasksList.find('.widget-placeholder').addClass($('.current-tasks-navbar .active').data('mode'));
}
}
generateTasksListHtml(result, $currentTasksList);
appendTasksList(result, $currentTasksList);
PerfectSb().update_all();
if (newList) InfiniteScroll.resetScroll('.current-tasks-list');
animateSpinner($currentTasksList, false);

View file

@ -3,6 +3,7 @@
module Dashboard
class CurrentTasksController < ApplicationController
include InputSanitizeHelper
helper_method :prepare_due_date
before_action :load_project, only: %i(show experiment_filter)
before_action :load_experiment, only: :show
@ -47,14 +48,7 @@ module Dashboard
.preload(experiment: :project).page(page).per(Constants::INFINITE_SCROLL_LIMIT)
tasks_list = tasks.map do |task|
{ id: task.id,
link: protocols_my_module_path(task.id),
experiment: escape_input(task.experiment.name),
project: escape_input(task.experiment.project.name),
name: escape_input(task.name),
due_date: prepare_due_date(task),
status_color: task.status_color,
status_name: task.status_name }
render_to_string(partial: 'dashboards/current_tasks/task', locals: { task: task })
end
render json: { data: tasks_list, next_page: tasks.next_page }
@ -95,19 +89,19 @@ module Dashboard
def prepare_due_date(task)
if task.completed?
return { state: '', text: I18n.t('dashboard.current_tasks.completed_on_html',
date: I18n.l(task.completed_on, format: :full_date)) }
date: I18n.l(task.completed_on, format: :full_date)).html_safe }
end
if task.due_date.present?
due_date_formatted = I18n.l(task.due_date, format: :full_date)
if task.is_overdue?
return { state: 'overdue', text: I18n.t('dashboard.current_tasks.due_date_overdue_html',
date: due_date_formatted) }
date: due_date_formatted).html_safe }
elsif task.is_one_day_prior?
return { state: 'day-prior', text: I18n.t('dashboard.current_tasks.due_date_html',
date: due_date_formatted) }
date: due_date_formatted).html_safe }
end
return { state: '', text: I18n.t('dashboard.current_tasks.due_date_html', date: due_date_formatted) }
return { state: '', text: I18n.t('dashboard.current_tasks.due_date_html', date: due_date_formatted).html_safe }
end
{ state: nil, text: nil }
end

View file

@ -0,0 +1,15 @@
<a class="current-task-item" href="<%= protocols_my_module_path(task.id) %>">
<div class="current-task-breadcrumbs"><%= task.experiment.project.name %>
<span class="slash">/</span><%= task.experiment.name %></div>
<div class="task-name row-border">
<%= task.name %>
</div>
<div class="task-due-date row-border <%= prepare_due_date(task)[:state ]%>">
<span class="<%= prepare_due_date(task)[:text] ? '' : 'hidden' %>">
<i class="fas fa-calendar-day"></i> <%= prepare_due_date(task)[:text] %>
</span>
</div>
<div class="task-status-container row-border">
<span class="task-status" style="background:<%= task.status_color %>"><%= task.status_name %></span>
</div>
</a>