@deephaven/iris-grid 0.11.3-beta.5 → 0.11.3-beta.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridProxyModel.d.ts","sourceRoot":"","sources":["../src/IrisGridProxyModel.js"],"names":[],"mappings":";AAmBA;;;GAGG;AACH;IACE;;;;OAIG;IACH,yCAHW,SAAS,8BAcnB;IAYD,mCAKC;IAtBC,2DAA0B;IAC1B,mDAAkB;IAClB,uEAAwB;IACxB,YAAkB;IAClB,sBAAwB;IAoB1B,2BA0BC;IAED,sCAgCC;IAcD,+BAKC;IAED,kCAKC;IAkED,6BAEC;IAED,qCAEC;IAED,mCAEC;IAED,qCAEC;IAED,iCAEC;IAED,sBAEC;IA6MD,0BAEC;IAED,yCAEC;IA8BD,sCAEC;IAED,+CAEC;IAED,iDAEC;IAED,yCAEC;IAED,wCAEC;CAiCF"}
1
+ {"version":3,"file":"IrisGridProxyModel.d.ts","sourceRoot":"","sources":["../src/IrisGridProxyModel.js"],"names":[],"mappings":";AAmBA;;;GAGG;AACH;IACE;;;;OAIG;IACH,yCAHW,SAAS,8BAcnB;IAYD,mCAKC;IAtBC,2DAA0B;IAC1B,mDAAkB;IAClB,uEAAwB;IACxB,YAAkB;IAClB,sBAAwB;IAoB1B,2BA0BC;IAED,sCAgCC;IAcD,+BAKC;IAED,kCAKC;IAsED,6BAEC;IAED,qCAEC;IAED,mCAEC;IAED,qCAEC;IAED,iCAEC;IAED,sBAEC;IA6MD,0BAEC;IAED,yCAEC;IA8BD,sCAEC;IAED,+CAEC;IAED,iDAEC;IAED,yCAEC;IAED,wCAEC;CAiCF"}
@@ -173,6 +173,10 @@ class IrisGridProxyModel extends IrisGridModel {
173
173
  return this.model.textForCell(...arguments);
174
174
  }
175
175
 
176
+ truncationCharForCell() {
177
+ return this.model.truncationCharForCell(...arguments);
178
+ }
179
+
176
180
  textAlignForCell() {
177
181
  return this.model.textAlignForCell(...arguments);
178
182
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridProxyModel.js"],"names":["deepEqual","Log","PromiseUtils","Formatter","IrisGridTableModel","IrisGridTreeTableModel","IrisGridModel","TableUtils","log","module","makeModel","table","formatter","inputTable","isTreeTable","IrisGridProxyModel","constructor","handleModelEvent","bind","model","originalModel","modelPromise","rollup","selectDistinct","close","cancel","event","debug2","detail","type","dispatchEvent","CustomEvent","setModel","debug","oldModel","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","columns","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","Object","keys","i","length","addEventListener","removeEventListener","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","textForCell","textAlignForCell","colorForCell","backgroundColorForCell","textForColumnHeader","textForRowHeader","textForRowFooter","isRowMovable","isColumnMovable","isColumnFrozen","hasExpandableRows","isRowExpandable","isRowExpanded","setRowExpanded","depthForRow","isExportAvailable","isColumnStatisticsAvailable","isValuesTableAvailable","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isFormatColumnsAvailable","isChartBuilderAvailable","isRollupAvailable","isTotalsAvailable","isReversible","layoutHints","updateFrozenColumns","originalColumns","groupedColumns","description","formatForCell","x","y","valueForCell","filter","displayString","sort","customColumns","formatColumns","rollupConfig","Error","Promise","resolve","columnNames","map","name","find","column","totalsConfig","isFilterRequired","isEditable","isEditableRange","isFilterable","setViewport","snapshot","textSnapshot","export","valuesTable","columnStatistics","editValueForCell","setValueForCell","setValueForRanges","setValues","isValidForCell","delete","pendingDataMap","pendingRowCount","count","pendingDataErrors","commitPending","getColumnIndexByName"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Formatter from './Formatter';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport TableUtils from './TableUtils';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(table, formatter, inputTable) {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(table, formatter);\n }\n return new IrisGridTableModel(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 */\nclass IrisGridProxyModel extends IrisGridModel {\n /**\n * @param {dh.Table} table Iris data table to be used in the model\n * @param {Formatter} formatter The formatter to use when getting formats\n * @param {dh.InputTable} inputTable Iris input table associated with this table\n */\n constructor(table, formatter = new Formatter(), inputTable = null) {\n super();\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(table, formatter, inputTable);\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.selectDistinct = [];\n }\n\n close() {\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) {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new CustomEvent(type, { detail }));\n }\n\n setModel(model) {\n log.debug('setModel', model);\n\n const oldModel = this.model;\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 this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n\n setNextModel(modelPromise) {\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(modelPromise, model =>\n model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch(err => {\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 CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, { detail: err })\n );\n });\n }\n\n startListening() {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening() {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model) {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model) {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get rowCount() {\n return this.model.rowCount;\n }\n\n get columnCount() {\n return this.model.columnCount;\n }\n\n get floatingTopRowCount() {\n return this.model.floatingTopRowCount;\n }\n\n get floatingBottomRowCount() {\n return this.model.floatingBottomRowCount;\n }\n\n get floatingLeftColumnCount() {\n return this.model.floatingLeftColumnCount;\n }\n\n get floatingRightColumnCount() {\n return this.model.floatingRightColumnCount;\n }\n\n textForCell(...args) {\n return this.model.textForCell(...args);\n }\n\n textAlignForCell(...args) {\n return this.model.textAlignForCell(...args);\n }\n\n colorForCell(...args) {\n return this.model.colorForCell(...args);\n }\n\n backgroundColorForCell(...args) {\n return this.model.backgroundColorForCell(...args);\n }\n\n textForColumnHeader(...args) {\n return this.model.textForColumnHeader(...args);\n }\n\n textForRowHeader(...args) {\n return this.model.textForRowHeader(...args);\n }\n\n textForRowFooter(...args) {\n return this.model.textForRowFooter(...args);\n }\n\n isRowMovable(...args) {\n return this.model.isRowMovable(...args);\n }\n\n isColumnMovable(...args) {\n return this.model.isColumnMovable(...args);\n }\n\n isColumnFrozen(...args) {\n return this.model.isColumnFrozen(...args);\n }\n\n get hasExpandableRows() {\n return this.model.hasExpandableRows;\n }\n\n isRowExpandable(...args) {\n return this.model.isRowExpandable(...args);\n }\n\n isRowExpanded(...args) {\n return this.model.isRowExpanded(...args);\n }\n\n setRowExpanded(...args) {\n this.model.setRowExpanded(...args);\n }\n\n depthForRow(...args) {\n return this.model.depthForRow(...args);\n }\n\n get table() {\n return this.model.table;\n }\n\n get isExportAvailable() {\n return this.model.isExportAvailable;\n }\n\n get isColumnStatisticsAvailable() {\n return this.model.isColumnStatisticsAvailable;\n }\n\n get isValuesTableAvailable() {\n return this.model.isValuesTableAvailable;\n }\n\n get isCustomColumnsAvailable() {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isFormatColumnsAvailable() {\n return this.model.isFormatColumnsAvailable;\n }\n\n get isChartBuilderAvailable() {\n return this.model.isChartBuilderAvailable;\n }\n\n get isRollupAvailable() {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable() {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get isTotalsAvailable() {\n return this.model.isTotalsAvailable;\n }\n\n get isReversible() {\n return this.model.isReversible;\n }\n\n get columns() {\n return this.model.columns;\n }\n\n get layoutHints() {\n return this.model.layoutHints;\n }\n\n updateFrozenColumns(...args) {\n this.model.updateFrozenColumns(...args);\n }\n\n get originalColumns() {\n return this.originalModel.columns;\n }\n\n get groupedColumns() {\n return this.model.groupedColumns;\n }\n\n get description() {\n return this.model.description;\n }\n\n formatForCell(x, y) {\n return this.model.formatForCell(x, y);\n }\n\n valueForCell(x, y) {\n return this.model.valueForCell(x, y);\n }\n\n get filter() {\n return this.model.filter;\n }\n\n set filter(filter) {\n this.model.filter = filter;\n }\n\n get formatter() {\n return this.model.formatter;\n }\n\n set formatter(formatter) {\n this.model.formatter = formatter;\n }\n\n displayString(...args) {\n return this.model.displayString(...args);\n }\n\n get sort() {\n return this.model.sort;\n }\n\n set sort(sort) {\n this.model.sort = sort;\n }\n\n get customColumns() {\n return this.model.customColumns;\n }\n\n set customColumns(customColumns) {\n this.model.customColumns = customColumns;\n }\n\n get formatColumns() {\n return this.model.formatColumns;\n }\n\n set formatColumns(formatColumns) {\n this.model.formatColumns = formatColumns;\n }\n\n get rollupConfig() {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig) {\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 (rollupConfig != null) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns() {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames) {\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);\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (columnNames.length > 0) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get totalsConfig() {\n return this.model.totalsConfig;\n }\n\n set totalsConfig(totalsConfig) {\n this.model.totalsConfig = totalsConfig;\n }\n\n get isFilterRequired() {\n return this.model.isFilterRequired;\n }\n\n get isEditable() {\n return this.model.isEditable;\n }\n\n isEditableRange(...args) {\n return this.model.isEditableRange(...args);\n }\n\n isFilterable(...args) {\n return this.model.isFilterable(...args);\n }\n\n setViewport(...args) {\n this.model.setViewport(...args);\n }\n\n async snapshot(...args) {\n return this.model.snapshot(...args);\n }\n\n async textSnapshot(...args) {\n return this.model.textSnapshot(...args);\n }\n\n async export(...args) {\n return this.model.export(...args);\n }\n\n async valuesTable(...args) {\n return this.model.valuesTable(...args);\n }\n\n async columnStatistics(...args) {\n return this.model.columnStatistics(...args);\n }\n\n editValueForCell(...args) {\n return this.model.editValueForCell(...args);\n }\n\n setValueForCell(...args) {\n return this.model.setValueForCell(...args);\n }\n\n setValueForRanges(...args) {\n return this.model.setValueForRanges(...args);\n }\n\n setValues(...args) {\n return this.model.setValues(...args);\n }\n\n isValidForCell(...args) {\n return this.model.isValidForCell(...args);\n }\n\n delete(...args) {\n return this.model.delete(...args);\n }\n\n get pendingDataMap() {\n return this.model.pendingDataMap;\n }\n\n set pendingDataMap(map) {\n this.model.pendingDataMap = map;\n }\n\n get pendingRowCount() {\n return this.model.pendingRowCount;\n }\n\n set pendingRowCount(count) {\n this.model.pendingRowCount = count;\n }\n\n get pendingDataErrors() {\n return this.model.pendingDataErrors;\n }\n\n commitPending(...args) {\n return this.model.commitPending(...args);\n }\n\n getColumnIndexByName(name) {\n return this.model.getColumnIndexByName(name);\n }\n}\n\nexport default IrisGridProxyModel;\n"],"file":"IrisGridProxyModel.js"}
1
+ {"version":3,"sources":["../src/IrisGridProxyModel.js"],"names":["deepEqual","Log","PromiseUtils","Formatter","IrisGridTableModel","IrisGridTreeTableModel","IrisGridModel","TableUtils","log","module","makeModel","table","formatter","inputTable","isTreeTable","IrisGridProxyModel","constructor","handleModelEvent","bind","model","originalModel","modelPromise","rollup","selectDistinct","close","cancel","event","debug2","detail","type","dispatchEvent","CustomEvent","setModel","debug","oldModel","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","columns","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","Object","keys","i","length","addEventListener","removeEventListener","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","textForCell","truncationCharForCell","textAlignForCell","colorForCell","backgroundColorForCell","textForColumnHeader","textForRowHeader","textForRowFooter","isRowMovable","isColumnMovable","isColumnFrozen","hasExpandableRows","isRowExpandable","isRowExpanded","setRowExpanded","depthForRow","isExportAvailable","isColumnStatisticsAvailable","isValuesTableAvailable","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isFormatColumnsAvailable","isChartBuilderAvailable","isRollupAvailable","isTotalsAvailable","isReversible","layoutHints","updateFrozenColumns","originalColumns","groupedColumns","description","formatForCell","x","y","valueForCell","filter","displayString","sort","customColumns","formatColumns","rollupConfig","Error","Promise","resolve","columnNames","map","name","find","column","totalsConfig","isFilterRequired","isEditable","isEditableRange","isFilterable","setViewport","snapshot","textSnapshot","export","valuesTable","columnStatistics","editValueForCell","setValueForCell","setValueForRanges","setValues","isValidForCell","delete","pendingDataMap","pendingRowCount","count","pendingDataErrors","commitPending","getColumnIndexByName"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Formatter from './Formatter';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport TableUtils from './TableUtils';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(table, formatter, inputTable) {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(table, formatter);\n }\n return new IrisGridTableModel(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 */\nclass IrisGridProxyModel extends IrisGridModel {\n /**\n * @param {dh.Table} table Iris data table to be used in the model\n * @param {Formatter} formatter The formatter to use when getting formats\n * @param {dh.InputTable} inputTable Iris input table associated with this table\n */\n constructor(table, formatter = new Formatter(), inputTable = null) {\n super();\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(table, formatter, inputTable);\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.selectDistinct = [];\n }\n\n close() {\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) {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new CustomEvent(type, { detail }));\n }\n\n setModel(model) {\n log.debug('setModel', model);\n\n const oldModel = this.model;\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 this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n\n setNextModel(modelPromise) {\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(modelPromise, model =>\n model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch(err => {\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 CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, { detail: err })\n );\n });\n }\n\n startListening() {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening() {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model) {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model) {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get rowCount() {\n return this.model.rowCount;\n }\n\n get columnCount() {\n return this.model.columnCount;\n }\n\n get floatingTopRowCount() {\n return this.model.floatingTopRowCount;\n }\n\n get floatingBottomRowCount() {\n return this.model.floatingBottomRowCount;\n }\n\n get floatingLeftColumnCount() {\n return this.model.floatingLeftColumnCount;\n }\n\n get floatingRightColumnCount() {\n return this.model.floatingRightColumnCount;\n }\n\n textForCell(...args) {\n return this.model.textForCell(...args);\n }\n\n truncationCharForCell(...args) {\n return this.model.truncationCharForCell(...args);\n }\n\n textAlignForCell(...args) {\n return this.model.textAlignForCell(...args);\n }\n\n colorForCell(...args) {\n return this.model.colorForCell(...args);\n }\n\n backgroundColorForCell(...args) {\n return this.model.backgroundColorForCell(...args);\n }\n\n textForColumnHeader(...args) {\n return this.model.textForColumnHeader(...args);\n }\n\n textForRowHeader(...args) {\n return this.model.textForRowHeader(...args);\n }\n\n textForRowFooter(...args) {\n return this.model.textForRowFooter(...args);\n }\n\n isRowMovable(...args) {\n return this.model.isRowMovable(...args);\n }\n\n isColumnMovable(...args) {\n return this.model.isColumnMovable(...args);\n }\n\n isColumnFrozen(...args) {\n return this.model.isColumnFrozen(...args);\n }\n\n get hasExpandableRows() {\n return this.model.hasExpandableRows;\n }\n\n isRowExpandable(...args) {\n return this.model.isRowExpandable(...args);\n }\n\n isRowExpanded(...args) {\n return this.model.isRowExpanded(...args);\n }\n\n setRowExpanded(...args) {\n this.model.setRowExpanded(...args);\n }\n\n depthForRow(...args) {\n return this.model.depthForRow(...args);\n }\n\n get table() {\n return this.model.table;\n }\n\n get isExportAvailable() {\n return this.model.isExportAvailable;\n }\n\n get isColumnStatisticsAvailable() {\n return this.model.isColumnStatisticsAvailable;\n }\n\n get isValuesTableAvailable() {\n return this.model.isValuesTableAvailable;\n }\n\n get isCustomColumnsAvailable() {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isFormatColumnsAvailable() {\n return this.model.isFormatColumnsAvailable;\n }\n\n get isChartBuilderAvailable() {\n return this.model.isChartBuilderAvailable;\n }\n\n get isRollupAvailable() {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable() {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get isTotalsAvailable() {\n return this.model.isTotalsAvailable;\n }\n\n get isReversible() {\n return this.model.isReversible;\n }\n\n get columns() {\n return this.model.columns;\n }\n\n get layoutHints() {\n return this.model.layoutHints;\n }\n\n updateFrozenColumns(...args) {\n this.model.updateFrozenColumns(...args);\n }\n\n get originalColumns() {\n return this.originalModel.columns;\n }\n\n get groupedColumns() {\n return this.model.groupedColumns;\n }\n\n get description() {\n return this.model.description;\n }\n\n formatForCell(x, y) {\n return this.model.formatForCell(x, y);\n }\n\n valueForCell(x, y) {\n return this.model.valueForCell(x, y);\n }\n\n get filter() {\n return this.model.filter;\n }\n\n set filter(filter) {\n this.model.filter = filter;\n }\n\n get formatter() {\n return this.model.formatter;\n }\n\n set formatter(formatter) {\n this.model.formatter = formatter;\n }\n\n displayString(...args) {\n return this.model.displayString(...args);\n }\n\n get sort() {\n return this.model.sort;\n }\n\n set sort(sort) {\n this.model.sort = sort;\n }\n\n get customColumns() {\n return this.model.customColumns;\n }\n\n set customColumns(customColumns) {\n this.model.customColumns = customColumns;\n }\n\n get formatColumns() {\n return this.model.formatColumns;\n }\n\n set formatColumns(formatColumns) {\n this.model.formatColumns = formatColumns;\n }\n\n get rollupConfig() {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig) {\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 (rollupConfig != null) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns() {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames) {\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);\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (columnNames.length > 0) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get totalsConfig() {\n return this.model.totalsConfig;\n }\n\n set totalsConfig(totalsConfig) {\n this.model.totalsConfig = totalsConfig;\n }\n\n get isFilterRequired() {\n return this.model.isFilterRequired;\n }\n\n get isEditable() {\n return this.model.isEditable;\n }\n\n isEditableRange(...args) {\n return this.model.isEditableRange(...args);\n }\n\n isFilterable(...args) {\n return this.model.isFilterable(...args);\n }\n\n setViewport(...args) {\n this.model.setViewport(...args);\n }\n\n async snapshot(...args) {\n return this.model.snapshot(...args);\n }\n\n async textSnapshot(...args) {\n return this.model.textSnapshot(...args);\n }\n\n async export(...args) {\n return this.model.export(...args);\n }\n\n async valuesTable(...args) {\n return this.model.valuesTable(...args);\n }\n\n async columnStatistics(...args) {\n return this.model.columnStatistics(...args);\n }\n\n editValueForCell(...args) {\n return this.model.editValueForCell(...args);\n }\n\n setValueForCell(...args) {\n return this.model.setValueForCell(...args);\n }\n\n setValueForRanges(...args) {\n return this.model.setValueForRanges(...args);\n }\n\n setValues(...args) {\n return this.model.setValues(...args);\n }\n\n isValidForCell(...args) {\n return this.model.isValidForCell(...args);\n }\n\n delete(...args) {\n return this.model.delete(...args);\n }\n\n get pendingDataMap() {\n return this.model.pendingDataMap;\n }\n\n set pendingDataMap(map) {\n this.model.pendingDataMap = map;\n }\n\n get pendingRowCount() {\n return this.model.pendingRowCount;\n }\n\n set pendingRowCount(count) {\n this.model.pendingRowCount = count;\n }\n\n get pendingDataErrors() {\n return this.model.pendingDataErrors;\n }\n\n commitPending(...args) {\n return this.model.commitPending(...args);\n }\n\n getColumnIndexByName(name) {\n return this.model.getColumnIndexByName(name);\n }\n}\n\nexport default IrisGridProxyModel;\n"],"file":"IrisGridProxyModel.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.js"],"names":[],"mappings":";AAuBA;;KAEK;AACL;IACE,qEAMC;IAQD,kBAQC;IAPC,sBAAe;IAUjB,sCASC;IAED,wBAEC;IAED,4BAWC;IAoCD,sDA0BC;IAED,mDAyBC;IAwBD,4BA8BC;IAgDD,8FAwBC;IAgDD,kDAWC;IAED,0DAsEC;IAED,sGAuFC;IAED,2DAiCC;IAED,uGAwCC;IAqID,gDA4CC;IAED;;;;;;;;;;;;;;;MAyBC;IAED,yCAqCC;CACF"}
1
+ {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.js"],"names":[],"mappings":";AAuBA;;KAEK;AACL;IACE,qEAMC;IAQD,kBAQC;IAPC,sBAAe;IAUjB,sCASC;IAED,wBAEC;IAED,4BAWC;IAoCD,sDA0BC;IAED,mDAyBC;IAwBD,4BA8BC;IAgDD,8FAwBC;IAgDD,kDAWC;IAED,0DAsEC;IAED,sGAuFC;IAED,2DAiCC;IAED,uGAwCC;IAqID,gDA6CC;IAED;;;;;;;;;;;;;;;MAyBC;IAED,yCAqCC;CACF"}
@@ -812,7 +812,7 @@ class IrisGridRenderer extends GridRenderer {
812
812
  var fontWidth = (_metrics$fontWidths$g = metrics.fontWidths.get(theme.font)) !== null && _metrics$fontWidths$g !== void 0 ? _metrics$fontWidths$g : IrisGridRenderer.DEFAULT_FONT_WIDTH;
813
813
  context.save();
814
814
  context.font = theme.font;
815
- var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidth);
815
+ var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidth, model.truncationCharForCell(modelColumn, modelRow));
816
816
  context.restore();
817
817
  return text !== '' && truncatedText !== text;
818
818
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridRenderer.js"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","vsLinkExternal","GridRenderer","GridUtils","TableUtils","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","ICON_SIZE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","initIcons","icons","setIcon","name","faIcon","icon","Path2D","scaledIcon","scaleMatrix","a","d","addPath","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawCellOverflowButton","drawScrim","drawGridLines","context","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelRow","get","modelColumn","value","valueForCell","isTextType","columns","type","originalFont","font","displayValue","theme","groupedColumns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","visibleRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","save","setLineDash","pendingTextColor","restore","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillStyle","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","width","height","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","rect","clip","drawColumnHeaders","reverseType","columnHeaderHeight","drawFilterHeaders","hasReverse","REVERSE_TYPE","NONE","drawHeaderBar","headerReverseBarColor","headerSortBarColor","reverseHeaderBarHeight","sortHeaderBarHeight","color","barHeight","interior","offset","headerBarCasingColor","drawColumnHeader","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarSeparatorColor","y1","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","text","filterText","getFilterText","fontWidths","fontWidth","measureText","maxLength","substring","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawTreeMarker","rowY","treeBox","isExpanded","markerIcon","iconX","iconY","drawRowFooters","mouseX","mouseY","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","textForRowFooter","getTextRenderMetrics","textMetrics","mouseColumn","getGridPointFromXY","left","getCellOverflowButtonPosition","shouldRenderOverflowButton","getCellInfoFromXY","isStringType","textForCell","textWidth","DEFAULT_FONT_WIDTH","truncatedText","getCachedTruncatedString","NULL_POSITION","top","gridWidth","right","buttonLeft","buttonTop","buttonWidth","buttonHeight","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["/* eslint react/destructuring-assignment: \"off\" */\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-param-reassign: \"off\" */\nimport {\n dhSortDown,\n dhSortUp,\n vsTriangleDown,\n vsTriangleRight,\n vsLinkExternal,\n} from '@deephaven/icons';\nimport { GridRenderer, GridUtils } from '@deephaven/grid';\nimport TableUtils from './TableUtils';\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 ICON_SIZE = 16;\n\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nclass IrisGridRenderer extends GridRenderer {\n static isFilterValid(advancedFilter, quickFilter) {\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 constructor() {\n super();\n\n this.initIcons();\n }\n\n initIcons() {\n this.icons = {};\n\n this.setIcon(ICON_NAMES.SORT_UP, dhSortUp);\n this.setIcon(ICON_NAMES.SORT_DOWN, dhSortDown);\n this.setIcon(ICON_NAMES.CARET_DOWN, vsTriangleDown);\n this.setIcon(ICON_NAMES.CARET_RIGHT, vsTriangleRight);\n this.setIcon(ICON_NAMES.CELL_OVERFLOW, vsLinkExternal);\n }\n\n // Scales the icon to be square and match the global ICON_SIZE\n setIcon(name, faIcon) {\n const icon = new Path2D(faIcon.icon[4]);\n const scaledIcon = new Path2D();\n const scaleMatrix = {\n a: ICON_SIZE / faIcon.icon[0],\n d: ICON_SIZE / faIcon.icon[1],\n };\n scaledIcon.addPath(icon, scaleMatrix);\n this.icons[name] = scaledIcon;\n }\n\n getIcon(name) {\n return this.icons[name];\n }\n\n getSortIcon(sort) {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return this.getIcon(ICON_NAMES.SORT_UP);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return this.getIcon(ICON_NAMES.SORT_DOWN);\n }\n return null;\n }\n\n drawCanvas(state) {\n super.drawCanvas(state);\n\n this.drawCellOverflowButton(state);\n this.drawScrim(state);\n }\n\n drawGridLines(context, state) {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(context, state, column, row) {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelRow = modelRows.get(row);\n const modelColumn = modelColumns.get(column);\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isTextType(model.columns[modelColumn].type)) {\n if (value === null || value === '') {\n const originalFont = context.font;\n context.font = `italic ${originalFont}`;\n const displayValue = value === null ? 'null' : 'empty';\n super.drawCellContent(context, state, column, row, displayValue);\n context.font = originalFont;\n return;\n }\n }\n super.drawCellContent(context, state, column, row);\n }\n\n drawGroupedColumnLine(context, state) {\n const { metrics, model, theme } = state;\n const { groupedColumns, columns } = model;\n const { maxY, visibleColumnWidths, visibleColumnXs } = metrics;\n if (groupedColumns.length === 0 || !theme.groupedColumnDividerColor) {\n return;\n }\n\n const lastGroupedColumn = groupedColumns[groupedColumns.length - 1];\n const modelIndex = columns.findIndex(\n c => c.name === lastGroupedColumn.name\n );\n const columnX = visibleColumnXs.get(modelIndex);\n const columnWidth = visibleColumnWidths.get(modelIndex);\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(context, state) {\n const { metrics, model, theme } = state;\n const { visibleRowYs, 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 = visibleRowYs.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 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(context, state) {\n const { theme, metrics, hoverSelectColumn } = state;\n if (hoverSelectColumn == null || !theme.linkerColumnHoverBackgroundColor) {\n return;\n }\n\n const { visibleColumnWidths, visibleColumnXs, maxY } = metrics;\n\n const x = visibleColumnXs.get(hoverSelectColumn);\n const columnWidth = visibleColumnWidths.get(hoverSelectColumn);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(context, state) {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state) {\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 just change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n context.fillStyle = scrimColor;\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 context.restore();\n }\n\n drawColumnHeaders(context, state) {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverseType } = 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 const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n this.drawHeaderBar(\n context,\n state,\n hasReverse ? theme.headerReverseBarColor : theme.headerSortBarColor,\n hasReverse ? 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 (\n // has table reverse\n reverseType !== TableUtils.REVERSE_TYPE.NONE\n ) {\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(context, state, color, barHeight, interior = true) {\n const { theme, metrics } = 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 columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n context.fillStyle = color;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeader(context, state, column, columnX, columnWidth) {\n super.drawColumnHeader(context, state, column, columnX, columnWidth);\n\n const { metrics, model, theme } = state;\n const { modelColumns } = metrics;\n const modelColumn = modelColumns.get(column);\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const icon = this.getSortIcon(sort);\n if (!icon) {\n return;\n }\n\n const { columnHeaderHeight, gridX } = metrics;\n\n const x = gridX + columnX + columnWidth - 13;\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\n const gradientWidth = 12;\n const gradientX = x - 3;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n const gradient = context.createLinearGradient(\n gradientX,\n 0,\n gradientX + 5,\n 0\n );\n gradient.addColorStop(0, `${theme.headerBackgroundColor}00`);\n gradient.addColorStop(1, `${theme.headerBackgroundColor}CD`);\n\n context.fillStyle = gradient;\n context.fillRect(gradientX, 0, gradientWidth, columnHeaderHeight);\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(context, state) {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(context, state) {\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 visibleColumnWidths,\n visibleColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.font;\n context.textAlign = 'left';\n\n if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && 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 context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n if (theme.filterBarSeparatorColor) {\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 = modelColumns.get(column);\n const columnX = visibleColumnXs.get(column);\n const columnWidth = visibleColumnWidths.get(column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + columnX;\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\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = visibleColumnWidths.get(column);\n const x = visibleColumnXs.get(column) + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(context, state, column, columnX, columnWidth) {\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 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) {\n const { fontWidths } = metrics;\n let fontWidth = fontWidths.get(context.font);\n if (!fontWidth) {\n fontWidth = context.measureText('8');\n if (!fontWidth) {\n fontWidth = 10;\n }\n }\n\n const maxLength =\n (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;\n if (maxLength <= 0) {\n text = '';\n } else if (text.length > maxLength) {\n text = `${text.substring(0, maxLength - 1)}…`;\n }\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid) {\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 {\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) {\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(context, state) {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n visibleColumns,\n visibleColumnWidths,\n visibleColumnXs,\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 = visibleColumnWidths.get(column);\n const x = visibleColumnXs.get(column) + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(context, state, column, columnX, columnWidth) {\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 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 if (quickFilter == null && advancedFilter == null) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else {\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 drawTreeMarker(context, state, columnX, rowY, treeBox, color, isExpanded) {\n context.save();\n const { x1, y1 } = treeBox;\n const markerIcon = isExpanded\n ? this.getIcon(ICON_NAMES.CARET_DOWN)\n : this.getIcon(ICON_NAMES.CARET_RIGHT);\n const iconX = columnX + x1 - 2;\n const iconY = rowY + y1 + 2.5;\n\n context.fillStyle = color;\n context.textAlign = 'center';\n context.translate(iconX, iconY);\n context.fill(markerIcon);\n context.restore();\n }\n\n drawRowFooters(context, state) {\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 visibleRowHeights,\n visibleRowYs,\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 >= gridX && mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (mouseRow !== null && floatingRows.includes(mouseRow)) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = visibleRowYs.get(mouseRow);\n const rowHeight = visibleRowHeights.get(mouseRow);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n context.strokeStyle = floatingGridRowColor;\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 = visibleRowHeights.get(row);\n const rowY = visibleRowYs.get(row);\n const modelRow = modelRows.get(row);\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n\n context.translate(-gridX, -gridY);\n }\n\n // This will shrink the size the text may take when the overflow button is rendered\n // The text will truncate to a smaller width and won't overlap the button\n getTextRenderMetrics(context, state, column, row) {\n const textMetrics = super.getTextRenderMetrics(context, state, column, row);\n\n const { mouseX, mouseY, metrics } = state;\n\n if (mouseX == null || mouseY == null) {\n return textMetrics;\n }\n\n const { column: mouseColumn, row: mouseRow } = GridUtils.getGridPointFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (column === mouseColumn && row === mouseRow) {\n const { left } = this.getCellOverflowButtonPosition(state);\n if (this.shouldRenderOverflowButton(state)) {\n textMetrics.width = left - textMetrics.x;\n }\n }\n return textMetrics;\n }\n\n shouldRenderOverflowButton(state) {\n const { context, mouseX, mouseY, metrics, model, theme } = state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n const { row, column, modelRow, modelColumn } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (\n row == null ||\n column == null ||\n modelRow == null ||\n modelColumn == null ||\n !TableUtils.isStringType(model.columns[modelColumn].type)\n ) {\n return false;\n }\n\n const text = model.textForCell(modelColumn, modelRow) ?? '';\n const { width: textWidth } = super.getTextRenderMetrics(\n context,\n state,\n column,\n row\n );\n const fontWidth =\n metrics.fontWidths.get(theme.font) ?? IrisGridRenderer.DEFAULT_FONT_WIDTH;\n\n context.save();\n context.font = theme.font;\n\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth\n );\n context.restore();\n\n return text !== '' && truncatedText !== text;\n }\n\n getCellOverflowButtonPosition({ mouseX, mouseY, metrics, theme }) {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null) {\n return NULL_POSITION;\n }\n const { rowHeight, columnWidth, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n const { width: gridWidth, verticalBarWidth } = metrics;\n const { cellHorizontalPadding } = theme;\n\n const width = ICON_SIZE + 2 * cellHorizontalPadding;\n const height = rowHeight;\n // Right edge of column or of visible grid, whichever is smaller\n const right = Math.min(\n metrics.gridX + left + columnWidth,\n gridWidth - verticalBarWidth\n );\n const buttonLeft = right - width;\n const buttonTop = metrics.gridY + top;\n\n return { left: buttonLeft, top: buttonTop, width, height };\n }\n\n drawCellOverflowButton(state) {\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 } = theme;\n\n context.save();\n if (\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else {\n context.fillStyle = overflowButtonColor;\n }\n const icon = this.getIcon(ICON_NAMES.CELL_OVERFLOW);\n context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);\n context.fill(icon);\n\n context.restore();\n }\n}\n\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
1
+ {"version":3,"sources":["../src/IrisGridRenderer.js"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","vsLinkExternal","GridRenderer","GridUtils","TableUtils","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","ICON_SIZE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","initIcons","icons","setIcon","name","faIcon","icon","Path2D","scaledIcon","scaleMatrix","a","d","addPath","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawCellOverflowButton","drawScrim","drawGridLines","context","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelRow","get","modelColumn","value","valueForCell","isTextType","columns","type","originalFont","font","displayValue","theme","groupedColumns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","visibleRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","save","setLineDash","pendingTextColor","restore","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillStyle","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","width","height","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","rect","clip","drawColumnHeaders","reverseType","columnHeaderHeight","drawFilterHeaders","hasReverse","REVERSE_TYPE","NONE","drawHeaderBar","headerReverseBarColor","headerSortBarColor","reverseHeaderBarHeight","sortHeaderBarHeight","color","barHeight","interior","offset","headerBarCasingColor","drawColumnHeader","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarSeparatorColor","y1","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","text","filterText","getFilterText","fontWidths","fontWidth","measureText","maxLength","substring","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawTreeMarker","rowY","treeBox","isExpanded","markerIcon","iconX","iconY","drawRowFooters","mouseX","mouseY","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","textForRowFooter","getTextRenderMetrics","textMetrics","mouseColumn","getGridPointFromXY","left","getCellOverflowButtonPosition","shouldRenderOverflowButton","getCellInfoFromXY","isStringType","textForCell","textWidth","DEFAULT_FONT_WIDTH","truncatedText","getCachedTruncatedString","truncationCharForCell","NULL_POSITION","top","gridWidth","right","buttonLeft","buttonTop","buttonWidth","buttonHeight","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["/* eslint react/destructuring-assignment: \"off\" */\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-param-reassign: \"off\" */\nimport {\n dhSortDown,\n dhSortUp,\n vsTriangleDown,\n vsTriangleRight,\n vsLinkExternal,\n} from '@deephaven/icons';\nimport { GridRenderer, GridUtils } from '@deephaven/grid';\nimport TableUtils from './TableUtils';\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 ICON_SIZE = 16;\n\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nclass IrisGridRenderer extends GridRenderer {\n static isFilterValid(advancedFilter, quickFilter) {\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 constructor() {\n super();\n\n this.initIcons();\n }\n\n initIcons() {\n this.icons = {};\n\n this.setIcon(ICON_NAMES.SORT_UP, dhSortUp);\n this.setIcon(ICON_NAMES.SORT_DOWN, dhSortDown);\n this.setIcon(ICON_NAMES.CARET_DOWN, vsTriangleDown);\n this.setIcon(ICON_NAMES.CARET_RIGHT, vsTriangleRight);\n this.setIcon(ICON_NAMES.CELL_OVERFLOW, vsLinkExternal);\n }\n\n // Scales the icon to be square and match the global ICON_SIZE\n setIcon(name, faIcon) {\n const icon = new Path2D(faIcon.icon[4]);\n const scaledIcon = new Path2D();\n const scaleMatrix = {\n a: ICON_SIZE / faIcon.icon[0],\n d: ICON_SIZE / faIcon.icon[1],\n };\n scaledIcon.addPath(icon, scaleMatrix);\n this.icons[name] = scaledIcon;\n }\n\n getIcon(name) {\n return this.icons[name];\n }\n\n getSortIcon(sort) {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return this.getIcon(ICON_NAMES.SORT_UP);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return this.getIcon(ICON_NAMES.SORT_DOWN);\n }\n return null;\n }\n\n drawCanvas(state) {\n super.drawCanvas(state);\n\n this.drawCellOverflowButton(state);\n this.drawScrim(state);\n }\n\n drawGridLines(context, state) {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(context, state, column, row) {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelRow = modelRows.get(row);\n const modelColumn = modelColumns.get(column);\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isTextType(model.columns[modelColumn].type)) {\n if (value === null || value === '') {\n const originalFont = context.font;\n context.font = `italic ${originalFont}`;\n const displayValue = value === null ? 'null' : 'empty';\n super.drawCellContent(context, state, column, row, displayValue);\n context.font = originalFont;\n return;\n }\n }\n super.drawCellContent(context, state, column, row);\n }\n\n drawGroupedColumnLine(context, state) {\n const { metrics, model, theme } = state;\n const { groupedColumns, columns } = model;\n const { maxY, visibleColumnWidths, visibleColumnXs } = metrics;\n if (groupedColumns.length === 0 || !theme.groupedColumnDividerColor) {\n return;\n }\n\n const lastGroupedColumn = groupedColumns[groupedColumns.length - 1];\n const modelIndex = columns.findIndex(\n c => c.name === lastGroupedColumn.name\n );\n const columnX = visibleColumnXs.get(modelIndex);\n const columnWidth = visibleColumnWidths.get(modelIndex);\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(context, state) {\n const { metrics, model, theme } = state;\n const { visibleRowYs, 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 = visibleRowYs.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 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(context, state) {\n const { theme, metrics, hoverSelectColumn } = state;\n if (hoverSelectColumn == null || !theme.linkerColumnHoverBackgroundColor) {\n return;\n }\n\n const { visibleColumnWidths, visibleColumnXs, maxY } = metrics;\n\n const x = visibleColumnXs.get(hoverSelectColumn);\n const columnWidth = visibleColumnWidths.get(hoverSelectColumn);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(context, state) {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state) {\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 just change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n context.fillStyle = scrimColor;\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 context.restore();\n }\n\n drawColumnHeaders(context, state) {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverseType } = 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 const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n this.drawHeaderBar(\n context,\n state,\n hasReverse ? theme.headerReverseBarColor : theme.headerSortBarColor,\n hasReverse ? 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 (\n // has table reverse\n reverseType !== TableUtils.REVERSE_TYPE.NONE\n ) {\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(context, state, color, barHeight, interior = true) {\n const { theme, metrics } = 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 columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n context.fillStyle = color;\n context.fillRect(\n 0,\n columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeader(context, state, column, columnX, columnWidth) {\n super.drawColumnHeader(context, state, column, columnX, columnWidth);\n\n const { metrics, model, theme } = state;\n const { modelColumns } = metrics;\n const modelColumn = modelColumns.get(column);\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const icon = this.getSortIcon(sort);\n if (!icon) {\n return;\n }\n\n const { columnHeaderHeight, gridX } = metrics;\n\n const x = gridX + columnX + columnWidth - 13;\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\n const gradientWidth = 12;\n const gradientX = x - 3;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n const gradient = context.createLinearGradient(\n gradientX,\n 0,\n gradientX + 5,\n 0\n );\n gradient.addColorStop(0, `${theme.headerBackgroundColor}00`);\n gradient.addColorStop(1, `${theme.headerBackgroundColor}CD`);\n\n context.fillStyle = gradient;\n context.fillRect(gradientX, 0, gradientWidth, columnHeaderHeight);\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(context, state) {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(context, state) {\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 visibleColumnWidths,\n visibleColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.font;\n context.textAlign = 'left';\n\n if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && 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 context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n if (theme.filterBarSeparatorColor) {\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 = modelColumns.get(column);\n const columnX = visibleColumnXs.get(column);\n const columnWidth = visibleColumnWidths.get(column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + columnX;\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\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = visibleColumnWidths.get(column);\n const x = visibleColumnXs.get(column) + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(context, state, column, columnX, columnWidth) {\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 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) {\n const { fontWidths } = metrics;\n let fontWidth = fontWidths.get(context.font);\n if (!fontWidth) {\n fontWidth = context.measureText('8');\n if (!fontWidth) {\n fontWidth = 10;\n }\n }\n\n const maxLength =\n (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;\n if (maxLength <= 0) {\n text = '';\n } else if (text.length > maxLength) {\n text = `${text.substring(0, maxLength - 1)}…`;\n }\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid) {\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 {\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) {\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(context, state) {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n visibleColumns,\n visibleColumnWidths,\n visibleColumnXs,\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 = visibleColumnWidths.get(column);\n const x = visibleColumnXs.get(column) + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(context, state, column, columnX, columnWidth) {\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 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 if (quickFilter == null && advancedFilter == null) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else {\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 drawTreeMarker(context, state, columnX, rowY, treeBox, color, isExpanded) {\n context.save();\n const { x1, y1 } = treeBox;\n const markerIcon = isExpanded\n ? this.getIcon(ICON_NAMES.CARET_DOWN)\n : this.getIcon(ICON_NAMES.CARET_RIGHT);\n const iconX = columnX + x1 - 2;\n const iconY = rowY + y1 + 2.5;\n\n context.fillStyle = color;\n context.textAlign = 'center';\n context.translate(iconX, iconY);\n context.fill(markerIcon);\n context.restore();\n }\n\n drawRowFooters(context, state) {\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 visibleRowHeights,\n visibleRowYs,\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 >= gridX && mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (mouseRow !== null && floatingRows.includes(mouseRow)) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = visibleRowYs.get(mouseRow);\n const rowHeight = visibleRowHeights.get(mouseRow);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n context.strokeStyle = floatingGridRowColor;\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 = visibleRowHeights.get(row);\n const rowY = visibleRowYs.get(row);\n const modelRow = modelRows.get(row);\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n\n context.translate(-gridX, -gridY);\n }\n\n // This will shrink the size the text may take when the overflow button is rendered\n // The text will truncate to a smaller width and won't overlap the button\n getTextRenderMetrics(context, state, column, row) {\n const textMetrics = super.getTextRenderMetrics(context, state, column, row);\n\n const { mouseX, mouseY, metrics } = state;\n\n if (mouseX == null || mouseY == null) {\n return textMetrics;\n }\n\n const { column: mouseColumn, row: mouseRow } = GridUtils.getGridPointFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (column === mouseColumn && row === mouseRow) {\n const { left } = this.getCellOverflowButtonPosition(state);\n if (this.shouldRenderOverflowButton(state)) {\n textMetrics.width = left - textMetrics.x;\n }\n }\n return textMetrics;\n }\n\n shouldRenderOverflowButton(state) {\n const { context, mouseX, mouseY, metrics, model, theme } = state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n const { row, column, modelRow, modelColumn } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (\n row == null ||\n column == null ||\n modelRow == null ||\n modelColumn == null ||\n !TableUtils.isStringType(model.columns[modelColumn].type)\n ) {\n return false;\n }\n\n const text = model.textForCell(modelColumn, modelRow) ?? '';\n const { width: textWidth } = super.getTextRenderMetrics(\n context,\n state,\n column,\n row\n );\n const fontWidth =\n metrics.fontWidths.get(theme.font) ?? IrisGridRenderer.DEFAULT_FONT_WIDTH;\n\n context.save();\n context.font = theme.font;\n\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n model.truncationCharForCell(modelColumn, modelRow)\n );\n context.restore();\n\n return text !== '' && truncatedText !== text;\n }\n\n getCellOverflowButtonPosition({ mouseX, mouseY, metrics, theme }) {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null) {\n return NULL_POSITION;\n }\n const { rowHeight, columnWidth, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n const { width: gridWidth, verticalBarWidth } = metrics;\n const { cellHorizontalPadding } = theme;\n\n const width = ICON_SIZE + 2 * cellHorizontalPadding;\n const height = rowHeight;\n // Right edge of column or of visible grid, whichever is smaller\n const right = Math.min(\n metrics.gridX + left + columnWidth,\n gridWidth - verticalBarWidth\n );\n const buttonLeft = right - width;\n const buttonTop = metrics.gridY + top;\n\n return { left: buttonLeft, top: buttonTop, width, height };\n }\n\n drawCellOverflowButton(state) {\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 } = theme;\n\n context.save();\n if (\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else {\n context.fillStyle = overflowButtonColor;\n }\n const icon = this.getIcon(ICON_NAMES.CELL_OVERFLOW);\n context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);\n context.fill(icon);\n\n context.restore();\n }\n}\n\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.js"],"names":[],"mappings":";AAoBA;;GAEG;AACH;IACE,gCAA4B;IAE5B,mCAA+B;IAE/B;;;;OAIG;IACH,yCAHW,SAAS,8BAkDnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IAsxBD;;OAEG;IACH,sBAYC;IAv7BC,yBAA8B;IAC9B,0BAA4B;IAE5B,kBAAwB;IACxB,gBAAkB;IAClB;;;;aAAoB;IACpB;;;aAAwB;IACxB,2BAA6B;IAC7B,yBAA2B;IAC3B,0BAA6B;IAE7B,iBAAuB;IACvB,6EAA8B;IAC9B,YAAkB;IAClB,oCAAyB;IAEzB,wBAA0B;IAC1B,wBAA0B;IAK1B,iCAAkC;IAClC,2BAA2B;IAE3B,uBAA6B;IAwE/B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAsDD,0BAEC;IAED,qDAKC;IAED,mDAKC;IAED,wCAKC;IAED,sCAoCC;IAmFD,yHAqDE;IAWF,sEAIG;IAEH,+BAEC;IAED,0EAEE;IAEF,wBAEC;IAED,wEAEE;IAEF,uBAEC;IAED,oGAGE;IAEF,yBAKC;IAkBD,iBAeC;IAED;;;;;OAKG;IACH,4CAFa,YAAY,IAAI,CAe5B;IAED;;;;;OAKG;IACH,aAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CAUvB;IAED;;;;;OAKG;IACH,cAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CASvB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED,iCAEC;IAcD,kCAQC;IAED,sCAwCC;IAUD,sEAIG;IAEH;;;OAGG;IACH;;;MAcC;IAED;;MAYC;IAED,0BASC;IAgJD,uCAiBC;IA8CD,iFAaC;IA+JD,oEAEE;IAEF,iPASE;IAEF,8LAUE;IAEF,uEASG;IAEH,6GAkBE;IAkBF,6BAEC;IAMD,qCAaC;IAED,sCAWC;IAED,mCAEC;IAED,oCAEC;IAED;;OAEG;IACH,qBAFa,SAAS,CASrB;IAED;;OAEG;IACH,uBAFa,SAAS,CASrB;IAED;;;;;;OAMG;IACH,mBALW,MAAM,KACN,MAAM,cAEJ,QAAQ,IAAI,CAAC,CAKzB;IAED;;;;;OAKG;IACH,0BAJW,SAAS,EAAE,cAET,QAAQ,IAAI,CAAC,CAiIzB;IAED,wCAuJC;IAwBG,gDAAqC;IAiBzC,sCAEC;IAuFD,oDAQC;CACF"}
1
+ {"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.js"],"names":[],"mappings":";AAoBA;;GAEG;AACH;IACE,gCAA4B;IAE5B,mCAA+B;IAE/B;;;;OAIG;IACH,yCAHW,SAAS,8BAkDnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IAmyBD;;OAEG;IACH,sBAYC;IAp8BC,yBAA8B;IAC9B,0BAA4B;IAE5B,kBAAwB;IACxB,gBAAkB;IAClB;;;;aAAoB;IACpB;;;aAAwB;IACxB,2BAA6B;IAC7B,yBAA2B;IAC3B,0BAA6B;IAE7B,iBAAuB;IACvB,6EAA8B;IAC9B,YAAkB;IAClB,oCAAyB;IAEzB,wBAA0B;IAC1B,wBAA0B;IAK1B,iCAAkC;IAClC,2BAA2B;IAE3B,uBAA6B;IAwE/B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAsDD,0BAEC;IAED,qDAKC;IAED,mDAKC;IAED,wCAKC;IAED,sCAoCC;IAgGD,yHAqDE;IAWF,sEAIG;IAEH,+BAEC;IAED,0EAEE;IAEF,wBAEC;IAED,wEAEE;IAEF,uBAEC;IAED,oGAGE;IAEF,yBAKC;IAkBD,iBAeC;IAED;;;;;OAKG;IACH,4CAFa,YAAY,IAAI,CAe5B;IAED;;;;;OAKG;IACH,aAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CAUvB;IAED;;;;;OAKG;IACH,cAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CASvB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED,iCAEC;IAcD,kCAQC;IAED,sCAwCC;IAUD,sEAIG;IAEH;;;OAGG;IACH;;;MAcC;IAED;;MAYC;IAED,0BASC;IAgJD,uCAiBC;IA8CD,iFAaC;IA+JD,oEAEE;IAEF,iPASE;IAEF,8LAUE;IAEF,uEASG;IAEH,6GAkBE;IAkBF,6BAEC;IAMD,qCAaC;IAED,sCAWC;IAED,mCAEC;IAED,oCAEC;IAED;;OAEG;IACH,qBAFa,SAAS,CASrB;IAED;;OAEG;IACH,uBAFa,SAAS,CASrB;IAED;;;;;;OAMG;IACH,mBALW,MAAM,KACN,MAAM,cAEJ,QAAQ,IAAI,CAAC,CAKzB;IAED;;;;;OAKG;IACH,0BAJW,SAAS,EAAE,cAET,QAAQ,IAAI,CAAC,CAiIzB;IAED,wCAuJC;IAwBG,gDAAqC;IAiBzC,sCAEC;IAuFD,oDAQC;CACF"}
@@ -446,6 +446,19 @@ class IrisGridTableModel extends IrisGridModel {
446
446
  return text;
447
447
  }
448
448
 
449
+ truncationCharForCell(x) {
450
+ var column = this.columns[x];
451
+ var {
452
+ type
453
+ } = column;
454
+
455
+ if (TableUtils.isNumberType(type) && this.formatter.truncateNumbersWithPound) {
456
+ return '#';
457
+ }
458
+
459
+ return undefined;
460
+ }
461
+
449
462
  colorForCell(x, y, theme) {
450
463
  var data = this.dataForCell(x, y);
451
464