Usage
Signature:
final class IndexerModelTreeDataProvider<K, D> implements IndexerModel, TreeDataProvider<K, D>
Generic Parameters
Parameter Description K Type of Key D Type of Data
Typescript Import Format
//This class is exported directly as module. To import it
import IndexerModelTreeDataProvider= require("ojs/ojindexermodeltreedataprovider");
For additional information visit:
Final classes in JET
Classes in JET are generally final and do not support subclassing. At the moment, final is not enforced. However, this will likely change in an upcoming JET release.
Constructor
new IndexerModelTreeDataProvider(data, options)
Parameters:
Name | Type | Argument | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data |
Array.<any> | an array of data used for Indexer and ListView | |||||||||||||||||||||||||||||||||
options |
Object |
<optional> |
the options set on this IndexerModelTreeProvider
Properties
|
Methods
-
addEventListener(eventType: string, listener: EventListener): void
-
Add a callback function to listen for a specific event type.
Parameters:
Name Type Description eventType
string The event type to listen for. listener
EventListener The callback function that receives the event notification. -
containsKeys(parameters : FetchByKeysParameters<K>) : Promise<ContainsKeysResults<K>>
-
Check if there are rows containing the specified keys
Parameters:
Name Type Description parameters
FetchByKeysParameters contains by key parameters - Since:
- 4.2.0
Returns:
Returns Promise which resolves to ContainsKeysResults.- Type
- Promise.<ContainsKeysResults>
Example
Check if keys 1001 and 556 are contained
let containsKeys = [1001, 556]; let value = await dataprovider.containsKeys({keys: containsKeys}); let results = value['results']; if (results.has(1001)) { console.log('Has key 1001'); } else if (results.has(556){ console.log('Has key 556'); }
-
dispatchEvent(evt: Event): boolean
-
Dispatch an event and invoke any registered listeners.
Parameters:
Name Type Description event
Event The event object to dispatch. Returns:
Return false if a registered listener has cancelled the event. Return true otherwise.- Type
- boolean
-
fetchByKeys(parameters : FetchByKeysParameters<K>) : Promise<FetchByKeysResults<K, D>>
-
Fetch rows by keys
Parameters:
Name Type Description parameters
FetchByKeysParameters fetch by key parameters - Since:
- 4.2.0
Returns:
Returns Promise which resolves to FetchByKeysResults.- Type
- Promise.<FetchByKeysResults>
Example
Fetch for keys 1001 and 556
let fetchKeys = [1001, 556]; let value = await dataprovider.fetchByKeys({keys: fetchKeys}); // get the data for key 1001 console.log(value.results.get(1001).data);
-
fetchByOffset(parameters: FetchByOffsetParameters<D>): Promise<FetchByOffsetResults<K, D>>
-
Fetch rows by offset
A generic implementation of this method is available from FetchByOffsetMixin. It is for convenience and may not provide the most efficient implementation for your data provider. Classes that implement the DataProvider interface are encouraged to provide a more efficient implementation.
Parameters:
Name Type Description parameters
FetchByOffsetParameters fetch by offset parameters - Since:
- 4.2.0
Returns:
Returns Promise which resolves to FetchByOffsetResults.- Type
- Promise.<FetchByOffsetResults>
Example
Fetch by offset 5 rows starting at index 2
let result = await dataprovider.fetchByOffset({size: 5, offset: 2}); let results = result['results']; let data = results.map(function(value) { return value['data']; }); let keys = results.map(function(value) { return value['metadata']['key']; });
-
fetchFirst(parameters?: FetchListParameters<D>): AsyncIterable<FetchListResult<K, D>>
-
Get an asyncIterator which can be used to fetch a block of data.
Parameters:
Name Type Argument Description params
FetchListParameters <optional>
fetch parameters - Since:
- 4.2.0
- See:
-
- https://github.com/tc39/proposal-async-iteration for further information on AsyncIterable.
Returns:
AsyncIterable with FetchListResult- Type
- AsyncIterable.<FetchListResult>
Example
Get an asyncIterator and then fetch first block of data by executing next() on the iterator. Subsequent blocks can be fetched by executing next() again.
let asyncIterator = dataprovider.fetchFirst(options)[Symbol.asyncIterator](); let result = await asyncIterator.next(); let value = result.value; let data = value.data; let keys = value.metadata.map(function(val) { return val.key; });
-
getCapability(capabilityName: string): any
-
Determines whether this DataProvider defines a certain feature.
Parameters:
Name Type Description capabilityName
string capability name. Defined capability names are: "fetchByKeys", "fetchByOffset", "sort", "fetchCapability" and "filter". - Since:
- 4.2.0
Returns:
capability information or null if undefined- If capabilityName is "fetchByKeys", returns a FetchByKeysCapability object.
- If capabilityName is "fetchByOffset", returns a FetchByOffsetCapability object.
- If capabilityName is "sort", returns a SortCapability object.
- If capabilityName is "filter", returns a FilterCapability object.
- If capabilityName is "fetchCapability", returns a FetchCapability object.
- Type
- Object
Example
Check what kind of fetchByKeys is defined.
let capabilityInfo = dataprovider.getCapability('fetchByKeys'); if (capabilityInfo.implementation == 'iteration') { // the DataProvider supports iteration for fetchByKeys ...
-
getChildDataProvider(parentKey: K): TreeDataProvider<K, D> | null
-
Get the data provider for the children of the row identified by parentKey.
Parameters:
Name Type Description parentKey
any key of the row to get child data provider for. - Since:
- 5.1.0
Returns:
A TreeDataProvider if the row can (but doesn't have to) have children; or null if the row cannot have children. Use theisEmpty
method on the returned TreeDataProvider to determine if it currently has children.- Type
- TreeDataProvider | null
-
getIndexableSections(): IndexerModel.Section[]
-
Returns an array of objects each representing a section in the associated ListView.
Returns:
an array of all indexable sections- Type
- Array.<string> | Array.<Object>
-
getMissingSections(): IndexerModel.Section[]
-
Returns an array of objects each representing a section that does not have a corresponding section in the associated ListView. It must be a subset of the return value of
getIndexableSections
. Return null or undefined if there's nothing missing.Returns:
an array of missing sections- Type
- Array.<string> | Array.<Object>
-
getTotalSize : {Promise.<number>}
-
Return the total number of rows in this dataprovider
Returns:
Returns a Promise which resolves to the total number of rows. -1 is unknown row count.- Type
- Promise.<number>
Example
Get the total rows
let value = await dataprovider.getTotalSize(); if (value == -1) { // we don't know the total row count } else { // the total count console.log(value); }
-
isEmpty(): 'yes' | 'no' | 'unknown'
-
Returns a string that indicates if this data provider is empty. Valid values are:
- "yes": this data provider is empty.
- "no": this data provider is not empty.
- "unknown": it is not known if this data provider is empty until a fetch is made.
- Since:
- 4.2.0
Returns:
string that indicates if this data provider is empty- Type
- "yes" | "no" | "unknown"
Example
Check if empty
let isEmpty = dataprovider.isEmpty(); console.log('DataProvider is empty: ' + isEmpty);
-
removeEventListener(eventType: string, listener: EventListener): void
-
Remove a listener previously registered with addEventListener.
Parameters:
Name Type Description eventType
string The event type that the listener was registered for. listener
EventListener The callback function that was registered. -
setSection(section: IndexerModel.Section): Promise<oj.IndexerModel.Section>
-
Make a section current in the Indexer.
Parameters:
Name Type Description section
string | Object the current section Returns:
a Promise which when resolved will return the section that the associated ListView actually scrolls to. For example, the implementation could choose to scroll to the next available section in ListView if no data exists for the current section section.- Type
- Promise.<string> | Promise.<Object>