@rowsncolumns/toolkit 24.5.7 → 24.5.9
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/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/charts.js +44 -12
- package/dist/cjs/exporter/xlsx/chart-builder.js +39 -21
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/charts.js +32 -0
- package/dist/esm/exporter/xlsx/chart-builder.js +38 -20
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1586,6 +1586,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1586
1586
|
var errorBars = extractErrorBars(ser, sheetId, resolveSheetId);
|
|
1587
1587
|
var marker = extractSeriesMarker(ser);
|
|
1588
1588
|
var dataPointColors = extractSeriesDataPointColors(ser);
|
|
1589
|
+
var seriesDataLabels = extractSeriesDataLabels(ser);
|
|
1589
1590
|
var nameRef = getWithFallback(ser, TX_REF_PATHS);
|
|
1590
1591
|
// Per-series category reference — charts whose series plot against
|
|
1591
1592
|
// different category ranges can't be represented by the single
|
|
@@ -1597,9 +1598,9 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1597
1598
|
? resolveSourcesFromRef(serCatRef, sheetId, resolveSheetId)
|
|
1598
1599
|
: [];
|
|
1599
1600
|
orders.push(seriesOrderOf(ser));
|
|
1600
|
-
series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(seriesIndex + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), (container.isXY ? {} : { seriesChartType: seriesChartType })), (useSecondaryAxis ? { useSecondaryAxis: true } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (trendlines && trendlines.length ? { trendlines: trendlines } : {})), (errorBars ? { errorBars: errorBars } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
|
|
1601
|
+
series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(seriesIndex + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), (container.isXY ? {} : { seriesChartType: seriesChartType })), (useSecondaryAxis ? { useSecondaryAxis: true } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (trendlines && trendlines.length ? { trendlines: trendlines } : {})), (errorBars ? { errorBars: errorBars } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
|
|
1601
1602
|
? { dataPointColors: dataPointColors }
|
|
1602
|
-
: {})));
|
|
1603
|
+
: {})), (seriesDataLabels ? { dataLabels: seriesDataLabels } : {})));
|
|
1603
1604
|
seriesIndex++;
|
|
1604
1605
|
}
|
|
1605
1606
|
}
|
|
@@ -1653,6 +1654,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1653
1654
|
}
|
|
1654
1655
|
var marker = extractSeriesMarker(ser);
|
|
1655
1656
|
var dataPointColors = extractSeriesDataPointColors(ser);
|
|
1657
|
+
var seriesDataLabels = extractSeriesDataLabels(ser);
|
|
1656
1658
|
var nameRef = getWithFallback(ser, TX_REF_PATHS);
|
|
1657
1659
|
var serCatRef = isXYChart(chartType)
|
|
1658
1660
|
? undefined
|
|
@@ -1661,9 +1663,9 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1661
1663
|
? resolveSourcesFromRef(serCatRef, sheetId, resolveSheetId)
|
|
1662
1664
|
: [];
|
|
1663
1665
|
orders.push(seriesOrderOf(ser));
|
|
1664
|
-
series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(index + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
|
|
1666
|
+
series.push(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dataLabel: seriesTitle || "Series ".concat(index + 1) }, (nameRef ? { dataLabelRef: nameRef } : {})), (categorySources.length ? { categorySources: categorySources } : {})), { color: colorInfo.color }), (colorInfo.noFill ? { noFill: true } : {})), { negativeColor: colorInfo.negativeColor, invertIfNegative: colorInfo.invertIfNegative }), (colorInfo.gradient ? { gradient: colorInfo.gradient } : {})), { sources: sources }), (inlineValues && inlineValues.length ? { inlineValues: inlineValues } : {})), (marker ? { marker: marker } : {})), (dataPointColors && dataPointColors.length
|
|
1665
1667
|
? { dataPointColors: dataPointColors }
|
|
1666
|
-
: {})));
|
|
1668
|
+
: {})), (seriesDataLabels ? { dataLabels: seriesDataLabels } : {})));
|
|
1667
1669
|
});
|
|
1668
1670
|
}
|
|
1669
1671
|
}
|
|
@@ -2692,13 +2694,22 @@ var mapDataLabelPosition = function (val) {
|
|
|
2692
2694
|
return "outsideEnd";
|
|
2693
2695
|
case "bestFit":
|
|
2694
2696
|
return "bestFit";
|
|
2697
|
+
// Line / scatter placements (ST_DLblPos t / b / l / r).
|
|
2698
|
+
case "t":
|
|
2699
|
+
return "above";
|
|
2700
|
+
case "b":
|
|
2701
|
+
return "below";
|
|
2702
|
+
case "l":
|
|
2703
|
+
return "left";
|
|
2704
|
+
case "r":
|
|
2705
|
+
return "right";
|
|
2695
2706
|
default:
|
|
2696
2707
|
return undefined;
|
|
2697
2708
|
}
|
|
2698
2709
|
};
|
|
2699
2710
|
function extractDataLabelsOptions(plotArea, chartType) {
|
|
2700
2711
|
var e_35, _a;
|
|
2701
|
-
var _b, _c, _d, _e
|
|
2712
|
+
var _b, _c, _d, _e;
|
|
2702
2713
|
// Look for <c:dLbls> inside the chartType-specific container. We pick
|
|
2703
2714
|
// the first one we find — chart-level labels apply to all series.
|
|
2704
2715
|
// The 3-D classes (bar3DChart / line3DChart / pie3DChart / area3DChart)
|
|
@@ -2737,27 +2748,48 @@ function extractDataLabelsOptions(plotArea, chartType) {
|
|
|
2737
2748
|
var dLbls = (_e = (_d = (_c = get(container, "c:dLbls")) !== null && _c !== void 0 ? _c : get(container, "dLbls")) !== null && _d !== void 0 ? _d : get(plotArea, "c:dLbls")) !== null && _e !== void 0 ? _e : get(plotArea, "dLbls");
|
|
2738
2749
|
if (!dLbls)
|
|
2739
2750
|
return undefined;
|
|
2751
|
+
return readDataLabelsNode(dLbls);
|
|
2752
|
+
}
|
|
2753
|
+
/**
|
|
2754
|
+
* `<c:ser><c:dLbls>` — this series' own labels, which replace the group's
|
|
2755
|
+
* for it. `<c:delete val="1"/>`, or a node with every `show*` flag off,
|
|
2756
|
+
* turns a labelled group's labels off for the series.
|
|
2757
|
+
*/
|
|
2758
|
+
function extractSeriesDataLabels(ser) {
|
|
2759
|
+
var _a, _b;
|
|
2760
|
+
var dLbls = (_a = get(ser, "c:dLbls")) !== null && _a !== void 0 ? _a : get(ser, "dLbls");
|
|
2761
|
+
if (!dLbls)
|
|
2762
|
+
return undefined;
|
|
2763
|
+
var deleted = readBoolean((_b = get(dLbls, "c:delete.a$.val")) !== null && _b !== void 0 ? _b : get(dLbls, "delete.a$.val"));
|
|
2764
|
+
if (deleted)
|
|
2765
|
+
return { show: false };
|
|
2766
|
+
var options = readDataLabelsNode(dLbls);
|
|
2767
|
+
return (options === null || options === void 0 ? void 0 : options.show) ? options : { show: false };
|
|
2768
|
+
}
|
|
2769
|
+
/** The `ChartDataLabelsOptions` a `<c:dLbls>` node describes. */
|
|
2770
|
+
function readDataLabelsNode(dLbls) {
|
|
2771
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
2740
2772
|
var result = {};
|
|
2741
|
-
var pos = (
|
|
2773
|
+
var pos = (_a = get(dLbls, "c:dLblPos.a$.val")) !== null && _a !== void 0 ? _a : get(dLbls, "dLblPos.a$.val");
|
|
2742
2774
|
var position = mapDataLabelPosition(pos);
|
|
2743
2775
|
if (position)
|
|
2744
2776
|
result.position = position;
|
|
2745
|
-
var showVal = readBoolean((
|
|
2777
|
+
var showVal = readBoolean((_b = get(dLbls, "c:showVal.a$.val")) !== null && _b !== void 0 ? _b : get(dLbls, "showVal.a$.val"));
|
|
2746
2778
|
if (showVal) {
|
|
2747
2779
|
result.show = true;
|
|
2748
2780
|
result.showValue = true;
|
|
2749
2781
|
}
|
|
2750
|
-
var showCat = readBoolean((
|
|
2782
|
+
var showCat = readBoolean((_c = get(dLbls, "c:showCatName.a$.val")) !== null && _c !== void 0 ? _c : get(dLbls, "showCatName.a$.val"));
|
|
2751
2783
|
if (showCat) {
|
|
2752
2784
|
result.show = true;
|
|
2753
2785
|
result.showCategoryName = true;
|
|
2754
2786
|
}
|
|
2755
|
-
var showPct = readBoolean((
|
|
2787
|
+
var showPct = readBoolean((_d = get(dLbls, "c:showPercent.a$.val")) !== null && _d !== void 0 ? _d : get(dLbls, "showPercent.a$.val"));
|
|
2756
2788
|
if (showPct) {
|
|
2757
2789
|
result.show = true;
|
|
2758
2790
|
result.showPercent = true;
|
|
2759
2791
|
}
|
|
2760
|
-
var showSer = readBoolean((
|
|
2792
|
+
var showSer = readBoolean((_e = get(dLbls, "c:showSerName.a$.val")) !== null && _e !== void 0 ? _e : get(dLbls, "showSerName.a$.val"));
|
|
2761
2793
|
if (showSer) {
|
|
2762
2794
|
result.show = true;
|
|
2763
2795
|
result.showSeriesName = true;
|
|
@@ -2766,14 +2798,14 @@ function extractDataLabelsOptions(plotArea, chartType) {
|
|
|
2766
2798
|
if (position && result.show === undefined)
|
|
2767
2799
|
result.show = true;
|
|
2768
2800
|
// <c:txPr> on the dLbls block — affects every label in the chart.
|
|
2769
|
-
var textFormat = extractTextProperties((
|
|
2801
|
+
var textFormat = extractTextProperties((_f = get(dLbls, "c:txPr")) !== null && _f !== void 0 ? _f : get(dLbls, "txPr"));
|
|
2770
2802
|
if (textFormat)
|
|
2771
2803
|
result.textFormat = textFormat;
|
|
2772
2804
|
// <c:numFmt formatCode="…"/> — Excel uses this to render labels as
|
|
2773
2805
|
// currency / percent / etc. (`"$"#,##0`, `0.00%`). Without parsing
|
|
2774
2806
|
// this, the renderer falls back to raw numbers (e.g. `1831` instead
|
|
2775
2807
|
// of `$1,831`).
|
|
2776
|
-
var numFmt = (
|
|
2808
|
+
var numFmt = (_j = (_h = (_g = get(dLbls, "c:numFmt.a$.formatCode")) !== null && _g !== void 0 ? _g : get(dLbls, "numFmt.a$.formatCode")) !== null && _h !== void 0 ? _h : get(dLbls, "c:numFmt.a$.t$")) !== null && _j !== void 0 ? _j : get(dLbls, "numFmt.a$.t$");
|
|
2777
2809
|
if (typeof numFmt === "string" && numFmt) {
|
|
2778
2810
|
result.numberFormatPattern = numFmt;
|
|
2779
2811
|
}
|
|
@@ -2134,6 +2134,11 @@ var DLBL_POS = {
|
|
|
2134
2134
|
insideEnd: "inEnd",
|
|
2135
2135
|
outsideEnd: "outEnd",
|
|
2136
2136
|
bestFit: "bestFit",
|
|
2137
|
+
// Line / scatter placements.
|
|
2138
|
+
above: "t",
|
|
2139
|
+
below: "b",
|
|
2140
|
+
left: "l",
|
|
2141
|
+
right: "r",
|
|
2137
2142
|
};
|
|
2138
2143
|
var applyChartFormatting = function (chartSpace, spec, sheetNameById) {
|
|
2139
2144
|
var _a, _b;
|
|
@@ -2165,8 +2170,9 @@ var SERIES_CONTAINER_KEYS = [
|
|
|
2165
2170
|
];
|
|
2166
2171
|
/**
|
|
2167
2172
|
* Walk the per-chart-type containers in plotArea and apply trendlines
|
|
2168
|
-
* / errBars to each emitted `<c:ser>`. The
|
|
2169
|
-
* matches the order emitted by the builder,
|
|
2173
|
+
* / errBars / the series' own data labels to each emitted `<c:ser>`. The
|
|
2174
|
+
* series order in spec.series matches the order emitted by the builder,
|
|
2175
|
+
* so we index by position.
|
|
2170
2176
|
*/
|
|
2171
2177
|
var applySeriesOverlays = function (plotArea, series, sheetNameById) {
|
|
2172
2178
|
var e_19, _a, e_20, _b, e_21, _c;
|
|
@@ -2217,6 +2223,13 @@ var applySeriesOverlays = function (plotArea, series, sheetNameById) {
|
|
|
2217
2223
|
if (built)
|
|
2218
2224
|
node["c:errBars"] = built;
|
|
2219
2225
|
}
|
|
2226
|
+
// `ChartData.dataLabels` — the series' own `<c:dLbls>` overrides the
|
|
2227
|
+
// group's; `{ show: false }` is Excel's `<c:delete val="1"/>`.
|
|
2228
|
+
if (data.dataLabels) {
|
|
2229
|
+
node["c:dLbls"] = data.dataLabels.show
|
|
2230
|
+
? buildDataLabelsNode(data.dataLabels)
|
|
2231
|
+
: { "c:delete": { a$: { val: "1" } } };
|
|
2232
|
+
}
|
|
2220
2233
|
}
|
|
2221
2234
|
}
|
|
2222
2235
|
catch (e_21_1) { e_21 = { error: e_21_1 }; }
|
|
@@ -2712,25 +2725,8 @@ var applyLegend = function (chartNode, legend) {
|
|
|
2712
2725
|
}
|
|
2713
2726
|
chartNode["c:legend"] = __assign({ "c:legendPos": { a$: { val: posCode } }, "c:overlay": { a$: { val: "0" } } }, (txPr ? { "c:txPr": txPr } : {}));
|
|
2714
2727
|
};
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
if (!(dataLabels === null || dataLabels === void 0 ? void 0 : dataLabels.show))
|
|
2718
|
-
return;
|
|
2719
|
-
// Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
|
|
2720
|
-
// to whichever exists.
|
|
2721
|
-
// Chart-level labels apply to every chart group — a combo chart has
|
|
2722
|
-
// one per series type.
|
|
2723
|
-
var containers = [
|
|
2724
|
-
"c:barChart",
|
|
2725
|
-
"c:lineChart",
|
|
2726
|
-
"c:pieChart",
|
|
2727
|
-
"c:doughnutChart",
|
|
2728
|
-
"c:areaChart",
|
|
2729
|
-
]
|
|
2730
|
-
.flatMap(function (k) { return (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]); })
|
|
2731
|
-
.filter(Boolean);
|
|
2732
|
-
if (!containers.length)
|
|
2733
|
-
return;
|
|
2728
|
+
/** A `<c:dLbls>` node for `ChartDataLabelsOptions` with `show: true`. */
|
|
2729
|
+
var buildDataLabelsNode = function (dataLabels) {
|
|
2734
2730
|
var posCode = dataLabels.position && DLBL_POS[dataLabels.position];
|
|
2735
2731
|
var dLbls = {};
|
|
2736
2732
|
if (posCode)
|
|
@@ -2768,6 +2764,28 @@ var applyDataLabels = function (plotArea, dataLabels) {
|
|
|
2768
2764
|
a$: { val: dataLabels.showPercent ? "1" : "0" },
|
|
2769
2765
|
};
|
|
2770
2766
|
dLbls["c:showBubbleSize"] = { a$: { val: "0" } };
|
|
2767
|
+
return dLbls;
|
|
2768
|
+
};
|
|
2769
|
+
var applyDataLabels = function (plotArea, dataLabels) {
|
|
2770
|
+
var e_27, _a;
|
|
2771
|
+
if (!(dataLabels === null || dataLabels === void 0 ? void 0 : dataLabels.show))
|
|
2772
|
+
return;
|
|
2773
|
+
// Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
|
|
2774
|
+
// to whichever exists.
|
|
2775
|
+
// Chart-level labels apply to every chart group — a combo chart has
|
|
2776
|
+
// one per series type.
|
|
2777
|
+
var containers = [
|
|
2778
|
+
"c:barChart",
|
|
2779
|
+
"c:lineChart",
|
|
2780
|
+
"c:pieChart",
|
|
2781
|
+
"c:doughnutChart",
|
|
2782
|
+
"c:areaChart",
|
|
2783
|
+
]
|
|
2784
|
+
.flatMap(function (k) { return (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]); })
|
|
2785
|
+
.filter(Boolean);
|
|
2786
|
+
if (!containers.length)
|
|
2787
|
+
return;
|
|
2788
|
+
var dLbls = buildDataLabelsNode(dataLabels);
|
|
2771
2789
|
try {
|
|
2772
2790
|
for (var containers_1 = __values(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {
|
|
2773
2791
|
var container = containers_1_1.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1437,6 +1437,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1437
1437
|
const errorBars = extractErrorBars(ser, sheetId, resolveSheetId);
|
|
1438
1438
|
const marker = extractSeriesMarker(ser);
|
|
1439
1439
|
const dataPointColors = extractSeriesDataPointColors(ser);
|
|
1440
|
+
const seriesDataLabels = extractSeriesDataLabels(ser);
|
|
1440
1441
|
const nameRef = getWithFallback(ser, TX_REF_PATHS);
|
|
1441
1442
|
// Per-series category reference — charts whose series plot against
|
|
1442
1443
|
// different category ranges can't be represented by the single
|
|
@@ -1472,6 +1473,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1472
1473
|
...(dataPointColors && dataPointColors.length
|
|
1473
1474
|
? { dataPointColors }
|
|
1474
1475
|
: {}),
|
|
1476
|
+
...(seriesDataLabels ? { dataLabels: seriesDataLabels } : {}),
|
|
1475
1477
|
});
|
|
1476
1478
|
seriesIndex++;
|
|
1477
1479
|
}
|
|
@@ -1509,6 +1511,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1509
1511
|
}
|
|
1510
1512
|
const marker = extractSeriesMarker(ser);
|
|
1511
1513
|
const dataPointColors = extractSeriesDataPointColors(ser);
|
|
1514
|
+
const seriesDataLabels = extractSeriesDataLabels(ser);
|
|
1512
1515
|
const nameRef = getWithFallback(ser, TX_REF_PATHS);
|
|
1513
1516
|
const serCatRef = isXYChart(chartType)
|
|
1514
1517
|
? undefined
|
|
@@ -1532,6 +1535,7 @@ export function extractChartSeries(plotArea, chartType, sheetId, resolveSheetId)
|
|
|
1532
1535
|
...(dataPointColors && dataPointColors.length
|
|
1533
1536
|
? { dataPointColors }
|
|
1534
1537
|
: {}),
|
|
1538
|
+
...(seriesDataLabels ? { dataLabels: seriesDataLabels } : {}),
|
|
1535
1539
|
});
|
|
1536
1540
|
});
|
|
1537
1541
|
}
|
|
@@ -2473,6 +2477,15 @@ const mapDataLabelPosition = (val) => {
|
|
|
2473
2477
|
return "outsideEnd";
|
|
2474
2478
|
case "bestFit":
|
|
2475
2479
|
return "bestFit";
|
|
2480
|
+
// Line / scatter placements (ST_DLblPos t / b / l / r).
|
|
2481
|
+
case "t":
|
|
2482
|
+
return "above";
|
|
2483
|
+
case "b":
|
|
2484
|
+
return "below";
|
|
2485
|
+
case "l":
|
|
2486
|
+
return "left";
|
|
2487
|
+
case "r":
|
|
2488
|
+
return "right";
|
|
2476
2489
|
default:
|
|
2477
2490
|
return undefined;
|
|
2478
2491
|
}
|
|
@@ -2509,6 +2522,25 @@ function extractDataLabelsOptions(plotArea, chartType) {
|
|
|
2509
2522
|
get(plotArea, "dLbls");
|
|
2510
2523
|
if (!dLbls)
|
|
2511
2524
|
return undefined;
|
|
2525
|
+
return readDataLabelsNode(dLbls);
|
|
2526
|
+
}
|
|
2527
|
+
/**
|
|
2528
|
+
* `<c:ser><c:dLbls>` — this series' own labels, which replace the group's
|
|
2529
|
+
* for it. `<c:delete val="1"/>`, or a node with every `show*` flag off,
|
|
2530
|
+
* turns a labelled group's labels off for the series.
|
|
2531
|
+
*/
|
|
2532
|
+
function extractSeriesDataLabels(ser) {
|
|
2533
|
+
const dLbls = get(ser, "c:dLbls") ?? get(ser, "dLbls");
|
|
2534
|
+
if (!dLbls)
|
|
2535
|
+
return undefined;
|
|
2536
|
+
const deleted = readBoolean(get(dLbls, "c:delete.a$.val") ?? get(dLbls, "delete.a$.val"));
|
|
2537
|
+
if (deleted)
|
|
2538
|
+
return { show: false };
|
|
2539
|
+
const options = readDataLabelsNode(dLbls);
|
|
2540
|
+
return options?.show ? options : { show: false };
|
|
2541
|
+
}
|
|
2542
|
+
/** The `ChartDataLabelsOptions` a `<c:dLbls>` node describes. */
|
|
2543
|
+
function readDataLabelsNode(dLbls) {
|
|
2512
2544
|
const result = {};
|
|
2513
2545
|
const pos = get(dLbls, "c:dLblPos.a$.val") ?? get(dLbls, "dLblPos.a$.val");
|
|
2514
2546
|
const position = mapDataLabelPosition(pos);
|
|
@@ -1927,6 +1927,11 @@ const DLBL_POS = {
|
|
|
1927
1927
|
insideEnd: "inEnd",
|
|
1928
1928
|
outsideEnd: "outEnd",
|
|
1929
1929
|
bestFit: "bestFit",
|
|
1930
|
+
// Line / scatter placements.
|
|
1931
|
+
above: "t",
|
|
1932
|
+
below: "b",
|
|
1933
|
+
left: "l",
|
|
1934
|
+
right: "r",
|
|
1930
1935
|
};
|
|
1931
1936
|
const applyChartFormatting = (chartSpace, spec, sheetNameById) => {
|
|
1932
1937
|
const chartNode = chartSpace?.["c:chartSpace"]?.["c:chart"];
|
|
@@ -1957,8 +1962,9 @@ const SERIES_CONTAINER_KEYS = [
|
|
|
1957
1962
|
];
|
|
1958
1963
|
/**
|
|
1959
1964
|
* Walk the per-chart-type containers in plotArea and apply trendlines
|
|
1960
|
-
* / errBars to each emitted `<c:ser>`. The
|
|
1961
|
-
* matches the order emitted by the builder,
|
|
1965
|
+
* / errBars / the series' own data labels to each emitted `<c:ser>`. The
|
|
1966
|
+
* series order in spec.series matches the order emitted by the builder,
|
|
1967
|
+
* so we index by position.
|
|
1962
1968
|
*/
|
|
1963
1969
|
const applySeriesOverlays = (plotArea, series, sheetNameById) => {
|
|
1964
1970
|
if (!Array.isArray(series) || !series.length)
|
|
@@ -2001,6 +2007,13 @@ const applySeriesOverlays = (plotArea, series, sheetNameById) => {
|
|
|
2001
2007
|
if (built)
|
|
2002
2008
|
node["c:errBars"] = built;
|
|
2003
2009
|
}
|
|
2010
|
+
// `ChartData.dataLabels` — the series' own `<c:dLbls>` overrides the
|
|
2011
|
+
// group's; `{ show: false }` is Excel's `<c:delete val="1"/>`.
|
|
2012
|
+
if (data.dataLabels) {
|
|
2013
|
+
node["c:dLbls"] = data.dataLabels.show
|
|
2014
|
+
? buildDataLabelsNode(data.dataLabels)
|
|
2015
|
+
: { "c:delete": { a$: { val: "1" } } };
|
|
2016
|
+
}
|
|
2004
2017
|
}
|
|
2005
2018
|
}
|
|
2006
2019
|
}
|
|
@@ -2411,24 +2424,8 @@ const applyLegend = (chartNode, legend) => {
|
|
|
2411
2424
|
...(txPr ? { "c:txPr": txPr } : {}),
|
|
2412
2425
|
};
|
|
2413
2426
|
};
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
return;
|
|
2417
|
-
// Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
|
|
2418
|
-
// to whichever exists.
|
|
2419
|
-
// Chart-level labels apply to every chart group — a combo chart has
|
|
2420
|
-
// one per series type.
|
|
2421
|
-
const containers = [
|
|
2422
|
-
"c:barChart",
|
|
2423
|
-
"c:lineChart",
|
|
2424
|
-
"c:pieChart",
|
|
2425
|
-
"c:doughnutChart",
|
|
2426
|
-
"c:areaChart",
|
|
2427
|
-
]
|
|
2428
|
-
.flatMap((k) => (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]))
|
|
2429
|
-
.filter(Boolean);
|
|
2430
|
-
if (!containers.length)
|
|
2431
|
-
return;
|
|
2427
|
+
/** A `<c:dLbls>` node for `ChartDataLabelsOptions` with `show: true`. */
|
|
2428
|
+
const buildDataLabelsNode = (dataLabels) => {
|
|
2432
2429
|
const posCode = dataLabels.position && DLBL_POS[dataLabels.position];
|
|
2433
2430
|
const dLbls = {};
|
|
2434
2431
|
if (posCode)
|
|
@@ -2466,6 +2463,27 @@ const applyDataLabels = (plotArea, dataLabels) => {
|
|
|
2466
2463
|
a$: { val: dataLabels.showPercent ? "1" : "0" },
|
|
2467
2464
|
};
|
|
2468
2465
|
dLbls["c:showBubbleSize"] = { a$: { val: "0" } };
|
|
2466
|
+
return dLbls;
|
|
2467
|
+
};
|
|
2468
|
+
const applyDataLabels = (plotArea, dataLabels) => {
|
|
2469
|
+
if (!dataLabels?.show)
|
|
2470
|
+
return;
|
|
2471
|
+
// Find the chart-type container inside <c:plotArea>. We attach <c:dLbls>
|
|
2472
|
+
// to whichever exists.
|
|
2473
|
+
// Chart-level labels apply to every chart group — a combo chart has
|
|
2474
|
+
// one per series type.
|
|
2475
|
+
const containers = [
|
|
2476
|
+
"c:barChart",
|
|
2477
|
+
"c:lineChart",
|
|
2478
|
+
"c:pieChart",
|
|
2479
|
+
"c:doughnutChart",
|
|
2480
|
+
"c:areaChart",
|
|
2481
|
+
]
|
|
2482
|
+
.flatMap((k) => (Array.isArray(plotArea[k]) ? plotArea[k] : [plotArea[k]]))
|
|
2483
|
+
.filter(Boolean);
|
|
2484
|
+
if (!containers.length)
|
|
2485
|
+
return;
|
|
2486
|
+
const dLbls = buildDataLabelsNode(dataLabels);
|
|
2469
2487
|
for (const container of containers) {
|
|
2470
2488
|
container["c:dLbls"] = cloneTemplate(dLbls);
|
|
2471
2489
|
}
|