UNPKG

angular-gantt

Version:

Gantt chart component for AngularJS

78 lines (65 loc) 2.01 kB
export default function () { 'ngInject' /** * Creates a new DependenciesChecker object. * * @constructor */ let GanttDependenciesChecker = function (manager) { function handleTaskConflict (conflictsList, task) { if (!(task.model.id in conflictsList) && task.$element) { task.$element.addClass('gantt-task-conflict') conflictsList[task.model.id] = task } } function handleTaskNonConflict (conflictsList, allTasks) { // tslint:disable:one-variable-per-declaration for (let i = 0, l = allTasks.length; i < l; i++) { let task = allTasks[i] if (!(task.model.id in conflictsList) && task.$element) { task.$element.removeClass('gantt-task-conflict') } } } /** * Refresh the conflict status of given tasks. * * @param tasks */ this.refresh = function (tasks) { let allTasks = tasks.slice(0) let conflictsList = [] for (let task of tasks) { let taskDependencies = manager.getTaskDependencies(task) for (let dependency of taskDependencies) { let fromTask = dependency.getFromTask() let toTask = dependency.getToTask() if (!(fromTask in allTasks)) { allTasks.push(fromTask) } if (!(toTask in allTasks)) { allTasks.push(toTask) } if (fromTask.model.to > toTask.model.from) { handleTaskConflict(conflictsList, fromTask) handleTaskConflict(conflictsList, toTask) } } } handleTaskNonConflict(conflictsList, allTasks) } this.removeConflictClass = function (task) { task.$element.removeClass('gantt-task-conflict') } /** * Remove the conflict status of given tasks. * * @param tasks */ this.clear = function (tasks) { let allTasks = tasks.slice(0) handleTaskNonConflict([], allTasks) } } return GanttDependenciesChecker }