@rowsncolumns/charts 28.1.14 → 28.1.15

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.
Files changed (99) hide show
  1. package/dist/cjs/basic-chart/basic-chart.d.ts.map +1 -1
  2. package/dist/cjs/basic-chart/basic-chart.js +308 -270
  3. package/dist/cjs/components/editors/chart-editor-capabilities.d.ts +48 -0
  4. package/dist/cjs/components/editors/chart-editor-capabilities.d.ts.map +1 -0
  5. package/dist/cjs/components/editors/chart-editor-capabilities.js +62 -0
  6. package/dist/cjs/components/editors/chart-editor.d.ts.map +1 -1
  7. package/dist/cjs/components/editors/chart-editor.js +200 -534
  8. package/dist/cjs/components/editors/fields/axis-options-fields.d.ts +16 -0
  9. package/dist/cjs/components/editors/fields/axis-options-fields.d.ts.map +1 -0
  10. package/dist/cjs/components/editors/fields/axis-options-fields.js +31 -0
  11. package/dist/cjs/components/editors/fields/chart-type-options.d.ts +25 -0
  12. package/dist/cjs/components/editors/fields/chart-type-options.d.ts.map +1 -0
  13. package/dist/cjs/components/editors/fields/chart-type-options.js +170 -0
  14. package/dist/cjs/components/editors/fields/data-labels-fields.d.ts +15 -0
  15. package/dist/cjs/components/editors/fields/data-labels-fields.d.ts.map +1 -0
  16. package/dist/cjs/components/editors/fields/data-labels-fields.js +57 -0
  17. package/dist/cjs/components/editors/fields/primitives.d.ts +54 -0
  18. package/dist/cjs/components/editors/fields/primitives.d.ts.map +1 -0
  19. package/dist/cjs/components/editors/fields/primitives.js +52 -0
  20. package/dist/cjs/components/editors/fields/series-format-fields.d.ts +17 -0
  21. package/dist/cjs/components/editors/fields/series-format-fields.d.ts.map +1 -0
  22. package/dist/cjs/components/editors/fields/series-format-fields.js +165 -0
  23. package/dist/cjs/components/editors/fields/series-name-field.d.ts +16 -0
  24. package/dist/cjs/components/editors/fields/series-name-field.d.ts.map +1 -0
  25. package/dist/cjs/components/editors/fields/series-name-field.js +36 -0
  26. package/dist/cjs/components/editors/fields/text-format-fields.d.ts +20 -0
  27. package/dist/cjs/components/editors/fields/text-format-fields.d.ts.map +1 -0
  28. package/dist/cjs/components/editors/fields/text-format-fields.js +46 -0
  29. package/dist/cjs/config.d.ts.map +1 -1
  30. package/dist/cjs/config.js +3 -0
  31. package/dist/cjs/interface/create-chart.d.ts +3 -2
  32. package/dist/cjs/interface/create-chart.d.ts.map +1 -1
  33. package/dist/cjs/interface/create-chart.js +7 -0
  34. package/dist/cjs/plotly/basic-chart/basic-chart.d.ts.map +1 -1
  35. package/dist/cjs/plotly/basic-chart/basic-chart.js +255 -218
  36. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  37. package/dist/cjs/utils/chart-orientation.d.ts.map +1 -1
  38. package/dist/cjs/utils/chart-orientation.js +24 -12
  39. package/dist/cjs/utils/chart-spec-utils.d.ts.map +1 -1
  40. package/dist/cjs/utils/chart-spec-utils.js +120 -21
  41. package/dist/cjs/utils/echarts-overlays.d.ts +2 -0
  42. package/dist/cjs/utils/echarts-overlays.d.ts.map +1 -1
  43. package/dist/cjs/utils/echarts-overlays.js +25 -12
  44. package/dist/cjs/utils/series-name.d.ts +12 -0
  45. package/dist/cjs/utils/series-name.d.ts.map +1 -0
  46. package/dist/cjs/utils/series-name.js +26 -0
  47. package/dist/cjs/utils/trendline.d.ts +9 -0
  48. package/dist/cjs/utils/trendline.d.ts.map +1 -1
  49. package/dist/cjs/utils/trendline.js +16 -1
  50. package/dist/esm/basic-chart/basic-chart.d.ts.map +1 -1
  51. package/dist/esm/basic-chart/basic-chart.js +73 -37
  52. package/dist/esm/components/editors/chart-editor-capabilities.d.ts +48 -0
  53. package/dist/esm/components/editors/chart-editor-capabilities.d.ts.map +1 -0
  54. package/dist/esm/components/editors/chart-editor-capabilities.js +58 -0
  55. package/dist/esm/components/editors/chart-editor.d.ts.map +1 -1
  56. package/dist/esm/components/editors/chart-editor.js +166 -448
  57. package/dist/esm/components/editors/fields/axis-options-fields.d.ts +16 -0
  58. package/dist/esm/components/editors/fields/axis-options-fields.d.ts.map +1 -0
  59. package/dist/esm/components/editors/fields/axis-options-fields.js +22 -0
  60. package/dist/esm/components/editors/fields/chart-type-options.d.ts +25 -0
  61. package/dist/esm/components/editors/fields/chart-type-options.d.ts.map +1 -0
  62. package/dist/esm/components/editors/fields/chart-type-options.js +151 -0
  63. package/dist/esm/components/editors/fields/data-labels-fields.d.ts +15 -0
  64. package/dist/esm/components/editors/fields/data-labels-fields.d.ts.map +1 -0
  65. package/dist/esm/components/editors/fields/data-labels-fields.js +47 -0
  66. package/dist/esm/components/editors/fields/primitives.d.ts +54 -0
  67. package/dist/esm/components/editors/fields/primitives.d.ts.map +1 -0
  68. package/dist/esm/components/editors/fields/primitives.js +26 -0
  69. package/dist/esm/components/editors/fields/series-format-fields.d.ts +17 -0
  70. package/dist/esm/components/editors/fields/series-format-fields.d.ts.map +1 -0
  71. package/dist/esm/components/editors/fields/series-format-fields.js +143 -0
  72. package/dist/esm/components/editors/fields/series-name-field.d.ts +16 -0
  73. package/dist/esm/components/editors/fields/series-name-field.d.ts.map +1 -0
  74. package/dist/esm/components/editors/fields/series-name-field.js +31 -0
  75. package/dist/esm/components/editors/fields/text-format-fields.d.ts +20 -0
  76. package/dist/esm/components/editors/fields/text-format-fields.d.ts.map +1 -0
  77. package/dist/esm/components/editors/fields/text-format-fields.js +34 -0
  78. package/dist/esm/config.d.ts.map +1 -1
  79. package/dist/esm/config.js +3 -0
  80. package/dist/esm/interface/create-chart.d.ts +3 -2
  81. package/dist/esm/interface/create-chart.d.ts.map +1 -1
  82. package/dist/esm/interface/create-chart.js +8 -1
  83. package/dist/esm/plotly/basic-chart/basic-chart.d.ts.map +1 -1
  84. package/dist/esm/plotly/basic-chart/basic-chart.js +52 -30
  85. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  86. package/dist/esm/utils/chart-orientation.d.ts.map +1 -1
  87. package/dist/esm/utils/chart-orientation.js +20 -0
  88. package/dist/esm/utils/chart-spec-utils.d.ts.map +1 -1
  89. package/dist/esm/utils/chart-spec-utils.js +95 -8
  90. package/dist/esm/utils/echarts-overlays.d.ts +2 -0
  91. package/dist/esm/utils/echarts-overlays.d.ts.map +1 -1
  92. package/dist/esm/utils/echarts-overlays.js +15 -1
  93. package/dist/esm/utils/series-name.d.ts +12 -0
  94. package/dist/esm/utils/series-name.d.ts.map +1 -0
  95. package/dist/esm/utils/series-name.js +24 -0
  96. package/dist/esm/utils/trendline.d.ts +9 -0
  97. package/dist/esm/utils/trendline.d.ts.map +1 -1
  98. package/dist/esm/utils/trendline.js +14 -0
  99. package/package.json +3 -3
@@ -14,7 +14,7 @@
14
14
  * trendline is a regression of Y on X (#1067).
15
15
  */
16
16
  import { computeErrorBars, resolveCustomErrorBarValues } from "./error-bars";
17
- import { computeTrendline } from "./trendline";
17
+ import { computeTrendline, trendlineLabel } from "./trendline";
18
18
  const ERROR_BAR_CAP_HALF = 5;
19
19
  /**
20
20
  * Build the overlay series for one data series. Returns an empty array
@@ -39,9 +39,23 @@ export const buildEchartsOverlaySeries = ({ series, values, xValues, horizontal
39
39
  continue;
40
40
  const tlName = tl.name ??
41
41
  `${dataLabel ? dataLabel + " " : ""}${tl.type ?? "linear"} trend`;
42
+ // Excel's "Display Equation" / "Display R-squared" sit at the line's end.
43
+ const label = trendlineLabel(tl, result);
42
44
  overlays.push({
43
45
  type: "line",
44
46
  name: tlName,
47
+ ...(label
48
+ ? {
49
+ endLabel: {
50
+ show: true,
51
+ formatter: label,
52
+ color: tl.color ?? seriesColor,
53
+ fontSize: 11,
54
+ offset: [4, 0],
55
+ },
56
+ labelLayout: { moveOverlap: "shiftY" },
57
+ }
58
+ : {}),
45
59
  // On a category chart the index x overlays the category axis even
46
60
  // when forecasting extends beyond the data range; a horizontal bar
47
61
  // keeps its categories on y.
@@ -0,0 +1,12 @@
1
+ import type { ChartData, SheetRange } from "@rowsncolumns/spreadsheet";
2
+ /**
3
+ * A series' name as Excel shows it: the current text of its header cell
4
+ * when the name is linked to one (`dataLabelSource`), else `undefined` so
5
+ * the caller falls back to the literal / formula `dataLabel`.
6
+ *
7
+ * The cell is read with the hidden rows and columns included — Excel keeps
8
+ * a series' name when its header row is hidden — and a blank cell yields
9
+ * the cached `dataLabel`, which is what Excel's `<c:strCache>` is for.
10
+ */
11
+ export declare const linkedSeriesName: (entry: Pick<ChartData, "dataLabel" | "dataLabelSource"> | undefined, getDomainValuesFromRange: (range: SheetRange, hiddenDimensionStrategy?: "SHOW_ALL" | "SKIP_HIDDEN_ROWS_AND_COLUMNS" | null) => (string | number | null | undefined)[] | undefined) => string | undefined;
12
+ //# sourceMappingURL=series-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"series-name.d.ts","sourceRoot":"","sources":["../../../utils/series-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,iBAAiB,CAAC,GAAG,SAAS,EACnE,0BAA0B,CACxB,KAAK,EAAE,UAAU,EACjB,uBAAuB,CAAC,EAAE,UAAU,GAAG,8BAA8B,GAAG,IAAI,KACzE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,KACtD,MAAM,GAAG,SAaX,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * A series' name as Excel shows it: the current text of its header cell
3
+ * when the name is linked to one (`dataLabelSource`), else `undefined` so
4
+ * the caller falls back to the literal / formula `dataLabel`.
5
+ *
6
+ * The cell is read with the hidden rows and columns included — Excel keeps
7
+ * a series' name when its header row is hidden — and a blank cell yields
8
+ * the cached `dataLabel`, which is what Excel's `<c:strCache>` is for.
9
+ */
10
+ export const linkedSeriesName = (entry, getDomainValuesFromRange) => {
11
+ const source = entry?.dataLabelSource;
12
+ if (!source)
13
+ return undefined;
14
+ const cell = {
15
+ ...source,
16
+ endRowIndex: source.startRowIndex,
17
+ endColumnIndex: source.startColumnIndex,
18
+ };
19
+ const value = getDomainValuesFromRange(cell, "SHOW_ALL")?.[0];
20
+ if (value === null || value === undefined || value === "") {
21
+ return entry?.dataLabel ?? "";
22
+ }
23
+ return String(value);
24
+ };
@@ -57,4 +57,13 @@ export declare const computeTrendline: (values: (number | null | undefined)[], s
57
57
  forecastForward?: number | null;
58
58
  forecastBackward?: number | null;
59
59
  }, xValues?: (number | null | undefined)[] | null) => TrendlineResult | null;
60
+ /**
61
+ * The label Excel prints next to a trendline when "Display Equation on
62
+ * chart" / "Display R-squared value on chart" are on — one line each, or
63
+ * `undefined` when neither is requested or the fit has no equation.
64
+ */
65
+ export declare const trendlineLabel: (spec: {
66
+ showEquation?: boolean | null;
67
+ showRSquared?: boolean | null;
68
+ }, result: Pick<TrendlineResult, "equation" | "rSquared">) => string | undefined;
60
69
  //# sourceMappingURL=trendline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trendline.d.ts","sourceRoot":"","sources":["../../../utils/trendline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,WAAW,CAAC;AAEhB,6FAA6F;AAC7F,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,sEAAsE;IACtE,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAkKF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EACrC,OAAM;IACJ,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,EACN,UAAU,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,KAC7C,eAAe,GAAG,IA+HpB,CAAC"}
1
+ {"version":3,"file":"trendline.d.ts","sourceRoot":"","sources":["../../../utils/trendline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,WAAW,CAAC;AAEhB,6FAA6F;AAC7F,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,sEAAsE;IACtE,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAkKF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EACrC,OAAM;IACJ,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,EACN,UAAU,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,KAC7C,eAAe,GAAG,IA+HpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM;IAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,EACtE,QAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,CAAC,KACrD,MAAM,GAAG,SAOX,CAAC"}
@@ -328,3 +328,17 @@ export const computeTrendline = (values, spec = {}, xValues) => {
328
328
  equation,
329
329
  };
330
330
  };
331
+ /**
332
+ * The label Excel prints next to a trendline when "Display Equation on
333
+ * chart" / "Display R-squared value on chart" are on — one line each, or
334
+ * `undefined` when neither is requested or the fit has no equation.
335
+ */
336
+ export const trendlineLabel = (spec, result) => {
337
+ const lines = [];
338
+ if (spec.showEquation && result.equation)
339
+ lines.push(result.equation);
340
+ if (spec.showRSquared && result.rSquared !== null) {
341
+ lines.push(`R² = ${result.rSquared.toFixed(4)}`);
342
+ }
343
+ return lines.length ? lines.join("\n") : undefined;
344
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rowsncolumns/charts",
3
- "version": "28.1.14",
3
+ "version": "28.1.15",
4
4
  "author": "Vinay M",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "main": "./dist/cjs/index.js",
@@ -70,9 +70,9 @@
70
70
  "@rowsncolumns/common-types": ">=5.3.2",
71
71
  "@rowsncolumns/grid": ">=13.2.35",
72
72
  "@rowsncolumns/icons": ">=7.2.33",
73
- "@rowsncolumns/spreadsheet": ">=10.4.12",
73
+ "@rowsncolumns/spreadsheet": ">=10.4.13",
74
74
  "@rowsncolumns/spreadsheet-state": ">=29.1.8",
75
- "@rowsncolumns/toolkit": ">=24.5.12",
75
+ "@rowsncolumns/toolkit": ">=24.5.13",
76
76
  "@rowsncolumns/ui": ">=16.0.4",
77
77
  "@rowsncolumns/utils": ">=9.5.5",
78
78
  "@types/react-plotly.js": "^2.6.3",