123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- // wrapped by build app
- define("dojox/widget/Loader", ["dijit","dojo","dojox","dojo/require!dijit/_Widget,dijit/_Templated"], function(dijit,dojo,dojox){
- dojo.provide("dojox.widget.Loader");
- dojo.deprecated("dojox.widget.Loader", "", "2.0");
- dojo.require("dijit._Widget");
- dojo.require("dijit._Templated");
- dojo.declare("dojox.widget.Loader", [dijit._Widget,dijit._Templated], {
- // summary: a configurable global xhr-listener to display
- // a loading message during running xhr's or to simply provide
- // base-level topic to subscribe to for custom loading messages
- //
- // loadIcon: String
- // location to the icon used.
- loadIcon: dojo.moduleUrl("dojox.widget.Loader","icons/loading.gif"),
- // loadMessage: String
- // string to use for progress loading
- loadMessage: 'Loading ...',
- // hasVisuals: Boolean
- // true to display a fixed loading message in TR cornder, false to unly provide
- // "Loader" topic to subscribe to for your own custom loading message.
- hasVisuals: true,
- // attachToPointer
- // true to use visual indicator where cursor is
- attachToPointer: true,
- // duration: Integer
- // time in ms to toggle in/out the visual load indicator
- duration: 125,
- // _offset: Integer
- // distance in px from the mouse pointer to show attachToPointer avatar
- _offset: 16,
- // holder for mousemove connection
- _pointerConnect: null,
- _xhrStart: null,
- _xhrEnd: null,
- templateString: '<div dojoAttachPoint="loadNode" class="dojoxLoader">'
- +'<img src="${loadIcon}" class="dojoxLoaderIcon"> <span dojoAttachPoint="loadMessageNode" class="dojoxLoaderMessage"></span>'
- +'</div>',
-
- postCreate: function(){
- // summary: setup the loader
- if(!this.hasVisuals){
- this.loadNode.style.display = "none"; // _destroy()?
- }else{
- if(this.attachToPointer){
- dojo.removeClass(this.loadNode,"dojoxLoader");
- dojo.addClass(this.loadNode,"dojoxLoaderPointer");
- }
- this._hide();
- }
- this._setMessage(this.loadMessage);
- // FIXME: create our connections. would be easier, and this might be redundant
- // if Deferred published something. XHR published stuff. FIXME to use that.
- this._xhrStart = this.connect(dojo,"_ioSetArgs","_show");
- this._xhrEnd = this.connect(dojo.Deferred.prototype,"_fire","_hide");
- },
- _setMessage: function(/* String */ message){
- // summary: set's the message in the loader
- this.loadMessageNode.innerHTML = message;
- },
- _putLoader: function(/* Event */ e){
- // summary: place the floating loading element based on mousemove connection position
- dijit.placeOnScreen(this.loadNode,{ x: e.clientX+this._offset, y:e.clientY+this._offset }, ["TL","BR"]);
- },
- _show: function(){
- // summary: publish and show progress indicator
- dojo.publish("Loader",[{ message: 'started' }]);
- if(this.hasVisuals){
- if(this.attachToPointer){
- this._pointerConnect = this.connect(document,"onmousemove","_putLoader");
- }
- dojo.style(this.loadNode, {
- opacity:0, display:""
- });
- dojo.fadeIn({ node: this.loadNode, duration:this.duration }).play();
- }
- },
- _hide: function(){
- // summary: publish "xhr ended" and hide progress indicator
- dojo.publish("Loader",[{ message: 'ended' }]);
- if(this.hasVisuals){
- if(this.attachToPointer){
- this.disconnect(this._pointerConnect);
- }
- dojo.fadeOut({
- node: this.loadNode,
- duration:this.duration,
- onEnd: dojo.partial(dojo.style, this.loadNode, "display", "none")
- }).play();
- }
- }
- });
- });
|