panel.js.angular-spinner.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of splout-server Show documentation
Show all versions of splout-server Show documentation
Splout SQL is a read only, horizontally scalable and
partitioned SQL database that plays well with Hadoop.
The newest version!
/**
* angular-spinner version 0.5.0
* License: MIT.
* Copyright (C) 2013, 2014, Uri Shaked and contributors.
*/
(function (root) {
'use strict';
function factory(angular, Spinner) {
angular
.module('angularSpinner', [])
.factory('usSpinnerService', ['$rootScope', function ($rootScope) {
var config = {};
config.spin = function (key) {
$rootScope.$broadcast('us-spinner:spin', key);
};
config.stop = function (key) {
$rootScope.$broadcast('us-spinner:stop', key);
};
return config;
}])
.directive('usSpinner', ['$window', function ($window) {
return {
scope: true,
link: function (scope, element, attr) {
var SpinnerConstructor = Spinner || $window.Spinner;
scope.spinner = null;
scope.key = angular.isDefined(attr.spinnerKey) ? attr.spinnerKey : false;
scope.startActive = angular.isDefined(attr.spinnerStartActive) ?
attr.spinnerStartActive : scope.key ?
false : true;
scope.spin = function () {
if (scope.spinner) {
scope.spinner.spin(element[0]);
}
};
scope.stop = function () {
if (scope.spinner) {
scope.spinner.stop();
}
};
scope.$watch(attr.usSpinner, function (options) {
scope.stop();
scope.spinner = new SpinnerConstructor(options);
if (!scope.key || scope.startActive) {
scope.spinner.spin(element[0]);
}
}, true);
scope.$on('us-spinner:spin', function (event, key) {
if (key === scope.key) {
scope.spin();
}
});
scope.$on('us-spinner:stop', function (event, key) {
if (key === scope.key) {
scope.stop();
}
});
scope.$on('$destroy', function () {
scope.stop();
scope.spinner = null;
});
}
};
}]);
}
if (typeof define === 'function' && define.amd) {
/* AMD module */
define(['angular', 'spin'], factory);
} else {
/* Browser global */
factory(root.angular);
}
}(window));