123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <!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-data-proxy-Memory'>/**
- </span> * @author Ed Spencer
- *
- * In-memory proxy. This proxy simply uses a local variable for data storage/retrieval, so its contents are lost on
- * every page refresh.
- *
- * Usually this Proxy isn't used directly, serving instead as a helper to a {@link Ext.data.Store Store} where a reader
- * is required to load data. For example, say we have a Store for a User model and have some inline data we want to
- * load, but this data isn't in quite the right format: we can use a MemoryProxy with a JsonReader to read it into our
- * Store:
- *
- * //this is the model we will be using in the store
- * Ext.define('User', {
- * extend: 'Ext.data.Model',
- * fields: [
- * {name: 'id', type: 'int'},
- * {name: 'name', type: 'string'},
- * {name: 'phone', type: 'string', mapping: 'phoneNumber'}
- * ]
- * });
- *
- * //this data does not line up to our model fields - the phone field is called phoneNumber
- * var data = {
- * users: [
- * {
- * id: 1,
- * name: 'Ed Spencer',
- * phoneNumber: '555 1234'
- * },
- * {
- * id: 2,
- * name: 'Abe Elias',
- * phoneNumber: '666 1234'
- * }
- * ]
- * };
- *
- * //note how we set the 'root' in the reader to match the data structure above
- * var store = Ext.create('Ext.data.Store', {
- * autoLoad: true,
- * model: 'User',
- * data : data,
- * proxy: {
- * type: 'memory',
- * reader: {
- * type: 'json',
- * root: 'users'
- * }
- * }
- * });
- */
- Ext.define('Ext.data.proxy.Memory', {
- extend: 'Ext.data.proxy.Client',
- alias: 'proxy.memory',
- alternateClassName: 'Ext.data.MemoryProxy',
- <span id='Ext-data-proxy-Memory-cfg-data'> /**
- </span> * @cfg {Object} data
- * Optional data to pass to configured Reader.
- */
- constructor: function(config) {
- this.callParent([config]);
- //ensures that the reader has been instantiated properly
- this.setReader(this.reader);
- },
-
- <span id='Ext-data-proxy-Memory-method-updateOperation'> /**
- </span> * @private
- * Fake processing function to commit the records, set the current operation
- * to successful and call the callback if provided. This function is shared
- * by the create, update and destroy methods to perform the bare minimum
- * processing required for the proxy to register a result from the action.
- */
- updateOperation: function(operation, callback, scope) {
- var i = 0,
- recs = operation.getRecords(),
- len = recs.length;
-
- for (i; i < len; i++) {
- recs[i].commit();
- }
- operation.setCompleted();
- operation.setSuccessful();
-
- Ext.callback(callback, scope || this, [operation]);
- },
-
- <span id='Ext-data-proxy-Memory-method-create'> /**
- </span> * Currently this is a hard-coded method that simply commits any records and sets the operation to successful,
- * then calls the callback function, if provided. It is essentially mocking a server call in memory, but since
- * there is no real back end in this case there's not much else to do. This method can be easily overridden to
- * implement more complex logic if needed.
- * @param {Ext.data.Operation} operation The Operation to perform
- * @param {Function} callback Callback function to be called when the Operation has completed (whether
- * successful or not)
- * @param {Object} scope Scope to execute the callback function in
- * @method
- */
- create: function() {
- this.updateOperation.apply(this, arguments);
- },
-
- <span id='Ext-data-proxy-Memory-method-update'> /**
- </span> * Currently this is a hard-coded method that simply commits any records and sets the operation to successful,
- * then calls the callback function, if provided. It is essentially mocking a server call in memory, but since
- * there is no real back end in this case there's not much else to do. This method can be easily overridden to
- * implement more complex logic if needed.
- * @param {Ext.data.Operation} operation The Operation to perform
- * @param {Function} callback Callback function to be called when the Operation has completed (whether
- * successful or not)
- * @param {Object} scope Scope to execute the callback function in
- * @method
- */
- update: function() {
- this.updateOperation.apply(this, arguments);
- },
-
- <span id='Ext-data-proxy-Memory-method-destroy'> /**
- </span> * Currently this is a hard-coded method that simply commits any records and sets the operation to successful,
- * then calls the callback function, if provided. It is essentially mocking a server call in memory, but since
- * there is no real back end in this case there's not much else to do. This method can be easily overridden to
- * implement more complex logic if needed.
- * @param {Ext.data.Operation} operation The Operation to perform
- * @param {Function} callback Callback function to be called when the Operation has completed (whether
- * successful or not)
- * @param {Object} scope Scope to execute the callback function in
- * @method
- */
- destroy: function() {
- this.updateOperation.apply(this, arguments);
- },
- <span id='Ext-data-proxy-Memory-method-read'> /**
- </span> * Reads data from the configured {@link #data} object. Uses the Proxy's {@link #reader}, if present.
- * @param {Ext.data.Operation} operation The read Operation
- * @param {Function} callback The callback to call when reading has completed
- * @param {Object} scope The scope to call the callback function in
- */
- read: function(operation, callback, scope) {
- var me = this;
- operation.resultSet = me.getReader().read(me.data);
- operation.setCompleted();
- operation.setSuccessful();
- Ext.callback(callback, scope || me, [operation]);
- },
- clear: Ext.emptyFn
- });
- </pre>
- </body>
- </html>
|