@svgrid/grid 3.0.2 → 3.0.4
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/README.md +2 -1
- package/dist/GridMenus.svelte +44 -2
- package/dist/SvChartMenu.svelte +69 -0
- package/dist/SvChartMenu.svelte.d.ts +11 -0
- package/dist/SvChartPanes.svelte +113 -0
- package/dist/SvChartPanes.svelte.d.ts +20 -0
- package/dist/SvGrid.controller.svelte.d.ts +110 -39
- package/dist/SvGrid.controller.svelte.js +655 -200
- package/dist/SvGrid.css +105 -2
- package/dist/SvGrid.svelte +386 -514
- package/dist/SvGrid.types.d.ts +210 -9
- package/dist/SvGridCellEditor.svelte +17 -0
- package/dist/SvGridChart.svelte +2257 -329
- package/dist/SvGridChart.svelte.d.ts +6 -106
- package/dist/SvGridChart.types.d.ts +338 -0
- package/dist/SvGridChart.types.js +1 -0
- package/dist/SvGridChartBuilder.svelte +323 -0
- package/dist/SvGridChartBuilder.svelte.d.ts +34 -0
- package/dist/SvGridChartPanel.svelte +221 -275
- package/dist/SvGridChartPickers.svelte +417 -0
- package/dist/SvGridChartPickers.svelte.d.ts +70 -0
- package/dist/SvGridChartView.svelte +13 -14
- package/dist/SvModal.svelte +7 -1
- package/dist/SvModal.svelte.d.ts +5 -0
- package/dist/ai.d.ts +40 -8
- package/dist/ai.js +135 -24
- package/dist/aria.d.ts +11 -0
- package/dist/build-api.js +108 -22
- package/dist/cdn/GridMenus-7kbpnnBW.js +635 -0
- package/dist/cdn/GridMenus-BL7ZgQvU.js +636 -0
- package/dist/cdn/SvChartMenu-Bl6PBbkT.js +58 -0
- package/dist/cdn/SvChartMenu-FBSMINA6.js +59 -0
- package/dist/cdn/{SvDateRangeInput-DMLKmGEc.js → SvDateRangeInput-BeU_TkbQ.js} +15 -14
- package/dist/cdn/{SvDateRangeInput-CaOuMs8O.js → SvDateRangeInput-yX8vzleW.js} +38 -37
- package/dist/cdn/{SvDateTimePicker-sonaH0oh.js → SvDateTimePicker-DQwt4UAs.js} +139 -180
- package/dist/cdn/SvDateTimePicker-vNU6bZ-q.js +775 -0
- package/dist/cdn/{SvGridCellEditor-CjEJMJKc.js → SvGridCellEditor-B1p-vCK5.js} +188 -178
- package/dist/cdn/{SvGridCellEditor-BWnTi2N7.js → SvGridCellEditor-D_0q4xAu.js} +98 -88
- package/dist/cdn/SvGridChart-C3EWAZaM.js +3574 -0
- package/dist/cdn/SvGridChart-DzLkSwCH.js +3572 -0
- package/dist/cdn/SvGridChartBuilder-BE2T1ykB.js +783 -0
- package/dist/cdn/SvGridChartBuilder-CfII62sZ.js +784 -0
- package/dist/cdn/SvGridChartPanel-CCX5_Wgd.js +675 -0
- package/dist/cdn/SvGridChartPanel-xf4sWVTo.js +699 -0
- package/dist/cdn/SvGridChartView-CfuXmY5I.js +48 -0
- package/dist/cdn/SvGridChartView-DYwabQWj.js +47 -0
- package/dist/cdn/SvMenuList-CLN8OuIK.js +452 -0
- package/dist/cdn/SvMenuList-DkGhNKjf.js +451 -0
- package/dist/cdn/SvModal-BAE-pjZX.js +396 -0
- package/dist/cdn/SvModal-CIZWCcad.js +397 -0
- package/dist/cdn/chart-Dz7SqMXH.js +4341 -0
- package/dist/cdn/chart-export-BXqueeWJ.js +135 -0
- package/dist/cdn/chart-export-pdf-DONFUnNY.js +110 -0
- package/dist/cdn/chart-panel-messages-CUbf2R4i.js +1052 -0
- package/dist/cdn/chart-panel-messages-CmNrMdsr.js +1053 -0
- package/dist/cdn/chart-summary-BJW_tg_X.js +138 -0
- package/dist/cdn/chart-trend-CaN9mDEV.js +50 -0
- package/dist/cdn/chart-validate-HcOVFAfJ.js +188 -0
- package/dist/cdn/{column-resize-DsfNXMom.js → column-resize-DpmOLfRp.js} +3 -3
- package/dist/cdn/{date-format-BnnHlqGw.js → date-format-CtquV-p3.js} +583 -603
- package/dist/cdn/{date-format-BNii4zeD.js → date-format-D6KFzU_W.js} +347 -367
- package/dist/cdn/dismissable-DAHetSNk.js +44 -0
- package/dist/cdn/editor-contract-LXgQJAgd.js +22 -0
- package/dist/cdn/focus-trap-BBOQYBma.js +65 -0
- package/dist/cdn/{row-resize-BRcimkUT.js → row-resize-niQCp040.js} +44 -36
- package/dist/cdn/{src-DNbz94Ct.js → src-BKhZ6eXd.js} +10227 -9787
- package/dist/cdn/{src-BJ2opd0j.js → src-V1uu8iE9.js} +6568 -6128
- package/dist/cdn/svgrid.js +26 -15
- package/dist/cdn/svgrid.svelte-external.js +26 -15
- package/dist/chart-axes.d.ts +53 -0
- package/dist/chart-axes.js +351 -0
- package/dist/chart-cartesian.d.ts +88 -0
- package/dist/chart-cartesian.js +1862 -0
- package/dist/chart-decimate.d.ts +51 -0
- package/dist/chart-decimate.js +199 -0
- package/dist/chart-export-pdf.d.ts +47 -0
- package/dist/chart-export-pdf.js +187 -0
- package/dist/chart-export.d.ts +2 -1
- package/dist/chart-export.js +18 -3
- package/dist/chart-financial.d.ts +91 -0
- package/dist/chart-financial.js +175 -0
- package/dist/chart-flow.d.ts +10 -0
- package/dist/chart-flow.js +298 -0
- package/dist/chart-format.d.ts +18 -0
- package/dist/chart-format.js +65 -0
- package/dist/chart-grid.d.ts +8 -0
- package/dist/chart-grid.js +190 -0
- package/dist/chart-hierarchy.d.ts +17 -0
- package/dist/chart-hierarchy.js +146 -0
- package/dist/chart-indicators.d.ts +115 -0
- package/dist/chart-indicators.js +389 -0
- package/dist/chart-messages.d.ts +95 -0
- package/dist/chart-messages.js +92 -0
- package/dist/chart-motion.d.ts +16 -0
- package/dist/chart-motion.js +141 -0
- package/dist/chart-panel-messages.d.ts +265 -0
- package/dist/chart-panel-messages.js +285 -0
- package/dist/chart-pivot.d.ts +87 -0
- package/dist/chart-pivot.js +156 -0
- package/dist/chart-polar.d.ts +25 -0
- package/dist/chart-polar.js +700 -0
- package/dist/chart-samples.d.ts +16 -0
- package/dist/chart-samples.js +153 -0
- package/dist/chart-scale.d.ts +113 -0
- package/dist/chart-scale.js +405 -0
- package/dist/chart-stats.d.ts +111 -0
- package/dist/chart-stats.js +419 -0
- package/dist/chart-stream.d.ts +45 -0
- package/dist/chart-stream.js +91 -0
- package/dist/chart-summary.d.ts +27 -0
- package/dist/chart-summary.js +205 -0
- package/dist/chart-sync.svelte.d.ts +32 -0
- package/dist/chart-sync.svelte.js +23 -0
- package/dist/chart-table.d.ts +35 -0
- package/dist/chart-table.js +165 -0
- package/dist/chart-trend.d.ts +19 -0
- package/dist/chart-trend.js +61 -0
- package/dist/chart-types.d.ts +1456 -0
- package/dist/chart-types.js +6 -0
- package/dist/chart-validate.d.ts +43 -0
- package/dist/chart-validate.js +272 -0
- package/dist/chart-zoom.d.ts +40 -0
- package/dist/chart-zoom.js +145 -0
- package/dist/chart.d.ts +186 -865
- package/dist/chart.js +460 -2204
- package/dist/clipboard.d.ts +1 -0
- package/dist/clipboard.js +137 -18
- package/dist/column-resize.d.ts +3 -0
- package/dist/column-resize.js +4 -1
- package/dist/columns.js +3 -0
- package/dist/command-context.d.ts +19 -0
- package/dist/command-context.js +116 -0
- package/dist/core.d.ts +7 -0
- package/dist/createPopoverSelect.svelte.d.ts +2 -2
- package/dist/editing.d.ts +2 -8
- package/dist/editing.js +262 -33
- package/dist/fill-patterns.d.ts +0 -5
- package/dist/fill-patterns.js +56 -2
- package/dist/grid-messages.d.ts +10 -3
- package/dist/grid-messages.js +5 -0
- package/dist/history.d.ts +83 -0
- package/dist/history.js +133 -0
- package/dist/index.d.ts +24 -6
- package/dist/index.js +20 -2
- package/dist/keyboard-handlers.js +88 -31
- package/dist/keyboard.d.ts +55 -0
- package/dist/keyboard.js +132 -0
- package/dist/menus.d.ts +3 -1
- package/dist/menus.js +7 -2
- package/dist/merges.d.ts +97 -0
- package/dist/merges.js +147 -0
- package/dist/row-resize.d.ts +3 -0
- package/dist/row-resize.js +14 -0
- package/dist/scroll-sync.d.ts +1 -0
- package/dist/scroll-sync.js +24 -0
- package/dist/selection.d.ts +16 -0
- package/dist/selection.js +108 -16
- package/dist/shortcut-registry.d.ts +145 -0
- package/dist/shortcut-registry.js +44 -0
- package/dist/svgrid-wrapper.types.d.ts +213 -22
- package/dist/virtualization/virtualizer.js +38 -17
- package/package.json +6 -1
- package/src/GridMenus.svelte +44 -2
- package/src/SvChartMenu.svelte +69 -0
- package/src/SvChartPanes.svelte +113 -0
- package/src/SvChartPanes.test.ts +66 -0
- package/src/SvGrid.controller.svelte.ts +629 -172
- package/src/SvGrid.css +105 -2
- package/src/SvGrid.svelte +386 -514
- package/src/SvGrid.types.ts +188 -8
- package/src/SvGridCellEditor.svelte +17 -0
- package/src/SvGridChart.svelte +2257 -329
- package/src/SvGridChart.test.ts +1419 -1
- package/src/SvGridChart.types.ts +336 -0
- package/src/SvGridChartBuilder.svelte +323 -0
- package/src/SvGridChartPanel.svelte +221 -275
- package/src/SvGridChartPickers.svelte +417 -0
- package/src/SvGridChartView.svelte +13 -14
- package/src/SvModal.svelte +7 -1
- package/src/SvModal.test.ts +9 -0
- package/src/ai.test.ts +57 -2
- package/src/ai.ts +166 -22
- package/src/aria.d.ts +11 -0
- package/src/build-api.coverage.test.ts +184 -0
- package/src/build-api.ts +107 -18
- package/src/chart-axes.test.ts +573 -0
- package/src/chart-axes.ts +342 -0
- package/src/chart-cartesian.ts +1863 -0
- package/src/chart-decimate.test.ts +249 -0
- package/src/chart-decimate.ts +186 -0
- package/src/chart-export-pdf.test.ts +91 -0
- package/src/chart-export-pdf.ts +207 -0
- package/src/chart-export.test.ts +14 -0
- package/src/chart-export.ts +13 -3
- package/src/chart-financial.ts +208 -0
- package/src/chart-flow.ts +286 -0
- package/src/chart-format.ts +67 -0
- package/src/chart-grid.ts +179 -0
- package/src/chart-hierarchy.ts +135 -0
- package/src/chart-indicators.test.ts +443 -0
- package/src/chart-indicators.ts +384 -0
- package/src/chart-messages.test.ts +21 -0
- package/src/chart-messages.ts +184 -0
- package/src/chart-motion.test.ts +71 -0
- package/src/chart-motion.ts +148 -0
- package/src/chart-panel-messages.test.ts +29 -0
- package/src/chart-panel-messages.ts +550 -0
- package/src/chart-pivot.test.ts +54 -0
- package/src/chart-pivot.ts +225 -0
- package/src/chart-polar.ts +674 -0
- package/src/chart-samples.ts +106 -0
- package/src/chart-scale.ts +394 -0
- package/src/chart-series-types.test.ts +714 -0
- package/src/chart-stats.ts +409 -0
- package/src/chart-stream.test.ts +75 -0
- package/src/chart-stream.ts +114 -0
- package/src/chart-summary.test.ts +90 -0
- package/src/chart-summary.ts +197 -0
- package/src/chart-sync.svelte.ts +41 -0
- package/src/chart-table.test.ts +76 -0
- package/src/chart-table.ts +178 -0
- package/src/chart-trend.ts +47 -0
- package/src/chart-types.ts +1309 -0
- package/src/chart-validate.test.ts +100 -0
- package/src/chart-validate.ts +247 -0
- package/src/chart-zoom.test.ts +137 -0
- package/src/chart-zoom.ts +124 -0
- package/src/chart.coverage.test.ts +81 -0
- package/src/chart.test.ts +56 -3
- package/src/chart.ts +557 -2784
- package/src/clipboard.test.ts +151 -0
- package/src/clipboard.ts +145 -16
- package/src/column-resize.ts +7 -1
- package/src/columns.ts +2 -0
- package/src/command-context.test.ts +200 -0
- package/src/command-context.ts +137 -0
- package/src/core.ts +7 -0
- package/src/editing.test.ts +281 -3
- package/src/editing.ts +256 -38
- package/src/fill-patterns.test.ts +35 -0
- package/src/fill-patterns.ts +56 -2
- package/src/grid-messages.ts +16 -3
- package/src/history.test.ts +196 -0
- package/src/history.ts +162 -0
- package/src/icon-seam.test.ts +3 -2
- package/src/index.ts +150 -2
- package/src/keyboard-handlers.coverage.test.ts +126 -6
- package/src/keyboard-handlers.ts +91 -30
- package/src/keyboard-shortcuts.seam.test.ts +200 -0
- package/src/keyboard.test.ts +124 -1
- package/src/keyboard.ts +142 -0
- package/src/menus.test.ts +26 -0
- package/src/menus.ts +10 -3
- package/src/merges.test.ts +112 -0
- package/src/merges.ts +168 -0
- package/src/pivot.grid.test.ts +40 -5
- package/src/row-resize.test.ts +44 -0
- package/src/row-resize.ts +17 -0
- package/src/scroll-sync.test.ts +42 -1
- package/src/scroll-sync.ts +25 -0
- package/src/selection.multi-range.test.ts +34 -0
- package/src/selection.test.ts +30 -2
- package/src/selection.ts +111 -19
- package/src/shortcut-registry.test.ts +97 -0
- package/src/shortcut-registry.ts +181 -0
- package/src/svgrid-wrapper.types.ts +184 -13
- package/src/svgrid.behavior.test.ts +135 -0
- package/src/svgrid.charting.test.ts +513 -3
- package/src/svgrid.context-menu.test.ts +31 -0
- package/src/svgrid.new-features.wrapper.test.ts +10 -3
- package/src/virtualization/virtualizer.ts +39 -17
- package/dist/cdn/GridMenus-DyFA-QxA.js +0 -602
- package/dist/cdn/GridMenus-M2XP9t0_.js +0 -603
- package/dist/cdn/SvDateTimePicker-CCbDZNZB.js +0 -816
- package/dist/cdn/SvGridChart-DAb9RbRs.js +0 -1480
- package/dist/cdn/SvGridChart-Yl-IXZFO.js +0 -1481
- package/dist/cdn/SvGridChartPanel-DayQpDsR.js +0 -834
- package/dist/cdn/SvGridChartPanel-aqf8n-vJ.js +0 -810
- package/dist/cdn/SvGridChartView-CxfakxR0.js +0 -56
- package/dist/cdn/SvGridChartView-Dm_YEx9L.js +0 -55
- package/dist/cdn/chart-CKJRCPOk.js +0 -1652
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { arcPath } from './chart-polar.js';
|
|
2
|
+
import { buildLinePath } from './chart-cartesian.js';
|
|
3
|
+
const mix = (a, b, t) => a + (b - a) * t;
|
|
4
|
+
const r2 = (n) => Math.round(n * 100) / 100;
|
|
5
|
+
/**
|
|
6
|
+
* The geometry at fraction `t` (0..1) between `from` and `to`. At `t >= 1`
|
|
7
|
+
* this is `to` itself, so a finished tween costs nothing.
|
|
8
|
+
*/
|
|
9
|
+
export function interpolateGeometry(from, to, t) {
|
|
10
|
+
if (t >= 1)
|
|
11
|
+
return to;
|
|
12
|
+
if (t <= 0 && from.type === to.type)
|
|
13
|
+
return from;
|
|
14
|
+
if (from.type !== to.type)
|
|
15
|
+
return to;
|
|
16
|
+
return {
|
|
17
|
+
...to,
|
|
18
|
+
bars: tweenBars(from.bars, to.bars, t, to.plot.y + to.plot.h),
|
|
19
|
+
lines: tweenLines(from.lines, to.lines, t),
|
|
20
|
+
candles: tweenCandles(from.candles, to.candles, t),
|
|
21
|
+
slices: tweenSlices(from.slices, to.slices, t),
|
|
22
|
+
arcs: tweenArcs(from.arcs, to.arcs, t),
|
|
23
|
+
yTicks: to.yTicks.map((tick) => {
|
|
24
|
+
const prev = from.yTicks.find((p) => p.value === tick.value);
|
|
25
|
+
return prev ? { ...tick, y: r2(mix(prev.y, tick.y, t)) } : tick;
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const barKey = (b) => `${b.series}\u0000${b.label}`;
|
|
30
|
+
function tweenBars(from, to, t, baseline) {
|
|
31
|
+
if (!from.length && !to.length)
|
|
32
|
+
return to;
|
|
33
|
+
const prev = new Map(from.map((b) => [barKey(b), b]));
|
|
34
|
+
const seen = new Set();
|
|
35
|
+
const out = to.map((b) => {
|
|
36
|
+
const k = barKey(b);
|
|
37
|
+
seen.add(k);
|
|
38
|
+
const p = prev.get(k);
|
|
39
|
+
if (!p) {
|
|
40
|
+
// New: grow from the baseline.
|
|
41
|
+
const y = mix(baseline, b.y, t);
|
|
42
|
+
return { ...b, y: r2(y), h: r2(Math.max(0, mix(0, b.h, t))) };
|
|
43
|
+
}
|
|
44
|
+
return { ...b, x: r2(mix(p.x, b.x, t)), y: r2(mix(p.y, b.y, t)), w: r2(mix(p.w, b.w, t)), h: r2(mix(p.h, b.h, t)) };
|
|
45
|
+
});
|
|
46
|
+
// Removed: shrink to the baseline, then vanish at the end of the tween.
|
|
47
|
+
for (const p of from) {
|
|
48
|
+
if (seen.has(barKey(p)))
|
|
49
|
+
continue;
|
|
50
|
+
out.push({ ...p, y: r2(mix(p.y, baseline, t)), h: r2(Math.max(0, mix(p.h, 0, t))) });
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
function tweenLines(from, to, t) {
|
|
55
|
+
if (!from.length)
|
|
56
|
+
return to;
|
|
57
|
+
const prev = new Map(from.map((l) => [l.label, l]));
|
|
58
|
+
return to.map((l) => {
|
|
59
|
+
const p = prev.get(l.label);
|
|
60
|
+
// A series whose point count changed cannot be paired point for point;
|
|
61
|
+
// it snaps, and the others still slide.
|
|
62
|
+
if (!p || p.points.length !== l.points.length)
|
|
63
|
+
return l;
|
|
64
|
+
const points = l.points.map((pt, i) => {
|
|
65
|
+
const q = p.points[i];
|
|
66
|
+
if (!pt.defined || !q.defined)
|
|
67
|
+
return pt;
|
|
68
|
+
return { ...pt, x: r2(mix(q.x, pt.x, t)), y: r2(mix(q.y, pt.y, t)) };
|
|
69
|
+
});
|
|
70
|
+
return { ...l, points, path: buildLinePath(points, !!l.smooth, { step: l.step }) };
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const candleKey = (k) => `${k.series}\u0000${k.label}`;
|
|
74
|
+
function tweenCandles(from, to, t) {
|
|
75
|
+
if (!from.length)
|
|
76
|
+
return to;
|
|
77
|
+
const prev = new Map(from.map((k) => [candleKey(k), k]));
|
|
78
|
+
return to.map((k) => {
|
|
79
|
+
const p = prev.get(candleKey(k));
|
|
80
|
+
if (!p)
|
|
81
|
+
return k;
|
|
82
|
+
const yOpen = mix(p.yOpen, k.yOpen, t);
|
|
83
|
+
const yClose = mix(p.yClose, k.yClose, t);
|
|
84
|
+
return {
|
|
85
|
+
...k,
|
|
86
|
+
x: r2(mix(p.x, k.x, t)),
|
|
87
|
+
xCenter: r2(mix(p.xCenter, k.xCenter, t)),
|
|
88
|
+
yOpen: r2(yOpen),
|
|
89
|
+
yClose: r2(yClose),
|
|
90
|
+
yHigh: r2(mix(p.yHigh, k.yHigh, t)),
|
|
91
|
+
yLow: r2(mix(p.yLow, k.yLow, t)),
|
|
92
|
+
bodyY: r2(Math.min(yOpen, yClose)),
|
|
93
|
+
bodyH: r2(Math.max(1, Math.abs(yClose - yOpen))),
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function tweenSlices(from, to, t) {
|
|
98
|
+
if (!from.length || to.some((s) => !s.arc))
|
|
99
|
+
return to;
|
|
100
|
+
const prev = new Map(from.map((s) => [s.label, s]));
|
|
101
|
+
return to.map((s) => {
|
|
102
|
+
const p = prev.get(s.label);
|
|
103
|
+
if (!p?.arc || !s.arc)
|
|
104
|
+
return s;
|
|
105
|
+
const a0 = mix(p.arc.a0, s.arc.a0, t);
|
|
106
|
+
const a1 = mix(p.arc.a1, s.arc.a1, t);
|
|
107
|
+
const mid = (a0 + a1) / 2;
|
|
108
|
+
const labelR = (s.arc.r + s.arc.ir) / 2 || s.arc.r * 0.6;
|
|
109
|
+
return {
|
|
110
|
+
...s,
|
|
111
|
+
path: arcPath(s.arc.cx, s.arc.cy, s.arc.ir, s.arc.r, a0, a1),
|
|
112
|
+
cx: r2(s.arc.cx + labelR * Math.cos(mid)),
|
|
113
|
+
cy: r2(s.arc.cy + labelR * Math.sin(mid)),
|
|
114
|
+
arc: { ...s.arc, a0, a1 },
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const arcKey = (a) => (a.nodePath ? a.nodePath.join('/') : `${a.series}\u0000${a.label}`);
|
|
119
|
+
function tweenArcs(from, to, t) {
|
|
120
|
+
if (!from.length)
|
|
121
|
+
return to;
|
|
122
|
+
const prev = new Map(from.map((a) => [arcKey(a), a]));
|
|
123
|
+
return to.map((a) => {
|
|
124
|
+
const p = prev.get(arcKey(a));
|
|
125
|
+
if (!p)
|
|
126
|
+
return a;
|
|
127
|
+
const a0 = mix(p.a0, a.a0, t);
|
|
128
|
+
const a1 = mix(p.a1, a.a1, t);
|
|
129
|
+
const r0 = mix(p.r0, a.r0, t);
|
|
130
|
+
const r1 = mix(p.r1, a.r1, t);
|
|
131
|
+
const mid = (a0 + a1) / 2;
|
|
132
|
+
const lr = (r0 + r1) / 2;
|
|
133
|
+
return {
|
|
134
|
+
...a,
|
|
135
|
+
a0, a1, r0, r1,
|
|
136
|
+
path: arcPath(a.cx, a.cy, r0, r1, a0, a1),
|
|
137
|
+
lx: r2(a.cx + lr * Math.cos(mid)),
|
|
138
|
+
ly: r2(a.cy + lr * Math.sin(mid)),
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/** Every localizable chart panel and builder string. */
|
|
2
|
+
export type GridChartPanelMessages = {
|
|
3
|
+
chartPanelTitle: string;
|
|
4
|
+
chartClearFilter: string;
|
|
5
|
+
chartExport: string;
|
|
6
|
+
chartExportLabel: string;
|
|
7
|
+
chartExportPng: string;
|
|
8
|
+
chartExportSvg: string;
|
|
9
|
+
chartExportPdf: string;
|
|
10
|
+
chartExportCsv: string;
|
|
11
|
+
chartExportCopy: string;
|
|
12
|
+
chartExportPrint: string;
|
|
13
|
+
chartExportDescribe: string;
|
|
14
|
+
chartAi: string;
|
|
15
|
+
chartAiLabel: string;
|
|
16
|
+
chartAiPlaceholder: string;
|
|
17
|
+
chartAiRun: string;
|
|
18
|
+
chartAiThinking: string;
|
|
19
|
+
chartAiExplain: string;
|
|
20
|
+
chartAiExplainTitle: string;
|
|
21
|
+
chartAiNoChart: string;
|
|
22
|
+
chartAiNoExplanation: string;
|
|
23
|
+
chartAiFailed: string;
|
|
24
|
+
chartBuild: string;
|
|
25
|
+
chartBuildLabel: string;
|
|
26
|
+
chartBuildTitle: string;
|
|
27
|
+
chartLinkBack: string;
|
|
28
|
+
chartUnlink: string;
|
|
29
|
+
chartLinkedTitle: string;
|
|
30
|
+
chartUnlinkedTitle: string;
|
|
31
|
+
chartAdd: string;
|
|
32
|
+
chartSave: string;
|
|
33
|
+
chartSaveLabel: string;
|
|
34
|
+
chartSavedTitle: string;
|
|
35
|
+
chartSaveName: string;
|
|
36
|
+
chartSaveNamePlaceholder: string;
|
|
37
|
+
chartSaveApply: string;
|
|
38
|
+
/** The pickers' note in pivot mode, where the pivot on screen is the chart. */
|
|
39
|
+
chartPivotHint: string;
|
|
40
|
+
chartSaveRemove: string;
|
|
41
|
+
chartSavedEmpty: string;
|
|
42
|
+
chartMaximize: string;
|
|
43
|
+
chartRestore: string;
|
|
44
|
+
chartDock: string;
|
|
45
|
+
chartDockLabel: string;
|
|
46
|
+
chartPopOut: string;
|
|
47
|
+
chartPopOutLabel: string;
|
|
48
|
+
chartClose: string;
|
|
49
|
+
chartResize: string;
|
|
50
|
+
chartResizeWindow: string;
|
|
51
|
+
chartTabs: string;
|
|
52
|
+
chartRemoveTab: string;
|
|
53
|
+
chartRemove: string;
|
|
54
|
+
chartEmptyColumns: string;
|
|
55
|
+
chartEmptyData: string;
|
|
56
|
+
chartType: string;
|
|
57
|
+
chartDate: string;
|
|
58
|
+
chartGroupBy: string;
|
|
59
|
+
chartFrom: string;
|
|
60
|
+
chartColumns: string;
|
|
61
|
+
chartSplitBy: string;
|
|
62
|
+
chartTo: string;
|
|
63
|
+
chartRows: string;
|
|
64
|
+
chartNone: string;
|
|
65
|
+
chartValue: string;
|
|
66
|
+
chartX: string;
|
|
67
|
+
chartY: string;
|
|
68
|
+
chartLow: string;
|
|
69
|
+
chartHigh: string;
|
|
70
|
+
chartOpen: string;
|
|
71
|
+
chartClosePrice: string;
|
|
72
|
+
chartVolume: string;
|
|
73
|
+
chartMetric: string;
|
|
74
|
+
chartTarget: string;
|
|
75
|
+
chartAggregate: string;
|
|
76
|
+
chartReduceSum: string;
|
|
77
|
+
chartReduceAvg: string;
|
|
78
|
+
chartReduceCount: string;
|
|
79
|
+
chartReduceMin: string;
|
|
80
|
+
chartReduceMax: string;
|
|
81
|
+
chartReduceMedian: string;
|
|
82
|
+
chartReduceP90: string;
|
|
83
|
+
chartReduceFirst: string;
|
|
84
|
+
chartReduceLast: string;
|
|
85
|
+
chartReduceCountDistinct: string;
|
|
86
|
+
chartBins: string;
|
|
87
|
+
chartBinsTitle: string;
|
|
88
|
+
chartShape: string;
|
|
89
|
+
chartShapeFunnel: string;
|
|
90
|
+
chartShapePyramid: string;
|
|
91
|
+
chartShapeCone: string;
|
|
92
|
+
chartCandles: string;
|
|
93
|
+
chartCandlesClassic: string;
|
|
94
|
+
chartCandlesHollow: string;
|
|
95
|
+
chartCandlesHeikinAshi: string;
|
|
96
|
+
chartIndicators: string;
|
|
97
|
+
chartIndVolume: string;
|
|
98
|
+
chartIndVolumeTitle: string;
|
|
99
|
+
chartIndRsi: string;
|
|
100
|
+
chartIndRsiTitle: string;
|
|
101
|
+
chartIndMacd: string;
|
|
102
|
+
chartIndMacdTitle: string;
|
|
103
|
+
chartIndStochastic: string;
|
|
104
|
+
chartIndStochasticTitle: string;
|
|
105
|
+
chartIndAtr: string;
|
|
106
|
+
chartIndAtrTitle: string;
|
|
107
|
+
chartIndObv: string;
|
|
108
|
+
chartIndObvTitle: string;
|
|
109
|
+
chartIndSma: string;
|
|
110
|
+
chartIndSmaTitle: string;
|
|
111
|
+
chartIndEma: string;
|
|
112
|
+
chartIndEmaTitle: string;
|
|
113
|
+
chartIndBb: string;
|
|
114
|
+
chartIndBbTitle: string;
|
|
115
|
+
chartIndVwap: string;
|
|
116
|
+
chartIndVwapTitle: string;
|
|
117
|
+
chartFormat: string;
|
|
118
|
+
chartFormatNumber: string;
|
|
119
|
+
chartFormatCurrency: string;
|
|
120
|
+
chartFormatPercent: string;
|
|
121
|
+
chartStacked: string;
|
|
122
|
+
chartStacked100: string;
|
|
123
|
+
chartStacked100Title: string;
|
|
124
|
+
chartHorizontal: string;
|
|
125
|
+
chartHorizontalTitle: string;
|
|
126
|
+
chartDonut: string;
|
|
127
|
+
chartColours: string;
|
|
128
|
+
chartPaletteTheme: string;
|
|
129
|
+
chartPaletteOcean: string;
|
|
130
|
+
chartPaletteSunset: string;
|
|
131
|
+
chartPaletteForest: string;
|
|
132
|
+
chartPaletteSlate: string;
|
|
133
|
+
chartLabels: string;
|
|
134
|
+
chartLogScale: string;
|
|
135
|
+
chartLogScaleTitle: string;
|
|
136
|
+
chartBucket: string;
|
|
137
|
+
chartBucketTitle: string;
|
|
138
|
+
chartBucketExact: string;
|
|
139
|
+
chartBucketDay: string;
|
|
140
|
+
chartBucketWeek: string;
|
|
141
|
+
chartBucketMonth: string;
|
|
142
|
+
chartBucketQuarter: string;
|
|
143
|
+
chartBucketYear: string;
|
|
144
|
+
chartDateAxis: string;
|
|
145
|
+
chartDateAxisTitle: string;
|
|
146
|
+
chartGroupCompare: string;
|
|
147
|
+
chartGroupPartOfWhole: string;
|
|
148
|
+
chartGroupFlow: string;
|
|
149
|
+
chartGroupDistribution: string;
|
|
150
|
+
chartGroupSingleValue: string;
|
|
151
|
+
chartGroupOverTime: string;
|
|
152
|
+
chartTypeBar: string;
|
|
153
|
+
chartTypeLine: string;
|
|
154
|
+
chartTypeArea: string;
|
|
155
|
+
chartTypeLollipop: string;
|
|
156
|
+
chartTypePareto: string;
|
|
157
|
+
chartTypeRangeBar: string;
|
|
158
|
+
chartTypeRangeArea: string;
|
|
159
|
+
chartTypeDumbbell: string;
|
|
160
|
+
chartTypeRadialColumn: string;
|
|
161
|
+
chartTypeRadialBar: string;
|
|
162
|
+
chartTypeNightingale: string;
|
|
163
|
+
chartTypePie: string;
|
|
164
|
+
chartTypeTreemap: string;
|
|
165
|
+
chartTypeSunburst: string;
|
|
166
|
+
chartTypeFunnel: string;
|
|
167
|
+
chartTypeWaterfall: string;
|
|
168
|
+
chartTypeSankey: string;
|
|
169
|
+
chartTypeChord: string;
|
|
170
|
+
chartTypeRadar: string;
|
|
171
|
+
chartTypeHeatmap: string;
|
|
172
|
+
chartTypeScatter: string;
|
|
173
|
+
chartTypeBoxplot: string;
|
|
174
|
+
chartTypeHistogram: string;
|
|
175
|
+
chartTypeGauge: string;
|
|
176
|
+
chartTypeBullet: string;
|
|
177
|
+
chartTypeCalendar: string;
|
|
178
|
+
chartTypeStream: string;
|
|
179
|
+
chartTypeCandlestick: string;
|
|
180
|
+
chartTypeOhlc: string;
|
|
181
|
+
chartIssueHeatmap: string;
|
|
182
|
+
chartIssueSankey: string;
|
|
183
|
+
chartIssueRadar: string;
|
|
184
|
+
chartIssueFunnel: string;
|
|
185
|
+
chartIssueChord: string;
|
|
186
|
+
chartIssueStream: string;
|
|
187
|
+
chartIssueSecondMeasure: string;
|
|
188
|
+
chartIssueOhlcDate: string;
|
|
189
|
+
chartIssueOhlcColumns: string;
|
|
190
|
+
chartBuilderTitle: string;
|
|
191
|
+
chartBuilderTabType: string;
|
|
192
|
+
chartBuilderTabData: string;
|
|
193
|
+
chartBuilderTabFormat: string;
|
|
194
|
+
chartBuilderLinked: string;
|
|
195
|
+
chartBuilderFrozenAt: string;
|
|
196
|
+
chartBuilderFollows: string;
|
|
197
|
+
chartBuilderTitleField: string;
|
|
198
|
+
chartBuilderSubtitle: string;
|
|
199
|
+
chartBuilderCaption: string;
|
|
200
|
+
chartBuilderLegend: string;
|
|
201
|
+
chartLegendBottom: string;
|
|
202
|
+
chartLegendTop: string;
|
|
203
|
+
chartLegendLeft: string;
|
|
204
|
+
chartLegendRight: string;
|
|
205
|
+
chartLegendHidden: string;
|
|
206
|
+
chartBuilderDataLabels: string;
|
|
207
|
+
chartBuilderPanelSetting: string;
|
|
208
|
+
chartLabelsTop: string;
|
|
209
|
+
chartLabelsOutside: string;
|
|
210
|
+
chartLabelsInside: string;
|
|
211
|
+
chartLabelsCenter: string;
|
|
212
|
+
chartLabelsHidden: string;
|
|
213
|
+
chartBuilderSeriesLabels: string;
|
|
214
|
+
chartBuilderCrosshairLabels: string;
|
|
215
|
+
chartBuilderCompactBelow: string;
|
|
216
|
+
chartBuilderCompactBelowTitle: string;
|
|
217
|
+
chartBuilderValueAxis: string;
|
|
218
|
+
chartBuilderRightAxis: string;
|
|
219
|
+
chartBuilderCategoryAxis: string;
|
|
220
|
+
chartBuilderMin: string;
|
|
221
|
+
chartBuilderMax: string;
|
|
222
|
+
chartBuilderAuto: string;
|
|
223
|
+
chartBuilderOff: string;
|
|
224
|
+
chartBuilderGridLines: string;
|
|
225
|
+
chartBuilderAxisLabels: string;
|
|
226
|
+
chartBuilderLabelsAuto: string;
|
|
227
|
+
chartBuilderLabelsHorizontal: string;
|
|
228
|
+
chartBuilderLabelsTilted: string;
|
|
229
|
+
chartBuilderLabelsVertical: string;
|
|
230
|
+
chartBuilderSeries: string;
|
|
231
|
+
chartBuilderColor: string;
|
|
232
|
+
chartBuilderSeriesType: string;
|
|
233
|
+
chartBuilderAxis: string;
|
|
234
|
+
chartBuilderMarker: string;
|
|
235
|
+
chartBuilderWidth: string;
|
|
236
|
+
chartBuilderStack: string;
|
|
237
|
+
chartBuilderStackPlaceholder: string;
|
|
238
|
+
chartBuilderSeriesColorLabel: string;
|
|
239
|
+
chartBuilderSeriesTypeLabel: string;
|
|
240
|
+
chartBuilderSeriesAxisLabel: string;
|
|
241
|
+
chartBuilderSeriesMarkerLabel: string;
|
|
242
|
+
chartBuilderSeriesWidthLabel: string;
|
|
243
|
+
chartBuilderSeriesStackLabel: string;
|
|
244
|
+
chartBuilderChartType: string;
|
|
245
|
+
chartBuilderBar: string;
|
|
246
|
+
chartBuilderLine: string;
|
|
247
|
+
chartBuilderArea: string;
|
|
248
|
+
chartBuilderLeft: string;
|
|
249
|
+
chartBuilderRight: string;
|
|
250
|
+
chartBuilderStyle: string;
|
|
251
|
+
chartBuilderFontSize: string;
|
|
252
|
+
chartBuilderFontFamily: string;
|
|
253
|
+
chartBuilderBackground: string;
|
|
254
|
+
chartBuilderTextColor: string;
|
|
255
|
+
chartBuilderResetFormat: string;
|
|
256
|
+
};
|
|
257
|
+
/** English defaults: the literal strings the panel and the builder shipped with. */
|
|
258
|
+
export declare const defaultChartPanelMessages: GridChartPanelMessages;
|
|
259
|
+
/**
|
|
260
|
+
* Merge a consumer's `localization.text` over the English defaults. The map
|
|
261
|
+
* usually carries the chrome keys too; only the chart panel keys are read.
|
|
262
|
+
*/
|
|
263
|
+
export declare function resolveChartPanelMessages(overrides?: Partial<GridChartPanelMessages> | null): GridChartPanelMessages;
|
|
264
|
+
/** Fill `{name}` placeholders in a message. */
|
|
265
|
+
export declare function chartPanelMessage(template: string, values: Record<string, string | number>): string;
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The grid's chart panel and chart builder, localized. Every string the panel
|
|
3
|
+
* chrome renders (the head and its actions, the export menu, the AI row, the
|
|
4
|
+
* pickers with their type / reducer / bucket / palette / indicator names and
|
|
5
|
+
* the "why this type cannot draw yet" sentences, the builder's tabs and
|
|
6
|
+
* Format fields, the saved-charts popover) is a key here with its English
|
|
7
|
+
* default. Pass any subset through `localization.text` on `<SvGrid>`; unset
|
|
8
|
+
* keys stay English.
|
|
9
|
+
*
|
|
10
|
+
* A module of its own rather than more keys in grid-messages.ts because that
|
|
11
|
+
* file's defaults are base-bundle code that every grid pays for, charting or
|
|
12
|
+
* not. This one loads with the panel, which is already a lazy chunk. The
|
|
13
|
+
* type joins `GridMessages` so `localization.text` accepts the keys.
|
|
14
|
+
*
|
|
15
|
+
* The chart's OWN strings (toolbar, context menu, what it says to assistive
|
|
16
|
+
* technology) are a different surface: `ChartMessages` in chart-messages.ts,
|
|
17
|
+
* passed as `localeText` on the chart or `charting.localeText` on the grid.
|
|
18
|
+
*/
|
|
19
|
+
import { resolveMessages } from './editor-contract.js';
|
|
20
|
+
/** English defaults: the literal strings the panel and the builder shipped with. */
|
|
21
|
+
export const defaultChartPanelMessages = {
|
|
22
|
+
chartPanelTitle: 'Chart',
|
|
23
|
+
chartClearFilter: 'Clear filter',
|
|
24
|
+
chartExport: 'Export',
|
|
25
|
+
chartExportLabel: 'Export chart',
|
|
26
|
+
chartExportPng: 'PNG image',
|
|
27
|
+
chartExportSvg: 'SVG vector',
|
|
28
|
+
chartExportPdf: 'PDF document',
|
|
29
|
+
chartExportCsv: 'CSV data',
|
|
30
|
+
chartExportCopy: 'Copy to clipboard',
|
|
31
|
+
chartExportPrint: 'Print',
|
|
32
|
+
chartExportDescribe: 'Describe chart',
|
|
33
|
+
chartAi: 'AI',
|
|
34
|
+
chartAiLabel: 'Chart with AI',
|
|
35
|
+
chartAiPlaceholder: 'Describe a chart, e.g. revenue by region stacked by product',
|
|
36
|
+
chartAiRun: 'Chart it',
|
|
37
|
+
chartAiThinking: 'Thinking...',
|
|
38
|
+
chartAiExplain: 'Explain',
|
|
39
|
+
chartAiExplainTitle: 'Explain this chart in plain words',
|
|
40
|
+
chartAiNoChart: "Couldn't build a chart from that request.",
|
|
41
|
+
chartAiNoExplanation: "Couldn't explain this chart.",
|
|
42
|
+
chartAiFailed: 'Something went wrong.',
|
|
43
|
+
chartBuild: 'Build',
|
|
44
|
+
chartBuildLabel: 'Open the chart builder',
|
|
45
|
+
chartBuildTitle: 'Chart builder: type gallery, data and format',
|
|
46
|
+
chartLinkBack: 'Link the chart back to the grid',
|
|
47
|
+
chartUnlink: 'Unlink the chart from the grid',
|
|
48
|
+
chartLinkedTitle: "Linked: the chart follows the grid's rows. Click to freeze it.",
|
|
49
|
+
chartUnlinkedTitle: 'Unlinked: the chart keeps the data it has. Click to follow the grid again.',
|
|
50
|
+
chartAdd: 'Add chart',
|
|
51
|
+
chartSave: 'Save',
|
|
52
|
+
chartSaveLabel: 'Saved charts',
|
|
53
|
+
chartSavedTitle: 'Saved charts',
|
|
54
|
+
chartSaveName: 'Save this chart as',
|
|
55
|
+
chartSaveNamePlaceholder: 'Name',
|
|
56
|
+
chartSaveApply: 'Apply',
|
|
57
|
+
chartPivotHint: 'Charting the pivot: its row groups are the categories and its column groups the series.',
|
|
58
|
+
chartSaveRemove: 'Remove',
|
|
59
|
+
chartSavedEmpty: 'No saved charts yet.',
|
|
60
|
+
chartMaximize: 'Maximize',
|
|
61
|
+
chartRestore: 'Restore',
|
|
62
|
+
chartDock: 'Dock',
|
|
63
|
+
chartDockLabel: 'Dock chart',
|
|
64
|
+
chartPopOut: 'Pop out',
|
|
65
|
+
chartPopOutLabel: 'Pop out chart',
|
|
66
|
+
chartClose: 'Close chart',
|
|
67
|
+
chartResize: 'Resize chart panel',
|
|
68
|
+
chartResizeWindow: 'Resize chart window',
|
|
69
|
+
chartTabs: 'Charts',
|
|
70
|
+
chartRemoveTab: 'Remove {title}',
|
|
71
|
+
chartRemove: 'Remove',
|
|
72
|
+
chartEmptyColumns: 'Charting needs at least one text column (to group by) and one numeric column (to measure).',
|
|
73
|
+
chartEmptyData: 'No data to chart.',
|
|
74
|
+
chartType: 'Type',
|
|
75
|
+
chartDate: 'Date',
|
|
76
|
+
chartGroupBy: 'Group by',
|
|
77
|
+
chartFrom: 'From',
|
|
78
|
+
chartColumns: 'Columns',
|
|
79
|
+
chartSplitBy: 'Split by',
|
|
80
|
+
chartTo: 'To',
|
|
81
|
+
chartRows: 'Rows',
|
|
82
|
+
chartNone: '(none)',
|
|
83
|
+
chartValue: 'Value',
|
|
84
|
+
chartX: 'X',
|
|
85
|
+
chartY: 'Y',
|
|
86
|
+
chartLow: 'Low',
|
|
87
|
+
chartHigh: 'High',
|
|
88
|
+
chartOpen: 'Open',
|
|
89
|
+
chartClosePrice: 'Close',
|
|
90
|
+
chartVolume: 'Volume',
|
|
91
|
+
chartMetric: 'Metric',
|
|
92
|
+
chartTarget: 'Target',
|
|
93
|
+
chartAggregate: 'Aggregate',
|
|
94
|
+
chartReduceSum: 'Sum',
|
|
95
|
+
chartReduceAvg: 'Average',
|
|
96
|
+
chartReduceCount: 'Count',
|
|
97
|
+
chartReduceMin: 'Min',
|
|
98
|
+
chartReduceMax: 'Max',
|
|
99
|
+
chartReduceMedian: 'Median',
|
|
100
|
+
chartReduceP90: '90th percentile',
|
|
101
|
+
chartReduceFirst: 'First',
|
|
102
|
+
chartReduceLast: 'Last',
|
|
103
|
+
chartReduceCountDistinct: 'Distinct count',
|
|
104
|
+
chartBins: 'Bins',
|
|
105
|
+
chartBinsTitle: 'How many bins the sample is split into',
|
|
106
|
+
chartShape: 'Shape',
|
|
107
|
+
chartShapeFunnel: 'Funnel',
|
|
108
|
+
chartShapePyramid: 'Pyramid',
|
|
109
|
+
chartShapeCone: 'Cone',
|
|
110
|
+
chartCandles: 'Candles',
|
|
111
|
+
chartCandlesClassic: 'Classic',
|
|
112
|
+
chartCandlesHollow: 'Hollow',
|
|
113
|
+
chartCandlesHeikinAshi: 'Heikin-Ashi',
|
|
114
|
+
chartIndicators: 'Indicators',
|
|
115
|
+
chartIndVolume: 'Volume',
|
|
116
|
+
chartIndVolumeTitle: 'Volume bars under the price',
|
|
117
|
+
chartIndRsi: 'RSI',
|
|
118
|
+
chartIndRsiTitle: 'Relative strength index, 14 bars',
|
|
119
|
+
chartIndMacd: 'MACD',
|
|
120
|
+
chartIndMacdTitle: 'MACD 12 / 26 / 9',
|
|
121
|
+
chartIndStochastic: 'Stoch',
|
|
122
|
+
chartIndStochasticTitle: 'Stochastic oscillator 14 / 3',
|
|
123
|
+
chartIndAtr: 'ATR',
|
|
124
|
+
chartIndAtrTitle: 'Average true range, 14 bars',
|
|
125
|
+
chartIndObv: 'OBV',
|
|
126
|
+
chartIndObvTitle: 'On-balance volume',
|
|
127
|
+
chartIndSma: 'SMA 20',
|
|
128
|
+
chartIndSmaTitle: '20-bar simple moving average on the price',
|
|
129
|
+
chartIndEma: 'EMA 20',
|
|
130
|
+
chartIndEmaTitle: '20-bar exponential moving average on the price',
|
|
131
|
+
chartIndBb: 'Bollinger',
|
|
132
|
+
chartIndBbTitle: 'Bollinger bands 20 / 2 on the price',
|
|
133
|
+
chartIndVwap: 'VWAP',
|
|
134
|
+
chartIndVwapTitle: 'Volume-weighted average price on the price',
|
|
135
|
+
chartFormat: 'Format',
|
|
136
|
+
chartFormatNumber: 'Number',
|
|
137
|
+
chartFormatCurrency: 'Currency',
|
|
138
|
+
chartFormatPercent: 'Percent',
|
|
139
|
+
chartStacked: 'Stacked',
|
|
140
|
+
chartStacked100: '100%',
|
|
141
|
+
chartStacked100Title: 'Normalise each category to 100 percent',
|
|
142
|
+
chartHorizontal: 'Horizontal',
|
|
143
|
+
chartHorizontalTitle: 'Bars grow rightwards - suits long category labels',
|
|
144
|
+
chartDonut: 'Donut',
|
|
145
|
+
chartColours: 'Colours',
|
|
146
|
+
chartPaletteTheme: 'Theme',
|
|
147
|
+
chartPaletteOcean: 'Ocean',
|
|
148
|
+
chartPaletteSunset: 'Sunset',
|
|
149
|
+
chartPaletteForest: 'Forest',
|
|
150
|
+
chartPaletteSlate: 'Slate',
|
|
151
|
+
chartLabels: 'Labels',
|
|
152
|
+
chartLogScale: 'Log scale',
|
|
153
|
+
chartLogScaleTitle: 'Logarithmic value axis - flattens wide-range data',
|
|
154
|
+
chartBucket: 'Bucket',
|
|
155
|
+
chartBucketTitle: 'Group the dates by calendar unit: one bar per month instead of one per day',
|
|
156
|
+
chartBucketExact: 'Exact',
|
|
157
|
+
chartBucketDay: 'Day',
|
|
158
|
+
chartBucketWeek: 'Week',
|
|
159
|
+
chartBucketMonth: 'Month',
|
|
160
|
+
chartBucketQuarter: 'Quarter',
|
|
161
|
+
chartBucketYear: 'Year',
|
|
162
|
+
chartDateAxis: 'Date axis',
|
|
163
|
+
chartDateAxisTitle: 'Space points by actual date - real time ticks and proportional gaps',
|
|
164
|
+
chartGroupCompare: 'Compare',
|
|
165
|
+
chartGroupPartOfWhole: 'Part of a whole',
|
|
166
|
+
chartGroupFlow: 'Flow',
|
|
167
|
+
chartGroupDistribution: 'Distribution',
|
|
168
|
+
chartGroupSingleValue: 'Single value',
|
|
169
|
+
chartGroupOverTime: 'Over time',
|
|
170
|
+
chartTypeBar: 'Bar',
|
|
171
|
+
chartTypeLine: 'Line',
|
|
172
|
+
chartTypeArea: 'Area',
|
|
173
|
+
chartTypeLollipop: 'Lollipop',
|
|
174
|
+
chartTypePareto: 'Pareto',
|
|
175
|
+
chartTypeRangeBar: 'Range bar',
|
|
176
|
+
chartTypeRangeArea: 'Range area',
|
|
177
|
+
chartTypeDumbbell: 'Dumbbell',
|
|
178
|
+
chartTypeRadialColumn: 'Radial column',
|
|
179
|
+
chartTypeRadialBar: 'Radial bar',
|
|
180
|
+
chartTypeNightingale: 'Nightingale',
|
|
181
|
+
chartTypePie: 'Pie',
|
|
182
|
+
chartTypeTreemap: 'Tree map',
|
|
183
|
+
chartTypeSunburst: 'Sunburst',
|
|
184
|
+
chartTypeFunnel: 'Funnel',
|
|
185
|
+
chartTypeWaterfall: 'Waterfall',
|
|
186
|
+
chartTypeSankey: 'Sankey',
|
|
187
|
+
chartTypeChord: 'Chord',
|
|
188
|
+
chartTypeRadar: 'Radar',
|
|
189
|
+
chartTypeHeatmap: 'Heat map',
|
|
190
|
+
chartTypeScatter: 'Scatter',
|
|
191
|
+
chartTypeBoxplot: 'Box plot',
|
|
192
|
+
chartTypeHistogram: 'Histogram',
|
|
193
|
+
chartTypeGauge: 'Gauge',
|
|
194
|
+
chartTypeBullet: 'Bullet',
|
|
195
|
+
chartTypeCalendar: 'Calendar',
|
|
196
|
+
chartTypeStream: 'Stream',
|
|
197
|
+
chartTypeCandlestick: 'Candlestick',
|
|
198
|
+
chartTypeOhlc: 'OHLC bars',
|
|
199
|
+
chartIssueHeatmap: 'Heat map needs a Split by column for its rows.',
|
|
200
|
+
chartIssueSankey: 'Sankey needs a Split by column: Group by is the source, Split by the target.',
|
|
201
|
+
chartIssueRadar: 'Radar needs at least 3 groups.',
|
|
202
|
+
chartIssueFunnel: 'Funnel needs at least 2 stages.',
|
|
203
|
+
chartIssueChord: 'Chord needs a Split by column: Group by and Split by are the two ends of each flow.',
|
|
204
|
+
chartIssueStream: 'Stream needs a Split by column: each split becomes a layer.',
|
|
205
|
+
chartIssueSecondMeasure: 'Pick a second measure for the high end of the range.',
|
|
206
|
+
chartIssueOhlcDate: 'Candlesticks need a date column.',
|
|
207
|
+
chartIssueOhlcColumns: 'Pick the Open, High, Low and Close columns.',
|
|
208
|
+
chartBuilderTitle: 'Chart builder',
|
|
209
|
+
chartBuilderTabType: 'Type',
|
|
210
|
+
chartBuilderTabData: 'Data',
|
|
211
|
+
chartBuilderTabFormat: 'Format',
|
|
212
|
+
chartBuilderLinked: 'Linked to the grid',
|
|
213
|
+
chartBuilderFrozenAt: 'Frozen at {time}; edits, filters and new rows no longer change it.',
|
|
214
|
+
chartBuilderFollows: "The chart follows the grid's rows, filters and edits.",
|
|
215
|
+
chartBuilderTitleField: 'Title',
|
|
216
|
+
chartBuilderSubtitle: 'Subtitle',
|
|
217
|
+
chartBuilderCaption: 'Caption',
|
|
218
|
+
chartBuilderLegend: 'Legend',
|
|
219
|
+
chartLegendBottom: 'Bottom',
|
|
220
|
+
chartLegendTop: 'Top',
|
|
221
|
+
chartLegendLeft: 'Left',
|
|
222
|
+
chartLegendRight: 'Right',
|
|
223
|
+
chartLegendHidden: 'Hidden',
|
|
224
|
+
chartBuilderDataLabels: 'Data labels',
|
|
225
|
+
chartBuilderPanelSetting: 'Panel setting',
|
|
226
|
+
chartLabelsTop: 'Top',
|
|
227
|
+
chartLabelsOutside: 'Outside',
|
|
228
|
+
chartLabelsInside: 'Inside',
|
|
229
|
+
chartLabelsCenter: 'Center',
|
|
230
|
+
chartLabelsHidden: 'Hidden',
|
|
231
|
+
chartBuilderSeriesLabels: 'Series labels',
|
|
232
|
+
chartBuilderCrosshairLabels: 'Crosshair labels',
|
|
233
|
+
chartBuilderCompactBelow: 'Compact under',
|
|
234
|
+
chartBuilderCompactBelowTitle: 'Below this width in px the chart drops its series and data labels, turns the category labels vertical and hides the legend',
|
|
235
|
+
chartBuilderValueAxis: 'Value axis',
|
|
236
|
+
chartBuilderRightAxis: 'Right axis',
|
|
237
|
+
chartBuilderCategoryAxis: 'Category axis',
|
|
238
|
+
chartBuilderMin: 'Min',
|
|
239
|
+
chartBuilderMax: 'Max',
|
|
240
|
+
chartBuilderAuto: 'auto',
|
|
241
|
+
chartBuilderOff: 'off',
|
|
242
|
+
chartBuilderGridLines: 'Grid lines',
|
|
243
|
+
chartBuilderAxisLabels: 'Labels',
|
|
244
|
+
chartBuilderLabelsAuto: 'Auto',
|
|
245
|
+
chartBuilderLabelsHorizontal: 'Horizontal',
|
|
246
|
+
chartBuilderLabelsTilted: 'Tilted',
|
|
247
|
+
chartBuilderLabelsVertical: 'Vertical',
|
|
248
|
+
chartBuilderSeries: 'Series',
|
|
249
|
+
chartBuilderColor: 'Color',
|
|
250
|
+
chartBuilderSeriesType: 'Type',
|
|
251
|
+
chartBuilderAxis: 'Axis',
|
|
252
|
+
chartBuilderMarker: 'Marker',
|
|
253
|
+
chartBuilderWidth: 'Width',
|
|
254
|
+
chartBuilderStack: 'Stack',
|
|
255
|
+
chartBuilderStackPlaceholder: 'own',
|
|
256
|
+
chartBuilderSeriesColorLabel: '{series} colour',
|
|
257
|
+
chartBuilderSeriesTypeLabel: '{series} type',
|
|
258
|
+
chartBuilderSeriesAxisLabel: '{series} axis',
|
|
259
|
+
chartBuilderSeriesMarkerLabel: '{series} marker',
|
|
260
|
+
chartBuilderSeriesWidthLabel: '{series} line width',
|
|
261
|
+
chartBuilderSeriesStackLabel: '{series} stack group',
|
|
262
|
+
chartBuilderChartType: 'Chart',
|
|
263
|
+
chartBuilderBar: 'Bar',
|
|
264
|
+
chartBuilderLine: 'Line',
|
|
265
|
+
chartBuilderArea: 'Area',
|
|
266
|
+
chartBuilderLeft: 'Left',
|
|
267
|
+
chartBuilderRight: 'Right',
|
|
268
|
+
chartBuilderStyle: 'Style',
|
|
269
|
+
chartBuilderFontSize: 'Font size',
|
|
270
|
+
chartBuilderFontFamily: 'Font',
|
|
271
|
+
chartBuilderBackground: 'Background',
|
|
272
|
+
chartBuilderTextColor: 'Text',
|
|
273
|
+
chartBuilderResetFormat: 'Reset format',
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Merge a consumer's `localization.text` over the English defaults. The map
|
|
277
|
+
* usually carries the chrome keys too; only the chart panel keys are read.
|
|
278
|
+
*/
|
|
279
|
+
export function resolveChartPanelMessages(overrides) {
|
|
280
|
+
return resolveMessages(defaultChartPanelMessages, overrides);
|
|
281
|
+
}
|
|
282
|
+
/** Fill `{name}` placeholders in a message. */
|
|
283
|
+
export function chartPanelMessage(template, values) {
|
|
284
|
+
return template.replace(/\{(\w+)\}/g, (_, k) => (k in values ? String(values[k]) : `{${k}}`));
|
|
285
|
+
}
|