Skip to content

Commit a01d770

Browse files
committed
feat(dependencies): Add support for false value to disable dependencies on task or row model.
Close angular-gantt#614 Close angular-gantt#608
1 parent 042144c commit a01d770

File tree

7 files changed

+146
-60
lines changed

7 files changed

+146
-60
lines changed

assets/angular-gantt-dependencies-plugin.js

Lines changed: 34 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/angular-gantt-plugins.js

Lines changed: 34 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo/app/scripts/services/sample.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ angular.module('angularGanttDemoApp')
3636
{name: 'Day 3', color: '#9FC5F8', from: new Date(2013, 9, 9, 8, 30, 0), to: new Date(2013, 9, 9, 12, 0, 0),
3737
progress: {percent: 100, color: '#3C8CF8'}}
3838
]},
39-
{name: 'Create concept', tasks: [
39+
{name: 'Create concept', dependencies: false, tasks: [
4040
{name: 'Create concept', priority: 20, content: '<i class="fa fa-cog" ng-click="scope.handleTaskIconClick(task.model)"></i> {{task.model.name}}', color: '#F1C232', from: new Date(2013, 9, 10, 8, 0, 0), to: new Date(2013, 9, 16, 18, 0, 0), est: new Date(2013, 9, 8, 8, 0, 0), lct: new Date(2013, 9, 18, 20, 0, 0),
4141
progress: 100}
4242
]},
@@ -47,7 +47,7 @@ angular.module('angularGanttDemoApp')
4747
{name: 'Development', children: ['Sprint 1', 'Sprint 2', 'Sprint 3', 'Sprint 4'], content: '<i class="fa fa-file-code-o" ng-click="scope.handleRowIconClick(row.model)"></i> {{row.model.name}}'},
4848
{name: 'Sprint 1', tooltips: false, tasks: [
4949
{id: 'Product list view', name: 'Product list view', color: '#F1C232', from: new Date(2013, 9, 21, 8, 0, 0), to: new Date(2013, 9, 25, 15, 0, 0),
50-
progress: 25, dependencies: [{to: 'Order basket'}, {from: 'Finalize concept'}]}
50+
progress: 25, dependencies: false}
5151
]},
5252
{name: 'Sprint 2', tasks: [
5353
{id: 'Order basket', name: 'Order basket', color: '#F1C232', from: new Date(2013, 9, 28, 8, 0, 0), to: new Date(2013, 10, 1, 15, 0, 0),

demo/dist/scripts/scripts.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ angular.module('angularGanttDemoApp')
547547
{name: 'Day 3', color: '#9FC5F8', from: new Date(2013, 9, 9, 8, 30, 0), to: new Date(2013, 9, 9, 12, 0, 0),
548548
progress: {percent: 100, color: '#3C8CF8'}}
549549
]},
550-
{name: 'Create concept', tasks: [
550+
{name: 'Create concept', dependencies: false, tasks: [
551551
{name: 'Create concept', priority: 20, content: '<i class="fa fa-cog" ng-click="scope.handleTaskIconClick(task.model)"></i> {{task.model.name}}', color: '#F1C232', from: new Date(2013, 9, 10, 8, 0, 0), to: new Date(2013, 9, 16, 18, 0, 0), est: new Date(2013, 9, 8, 8, 0, 0), lct: new Date(2013, 9, 18, 20, 0, 0),
552552
progress: 100}
553553
]},
@@ -558,7 +558,7 @@ angular.module('angularGanttDemoApp')
558558
{name: 'Development', children: ['Sprint 1', 'Sprint 2', 'Sprint 3', 'Sprint 4'], content: '<i class="fa fa-file-code-o" ng-click="scope.handleRowIconClick(row.model)"></i> {{row.model.name}}'},
559559
{name: 'Sprint 1', tooltips: false, tasks: [
560560
{id: 'Product list view', name: 'Product list view', color: '#F1C232', from: new Date(2013, 9, 21, 8, 0, 0), to: new Date(2013, 9, 25, 15, 0, 0),
561-
progress: 25, dependencies: [{to: 'Order basket'}, {from: 'Finalize concept'}]}
561+
progress: 25, dependencies: false}
562562
]},
563563
{name: 'Sprint 2', tasks: [
564564
{id: 'Order basket', name: 'Order basket', color: '#F1C232', from: new Date(2013, 9, 28, 8, 0, 0), to: new Date(2013, 10, 1, 15, 0, 0),

demo/dist/scripts/vendor.js

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52904,7 +52904,7 @@ Github: https://github.com/angular-gantt/angular-gantt.git
5290452904
if (this.pluginScope.enabled) {
5290552905
var taskDependencies = task.model.dependencies;
5290652906

52907-
if (taskDependencies !== undefined) {
52907+
if (taskDependencies !== undefined && taskDependencies) {
5290852908
if (!angular.isArray(taskDependencies)) {
5290952909
taskDependencies = [taskDependencies];
5291052910
task.model.dependencies = taskDependencies;
@@ -53052,6 +53052,18 @@ Github: https://github.com/angular-gantt/angular-gantt.git
5305253052
}
5305353053
};
5305453054

53055+
var isTaskEnabled = function(task) {
53056+
var rowDependencies = task.row.model.dependencies;
53057+
if (rowDependencies !== undefined) {
53058+
return rowDependencies !== false;
53059+
}
53060+
var taskDependencies = task.model.dependencies;
53061+
if (taskDependencies !== undefined) {
53062+
return taskDependencies !== false;
53063+
}
53064+
return true;
53065+
};
53066+
5305553067
var addTaskEndpoints = function(task) {
5305653068
if (!task.dependencies) {
5305753069
task.dependencies = {};
@@ -53071,13 +53083,15 @@ Github: https://github.com/angular-gantt/angular-gantt.git
5307153083
};
5307253084

5307353085
var removeTaskEndpoint = function(task) {
53074-
for (var i = 0; i < task.dependencies.endpoints.length; i++) {
53075-
var endpointObject = task.dependencies.endpoints[i];
53076-
self.plumb.deleteEndpoint(endpointObject);
53077-
endpointObject.$task = undefined;
53078-
}
53086+
if (task.dependencies.endpoints) {
53087+
for (var i = 0; i < task.dependencies.endpoints.length; i++) {
53088+
var endpointObject = task.dependencies.endpoints[i];
53089+
self.plumb.deleteEndpoint(endpointObject);
53090+
endpointObject.$task = undefined;
53091+
}
5307953092

53080-
task.dependencies.endpoints = undefined;
53093+
task.dependencies.endpoints = undefined;
53094+
}
5308153095
};
5308253096

5308353097
var addTaskMouseHandler = function(task) {
@@ -53110,11 +53124,15 @@ Github: https://github.com/angular-gantt/angular-gantt.git
5311053124
});
5311153125

5311253126
var newTasks = {};
53127+
var tasksList = [];
5311353128
for (var i = 0; i < tasks.length; i++) {
5311453129
var task = tasks[i];
53115-
newTasks[task.model.id] = task;
53116-
addTaskEndpoints(task);
53117-
addTaskMouseHandler(task);
53130+
if (isTaskEnabled(task)) {
53131+
newTasks[task.model.id] = task;
53132+
tasksList.push(task);
53133+
addTaskEndpoints(task);
53134+
addTaskMouseHandler(task);
53135+
}
5311853136
}
5311953137
self.tasks = newTasks;
5312053138
self.tasksList = tasks;
@@ -53154,10 +53172,12 @@ Github: https://github.com/angular-gantt/angular-gantt.git
5315453172
removeTaskMouseHandler(oldTask);
5315553173
removeTaskEndpoint(oldTask);
5315653174
}
53157-
self.tasks[task.model.id] = task;
53158-
addTaskEndpoints(task);
53159-
addTaskMouseHandler(task);
53160-
connectTaskDependencies(task);
53175+
if (isTaskEnabled(task)) {
53176+
self.tasks[task.model.id] = task;
53177+
addTaskEndpoints(task);
53178+
addTaskMouseHandler(task);
53179+
connectTaskDependencies(task);
53180+
}
5316153181
} finally {
5316253182
self.plumb.setSuspendDrawing(false, true);
5316353183
}

docs/plugins/dependencies.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,12 @@ can optionnaly be set to an object that will be used for each related
149149
'connectParameters': {...} // Parameters given to jsPlumb.connect() function call.
150150
}]
151151
}
152+
153+
{
154+
...
155+
// Inside Task object or Row object
156+
'dependencies': false // Disable dependencies support for this task or row
157+
}
152158

153159
## API
154160

src/plugins/dependencies/dependenciesManager.factory.js

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
if (this.pluginScope.enabled) {
5555
var taskDependencies = task.model.dependencies;
5656

57-
if (taskDependencies !== undefined) {
57+
if (taskDependencies !== undefined && taskDependencies) {
5858
if (!angular.isArray(taskDependencies)) {
5959
taskDependencies = [taskDependencies];
6060
task.model.dependencies = taskDependencies;
@@ -202,6 +202,18 @@
202202
}
203203
};
204204

205+
var isTaskEnabled = function(task) {
206+
var rowDependencies = task.row.model.dependencies;
207+
if (rowDependencies !== undefined) {
208+
return rowDependencies !== false;
209+
}
210+
var taskDependencies = task.model.dependencies;
211+
if (taskDependencies !== undefined) {
212+
return taskDependencies !== false;
213+
}
214+
return true;
215+
};
216+
205217
var addTaskEndpoints = function(task) {
206218
if (!task.dependencies) {
207219
task.dependencies = {};
@@ -221,13 +233,15 @@
221233
};
222234

223235
var removeTaskEndpoint = function(task) {
224-
for (var i = 0; i < task.dependencies.endpoints.length; i++) {
225-
var endpointObject = task.dependencies.endpoints[i];
226-
self.plumb.deleteEndpoint(endpointObject);
227-
endpointObject.$task = undefined;
228-
}
236+
if (task.dependencies.endpoints) {
237+
for (var i = 0; i < task.dependencies.endpoints.length; i++) {
238+
var endpointObject = task.dependencies.endpoints[i];
239+
self.plumb.deleteEndpoint(endpointObject);
240+
endpointObject.$task = undefined;
241+
}
229242

230-
task.dependencies.endpoints = undefined;
243+
task.dependencies.endpoints = undefined;
244+
}
231245
};
232246

233247
var addTaskMouseHandler = function(task) {
@@ -260,11 +274,15 @@
260274
});
261275

262276
var newTasks = {};
277+
var tasksList = [];
263278
for (var i = 0; i < tasks.length; i++) {
264279
var task = tasks[i];
265-
newTasks[task.model.id] = task;
266-
addTaskEndpoints(task);
267-
addTaskMouseHandler(task);
280+
if (isTaskEnabled(task)) {
281+
newTasks[task.model.id] = task;
282+
tasksList.push(task);
283+
addTaskEndpoints(task);
284+
addTaskMouseHandler(task);
285+
}
268286
}
269287
self.tasks = newTasks;
270288
self.tasksList = tasks;
@@ -304,10 +322,12 @@
304322
removeTaskMouseHandler(oldTask);
305323
removeTaskEndpoint(oldTask);
306324
}
307-
self.tasks[task.model.id] = task;
308-
addTaskEndpoints(task);
309-
addTaskMouseHandler(task);
310-
connectTaskDependencies(task);
325+
if (isTaskEnabled(task)) {
326+
self.tasks[task.model.id] = task;
327+
addTaskEndpoints(task);
328+
addTaskMouseHandler(task);
329+
connectTaskDependencies(task);
330+
}
311331
} finally {
312332
self.plumb.setSuspendDrawing(false, true);
313333
}

0 commit comments

Comments
 (0)