/**
* This class is a sequential id generator. A simple use of this class would be like so:
*
* Ext.define('MyApp.data.MyModel', {
* extend: 'Ext.data.Model',
* identifier: 'sequential'
* });
* // assign id's of 1, 2, 3, etc.
*
* An example of a configured generator would be:
*
* Ext.define('MyApp.data.MyModel', {
* extend: 'Ext.data.Model',
* identifier: {
* type: 'sequential',
* prefix: 'ID_',
* seed: 1000,
* increment: 10
* }
* });
* // assign id's of ID_1000, ID_1010, ID_1020, etc.
*
*/
Ext.define('Ext.data.identifier.Sequential', {
extend: 'Ext.data.identifier.Generator',
alias: 'data.identifier.sequential',
config: {
/**
* @cfg {Number} increment
* The number by which to adjust the `seed` after for the next sequential id.
*/
increment: 1,
/**
* @cfg {String} prefix
* The string to place in front of the sequential number for each generated id.
*/
prefix: null,
/**
* @cfg {Number} seed
* The number at which to start generating sequential id's.
*/
seed: 1
},
/**
* Generates and returns the next id.
* @return {String/Number} The next id. If a {@link #prefix} was specified, returns
* a String, otherwise returns a Number.
*/
generate: function() {
var me = this,
seed = me._seed,
prefix = me._prefix;
me._seed += me._increment;
return (prefix !== null) ? prefix + seed : seed;
}
});