[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 /* 2 YUI 3.17.2 (build 9c3c78e) 3 Copyright 2014 Yahoo! Inc. All rights reserved. 4 Licensed under the BSD License. 5 http://yuilibrary.com/license/ 6 */ 7 8 YUI.add('datasource-get', function (Y, NAME) { 9 10 /** 11 * Provides a DataSource implementation which can be used to retrieve data via the Get Utility. 12 * 13 * @module datasource 14 * @submodule datasource-get 15 */ 16 17 /** 18 * Get Utility subclass for the DataSource Utility. 19 * @class DataSource.Get 20 * @extends DataSource.Local 21 * @constructor 22 */ 23 var DSGet = function() { 24 DSGet.superclass.constructor.apply(this, arguments); 25 }; 26 27 28 Y.DataSource.Get = Y.extend(DSGet, Y.DataSource.Local, { 29 /** 30 * Passes query string to Get Utility. Fires <code>response</code> event when 31 * response is received asynchronously. 32 * 33 * @method _defRequestFn 34 * @param e {EventFacade} Event Facade with the following properties: 35 * <dl> 36 * <dt>tId (Number)</dt> <dd>Unique transaction ID.</dd> 37 * <dt>request (Object)</dt> <dd>The request.</dd> 38 * <dt>callback (Object)</dt> <dd>The callback object with the following properties: 39 * <dl> 40 * <dt>success (Function)</dt> <dd>Success handler.</dd> 41 * <dt>failure (Function)</dt> <dd>Failure handler.</dd> 42 * </dl> 43 * </dd> 44 * <dt>cfg (Object)</dt> <dd>Configuration object.</dd> 45 * </dl> 46 * @protected 47 */ 48 _defRequestFn: function(e) { 49 var uri = this.get("source"), 50 get = this.get("get"), 51 guid = Y.guid().replace(/\-/g, '_'), 52 generateRequest = this.get( "generateRequestCallback" ), 53 payload = e.details[0], 54 self = this; 55 56 /** 57 * Stores the most recent request id for validation against stale 58 * response handling. 59 * 60 * @property _last 61 * @type {String} 62 * @protected 63 */ 64 this._last = guid; 65 66 // Dynamically add handler function with a closure to the callback stack 67 // for access to guid 68 YUI.Env.DataSource.callbacks[guid] = function(response) { 69 delete YUI.Env.DataSource.callbacks[guid]; 70 delete Y.DataSource.Local.transactions[e.tId]; 71 72 var process = self.get('asyncMode') !== "ignoreStaleResponses" || 73 self._last === guid; 74 75 if (process) { 76 payload.data = response; 77 78 self.fire("data", payload); 79 } else { 80 } 81 82 }; 83 84 // Add the callback param to the request url 85 uri += e.request + generateRequest.call( this, guid ); 86 87 88 Y.DataSource.Local.transactions[e.tId] = get.script(uri, { 89 autopurge: true, 90 // Works in Firefox only.... 91 onFailure: function (o) { 92 delete YUI.Env.DataSource.callbacks[guid]; 93 delete Y.DataSource.Local.transactions[e.tId]; 94 95 payload.error = new Error(o.msg || "Script node data failure"); 96 97 98 self.fire("data", payload); 99 }, 100 onTimeout: function(o) { 101 delete YUI.Env.DataSource.callbacks[guid]; 102 delete Y.DataSource.Local.transactions[e.tId]; 103 104 payload.error = new Error(o.msg || "Script node data timeout"); 105 106 107 self.fire("data", payload); 108 } 109 }); 110 111 return e.tId; 112 }, 113 114 115 /** 116 * Default method for adding callback param to url. See 117 * generateRequestCallback attribute. 118 * 119 * @method _generateRequest 120 * @param guid {String} unique identifier for callback function wrapper 121 * @protected 122 */ 123 _generateRequest: function (guid) { 124 return "&" + this.get("scriptCallbackParam") + 125 "=YUI.Env.DataSource.callbacks." + guid; 126 } 127 128 }, { 129 130 /** 131 * Class name. 132 * 133 * @property NAME 134 * @type String 135 * @static 136 * @final 137 * @value "dataSourceGet" 138 */ 139 NAME: "dataSourceGet", 140 141 142 //////////////////////////////////////////////////////////////////////////// 143 // 144 // DataSource.Get Attributes 145 // 146 //////////////////////////////////////////////////////////////////////////// 147 ATTRS: { 148 /** 149 * Pointer to Get Utility. 150 * 151 * @attribute get 152 * @type Y.Get 153 * @default Y.Get 154 */ 155 get: { 156 value: Y.Get, 157 cloneDefaultValue: false 158 }, 159 160 /** 161 * Defines request/response management in the following manner: 162 * <dl> 163 * <!--<dt>queueRequests</dt> 164 * <dd>If a request is already in progress, wait until response is 165 * returned before sending the next request.</dd> 166 * <dt>cancelStaleRequests</dt> 167 * <dd>If a request is already in progress, cancel it before 168 * sending the next request.</dd>--> 169 * <dt>ignoreStaleResponses</dt> 170 * <dd>Send all requests, but handle only the response for the most 171 * recently sent request.</dd> 172 * <dt>allowAll</dt> 173 * <dd>Send all requests and handle all responses.</dd> 174 * </dl> 175 * 176 * @attribute asyncMode 177 * @type String 178 * @default "allowAll" 179 */ 180 asyncMode: { 181 value: "allowAll" 182 }, 183 184 /** 185 * Callback string parameter name sent to the remote script. By default, 186 * requests are sent to 187 * <URI>?<scriptCallbackParam>=callbackFunction 188 * 189 * @attribute scriptCallbackParam 190 * @type String 191 * @default "callback" 192 */ 193 scriptCallbackParam : { 194 value: "callback" 195 }, 196 197 /** 198 * Accepts the DataSource instance and a callback ID, and returns a callback 199 * param/value string that gets appended to the script URI. Implementers 200 * can customize this string to match their server's query syntax. 201 * 202 * @attribute generateRequestCallback 203 * @type Function 204 */ 205 generateRequestCallback : { 206 value: function () { 207 return this._generateRequest.apply(this, arguments); 208 } 209 } 210 } 211 }); 212 213 YUI.namespace("Env.DataSource.callbacks"); 214 215 216 }, '3.17.2', {"requires": ["datasource-local", "get"]});
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |