Hierarchy
Ext.data.AbstractStoreExt.data.StoreExt.data.DirectStoreMixins
Small helper class to create an Ext.data.Store configured with an Ext.data.proxy.Direct and Ext.data.reader.Json to make interacting with an Ext.Direct Server-side Provider easier. To create a different proxy/reader combination create a basic Ext.data.Store configured as needed.
*Note: Although they are not listed, this class inherits all of the config options of:
If data is not specified, and if autoLoad is true or an Object, this store's load method is automatically called after creation. If the value of autoLoad is an Object, this Object will be passed to the store's load method. Defaults to false.
True to automatically sync the Store with its Proxy after every edit to one of its Records. Defaults to false.
True to automatically sync the Store with its Proxy after every edit to one of its Records. Defaults to false.
Allow the store to buffer and pre-fetch pages of records. This is to be used in conjunction with a view will tell the store to pre-fetch records ahead of a time.
True to empty the store when loading another page via loadPage, nextPage or previousPage (defaults to true). Setting to false keeps existing records, allowing large data sets to be loaded one page at a time but rendered all together.
Optional array of Model instances or data objects to load locally. See "Inline data" above for details.
Optional array of Model instances or data objects to load locally. See "Inline data" above for details.
This may be used in place of specifying a model configuration. The fields should be a set of Ext.data.Field configuration objects. The store will automatically create a Ext.data.Model with these fields. In general this configuration option should be avoided, it exists for the purposes of backwards compatibility. For anything more complicated, such as specifying a particular id property or assocations, a Ext.data.Model should be defined and specified for the model config.
(optional)
A config object containing one or more event handlers to be added to this object during initialization. This should be a valid listeners config object as specified in the addListener example for attaching multiple handlers at once.
DOM events from ExtJs Components
While some ExtJs Component classes export selected DOM events (e.g. "click", "mouseover" etc), this
is usually only done when extra value can be added. For example the DataView's
click
event passing the node clicked on. To access DOM
events directly from a child element of a Component, we need to specify the element
option to
identify the Component property to add a DOM listener to:
new Ext.panel.Panel({
width: 400,
height: 200,
dockedItems: [{
xtype: 'toolbar'
}],
listeners: {
click: {
element: 'el', //bind to the underlying el property on the panel
fn: function(){ console.log('click el'); }
},
dblclick: {
element: 'body', //bind to the underlying body property on the panel
fn: function(){ console.log('dblclick body'); }
}
}
});
The Ext.data.Model associated with this store
The Ext.data.Model associated with this store
The Proxy to use for this Store. This can be either a string, a config object or a Proxy instance - see setProxy for details.
The number of pages to keep in the cache before purging additional records. A value of 0 indicates to never purge the prefetched data. This option is only relevant when the buffered option is set to true.
True to defer any filtering operation to the server. If false, filtering is done locally on the client. Defaults to false.
True if the grouping should apply on the server side, false if it is local only (defaults to false). If the grouping is local, it can be applied immediately to the data. If it is remote, then it will simply act as a helper, automatically sending the grouping information to the server.
True to defer any sorting operation to the server. If false, sorting is done locally on the client. Defaults to false.
True to defer any sorting operation to the server. If false, sorting is done locally on the client. Defaults to false.
Optional unique identifier for this store. If present, this Store will be registered with the Ext.data.StoreManager, making it easy to reuse elsewhere. Defaults to undefined.
Loop over each record returned from the server. Assume they are returned in order of how they were sent. If we find a matching record, replace it with the newly created one.
Sets the updating behavior based on batch synchronization. 'operation' (the default) will update the Store's internal representation of the data after each operation of the batch has completed, 'complete' will wait until the entire batch has been completed before updating the Store's data. 'complete' is a good choice for local storage proxies, 'operation' is better for remote proxies, where there is a comparatively high latency.
The MixedCollection that holds this store's local cache of records
The MixedCollection that holds this store's local cache of records
The string type of the Proxy to create if none is specified. This defaults to creating a memory proxy.
The string type of the Proxy to create if none is specified. This defaults to creating a memory proxy.
The default sort direction to use if one is not specified (defaults to "ASC")
The default sort direction to use if one is not specified (defaults to "ASC")
If true, any filters attached to this Store will be run after loading data, before the datachanged event is fired. Defaults to true, ignored if remoteFilter is true
The direction in which sorting should be applied when grouping. Defaults to "ASC" - the other supported value is "DESC"
The direction in which sorting should be applied when grouping. Defaults to "ASC" - the other supported value is "DESC"
True if the Store has already been destroyed via destroyStore. If this is true, the reference to Store should be deleted as it will not function correctly any more.
Flag denoting that this object is sortable. Always true.
Flag denoting that this object is sortable. Always true.
The number of records considered to form a 'page'. This is used to power the built-in paging using the nextPage and previousPage functions. Defaults to 25.
Removes all records from the store. This method does a "fast remove", individual remove events are not called. The clear event is fired upon completion.
A pristine (unfiltered) collection of the records in this store. This is used to reinstate records when a filter is removed or changed
If true, any sorters attached to this Store will be run after loading data, before the datachanged event is fired. Defaults to true, igored if remoteSort is true
Adds Model instances to the Store by instantiating them based on a JavaScript object. When adding already- instantiated Models, use insert instead. The instances will be added at the end of the existing collection. This method accepts either a single argument array of Model instances or any number of model instance arguments. Sample usage:
myStore.add({some: 'data'}, {some: 'other data'});
The data for each model
The array of newly created model instances
Adds the specified events to the list of events which this Observable may fire.
Adds the specified events to the list of events which this Observable may fire.
Either an object with event names as properties with a value of true
or the first event name string if multiple event names are being passed as separate parameters.
[additional] Optional additional event names if multiple event names are being passed as separate parameters. Usage:
this.addEvents('storeloaded', 'storecleared');
Appends an event handler to this object.
Appends an event handler to this object.
The name of the event to listen for. May also be an object who's property names are event names. See
The method the event invokes.
(optional) The scope (this
reference) in which the handler function is executed.
If omitted, defaults to the object which fired the event.
(optional) An object containing handler configuration. properties. This may contain any of the following properties:
this
reference) in which the handler function is executed.
If omitted, defaults to the object which fired the event.This option is useful during Component construction to add DOM event listeners to elements of Components which will exist only after the Component is rendered. For example, to add a click listener to a Panel's body:
new Ext.panel.Panel({
title: 'The title',
listeners: {
click: this.handlePanelClick,
element: 'body'
}
});
When added in this way, the options available are the options applicable to Ext.core.Element.addListener
Combining Options
Using the options argument, it is possible to combine different types of listeners:
A delayed, one-time listener.
myPanel.on('hide', this.handleClick, this, {
single: true,
delay: 100
});
Attaching multiple handlers in 1 call
The method also allows for a single argument to be passed which is a config object containing properties
which specify multiple events. For example:
myGridPanel.on({
cellClick: this.onCellClick,
mouseover: this.onMouseOver,
mouseout: this.onMouseOut,
scope: this // Important. Ensure "this" is correct during handler execution
});
.
Adds listeners to any Observable object (or Element) which are automatically removed when this Component is destroyed.
Adds listeners to any Observable object (or Element) which are automatically removed when this Component is destroyed.
The item to which to add a listener/listeners.
The event name, or an object containing event name properties.
Optional. If the ename
parameter was an event name, this
is the handler function.
Optional. If the ename
parameter was an event name, this
is the scope (this
reference) in which the handler function is executed.
Optional. If the ename
parameter was an event name, this
is the addListener options.
Runs the aggregate function for all the records in the store.
Runs the aggregate function for all the records in the store.
The function to execute. The function is called with a single parameter, an array of records for that group.
(optional) The scope to execute the function in. Defaults to the store.
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the group average being the value. The grouped parameter is only honored if the store has a groupField.
(optional) Any arguments to append to the function call
An object literal with the group names and their appropriate values.
Gets the average value in the store.
Gets the average value in the store.
The field in each record
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the group average being the value. The grouped parameter is only honored if the store has a groupField.
The average value, if no items exist, 0.
Starts capture on the specified Observable. All events will be passed to the supplied function with the event name + standard signature of the event before the event is fired. If the supplied function returns false, the event will not fire.
The Observable to capture events from.
The function to call when an event is fired.
(optional) The scope (this
reference) in which the function is executed. Defaults to the Observable firing the event.
Revert to a view of the Record cache with no filtering applied.
Revert to a view of the Record cache with no filtering applied.
If true the filter is cleared silently without firing the datachanged event.
Removes all listeners for this object including the managed listeners
Removes all listeners for this object including the managed listeners
Removes all managed listeners for this object.
Removes all managed listeners for this object.
Collects unique values for a particular dataIndex from this store.
Collects unique values for a particular dataIndex from this store.
The property to collect
(optional) Pass true to allow null, undefined or empty string values
(optional) Pass true to collect from all records, even ones which are filtered
An array of the unique values
Gets the count of items in the store.
Gets the count of items in the store.
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the count for each group being the value. The grouped parameter is only honored if the store has a groupField.
the count
Calls the specified function for each of the Records in the cache.
Calls the specified function for each of the Records in the cache.
The function to call. The Record is passed as the first parameter. Returning false aborts and exits the iteration.
(optional) The scope (this
reference) in which the function is executed.
Defaults to the current Record in the iteration.
Enables events fired by this Observable to bubble up an owner hierarchy by calling
this.getBubbleTarget()
if present. There is no implementation in the Observable base class.
This is commonly used by Ext.Components to bubble events to owner Containers. See Ext.Component.getBubbleTarget. The default implementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to access the required target more quickly.
Example:
Ext.override(Ext.form.field.Base, {
// Add functionality to Field's initComponent to enable the change event to bubble
initComponent : Ext.Function.createSequence(Ext.form.field.Base.prototype.initComponent, function() {
this.enableBubble('change');
}),
// We know that we want Field's events to bubble directly to the FormPanel.
getBubbleTarget : function() {
if (!this.formPanel) {
this.formPanel = this.findParentByType('form');
}
return this.formPanel;
}
});
var myForm = new Ext.formPanel({
title: 'User Details',
items: [{
...
}],
listeners: {
change: function() {
// Title goes red if form has been modified.
myForm.header.setStyle('color', 'red');
}
}
});
The event name to bubble, or an Array of event names.
Filters the loaded set of records by a given set of filters.
Filters the loaded set of records by a given set of filters.
The set of filters to apply to the data. These are stored internally on the store, but the filtering itself is done on the Store's MixedCollection. See MixedCollection's filter method for filter syntax. Alternatively, pass in a property string
Optional value to filter by (only if using a property string as the first argument)
Filter by a function. The specified function will be called for each Record in this Store. If the function returns true the Record is included, otherwise it is filtered out.
The function to be called. It will be passed the following parameters:
The record to test for filtering. Access field values using Ext.data.Model.get.
The ID of the Record passed.
(optional) The scope (this
reference) in which the function is executed. Defaults to this Store.
Finds the index of the first matching Record in this store by a specific field value.
Finds the index of the first matching Record in this store by a specific field value.
The name of the Record field to test.
Either a string that the field value should begin with, or a RegExp to test against the field.
(optional) The index to start searching at
(optional) True to match any part of the string, not just the beginning
(optional) True for case sensitive comparison
True to force exact match (^ and $ characters added to the regex). Defaults to false.
The matched index or -1
Find the index of the first matching Record in this Store by a function. If the function returns true it is considered a match.
The function to be called. It will be passed the following parameters:
The record to test for filtering. Access field values using Ext.data.Model.get.
The ID of the Record passed.
(optional) The scope (this
reference) in which the function is executed. Defaults to this Store.
(optional) The index to start searching at
The matched index or -1
Finds the index of the first matching Record in this store by a specific field value.
Finds the index of the first matching Record in this store by a specific field value.
The name of the Record field to test.
The value to match the field against.
(optional) The index to start searching at
The matched index or -1
Finds the first matching Record in this store by a specific field value.
Finds the first matching Record in this store by a specific field value.
The name of the Record field to test.
Either a string that the field value should begin with, or a RegExp to test against the field.
(optional) The index to start searching at
(optional) True to match any part of the string, not just the beginning
(optional) True for case sensitive comparison
True to force exact match (^ and $ characters added to the regex). Defaults to false.
The matched record or null
Fires the specified event with the passed parameters (minus the event name).
An event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget) by calling enableBubble.
The name of the event to fire.
Variable number of parameters are passed to handlers.
returns false if any of the handlers return false otherwise it returns true.
Convenience function for getting the first model instance in the store
Convenience function for getting the first model instance in the store
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the first record being the value. The grouped parameter is only honored if the store has a groupField.
The first model instance in the store, or undefined
Get the Record at the specified index.
Get the Record at the specified index.
The index of the Record to find.
The Record at the passed index. Returns undefined if not found.
Get the Record with the specified id.
Get the Record with the specified id.
The id of the Record to find.
The Record with the passed id. Returns undefined if not found.
Gets the number of cached records.
If using paging, this may not be the total size of the dataset. If the data object used by the Reader contains the dataset size, then the getTotalCount function returns the dataset size. Note: see the Important note in load.
The number of Records in the Store's cache.
Returns the string to group on for a given model instance. The default implementation of this method returns the model's groupField, but this can be overridden to group by an arbitrary string. For example, to group by the first letter of a model's 'name' field, use the following code:
new Ext.data.Store({
groupDir: 'ASC',
getGroupString: function(instance) {
return instance.get('name')[0];
}
});
The model instance
The string to compare when forming groups
Returns an object containing the result of applying grouping to the records in this store. See groupField, groupDir and getGroupString. Example for a store containing records with a color field:
var myStore = new Ext.data.Store({
groupField: 'color',
groupDir : 'DESC'
});
myStore.getGroups(); //returns:
[
{
name: 'yellow',
children: [
//all records where the color field is 'yellow'
]
},
{
name: 'red',
children: [
//all records where the color field is 'red'
]
}
]
(Optional) Pass in an optional groupName argument to access a specific group as defined by getGroupString
The grouped data
Returns all Model instances that are either currently a phantom (e.g. have no id), or have an ID but have not yet been saved on this Store (this happens when adding a non-phantom record from another Store into this one)
The Model instances
Determines the page from a record index
Determines the page from a record index
The record index
The page the record belongs to
Returns the proxy currently attached to this proxy instance
Returns the proxy currently attached to this proxy instance
The Proxy instance
Returns a range of Records between specified indices.
Returns a range of Records between specified indices.
(optional) The starting index (defaults to 0)
(optional) The ending index (defaults to the last Record in the Store)
An array of Records
Returns an object describing the current sort state of this Store.
Returns an object describing the current sort state of this Store.
The sort state of the Store. An object with two properties:
The name of the field by which the Records are sorted.
The sort order, 'ASC' or 'DESC' (case-sensitive).
Returns the total number of Model instances that the Proxy indicates exist. This will usually differ from getCount when using paging - getCount returns the number of records loaded into the Store at the moment, getTotalCount returns the number of records that could be loaded into the Store if the Store contained all data
The total number of Model instances available via the Proxy
Returns all Model instances that have been updated in the Store but not yet synchronized with the Proxy
Returns all Model instances that have been updated in the Store but not yet synchronized with the Proxy
The updated Model instances
Group data in the store
Group data in the store
Either a string name of one of the fields in this Store's configured Model, or an Array of grouper configurations.
The overall direction to group the data by. Defaults to "ASC".
Guarantee a specific range, this will load the store with a range (that must be the pageSize or smaller) and take care of any loading that may be necessary.
Checks to see if this object has any listeners for a specified event
Checks to see if this object has any listeners for a specified event
The name of the event to check for
True if the event is being listened for, else false
Get the index within the cache of the passed Record.
Get the index within the cache of the passed Record.
The Ext.data.Model object to find.
The index of the passed Record. Returns -1 if not found.
Get the index within the cache of the Record with the passed id.
Get the index within the cache of the Record with the passed id.
The id of the Record to find.
The index of the Record. Returns -1 if not found.
Get the index within the entire dataset. From 0 to the totalCount.
Get the index within the entire dataset. From 0 to the totalCount.
The Ext.data.Model object to find.
The index of the passed Record. Returns -1 if not found.
Performs initialization of this mixin. Component classes using this mixin should call this method during their own initialization.
Inserts Model instances into the Store at the given index and fires the add event.
See also add
.
The start index at which to insert the passed Records.
An Array of Ext.data.Model objects to add to the cache.
Returns true if this store is currently filtered
Returns true if this store is currently filtered
Checks if the store is currently grouped
Checks if the store is currently grouped
True if the store is grouped.
Returns true if the Store is currently performing a load operation
Returns true if the Store is currently performing a load operation
True if the Store is currently loading
Convenience function for getting the last model instance in the store
Convenience function for getting the last model instance in the store
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the last record being the value. The grouped parameter is only honored if the store has a groupField.
The last model instance in the store, or undefined
Loads data into the Store via the configured proxy. This uses the Proxy to make an asynchronous call to whatever storage backend the Proxy uses, automatically adding the retrieved instances into the Store and calling an optional callback if required. Example usage:
store.load({
scope : this,
callback: function(records, operation, success) {
//the operation object contains all of the details of the load operation
console.log(records);
}
});
If the callback scope does not need to be set, a function can simply be passed:
store.load(function(records, operation, success) {
console.log('loaded records');
});
Optional config object, passed into the Ext.data.Operation object before loading.
Loads an array of data straight into the Store
Loads an array of data straight into the Store
Array of data to load. Any non-model instances will be cast into model instances first
True to add the records to the existing records in the store, false to remove the old ones first
Loads a given 'page' of data by setting the start and limit values appropriately. Internally this just causes a normal load operation, passing in calculated 'start' and 'limit' params
The number of the page to load
Loads an array of {@Ext.data.Model model} instances into the store, fires the datachanged event. This should only usually be called internally when loading from the Proxy, when adding records manually use add instead
The array of records to load
{addRecords: true} to add these records to the existing records, false to remove the Store's existing records first
Gets the maximum value in the store.
Gets the maximum value in the store.
The field in each record
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the maximum in the group being the value. The grouped parameter is only honored if the store has a groupField.
The maximum value, if no items exist, undefined.
Gets the minimum value in the store.
Gets the minimum value in the store.
The field in each record
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the minimum in the group being the value. The grouped parameter is only honored if the store has a groupField.
The minimum value, if no items exist, undefined.
Loads the next 'page' in the current data set
Loads the next 'page' in the current data set
Sets observability on the passed class constructor.
This makes any event fired on any instance of the passed class also fire a single event through the class allowing for central handling of events on many instances at once.
Usage:
Ext.util.Observable.observe(Ext.data.Connection);
Ext.data.Connection.on('beforerequest', function(con, options) {
console.log('Ajax request made to ' + options.url);
});
The class constructor to make observable.
An object containing a series of listeners to add. See addListener.
Appends an event handler to this object (shorthand for addListener.)
Appends an event handler to this object (shorthand for addListener.)
The type of event to listen for
The method the event invokes
(optional) The scope (this
reference) in which the handler function is executed.
If omitted, defaults to the object which fired the event.
(optional) An object containing handler configuration.
Prefetches data the Store using its configured proxy.
Prefetches data the Store using its configured proxy.
Optional config object, passed into the Ext.data.Operation object before loading. See load
Prefetches a page of data.
Prefetches a page of data.
The page to prefetch
Optional config object, passed into the Ext.data.Operation object before loading. See load
Loads the previous 'page' in the current data set
Loads the previous 'page' in the current data set
Purge the least recently used records in the prefetch if the purgeCount has been exceeded.
Purge the least recently used records in the prefetch if the purgeCount has been exceeded.
Query the cached records in this Store using a filtering function. The specified function will be called with each record in this Store. If the function returns true the record is included in the results.
The function to be called. It will be passed the following parameters:
The record to test for filtering. Access field values using Ext.data.Model.get.
The ID of the Record passed.
(optional) The scope (this
reference) in which the function is executed. Defaults to this Store.
Returns an Ext.util.MixedCollection of the matched records
Relays selected events from the specified Observable as if the events were fired by this
.
Relays selected events from the specified Observable as if the events were fired by this
.
The Observable whose events this object is to relay.
Array of event names to relay.
Removes all added captures from the Observable.
Removes all added captures from the Observable.
The Observable to release
Removes the given record from the Store, firing the 'remove' event for each instance that is removed, plus a single 'datachanged' event after removal.
The Ext.data.Model instance or array of instances to remove
Remove all items from the store.
Remove all items from the store.
Prevent the clear
event from being fired.
Removes the model instance at the given index
Removes the model instance at the given index
The record index
Removes an event handler.
Removes an event handler.
The type of event the handler was associated with.
The handler to remove. This must be a reference to the function passed into the addListener call.
(optional) The scope originally specified for the handler.
Removes listeners that were added by the mon method.
Removes listeners that were added by the mon method.
The item from which to remove a listener/listeners.
The event name, or an object containing event name properties.
Optional. If the ename
parameter was an event name, this
is the handler function.
Optional. If the ename
parameter was an event name, this
is the scope (this
reference) in which the handler function is executed.
Resume firing events. (see suspendEvents)
If events were suspended using the queueSuspended
parameter, then all
events fired during event suspension will be sent to any listeners now.
Sets the Store's Proxy by string, config object or Proxy instance
Sets the Store's Proxy by string, config object or Proxy instance
The new Proxy, which can be either a type string, a configuration object or an Ext.data.proxy.Proxy instance
The attached Proxy object
Sorts the data in the Store by one or more of its properties. Example usage:
//sort by a single field
myStore.sort('myField', 'DESC');
//sorting by multiple fields
myStore.sort([
{
property : 'age',
direction: 'ASC'
},
{
property : 'name',
direction: 'DESC'
}
]);
Internally, Store converts the passed arguments into an array of Ext.util.Sorter instances, and delegates the actual sorting to its internal Ext.util.MixedCollection.
When passing a single string argument to sort, Store maintains a ASC/DESC toggler per field, so this code:
store.sort('myField');
store.sort('myField');
Is equivalent to this code, because Store handles the toggling automatically:
store.sort('myField', 'ASC');
store.sort('myField', 'DESC');
Either a string name of one of the fields in this Store's configured Model, or an Array of sorter configurations.
The overall direction to sort the data by. Defaults to "ASC".
Sums the value of property for each record between start and end and returns the result.
Sums the value of property for each record between start and end and returns the result.
A field in each record
(Optional) True to perform the operation for each group in the store. The value returned will be an object literal with the key being the group name and the sum for that group being the value. The grouped parameter is only honored if the store has a groupField.
The sum
Suspend the firing of all events. (see resumeEvents)
Suspend the firing of all events. (see resumeEvents)
Pass as true to queue up suspended events to be fired after the resumeEvents call instead of discarding all suspended events;
Synchronizes the Store with its Proxy. This asks the Proxy to batch together any new, updated and deleted records in the store, updating the Store's internal representation of the records as each operation completes.
Removes an event handler (shorthand for removeListener.)
Removes an event handler (shorthand for removeListener.)
The type of event the handler was associated with.
The handler to remove. This must be a reference to the function passed into the addListener call.
(optional) The scope originally specified for the handler.
Fired when a Model instance has been added to this Store
Fired when a Model instance has been added to this Store
The store
The Model instances that were added
The index at which the instances were inserted
Event description
Event description
This Store
The Ext.data.Operation object that will be passed to the Proxy to load the Store
Fires before a prefetch occurs. Return false to cancel.
Fires before a prefetch occurs. Return false to cancel.
The associated operation
Fires whenever the records in the Store have changed in some way - this could include adding or removing records, or updating the data in existing records
The data store
Fired whenever the grouping in the grid changes
Fired whenever the grouping in the grid changes
The store
The array of grouper objects
Fires whenever records have been prefetched
Fires whenever records have been prefetched
An array of records
True if the operation was successful.
The associated operation
Fired when a Model instance has been removed from this Store
Fired when a Model instance has been removed from this Store
The Store object
The record that was removed
The index of the record that was removed