import { DataGridProvider, FetchByOffsetGridParameters, FetchByOffsetGridResults, GridItem, GridBodyItem, GridHeaderItem } from 'ojs/ojdatagridprovider'; import { EventTargetMixin } from 'ojs/ojeventtarget'; interface DataParams { dataArray?: Array, } export class SampleDataGridProvider implements DataGridProvider { addEventListener: () => void; removeEventListener: () => void; constructor(protected dataParams?: DataParams) { } public fetchByOffset( parameters: FetchByOffsetGridParameters ): Promise> { return null; } public getCapability(capabilityName: string): any { return null; } public isEmpty(): 'yes' | 'no' | 'unknown' { return (this.dataParams.dataArray.length <= 0) ? 'yes' : 'no'; // Returns 'yes' if not given any data, returns 'no' otherwise } private FetchByOffsetGridResults = class implements FetchByOffsetGridResults { constructor( public readonly fetchParameters: FetchByOffsetGridParameters, public readonly rowDone: boolean, public readonly columnDone: boolean, public readonly rowOffset: number, public readonly columnOffset: number, public readonly rowCount: number, public readonly columnCount: number, public readonly totalRowCount: number, public readonly totalColumnCount: number, public readonly results: { readonly databody?: Array>, }, public readonly version: number, public next?: Promise> ) { } }; private GridBodyItem = class implements GridBodyItem { constructor( public readonly rowExtent: number, public readonly columnExtent: number, public readonly rowIndex: number, public readonly columnIndex: number, public readonly metadata: Object, public readonly data: D ) { } }; private GridHeaderItem = class implements GridHeaderItem { constructor( public readonly index: number, public readonly extent: number, public readonly level: number, public readonly depth: number, public readonly metadata: Object, public readonly data: D ) { } }; private GridItem = class implements GridItem { constructor(public readonly metadata: Object, public readonly data: D) { } }; private GridHeaderMetadata = class { constructor(public readonly sortDirection?: 'ascending' | 'descending', public readonly sortable?: boolean) { } }; } // This is a convenience for registering addEventListener/removeEventListener EventTargetMixin.applyMixin(SampleDataGridProvider);