@deephaven/iris-grid 0.9.2-beta.7 → 0.9.4-beta.0

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":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.js"],"names":[],"mappings":";AAqBA;;KAEK;AACL;IACE,qEAMC;IAQD,kBAOC;IANC,sBAAe;IAQjB,sCAEC;IAED,wBAEC;IAED,sCAWC;IAgBD,sDA0BC;IAED,mDAyBC;IAwBD,4BA8BC;IAgDD,8FAwBC;IAiDD,kDAWC;IAED,0DAsEC;IAED,sGAuFC;IAED,2DAiCC;IAED,uGAwCC;CA2GF"}
1
+ {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.js"],"names":[],"mappings":";AAqBA;;KAEK;AACL;IACE,qEAMC;IAQD,kBAOC;IANC,sBAAe;IAQjB,sCAEC;IAED,wBAEC;IAED,sCAWC;IAmCD,sDA0BC;IAED,mDAyBC;IAwBD,4BA8BC;IAgDD,8FAwBC;IAiDD,kDAWC;IAED,0DAsEC;IAED,sGAuFC;IAED,2DAiCC;IAED,uGAwCC;CA2GF"}
@@ -72,6 +72,33 @@ class IrisGridRenderer extends GridRenderer {
72
72
  this.drawPendingRowLine(context, state);
73
73
  }
74
74
 
75
+ drawCellContent(context, state, column, row) {
76
+ var {
77
+ metrics,
78
+ model
79
+ } = state;
80
+ var {
81
+ modelColumns,
82
+ modelRows
83
+ } = metrics;
84
+ var modelRow = modelRows.get(row);
85
+ var modelColumn = modelColumns.get(column);
86
+ var value = model.valueForCell(modelColumn, modelRow);
87
+
88
+ if (TableUtils.isTextType(model.columns[modelColumn].type)) {
89
+ if (value === null || value === '') {
90
+ var originalFont = context.font;
91
+ context.font = "italic ".concat(originalFont);
92
+ var displayValue = value === null ? 'null' : 'empty';
93
+ super.drawCellContent(context, state, column, row, displayValue);
94
+ context.font = originalFont;
95
+ return;
96
+ }
97
+ }
98
+
99
+ super.drawCellContent(context, state, column, row);
100
+ }
101
+
75
102
  drawGroupedColumnLine(context, state) {
76
103
  var {
77
104
  metrics,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridRenderer.js"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","GridRenderer","GridUtils","TableUtils","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","ICON_SCALE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","initIcons","icons","setIcon","name","faIcon","Path2D","icon","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGridLines","context","drawGroupedColumnLine","drawPendingRowLine","metrics","model","theme","groupedColumns","columns","maxY","visibleColumnWidths","visibleColumnXs","length","groupedColumnDividerColor","lastGroupedColumn","modelIndex","findIndex","c","columnX","get","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","column","modelColumns","modelColumn","getSortForColumn","gridX","yOffset","gradientWidth","gradientX","gradient","createLinearGradient","addColorStop","headerBackgroundColor","translate","scale","fill","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","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","modelRows","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","visibleRowHeights","cellHorizontalPadding","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","Math","min","mouseRow","getRowAtY","includes","rowHeight","row","modelRow","textForRowFooter"],"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} 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});\n\nconst ICON_SCALE = 0.03;\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 }\n\n setIcon(name, faIcon) {\n this.icons[name] = new Path2D(faIcon.icon[4]);\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 new Path2D(this.getIcon(ICON_NAMES.SORT_UP));\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return new Path2D(this.getIcon(ICON_NAMES.SORT_DOWN));\n }\n return null;\n }\n\n drawCanvas(state) {\n super.drawCanvas(state);\n\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 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.scale(ICON_SCALE, ICON_SCALE);\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.scale(ICON_SCALE, ICON_SCALE);\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\nexport default IrisGridRenderer;\n"],"file":"IrisGridRenderer.js"}
1
+ {"version":3,"sources":["../src/IrisGridRenderer.js"],"names":["dhSortDown","dhSortUp","vsTriangleDown","vsTriangleRight","GridRenderer","GridUtils","TableUtils","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","ICON_SCALE","IrisGridRenderer","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","constructor","initIcons","icons","setIcon","name","faIcon","Path2D","icon","getIcon","getSortIcon","sort","direction","sortDirection","ascending","descending","drawCanvas","state","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","scale","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"],"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} 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});\n\nconst ICON_SCALE = 0.03;\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 }\n\n setIcon(name, faIcon) {\n this.icons[name] = new Path2D(faIcon.icon[4]);\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 new Path2D(this.getIcon(ICON_NAMES.SORT_UP));\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return new Path2D(this.getIcon(ICON_NAMES.SORT_DOWN));\n }\n return null;\n }\n\n drawCanvas(state) {\n super.drawCanvas(state);\n\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.scale(ICON_SCALE, ICON_SCALE);\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.scale(ICON_SCALE, ICON_SCALE);\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\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,8BA+CnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IAkuBD;;OAEG;IACH,sBAYC;IAh4BC,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;IAKzB,iCAAkC;IAClC,2BAA2B;IAE3B,uBAA6B;IAwE/B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAkCD,yCAEC;IAcD,0BAEC;IAED,qDAKC;IAED,mDAKC;IAED,wCAKC;IAED,sCAoCC;IAiFD,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;IAUD,kCAQC;IAED,sCAwCC;IAUD,sEAIG;IAEH;;;OAGG;IACH;;;MAcC;IAED;;MAYC;IAED,0BASC;IAsGD,uCAiBC;IA8CD,iFAaC;IAqID,iCAEC;IAMD,2BAGC;IAED,8CAEC;IAED,4BAGC;IAwBD,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,8BA+CnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IAwuBD;;OAEG;IACH,sBAYC;IAt4BC,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;IAKzB,iCAAkC;IAClC,2BAA2B;IAE3B,uBAA6B;IAwE/B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAkCD,yCAEC;IAcD,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;IAsGD,uCAiBC;IA8CD,iFAaC;IAqID,iCAEC;IAMD,2BAGC;IAED,8CAEC;IAED,4BAGC;IAwBD,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"}
@@ -445,9 +445,14 @@ class IrisGridTableModel extends IrisGridModel {
445
445
 
446
446
  if (data) {
447
447
  var {
448
- format
448
+ format,
449
+ value
449
450
  } = data;
450
451
 
452
+ if (value == null || value === '') {
453
+ return theme.nullStringColor;
454
+ }
455
+
451
456
  if (format && format.color) {
452
457
  return format.color;
453
458
  }
@@ -458,10 +463,6 @@ class IrisGridTableModel extends IrisGridModel {
458
463
  } // Fallback to formatting based on the value/type of the cell
459
464
 
460
465
 
461
- var {
462
- value
463
- } = data;
464
-
465
466
  if (value != null) {
466
467
  var _this$totalsColumn2;
467
468
 
@@ -686,9 +687,15 @@ class IrisGridTableModel extends IrisGridModel {
686
687
  }
687
688
 
688
689
  valueForCell(x, y) {
689
- var _this$dataForCell2;
690
+ var data = this.dataForCell(x, y);
691
+
692
+ if (data) {
693
+ var _data$value;
694
+
695
+ return (_data$value = data.value) !== null && _data$value !== void 0 ? _data$value : null;
696
+ }
690
697
 
691
- return (_this$dataForCell2 = this.dataForCell(x, y)) === null || _this$dataForCell2 === void 0 ? void 0 : _this$dataForCell2.value;
698
+ return undefined;
692
699
  }
693
700
 
694
701
  copyViewportData(data) {