import { RevGridDefinition, RevGridOptions, RevSubgrid, RevViewCell } from '../client'; import { RevDataRowArrayDataServer, RevDataRowArrayGrid, RevDataRowArraySchemaServer } from '../data-row-array'; import { RevSingleHeadingDataServer, RevSingleHeadingField } from '../header'; import { RevStandardHeaderTextCellPainter } from '../standard'; import { RevSimpleAlphaTextCellPainter } from './cell-painter'; import { RevSimpleBehavioredColumnSettings, RevSimpleBehavioredGridSettings } from './settings'; import { RevSimpleInMemoryBehavioredGridSettings, revSimpleReadonlyDefaultBehavioredColumnSettings } from './settings-implementations'; /** @public */ export class RevSimpleDataRowArrayGrid extends RevDataRowArrayGrid< RevSimpleBehavioredGridSettings, RevSimpleBehavioredColumnSettings, RevSingleHeadingField > { private readonly _headerCellPainter: RevStandardHeaderTextCellPainter< RevSimpleBehavioredGridSettings, RevSimpleBehavioredColumnSettings, RevSingleHeadingField >; private readonly _textCellPainter: RevSimpleAlphaTextCellPainter< RevSimpleBehavioredGridSettings, RevSimpleBehavioredColumnSettings, RevSingleHeadingField >; constructor( canvasElement: HTMLCanvasElement, settings?: RevSimpleInMemoryBehavioredGridSettings, options?: RevGridOptions, ) { const schemaServer = new RevDataRowArraySchemaServer(); const mainDataServer = new RevDataRowArrayDataServer(); const headerDataServer = new RevSingleHeadingDataServer(); const definition: RevGridDefinition = { schemaServer, subgrids: [ { role: RevSubgrid.Role.header, dataServer: headerDataServer, getCellPainterEventer: (viewCell) => this.getHeaderCellPainter(viewCell), }, { role: RevSubgrid.Role.main, dataServer: mainDataServer, getCellPainterEventer: (viewCell) => this.getMainCellPainter(viewCell), } ], }; super( canvasElement, definition, settings ?? new RevSimpleInMemoryBehavioredGridSettings, () => revSimpleReadonlyDefaultBehavioredColumnSettings, options ); this._headerCellPainter = new RevStandardHeaderTextCellPainter(this, headerDataServer); this._textCellPainter = new RevSimpleAlphaTextCellPainter(this, mainDataServer); } private getHeaderCellPainter(_viewCell: RevViewCell) { return this._headerCellPainter; } private getMainCellPainter(_viewCell: RevViewCell) { return this._textCellPainter; } }