Methods
-
containsKeys(parameters : FetchByKeysParameters<K>) : Promise<ContainsKeysResults<K>>
-
Check if there are rows containing the specified keys
A generic implementation of this method is available from oj.FetchByKeysMixin. 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 parametersoj.FetchByKeysParameters contains by key parameters - Since:
- 4.2.0
Returns:
Returns Promise which resolves to oj.ContainsKeysResults.- Type
- Promise.<oj.ContainsKeysResults>
Example
Check if keys 1001 and 556 are contained
let containsKeys = [1001, 556]; dataprovider.containsKeys({keys: containsKeys}).then(function(value) { let results = value['results']; if (results.has(1001)) { console.log('Has key 1001'); } else if (results.has(556){ console.log('Has key 556'); } }); -
createOptimizedKeyMap(initialMap?: Map<K, D>): Map<K, D>
-
Return an empty Map which is optimized to store key value pairs
Optionally provided by certain DataProvider implementations for storing key/value pairs from the DataProvider in a performant fashion. Sometimes components will need to temporarily store a Map of keys provided by the DataProvider, for example, in the case of maintaining a Map of selected keys. Only the DataProvider is aware of the internal structure of keys such as whether they are primitives, Strings, or objects and how to do identity comparisons. Therefore, the DataProvider can optionally provide a Map implementation which can performantly store key/value pairs surfaced by the DataProvider.
Parameters:
Name Type Argument Description OptionallyMap.<any> <optional>
specify an initial map of key/values for the Map. If not specified, then return an empty Map. - Since:
- 6.2.0
Returns:
Returns a Map optimized for handling keys from the DataProvider.- Type
- Map.<any>
Example
create empty key Map
let keyMap = dataprovider.createOptimizedKeyMap(); -
createOptimizedKeySet(initialSet?: Set<K>): Set<K>
-
Return an empty Set which is optimized to store keys
Optionally provided by certain DataProvider implementations for storing keys from the DataProvider in a performant fashion. Sometimes components will need to temporarily store a Set of keys provided by the DataProvider, for example, in the case of maintaining a Set of selected keys. Only the DataProvider is aware of the internal structure of keys such as whether they are primitives, Strings, or objects and how to do identity comparisons. Therefore, the DataProvider can optionally provide a Set implementation which can performantly store keys surfaced by the DataProvider.
Parameters:
Name Type Argument Description OptionallySet.<any> <optional>
specify an initial set of keys for the Set. If not specified, then return an empty Set. - Since:
- 6.2.0
Returns:
Returns a Set optimized for handling keys from the DataProvider.- Type
- Set.<any>
Example
create empty key Set
let keySet = dataprovider.createOptimizedKeySet(); -
fetchByKeys(parameters : FetchByKeysParameters<K>) : Promise<FetchByKeysResults<K, D>>
-
Fetch rows by keys
A generic implementation of this method is available from oj.FetchByKeysMixin. 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 parametersoj.FetchByKeysParameters fetch by key parameters - Since:
- 4.2.0
Returns:
Returns Promise which resolves to oj.FetchByKeysResults.- Type
- Promise.<oj.FetchByKeysResults>
Example
Fetch for keys 1001 and 556
let fetchKeys = [1001, 556]; dataprovider.fetchByKeys({keys: fetchKeys}).then(function(value) { // 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 oj.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 parametersoj.FetchByOffsetParameters fetch by offset parameters - Since:
- 4.2.0
Returns:
Returns Promise which resolves to oj.FetchByOffsetResults.- Type
- Promise.<oj.FetchByOffsetResults>
Example
Fetch by offset 5 rows starting at index 2
dataprovider.fetchByOffset({size: 5, offset: 2}).then(function(value) { 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 paramsoj.FetchListParameters <optional>
fetch parameters - Since:
- 4.2.0
- See:
-
- https://github.com/tc39/proposal-async-iteration for further information on AsyncIterable.
Returns:
AsyncIterable with oj.FetchListResult- Type
- AsyncIterable.<oj.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](); asyncIterator.next().then(function(result) { 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 capabilityNamestring capability name. Defined capability names are: "fetchByKeys", "fetchByOffset", "sort", and "filter". - Since:
- 4.2.0
Returns:
capability information or null if undefined- If capabilityName is "fetchByKeys", returns a oj.FetchByKeysCapability object.
- If capabilityName is "fetchByOffset", returns a oj.FetchByOffsetCapability object.
- If capabilityName is "sort", returns a oj.SortCapability object.
- If capabilityName is "filter", returns a oj.FilterCapability object.
- If capabilityName is "fetchCapability", returns a oj.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 ... -
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
dataprovider.getTotalSize().then(function(value) { 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);