Final Class: ArrayDataProvider

Oracle® JavaScript Extension Toolkit (JET)
8.1.0

F24337-01

Signature:

final class ArrayDataProvider<K, D> implements DataProvider<K, D>

QuickNav


ArrayDataProvider

Version:
  • 8.1.0
Since:
  • 4.1.0
Module:
  • ojarraydataprovider

Module usage

See JET Module Loading for an overview of module usage within JET.

Javascript Import Format
define(['ojs/ojarraydataprovider'], function(ArrayDataProvider) {
 // Application should call API on ArrayDataProvider 
})
Typescript Import Format
//This class is exported directly as module. To import it
import ArrayDataProvider= require("ojs/ojarraydataprovider");

Generic Parameters
ParameterDescription
KType of Key
DType of Data

JET In Typescript

A detailed description of working with JET elements and classes in your typescript project can be found at: JET Typescript Usage.

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.

Description

This class implements oj.DataProvider. Object representing data available from an array or observableArray. If a plain array is used then it is considered to be immutable. If an observableArray is used then for mutations, please use the observableArray functions or always call valueHasMutated() if mutating the underlying array. This dataprovider can be used by ListView, NavigationList, TabBar, and Table.

See the Table - Base Table demo for an example.

The default sorting algorithm used when a sortCriteria is passed into fetchFirst is natural sort.

Events

Consumers can add event listeners to listen for the following event types and respond to data change.

mutate

This event is fired when items have been added or removed from the data.

Event payload is found under event.detail, which implements the oj.DataProviderMutationEventDetail interface.

refresh

This event is fired when the data has been refreshed and components need to re-fetch the data.

This event contains no additional event payload.

Example of consumer listening for the "mutate" event type:
var listener = function(event) {
  if (event.detail.remove) {
    var removeDetail = event.detail.remove;
    // Handle removed items
  }
};
dataProvider.addEventListener("mutate", listener);

Constructor

new ArrayDataProvider(data, options)

Parameters:
Name Type Argument Description
data Array | function():Array data supported by the components

This can be either an Array, or a Knockout observableArray.

options Object <optional>
Options for the ArrayDataProvider
Properties
Name Type Argument Description
sortComparators ArrayDataProvider.SortComparators<D> <optional>
Optional oj.sortComparator to use for sort.
implicitSort Array<SortCriterion<D>> <optional>
Optional array of oj.sortCriterion used to specify sort information when the data loaded into the dataprovider is already sorted. This is used for cases where we would like display some indication that the data is already sorted. For example, ojTable will display the column sort indicator for the corresponding column in either ascending or descending order upon initial render. This option is not used for cases where we want the ArrayDataProvider to apply a sort on initial fetch. For those cases, please wrap in a ListDataProviderView and set the sortCriteria property on it.
keys Array | function():Array <optional>
Optional keys for the data. If not supplied, then the keys are generated according options.keyAttributes. If that is also not supplied then index is used as key.
idAttribute string | Array.<string> <optional>
Deprecated: this option is deprecated and will be removed in the future. Please use the keyAttributes option instead.

Optionally the field name which stores the id in the data. Can be a string denoting a single key attribute or an array of strings for multiple key attributes. Please note that the ids in ArrayDataProvider must always be unique. Please do not introduce duplicate ids, even during temporary mutation operations.
keyAttributes string | Array.<string> <optional>
Optionally the field name which stores the key in the data. Can be a string denoting a single key attribute or an array of strings for multiple key attributes. Please note that the ids in ArrayDataProvider must always be unique. Please do not introduce duplicate ids, even during temporary mutation operations. @index causes ArrayDataProvider to use index as key and @value will cause ArrayDataProvider to use all attributes as key. @index is the default.
textFilterAttributes Array.<string> <optional>
Optionally specify which attributes the filter should be applied on when a TextFilter filterCriteria is specified. If this option is not specified then the filter will be applied to all attributes.

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(params: FetchByKeysParameters<K>): Promise<ContainsKeysResults<K>>

Check if there are rows containing the specified keys
Parameters:
Name Type Description
params oj.FetchByKeysParameters Fetch by keys parameters
Returns:
Promise which resolves to oj.ContainsKeysResults
Type
Promise.<oj.ContainsKeysResults>

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(params: FetchByKeysParameters<K>): Promise<FetchByKeysResults<K, D>>

Fetch rows by keys
Parameters:
Name Type Description
params oj.FetchByKeysParameters Fetch by keys parameters
Returns:
Promise which resolves to oj.FetchByKeysResults
Type
Promise.<oj.FetchByKeysResults>

fetchByOffset(params: FetchByOffsetParameters<D>): Promise<FetchByOffsetResults<K, D>>

Fetch rows by offset
Parameters:
Name Type Description
params oj.FetchByOffsetParameters Fetch by offset parameters
Returns:
Promise which resolves to oj.FetchByOffsetResults
Type
Promise.<oj.FetchByOffsetResults>

fetchFirst(params?: FetchListParameters<D>): AsyncIterable<FetchListResult<K, D>>

Fetch the first block of data.
Parameters:
Name Type Argument Description
params oj.FetchListParameters <optional>
Fetch parameters
See:
Returns:
AsyncIterable with oj.FetchListResult
Type
AsyncIterable.<oj.FetchListResult>

getCapability(capabilityName?: string): any

Determines whether this DataProvider supports certain feature.
Parameters:
Name Type Description
capabilityName string capability name. Supported capability names are: "fetchByKeys", "fetchByOffset", "sort", and "filter".
Returns:
capability information or null if unsupported
Type
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>

isEmpty() : {"yes"|"no"|"unknown"}

Return a string that indicates if this data provider is empty
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.
Type
"yes" | "no" | "unknown"

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.