| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-ux-ajax-Simlet'>/**
 
- </span> * @author Don Griffin
 
-  *
 
-  * This is a base class for more advanced "simlets" (simulated servers). A simlet is asked
 
-  * to provide a response given a {@link Ext.ux.ajax.SimXhr} instance.
 
-  */
 
- Ext.define('Ext.ux.ajax.Simlet', function () {
 
-     var urlRegex = /([^?#]*)(#.*)?$/,
 
-         dateRegex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/,
 
-         intRegex = /^[+-]?\d+$/,
 
-         floatRegex = /^[+-]?\d+\.\d+$/;
 
-     function parseParamValue (value) {
 
-         var m;
 
-         if (Ext.isDefined(value)) {
 
-             value = decodeURIComponent(value);
 
-             if (intRegex.test(value)) {
 
-                 value = parseInt(value, 10);
 
-             } else if (floatRegex.test(value)) {
 
-                 value = parseFloat(value);
 
-             } else if (!!(m = dateRegex.test(value))) {
 
-                 value = new Date(Date.UTC(+m[1], +m[2]-1, +m[3], +m[4], +m[5], +m[6]));
 
-             }
 
-         }
 
-         return value;
 
-     }
 
-     return {
 
-         alias: 'simlet.basic',
 
-         isSimlet: true,
 
-         responseProps: ['responseText', 'responseXML', 'status', 'statusText'],
 
- <span id='Ext-ux-ajax-Simlet-cfg-responseText'>        /**
 
- </span>         * @cfg {Number} responseText
 
-          */
 
- <span id='Ext-ux-ajax-Simlet-cfg-responseXML'>        /**
 
- </span>         * @cfg {Number} responseXML
 
-          */
 
- <span id='Ext-ux-ajax-Simlet-cfg-responseHeaders'>        /**
 
- </span>         * @cfg {Object} responseHeaders
 
-          */
 
- <span id='Ext-ux-ajax-Simlet-cfg-status'>        /**
 
- </span>         * @cfg {Number} status
 
-          */
 
-         status: 200,
 
- <span id='Ext-ux-ajax-Simlet-cfg-statusText'>        /**
 
- </span>         * @cfg {String} statusText
 
-          */
 
-         statusText: 'OK',
 
-         constructor: function (config) {
 
-             Ext.apply(this, config);
 
-         },
 
-         doGet: function (ctx) {
 
-             var me = this,
 
-                 ret = {};
 
-             Ext.each(me.responseProps, function (prop) {
 
-                 if (prop in me) {
 
-                     ret[prop] = me[prop];
 
-                 }
 
-             });
 
-             return ret;
 
-         },
 
-         doRedirect: function (ctx) {
 
-             return false;
 
-         },
 
- <span id='Ext-ux-ajax-Simlet-method-exec'>        /**
 
- </span>         * Performs the action requested by the given XHR and returns an object to be applied
 
-          * on to the XHR (containing `status`, `responseText`, etc.). For the most part,
 
-          * this is delegated to `doMethod` methods on this class, such as `doGet`.
 
-          *
 
-          * @param {Ext.ux.ajax.SimXhr} xhr The simulated XMLHttpRequest instance.
 
-          * @returns {Object} The response properties to add to the XMLHttpRequest.
 
-          */
 
-         exec: function (xhr) {
 
-             var me = this,
 
-                 ret = {},
 
-                 method = 'do' + Ext.String.capitalize(xhr.method.toLowerCase()), // doGet
 
-                 fn = me[method];
 
-             if (fn) {
 
-                 ret = fn.call(me, me.getCtx(xhr.method, xhr.url, xhr));
 
-             } else {
 
-                 ret = { status: 405, statusText: 'Method Not Allowed' };
 
-             }
 
-             return ret;
 
-         },
 
-         getCtx: function (method, url, xhr) {
 
-             return {
 
-                 method: method,
 
-                 params: this.parseQueryString(url),
 
-                 url: url,
 
-                 xhr: xhr
 
-             };
 
-         },
 
-         openRequest: function (method, url, options, async) {
 
-             var ctx = this.getCtx(method, url),
 
-                 redirect = this.doRedirect(ctx),
 
-                 xhr;
 
-             if (redirect) {
 
-                 xhr = redirect;
 
-             } else {
 
-                 xhr = new Ext.ux.ajax.SimXhr({
 
-                     mgr: this.manager,
 
-                     simlet: this,
 
-                     options: options
 
-                 });
 
-                 xhr.open(method, url, async);
 
-             }
 
-             return xhr;
 
-         },
 
-         parseQueryString : function (str) {
 
-             var m = urlRegex.exec(str),
 
-                 ret = {},
 
-                 key,
 
-                 value,
 
-                 i, n;
 
-             if (m && m[1]) {
 
-                 var pair, parts = m[1].split('&');
 
-                 for (i = 0, n = parts.length; i < n; ++i) {
 
-                     if ((pair = parts[i].split('='))[0]) {
 
-                         key = decodeURIComponent(pair.shift());
 
-                         value = parseParamValue((pair.length > 1) ? pair.join('=') : pair[0]);
 
-                         if (!(key in ret)) {
 
-                             ret[key] = value;
 
-                         } else if (Ext.isArray(ret[key])) {
 
-                             ret[key].push(value);
 
-                         } else {
 
-                             ret[key] = [ret[key], value];
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             return ret;
 
-         },
 
-         redirect: function (method, url, params) {
 
-             switch (arguments.length) {
 
-                 case 2:
 
-                     if (typeof url == 'string') {
 
-                         break;
 
-                     }
 
-                     params = url;
 
-                     // fall...
 
-                 case 1:
 
-                     url = method;
 
-                     method = 'GET';
 
-                     break;
 
-             }
 
-             if (params) {
 
-                 url = Ext.urlAppend(url, Ext.Object.toQueryString(params));
 
-             }
 
-             return this.manager.openRequest(method, url);
 
-         }
 
-     };
 
- }());
 
- </pre>
 
- </body>
 
- </html>
 
 
  |