X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/source/StoreManager.html diff --git a/docs/source/StoreManager.html b/docs/source/StoreManager.html new file mode 100644 index 00000000..fb1c49ba --- /dev/null +++ b/docs/source/StoreManager.html @@ -0,0 +1,166 @@ +
\ No newline at end of file/** + * @class Ext.data.StoreManager + * @extends Ext.util.MixedCollection + * <p>Contains a collection of all stores that are created that have an identifier. + * An identifier can be assigned by setting the {@link Ext.data.AbstractStore#storeId storeId} + * property. When a store is in the StoreManager, it can be referred to via it's identifier: + * <pre><code> +Ext.create('Ext.data.Store', { + model: 'SomeModel', + storeId: 'myStore' +}); + +var store = Ext.data.StoreManager.lookup('myStore'); + * </code></pre> + * Also note that the {@link #lookup} method is aliased to {@link Ext#getStore} for convenience.</p> + * <p> + * If a store is registered with the StoreManager, you can also refer to the store by it's identifier when + * registering it with any Component that consumes data from a store: + * <pre><code> +Ext.create('Ext.data.Store', { + model: 'SomeModel', + storeId: 'myStore' +}); + +Ext.create('Ext.view.View', { + store: 'myStore', + // other configuration here +}); + * </code></pre> + * </p> + * @singleton + * @docauthor Evan Trimboli <evan@sencha.com> + * TODO: Make this an AbstractMgr + */ +Ext.define('Ext.data.StoreManager', { + extend: 'Ext.util.MixedCollection', + alternateClassName: ['Ext.StoreMgr', 'Ext.data.StoreMgr', 'Ext.StoreManager'], + singleton: true, + uses: ['Ext.data.ArrayStore'], + + /** + * @cfg {Object} listeners @hide + */ + + /** + * Registers one or more Stores with the StoreManager. You do not normally need to register stores + * manually. Any store initialized with a {@link Ext.data.Store#storeId} will be auto-registered. + * @param {Ext.data.Store} store1 A Store instance + * @param {Ext.data.Store} store2 (optional) + * @param {Ext.data.Store} etc... (optional) + */ + register : function() { + for (var i = 0, s; (s = arguments[i]); i++) { + this.add(s); + } + }, + + /** + * Unregisters one or more Stores with the StoreManager + * @param {String/Object} id1 The id of the Store, or a Store instance + * @param {String/Object} id2 (optional) + * @param {String/Object} etc... (optional) + */ + unregister : function() { + for (var i = 0, s; (s = arguments[i]); i++) { + this.remove(this.lookup(s)); + } + }, + + /** + * Gets a registered Store by id + * @param {String/Object} id The id of the Store, or a Store instance, or a store configuration + * @return {Ext.data.Store} + */ + lookup : function(store) { + // handle the case when we are given an array or an array of arrays. + if (Ext.isArray(store)) { + var fields = ['field1'], + expand = !Ext.isArray(store[0]), + data = store, + i, + len; + + if(expand){ + data = []; + for (i = 0, len = store.length; i < len; ++i) { + data.push([store[i]]); + } + } else { + for(i = 2, len = store[0].length; i <= len; ++i){ + fields.push('field' + i); + } + } + return Ext.create('Ext.data.ArrayStore', { + data : data, + fields: fields, + autoDestroy: true, + autoCreated: true, + expanded: expand + }); + } + + if (Ext.isString(store)) { + // store id + return this.get(store); + } else { + // store instance or store config + return Ext.data.AbstractStore.create(store); + } + }, + + // getKey implementation for MixedCollection + getKey : function(o) { + return o.storeId; + } +}, function() { + /** + * <p>Creates a new store for the given id and config, then registers it with the {@link Ext.data.StoreManager Store Mananger}. + * Sample usage:</p> + <pre><code> + Ext.regStore('AllUsers', { + model: 'User' + }); + + //the store can now easily be used throughout the application + new Ext.List({ + store: 'AllUsers', + ... other config + }); + </code></pre> + * @param {String} id The id to set on the new store + * @param {Object} config The store config + * @param {Constructor} cls The new Component class. + * @member Ext + * @method regStore + */ + Ext.regStore = function(name, config) { + var store; + + if (Ext.isObject(name)) { + config = name; + } else { + config.storeId = name; + } + + if (config instanceof Ext.data.Store) { + store = config; + } else { + store = Ext.create('Ext.data.Store', config); + } + + return Ext.data.StoreManager.register(store); + }; + + /** + * Gets a registered Store by id (shortcut to {@link #lookup}) + * @param {String/Object} id The id of the Store, or a Store instance + * @return {Ext.data.Store} + * @member Ext + * @method getStore + */ + Ext.getStore = function(name) { + return Ext.data.StoreManager.lookup(name); + }; +}); +