@deephaven/iris-grid 0.7.0 → 0.7.1-beta.13

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.
@@ -602,7 +602,10 @@ class IrisGridRenderer extends GridRenderer {
602
602
 
603
603
  drawTreeMarker(context, state, columnX, rowY, treeBox, color, isExpanded) {
604
604
  context.save();
605
- var [x1, y1] = treeBox;
605
+ var {
606
+ x1,
607
+ y1
608
+ } = treeBox;
606
609
  var markerIcon = isExpanded ? this.getIcon(ICON_NAMES.CARET_DOWN) : this.getIcon(ICON_NAMES.CARET_RIGHT);
607
610
  var iconX = columnX + x1 - 2;
608
611
  var iconY = rowY + y1 + 2.5;
@@ -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","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"}
@@ -53,6 +53,13 @@ declare class IrisGridTableModel extends IrisGridModel {
53
53
  textValueForCell(x: any, y: any): any;
54
54
  getColumnsWithLayoutHints: (this: any, columns: any, hints: any) => any;
55
55
  row(y: any): any;
56
+ /**
57
+ * Retrieve the totals column if this is a totals row, or null otherwise
58
+ * @param {ModelIndex} x Column index to get the totals column from
59
+ * @param {ModelIndex} y Row index to get the totals column from
60
+ * @returns {dh.Column | null}
61
+ */
62
+ totalsColumn(x: any, y: any): any | null;
56
63
  /**
57
64
  * Translate from the row in the model to a row in the totals table.
58
65
  * If the row is not a totals row, return null
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.js"],"names":[],"mappings":";AAqBA;;GAEG;AACH;IACE,gCAA4B;IAE5B,mCAA+B;IAE/B;;;;OAIG;IACH,oCAHW,SAAS,oBA6CnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IA+pBD;;OAEG;IACH,sBAYC;IA3zBC,yBAA8B;IAC9B,gBAA4B;IAE5B,kBAAwB;IACxB,WAAkB;IAClB;;;;aAAoB;IACpB;;;aAAwB;IACxB,2BAA6B;IAC7B,yBAA2B;IAC3B,0BAA6B;IAE7B,iBAAuB;IACvB,6EAA8B;IAC9B,YAAkB;IAClB,oCAAyB;IAKzB,iCAAkC;IAClC,2BAA2B;IAwE7B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAkCD,yCAEC;IAkBD,qDAKC;IAED,mDAKC;IAED,wCAKC;IAED,sCAoCC;IAiFD,wEAqDG;IAyBH,iBAeC;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;IAiGD,uCAgBC;IA8CD,iFAaC;IAiLD,oEAEE;IAEF,2GASE;IAEF,kHAUE;IAEF,uEASG;IAEH,6GAkBE;IAoBF,6BAEC;IAqBD,sCAWC;IAED,mCAEC;IAED,oCAEC;IAED;;OAEG;IACH,qBAFa,SAAS,CASrB;IAED;;OAEG;IACH,uBAFa,SAAS,CASrB;IA2TG,gDAAqC;CAmH1C"}
1
+ {"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.js"],"names":[],"mappings":";AAqBA;;GAEG;AACH;IACE,gCAA4B;IAE5B,mCAA+B;IAE/B;;;;OAIG;IACH,oCAHW,SAAS,oBA6CnB;IAwFD,8BAEC;IAED,6BAEC;IAED,oCAIC;IAED,qCAIC;IAED,sCAIC;IAED,mCAMC;IAqrBD;;OAEG;IACH,sBAYC;IAj1BC,yBAA8B;IAC9B,gBAA4B;IAE5B,kBAAwB;IACxB,WAAkB;IAClB;;;;aAAoB;IACpB;;;aAAwB;IACxB,2BAA6B;IAC7B,yBAA2B;IAC3B,0BAA6B;IAE7B,iBAAuB;IACvB,6EAA8B;IAC9B,YAAkB;IAClB,oCAAyB;IAKzB,iCAAkC;IAClC,2BAA2B;IAwE7B,2CAQC;IAED,8CAKC;IAsGD,gCAIC;IAkCD,yCAEC;IAkBD,qDAKC;IAED,mDAKC;IAED,wCAKC;IAED,sCAoCC;IAiFD,wEAqDG;IAyBH,iBAeC;IAED;;;;;OAKG;IACH,8BAFa,MAAY,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;IAiGD,uCAiBC;IA8CD,iFAaC;IAiLD,oEAEE;IAEF,2GASE;IAEF,kHAUE;IAEF,uEASG;IAEH,6GAkBE;IAoBF,6BAEC;IAqBD,sCAWC;IAED,mCAEC;IAED,oCAEC;IAED;;OAEG;IACH,qBAFa,SAAS,CASrB;IAED;;OAEG;IACH,uBAFa,SAAS,CASrB;IA2TG,gDAAqC;CAmH1C"}
@@ -384,13 +384,15 @@ class IrisGridTableModel extends IrisGridModel {
384
384
 
385
385
 
386
386
  if (((_this$formattedString = this.formattedStringData[x]) === null || _this$formattedString === void 0 ? void 0 : _this$formattedString[y]) === undefined) {
387
+ var _this$totalsColumn;
388
+
387
389
  var value = this.valueForCell(x, y);
388
390
 
389
391
  if (value == null) {
390
392
  return null;
391
393
  }
392
394
 
393
- var column = this.columns[x];
395
+ var column = (_this$totalsColumn = this.totalsColumn(x, y)) !== null && _this$totalsColumn !== void 0 ? _this$totalsColumn : this.columns[x];
394
396
  var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(this.formatter, column.type, column.name);
395
397
  var formatOverride = null;
396
398
 
@@ -447,7 +449,9 @@ class IrisGridTableModel extends IrisGridModel {
447
449
  } = data;
448
450
 
449
451
  if (value != null) {
450
- var column = this.columns[x];
452
+ var _this$totalsColumn2;
453
+
454
+ var column = (_this$totalsColumn2 = this.totalsColumn(x, y)) !== null && _this$totalsColumn2 !== void 0 ? _this$totalsColumn2 : this.columns[x];
451
455
 
452
456
  if (TableUtils.isDateType(column.type) || column.name === 'Date') {
453
457
  return theme.dateColor;
@@ -558,6 +562,24 @@ class IrisGridTableModel extends IrisGridModel {
558
562
  var viewportY = (showOnTop ? y - totalsRowCount : y) - offset;
559
563
  return (_this$viewportData$ro = (_this$viewportData2 = this.viewportData) === null || _this$viewportData2 === void 0 ? void 0 : (_this$viewportData2$r = _this$viewportData2.rows) === null || _this$viewportData2$r === void 0 ? void 0 : _this$viewportData2$r[viewportY]) !== null && _this$viewportData$ro !== void 0 ? _this$viewportData$ro : null;
560
564
  }
565
+ /**
566
+ * Retrieve the totals column if this is a totals row, or null otherwise
567
+ * @param {ModelIndex} x Column index to get the totals column from
568
+ * @param {ModelIndex} y Row index to get the totals column from
569
+ * @returns {dh.Column | null}
570
+ */
571
+
572
+
573
+ totalsColumn(x, y) {
574
+ var _this$totals$defaultO, _this$totals8;
575
+
576
+ var totalsRow = this.totalsRow(y);
577
+ if (totalsRow == null) return null;
578
+ var operation = this.totals.operationOrder[totalsRow];
579
+ var defaultOperation = (_this$totals$defaultO = (_this$totals8 = this.totals) === null || _this$totals8 === void 0 ? void 0 : _this$totals8.defaultOperation) !== null && _this$totals$defaultO !== void 0 ? _this$totals$defaultO : AggregationOperation.SUM;
580
+ var tableColumn = this.columns[x];
581
+ return this.totalsTable.columns.find(column => column.name === "".concat(tableColumn.name, "__").concat(operation) || operation === defaultOperation && column.name === tableColumn.name);
582
+ }
561
583
  /**
562
584
  * Translate from the row in the model to a row in the totals table.
563
585
  * If the row is not a totals row, return null
@@ -567,10 +589,10 @@ class IrisGridTableModel extends IrisGridModel {
567
589
 
568
590
 
569
591
  totalsRow(y) {
570
- var _this$totals$operatio6, _this$totals8, _this$totals8$operati, _this$totals$showOnTo2, _this$totals9;
592
+ var _this$totals$operatio6, _this$totals9, _this$totals9$operati, _this$totals$showOnTo2, _this$totals10;
571
593
 
572
- var totalsRowCount = (_this$totals$operatio6 = (_this$totals8 = this.totals) === null || _this$totals8 === void 0 ? void 0 : (_this$totals8$operati = _this$totals8.operationOrder) === null || _this$totals8$operati === void 0 ? void 0 : _this$totals8$operati.length) !== null && _this$totals$operatio6 !== void 0 ? _this$totals$operatio6 : 0;
573
- var showOnTop = (_this$totals$showOnTo2 = (_this$totals9 = this.totals) === null || _this$totals9 === void 0 ? void 0 : _this$totals9.showOnTop) !== null && _this$totals$showOnTo2 !== void 0 ? _this$totals$showOnTo2 : false;
594
+ var totalsRowCount = (_this$totals$operatio6 = (_this$totals9 = this.totals) === null || _this$totals9 === void 0 ? void 0 : (_this$totals9$operati = _this$totals9.operationOrder) === null || _this$totals9$operati === void 0 ? void 0 : _this$totals9$operati.length) !== null && _this$totals$operatio6 !== void 0 ? _this$totals$operatio6 : 0;
595
+ var showOnTop = (_this$totals$showOnTo2 = (_this$totals10 = this.totals) === null || _this$totals10 === void 0 ? void 0 : _this$totals10.showOnTop) !== null && _this$totals$showOnTo2 !== void 0 ? _this$totals$showOnTo2 : false;
574
596
  var totalsRow = showOnTop ? y : y - this.table.size;
575
597
 
576
598
  if (totalsRow >= 0 && totalsRow < totalsRowCount) {
@@ -646,9 +668,9 @@ class IrisGridTableModel extends IrisGridModel {
646
668
  }
647
669
 
648
670
  copyTotalsData(totalsData) {
649
- var _this$totals$defaultO,
650
- _this$totals10,
671
+ var _this$totals$defaultO2,
651
672
  _this$totals11,
673
+ _this$totals12,
652
674
  _this = this;
653
675
 
654
676
  if (!totalsData) {
@@ -668,8 +690,8 @@ class IrisGridTableModel extends IrisGridModel {
668
690
 
669
691
  var dataMap = new Map();
670
692
  var row = rows[0];
671
- var defaultOperation = (_this$totals$defaultO = (_this$totals10 = this.totals) === null || _this$totals10 === void 0 ? void 0 : _this$totals10.defaultOperation) !== null && _this$totals$defaultO !== void 0 ? _this$totals$defaultO : AggregationOperation.SUM;
672
- var operationMap = (_this$totals11 = this.totals) === null || _this$totals11 === void 0 ? void 0 : _this$totals11.operationMap;
693
+ var defaultOperation = (_this$totals$defaultO2 = (_this$totals11 = this.totals) === null || _this$totals11 === void 0 ? void 0 : _this$totals11.defaultOperation) !== null && _this$totals$defaultO2 !== void 0 ? _this$totals$defaultO2 : AggregationOperation.SUM;
694
+ var operationMap = (_this$totals12 = this.totals) === null || _this$totals12 === void 0 ? void 0 : _this$totals12.operationMap;
673
695
 
674
696
  var _loop = function _loop(c) {
675
697
  var _operationMap$name$, _operationMap$name;
@@ -862,6 +884,7 @@ class IrisGridTableModel extends IrisGridModel {
862
884
  }
863
885
 
864
886
  this.totalsTable = totalsTable;
887
+ this.totalsDataMap = null;
865
888
 
866
889
  if (this.listenerCount > 0 && this.totalsTable != null) {
867
890
  this.addTotalsListeners(totalsTable);