Recordset Class
The Recordset utility provides a standard way for dealing with a collection of similar objects.
Provides the base Recordset implementation, which can be extended to add additional functionality, such as custom indexing. sorting, and filtering.
Constructor
Item Index
Methods
- _setRecords
- add
- addAttr
- addAttrs
- addTarget
- after
- attrAdded
- before
- bubble
- destroy
- detach
- detachAll
- each
- empty
- filter deprecated
- fire
- get
- getAttrs
- getEvent
- getLength
- getRecord
- getRecordByIndex
- getRecordsByIndex
- getTargets
- getValuesByKey
- indexOf
- init
- isEmpty
- item
- itemsAreEqual deprecated
- modifyAttr
- on
- once
- onceAfter
- parseType
- publish
- remove
- removeAttr
- removeTarget
- reset
- set
- setAttrs
- size
- some
- subscribe deprecated
- toJSON
- toString
- unsubscribe deprecated
- unsubscribeAll deprecated
- update
Properties
- name deprecated
Attributes
Methods
_setRecords
-
items
Ensures the value being set is an array of Record instances. If array items are raw object data, they are turned into Records.
Returns:
add
-
oData
-
[index]
Adds one or more Records to the RecordSet at the given index. If index is null, then adds the Records to the end of the RecordSet.
Parameters:
Returns:
The updated recordset instance
addAttr
-
name
-
config
-
lazy
Adds an attribute with the provided configuration to the host object.
The config argument object supports the following properties:
- value <Any>
- The initial value to set on the attribute
- valueFn <Function | String>
-
A function, which will return the initial value to set on the attribute. This is useful for cases where the attribute configuration is defined statically, but needs to reference the host instance ("this") to obtain an initial value. If both the value and valueFn properties are defined, the value returned by the valueFn has precedence over the value property, unless it returns undefined, in which case the value property is used.
valueFn can also be set to a string, representing the name of the instance method to be used to retrieve the value.
- readOnly <boolean>
- Whether or not the attribute is read only. Attributes having readOnly set to true cannot be modified by invoking the set method.
- writeOnce <boolean> or <string>
-
Whether or not the attribute is "write once". Attributes having writeOnce set to true,
can only have their values set once, be it through the default configuration,
constructor configuration arguments, or by invoking set.
The writeOnce attribute can also be set to the string "initOnly", in which case the attribute can only be set during initialization (when used with Base, this means it can only be set during construction)
- setter <Function | String>
-
The setter function used to massage or normalize the value passed to the set method for the attribute. The value returned by the setter will be the final stored value. Returning Attribute.INVALID_VALUE, from the setter will prevent the value from being stored.
setter can also be set to a string, representing the name of the instance method to be used as the setter function.
- getter <Function | String>
-
The getter function used to massage or normalize the value returned by the get method for the attribute. The value returned by the getter function is the value which will be returned to the user when they invoke get.
getter can also be set to a string, representing the name of the instance method to be used as the getter function.
- validator <Function | String>
-
The validator function invoked prior to setting the stored value. Returning false from the validator function will prevent the value from being stored.
validator can also be set to a string, representing the name of the instance method to be used as the validator function.
- lazyAdd <boolean>
- Whether or not to delay initialization of the attribute until the first call to get/set it. This flag can be used to over-ride lazy initialization on a per attribute basis, when adding multiple attributes through the addAttrs method.
The setter, getter and validator are invoked with the value and name passed in as the first and second arguments, and with the context ("this") set to the host object.
Configuration properties outside of the list mentioned above are considered private properties used internally by attribute, and are not intended for public use.
Parameters:
-
name
StringThe name of the attribute.
-
config
ObjectAn object with attribute configuration property/value pairs, specifying the configuration for the attribute.
NOTE: The configuration object is modified when adding an attribute, so if you need to protect the original values, you will need to merge the object.
-
lazy
Boolean(optional) Whether or not to add this attribute lazily (on the first call to get/set).
Returns:
A reference to the host object.
addAttrs
-
cfgs
-
values
-
lazy
Configures a group of attributes, and sets initial values.
NOTE: This method does not isolate the configuration object by merging/cloning. The caller is responsible for merging/cloning the configuration object if required.
Parameters:
-
cfgs
ObjectAn object with attribute name/configuration pairs.
-
values
ObjectAn object with attribute name/value pairs, defining the initial values to apply. Values defined in the cfgs argument will be over-written by values in this argument unless defined as read only.
-
lazy
BooleanWhether or not to delay the intialization of these attributes until the first call to get/set. Individual attributes can over-ride this behavior by defining a lazyAdd configuration property in their configuration. See addAttr.
Returns:
A reference to the host object.
addTarget
-
o
Registers another EventTarget as a bubble target. Bubble order is determined by the order registered. Multiple targets can be specified.
Events can only bubble if emitFacade is true.
Included in the event-custom-complex submodule.
Parameters:
-
o
EventTargetthe target to add
after
-
type
-
fn
-
[context]
-
[arg*]
Subscribe to a custom event hosted by this object. The supplied callback will execute after any listeners add via the subscribe method, and after the default function, if configured for the event, has executed.
Parameters:
Returns:
A subscription handle capable of detaching the subscription
attrAdded
-
name
Checks if the given attribute has been added to the host
Parameters:
-
name
StringThe name of the attribute to check.
Returns:
true if an attribute with the given name has been added, false if it hasn't. This method will return true for lazily added attributes.
before
()
Executes the callback before a DOM event, custom event or method. If the first argument is a function, it is assumed the target is a method. For DOM and custom events, this is an alias for Y.on.
For DOM and custom events: type, callback, context, 0-n arguments
For methods: callback, object (method host), methodName, context, 0-n arguments
Returns:
detach handle
bubble
-
evt
Propagate an event. Requires the event-custom-complex module.
Parameters:
-
evt
CustomEventthe custom event to propagate
Returns:
the aggregated return value from Event.Custom.fire
destroy
()
BaseCore
chainable
Destroy lifecycle method. Invokes destructors for the class hierarchy.
Returns:
A reference to this object
detach
-
type
-
fn
-
context
Detach one or more listeners the from the specified event
Parameters:
-
type
String | ObjectEither the handle to the subscriber or the type of event. If the type is not specified, it will attempt to remove the listener from all hosted events.
-
fn
FunctionThe subscribed function to unsubscribe, if not supplied, all subscribers will be removed.
-
context
ObjectThe custom object passed to subscribe. This is optional, but if supplied will be used to disambiguate multiple listeners that are the same (e.g., you subscribe many object using a function that lives on the prototype)
Returns:
the host
detachAll
-
type
Removes all listeners from the specified event. If the event type is not specified, all listeners from all hosted custom events will be removed.
Parameters:
-
type
StringThe type, or name of the event
each
-
fn
-
context
Execute a function on each item of the list, optionally providing a custom execution context. Default context is the item.
The callback signature is callback( item, index )
.
Parameters:
-
fn
Functionthe function to execute
-
context
Mixedoptional override 'this' in the function
Returns:
this instance
filter
-
validator
Create a new ArrayList (or augmenting class instance) from a subset of items as determined by the boolean function passed as the argument. The original ArrayList is unchanged.
The validator signature is validator( item )
.
Parameters:
-
validator
FunctionBoolean function to determine in or out.
Returns:
New instance based on who passed the validator.
fire
-
type
-
arguments
Fire a custom event by name. The callback functions will be executed from the context specified when the event was created, and with the following parameters.
The first argument is the event type, and any additional arguments are passed to the listeners as parameters. If the first of these is an object literal, and the event is configured to emit an event facade, that object is mixed into the event facade and the facade is provided in place of the original object.
If the custom event object hasn't been created, then the event hasn't been published and it has no subscribers. For performance sake, we immediate exit in this case. This means the event won't bubble, so if the intention is that a bubble target be notified, the event must be published on this object first.
Parameters:
-
type
String | ObjectThe type of the event, or an object that contains a 'type' property.
-
arguments
Object*an arbitrary set of parameters to pass to the handler. If the first of these is an object literal and the event is configured to emit an event facade, the event facade will replace that parameter after the properties the object literal contains are copied to the event facade.
Returns:
True if the whole lifecycle of the event went through, false if at any point the event propagation was halted.
get
-
name
Returns the current value of the attribute. If the attribute has been configured with a 'getter' function, this method will delegate to the 'getter' to obtain the value of the attribute.
Parameters:
-
name
StringThe name of the attribute. If the value of the attribute is an Object, dot notation can be used to obtain the value of a property of the object (e.g.
get("x.y.z")
)
Returns:
The value of the attribute
getAttrs
-
attrs
Gets multiple attribute values.
Parameters:
Returns:
An object with attribute name/value pairs.
getEvent
-
type
-
prefixed
Returns the custom event of the provided type has been created, a falsy value otherwise
Parameters:
Returns:
the custom event or null
getLength
()
Number
Returns the length of the recordset
Returns:
Number of records in the recordset
getRecord
-
i
Returns the record with particular ID or index
Parameters:
-
i
String, NumberThe ID of the record if a string, or the index if a number.
Returns:
A Y.Record instance
getRecordByIndex
-
i
Returns the record at a particular index
Parameters:
-
i
NumberIndex at which the required record resides
Returns:
A Y.Record instance
getRecordsByIndex
-
index
-
range
Returns a range of records beginning at particular index
Parameters:
Returns:
An array of Y.Record instances
getTargets
()
Returns an array of bubble targets for this object.
Returns:
EventTarget[]
getValuesByKey
-
[key]
Gets an array of values for a data key in the set's records. If no key is supplied, the returned array will contain the full data object for each record.
Parameters:
-
[key]
String optionalData property to get from all records
Returns:
An array of values for the given key if supplied. Otherwise, an array of each record's data hash.
indexOf
-
needle
Finds the first index of the needle in the managed array of items.
Parameters:
-
needle
MixedThe item to search for
Returns:
Array index if found. Otherwise -1
init
-
cfg
Init lifecycle method, invoked during construction. Sets up attributes and invokes initializers for the class hierarchy.
Parameters:
-
cfg
ObjectObject with configuration property name/value pairs
Returns:
A reference to this object
isEmpty
()
Boolean
Is this instance managing any items?
Returns:
true if 1 or more items are being managed
item
-
i
Get an item by index from the list. Override this method if managing a list of objects that have a different public representation (e.g. Node instances vs DOM nodes). The iteration methods that accept a user function will use this method for access list items for operation.
Parameters:
-
i
Integerindex to fetch
Returns:
the item at the requested index
itemsAreEqual
-
a
-
b
Default comparator for items stored in this list. Used by remove().
Parameters:
-
a
Mixeditem to test equivalence with.
-
b
Mixedother item to test equivalance.
Returns:
true if items are deemed equivalent.
modifyAttr
-
name
-
config
Updates the configuration of an attribute which has already been added.
The properties which can be modified through this interface are limited to the following subset of attributes, which can be safely modified after a value has already been set on the attribute:
- readOnly;
- writeOnce;
- broadcast; and
- getter.
Note: New attributes cannot be added using this interface. New attributes must be added using addAttr, or an appropriate manner for a class which utilises Attributes (e.g. the ATTRS property in Base).
on
-
type
-
fn
-
[context]
-
[arg*]
Subscribe a callback function to a custom event fired by this object or from an object that bubbles its events to this object.
this.on("change", this._onChange, this);
Callback functions for events published with emitFacade = true
will
receive an EventFacade
as the first argument (typically named "e").
These callbacks can then call e.preventDefault()
to disable the
behavior published to that event's defaultFn
. See the EventFacade
API for all available properties and methods. Subscribers to
non-emitFacade
events will receive the arguments passed to fire()
after the event name.
To subscribe to multiple events at once, pass an object as the first argument, where the key:value pairs correspond to the eventName:callback.
this.on({
"attrChange" : this._onAttrChange,
"change" : this._onChange
});
You can also pass an array of event names as the first argument to subscribe to all listed events with the same callback.
this.on([ "change", "attrChange" ], this._onChange);
Returning false
from a callback is supported as an alternative to
calling e.preventDefault(); e.stopPropagation();
. However, it is
recommended to use the event methods whenever possible.
Parameters:
Returns:
A subscription handle capable of detaching that subscription
once
-
type
-
fn
-
[context]
-
[arg*]
Listen to a custom event hosted by this object one time.
This is the equivalent to on
except the
listener is immediatelly detached when it is executed.
Parameters:
Returns:
A subscription handle capable of detaching the subscription
onceAfter
-
type
-
fn
-
[context]
-
[arg*]
Listen to a custom event hosted by this object one time.
This is the equivalent to after
except the
listener is immediatelly detached when it is executed.
Parameters:
Returns:
A subscription handle capable of detaching that subscription
parseType
-
type
-
[pre]
Takes the type parameter passed to 'on' and parses out the various pieces that could be included in the type. If the event type is passed without a prefix, it will be expanded to include the prefix one is supplied or the event target is configured with a default prefix.
Parameters:
Returns:
an array containing:
- the detach category, if supplied,
- the prefixed event type,
- whether or not this is an after listener,
- the supplied event type
publish
-
type
-
opts
Creates a new custom event of the specified type. If a custom event by that name already exists, it will not be re-created. In either case the custom event is returned.
Parameters:
-
type
Stringthe type, or name of the event
-
opts
Objectoptional config params. Valid properties are:
-
[broadcast=false]
Boolean optionalwhether or not the YUI instance and YUI global are notified when the event is fired.
-
[bubbles=true]
Boolean optionalWhether or not this event bubbles. Events can only bubble if
emitFacade
is true. -
[context=this]
Object optionalthe default execution context for the listeners.
-
[defaultFn]
Function optionalthe default function to execute when this event fires if preventDefault was not called.
-
[emitFacade=false]
Boolean optionalwhether or not this event emits a facade.
-
[prefix]
String optionalthe prefix for this targets events, e.g., 'menu' in 'menu:click'.
-
[fireOnce=false]
Boolean optionalif an event is configured to fire once, new subscribers after the fire will be notified immediately.
-
[async=false]
Boolean optionalfireOnce event listeners will fire synchronously if the event has already fired unless
async
istrue
. -
[preventable=true]
Boolean optionalwhether or not
preventDefault()
has an effect. -
[preventedFn]
Function optionala function that is executed when
preventDefault()
is called. -
[queuable=false]
Boolean optionalwhether or not this event can be queued during bubbling.
-
[silent]
Boolean optionalif silent is true, debug messages are not provided for this event.
-
[stoppedFn]
Function optionala function that is executed when stopPropagation is called.
-
[monitored]
Boolean optionalspecifies whether or not this event should send notifications about when the event has been attached, detached, or published.
-
[type]
String optionalthe event type (valid option if not provided as the first parameter to publish).
-
Returns:
the custom event
remove
-
[index]
-
[range]
Removes one or more Records to the RecordSet at the given index. If index is null, then removes a single Record from the end of the RecordSet.
Parameters:
Returns:
The updated recordset instance
removeAttr
-
name
Removes an attribute from the host object
Parameters:
-
name
StringThe name of the attribute to be removed.
reset
-
name
Resets the attribute (or all attributes) to its initial value, as long as the attribute is not readOnly, or writeOnce.
Parameters:
-
name
StringOptional. The name of the attribute to reset. If omitted, all attributes are reset.
Returns:
A reference to the host object.
set
-
name
-
value
-
[opts]
Sets the value of an attribute.
Parameters:
-
name
StringThe name of the attribute. If the current value of the attribute is an Object, dot notation can be used to set the value of a property within the object (e.g.
set("x.y.z", 5)
). -
value
AnyThe value to set the attribute to.
-
[opts]
Object optionalOptional data providing the circumstances for the change.
Returns:
A reference to the host object.
setAttrs
-
attrs
-
[opts]
Sets multiple attribute values.
Parameters:
Returns:
A reference to the host object.
size
()
Integer
How many items are in this list?
Returns:
Number of items in the list
some
-
fn
-
context
Execute a function on each item of the list, optionally providing a custom execution context. Default context is the item.
The callback signature is callback( item, index )
.
Unlike each
, if the callback returns true, the
iteration will stop.
Parameters:
-
fn
Functionthe function to execute
-
context
Mixedoptional override 'this' in the function
Returns:
True if the function returned true on an item
subscribe
()
deprecated
subscribe to an event
toJSON
()
Array
Provides an array-like representation for JSON.stringify.
Returns:
an array representation of the ArrayList
toString
()
String
Default toString implementation. Provides the constructor NAME and the instance guid, if set.
Returns:
String representation for this object
unsubscribe
()
deprecated
detach a listener
unsubscribeAll
-
type
Removes all listeners from the specified event. If the event type is not specified, all listeners from all hosted custom events will be removed.
Parameters:
-
type
StringThe type, or name of the event
Properties
Attributes
destroyed
Boolean
readonly
Flag indicating whether or not this object has been through the destroy lifecycle phase.
Default: false
Fires event destroyedChange
Fires when the value for the configuration attribute destroyed
is
changed. You can listen for the event using the on
method if you
wish to be notified before the attribute's value has changed, or
using the after
method if you wish to be notified after the
attribute's value has changed.
Parameters:
-
e
EventFacadeAn Event Facade object with the following attribute-specific properties added:
initialized
Boolean
readonly
Flag indicating whether or not this object has been through the init lifecycle phase.
Default: false
Fires event initializedChange
Fires when the value for the configuration attribute initialized
is
changed. You can listen for the event using the on
method if you
wish to be notified before the attribute's value has changed, or
using the after
method if you wish to be notified after the
attribute's value has changed.
Parameters:
-
e
EventFacadeAn Event Facade object with the following attribute-specific properties added:
key
String
The ID to use as the key in the hash table.
Fires event keyChange
Fires when the value for the configuration attribute key
is
changed. You can listen for the event using the on
method if you
wish to be notified before the attribute's value has changed, or
using the after
method if you wish to be notified after the
attribute's value has changed.
Parameters:
-
e
EventFacadeAn Event Facade object with the following attribute-specific properties added:
records
Record[]
An array of Records that the Recordset is storing. Passing an array of raw record data is also accepted. The data for each item will be wrapped in a Record instance.
Fires event recordsChange
Fires when the value for the configuration attribute records
is
changed. You can listen for the event using the on
method if you
wish to be notified before the attribute's value has changed, or
using the after
method if you wish to be notified after the
attribute's value has changed.
Parameters:
-
e
EventFacadeAn Event Facade object with the following attribute-specific properties added:
table
Object
A hash table where the ID of the record is the key, and the record instance is the value.
Fires event tableChange
Fires when the value for the configuration attribute table
is
changed. You can listen for the event using the on
method if you
wish to be notified before the attribute's value has changed, or
using the after
method if you wish to be notified after the
attribute's value has changed.
Parameters:
-
e
EventFacadeAn Event Facade object with the following attribute-specific properties added:
Events
add
At least one record is being added. Additional properties of the event are:
- added
- Array of new records to be added
- index
- The insertion index in the Recordset's internal array
Preventing this event will cause the new records NOT to be added to the Recordset's internal collection.
destroy
Lifecycle event for the destroy phase, fired prior to destruction. Invoking the preventDefault method on the event object provided to subscribers will prevent destruction from proceeding.
Subscribers to the "after" moment of this event, will be notified after destruction is complete (and as a result cannot prevent destruction).
Event Payload:
-
e
EventFacadeEvent object
empty
The Recordset is being flushed of all records.
init
Lifecycle event for the init phase, fired prior to initialization. Invoking the preventDefault() method on the event object provided to subscribers will prevent initialization from occuring.
Subscribers to the "after" momemt of this event, will be notified after initialization of the object is complete (and therefore cannot prevent initialization).
Event Payload:
-
e
EventFacadeEvent object, with a cfg property which refers to the configuration object passed to the constructor.
remove
At least one record is being removed. Additional properties of the event are:
- removed
- Array of records to be removed
- range
- Number of records to be removed
- index
- The starting index in the Recordset's internal array from which to remove records
Preventing this event will cause the records NOT to be removed from the Recordset's internal collection.
update
At least one record is being updated. Additional properties of the event are:
- updated
- Array of records with updated values
- overwritten
- Array of current records that will be replaced
- index
- The starting index in the Recordset's internal array from which to update will apply
Preventing this event will cause the records NOT to be updated in the Recordset's internal collection.