@deephaven/grid 0.85.7 → 0.85.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.
- package/dist/DataBarCellRenderer.d.ts +2 -4
- package/dist/DataBarCellRenderer.d.ts.map +1 -1
- package/dist/DataBarCellRenderer.js +73 -74
- package/dist/DataBarCellRenderer.js.map +1 -1
- package/dist/GridMetricCalculator.d.ts +10 -0
- package/dist/GridMetricCalculator.d.ts.map +1 -1
- package/dist/GridMetricCalculator.js +16 -0
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridRenderer.d.ts.map +1 -1
- package/dist/GridRenderer.js +5 -5
- package/dist/GridRenderer.js.map +1 -1
- package/package.json +2 -2
@@ -1,7 +1,6 @@
|
|
1
1
|
/// <reference types="memoizee" />
|
2
2
|
import CellRenderer from './CellRenderer';
|
3
3
|
import { ModelIndex, VisibleIndex, VisibleToModelMap } from './GridMetrics';
|
4
|
-
import { Oklab } from './GridColorUtils';
|
5
4
|
import { GridRenderState } from './GridRendererTypes';
|
6
5
|
import GridModel from './GridModel';
|
7
6
|
interface DataBarRenderMetrics {
|
@@ -25,11 +24,10 @@ interface DataBarRenderMetrics {
|
|
25
24
|
markerXs: number[];
|
26
25
|
}
|
27
26
|
declare class DataBarCellRenderer extends CellRenderer {
|
28
|
-
|
27
|
+
static getGradient: ((width: number, colors: string[]) => CanvasGradient) & import("@types/memoizee").Memoized<(width: number, colors: string[]) => CanvasGradient>;
|
29
28
|
drawCellContent(context: CanvasRenderingContext2D, state: GridRenderState, column: VisibleIndex, row: VisibleIndex): void;
|
30
29
|
getDataBarRenderMetrics(context: CanvasRenderingContext2D, state: GridRenderState, column: VisibleIndex, row: VisibleIndex): DataBarRenderMetrics;
|
31
|
-
|
32
|
-
drawGradientPart(context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, color: string): void;
|
30
|
+
getCachedWidth: ((context: CanvasRenderingContext2D, text: string) => number) & import("@types/memoizee").Memoized<(context: CanvasRenderingContext2D, text: string) => number>;
|
33
31
|
/**
|
34
32
|
* Returns the width of the widest value in pixels
|
35
33
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DataBarCellRenderer.d.ts","sourceRoot":"","sources":["../src/DataBarCellRenderer.ts"],"names":[],"mappings":";AAEA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
1
|
+
{"version":3,"file":"DataBarCellRenderer.d.ts","sourceRoot":"","sources":["../src/DataBarCellRenderer.ts"],"names":[],"mappings":";AAEA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAI5E,OAAO,EAAsB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,UAAU,oBAAoB;IAC5B,kHAAkH;IAClH,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,4CAA4C;IAC5C,CAAC,EAAE,MAAM,CAAC;IACV,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AACD,cAAM,mBAAoB,SAAQ,YAAY;IAC5C,MAAM,CAAC,WAAW,WACR,MAAM,UAAU,MAAM,EAAE,KAAG,cAAc,+CAAzC,MAAM,UAAU,MAAM,EAAE,KAAG,cAAc,EAiCjD;IAEF,eAAe,CACb,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,GAChB,IAAI;IAwMP,uBAAuB,CACrB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,GAChB,oBAAoB;IAwOvB,cAAc,aACF,wBAAwB,QAAQ,MAAM,KAAG,MAAM,iDAA/C,wBAAwB,QAAQ,MAAM,KAAG,MAAM,EAGzD;IAEF;;OAEG;IACH,6BAA6B,aAEhB,wBAAwB,eACpB,SAAS,YAAY,EAAE,uCAE7B,SAAS,UACR,UAAU,KACjB,MAAM,iDALE,wBAAwB,eACpB,SAAS,YAAY,EAAE,uCAE7B,SAAS,UACR,UAAU,KACjB,MAAM,EAYT;CACH;AAED,eAAe,mBAAmB,CAAC"}
|
@@ -13,14 +13,16 @@ import { DEFAULT_FONT_WIDTH } from "./GridRendererTypes.js";
|
|
13
13
|
class DataBarCellRenderer extends CellRenderer {
|
14
14
|
constructor() {
|
15
15
|
super(...arguments);
|
16
|
-
_defineProperty(this, "
|
16
|
+
_defineProperty(this, "getCachedWidth", memoizeClear((context, text) => context.measureText(text).width, {
|
17
|
+
max: 10000
|
18
|
+
}));
|
17
19
|
_defineProperty(this, "getCachedWidestValueForColumn", memoizeClear((context, visibleRows, modelRows, model, column) => {
|
18
20
|
var widestValue = 0;
|
19
21
|
for (var i = 0; i < visibleRows.length; i += 1) {
|
20
22
|
var row = visibleRows[i];
|
21
23
|
var modelRow = getOrThrow(modelRows, row);
|
22
24
|
var text = model.textForCell(column, modelRow);
|
23
|
-
widestValue = Math.max(widestValue,
|
25
|
+
widestValue = Math.max(widestValue, this.getCachedWidth(context, text));
|
24
26
|
}
|
25
27
|
return widestValue;
|
26
28
|
}, {
|
@@ -54,6 +56,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
54
56
|
var text = model.textForCell(modelColumn, modelRow);
|
55
57
|
var {
|
56
58
|
x: textX,
|
59
|
+
y: textY,
|
57
60
|
width: textWidth
|
58
61
|
} = GridUtils.getTextRenderMetrics(state, column, row);
|
59
62
|
var fontWidth = (_fontWidths$get = fontWidths === null || fontWidths === void 0 ? void 0 : fontWidths.get(context.font)) !== null && _fontWidths$get !== void 0 ? _fontWidths$get : DEFAULT_FONT_WIDTH;
|
@@ -70,7 +73,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
70
73
|
direction,
|
71
74
|
value
|
72
75
|
} = model.dataBarOptionsForCell(modelColumn, modelRow, theme);
|
73
|
-
var hasGradient = Array.isArray(dataBarColor);
|
76
|
+
var hasGradient = Array.isArray(dataBarColor) && dataBarColor.length > 1;
|
74
77
|
if (columnMin == null || columnMax == null) {
|
75
78
|
return;
|
76
79
|
}
|
@@ -84,101 +87,86 @@ class DataBarCellRenderer extends CellRenderer {
|
|
84
87
|
totalValueRange,
|
85
88
|
dataBarWidth
|
86
89
|
} = this.getDataBarRenderMetrics(context, state, column, row);
|
87
|
-
if (this.heightOfDigits === undefined) {
|
88
|
-
var {
|
89
|
-
actualBoundingBoxAscent,
|
90
|
-
actualBoundingBoxDescent
|
91
|
-
} = context.measureText('1234567890');
|
92
|
-
this.heightOfDigits = actualBoundingBoxAscent + actualBoundingBoxDescent;
|
93
|
-
}
|
94
90
|
context.save();
|
95
91
|
context.textAlign = textAlign;
|
96
92
|
if (hasGradient) {
|
97
93
|
var color = value >= 0 ? dataBarColor[dataBarColor.length - 1] : dataBarColor[0];
|
98
94
|
context.fillStyle = color;
|
99
95
|
} else {
|
100
|
-
context.fillStyle = dataBarColor;
|
96
|
+
context.fillStyle = Array.isArray(dataBarColor) ? dataBarColor[0] : dataBarColor;
|
101
97
|
}
|
102
|
-
context.textBaseline = '
|
98
|
+
context.textBaseline = 'middle';
|
103
99
|
context.font = theme.font;
|
104
100
|
if (valuePlacement !== 'hide') {
|
105
|
-
context.fillText(truncatedText, textX,
|
101
|
+
context.fillText(truncatedText, textX, textY);
|
106
102
|
}
|
103
|
+
var hasRowDividers = theme.gridRowColor != null;
|
104
|
+
var yOffset = hasRowDividers ? 2 : 1;
|
105
|
+
context.save();
|
106
|
+
context.beginPath();
|
107
|
+
context.roundRect(dataBarX, rowY + yOffset,
|
108
|
+
// yOffset includes 1px for top padding
|
109
|
+
dataBarWidth, rowHeight - 1 - yOffset,
|
110
|
+
// 1px for bottom padding
|
111
|
+
1);
|
112
|
+
context.clip();
|
113
|
+
context.globalAlpha = opacity;
|
107
114
|
|
108
115
|
// Draw bar
|
109
116
|
if (hasGradient) {
|
110
117
|
// Draw gradient bar
|
111
118
|
|
112
|
-
var
|
119
|
+
var gradientWidth = 0;
|
120
|
+
var gradientX = 0;
|
113
121
|
context.save();
|
114
|
-
|
115
|
-
context
|
116
|
-
|
122
|
+
|
123
|
+
// Translate the context so its origin is at the start of the gradient
|
124
|
+
// and increasing x value moves towards the end of the gradient.
|
125
|
+
// For RTL, scale x by -1 to flip across the x-axis
|
117
126
|
if (value < 0) {
|
118
127
|
if (direction === 'LTR') {
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
for (var i = 0; i < dataBarColor.length - 1; i += 1) {
|
123
|
-
var leftColor = dataBarColorsOklab[i];
|
124
|
-
var rightColor = dataBarColorsOklab[i + 1];
|
125
|
-
this.drawGradient(context, leftColor, rightColor, gradientX, rowY + 1, partGradientWidth, rowHeight);
|
126
|
-
gradientX += partGradientWidth;
|
127
|
-
}
|
128
|
+
gradientWidth = Math.round(Math.abs(columnMin) / totalValueRange * maxWidth);
|
129
|
+
gradientX = Math.round(leftmostPosition);
|
130
|
+
context.translate(gradientX, 0);
|
128
131
|
} else if (direction === 'RTL') {
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
var _leftColor = dataBarColorsOklab[_i];
|
134
|
-
var _rightColor = dataBarColorsOklab[_i - 1];
|
135
|
-
this.drawGradient(context, _leftColor, _rightColor, _gradientX, rowY + 1, _partGradientWidth, rowHeight);
|
136
|
-
_gradientX += _partGradientWidth;
|
137
|
-
}
|
132
|
+
gradientWidth = Math.round(maxWidth - Math.abs(columnMax) / totalValueRange * maxWidth);
|
133
|
+
gradientX = Math.round(zeroPosition);
|
134
|
+
context.translate(gradientX + gradientWidth, 0);
|
135
|
+
context.scale(-1, 1);
|
138
136
|
}
|
139
137
|
} else if (direction === 'LTR') {
|
140
138
|
// Value is greater than or equal to 0
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
for (var _i2 = 0; _i2 < dataBarColor.length - 1; _i2 += 1) {
|
145
|
-
var _leftColor2 = dataBarColorsOklab[_i2];
|
146
|
-
var _rightColor2 = dataBarColorsOklab[_i2 + 1];
|
147
|
-
this.drawGradient(context, _leftColor2, _rightColor2, _gradientX2, rowY + 1, _partGradientWidth2, rowHeight - 2);
|
148
|
-
_gradientX2 += _partGradientWidth2;
|
149
|
-
}
|
139
|
+
gradientWidth = Math.round(maxWidth - Math.abs(columnMin) / totalValueRange * maxWidth) - 1;
|
140
|
+
gradientX = Math.round(zeroPosition);
|
141
|
+
context.translate(gradientX, 0);
|
150
142
|
} else if (direction === 'RTL') {
|
151
143
|
// Value is greater than or equal to 0
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
var _leftColor3 = dataBarColorsOklab[_i3];
|
157
|
-
var _rightColor3 = dataBarColorsOklab[_i3 - 1];
|
158
|
-
this.drawGradient(context, _leftColor3, _rightColor3, _gradientX3, rowY + 1, _partGradientWidth3, rowHeight - 2);
|
159
|
-
_gradientX3 += _partGradientWidth3;
|
160
|
-
}
|
144
|
+
gradientWidth = Math.round(Math.abs(columnMax) / totalValueRange * maxWidth);
|
145
|
+
gradientX = Math.round(leftmostPosition);
|
146
|
+
context.translate(gradientX + gradientWidth, 0);
|
147
|
+
context.scale(-1, 1);
|
161
148
|
}
|
162
|
-
|
163
|
-
|
164
|
-
context.
|
149
|
+
var gradient = DataBarCellRenderer.getGradient(gradientWidth, dataBarColor);
|
150
|
+
context.fillStyle = gradient;
|
151
|
+
context.fillRect(0, dataBarY, gradientWidth, rowHeight);
|
152
|
+
context.restore(); // Restore gradient translate/scale
|
165
153
|
} else {
|
166
154
|
// Draw normal bar
|
167
|
-
context.save();
|
168
|
-
context.globalAlpha = opacity;
|
169
155
|
context.beginPath();
|
170
|
-
context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight
|
156
|
+
context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight, 1);
|
171
157
|
context.fill();
|
172
|
-
context.restore();
|
173
158
|
}
|
174
159
|
|
175
160
|
// Draw markers
|
176
161
|
if (maxWidth > 0) {
|
177
162
|
markerXs.forEach((markerX, index) => {
|
178
163
|
context.fillStyle = markers[index].color;
|
179
|
-
context.fillRect(markerX, dataBarY, 1, rowHeight
|
164
|
+
context.fillRect(markerX, dataBarY, 1, rowHeight);
|
180
165
|
});
|
181
166
|
}
|
167
|
+
|
168
|
+
// restore clip
|
169
|
+
context.restore();
|
182
170
|
var shouldRenderDashedLine = !(axis === 'directional' && (valuePlacement === 'beside' && textAlign === 'right' && direction === 'LTR' || valuePlacement === 'beside' && textAlign === 'left' && direction === 'RTL' || valuePlacement !== 'beside'));
|
183
171
|
|
184
172
|
// Draw dashed line
|
@@ -368,7 +356,7 @@ class DataBarCellRenderer extends CellRenderer {
|
|
368
356
|
return {
|
369
357
|
maxWidth,
|
370
358
|
x: dataBarX,
|
371
|
-
y
|
359
|
+
y,
|
372
360
|
zeroPosition,
|
373
361
|
leftmostPosition,
|
374
362
|
rightmostPosition,
|
@@ -377,23 +365,34 @@ class DataBarCellRenderer extends CellRenderer {
|
|
377
365
|
markerXs
|
378
366
|
};
|
379
367
|
}
|
380
|
-
drawGradient(context, leftColor, rightColor, x, y, width, height) {
|
381
|
-
var currentColor = leftColor;
|
382
|
-
// Increase by 0.5 because half-pixel will render weird on different zooms
|
383
|
-
for (var currentX = x; currentX <= x + width; currentX += 0.5) {
|
384
|
-
this.drawGradientPart(context, currentX, y, 1, height, GridColorUtils.rgbToHex(GridColorUtils.OklabToLinearSRGB(currentColor)));
|
385
|
-
currentColor = GridColorUtils.lerpColor(leftColor, rightColor, (currentX - x) / width);
|
386
|
-
}
|
387
|
-
}
|
388
|
-
drawGradientPart(context, x, y, width, height, color) {
|
389
|
-
context.fillStyle = color;
|
390
|
-
context.fillRect(x, y, width, height);
|
391
|
-
}
|
392
368
|
|
393
369
|
/**
|
394
370
|
* Returns the width of the widest value in pixels
|
395
371
|
*/
|
396
372
|
}
|
373
|
+
_defineProperty(DataBarCellRenderer, "getGradient", memoizeClear((width, colors) => {
|
374
|
+
var canvas = document.createElement('canvas');
|
375
|
+
var ctx = canvas.getContext('2d');
|
376
|
+
if (ctx == null) {
|
377
|
+
throw new Error('Failed to create canvas context');
|
378
|
+
}
|
379
|
+
if (Number.isNaN(width)) {
|
380
|
+
return ctx.createLinearGradient(0, 0, 0, 0);
|
381
|
+
}
|
382
|
+
var gradient = ctx.createLinearGradient(0, 0, width, 0);
|
383
|
+
var oklabColors = colors.map(color => GridColorUtils.linearSRGBToOklab(GridColorUtils.hexToRgb(color)));
|
384
|
+
for (var i = 0; i < width; i += 1) {
|
385
|
+
var colorStop = i / width;
|
386
|
+
var colorChangeInterval = 1 / (colors.length - 1);
|
387
|
+
var leftColorIndex = Math.floor(colorStop / colorChangeInterval);
|
388
|
+
var color = GridColorUtils.lerpColor(oklabColors[leftColorIndex], oklabColors[leftColorIndex + 1], colorStop % colorChangeInterval / colorChangeInterval);
|
389
|
+
gradient.addColorStop(i / width, GridColorUtils.rgbToHex(GridColorUtils.OklabToLinearSRGB(color)));
|
390
|
+
}
|
391
|
+
return gradient;
|
392
|
+
}, {
|
393
|
+
max: 1000,
|
394
|
+
primitive: true // Stringify the arguments for memoization. Lets the color arrays be different arrays in memory, but still cache hit
|
395
|
+
}));
|
397
396
|
|
398
397
|
export default DataBarCellRenderer;
|
399
398
|
//# sourceMappingURL=DataBarCellRenderer.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DataBarCellRenderer.js","names":["getOrThrow","CellRenderer","isExpandableGridModel","isDataBarGridModel","GridColorUtils","GridUtils","memoizeClear","DEFAULT_FONT_WIDTH","DataBarCellRenderer","constructor","arguments","_defineProperty","context","visibleRows","modelRows","model","column","widestValue","i","length","row","modelRow","text","textForCell","Math","max","measureText","width","drawCellContent","state","_fontWidths$get","metrics","theme","modelColumns","allRowHeights","allRowYs","firstColumn","fontWidths","isFirstColumn","rowHeight","modelColumn","rowY","textAlign","textAlignForCell","x","textX","textWidth","getTextRenderMetrics","fontWidth","get","font","truncationChar","truncationCharForCell","truncatedText","getCachedTruncatedString","columnMin","columnMax","axis","color","dataBarColor","valuePlacement","opacity","markers","direction","value","dataBarOptionsForCell","hasGradient","Array","isArray","maxWidth","dataBarX","y","dataBarY","zeroPosition","leftmostPosition","markerXs","totalValueRange","dataBarWidth","getDataBarRenderMetrics","heightOfDigits","undefined","actualBoundingBoxAscent","actualBoundingBoxDescent","save","fillStyle","textBaseline","fillText","dataBarColorsOklab","map","linearSRGBToOklab","hexToRgb","beginPath","roundRect","clip","totalGradientWidth","round","abs","partGradientWidth","gradientX","leftColor","rightColor","drawGradient","restore","globalAlpha","fill","forEach","markerX","index","fillRect","shouldRenderDashedLine","strokeStyle","zeroLineColor","setLineDash","moveTo","lineTo","stroke","hasExpandableRows","drawCellRowTreeMarker","Error","allColumnXs","allColumnWidths","cellHorizontalPadding","treeDepthIndent","treeHorizontalPadding","columnWidth","treeIndent","depthForRow","longestValueWidth","getCachedWidestValueForColumn","leftPadding","rightPadding","columnLongest","marker","markerValue","offset","rightmostPosition","height","currentColor","currentX","drawGradientPart","rgbToHex","OklabToLinearSRGB","lerpColor"],"sources":["../src/DataBarCellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport CellRenderer from './CellRenderer';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport { isDataBarGridModel } from './DataBarGridModel';\nimport { ModelIndex, VisibleIndex, VisibleToModelMap } from './GridMetrics';\nimport GridColorUtils, { Oklab } from './GridColorUtils';\nimport GridUtils from './GridUtils';\nimport memoizeClear from './memoizeClear';\nimport { DEFAULT_FONT_WIDTH, GridRenderState } from './GridRendererTypes';\nimport GridModel from './GridModel';\n\ninterface DataBarRenderMetrics {\n /** The total width the entire bar from the min to max value can take up (rightmostPosition - leftmostPosition) */\n maxWidth: number;\n /** The x coordinate of the bar (the left) */\n x: number;\n /** The y coordinate of the bar (the top) */\n y: number;\n /** The position of the zero line */\n zeroPosition: number;\n /** The position of the leftmost point */\n leftmostPosition: number;\n /** The position of the rightmost point */\n rightmostPosition: number;\n /** The range of values (e.g. max of 100 and min of -50 means range of 150) */\n totalValueRange: number;\n /** The width of the databar */\n dataBarWidth: number;\n /** The x coordinates of the markers (the left) */\n markerXs: number[];\n}\nclass DataBarCellRenderer extends CellRenderer {\n private heightOfDigits?: number;\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n return;\n }\n const {\n modelColumns,\n modelRows,\n allRowHeights,\n allRowYs,\n firstColumn,\n fontWidths,\n } = metrics;\n\n const isFirstColumn = column === firstColumn;\n const rowHeight = getOrThrow(allRowHeights, row);\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const rowY = getOrThrow(allRowYs, row);\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const text = model.textForCell(modelColumn, modelRow);\n const { x: textX, width: textWidth } = GridUtils.getTextRenderMetrics(\n state,\n column,\n row\n );\n\n const fontWidth = fontWidths?.get(context.font) ?? DEFAULT_FONT_WIDTH;\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n truncationChar\n );\n\n const {\n columnMin,\n columnMax,\n axis,\n color: dataBarColor,\n valuePlacement,\n opacity,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n\n const hasGradient = Array.isArray(dataBarColor);\n if (columnMin == null || columnMax == null) {\n return;\n }\n\n const {\n maxWidth,\n x: dataBarX,\n y: dataBarY,\n zeroPosition,\n leftmostPosition,\n markerXs,\n totalValueRange,\n dataBarWidth,\n } = this.getDataBarRenderMetrics(context, state, column, row);\n\n if (this.heightOfDigits === undefined) {\n const { actualBoundingBoxAscent, actualBoundingBoxDescent } =\n context.measureText('1234567890');\n this.heightOfDigits = actualBoundingBoxAscent + actualBoundingBoxDescent;\n }\n\n context.save();\n context.textAlign = textAlign;\n if (hasGradient) {\n const color =\n value >= 0 ? dataBarColor[dataBarColor.length - 1] : dataBarColor[0];\n context.fillStyle = color;\n } else {\n context.fillStyle = dataBarColor;\n }\n context.textBaseline = 'top';\n context.font = theme.font;\n\n if (valuePlacement !== 'hide') {\n context.fillText(\n truncatedText,\n textX,\n rowY + (rowHeight - this.heightOfDigits) / 2\n );\n }\n\n // Draw bar\n if (hasGradient) {\n // Draw gradient bar\n\n const dataBarColorsOklab: Oklab[] = dataBarColor.map(color =>\n GridColorUtils.linearSRGBToOklab(GridColorUtils.hexToRgb(color))\n );\n\n context.save();\n\n context.beginPath();\n\n context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight - 2, 1);\n context.clip();\n\n if (value < 0) {\n if (direction === 'LTR') {\n const totalGradientWidth = Math.round(\n (Math.abs(columnMin) / totalValueRange) * maxWidth\n );\n const partGradientWidth =\n totalGradientWidth / (dataBarColor.length - 1);\n let gradientX = Math.round(leftmostPosition);\n for (let i = 0; i < dataBarColor.length - 1; i += 1) {\n const leftColor = dataBarColorsOklab[i];\n const rightColor = dataBarColorsOklab[i + 1];\n this.drawGradient(\n context,\n leftColor,\n rightColor,\n gradientX,\n rowY + 1,\n partGradientWidth,\n rowHeight\n );\n\n gradientX += partGradientWidth;\n }\n } else if (direction === 'RTL') {\n const totalGradientWidth = Math.round(\n maxWidth - (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n const partGradientWidth =\n totalGradientWidth / (dataBarColor.length - 1);\n let gradientX = Math.round(zeroPosition);\n for (let i = dataBarColor.length - 1; i > 0; i -= 1) {\n const leftColor = dataBarColorsOklab[i];\n const rightColor = dataBarColorsOklab[i - 1];\n this.drawGradient(\n context,\n leftColor,\n rightColor,\n gradientX,\n rowY + 1,\n partGradientWidth,\n rowHeight\n );\n\n gradientX += partGradientWidth;\n }\n }\n } else if (direction === 'LTR') {\n // Value is greater than or equal to 0\n const totalGradientWidth =\n Math.round(\n maxWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth\n ) - 1;\n const partGradientWidth =\n totalGradientWidth / (dataBarColor.length - 1);\n let gradientX = Math.round(zeroPosition);\n\n for (let i = 0; i < dataBarColor.length - 1; i += 1) {\n const leftColor = dataBarColorsOklab[i];\n const rightColor = dataBarColorsOklab[i + 1];\n this.drawGradient(\n context,\n leftColor,\n rightColor,\n gradientX,\n rowY + 1,\n partGradientWidth,\n rowHeight - 2\n );\n\n gradientX += partGradientWidth;\n }\n } else if (direction === 'RTL') {\n // Value is greater than or equal to 0\n const totalGradientWidth = Math.round(\n (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n const partGradientWidth =\n totalGradientWidth / (dataBarColor.length - 1);\n let gradientX = Math.round(leftmostPosition);\n\n for (let i = dataBarColor.length - 1; i > 0; i -= 1) {\n const leftColor = dataBarColorsOklab[i];\n const rightColor = dataBarColorsOklab[i - 1];\n this.drawGradient(\n context,\n leftColor,\n rightColor,\n gradientX,\n rowY + 1,\n partGradientWidth,\n rowHeight - 2\n );\n\n gradientX += partGradientWidth;\n }\n }\n\n // restore clip\n context.restore();\n } else {\n // Draw normal bar\n context.save();\n\n context.globalAlpha = opacity;\n context.beginPath();\n context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight - 2, 1);\n context.fill();\n\n context.restore();\n }\n\n // Draw markers\n if (maxWidth > 0) {\n markerXs.forEach((markerX, index) => {\n context.fillStyle = markers[index].color;\n context.fillRect(markerX, dataBarY, 1, rowHeight - 2);\n });\n }\n\n const shouldRenderDashedLine = !(\n axis === 'directional' &&\n ((valuePlacement === 'beside' &&\n textAlign === 'right' &&\n direction === 'LTR') ||\n (valuePlacement === 'beside' &&\n textAlign === 'left' &&\n direction === 'RTL') ||\n valuePlacement !== 'beside')\n );\n\n // Draw dashed line\n if (shouldRenderDashedLine) {\n context.strokeStyle = theme.zeroLineColor;\n context.beginPath();\n context.setLineDash([2, 1]);\n context.moveTo(zeroPosition, rowY);\n context.lineTo(zeroPosition, rowY + rowHeight);\n context.stroke();\n }\n\n context.restore();\n\n // Draw tree marker\n if (\n isFirstColumn &&\n isExpandableGridModel(model) &&\n model.hasExpandableRows\n ) {\n this.drawCellRowTreeMarker(context, state, row);\n }\n }\n\n getDataBarRenderMetrics(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): DataBarRenderMetrics {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n throw new Error('Grid model is not a data bar grid model');\n }\n const {\n firstColumn,\n allColumnXs,\n allColumnWidths,\n allRowYs,\n modelColumns,\n modelRows,\n visibleRows,\n } = metrics;\n const { cellHorizontalPadding, treeDepthIndent, treeHorizontalPadding } =\n theme;\n\n const modelColumn = getOrThrow(modelColumns, column);\n const modelRow = getOrThrow(modelRows, row);\n const x = getOrThrow(allColumnXs, column);\n const y = getOrThrow(allRowYs, row);\n const columnWidth = getOrThrow(allColumnWidths, column);\n const isFirstColumn = column === firstColumn;\n let treeIndent = 0;\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n isFirstColumn\n ) {\n treeIndent =\n treeDepthIndent * (model.depthForRow(row) + 1) + treeHorizontalPadding;\n }\n\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const {\n columnMin,\n columnMax,\n axis,\n valuePlacement,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n const longestValueWidth = this.getCachedWidestValueForColumn(\n context,\n visibleRows,\n modelRows,\n model,\n modelColumn\n );\n\n const leftPadding = 2;\n const rightPadding =\n valuePlacement === 'beside' && textAlign === 'right' ? 2 : 1;\n\n // The value of the total range (e.g. max - column)\n let totalValueRange = columnMax - columnMin;\n // If min and max are both positive or min and max are equal, the max length is columnMax\n if ((columnMax >= 0 && columnMin >= 0) || columnMin === columnMax) {\n totalValueRange = columnMax;\n } else if (columnMax <= 0 && columnMin <= 0) {\n // If min and max are both negative, the max length is the absolute value of columnMin\n totalValueRange = Math.abs(columnMin);\n }\n\n let maxWidth = columnWidth - treeIndent - rightPadding - leftPadding;\n if (valuePlacement === 'beside') {\n maxWidth = maxWidth - cellHorizontalPadding - longestValueWidth;\n }\n\n if (maxWidth < 0) {\n maxWidth = 0;\n }\n\n const columnLongest = Math.max(Math.abs(columnMin), Math.abs(columnMax));\n // If axis is proportional, totalValueRange is proportional to maxWidth\n let dataBarWidth = (Math.abs(value) / totalValueRange) * maxWidth;\n\n if (maxWidth === 0) {\n dataBarWidth = 0;\n } else if (axis === 'middle') {\n // The longest bar is proportional to half of the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * (maxWidth / 2);\n } else if (axis === 'directional') {\n // The longest bar is proportional to the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * maxWidth;\n }\n\n // Default: proportional, beside, LTR, right text align\n // All positions are assuming the left side is 0 and the right side is maxWidth\n let zeroPosition =\n columnMin >= 0 ? 0 : (Math.abs(columnMin) / totalValueRange) * maxWidth;\n let dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / totalValueRange) * maxWidth;\n let markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n const offset = (Math.abs(markerValue) / totalValueRange) * maxWidth;\n return markerValue >= 0 ? zeroPosition + offset : zeroPosition - offset;\n });\n let leftmostPosition =\n valuePlacement === 'beside' && textAlign === 'left'\n ? cellHorizontalPadding + longestValueWidth + leftPadding\n : leftPadding;\n let rightmostPosition =\n valuePlacement === 'beside' && textAlign === 'right'\n ? columnWidth - cellHorizontalPadding - longestValueWidth - rightPadding\n : rightPadding;\n\n // Proportional, RTL\n if (direction === 'RTL') {\n zeroPosition =\n columnMin >= 0\n ? columnWidth\n : columnWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth;\n dataBarX =\n value >= 0\n ? zeroPosition - (value / totalValueRange) * maxWidth\n : zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n return markerValue >= 0\n ? zeroPosition - (Math.abs(markerValue) / totalValueRange) * maxWidth\n : zeroPosition + (Math.abs(markerValue) / totalValueRange) * maxWidth;\n });\n }\n\n if (axis === 'middle') {\n zeroPosition = maxWidth / 2;\n if (direction === 'LTR') {\n // Middle, LTR\n dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue >= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n } else if (direction === 'RTL') {\n // Middle, RTL\n dataBarX =\n value <= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue <= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n }\n } else if (axis === 'directional') {\n if (direction === 'LTR') {\n // Directional, LTR\n zeroPosition = 0;\n dataBarX = zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition + (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n } else if (direction === 'RTL') {\n // Directional, RTL\n zeroPosition = columnWidth;\n dataBarX = zeroPosition - (Math.abs(value) / columnLongest) * maxWidth;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition - (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n }\n }\n\n // Offset all values by the actual x value and padding\n if (direction === 'LTR') {\n zeroPosition += x + leftPadding + treeIndent;\n dataBarX += x + leftPadding + treeIndent;\n markerXs = markerXs.map(\n markerX => markerX + x + leftPadding + treeIndent\n );\n\n if (valuePlacement === 'beside' && textAlign === 'left') {\n zeroPosition += longestValueWidth + cellHorizontalPadding;\n dataBarX += longestValueWidth + cellHorizontalPadding;\n markerXs = markerXs.map(\n markerX => markerX + longestValueWidth + cellHorizontalPadding\n );\n }\n } else if (direction === 'RTL') {\n zeroPosition = zeroPosition + x - rightPadding;\n dataBarX = dataBarX + x - rightPadding;\n markerXs = markerXs.map(markerX => markerX + x - rightPadding);\n\n if (valuePlacement === 'beside' && textAlign === 'right') {\n zeroPosition = zeroPosition - cellHorizontalPadding - longestValueWidth;\n dataBarX = dataBarX - cellHorizontalPadding - longestValueWidth;\n markerXs = markerXs.map(\n markerX => markerX - cellHorizontalPadding - longestValueWidth\n );\n }\n }\n\n leftmostPosition += x + treeIndent;\n rightmostPosition += x;\n\n return {\n maxWidth,\n x: dataBarX,\n y: y + 1.5,\n zeroPosition,\n leftmostPosition,\n rightmostPosition,\n totalValueRange,\n dataBarWidth,\n markerXs,\n };\n }\n\n drawGradient(\n context: CanvasRenderingContext2D,\n leftColor: Oklab,\n rightColor: Oklab,\n x: number,\n y: number,\n width: number,\n height: number\n ): void {\n let currentColor = leftColor;\n // Increase by 0.5 because half-pixel will render weird on different zooms\n for (let currentX = x; currentX <= x + width; currentX += 0.5) {\n this.drawGradientPart(\n context,\n currentX,\n y,\n 1,\n height,\n GridColorUtils.rgbToHex(GridColorUtils.OklabToLinearSRGB(currentColor))\n );\n\n currentColor = GridColorUtils.lerpColor(\n leftColor,\n rightColor,\n (currentX - x) / width\n );\n }\n }\n\n drawGradientPart(\n context: CanvasRenderingContext2D,\n x: number,\n y: number,\n width: number,\n height: number,\n color: string\n ): void {\n context.fillStyle = color;\n context.fillRect(x, y, width, height);\n }\n\n /**\n * Returns the width of the widest value in pixels\n */\n getCachedWidestValueForColumn = memoizeClear(\n (\n context: CanvasRenderingContext2D,\n visibleRows: readonly VisibleIndex[],\n modelRows: VisibleToModelMap,\n model: GridModel,\n column: ModelIndex\n ): number => {\n let widestValue = 0;\n for (let i = 0; i < visibleRows.length; i += 1) {\n const row = visibleRows[i];\n const modelRow = getOrThrow(modelRows, row);\n const text = model.textForCell(column, modelRow);\n widestValue = Math.max(widestValue, context.measureText(text).width);\n }\n\n return widestValue;\n },\n { max: 1000 }\n );\n}\n\nexport default DataBarCellRenderer;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DataBarCellRenderer.js","names":["getOrThrow","CellRenderer","isExpandableGridModel","isDataBarGridModel","GridColorUtils","GridUtils","memoizeClear","DEFAULT_FONT_WIDTH","DataBarCellRenderer","constructor","arguments","_defineProperty","context","text","measureText","width","max","visibleRows","modelRows","model","column","widestValue","i","length","row","modelRow","textForCell","Math","getCachedWidth","drawCellContent","state","_fontWidths$get","metrics","theme","modelColumns","allRowHeights","allRowYs","firstColumn","fontWidths","isFirstColumn","rowHeight","modelColumn","rowY","textAlign","textAlignForCell","x","textX","y","textY","textWidth","getTextRenderMetrics","fontWidth","get","font","truncationChar","truncationCharForCell","truncatedText","getCachedTruncatedString","columnMin","columnMax","axis","color","dataBarColor","valuePlacement","opacity","markers","direction","value","dataBarOptionsForCell","hasGradient","Array","isArray","maxWidth","dataBarX","dataBarY","zeroPosition","leftmostPosition","markerXs","totalValueRange","dataBarWidth","getDataBarRenderMetrics","save","fillStyle","textBaseline","fillText","hasRowDividers","gridRowColor","yOffset","beginPath","roundRect","clip","globalAlpha","gradientWidth","gradientX","round","abs","translate","scale","gradient","getGradient","fillRect","restore","fill","forEach","markerX","index","shouldRenderDashedLine","strokeStyle","zeroLineColor","setLineDash","moveTo","lineTo","stroke","hasExpandableRows","drawCellRowTreeMarker","Error","allColumnXs","allColumnWidths","cellHorizontalPadding","treeDepthIndent","treeHorizontalPadding","columnWidth","treeIndent","depthForRow","longestValueWidth","getCachedWidestValueForColumn","leftPadding","rightPadding","columnLongest","map","marker","markerValue","offset","rightmostPosition","colors","canvas","document","createElement","ctx","getContext","Number","isNaN","createLinearGradient","oklabColors","linearSRGBToOklab","hexToRgb","colorStop","colorChangeInterval","leftColorIndex","floor","lerpColor","addColorStop","rgbToHex","OklabToLinearSRGB","primitive"],"sources":["../src/DataBarCellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { getOrThrow } from '@deephaven/utils';\nimport CellRenderer from './CellRenderer';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport { isDataBarGridModel } from './DataBarGridModel';\nimport { ModelIndex, VisibleIndex, VisibleToModelMap } from './GridMetrics';\nimport GridColorUtils from './GridColorUtils';\nimport GridUtils from './GridUtils';\nimport memoizeClear from './memoizeClear';\nimport { DEFAULT_FONT_WIDTH, GridRenderState } from './GridRendererTypes';\nimport GridModel from './GridModel';\n\ninterface DataBarRenderMetrics {\n /** The total width the entire bar from the min to max value can take up (rightmostPosition - leftmostPosition) */\n maxWidth: number;\n /** The x coordinate of the bar (the left) */\n x: number;\n /** The y coordinate of the bar (the top) */\n y: number;\n /** The position of the zero line */\n zeroPosition: number;\n /** The position of the leftmost point */\n leftmostPosition: number;\n /** The position of the rightmost point */\n rightmostPosition: number;\n /** The range of values (e.g. max of 100 and min of -50 means range of 150) */\n totalValueRange: number;\n /** The width of the databar */\n dataBarWidth: number;\n /** The x coordinates of the markers (the left) */\n markerXs: number[];\n}\nclass DataBarCellRenderer extends CellRenderer {\n static getGradient = memoizeClear(\n (width: number, colors: string[]): CanvasGradient => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (ctx == null) {\n throw new Error('Failed to create canvas context');\n }\n if (Number.isNaN(width)) {\n return ctx.createLinearGradient(0, 0, 0, 0);\n }\n const gradient = ctx.createLinearGradient(0, 0, width, 0);\n const oklabColors = colors.map(color =>\n GridColorUtils.linearSRGBToOklab(GridColorUtils.hexToRgb(color))\n );\n for (let i = 0; i < width; i += 1) {\n const colorStop = i / width;\n const colorChangeInterval = 1 / (colors.length - 1);\n const leftColorIndex = Math.floor(colorStop / colorChangeInterval);\n const color = GridColorUtils.lerpColor(\n oklabColors[leftColorIndex],\n oklabColors[leftColorIndex + 1],\n (colorStop % colorChangeInterval) / colorChangeInterval\n );\n gradient.addColorStop(\n i / width,\n GridColorUtils.rgbToHex(GridColorUtils.OklabToLinearSRGB(color))\n );\n }\n return gradient;\n },\n {\n max: 1000,\n primitive: true, // Stringify the arguments for memoization. Lets the color arrays be different arrays in memory, but still cache hit\n }\n );\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n return;\n }\n const {\n modelColumns,\n modelRows,\n allRowHeights,\n allRowYs,\n firstColumn,\n fontWidths,\n } = metrics;\n\n const isFirstColumn = column === firstColumn;\n const rowHeight = getOrThrow(allRowHeights, row);\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const rowY = getOrThrow(allRowYs, row);\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const text = model.textForCell(modelColumn, modelRow);\n const {\n x: textX,\n y: textY,\n width: textWidth,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const fontWidth = fontWidths?.get(context.font) ?? DEFAULT_FONT_WIDTH;\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n truncationChar\n );\n\n const {\n columnMin,\n columnMax,\n axis,\n color: dataBarColor,\n valuePlacement,\n opacity,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n\n const hasGradient = Array.isArray(dataBarColor) && dataBarColor.length > 1;\n if (columnMin == null || columnMax == null) {\n return;\n }\n\n const {\n maxWidth,\n x: dataBarX,\n y: dataBarY,\n zeroPosition,\n leftmostPosition,\n markerXs,\n totalValueRange,\n dataBarWidth,\n } = this.getDataBarRenderMetrics(context, state, column, row);\n\n context.save();\n context.textAlign = textAlign;\n if (hasGradient) {\n const color =\n value >= 0 ? dataBarColor[dataBarColor.length - 1] : dataBarColor[0];\n context.fillStyle = color;\n } else {\n context.fillStyle = Array.isArray(dataBarColor)\n ? dataBarColor[0]\n : dataBarColor;\n }\n context.textBaseline = 'middle';\n context.font = theme.font;\n\n if (valuePlacement !== 'hide') {\n context.fillText(truncatedText, textX, textY);\n }\n\n const hasRowDividers = theme.gridRowColor != null;\n const yOffset = hasRowDividers ? 2 : 1;\n\n context.save();\n context.beginPath();\n context.roundRect(\n dataBarX,\n rowY + yOffset, // yOffset includes 1px for top padding\n dataBarWidth,\n rowHeight - 1 - yOffset, // 1px for bottom padding\n 1\n );\n context.clip();\n context.globalAlpha = opacity;\n\n // Draw bar\n if (hasGradient) {\n // Draw gradient bar\n\n let gradientWidth = 0;\n let gradientX = 0;\n context.save();\n\n // Translate the context so its origin is at the start of the gradient\n // and increasing x value moves towards the end of the gradient.\n // For RTL, scale x by -1 to flip across the x-axis\n if (value < 0) {\n if (direction === 'LTR') {\n gradientWidth = Math.round(\n (Math.abs(columnMin) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(leftmostPosition);\n context.translate(gradientX, 0);\n } else if (direction === 'RTL') {\n gradientWidth = Math.round(\n maxWidth - (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(zeroPosition);\n context.translate(gradientX + gradientWidth, 0);\n context.scale(-1, 1);\n }\n } else if (direction === 'LTR') {\n // Value is greater than or equal to 0\n gradientWidth =\n Math.round(\n maxWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth\n ) - 1;\n gradientX = Math.round(zeroPosition);\n context.translate(gradientX, 0);\n } else if (direction === 'RTL') {\n // Value is greater than or equal to 0\n gradientWidth = Math.round(\n (Math.abs(columnMax) / totalValueRange) * maxWidth\n );\n gradientX = Math.round(leftmostPosition);\n context.translate(gradientX + gradientWidth, 0);\n context.scale(-1, 1);\n }\n\n const gradient = DataBarCellRenderer.getGradient(\n gradientWidth,\n dataBarColor\n );\n context.fillStyle = gradient;\n context.fillRect(0, dataBarY, gradientWidth, rowHeight);\n context.restore(); // Restore gradient translate/scale\n } else {\n // Draw normal bar\n context.beginPath();\n context.roundRect(dataBarX, dataBarY, dataBarWidth, rowHeight, 1);\n context.fill();\n }\n\n // Draw markers\n if (maxWidth > 0) {\n markerXs.forEach((markerX, index) => {\n context.fillStyle = markers[index].color;\n context.fillRect(markerX, dataBarY, 1, rowHeight);\n });\n }\n\n // restore clip\n context.restore();\n\n const shouldRenderDashedLine = !(\n axis === 'directional' &&\n ((valuePlacement === 'beside' &&\n textAlign === 'right' &&\n direction === 'LTR') ||\n (valuePlacement === 'beside' &&\n textAlign === 'left' &&\n direction === 'RTL') ||\n valuePlacement !== 'beside')\n );\n\n // Draw dashed line\n if (shouldRenderDashedLine) {\n context.strokeStyle = theme.zeroLineColor;\n context.beginPath();\n context.setLineDash([2, 1]);\n context.moveTo(zeroPosition, rowY);\n context.lineTo(zeroPosition, rowY + rowHeight);\n context.stroke();\n }\n\n context.restore();\n\n // Draw tree marker\n if (\n isFirstColumn &&\n isExpandableGridModel(model) &&\n model.hasExpandableRows\n ) {\n this.drawCellRowTreeMarker(context, state, row);\n }\n }\n\n getDataBarRenderMetrics(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): DataBarRenderMetrics {\n const { metrics, model, theme } = state;\n if (!isDataBarGridModel(model)) {\n throw new Error('Grid model is not a data bar grid model');\n }\n const {\n firstColumn,\n allColumnXs,\n allColumnWidths,\n allRowYs,\n modelColumns,\n modelRows,\n visibleRows,\n } = metrics;\n const { cellHorizontalPadding, treeDepthIndent, treeHorizontalPadding } =\n theme;\n\n const modelColumn = getOrThrow(modelColumns, column);\n const modelRow = getOrThrow(modelRows, row);\n const x = getOrThrow(allColumnXs, column);\n const y = getOrThrow(allRowYs, row);\n const columnWidth = getOrThrow(allColumnWidths, column);\n const isFirstColumn = column === firstColumn;\n let treeIndent = 0;\n if (\n isExpandableGridModel(model) &&\n model.hasExpandableRows &&\n isFirstColumn\n ) {\n treeIndent =\n treeDepthIndent * (model.depthForRow(row) + 1) + treeHorizontalPadding;\n }\n\n const textAlign = model.textAlignForCell(modelColumn, modelRow);\n const {\n columnMin,\n columnMax,\n axis,\n valuePlacement,\n markers,\n direction,\n value,\n } = model.dataBarOptionsForCell(modelColumn, modelRow, theme);\n const longestValueWidth = this.getCachedWidestValueForColumn(\n context,\n visibleRows,\n modelRows,\n model,\n modelColumn\n );\n\n const leftPadding = 2;\n const rightPadding =\n valuePlacement === 'beside' && textAlign === 'right' ? 2 : 1;\n\n // The value of the total range (e.g. max - column)\n let totalValueRange = columnMax - columnMin;\n // If min and max are both positive or min and max are equal, the max length is columnMax\n if ((columnMax >= 0 && columnMin >= 0) || columnMin === columnMax) {\n totalValueRange = columnMax;\n } else if (columnMax <= 0 && columnMin <= 0) {\n // If min and max are both negative, the max length is the absolute value of columnMin\n totalValueRange = Math.abs(columnMin);\n }\n\n let maxWidth = columnWidth - treeIndent - rightPadding - leftPadding;\n if (valuePlacement === 'beside') {\n maxWidth = maxWidth - cellHorizontalPadding - longestValueWidth;\n }\n\n if (maxWidth < 0) {\n maxWidth = 0;\n }\n\n const columnLongest = Math.max(Math.abs(columnMin), Math.abs(columnMax));\n // If axis is proportional, totalValueRange is proportional to maxWidth\n let dataBarWidth = (Math.abs(value) / totalValueRange) * maxWidth;\n\n if (maxWidth === 0) {\n dataBarWidth = 0;\n } else if (axis === 'middle') {\n // The longest bar is proportional to half of the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * (maxWidth / 2);\n } else if (axis === 'directional') {\n // The longest bar is proportional to the maxWidth\n dataBarWidth = (Math.abs(value) / columnLongest) * maxWidth;\n }\n\n // Default: proportional, beside, LTR, right text align\n // All positions are assuming the left side is 0 and the right side is maxWidth\n let zeroPosition =\n columnMin >= 0 ? 0 : (Math.abs(columnMin) / totalValueRange) * maxWidth;\n let dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / totalValueRange) * maxWidth;\n let markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n const offset = (Math.abs(markerValue) / totalValueRange) * maxWidth;\n return markerValue >= 0 ? zeroPosition + offset : zeroPosition - offset;\n });\n let leftmostPosition =\n valuePlacement === 'beside' && textAlign === 'left'\n ? cellHorizontalPadding + longestValueWidth + leftPadding\n : leftPadding;\n let rightmostPosition =\n valuePlacement === 'beside' && textAlign === 'right'\n ? columnWidth - cellHorizontalPadding - longestValueWidth - rightPadding\n : rightPadding;\n\n // Proportional, RTL\n if (direction === 'RTL') {\n zeroPosition =\n columnMin >= 0\n ? columnWidth\n : columnWidth - (Math.abs(columnMin) / totalValueRange) * maxWidth;\n dataBarX =\n value >= 0\n ? zeroPosition - (value / totalValueRange) * maxWidth\n : zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n return markerValue >= 0\n ? zeroPosition - (Math.abs(markerValue) / totalValueRange) * maxWidth\n : zeroPosition + (Math.abs(markerValue) / totalValueRange) * maxWidth;\n });\n }\n\n if (axis === 'middle') {\n zeroPosition = maxWidth / 2;\n if (direction === 'LTR') {\n // Middle, LTR\n dataBarX =\n value >= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue >= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n } else if (direction === 'RTL') {\n // Middle, RTL\n dataBarX =\n value <= 0\n ? zeroPosition\n : zeroPosition - (Math.abs(value) / columnLongest) * (maxWidth / 2);\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return markerValue <= 0\n ? zeroPosition +\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2)\n : zeroPosition -\n (Math.abs(markerValue) / columnLongest) * (maxWidth / 2);\n });\n }\n } else if (axis === 'directional') {\n if (direction === 'LTR') {\n // Directional, LTR\n zeroPosition = 0;\n dataBarX = zeroPosition;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition + (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n } else if (direction === 'RTL') {\n // Directional, RTL\n zeroPosition = columnWidth;\n dataBarX = zeroPosition - (Math.abs(value) / columnLongest) * maxWidth;\n markerXs = markers.map(marker => {\n const { value: markerValue } = marker;\n\n return (\n zeroPosition - (Math.abs(markerValue) / columnLongest) * maxWidth\n );\n });\n }\n }\n\n // Offset all values by the actual x value and padding\n if (direction === 'LTR') {\n zeroPosition += x + leftPadding + treeIndent;\n dataBarX += x + leftPadding + treeIndent;\n markerXs = markerXs.map(\n markerX => markerX + x + leftPadding + treeIndent\n );\n\n if (valuePlacement === 'beside' && textAlign === 'left') {\n zeroPosition += longestValueWidth + cellHorizontalPadding;\n dataBarX += longestValueWidth + cellHorizontalPadding;\n markerXs = markerXs.map(\n markerX => markerX + longestValueWidth + cellHorizontalPadding\n );\n }\n } else if (direction === 'RTL') {\n zeroPosition = zeroPosition + x - rightPadding;\n dataBarX = dataBarX + x - rightPadding;\n markerXs = markerXs.map(markerX => markerX + x - rightPadding);\n\n if (valuePlacement === 'beside' && textAlign === 'right') {\n zeroPosition = zeroPosition - cellHorizontalPadding - longestValueWidth;\n dataBarX = dataBarX - cellHorizontalPadding - longestValueWidth;\n markerXs = markerXs.map(\n markerX => markerX - cellHorizontalPadding - longestValueWidth\n );\n }\n }\n\n leftmostPosition += x + treeIndent;\n rightmostPosition += x;\n\n return {\n maxWidth,\n x: dataBarX,\n y,\n zeroPosition,\n leftmostPosition,\n rightmostPosition,\n totalValueRange,\n dataBarWidth,\n markerXs,\n };\n }\n\n getCachedWidth = memoizeClear(\n (context: CanvasRenderingContext2D, text: string): number =>\n context.measureText(text).width,\n { max: 10000 }\n );\n\n /**\n * Returns the width of the widest value in pixels\n */\n getCachedWidestValueForColumn = memoizeClear(\n (\n context: CanvasRenderingContext2D,\n visibleRows: readonly VisibleIndex[],\n modelRows: VisibleToModelMap,\n model: GridModel,\n column: ModelIndex\n ): number => {\n let widestValue = 0;\n for (let i = 0; i < visibleRows.length; i += 1) {\n const row = visibleRows[i];\n const modelRow = getOrThrow(modelRows, row);\n const text = model.textForCell(column, modelRow);\n widestValue = Math.max(widestValue, this.getCachedWidth(context, text));\n }\n\n return widestValue;\n },\n { max: 1000 }\n );\n}\n\nexport default DataBarCellRenderer;\n"],"mappings":"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"}
|
@@ -461,6 +461,11 @@ export declare class GridMetricCalculator {
|
|
461
461
|
* @param column The column model index to reset
|
462
462
|
*/
|
463
463
|
resetColumnWidth(column: ModelIndex): void;
|
464
|
+
/**
|
465
|
+
* Resets all the calculated column widths
|
466
|
+
* Useful if the theme minimum column width changes
|
467
|
+
*/
|
468
|
+
resetCalculatedColumnWidths(): void;
|
464
469
|
/**
|
465
470
|
* Sets the width for the specified row
|
466
471
|
* @param row The row model index to set
|
@@ -472,6 +477,11 @@ export declare class GridMetricCalculator {
|
|
472
477
|
* @param row The row model index to reset
|
473
478
|
*/
|
474
479
|
resetRowHeight(row: ModelIndex): void;
|
480
|
+
/**
|
481
|
+
* Resets all the calculated row heights
|
482
|
+
* Useful if the theme row height changes
|
483
|
+
*/
|
484
|
+
resetCalculatedRowHeights(): void;
|
475
485
|
}
|
476
486
|
export default GridMetricCalculator;
|
477
487
|
//# sourceMappingURL=GridMetricCalculator.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"GridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/GridMetricCalculator.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"GridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/GridMetricCalculator.ts"],"names":[],"mappings":"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"}
|
@@ -1462,6 +1462,14 @@ export class GridMetricCalculator {
|
|
1462
1462
|
this.userColumnWidths = userColumnWidths;
|
1463
1463
|
}
|
1464
1464
|
|
1465
|
+
/**
|
1466
|
+
* Resets all the calculated column widths
|
1467
|
+
* Useful if the theme minimum column width changes
|
1468
|
+
*/
|
1469
|
+
resetCalculatedColumnWidths() {
|
1470
|
+
this.calculatedColumnWidths = new Map();
|
1471
|
+
}
|
1472
|
+
|
1465
1473
|
/**
|
1466
1474
|
* Sets the width for the specified row
|
1467
1475
|
* @param row The row model index to set
|
@@ -1486,6 +1494,14 @@ export class GridMetricCalculator {
|
|
1486
1494
|
this.userRowHeights = userRowHeights;
|
1487
1495
|
this.calculatedRowHeights.delete(row);
|
1488
1496
|
}
|
1497
|
+
|
1498
|
+
/**
|
1499
|
+
* Resets all the calculated row heights
|
1500
|
+
* Useful if the theme row height changes
|
1501
|
+
*/
|
1502
|
+
resetCalculatedRowHeights() {
|
1503
|
+
this.calculatedRowHeights = new Map();
|
1504
|
+
}
|
1489
1505
|
}
|
1490
1506
|
_defineProperty(GridMetricCalculator, "CACHE_SIZE", 10000);
|
1491
1507
|
_defineProperty(GridMetricCalculator, "MAX_COLUMN_WIDTH", 0.8);
|