| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | 
							- <!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-grid-property-Store'>/**
 
- </span> * A custom {@link Ext.data.Store} for the {@link Ext.grid.property.Grid}. This class handles the mapping
 
-  * between the custom data source objects supported by the grid and the {@link Ext.grid.property.Property} format
 
-  * used by the {@link Ext.data.Store} base class.
 
-  */
 
- Ext.define('Ext.grid.property.Store', {
 
-     extend: 'Ext.data.Store',
 
-     alternateClassName: 'Ext.grid.PropertyStore',
 
-     sortOnLoad: false,
 
-     uses: ['Ext.data.reader.Reader', 'Ext.data.proxy.Proxy', 'Ext.data.ResultSet', 'Ext.grid.property.Property'],
 
- <span id='Ext-grid-property-Store-method-constructor'>    /**
 
- </span>     * Creates new property store.
 
-      * @param {Ext.grid.Panel} grid The grid this store will be bound to
 
-      * @param {Object} source The source data config object
 
-      */
 
-     constructor : function(grid, source){
 
-         var me = this;
 
-         
 
-         me.grid = grid;
 
-         me.source = source;
 
-         me.callParent([{
 
-             data: source,
 
-             model: Ext.grid.property.Property,
 
-             proxy: me.getProxy()
 
-         }]);
 
-     },
 
-     // Return a singleton, customized Proxy object which configures itself with a custom Reader
 
-     getProxy: function() {
 
-         if (!this.proxy) {
 
-             Ext.grid.property.Store.prototype.proxy = new Ext.data.proxy.Memory({
 
-                 model: Ext.grid.property.Property,
 
-                 reader: this.getReader()
 
-             });
 
-         }
 
-         return this.proxy;
 
-     },
 
-     // Return a singleton, customized Reader object which reads Ext.grid.property.Property records from an object.
 
-     getReader: function() {
 
-         if (!this.reader) {
 
-             Ext.grid.property.Store.prototype.reader = new Ext.data.reader.Reader({
 
-                 model: Ext.grid.property.Property,
 
-                 buildExtractors: Ext.emptyFn,
 
-                 read: function(dataObject) {
 
-                     return this.readRecords(dataObject);
 
-                 },
 
-                 readRecords: function(dataObject) {
 
-                     var val,
 
-                         propName,
 
-                         result = {
 
-                             records: [],
 
-                             success: true
 
-                         };
 
-                     for (propName in dataObject) {
 
-                         if (dataObject.hasOwnProperty(propName)) {
 
-                             val = dataObject[propName];
 
-                             if (this.isEditableValue(val)) {
 
-                                 result.records.push(new Ext.grid.property.Property({
 
-                                     name: propName,
 
-                                     value: val
 
-                                 }, propName));
 
-                             }
 
-                         }
 
-                     }
 
-                     result.total = result.count = result.records.length;
 
-                     return new Ext.data.ResultSet(result);
 
-                 },
 
-                 // private
 
-                 isEditableValue: function(val){
 
-                     return Ext.isPrimitive(val) || Ext.isDate(val);
 
-                 }
 
-             });
 
-         }
 
-         return this.reader;
 
-     },
 
-     // protected - should only be called by the grid.  Use grid.setSource instead.
 
-     setSource : function(dataObject) {
 
-         var me = this;
 
-         me.source = dataObject;
 
-         me.suspendEvents();
 
-         me.removeAll();
 
-         me.proxy.data = dataObject;
 
-         me.load();
 
-         me.resumeEvents();
 
-         me.fireEvent('datachanged', me);
 
-         me.fireEvent('refresh', me);
 
-     },
 
-     // private
 
-     getProperty : function(row) {
 
-        return Ext.isNumber(row) ? this.getAt(row) : this.getById(row);
 
-     },
 
-     // private
 
-     setValue : function(prop, value, create){
 
-         var me = this,
 
-             rec = me.getRec(prop);
 
-             
 
-         if (rec) {
 
-             rec.set('value', value);
 
-             me.source[prop] = value;
 
-         } else if (create) {
 
-             // only create if specified.
 
-             me.source[prop] = value;
 
-             rec = new Ext.grid.property.Property({name: prop, value: value}, prop);
 
-             me.add(rec);
 
-         }
 
-     },
 
-     // private
 
-     remove : function(prop) {
 
-         var rec = this.getRec(prop);
 
-         if (rec) {
 
-             this.callParent([rec]);
 
-             delete this.source[prop];
 
-         }
 
-     },
 
-     // private
 
-     getRec : function(prop) {
 
-         return this.getById(prop);
 
-     },
 
-     // protected - should only be called by the grid.  Use grid.getSource instead.
 
-     getSource : function() {
 
-         return this.source;
 
-     }
 
- });</pre>
 
- </body>
 
- </html>
 
 
  |