summaryrefslogtreecommitdiff
path: root/lib/dojo/request/notify.js.uncompressed.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-03-18 10:26:24 +0400
committerAndrew Dolgov <[email protected]>2013-03-18 10:26:26 +0400
commitf0cfe83e3725f9a3928da97a6e3085e79cb25309 (patch)
tree4b0af188defaa807c7bc6ff3a101b41c9166c463 /lib/dojo/request/notify.js.uncompressed.js
parent9a2885da170ffd64358b99194095851a2d09c1b6 (diff)
upgrade dojo to 1.8.3 (refs #570)
Diffstat (limited to 'lib/dojo/request/notify.js.uncompressed.js')
-rw-r--r--lib/dojo/request/notify.js.uncompressed.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/lib/dojo/request/notify.js.uncompressed.js b/lib/dojo/request/notify.js.uncompressed.js
new file mode 100644
index 000000000..2b8a2b68b
--- /dev/null
+++ b/lib/dojo/request/notify.js.uncompressed.js
@@ -0,0 +1,74 @@
+define("dojo/request/notify", ['../Evented', '../_base/lang', './util'], function(Evented, lang, util){
+ // module:
+ // dojo/request/notify
+ // summary:
+ // Global notification API for dojo/request. Notifications will
+ // only be emitted if this module is required.
+ //
+ // | require('dojo/request', 'dojo/request/notify',
+ // | function(request, notify){
+ // | notify('load', function(response){
+ // | if(response.url === 'someUrl.html'){
+ // | console.log('Loaded!');
+ // | }
+ // | });
+ // | request.get('someUrl.html');
+ // | }
+ // | );
+
+ var pubCount = 0,
+ slice = [].slice;
+
+ var hub = lang.mixin(new Evented, {
+ onsend: function(data){
+ if(!pubCount){
+ this.emit('start');
+ }
+ pubCount++;
+ },
+ _onload: function(data){
+ this.emit('done', data);
+ },
+ _onerror: function(data){
+ this.emit('done', data);
+ },
+ _ondone: function(data){
+ if(--pubCount <= 0){
+ pubCount = 0;
+ this.emit('stop');
+ }
+ },
+ emit: function(type, event){
+ var result = Evented.prototype.emit.apply(this, arguments);
+
+ // After all event handlers have run, run _on* handler
+ if(this['_on' + type]){
+ this['_on' + type].apply(this, slice.call(arguments, 1));
+ }
+ return result;
+ }
+ });
+
+ function notify(type, listener){
+ // summary:
+ // Register a listener to be notified when an event
+ // in dojo/request happens.
+ // type: String?
+ // The event to listen for. Events emitted: "start", "send",
+ // "load", "error", "done", "stop".
+ // listener: Function?
+ // A callback to be run when an event happens.
+ // returns:
+ // A signal object that can be used to cancel the listener.
+ // If remove() is called on this signal object, it will
+ // stop the listener from being executed.
+ return hub.on(type, listener);
+ }
+ notify.emit = function(type, event, cancel){
+ return hub.emit(type, event, cancel);
+ };
+
+ // Attach notify to dojo/request/util to avoid
+ // try{ require('./notify'); }catch(e){}
+ return util.notify = notify;
+});