65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
/*@
|
|
Ox.LoadingIcon <f:Ox.Element> Loading Icon Element
|
|
() -> <f> Loading Icon Element
|
|
(options) -> <f> Loading Icon Element
|
|
(options, self) -> <f> Loading Icon Element
|
|
options <o> Options object
|
|
size <s|medium> size of icon
|
|
self <o> Shared private variable
|
|
@*/
|
|
|
|
Ox.LoadingIcon = function(options, self) {
|
|
|
|
self = self || {};
|
|
var that = Ox.Element('<img>', self)
|
|
.defaults({
|
|
size: 'medium'
|
|
})
|
|
.options(options || {})
|
|
.attr({
|
|
src: Ox.UI.getImageURL('symbolLoading')
|
|
})
|
|
.addClass(
|
|
'OxLoadingIcon Ox' + Ox.toTitleCase(self.options.size)
|
|
);
|
|
|
|
/*@
|
|
start <f> Start loading animation
|
|
() -> <f> Loading Icon Element
|
|
@*/
|
|
that.start = function() {
|
|
var deg = 0;
|
|
if (!self.loadingInterval) {
|
|
self.loadingInterval = setInterval(function() {
|
|
deg = (deg + 30) % 360;
|
|
that.css({
|
|
OTransform: 'rotate(' + deg + 'deg)',
|
|
MozTransform: 'rotate(' + deg + 'deg)',
|
|
WebkitTransform: 'rotate(' + deg + 'deg)'
|
|
});
|
|
}, 83)
|
|
that.animate({opacity: 1}, 250);
|
|
}
|
|
return that;
|
|
};
|
|
|
|
/*@
|
|
stop <f> Stop loading animation
|
|
() -> <f> Loading Icon Element
|
|
@*/
|
|
that.stop = function() {
|
|
var loadingInterval = self.loadingInterval;
|
|
if (self.loadingInterval) {
|
|
self.loadingInterval = void 0;
|
|
that.animate({opacity: 0}, 250, function() {
|
|
clearInterval(loadingInterval);
|
|
});
|
|
}
|
|
return that;
|
|
};
|
|
|
|
return that;
|
|
|
|
};
|