angular-gantt
Version:
Gantt chart component for AngularJS
57 lines (48 loc) • 1.86 kB
text/typescript
import angular from 'angular'
export default function ($compile, $document) {
'ngInject'
return {
restrict: 'E',
require: '^gantt',
scope: {
enabled: '=?',
keepProportions: '=?',
disableMagnet: '=?',
disableDaily: '=?'
},
link: function (scope, element, attrs, ganttCtrl) {
let api = ganttCtrl.gantt.api
// Load options from global options attribute.
if (scope.options && typeof(scope.options.sections) === 'object') {
for (let option in scope.options.sections) {
scope[option] = scope.options.sections[option]
}
}
if (scope.enabled === undefined) {
scope.enabled = true
}
if (scope.keepProportions === undefined) {
scope.keepProportions = true
}
api.directives.on.new(scope, function (directiveName, taskScope, taskElement) {
if (directiveName === 'ganttTaskForeground') {
let sectionsScope = taskScope.$new()
sectionsScope.pluginScope = scope
sectionsScope.task = taskScope.task
let ifElement = $document[0].createElement('div')
angular.element(ifElement).attr('data-ng-if', 'task.model.sections !== undefined && pluginScope.enabled')
angular.element(ifElement).attr('class', 'gantt-task-foreground-sections')
let sectionsElement = $document[0].createElement('gantt-task-sections')
if (attrs.templateUrl !== undefined) {
angular.element(sectionsElement).attr('data-template-url', attrs.templateUrl)
}
if (attrs.template !== undefined) {
angular.element(sectionsElement).attr('data-template', attrs.template)
}
angular.element(ifElement).append(sectionsElement)
taskElement.append($compile(ifElement)(sectionsScope))
}
})
}
}
}