MCPcopy Index your code
hub / github.com/codef0rmer/angular-dragdrop / updateDroppable

Function updateDroppable

src/angular-dragdrop.js:355–402  ·  view source on GitHub ↗
(newValue, oldValue)

Source from the content-addressed store, hash-verified

353 var element = $(elem);
354 var dropSettings, jqyouiOptions, killWatcher;
355 var updateDroppable = function(newValue, oldValue) {
356 if (newValue) {
357 dropSettings = scope.$eval($(element).attr('jqyoui-droppable') || $(element).attr('data-jqyoui-droppable')) || {};
358 jqyouiOptions = scope.$eval(attrs.jqyouiOptions) || {};
359 element
360 .droppable({disabled: false})
361 .droppable(jqyouiOptions)
362 .droppable({
363 over: function(event, ui) {
364 ngDragDropService.callEventCallback(scope, dropSettings.onOver, event, ui);
365 },
366 out: function(event, ui) {
367 ngDragDropService.callEventCallback(scope, dropSettings.onOut, event, ui);
368 },
369 drop: function(event, ui) {
370 var beforeDropPromise = null;
371
372 if (dropSettings.beforeDrop) {
373 beforeDropPromise = ngDragDropService.callEventCallback(scope, dropSettings.beforeDrop, event, ui);
374 } else {
375 beforeDropPromise = (function() {
376 var deferred = $q.defer();
377 deferred.resolve();
378 return deferred.promise;
379 })();
380 }
381
382 beforeDropPromise.then(angular.bind(this, function() {
383 if ($(ui.draggable).ngattr('ng-model') && attrs.ngModel) {
384 ngDragDropService.droppableScope = scope;
385 ngDragDropService.invokeDrop($(ui.draggable), $(this), event, ui);
386 } else {
387 ngDragDropService.callEventCallback(scope, dropSettings.onDrop, event, ui);
388 }
389 }), function() {
390 ui.draggable.animate({left: '', top: ''}, jqyouiOptions.revertDuration || 0);
391 });
392 }
393 });
394 } else {
395 element.droppable({disabled: true});
396 }
397
398 if (killWatcher && angular.isDefined(newValue) && (angular.equals(attrs.drop, 'true') || angular.equals(attrs.drop, 'false'))) {
399 killWatcher();
400 killWatcher = null;
401 }
402 };
403
404 killWatcher = scope.$watch(function() { return scope.$eval(attrs.drop); }, updateDroppable);
405 updateDroppable();

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected