<!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-StoreManager'>/**
|
</span> * @docauthor Evan Trimboli <evan@sencha.com>
|
*
|
* 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:
|
*
|
* Ext.create('Ext.data.Store', {
|
* model: 'SomeModel',
|
* storeId: 'myStore'
|
* });
|
*
|
* var store = Ext.data.StoreManager.lookup('myStore');
|
*
|
* Also note that the {@link #lookup} method is aliased to {@link Ext#getStore} for convenience.
|
*
|
* 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:
|
*
|
* Ext.create('Ext.data.Store', {
|
* model: 'SomeModel',
|
* storeId: 'myStore'
|
* });
|
*
|
* Ext.create('Ext.view.View', {
|
* store: 'myStore',
|
* // other configuration here
|
* });
|
*
|
*/
|
Ext.define('Ext.data.StoreManager', {
|
extend: 'Ext.util.MixedCollection',
|
alternateClassName: ['Ext.StoreMgr', 'Ext.data.StoreMgr', 'Ext.StoreManager'],
|
singleton: true,
|
uses: ['Ext.data.ArrayStore'],
|
|
<span id='Ext-data-StoreManager-cfg-listeners'> /**
|
</span> * @cfg {Object} listeners
|
* @private
|
*/
|
|
<span id='Ext-data-StoreManager-method-register'> /**
|
</span> * 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...} stores Any number of Store instances
|
*/
|
register : function() {
|
for (var i = 0, s; (s = arguments[i]); i++) {
|
this.add(s);
|
}
|
},
|
|
<span id='Ext-data-StoreManager-method-unregister'> /**
|
</span> * Unregisters one or more Stores with the StoreManager
|
* @param {String/Object...} stores Any number of Store instances or ID-s
|
*/
|
unregister : function() {
|
for (var i = 0, s; (s = arguments[i]); i++) {
|
this.remove(this.lookup(s));
|
}
|
},
|
|
<span id='Ext-data-StoreManager-method-lookup'> /**
|
</span> * Gets a registered Store by id
|
* @param {String/Object} store 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 new 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);
|
}
|
},
|
|
<span id='Ext-data-StoreManager-method-getKey'> // getKey implementation for MixedCollection
|
</span> getKey : function(o) {
|
return o.storeId;
|
}
|
}, function() {
|
<span id='Ext-method-regStore'> /**
|
</span> * Creates a new store for the given id and config, then registers it with the {@link Ext.data.StoreManager Store Manager}.
|
* Sample usage:
|
*
|
* Ext.regStore('AllUsers', {
|
* model: 'User'
|
* });
|
*
|
* // the store can now easily be used throughout the application
|
* new Ext.List({
|
* store: 'AllUsers',
|
* ... other config
|
* });
|
*
|
* @param {String} id The id to set on the new store
|
* @param {Object} config The store config
|
* @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 = new Ext.data.Store(config);
|
}
|
|
return Ext.data.StoreManager.register(store);
|
};
|
|
<span id='Ext-method-getStore'> /**
|
</span> * Shortcut to {@link Ext.data.StoreManager#lookup}.
|
* @member Ext
|
* @method getStore
|
* @inheritdoc Ext.data.StoreManager#lookup
|
*/
|
Ext.getStore = function(name) {
|
return Ext.data.StoreManager.lookup(name);
|
};
|
});
|
</pre>
|
</body>
|
</html>
|