@deephaven/iris-grid 1.4.1-beta.0 → 1.4.1-react19.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.js +5 -7
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +6 -7
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -3
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +2 -2
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +2 -5
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.js +2 -4
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/EmptyIrisGridModel.d.ts +3 -0
- package/dist/EmptyIrisGridModel.d.ts.map +1 -1
- package/dist/EmptyIrisGridModel.js +8 -0
- package/dist/EmptyIrisGridModel.js.map +1 -1
- package/dist/FilterInputField.js +4 -5
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +4 -6
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +38 -43
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +181 -168
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +4 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.d.ts.map +1 -1
- package/dist/IrisGridCacheUtils.js +1 -1
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +1 -2
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +4 -6
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
- package/dist/IrisGridIcons.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +1 -2
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +8 -0
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +8 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +2 -1
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +4 -0
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +6 -8
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridPartitionedTableModel.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +2 -0
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +12 -7
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +0 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.js +1 -2
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +6 -2
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +71 -61
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.d.ts.map +1 -1
- package/dist/IrisGridThemeProvider.js +1 -0
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +1 -1
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +19 -14
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +3 -1
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +60 -56
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +55 -77
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/dist/LazyIrisGrid.js +3 -1
- package/dist/LazyIrisGrid.js.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/MissingPartitionError.js.map +1 -1
- package/dist/NoPastePermissionModal.js +1 -2
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PartitionedGridModel.js.map +1 -1
- package/dist/PendingDataBottomBar.js +1 -2
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +1 -2
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/TextAlignmentFormatContextMenu.d.ts +21 -0
- package/dist/format-context-menus/TextAlignmentFormatContextMenu.d.ts.map +1 -0
- package/dist/format-context-menus/TextAlignmentFormatContextMenu.js +42 -0
- package/dist/format-context-menus/TextAlignmentFormatContextMenu.js.map +1 -0
- package/dist/format-context-menus/index.d.ts +1 -0
- package/dist/format-context-menus/index.d.ts.map +1 -1
- package/dist/format-context-menus/index.js +1 -0
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +5 -2
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +27 -3
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -3
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +3 -3
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +1 -2
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +4 -6
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +2 -3
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/DownloadServiceWorkerUtils.js +1 -1
- package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
- package/dist/sidebar/InputEditor.js +8 -9
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +3 -3
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +1 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -11
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +1 -2
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +5 -7
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +9 -10
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +4 -5
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +0 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +3 -5
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/aggregations/index.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +1 -3
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -3
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +1 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +2 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +1 -3
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -3
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +1 -2
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -2
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -2
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +1 -2
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +1 -2
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +1 -2
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +1 -2
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +34 -36
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +3 -3
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +3 -5
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -4
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +4 -4
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +3 -6
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +1 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +17 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridProxyModel.js","names":["deepEqual","Formatter","TableUtils","Log","EventShimCustomEvent","PromiseUtils","IrisGridTableModel","IrisGridPartitionedTableModel","IrisGridTreeTableModel","IrisGridModel","isIrisGridTableModelTemplate","isPartitionedGridModelProvider","isPartitionedGridModel","log","module","makeModel","dh","table","formatter","inputTable","isTreeTable","isPartitionedTable","IrisGridProxyModel","constructor","arguments","length","undefined","_defineProperty","top","bottom","columns","currentViewport","model","setViewport","addEventListener","bind","removeEventListener","dispatchEvent","handleModelEvent","originalModel","modelPromise","rollup","partition","selectDistinct","Proxy","get","target","prop","receiver","_Object$getOwnPropert","proxyHasGetter","Object","getOwnPropertyDescriptor","getPrototypeOf","Reflect","proxyHasProp","prototype","hasOwnProperty","call","proxyHasFn","trueTarget","set","value","_Object$getOwnPropert2","proxyHasSetter","close","cancel","event","debug2","detail","type","setModel","debug","oldModel","oldColumns","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","keys","i","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isRollupAvailable","originalColumns","partitionColumns","partitionConfig","isPartitionRequired","Error","Promise","resolve","mode","partitionBaseTable","partitionMergedTable","partitionTable","partitions","partitionKeysTable","rollupConfig","columnNames","map","name","find","column","filter","isFilterRequired","isPartitionAwareSourceTable"],"sources":["../src/IrisGridProxyModel.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n type CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n} from '@deephaven/utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridPartitionedTableModel from './IrisGridPartitionedTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport { type ColumnName } from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nimport {\n type PartitionConfig,\n type PartitionedGridModel,\n isPartitionedGridModelProvider,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter?: Formatter,\n inputTable?: DhType.InputTable | null\n): IrisGridModel {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(dh, table, formatter);\n }\n if (TableUtils.isPartitionedTable(table)) {\n return new IrisGridPartitionedTableModel(dh, table, formatter);\n }\n return new IrisGridTableModel(dh, table, formatter, inputTable);\n}\n\n/**\n * Model which proxies calls to other IrisGridModels.\n * This allows for operations that generate new tables, like rollups.\n * The proxy model will call any methods it has implemented and delegate any\n * it does not implement to the underlying model.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nclass IrisGridProxyModel extends IrisGridModel implements PartitionedGridModel {\n /**\n * @param dh JSAPI instance\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n\n model: IrisGridModel;\n\n dh: typeof DhType;\n\n private originalModel: IrisGridModel;\n\n private modelPromise: CancelablePromise<IrisGridModel> | null;\n\n private rollup: DhType.RollupConfig | null;\n\n private partition: PartitionConfig | null;\n\n private selectDistinct: ColumnName[];\n\n private currentViewport?: {\n top: number;\n bottom: number;\n columns?: DhType.Column[];\n };\n\n constructor(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter = new Formatter(dh),\n inputTable: DhType.InputTable | null = null\n ) {\n super(dh);\n\n // The EventTarget methods must be bound to this instance\n // Otherwise they throw errors because of the Proxy\n this.addEventListener = this.addEventListener.bind(this);\n this.removeEventListener = this.removeEventListener.bind(this);\n this.dispatchEvent = this.dispatchEvent.bind(this);\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(dh, table, formatter, inputTable);\n this.dh = dh;\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.partition = null;\n this.selectDistinct = [];\n\n // eslint-disable-next-line no-constructor-return\n return new Proxy(this, {\n // We want to use any properties on the proxy model if defined\n // If not, then proxy to the underlying model\n get(target, prop, receiver) {\n // Does this class have a getter for the prop\n // Getter functions are on the prototype\n const proxyHasGetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.get != null;\n\n if (proxyHasGetter) {\n return Reflect.get(target, prop, receiver);\n }\n\n // Does this class implement the property\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n // Does the class implement a function for the property\n const proxyHasFn = Object.prototype.hasOwnProperty.call(\n Object.getPrototypeOf(target),\n prop\n );\n\n const trueTarget = proxyHasProp || proxyHasFn ? target : target.model;\n return Reflect.get(trueTarget, prop);\n },\n set(target, prop, value) {\n const proxyHasSetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.set != null;\n\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n if (proxyHasSetter || proxyHasProp) {\n return Reflect.set(target, prop, value, target);\n }\n\n return Reflect.set(target.model, prop, value, target.model);\n },\n });\n }\n\n close(): void {\n this.originalModel.close();\n if (this.model !== this.originalModel) {\n this.model.close();\n }\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n }\n\n handleModelEvent(event: CustomEvent): void {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new EventShimCustomEvent(type, { detail }));\n }\n\n setModel(model: IrisGridModel): void {\n log.debug('setModel', model);\n\n const oldModel = this.model;\n const { columns: oldColumns } = oldModel;\n\n if (oldModel !== this.originalModel) {\n oldModel.close();\n }\n\n this.model = model;\n\n if (this.listenerCount > 0) {\n this.addListeners(model);\n }\n\n if (oldColumns !== model.columns) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n } else if (this.currentViewport != null) {\n // If the columns haven't changed, the current viewport should still valid, and needs to be set on the new model\n const { top, bottom, columns } = this.currentViewport;\n model.setViewport(top, bottom, columns);\n }\n\n if (isIrisGridTableModelTemplate(model)) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n }\n\n setNextModel(modelPromise: Promise<IrisGridModel>): void {\n log.debug2('setNextModel');\n\n if (this.modelPromise) {\n this.modelPromise.cancel();\n }\n\n if (this.listenerCount > 0) {\n this.removeListeners(this.model);\n }\n\n this.modelPromise = PromiseUtils.makeCancelable(\n modelPromise,\n (model: IrisGridModel) => model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch((err: unknown) => {\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('setNextModel cancelled');\n return;\n }\n\n log.error('Unable to set next model', err);\n this.modelPromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n startListening(): void {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening(): void {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get isCustomColumnsAvailable(): boolean {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isRollupAvailable(): boolean {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable(): boolean {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get originalColumns(): readonly DhType.Column[] {\n return this.originalModel.columns;\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n return [];\n }\n return this.originalModel.partitionColumns;\n }\n\n get partitionConfig(): PartitionConfig | null {\n if (\n !isPartitionedGridModelProvider(this.originalModel) ||\n !this.originalModel.isPartitionRequired\n ) {\n if (!isPartitionedGridModel(this.originalModel)) {\n // @ts-expect-error If the original model has an undefined partitionConfig return undefined to make the proxy model also return false in isPartitionedGridModel\n return undefined;\n }\n return null;\n }\n return this.partition;\n }\n\n set partitionConfig(partitionConfig: PartitionConfig | null) {\n if (!this.isPartitionRequired) {\n throw new Error('Partitions are not available');\n }\n log.debug('set partitionConfig', partitionConfig);\n this.partition = partitionConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n if (\n partitionConfig != null &&\n isPartitionedGridModelProvider(this.originalModel)\n ) {\n if (partitionConfig.mode === 'keys') {\n modelPromise = this.originalModel\n .partitionBaseTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else if (partitionConfig.mode === 'merged') {\n modelPromise = this.originalModel\n .partitionMergedTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else {\n modelPromise = this.originalModel\n .partitionTable(partitionConfig.partitions)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n }\n\n this.setNextModel(modelPromise);\n }\n\n partitionKeysTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionKeysTable();\n }\n\n partitionMergedTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionMergedTable();\n }\n\n partitionTable(partitions: unknown[]): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionTable(partitions);\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n log.debug('set rollupConfig', rollupConfig);\n\n if (!this.isRollupAvailable) {\n throw new Error('Rollup Rows are not available');\n }\n\n // Prevent model update when IrisGridModelUpdater is mounted\n // if rollup is already initialized in IrisGridPanel\n if (deepEqual(rollupConfig, this.rollup)) {\n return;\n }\n\n this.rollup = rollupConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n rollupConfig != null\n ) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns(): ColumnName[] {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames: string[]) {\n log.debug('set selectDistinctColumns', columnNames);\n\n if (!this.isSelectDistinctAvailable) {\n throw new Error('Select distinct is not available');\n }\n\n if (\n columnNames === this.selectDistinctColumns ||\n (columnNames.length === 0 && this.selectDistinctColumns.length === 0)\n ) {\n log.debug('Ignore same selectDistinctColumns', columnNames);\n return;\n }\n\n this.selectDistinct = columnNames;\n\n const selectDistinctColumns = columnNames\n .map(name => this.originalColumns.find(column => column.name === name))\n .filter(column => column != null) as DhType.Column[];\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n selectDistinctColumns.length > 0\n ) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get isFilterRequired(): boolean {\n return this.originalModel.isFilterRequired;\n }\n\n get isPartitionRequired(): boolean {\n // @ts-expect-error If the original model is not a partitioned model return undefined to make the proxy model also return false in isPartitionedGridModelProvider\n return isPartitionedGridModelProvider(this.originalModel)\n ? this.originalModel.isPartitionRequired\n : undefined;\n }\n\n get isPartitionAwareSourceTable(): boolean {\n return (\n isPartitionedGridModelProvider(this.originalModel) &&\n this.originalModel.isPartitionAwareSourceTable\n );\n }\n\n get formatter(): Formatter {\n return this.originalModel.formatter;\n }\n\n set formatter(formatter: Formatter) {\n this.originalModel.formatter = formatter;\n }\n\n setViewport = (\n top: number,\n bottom: number,\n columns?: DhType.Column[]\n ): void => {\n this.currentViewport = { top, bottom, columns };\n this.model.setViewport(top, bottom, columns);\n };\n}\n\nexport default IrisGridProxyModel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridProxyModel.js","names":["deepEqual","Formatter","TableUtils","Log","EventShimCustomEvent","PromiseUtils","IrisGridTableModel","IrisGridPartitionedTableModel","IrisGridTreeTableModel","IrisGridModel","isIrisGridTableModelTemplate","isPartitionedGridModelProvider","isPartitionedGridModel","log","module","makeModel","dh","table","formatter","inputTable","isTreeTable","isPartitionedTable","IrisGridProxyModel","constructor","arguments","length","undefined","_defineProperty","top","bottom","columns","currentViewport","model","setViewport","addEventListener","bind","removeEventListener","dispatchEvent","handleModelEvent","originalModel","modelPromise","rollup","partition","selectDistinct","Proxy","get","target","prop","receiver","_Object$getOwnPropert","proxyHasGetter","Object","getOwnPropertyDescriptor","getPrototypeOf","Reflect","proxyHasProp","prototype","hasOwnProperty","call","proxyHasFn","trueTarget","set","value","_Object$getOwnPropert2","proxyHasSetter","close","cancel","event","debug2","detail","type","setModel","debug","oldModel","oldColumns","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","keys","i","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isRollupAvailable","originalColumns","partitionColumns","partitionConfig","isPartitionRequired","Error","Promise","resolve","mode","partitionBaseTable","partitionMergedTable","partitionTable","partitions","partitionKeysTable","rollupConfig","columnNames","map","name","find","column","filter","isFilterRequired","isPartitionAwareSourceTable","columnAlignmentMap"],"sources":["../src/IrisGridProxyModel.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n type CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n} from '@deephaven/utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridPartitionedTableModel from './IrisGridPartitionedTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport { type ColumnName } from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nimport {\n type PartitionConfig,\n type PartitionedGridModel,\n isPartitionedGridModelProvider,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter?: Formatter,\n inputTable?: DhType.InputTable | null\n): IrisGridModel {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(dh, table, formatter);\n }\n if (TableUtils.isPartitionedTable(table)) {\n return new IrisGridPartitionedTableModel(dh, table, formatter);\n }\n return new IrisGridTableModel(dh, table, formatter, inputTable);\n}\n\n/**\n * Model which proxies calls to other IrisGridModels.\n * This allows for operations that generate new tables, like rollups.\n * The proxy model will call any methods it has implemented and delegate any\n * it does not implement to the underlying model.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nclass IrisGridProxyModel extends IrisGridModel implements PartitionedGridModel {\n /**\n * @param dh JSAPI instance\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n\n model: IrisGridModel;\n\n dh: typeof DhType;\n\n private originalModel: IrisGridModel;\n\n private modelPromise: CancelablePromise<IrisGridModel> | null;\n\n private rollup: DhType.RollupConfig | null;\n\n private partition: PartitionConfig | null;\n\n private selectDistinct: ColumnName[];\n\n private currentViewport?: {\n top: number;\n bottom: number;\n columns?: DhType.Column[];\n };\n\n constructor(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter = new Formatter(dh),\n inputTable: DhType.InputTable | null = null\n ) {\n super(dh);\n\n // The EventTarget methods must be bound to this instance\n // Otherwise they throw errors because of the Proxy\n this.addEventListener = this.addEventListener.bind(this);\n this.removeEventListener = this.removeEventListener.bind(this);\n this.dispatchEvent = this.dispatchEvent.bind(this);\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(dh, table, formatter, inputTable);\n this.dh = dh;\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.partition = null;\n this.selectDistinct = [];\n\n // eslint-disable-next-line no-constructor-return\n return new Proxy(this, {\n // We want to use any properties on the proxy model if defined\n // If not, then proxy to the underlying model\n get(target, prop, receiver) {\n // Does this class have a getter for the prop\n // Getter functions are on the prototype\n const proxyHasGetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.get != null;\n\n if (proxyHasGetter) {\n return Reflect.get(target, prop, receiver);\n }\n\n // Does this class implement the property\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n // Does the class implement a function for the property\n const proxyHasFn = Object.prototype.hasOwnProperty.call(\n Object.getPrototypeOf(target),\n prop\n );\n\n const trueTarget = proxyHasProp || proxyHasFn ? target : target.model;\n return Reflect.get(trueTarget, prop);\n },\n set(target, prop, value) {\n const proxyHasSetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.set != null;\n\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n if (proxyHasSetter || proxyHasProp) {\n return Reflect.set(target, prop, value, target);\n }\n\n return Reflect.set(target.model, prop, value, target.model);\n },\n });\n }\n\n close(): void {\n this.originalModel.close();\n if (this.model !== this.originalModel) {\n this.model.close();\n }\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n }\n\n handleModelEvent(event: CustomEvent): void {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new EventShimCustomEvent(type, { detail }));\n }\n\n setModel(model: IrisGridModel): void {\n log.debug('setModel', model);\n\n const oldModel = this.model;\n const { columns: oldColumns } = oldModel;\n\n if (oldModel !== this.originalModel) {\n oldModel.close();\n }\n\n this.model = model;\n\n if (this.listenerCount > 0) {\n this.addListeners(model);\n }\n\n if (oldColumns !== model.columns) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n } else if (this.currentViewport != null) {\n // If the columns haven't changed, the current viewport should still valid, and needs to be set on the new model\n const { top, bottom, columns } = this.currentViewport;\n model.setViewport(top, bottom, columns);\n }\n\n if (isIrisGridTableModelTemplate(model)) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n }\n\n setNextModel(modelPromise: Promise<IrisGridModel>): void {\n log.debug2('setNextModel');\n\n if (this.modelPromise) {\n this.modelPromise.cancel();\n }\n\n if (this.listenerCount > 0) {\n this.removeListeners(this.model);\n }\n\n this.modelPromise = PromiseUtils.makeCancelable(\n modelPromise,\n (model: IrisGridModel) => model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch((err: unknown) => {\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('setNextModel cancelled');\n return;\n }\n\n log.error('Unable to set next model', err);\n this.modelPromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n startListening(): void {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening(): void {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get isCustomColumnsAvailable(): boolean {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isRollupAvailable(): boolean {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable(): boolean {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get originalColumns(): readonly DhType.Column[] {\n return this.originalModel.columns;\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n return [];\n }\n return this.originalModel.partitionColumns;\n }\n\n get partitionConfig(): PartitionConfig | null {\n if (\n !isPartitionedGridModelProvider(this.originalModel) ||\n !this.originalModel.isPartitionRequired\n ) {\n if (!isPartitionedGridModel(this.originalModel)) {\n // @ts-expect-error If the original model has an undefined partitionConfig return undefined to make the proxy model also return false in isPartitionedGridModel\n return undefined;\n }\n return null;\n }\n return this.partition;\n }\n\n set partitionConfig(partitionConfig: PartitionConfig | null) {\n if (!this.isPartitionRequired) {\n throw new Error('Partitions are not available');\n }\n log.debug('set partitionConfig', partitionConfig);\n this.partition = partitionConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n if (\n partitionConfig != null &&\n isPartitionedGridModelProvider(this.originalModel)\n ) {\n if (partitionConfig.mode === 'keys') {\n modelPromise = this.originalModel\n .partitionBaseTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else if (partitionConfig.mode === 'merged') {\n modelPromise = this.originalModel\n .partitionMergedTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else {\n modelPromise = this.originalModel\n .partitionTable(partitionConfig.partitions)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n }\n\n this.setNextModel(modelPromise);\n }\n\n partitionKeysTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionKeysTable();\n }\n\n partitionMergedTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionMergedTable();\n }\n\n partitionTable(partitions: unknown[]): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionTable(partitions);\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n log.debug('set rollupConfig', rollupConfig);\n\n if (!this.isRollupAvailable) {\n throw new Error('Rollup Rows are not available');\n }\n\n // Prevent model update when IrisGridModelUpdater is mounted\n // if rollup is already initialized in IrisGridPanel\n if (deepEqual(rollupConfig, this.rollup)) {\n return;\n }\n\n this.rollup = rollupConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n rollupConfig != null\n ) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns(): ColumnName[] {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames: string[]) {\n log.debug('set selectDistinctColumns', columnNames);\n\n if (!this.isSelectDistinctAvailable) {\n throw new Error('Select distinct is not available');\n }\n\n if (\n columnNames === this.selectDistinctColumns ||\n (columnNames.length === 0 && this.selectDistinctColumns.length === 0)\n ) {\n log.debug('Ignore same selectDistinctColumns', columnNames);\n return;\n }\n\n this.selectDistinct = columnNames;\n\n const selectDistinctColumns = columnNames\n .map(name => this.originalColumns.find(column => column.name === name))\n .filter(column => column != null) as DhType.Column[];\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n selectDistinctColumns.length > 0\n ) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get isFilterRequired(): boolean {\n return this.originalModel.isFilterRequired;\n }\n\n get isPartitionRequired(): boolean {\n // @ts-expect-error If the original model is not a partitioned model return undefined to make the proxy model also return false in isPartitionedGridModelProvider\n return isPartitionedGridModelProvider(this.originalModel)\n ? this.originalModel.isPartitionRequired\n : undefined;\n }\n\n get isPartitionAwareSourceTable(): boolean {\n return (\n isPartitionedGridModelProvider(this.originalModel) &&\n this.originalModel.isPartitionAwareSourceTable\n );\n }\n\n get formatter(): Formatter {\n return this.originalModel.formatter;\n }\n\n set formatter(formatter: Formatter) {\n this.originalModel.formatter = formatter;\n }\n\n get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return this.originalModel.columnAlignmentMap;\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n this.originalModel.columnAlignmentMap = columnAlignmentMap;\n }\n\n setViewport = (\n top: number,\n bottom: number,\n columns?: DhType.Column[]\n ): void => {\n this.currentViewport = { top, bottom, columns };\n this.model.setViewport(top, bottom, columns);\n };\n}\n\nexport default IrisGridProxyModel;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/IrisGridRenderer.js
CHANGED
|
@@ -475,7 +475,6 @@ export class IrisGridRenderer extends GridRenderer {
|
|
|
475
475
|
context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
|
-
|
|
479
478
|
context.stroke();
|
|
480
479
|
for (var _i = 0; _i < visibleColumns.length; _i += 1) {
|
|
481
480
|
var _column = visibleColumns[_i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridRenderer.js","names":["GridRenderer","GridUtils","TableUtils","assertNotNull","getOrThrow","IrisGridTextCellRenderer","IrisGridDataBarCellRenderer","getIcon","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","EXPAND_ICON_SIZE","IrisGridRenderer","constructor","arguments","_defineProperty","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","getSortIcon","sort","size","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGrid","context","drawCellOverflowButton","drawGridLines","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelColumn","get","modelRow","undefined","renderType","renderTypeForCell","cellRenderer","getCellRenderer","getCellOverflowButtonPosition","_ref","mouseX","mouseY","theme","textCellRenderer","shouldRenderOverflowButton","left","buttonLeft","top","buttonTop","width","buttonWidth","height","buttonHeight","cellHorizontalPadding","overflowButtonColor","overflowButtonHoverColor","iconSize","save","fillStyle","icon","translate","fill","restore","groupedColumns","maxY","allColumnWidths","allColumnXs","length","groupedColumnDividerColor","lastVisibleGroupColumnIndex","columnX","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","allRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","setLineDash","pendingTextColor","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","concat","rect","clip","drawColumnHeaders","reverse","columnHeaderHeight","drawFilterHeaders","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","_objectSpread","drawColumnHeaderAtIndex","index","_model$columns$modelC","gridX","headerHorizontalPadding","themeIconSize","Math","round","columnName","columns","name","getSortForColumn","text","textForColumnHeader","textWidth","getCachedHeaderWidth","textRight","defaultX","min","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","filterBarFont","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","fontWidthsLower","fontWidthsUpper","fontWidthLower","fontWidthUpper","maxLength","getCachedTruncatedString","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawRowFooters","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","allRowHeights","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","mouseRow","getRowAtY","includes","rowHeight","rowY","textForRowFooter","getExpandButtonPosition","_ref2","NULL_POSITION","getCellInfoFromXY","max"],"sources":["../src/IrisGridRenderer.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type BoundedAxisRange,\n type Coordinate,\n type GridMetrics,\n type GridRangeIndex,\n GridRenderer,\n type GridRenderState,\n type GridThemeType,\n GridUtils,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, getOrThrow } from '@deephaven/utils';\nimport {\n type ReadonlyAdvancedFilterMap,\n type ReadonlyQuickFilterMap,\n type AdvancedFilter,\n type QuickFilter,\n} from './CommonTypes';\nimport { type IrisGridThemeType } from './IrisGridTheme';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridTextCellRenderer from './IrisGridTextCellRenderer';\nimport IrisGridDataBarCellRenderer from './IrisGridDataBarCellRenderer';\nimport { getIcon } from './IrisGridIcons';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n CELL_OVERFLOW: 'cellOverflow',\n});\n\nconst EXPAND_ICON_SIZE = 10;\n\nexport type IrisGridRenderState = GridRenderState & {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isSelectingColumn: boolean;\n loadingScrimProgress: number;\n reverse: boolean;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n isMenuShown: boolean;\n};\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nexport class IrisGridRenderer extends GridRenderer {\n static isFilterValid(\n advancedFilter: AdvancedFilter | undefined | null,\n quickFilter: QuickFilter | undefined | null\n ): boolean {\n const isAdvancedFilterValid =\n advancedFilter == null || advancedFilter.filter != null;\n const isQuickFilterValid =\n quickFilter == null || quickFilter.filter != null;\n return isAdvancedFilterValid && isQuickFilterValid;\n }\n\n protected textCellRenderer = new IrisGridTextCellRenderer();\n\n protected dataBarCellRenderer = new IrisGridDataBarCellRenderer();\n\n getSortIcon(sort: dh.Sort | null, size: number): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return getIcon(ICON_NAMES.SORT_UP, size);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return getIcon(ICON_NAMES.SORT_DOWN, size);\n }\n return null;\n }\n\n drawCanvas(state: IrisGridRenderState): void {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGrid(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGrid(context, state);\n this.drawCellOverflowButton(state);\n }\n\n drawGridLines(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelColumn = modelColumns.get(column);\n const modelRow = getOrThrow(modelRows, row);\n if (modelColumn === undefined) {\n return;\n }\n\n const renderType = model.renderTypeForCell(modelColumn, modelRow);\n const cellRenderer = this.getCellRenderer(renderType);\n cellRenderer.drawCellContent(context, state, column, row);\n }\n\n getCellOverflowButtonPosition({\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: IrisGridThemeType;\n }): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n return this.textCellRenderer.getCellOverflowButtonPosition(\n mouseX,\n mouseY,\n metrics,\n theme\n );\n }\n\n shouldRenderOverflowButton(state: IrisGridRenderState): boolean {\n return this.textCellRenderer.shouldRenderOverflowButton(state);\n }\n\n drawCellOverflowButton(state: IrisGridRenderState): void {\n const { context, mouseX, mouseY, theme } = state;\n if (mouseX == null || mouseY == null) return;\n\n if (!this.shouldRenderOverflowButton(state)) {\n return;\n }\n\n const {\n left: buttonLeft,\n top: buttonTop,\n width: buttonWidth,\n height: buttonHeight,\n } = this.getCellOverflowButtonPosition(state);\n\n const {\n cellHorizontalPadding,\n overflowButtonColor,\n overflowButtonHoverColor,\n iconSize,\n } = theme;\n\n context.save();\n if (\n overflowButtonHoverColor != null &&\n buttonLeft != null &&\n buttonWidth != null &&\n buttonTop != null &&\n buttonHeight != null &&\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else if (overflowButtonColor != null) {\n context.fillStyle = overflowButtonColor;\n }\n const icon = getIcon(ICON_NAMES.CELL_OVERFLOW, iconSize);\n if (buttonLeft != null && buttonTop != null && buttonHeight != null) {\n context.translate(\n buttonLeft + cellHorizontalPadding,\n buttonTop + (buttonHeight - iconSize) / 2\n );\n }\n context.fill(icon);\n\n context.restore();\n }\n\n drawGroupedColumnLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { groupedColumns } = model;\n const { maxY, allColumnWidths, allColumnXs } = metrics;\n if (\n groupedColumns.length === 0 ||\n theme.groupedColumnDividerColor == null\n ) {\n return;\n }\n\n // This assumes that the engine puts the grouped columns at the start of the\n // model, so model and visible index match for grouped columns. If we ever\n // add freeze support for tree tables or allow moving the grouped columns,\n // this assumption may no longer hold true. If such a change occurs, we'll\n // need to revisit this since a single vertical divider may no longer make\n // sense.\n const lastVisibleGroupColumnIndex = groupedColumns.length - 1;\n\n const columnX = allColumnXs.get(lastVisibleGroupColumnIndex);\n const columnWidth = allColumnWidths.get(lastVisibleGroupColumnIndex);\n if (columnX == null || columnWidth == null) {\n return;\n }\n\n const x = columnX + columnWidth + 0.5;\n\n context.strokeStyle = theme.groupedColumnDividerColor;\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(x, 0);\n context.lineTo(x, maxY);\n context.stroke();\n }\n\n drawPendingRowLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { allRowYs, maxX } = metrics;\n const { pendingRowCount } = model;\n if (pendingRowCount <= 0) {\n return;\n }\n\n const firstPendingRow =\n model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;\n let y = allRowYs.get(firstPendingRow);\n if (y == null) {\n return;\n }\n\n y -= 0.5;\n context.save();\n context.setLineDash([4, 2]);\n context.strokeStyle = theme.pendingTextColor;\n\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(0, y);\n context.lineTo(maxX, y);\n context.stroke();\n context.restore();\n }\n\n drawMouseColumnHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { theme, metrics, hoverSelectColumn } = state;\n if (\n hoverSelectColumn == null ||\n theme.linkerColumnHoverBackgroundColor == null\n ) {\n return;\n }\n\n const { allColumnWidths, allColumnXs, maxY } = metrics;\n\n const x = getOrThrow(allColumnXs, hoverSelectColumn);\n const columnWidth = getOrThrow(allColumnWidths, hoverSelectColumn);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state: IrisGridRenderState): void {\n const { context, loadingScrimProgress, metrics, theme } = state;\n if (loadingScrimProgress == null) {\n return;\n }\n\n const { width, height, gridY } = metrics;\n const { scrimBlurSize, scrimColor } = theme;\n\n context.save();\n\n // Use global composite so we can change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n if (scrimColor != null) {\n context.fillStyle = scrimColor;\n }\n\n // Clip the path so the top edge is hard edge, bottom edge is soft/blurry\n context.beginPath();\n context.rect(0, gridY, width, height - gridY);\n context.clip();\n\n // Extend the edges beyond the clip area so they're hard edges\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n // add an overlay of the scrim color to darken things a bit\n context.globalCompositeOperation = 'source-over';\n context.filter = `blur(${scrimBlurSize}px) opacity(15%)`;\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n context.restore();\n }\n\n drawColumnHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverse } = state;\n const { columnHeaderHeight } = metrics;\n\n this.drawFilterHeaders(context, state);\n\n if (columnHeaderHeight <= 0) {\n return;\n }\n\n const { sort } = model;\n // if there is only one sort bar, it is interior to the header to save space\n if (sort.length === 1) {\n let color;\n if (reverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n reverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight\n );\n } else if (sort.length > 1) {\n // if there's multiple bars, the sort is interior to header\n // and the reverse claims space in the table\n if (reverse) {\n this.drawHeaderBar(\n context,\n state,\n theme.headerReverseBarColor,\n theme.reverseHeaderBarHeight,\n false\n );\n }\n this.drawHeaderBar(\n context,\n state,\n theme.headerSortBarColor,\n theme.sortHeaderBarHeight\n );\n }\n }\n\n drawHeaderBar(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n color: string | CanvasGradient | CanvasPattern,\n barHeight: number,\n interior = true\n ): void {\n const { theme, metrics, model } = state;\n const { columnHeaderHeight, width } = metrics;\n // Draw casing with 1 pixel above and below the bar,\n // 1px falls on the existing split between grid/headers\n // so don't need to be accounnted for in math elsewhere\n let offset = 0;\n if (!interior) {\n offset = barHeight;\n }\n context.fillStyle = theme.headerBarCasingColor;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeadersAtDepth(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n range: BoundedAxisRange,\n boundsProp: { minX: number; maxX: number },\n depth: number\n ): void {\n const { metrics, model, isMenuShown, theme } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const { columnHeaderHeight } = theme;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : columnHeaderHeight) // Account for the menu button\n : boundsProp.maxX,\n };\n super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);\n }\n\n drawColumnHeaderAtIndex(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n index: VisibleIndex,\n bounds: { minX: number; maxX: number }\n ): void {\n super.drawColumnHeaderAtIndex(context, state, index, bounds);\n const { metrics, model, theme } = state;\n const {\n modelColumns,\n allColumnWidths,\n allColumnXs,\n gridX,\n columnHeaderHeight,\n } = metrics;\n\n const { headerHorizontalPadding, iconSize: themeIconSize } = theme;\n const iconSize = Math.round(themeIconSize * 0.75); // The vsTriangle icons are a bit bigger than we want\n const columnWidth = getOrThrow(allColumnWidths, index, 0);\n const columnX = getOrThrow(allColumnXs, index) + gridX;\n const modelColumn = modelColumns.get(index);\n\n if (modelColumn == null) {\n return;\n }\n\n const columnName = model.columns[modelColumn]?.name;\n\n if (columnName == null) {\n return;\n }\n\n const sort = TableUtils.getSortForColumn(model.sort, columnName);\n\n if (!sort) {\n return;\n }\n\n const icon = this.getSortIcon(sort, iconSize);\n if (!icon) {\n return;\n }\n\n const text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const textWidth = this.getCachedHeaderWidth(context, text);\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding; // Right visible edge of the headers\n // Right edge of the column. The icon has its own horizontal padding\n const defaultX = gridX + columnX + columnWidth - iconSize;\n\n // If the text is partially off the screen, put the icon to the right of the text\n // else put it at the right edge of the column/grid (whichever is smaller)\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const y = (columnHeaderHeight - iconSize) * 0.5;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme, quickFilters, advancedFilters } = state;\n const { filterBarHeight } = theme;\n\n if (filterBarHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n modelColumns,\n visibleColumns,\n allColumnWidths,\n allColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.filterBarFont;\n context.textAlign = 'left';\n\n if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n // fill style if a fiter is set on any column\n context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;\n } else {\n // fill style with no filters set\n context.fillStyle = theme.filterBarExpandedBackgroundColor;\n }\n\n // Draw the background\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);\n\n // Draw the bottom border\n context.fillStyle = theme.headerBarCasingColor;\n\n context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n const y1 = columnHeaderHeight;\n context.strokeStyle = theme.filterBarSeparatorColor;\n context.beginPath();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const modelColumn = getOrThrow(modelColumns, column);\n const columnX = getOrThrow(allColumnXs, column);\n const columnWidth = getOrThrow(allColumnWidths, column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + (columnX ?? 0);\n context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing\n }\n }\n context.stroke();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = getOrThrow(allColumnWidths, column);\n const columnX = getOrThrow(allColumnXs, column);\n const x = columnX + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const {\n filterBarHeight,\n filterBarExpandedActiveCellBackgroundColor,\n filterBarErrorColor,\n filterBarHorizontalPadding,\n headerColor,\n } = theme;\n const columnHeaderHeight = gridY - filterBarHeight;\n const modelColumn = modelColumns.get(column);\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter == null && advancedFilter == null) {\n return;\n }\n\n let text = null;\n if (quickFilter != null) {\n const { text: filterText } = quickFilter;\n text = filterText;\n if (!text) {\n text = TableUtils.getFilterText(quickFilter.filter);\n }\n\n if (text != null) {\n const { fontWidthsLower, fontWidthsUpper } = metrics;\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n\n const maxLength = columnWidth - filterBarHorizontalPadding * 2;\n text = this.textCellRenderer.getCachedTruncatedString(\n context,\n text,\n maxLength,\n fontWidthLower,\n fontWidthUpper\n );\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid && filterBarExpandedActiveCellBackgroundColor != null) {\n // draw active filter background inside cell\n context.fillStyle = filterBarExpandedActiveCellBackgroundColor;\n context.fillRect(\n columnX + 1, // +1 left border\n columnHeaderHeight + 1, // +1 top border\n columnWidth - 1, // -1 right border\n filterBarHeight - 3 // -3 top, bottom border and bottom casing\n );\n } else if (filterBarErrorColor != null) {\n // draw error box inside cell\n context.fillStyle = filterBarErrorColor;\n context.lineWidth = 2;\n context.strokeStyle = filterBarErrorColor;\n // Because this is drawn with a strokeRect, we have to add/subtract half the,\n // linewidth from each side to make interior, in addition to accounting for any borders/casings\n const rectLeft = columnX + 2; // 1 for strokeRect, 1 for border\n const rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border\n const rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect\n const rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing\n context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);\n }\n\n if (text != null && text !== '') {\n const textX = columnX + filterBarHorizontalPadding;\n const textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border\n context.fillStyle = headerColor;\n context.fillText(text, textX, textY);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const { gridX, gridY, maxX, visibleColumns, allColumnWidths, allColumnXs } =\n metrics;\n const columnHeaderHeight = gridY - filterBarCollapsedHeight;\n\n context.save();\n\n // Draw the background of the collapsed filter bar\n context.fillStyle = headerSeparatorColor;\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = allColumnWidths.get(column);\n const columnX = allColumnXs.get(column);\n if (columnX != null && columnWidth != null) {\n const x = columnX + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const modelColumn = modelColumns.get(column);\n\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n\n const {\n filterBarCollapsedHeight,\n filterBarActiveColor,\n filterBarActiveBackgroundColor,\n filterBarErrorColor,\n } = theme;\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n\n if (\n filterBarActiveBackgroundColor != null &&\n quickFilter == null &&\n advancedFilter == null\n ) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (filterBarActiveColor != null && isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else if (filterBarErrorColor != null) {\n context.fillStyle = filterBarErrorColor;\n }\n\n const x = columnX + 1; // for gap between columns\n const y = gridY - filterBarCollapsedHeight;\n const rectWidth = columnWidth - 1; // for gap between columns\n const rectHeight = filterBarCollapsedHeight - 1; // for casing bottom\n context.fillRect(x, y, rectWidth, rectHeight);\n\n context.restore();\n }\n\n drawRowFooters(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n gridY,\n gridX,\n maxX,\n modelRows,\n floatingTopHeight,\n floatingBottomHeight,\n floatingRows,\n rowFooterWidth,\n height,\n horizontalBarHeight,\n verticalBarWidth,\n allRowHeights,\n allRowYs,\n width,\n } = metrics;\n // Only draw the footers on the floating rows\n if (rowFooterWidth <= 0 || floatingRows.length === 0) {\n return;\n }\n\n const {\n cellHorizontalPadding,\n floatingGridRowColor,\n floatingRowBackgroundColors,\n headerColor,\n rowHoverBackgroundColor,\n } = theme;\n\n context.translate(gridX, gridY);\n\n context.beginPath();\n const x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);\n context.fillStyle = floatingRowBackgroundColors;\n if (floatingTopHeight > 0) {\n context.rect(x, 0, rowFooterWidth, floatingTopHeight);\n }\n if (floatingBottomHeight > 0) {\n context.rect(\n x,\n height - gridY - horizontalBarHeight - floatingBottomHeight,\n rowFooterWidth,\n floatingBottomHeight\n );\n }\n context.fill();\n\n const mouseRow =\n mouseX != null &&\n mouseY != null &&\n mouseX >= gridX &&\n mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (\n rowHoverBackgroundColor != null &&\n mouseRow !== null &&\n floatingRows.includes(mouseRow)\n ) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = allRowYs.get(mouseRow);\n const rowHeight = allRowHeights.get(mouseRow);\n assertNotNull(y);\n assertNotNull(rowHeight);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n if (floatingGridRowColor != null) {\n context.strokeStyle = floatingGridRowColor;\n }\n if (floatingTopHeight > 0) {\n context.moveTo(x + 0.5, 0.5);\n context.lineTo(x + 0.5, floatingTopHeight - 0.5);\n }\n if (floatingBottomHeight > 0) {\n const y = height - gridY - horizontalBarHeight - floatingBottomHeight;\n context.moveTo(x - 0.5, y + 0.5);\n context.lineTo(x - 0.5, y + floatingBottomHeight - 0.5);\n }\n context.stroke();\n\n context.fillStyle = headerColor;\n context.textAlign = 'left';\n\n const textX = x + cellHorizontalPadding;\n for (let i = 0; i < floatingRows.length; i += 1) {\n const row = floatingRows[i];\n const rowHeight = allRowHeights.get(row);\n const rowY = allRowYs.get(row);\n const modelRow = modelRows.get(row);\n if (rowY != null && rowHeight != null && modelRow != null) {\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n }\n\n context.translate(-gridX, -gridY);\n }\n\n getExpandButtonPosition(\n {\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: GridThemeType;\n },\n depth: number | null\n ): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null || depth == null || !metrics) {\n return NULL_POSITION;\n }\n const { rowHeight, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n assertNotNull(left);\n assertNotNull(rowHeight);\n assertNotNull(top);\n const { cellHorizontalPadding } = theme;\n\n const width = EXPAND_ICON_SIZE + 2 * cellHorizontalPadding;\n\n const buttonLeft = Math.max(left + EXPAND_ICON_SIZE * depth, metrics.gridX);\n const buttonTop = metrics.gridY + top;\n\n return {\n left: buttonLeft,\n top: buttonTop,\n width,\n height: rowHeight,\n };\n }\n}\n\nexport default IrisGridRenderer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridRenderer.js","names":["GridRenderer","GridUtils","TableUtils","assertNotNull","getOrThrow","IrisGridTextCellRenderer","IrisGridDataBarCellRenderer","getIcon","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","EXPAND_ICON_SIZE","IrisGridRenderer","constructor","arguments","_defineProperty","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","getSortIcon","sort","size","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGrid","context","drawCellOverflowButton","drawGridLines","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelColumn","get","modelRow","undefined","renderType","renderTypeForCell","cellRenderer","getCellRenderer","getCellOverflowButtonPosition","_ref","mouseX","mouseY","theme","textCellRenderer","shouldRenderOverflowButton","left","buttonLeft","top","buttonTop","width","buttonWidth","height","buttonHeight","cellHorizontalPadding","overflowButtonColor","overflowButtonHoverColor","iconSize","save","fillStyle","icon","translate","fill","restore","groupedColumns","maxY","allColumnWidths","allColumnXs","length","groupedColumnDividerColor","lastVisibleGroupColumnIndex","columnX","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","allRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","setLineDash","pendingTextColor","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","concat","rect","clip","drawColumnHeaders","reverse","columnHeaderHeight","drawFilterHeaders","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","_objectSpread","drawColumnHeaderAtIndex","index","_model$columns$modelC","gridX","headerHorizontalPadding","themeIconSize","Math","round","columnName","columns","name","getSortForColumn","text","textForColumnHeader","textWidth","getCachedHeaderWidth","textRight","defaultX","min","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","filterBarFont","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","fontWidthsLower","fontWidthsUpper","fontWidthLower","fontWidthUpper","maxLength","getCachedTruncatedString","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawRowFooters","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","allRowHeights","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","mouseRow","getRowAtY","includes","rowHeight","rowY","textForRowFooter","getExpandButtonPosition","_ref2","NULL_POSITION","getCellInfoFromXY","max"],"sources":["../src/IrisGridRenderer.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type BoundedAxisRange,\n type Coordinate,\n type GridMetrics,\n type GridRangeIndex,\n GridRenderer,\n type GridRenderState,\n type GridThemeType,\n GridUtils,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, getOrThrow } from '@deephaven/utils';\nimport {\n type ReadonlyAdvancedFilterMap,\n type ReadonlyQuickFilterMap,\n type AdvancedFilter,\n type QuickFilter,\n} from './CommonTypes';\nimport { type IrisGridThemeType } from './IrisGridTheme';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridTextCellRenderer from './IrisGridTextCellRenderer';\nimport IrisGridDataBarCellRenderer from './IrisGridDataBarCellRenderer';\nimport { getIcon } from './IrisGridIcons';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n CELL_OVERFLOW: 'cellOverflow',\n});\n\nconst EXPAND_ICON_SIZE = 10;\n\nexport type IrisGridRenderState = GridRenderState & {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isSelectingColumn: boolean;\n loadingScrimProgress: number;\n reverse: boolean;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n isMenuShown: boolean;\n};\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nexport class IrisGridRenderer extends GridRenderer {\n static isFilterValid(\n advancedFilter: AdvancedFilter | undefined | null,\n quickFilter: QuickFilter | undefined | null\n ): boolean {\n const isAdvancedFilterValid =\n advancedFilter == null || advancedFilter.filter != null;\n const isQuickFilterValid =\n quickFilter == null || quickFilter.filter != null;\n return isAdvancedFilterValid && isQuickFilterValid;\n }\n\n protected textCellRenderer = new IrisGridTextCellRenderer();\n\n protected dataBarCellRenderer = new IrisGridDataBarCellRenderer();\n\n getSortIcon(sort: dh.Sort | null, size: number): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return getIcon(ICON_NAMES.SORT_UP, size);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return getIcon(ICON_NAMES.SORT_DOWN, size);\n }\n return null;\n }\n\n drawCanvas(state: IrisGridRenderState): void {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGrid(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGrid(context, state);\n this.drawCellOverflowButton(state);\n }\n\n drawGridLines(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelColumn = modelColumns.get(column);\n const modelRow = getOrThrow(modelRows, row);\n if (modelColumn === undefined) {\n return;\n }\n\n const renderType = model.renderTypeForCell(modelColumn, modelRow);\n const cellRenderer = this.getCellRenderer(renderType);\n cellRenderer.drawCellContent(context, state, column, row);\n }\n\n getCellOverflowButtonPosition({\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: IrisGridThemeType;\n }): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n return this.textCellRenderer.getCellOverflowButtonPosition(\n mouseX,\n mouseY,\n metrics,\n theme\n );\n }\n\n shouldRenderOverflowButton(state: IrisGridRenderState): boolean {\n return this.textCellRenderer.shouldRenderOverflowButton(state);\n }\n\n drawCellOverflowButton(state: IrisGridRenderState): void {\n const { context, mouseX, mouseY, theme } = state;\n if (mouseX == null || mouseY == null) return;\n\n if (!this.shouldRenderOverflowButton(state)) {\n return;\n }\n\n const {\n left: buttonLeft,\n top: buttonTop,\n width: buttonWidth,\n height: buttonHeight,\n } = this.getCellOverflowButtonPosition(state);\n\n const {\n cellHorizontalPadding,\n overflowButtonColor,\n overflowButtonHoverColor,\n iconSize,\n } = theme;\n\n context.save();\n if (\n overflowButtonHoverColor != null &&\n buttonLeft != null &&\n buttonWidth != null &&\n buttonTop != null &&\n buttonHeight != null &&\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else if (overflowButtonColor != null) {\n context.fillStyle = overflowButtonColor;\n }\n const icon = getIcon(ICON_NAMES.CELL_OVERFLOW, iconSize);\n if (buttonLeft != null && buttonTop != null && buttonHeight != null) {\n context.translate(\n buttonLeft + cellHorizontalPadding,\n buttonTop + (buttonHeight - iconSize) / 2\n );\n }\n context.fill(icon);\n\n context.restore();\n }\n\n drawGroupedColumnLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { groupedColumns } = model;\n const { maxY, allColumnWidths, allColumnXs } = metrics;\n if (\n groupedColumns.length === 0 ||\n theme.groupedColumnDividerColor == null\n ) {\n return;\n }\n\n // This assumes that the engine puts the grouped columns at the start of the\n // model, so model and visible index match for grouped columns. If we ever\n // add freeze support for tree tables or allow moving the grouped columns,\n // this assumption may no longer hold true. If such a change occurs, we'll\n // need to revisit this since a single vertical divider may no longer make\n // sense.\n const lastVisibleGroupColumnIndex = groupedColumns.length - 1;\n\n const columnX = allColumnXs.get(lastVisibleGroupColumnIndex);\n const columnWidth = allColumnWidths.get(lastVisibleGroupColumnIndex);\n if (columnX == null || columnWidth == null) {\n return;\n }\n\n const x = columnX + columnWidth + 0.5;\n\n context.strokeStyle = theme.groupedColumnDividerColor;\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(x, 0);\n context.lineTo(x, maxY);\n context.stroke();\n }\n\n drawPendingRowLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { allRowYs, maxX } = metrics;\n const { pendingRowCount } = model;\n if (pendingRowCount <= 0) {\n return;\n }\n\n const firstPendingRow =\n model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;\n let y = allRowYs.get(firstPendingRow);\n if (y == null) {\n return;\n }\n\n y -= 0.5;\n context.save();\n context.setLineDash([4, 2]);\n context.strokeStyle = theme.pendingTextColor;\n\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(0, y);\n context.lineTo(maxX, y);\n context.stroke();\n context.restore();\n }\n\n drawMouseColumnHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { theme, metrics, hoverSelectColumn } = state;\n if (\n hoverSelectColumn == null ||\n theme.linkerColumnHoverBackgroundColor == null\n ) {\n return;\n }\n\n const { allColumnWidths, allColumnXs, maxY } = metrics;\n\n const x = getOrThrow(allColumnXs, hoverSelectColumn);\n const columnWidth = getOrThrow(allColumnWidths, hoverSelectColumn);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state: IrisGridRenderState): void {\n const { context, loadingScrimProgress, metrics, theme } = state;\n if (loadingScrimProgress == null) {\n return;\n }\n\n const { width, height, gridY } = metrics;\n const { scrimBlurSize, scrimColor } = theme;\n\n context.save();\n\n // Use global composite so we can change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n if (scrimColor != null) {\n context.fillStyle = scrimColor;\n }\n\n // Clip the path so the top edge is hard edge, bottom edge is soft/blurry\n context.beginPath();\n context.rect(0, gridY, width, height - gridY);\n context.clip();\n\n // Extend the edges beyond the clip area so they're hard edges\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n // add an overlay of the scrim color to darken things a bit\n context.globalCompositeOperation = 'source-over';\n context.filter = `blur(${scrimBlurSize}px) opacity(15%)`;\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n context.restore();\n }\n\n drawColumnHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverse } = state;\n const { columnHeaderHeight } = metrics;\n\n this.drawFilterHeaders(context, state);\n\n if (columnHeaderHeight <= 0) {\n return;\n }\n\n const { sort } = model;\n // if there is only one sort bar, it is interior to the header to save space\n if (sort.length === 1) {\n let color;\n if (reverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n reverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight\n );\n } else if (sort.length > 1) {\n // if there's multiple bars, the sort is interior to header\n // and the reverse claims space in the table\n if (reverse) {\n this.drawHeaderBar(\n context,\n state,\n theme.headerReverseBarColor,\n theme.reverseHeaderBarHeight,\n false\n );\n }\n this.drawHeaderBar(\n context,\n state,\n theme.headerSortBarColor,\n theme.sortHeaderBarHeight\n );\n }\n }\n\n drawHeaderBar(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n color: string | CanvasGradient | CanvasPattern,\n barHeight: number,\n interior = true\n ): void {\n const { theme, metrics, model } = state;\n const { columnHeaderHeight, width } = metrics;\n // Draw casing with 1 pixel above and below the bar,\n // 1px falls on the existing split between grid/headers\n // so don't need to be accounnted for in math elsewhere\n let offset = 0;\n if (!interior) {\n offset = barHeight;\n }\n context.fillStyle = theme.headerBarCasingColor;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeadersAtDepth(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n range: BoundedAxisRange,\n boundsProp: { minX: number; maxX: number },\n depth: number\n ): void {\n const { metrics, model, isMenuShown, theme } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const { columnHeaderHeight } = theme;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : columnHeaderHeight) // Account for the menu button\n : boundsProp.maxX,\n };\n super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);\n }\n\n drawColumnHeaderAtIndex(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n index: VisibleIndex,\n bounds: { minX: number; maxX: number }\n ): void {\n super.drawColumnHeaderAtIndex(context, state, index, bounds);\n const { metrics, model, theme } = state;\n const {\n modelColumns,\n allColumnWidths,\n allColumnXs,\n gridX,\n columnHeaderHeight,\n } = metrics;\n\n const { headerHorizontalPadding, iconSize: themeIconSize } = theme;\n const iconSize = Math.round(themeIconSize * 0.75); // The vsTriangle icons are a bit bigger than we want\n const columnWidth = getOrThrow(allColumnWidths, index, 0);\n const columnX = getOrThrow(allColumnXs, index) + gridX;\n const modelColumn = modelColumns.get(index);\n\n if (modelColumn == null) {\n return;\n }\n\n const columnName = model.columns[modelColumn]?.name;\n\n if (columnName == null) {\n return;\n }\n\n const sort = TableUtils.getSortForColumn(model.sort, columnName);\n\n if (!sort) {\n return;\n }\n\n const icon = this.getSortIcon(sort, iconSize);\n if (!icon) {\n return;\n }\n\n const text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const textWidth = this.getCachedHeaderWidth(context, text);\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding; // Right visible edge of the headers\n // Right edge of the column. The icon has its own horizontal padding\n const defaultX = gridX + columnX + columnWidth - iconSize;\n\n // If the text is partially off the screen, put the icon to the right of the text\n // else put it at the right edge of the column/grid (whichever is smaller)\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const y = (columnHeaderHeight - iconSize) * 0.5;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme, quickFilters, advancedFilters } = state;\n const { filterBarHeight } = theme;\n\n if (filterBarHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n modelColumns,\n visibleColumns,\n allColumnWidths,\n allColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.filterBarFont;\n context.textAlign = 'left';\n\n if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n // fill style if a fiter is set on any column\n context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;\n } else {\n // fill style with no filters set\n context.fillStyle = theme.filterBarExpandedBackgroundColor;\n }\n\n // Draw the background\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);\n\n // Draw the bottom border\n context.fillStyle = theme.headerBarCasingColor;\n\n context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n const y1 = columnHeaderHeight;\n context.strokeStyle = theme.filterBarSeparatorColor;\n context.beginPath();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const modelColumn = getOrThrow(modelColumns, column);\n const columnX = getOrThrow(allColumnXs, column);\n const columnWidth = getOrThrow(allColumnWidths, column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + (columnX ?? 0);\n context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing\n }\n }\n context.stroke();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = getOrThrow(allColumnWidths, column);\n const columnX = getOrThrow(allColumnXs, column);\n const x = columnX + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const {\n filterBarHeight,\n filterBarExpandedActiveCellBackgroundColor,\n filterBarErrorColor,\n filterBarHorizontalPadding,\n headerColor,\n } = theme;\n const columnHeaderHeight = gridY - filterBarHeight;\n const modelColumn = modelColumns.get(column);\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter == null && advancedFilter == null) {\n return;\n }\n\n let text = null;\n if (quickFilter != null) {\n const { text: filterText } = quickFilter;\n text = filterText;\n if (!text) {\n text = TableUtils.getFilterText(quickFilter.filter);\n }\n\n if (text != null) {\n const { fontWidthsLower, fontWidthsUpper } = metrics;\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n\n const maxLength = columnWidth - filterBarHorizontalPadding * 2;\n text = this.textCellRenderer.getCachedTruncatedString(\n context,\n text,\n maxLength,\n fontWidthLower,\n fontWidthUpper\n );\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid && filterBarExpandedActiveCellBackgroundColor != null) {\n // draw active filter background inside cell\n context.fillStyle = filterBarExpandedActiveCellBackgroundColor;\n context.fillRect(\n columnX + 1, // +1 left border\n columnHeaderHeight + 1, // +1 top border\n columnWidth - 1, // -1 right border\n filterBarHeight - 3 // -3 top, bottom border and bottom casing\n );\n } else if (filterBarErrorColor != null) {\n // draw error box inside cell\n context.fillStyle = filterBarErrorColor;\n context.lineWidth = 2;\n context.strokeStyle = filterBarErrorColor;\n // Because this is drawn with a strokeRect, we have to add/subtract half the,\n // linewidth from each side to make interior, in addition to accounting for any borders/casings\n const rectLeft = columnX + 2; // 1 for strokeRect, 1 for border\n const rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border\n const rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect\n const rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing\n context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);\n }\n\n if (text != null && text !== '') {\n const textX = columnX + filterBarHorizontalPadding;\n const textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border\n context.fillStyle = headerColor;\n context.fillText(text, textX, textY);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const { gridX, gridY, maxX, visibleColumns, allColumnWidths, allColumnXs } =\n metrics;\n const columnHeaderHeight = gridY - filterBarCollapsedHeight;\n\n context.save();\n\n // Draw the background of the collapsed filter bar\n context.fillStyle = headerSeparatorColor;\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = allColumnWidths.get(column);\n const columnX = allColumnXs.get(column);\n if (columnX != null && columnWidth != null) {\n const x = columnX + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const modelColumn = modelColumns.get(column);\n\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n\n const {\n filterBarCollapsedHeight,\n filterBarActiveColor,\n filterBarActiveBackgroundColor,\n filterBarErrorColor,\n } = theme;\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n\n if (\n filterBarActiveBackgroundColor != null &&\n quickFilter == null &&\n advancedFilter == null\n ) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (filterBarActiveColor != null && isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else if (filterBarErrorColor != null) {\n context.fillStyle = filterBarErrorColor;\n }\n\n const x = columnX + 1; // for gap between columns\n const y = gridY - filterBarCollapsedHeight;\n const rectWidth = columnWidth - 1; // for gap between columns\n const rectHeight = filterBarCollapsedHeight - 1; // for casing bottom\n context.fillRect(x, y, rectWidth, rectHeight);\n\n context.restore();\n }\n\n drawRowFooters(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n gridY,\n gridX,\n maxX,\n modelRows,\n floatingTopHeight,\n floatingBottomHeight,\n floatingRows,\n rowFooterWidth,\n height,\n horizontalBarHeight,\n verticalBarWidth,\n allRowHeights,\n allRowYs,\n width,\n } = metrics;\n // Only draw the footers on the floating rows\n if (rowFooterWidth <= 0 || floatingRows.length === 0) {\n return;\n }\n\n const {\n cellHorizontalPadding,\n floatingGridRowColor,\n floatingRowBackgroundColors,\n headerColor,\n rowHoverBackgroundColor,\n } = theme;\n\n context.translate(gridX, gridY);\n\n context.beginPath();\n const x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);\n context.fillStyle = floatingRowBackgroundColors;\n if (floatingTopHeight > 0) {\n context.rect(x, 0, rowFooterWidth, floatingTopHeight);\n }\n if (floatingBottomHeight > 0) {\n context.rect(\n x,\n height - gridY - horizontalBarHeight - floatingBottomHeight,\n rowFooterWidth,\n floatingBottomHeight\n );\n }\n context.fill();\n\n const mouseRow =\n mouseX != null &&\n mouseY != null &&\n mouseX >= gridX &&\n mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (\n rowHoverBackgroundColor != null &&\n mouseRow !== null &&\n floatingRows.includes(mouseRow)\n ) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = allRowYs.get(mouseRow);\n const rowHeight = allRowHeights.get(mouseRow);\n assertNotNull(y);\n assertNotNull(rowHeight);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n if (floatingGridRowColor != null) {\n context.strokeStyle = floatingGridRowColor;\n }\n if (floatingTopHeight > 0) {\n context.moveTo(x + 0.5, 0.5);\n context.lineTo(x + 0.5, floatingTopHeight - 0.5);\n }\n if (floatingBottomHeight > 0) {\n const y = height - gridY - horizontalBarHeight - floatingBottomHeight;\n context.moveTo(x - 0.5, y + 0.5);\n context.lineTo(x - 0.5, y + floatingBottomHeight - 0.5);\n }\n context.stroke();\n\n context.fillStyle = headerColor;\n context.textAlign = 'left';\n\n const textX = x + cellHorizontalPadding;\n for (let i = 0; i < floatingRows.length; i += 1) {\n const row = floatingRows[i];\n const rowHeight = allRowHeights.get(row);\n const rowY = allRowYs.get(row);\n const modelRow = modelRows.get(row);\n if (rowY != null && rowHeight != null && modelRow != null) {\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n }\n\n context.translate(-gridX, -gridY);\n }\n\n getExpandButtonPosition(\n {\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: GridThemeType;\n },\n depth: number | null\n ): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null || depth == null || !metrics) {\n return NULL_POSITION;\n }\n const { rowHeight, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n assertNotNull(left);\n assertNotNull(rowHeight);\n assertNotNull(top);\n const { cellHorizontalPadding } = theme;\n\n const width = EXPAND_ICON_SIZE + 2 * cellHorizontalPadding;\n\n const buttonLeft = Math.max(left + EXPAND_ICON_SIZE * depth, metrics.gridX);\n const buttonTop = metrics.gridY + top;\n\n return {\n left: buttonLeft,\n top: buttonTop,\n width,\n height: rowHeight,\n };\n }\n}\n\nexport default IrisGridRenderer;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridShortcuts.js","names":["ShortcutRegistry","MODIFIER","KEY","TABLE","TOGGLE_QUICK_FILTER","createAndAdd","id","name","shortcut","CTRL","F","macShortcut","CMD","CLEAR_ALL_FILTERS","E","CLEAR_FILTERS","SHIFT","REVERSE","I","TOGGLE_SEARCH","GOTO_ROW","G","INPUT_TABLE","COMMIT","S","DISCARD","ALT","OPTION","IRIS_GRID_SHORTCUTS"],"sources":["../src/IrisGridShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, MODIFIER, KEY } from '@deephaven/components';\n\nconst TABLE = {\n TOGGLE_QUICK_FILTER: ShortcutRegistry.createAndAdd({\n id: 'TABLE.TOGGLE_QUICK_FILTER',\n name: 'Toggle Quick Filter',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n }),\n CLEAR_ALL_FILTERS: ShortcutRegistry.createAndAdd({\n id: 'TABLE.CLEAR_ALL_FILTERS',\n name: 'Clear All Table Filters',\n shortcut: [MODIFIER.CTRL, KEY.E],\n macShortcut: [MODIFIER.CMD, KEY.E],\n }),\n CLEAR_FILTERS: ShortcutRegistry.createAndAdd({\n id: 'TABLE.CLEAR_FILTERS',\n name: 'Clear Active Table Filters',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.E],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.E],\n }),\n REVERSE: ShortcutRegistry.createAndAdd({\n id: 'TABLE.REVERSE',\n name: 'Reverse',\n shortcut: [MODIFIER.CTRL, KEY.I],\n macShortcut: [MODIFIER.CMD, KEY.I],\n }),\n TOGGLE_SEARCH: ShortcutRegistry.createAndAdd({\n id: 'TABLE.TOGGLE_SEARCH',\n name: 'Toggle Search',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.F],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.F],\n }),\n GOTO_ROW: ShortcutRegistry.createAndAdd({\n id: 'TABLE.GOTO_ROW',\n name: 'Go to Row',\n shortcut: [MODIFIER.CTRL, KEY.G],\n macShortcut: [MODIFIER.CMD, KEY.G],\n }),\n};\n\nconst INPUT_TABLE = {\n COMMIT: ShortcutRegistry.createAndAdd({\n id: 'INPUT_TABLE.COMMIT',\n name: 'Commit',\n shortcut: [MODIFIER.CTRL, KEY.S],\n macShortcut: [MODIFIER.CMD, KEY.S],\n }),\n DISCARD: ShortcutRegistry.createAndAdd({\n id: 'INPUT_TABLE.DISCARD',\n name: 'Discard',\n shortcut: [MODIFIER.CTRL, MODIFIER.ALT, KEY.S],\n macShortcut: [MODIFIER.CMD, MODIFIER.OPTION, KEY.S],\n }),\n};\n\nconst IRIS_GRID_SHORTCUTS = {\n TABLE,\n INPUT_TABLE,\n};\n\nexport default IRIS_GRID_SHORTCUTS;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridShortcuts.js","names":["ShortcutRegistry","MODIFIER","KEY","TABLE","TOGGLE_QUICK_FILTER","createAndAdd","id","name","shortcut","CTRL","F","macShortcut","CMD","CLEAR_ALL_FILTERS","E","CLEAR_FILTERS","SHIFT","REVERSE","I","TOGGLE_SEARCH","GOTO_ROW","G","INPUT_TABLE","COMMIT","S","DISCARD","ALT","OPTION","IRIS_GRID_SHORTCUTS"],"sources":["../src/IrisGridShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, MODIFIER, KEY } from '@deephaven/components';\n\nconst TABLE = {\n TOGGLE_QUICK_FILTER: ShortcutRegistry.createAndAdd({\n id: 'TABLE.TOGGLE_QUICK_FILTER',\n name: 'Toggle Quick Filter',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n }),\n CLEAR_ALL_FILTERS: ShortcutRegistry.createAndAdd({\n id: 'TABLE.CLEAR_ALL_FILTERS',\n name: 'Clear All Table Filters',\n shortcut: [MODIFIER.CTRL, KEY.E],\n macShortcut: [MODIFIER.CMD, KEY.E],\n }),\n CLEAR_FILTERS: ShortcutRegistry.createAndAdd({\n id: 'TABLE.CLEAR_FILTERS',\n name: 'Clear Active Table Filters',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.E],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.E],\n }),\n REVERSE: ShortcutRegistry.createAndAdd({\n id: 'TABLE.REVERSE',\n name: 'Reverse',\n shortcut: [MODIFIER.CTRL, KEY.I],\n macShortcut: [MODIFIER.CMD, KEY.I],\n }),\n TOGGLE_SEARCH: ShortcutRegistry.createAndAdd({\n id: 'TABLE.TOGGLE_SEARCH',\n name: 'Toggle Search',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.F],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.F],\n }),\n GOTO_ROW: ShortcutRegistry.createAndAdd({\n id: 'TABLE.GOTO_ROW',\n name: 'Go to Row',\n shortcut: [MODIFIER.CTRL, KEY.G],\n macShortcut: [MODIFIER.CMD, KEY.G],\n }),\n};\n\nconst INPUT_TABLE = {\n COMMIT: ShortcutRegistry.createAndAdd({\n id: 'INPUT_TABLE.COMMIT',\n name: 'Commit',\n shortcut: [MODIFIER.CTRL, KEY.S],\n macShortcut: [MODIFIER.CMD, KEY.S],\n }),\n DISCARD: ShortcutRegistry.createAndAdd({\n id: 'INPUT_TABLE.DISCARD',\n name: 'Discard',\n shortcut: [MODIFIER.CTRL, MODIFIER.ALT, KEY.S],\n macShortcut: [MODIFIER.CMD, MODIFIER.OPTION, KEY.S],\n }),\n};\n\nconst IRIS_GRID_SHORTCUTS = {\n TABLE,\n INPUT_TABLE,\n};\n\nexport default IRIS_GRID_SHORTCUTS;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,8 +18,6 @@ var log = Log.module('IrisGridTableModel');
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
class IrisGridTableModel extends IrisGridTableModelTemplate {
|
|
21
|
-
// The initial value for table.isUncoalesced on the source table before any transformations (e.g. filter, select)
|
|
22
|
-
|
|
23
21
|
/**
|
|
24
22
|
* @param dh JSAPI instance
|
|
25
23
|
* @param table Iris data table to be used in the model
|
|
@@ -34,6 +32,7 @@ class IrisGridTableModel extends IrisGridTableModelTemplate {
|
|
|
34
32
|
_defineProperty(this, "customColumnList", void 0);
|
|
35
33
|
_defineProperty(this, "formatColumnList", void 0);
|
|
36
34
|
_defineProperty(this, "initialFilters", []);
|
|
35
|
+
// The initial value for table.isUncoalesced on the source table before any transformations (e.g. filter, select)
|
|
37
36
|
_defineProperty(this, "wasUncoalesced", void 0);
|
|
38
37
|
_defineProperty(this, "getMemoizedKeyColumnSet", memoize(inputTableKeys => new Set(inputTableKeys !== null && inputTableKeys !== void 0 ? inputTableKeys : EMPTY_ARRAY)));
|
|
39
38
|
_defineProperty(this, "getMemoizedFrontColumns", memoize(layoutHintsFrontColumns => layoutHintsFrontColumns !== null && layoutHintsFrontColumns !== void 0 ? layoutHintsFrontColumns : EMPTY_ARRAY));
|