UNPKG

angular-gantt

Version:

Gantt chart component for AngularJS

137 lines (114 loc) 5.45 kB
/* Project: angular-gantt v1.2.9 - Gantt chart component for AngularJS Authors: Marco Schweighauser, Rémi Alvergnat License: MIT Homepage: https://www.angular-gantt.com Github: https://github.com/angular-gantt/angular-gantt.git */ (function(){ 'use strict'; var moduleName = 'gantt.sortable'; var directiveName = 'ganttSortable'; var pluginDependencies = [ 'gantt', {module:'ang-drag-drop', url:'https://github.com/ganarajpr/angular-dragdrop.git#master'} ]; var failedDependencies = []; var loadedDependencies = []; var failedDependency; for (var i = 0, l = pluginDependencies.length; i < l; i++) { var currentDependency = pluginDependencies[i]; try { if (angular.isString(currentDependency)) { currentDependency = {module: currentDependency}; pluginDependencies[i] = currentDependency; } angular.module(currentDependency.module); loadedDependencies.push(currentDependency.module); } catch (e) { currentDependency.exception = e; failedDependencies.push(currentDependency); } } if (failedDependencies.length > 0) { angular.module(moduleName, []).directive(directiveName, ['$log', function($log) { return { restrict: 'E', require: '^gantt', scope: { enabled: '=?' }, link: function() { $log.warn(moduleName + ' module can\'t require some dependencies:'); for (var i= 0,l =failedDependencies.length; i<l; i++) { failedDependency = failedDependencies[i]; var errorMessage = failedDependency.module; if (failedDependency.url) { errorMessage += ' (' + failedDependency.url + ')'; } if (failedDependency.exception && failedDependency.exception.message) { errorMessage += ': ' + failedDependency.exception.message; } $log.warn(errorMessage); } $log.warn(directiveName + ' plugin directive won\'t be available'); } }; }]); } else { angular.module(moduleName, loadedDependencies).directive(directiveName, ['ganttUtils', '$compile', function(utils, $compile) { // Provides the row sort functionality to any Gantt row // Uses the sortableState to share the current row return { restrict: 'E', require: '^gantt', scope: { enabled: '=?' }, link: function(scope, element, attrs, ganttCtrl) { var api = ganttCtrl.gantt.api; // Load options from global options attribute. if (scope.options && typeof(scope.options.sortable) === 'object') { for (var option in scope.options.sortable) { scope[option] = scope.options[option]; } } if (scope.enabled === undefined) { scope.enabled = true; } api.directives.on.new(scope, function(directiveName, rowScope, rowElement) { if (directiveName === 'ganttRowLabel' && rowElement.attr('drag') === undefined) { rowScope.checkDraggable = function() { var rowSortable = rowScope.row.model.sortable; if (typeof(rowSortable) === 'boolean') { rowSortable = {enabled: rowSortable}; } return utils.firstProperty([rowSortable], 'enabled', scope.enabled); }; rowScope.onDropSuccess = function() { rowScope.$evalAsync(); }; rowScope.onDrop = function(evt, data) { var row = rowScope.row.rowsManager.rowsMap[data.id]; if (row !== rowScope) { rowScope.row.rowsManager.moveRow(row, rowScope.row); rowScope.$evalAsync(); } }; rowElement.attr('ui-draggable', '{{checkDraggable()}}'); rowElement.attr('drag-channel', '\'sortable\''); rowElement.attr('ui-on-drop', 'onDrop($event, $data)'); rowElement.attr('on-drop-success', 'onDropSuccess()'); rowElement.attr('drop-channel', '\'sortable\''); rowElement.attr('drag', 'row.model'); $compile(rowElement)(rowScope); } }); } }; }]); } }()); angular.module('gantt.sortable.templates', []).run(['$templateCache', function($templateCache) { }]); //# sourceMappingURL=angular-gantt-sortable-plugin.js.map