@watermarkinsights/ripple 5.31.0-alpha.4 → 5.31.0-alpha.6
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/{app-globals-c5dc38bb.js → app-globals-090d85be.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/ripple.cjs.js +1 -1
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +1 -1
- package/dist/cjs/wm-chart-stack.cjs.entry.js +18 -11
- package/dist/collection/components/charts/wm-chart-stack/wm-chart-stack.js +26 -12
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +41 -14
- package/dist/collection/dev/chart-stack.js +19 -0
- package/dist/docs/docs.json +15 -188
- package/dist/docs/skill/index.md +1 -0
- package/dist/docs/skill/wm-action-menu.md +6 -5
- package/dist/docs/skill/wm-button.md +3 -3
- package/dist/docs/skill/wm-chart-bar.md +9 -8
- package/dist/docs/skill/wm-chart-column.md +9 -8
- package/dist/docs/skill/wm-chart-legend.md +1 -1
- package/dist/docs/skill/wm-chart-stack.md +18 -10
- package/dist/docs/skill/wm-chart.md +9 -8
- package/dist/docs/skill/wm-date-range.md +5 -4
- package/dist/docs/skill/wm-datepicker.md +6 -5
- package/dist/docs/skill/wm-file-list.md +1 -1
- package/dist/docs/skill/wm-file.md +1 -1
- package/dist/docs/skill/wm-flyout.md +4 -3
- package/dist/docs/skill/wm-input.md +2 -2
- package/dist/docs/skill/wm-line-chart.md +9 -8
- package/dist/docs/skill/wm-menuitem.md +2 -15
- package/dist/docs/skill/wm-modal.md +6 -5
- package/dist/docs/skill/wm-navigation.md +4 -3
- package/dist/docs/skill/wm-navigator.md +6 -5
- package/dist/docs/skill/wm-nested-select.md +6 -5
- package/dist/docs/skill/wm-option.md +2 -2
- package/dist/docs/skill/wm-pagination.md +2 -2
- package/dist/docs/skill/wm-progress-indicator.md +1 -1
- package/dist/docs/skill/wm-progress-monitor.md +1 -1
- package/dist/docs/skill/wm-search.md +6 -5
- package/dist/docs/skill/wm-select.md +7 -6
- package/dist/docs/skill/wm-snackbar.md +4 -3
- package/dist/docs/skill/wm-tab-list.md +7 -6
- package/dist/docs/skill/wm-tag-input.md +12 -12
- package/dist/docs/skill/wm-textarea.md +1 -1
- package/dist/docs/skill/wm-timepicker.md +12 -13
- package/dist/docs/skill/wm-toggletip.md +7 -6
- package/dist/docs/skill/wm-uploader.md +3 -3
- package/dist/esm/{app-globals-ca904322.js → app-globals-7bf0ccc7.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/ripple.js +1 -1
- package/dist/esm/wm-action-menu_2.entry.js +1 -1
- package/dist/esm/wm-chart-stack.entry.js +18 -11
- package/dist/esm-es5/{app-globals-ca904322.js → app-globals-7bf0ccc7.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-chart-stack.entry.js +1 -1
- package/dist/ripple/{p-056ab0e7.system.js → p-2e053253.system.js} +1 -1
- package/dist/ripple/p-79175cd4.entry.js +1 -0
- package/dist/ripple/{p-58d21abe.system.entry.js → p-9bbe78c8.system.entry.js} +1 -1
- package/dist/ripple/{p-913e276b.system.js → p-a3d106b2.system.js} +1 -1
- package/dist/ripple/{p-ad07f974.entry.js → p-db74df09.entry.js} +1 -1
- package/dist/ripple/{p-9b82ebf5.js → p-e2bb7798.js} +1 -1
- package/dist/ripple/{p-4bbd4fad.system.entry.js → p-e97166ce.system.entry.js} +1 -1
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/charts/wm-chart-stack/wm-chart-stack.d.ts +9 -1
- package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +10 -3
- package/dist/types/components.d.ts +24 -26
- package/package.json +3 -3
- package/dist/cjs/app-globals-f310dc82.js +0 -103
- package/dist/cjs/chartFunctions-351edf56.js +0 -906
- package/dist/cjs/functions-05cd64e3.js +0 -10682
- package/dist/cjs/interfaces-082b6d42.js +0 -72
- package/dist/cjs/intl-140f6bea.js +0 -283
- package/dist/esm/app-globals-0d90343d.js +0 -101
- package/dist/esm/chartFunctions-295d929a.js +0 -881
- package/dist/esm/functions-438e60c4.js +0 -10640
- package/dist/esm/interfaces-09fe24c4.js +0 -67
- package/dist/esm/intl-25f6dfb9.js +0 -277
- package/dist/esm-es5/app-globals-0d90343d.js +0 -1
- package/dist/esm-es5/chartFunctions-295d929a.js +0 -1
- package/dist/esm-es5/functions-438e60c4.js +0 -1
- package/dist/esm-es5/interfaces-09fe24c4.js +0 -1
- package/dist/esm-es5/intl-25f6dfb9.js +0 -1
- package/dist/ripple/p-007facdc.system.entry.js +0 -1
- package/dist/ripple/p-012bd307.system.entry.js +0 -1
- package/dist/ripple/p-03ff4f41.entry.js +0 -1
- package/dist/ripple/p-07250e35.system.entry.js +0 -1
- package/dist/ripple/p-09a44b14.system.entry.js +0 -1
- package/dist/ripple/p-09a5dd33.entry.js +0 -1
- package/dist/ripple/p-09cd7075.system.entry.js +0 -1
- package/dist/ripple/p-0b0d8610.system.entry.js +0 -1
- package/dist/ripple/p-0b465dfa.system.entry.js +0 -1
- package/dist/ripple/p-131d57c3.entry.js +0 -1
- package/dist/ripple/p-178ba906.js +0 -1
- package/dist/ripple/p-18362e55.entry.js +0 -1
- package/dist/ripple/p-1b4208ea.entry.js +0 -1
- package/dist/ripple/p-1c69ebe2.entry.js +0 -1
- package/dist/ripple/p-1f051611.system.js +0 -1
- package/dist/ripple/p-237388c5.system.entry.js +0 -1
- package/dist/ripple/p-263f0213.entry.js +0 -1
- package/dist/ripple/p-26f2c47b.system.js +0 -1
- package/dist/ripple/p-2dbf9636.entry.js +0 -1
- package/dist/ripple/p-2f297bf8.js +0 -1
- package/dist/ripple/p-314d6c66.entry.js +0 -1
- package/dist/ripple/p-381a793b.system.entry.js +0 -1
- package/dist/ripple/p-3e8bfc68.system.entry.js +0 -1
- package/dist/ripple/p-40e52740.entry.js +0 -1
- package/dist/ripple/p-41285b81.entry.js +0 -1
- package/dist/ripple/p-43e8d384.system.entry.js +0 -1
- package/dist/ripple/p-44321d7f.system.entry.js +0 -1
- package/dist/ripple/p-45548587.entry.js +0 -1
- package/dist/ripple/p-4584bda0.entry.js +0 -1
- package/dist/ripple/p-483e17ad.entry.js +0 -1
- package/dist/ripple/p-55436579.entry.js +0 -1
- package/dist/ripple/p-562aa1ce.entry.js +0 -1
- package/dist/ripple/p-567b153f.entry.js +0 -1
- package/dist/ripple/p-56e1a71d.system.entry.js +0 -1
- package/dist/ripple/p-5819b53d.system.entry.js +0 -1
- package/dist/ripple/p-5afc108c.js +0 -1
- package/dist/ripple/p-623fe4bb.system.entry.js +0 -1
- package/dist/ripple/p-629b6253.entry.js +0 -1
- package/dist/ripple/p-66fd3a06.system.entry.js +0 -1
- package/dist/ripple/p-6a7b26a1.system.js +0 -1
- package/dist/ripple/p-6e661bdc.system.entry.js +0 -1
- package/dist/ripple/p-72200b5c.system.entry.js +0 -1
- package/dist/ripple/p-739f756d.system.entry.js +0 -1
- package/dist/ripple/p-73a2389d.entry.js +0 -1
- package/dist/ripple/p-7422f2a6.system.entry.js +0 -1
- package/dist/ripple/p-7e421ae4.system.entry.js +0 -1
- package/dist/ripple/p-8c331805.entry.js +0 -1
- package/dist/ripple/p-93601bda.entry.js +0 -1
- package/dist/ripple/p-950f6b3c.system.entry.js +0 -1
- package/dist/ripple/p-956cb6a9.system.js +0 -1
- package/dist/ripple/p-9dfa683b.system.entry.js +0 -1
- package/dist/ripple/p-a7df5021.system.entry.js +0 -1
- package/dist/ripple/p-a96e7dc7.system.entry.js +0 -1
- package/dist/ripple/p-a9c92e3a.system.entry.js +0 -1
- package/dist/ripple/p-aac8581f.entry.js +0 -1
- package/dist/ripple/p-acb04e6e.entry.js +0 -1
- package/dist/ripple/p-ad980ba4.system.entry.js +0 -1
- package/dist/ripple/p-af35e358.entry.js +0 -1
- package/dist/ripple/p-b2624d8f.system.entry.js +0 -1
- package/dist/ripple/p-b4792634.entry.js +0 -1
- package/dist/ripple/p-b6bd8810.entry.js +0 -1
- package/dist/ripple/p-b75e9e5f.entry.js +0 -1
- package/dist/ripple/p-b9596bfc.system.entry.js +0 -1
- package/dist/ripple/p-bd365c44.system.entry.js +0 -1
- package/dist/ripple/p-bdce7e33.system.entry.js +0 -1
- package/dist/ripple/p-bff5c1d5.js +0 -1
- package/dist/ripple/p-c62f8d3f.system.entry.js +0 -1
- package/dist/ripple/p-c7bd2b6b.js +0 -1
- package/dist/ripple/p-c9799501.system.entry.js +0 -1
- package/dist/ripple/p-cd496e63.entry.js +0 -1
- package/dist/ripple/p-d11e5029.entry.js +0 -1
- package/dist/ripple/p-d898d864.system.entry.js +0 -1
- package/dist/ripple/p-de4e69ec.entry.js +0 -1
- package/dist/ripple/p-e1d6e91c.entry.js +0 -1
- package/dist/ripple/p-e66fbbb7.entry.js +0 -1
- package/dist/ripple/p-e6704efd.system.js +0 -1
- package/dist/ripple/p-e6b07df6.entry.js +0 -1
- package/dist/ripple/p-e7b1c2dc.entry.js +0 -1
- package/dist/ripple/p-ed3db4b5.system.entry.js +0 -1
- package/dist/ripple/p-eda49f0e.entry.js +0 -1
- package/dist/ripple/p-f0ee3616.entry.js +0 -1
- package/dist/ripple/p-f7fc6350.system.js +0 -1
- package/dist/ripple/p-fc905b2f.system.entry.js +0 -1
- package/dist/ripple/p-fec9fc30.entry.js +0 -1
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-bb947bd5.js');
|
|
6
|
-
const appGlobals = require('./app-globals-
|
|
6
|
+
const appGlobals = require('./app-globals-090d85be.js');
|
|
7
7
|
|
|
8
8
|
const defineCustomElements = async (win, options) => {
|
|
9
9
|
if (typeof window === 'undefined') return undefined;
|
package/dist/cjs/ripple.cjs.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-bb947bd5.js');
|
|
6
|
-
const appGlobals = require('./app-globals-
|
|
6
|
+
const appGlobals = require('./app-globals-090d85be.js');
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
9
|
Stencil Client Patch Browser v4.21.0 | MIT Licensed | https://stenciljs.com
|
|
@@ -475,7 +475,7 @@ const Menuitem = class {
|
|
|
475
475
|
}
|
|
476
476
|
}
|
|
477
477
|
render() {
|
|
478
|
-
return (index.h(index.Host, { key: '
|
|
478
|
+
return (index.h(index.Host, { key: '403704be13ca1f9c938e18a76f8442cbbaa4aab9', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, index.h("div", { key: 'c5818b2f8bd133a846abcd493f70c581b9d7113b', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, index.h("div", { key: '05f047e1ffad3376e1aaeffd060ed52a6a3e80bf', class: "main-text" }, this.icon && this.renderIcon(), this.el.textContent), this.description ? index.h("div", { class: "description" }, this.description) : "")));
|
|
479
479
|
}
|
|
480
480
|
get el() { return index.getElement(this); }
|
|
481
481
|
static get watchers() { return {
|
|
@@ -65,6 +65,9 @@ const ChartStack = class {
|
|
|
65
65
|
get flattenedData() {
|
|
66
66
|
return [...this.processedStacks.values()].flat();
|
|
67
67
|
}
|
|
68
|
+
get segmentWrappers() {
|
|
69
|
+
return this.el.shadowRoot.querySelectorAll(".segment-wrapper");
|
|
70
|
+
}
|
|
68
71
|
getPatternClass(item) {
|
|
69
72
|
var _a;
|
|
70
73
|
return this.isPatternMode ? ((_a = interfaces.patternKey[item.color]) !== null && _a !== void 0 ? _a : "") : "";
|
|
@@ -101,6 +104,14 @@ const ChartStack = class {
|
|
|
101
104
|
this.propagateExternalLegendData();
|
|
102
105
|
this.measurePending = true; // re-measure label fit after this change renders
|
|
103
106
|
}
|
|
107
|
+
else {
|
|
108
|
+
// config or data was unset — clear derived state so the chart renders empty
|
|
109
|
+
this.processedStacks = new Map();
|
|
110
|
+
this.stackTotals = new Map();
|
|
111
|
+
this.legendData = [];
|
|
112
|
+
this.propagateExternalLegendData();
|
|
113
|
+
this.hasHiddenValues = false;
|
|
114
|
+
}
|
|
104
115
|
}
|
|
105
116
|
buildProcessedStacks() {
|
|
106
117
|
if (!this.data) {
|
|
@@ -162,7 +173,6 @@ const ChartStack = class {
|
|
|
162
173
|
return result;
|
|
163
174
|
}
|
|
164
175
|
countStackTotals(processedStacks) {
|
|
165
|
-
this.stackTotals = new Map();
|
|
166
176
|
const stackTotals = new Map();
|
|
167
177
|
processedStacks.forEach((segments, stackName) => {
|
|
168
178
|
const stackTotal = segments.reduce((acc, s) => acc + s.amount, 0);
|
|
@@ -338,22 +348,20 @@ const ChartStack = class {
|
|
|
338
348
|
highlightSegment(item) {
|
|
339
349
|
var _a;
|
|
340
350
|
const idx = this.flattenedData.indexOf(item);
|
|
341
|
-
const segmentWrappers = this.
|
|
351
|
+
const segmentWrappers = this.segmentWrappers;
|
|
342
352
|
segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.add("faded"));
|
|
343
353
|
(_a = segmentWrappers[idx]) === null || _a === void 0 ? void 0 : _a.classList.remove("faded");
|
|
344
354
|
const legendIdx = this.legendData.findIndex((legendItem) => legendItem.barLegend === item.barLegend);
|
|
345
355
|
this.wmChartStackHighlighted.emit({ idx: legendIdx });
|
|
346
356
|
}
|
|
347
357
|
highlightSegmentsByLegend(legend) {
|
|
348
|
-
|
|
349
|
-
segmentWrappers.forEach((segmentWrapper, idx) => {
|
|
358
|
+
this.segmentWrappers.forEach((segmentWrapper, idx) => {
|
|
350
359
|
var _a;
|
|
351
360
|
segmentWrapper.classList.toggle("faded", ((_a = this.flattenedData[idx]) === null || _a === void 0 ? void 0 : _a.barLegend) !== legend);
|
|
352
361
|
});
|
|
353
362
|
}
|
|
354
363
|
clearHighlights() {
|
|
355
|
-
|
|
356
|
-
wrappers.forEach((wrapper) => wrapper.classList.remove("faded"));
|
|
364
|
+
this.segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.remove("faded"));
|
|
357
365
|
this.wmChartStackHighlighted.emit({ idx: -1 });
|
|
358
366
|
}
|
|
359
367
|
clearFocus() {
|
|
@@ -367,9 +375,8 @@ const ChartStack = class {
|
|
|
367
375
|
// #region Responsiveness
|
|
368
376
|
////////////////////////////////////////////////////////////
|
|
369
377
|
updateHiddenValues() {
|
|
370
|
-
const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
|
|
371
378
|
let anyHidden = false;
|
|
372
|
-
segmentWrappers.forEach((segmentWrapper) => {
|
|
379
|
+
this.segmentWrappers.forEach((segmentWrapper) => {
|
|
373
380
|
const value = segmentWrapper.querySelector(".value");
|
|
374
381
|
if (!value) {
|
|
375
382
|
return;
|
|
@@ -393,7 +400,7 @@ const ChartStack = class {
|
|
|
393
400
|
}
|
|
394
401
|
renderSegment(item, stackIdx, segmentIdx) {
|
|
395
402
|
var _a, _b;
|
|
396
|
-
return (index.h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), index.h("div", { class: `segment ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
|
|
403
|
+
return (index.h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), index.h("div", { class: `segment horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
|
|
397
404
|
}
|
|
398
405
|
renderStacks() {
|
|
399
406
|
const stackNames = [...this.processedStacks.keys()];
|
|
@@ -414,7 +421,7 @@ const ChartStack = class {
|
|
|
414
421
|
const total = (_a = this.stackTotals.get(stackName)) !== null && _a !== void 0 ? _a : 0;
|
|
415
422
|
return (index.h("div", { class: "print-table", "aria-hidden": "true" }, segments.map((item) => {
|
|
416
423
|
var _a, _b, _c;
|
|
417
|
-
return (index.h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, index.h("div", { class: "print-legend" }, index.h("div", { class: `swatch ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), index.h("span", { class: "print-legend-name" }, item.barLegend)), index.h("span", { class: "print-percent" }, item.displayValue), index.h("span", { class: "print-fraction" }, item.amount, "/", total), index.h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
|
|
424
|
+
return (index.h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, index.h("div", { class: "print-legend" }, index.h("div", { class: `swatch horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), index.h("span", { class: "print-legend-name" }, item.barLegend)), index.h("span", { class: "print-percent" }, item.displayValue), index.h("span", { class: "print-fraction" }, item.amount, "/", total), index.h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
|
|
418
425
|
})));
|
|
419
426
|
}
|
|
420
427
|
renderLegend(orientation) {
|
|
@@ -426,7 +433,7 @@ const ChartStack = class {
|
|
|
426
433
|
render() {
|
|
427
434
|
var _a, _b, _c, _d;
|
|
428
435
|
const gridLineRow = this.processedStacks.size * (this.isPrintMode ? 2 : 1) + 1;
|
|
429
|
-
return (index.h(index.Host, { key: '
|
|
436
|
+
return (index.h(index.Host, { key: 'a02be9b6a7e8a570d12fc471ab0899c1d6bff609' }, index.h("div", { key: '27a456aca42c248c767a3d44d4fca43e27342113', class: "popover-wrapper" }, index.h("priv-chart-popover", { key: '710e6b9ed574358949d86736991a94ff23033e1b', ref: (el) => (this.popoverEl = el), onIntChartPopoverToggled: (ev) => this.handlePopoverToggled(ev) })), index.h("div", { key: 'c696620647c3a4bf69b8cbfdfd88fe0d56c0e9e4', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.isPrintMode ? "print-mode" : ""} ${this.isPatternMode ? "pattern-mode" : ""}`, tabindex: "0", role: "application", onKeyDown: (ev) => this.handleChartKeyDown(ev), onBlur: (ev) => this.handleComponentBlur(ev), "aria-roledescription": intl.chartMessages.interactiveChart, "aria-describedby": "chart-instructions", "aria-label": (_a = this.config) === null || _a === void 0 ? void 0 : _a.label }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showLabel) !== null && _c !== void 0 ? _c : true) && (index.h("label", { key: '7bcc1cdcf20e17af7078d5ddec312accafb0ee2a', id: "label", class: "label" }, index.h("span", { key: '4b1e5090ccbaf485a5efd543575056f77ecc3af8', class: "label-text" }, (_d = this.config) === null || _d === void 0 ? void 0 : _d.label), this.subinfoText && index.h("span", { key: '4eba44204c943e58e16a0edd2787315d44ae2f23', class: "subinfo" }, this.subinfoText))), this.showLegend === "top" && this.renderLegend("horizontal"), index.h("div", { key: 'c11932585eb98bc5b12ead052e6965d954d28b0f', class: "chart-body" }, this.showLegend === "left" && this.renderLegend("vertical"), index.h("div", { key: '772c6c62d2ff5ef996ca6e72bd18f174a5357dc3', class: `stacks ${this.isKeying ? "user-is-keying" : ""} ${this.showGrid ? "show-grid" : ""} ${this.isSingleStack ? "single-stack" : ""}`, ref: (el) => (this.stacksEl = el), style: { "--grid-line-row": `${gridLineRow}` } }, this.showGrid && index.h("div", { key: '85170b43d60832f82fca6588c39e0ccbcc00cede', class: "vertical-grid-line" }), this.renderStacks(), this.showGrid && (index.h("div", { key: 'ac782af53cf46f6797bb1a564fdbbc221fd8ea43', class: "x-axis" }, index.h("div", { key: 'f6175cb9012164eda83c920edc9746c25753bc1e', class: "x-axis-line" }), index.h("div", { key: 'd218b9ce3d734dd6e218f16d944e93199ac52580', class: "x-axis-ticks" }, index.h("span", { key: 'eff3d60abf1a6ca2cbaf0247996d891d3cbfadad', class: "tick zero" }, "0%"), index.h("span", { key: '8767b56809d269272bdc1ef9ccd4d194e6c79070', class: "tick end" }, "100%"))))), this.showLegend === "right" && this.renderLegend("vertical")), this.showLegend === "bottom" && this.renderLegend("horizontal"), !this.isPrintMode && (index.h("div", { key: '1d9a5524f1669987d19daa5d5fff5dcde93fe4ba', class: `hidden-values-warning ${this.hasHiddenValues ? "" : "hidden"}` }, intl.stackChartMessages.hiddenValues)), chartFunctions.renderInstructionsText())));
|
|
430
437
|
}
|
|
431
438
|
static get delegatesFocus() { return true; }
|
|
432
439
|
get el() { return index.getElement(this); }
|
|
@@ -9,6 +9,9 @@ import { isElOrChild } from "../../../global/functions";
|
|
|
9
9
|
* Data and configuration are set via JavaScript properties (`chart.config` and `chart.data`) — not
|
|
10
10
|
* HTML attributes.
|
|
11
11
|
*
|
|
12
|
+
* @displayName Stack Chart
|
|
13
|
+
* @category Data Visualization
|
|
14
|
+
*
|
|
12
15
|
* @keyboardInteraction
|
|
13
16
|
* - **Tab**: Enters the chart wrapper.
|
|
14
17
|
* - **Arrow Down / Right**: Focuses the first segment.
|
|
@@ -48,6 +51,10 @@ import { isElOrChild } from "../../../global/functions";
|
|
|
48
51
|
* ];
|
|
49
52
|
* </script>
|
|
50
53
|
*
|
|
54
|
+
* @example {react} Single stack
|
|
55
|
+
* <WmChartStack ref={chartRef} />
|
|
56
|
+
* // In useEffect: chartRef.current.config = {...}; chartRef.current.data = [...];
|
|
57
|
+
*
|
|
51
58
|
* @example {html} Grouped (multiple stacks)
|
|
52
59
|
* <wm-chart-stack id="status-by-requirement"></wm-chart-stack>
|
|
53
60
|
* <script>
|
|
@@ -61,7 +68,7 @@ import { isElOrChild } from "../../../global/functions";
|
|
|
61
68
|
* ];
|
|
62
69
|
* </script>
|
|
63
70
|
*
|
|
64
|
-
* @example {react}
|
|
71
|
+
* @example {react} Grouped (multiple stacks)
|
|
65
72
|
* <WmChartStack ref={chartRef} />
|
|
66
73
|
* // In useEffect: chartRef.current.config = {...}; chartRef.current.data = [...];
|
|
67
74
|
*/
|
|
@@ -117,6 +124,9 @@ export class ChartStack {
|
|
|
117
124
|
get flattenedData() {
|
|
118
125
|
return [...this.processedStacks.values()].flat();
|
|
119
126
|
}
|
|
127
|
+
get segmentWrappers() {
|
|
128
|
+
return this.el.shadowRoot.querySelectorAll(".segment-wrapper");
|
|
129
|
+
}
|
|
120
130
|
getPatternClass(item) {
|
|
121
131
|
var _a;
|
|
122
132
|
return this.isPatternMode ? ((_a = patternKey[item.color]) !== null && _a !== void 0 ? _a : "") : "";
|
|
@@ -153,6 +163,14 @@ export class ChartStack {
|
|
|
153
163
|
this.propagateExternalLegendData();
|
|
154
164
|
this.measurePending = true; // re-measure label fit after this change renders
|
|
155
165
|
}
|
|
166
|
+
else {
|
|
167
|
+
// config or data was unset — clear derived state so the chart renders empty
|
|
168
|
+
this.processedStacks = new Map();
|
|
169
|
+
this.stackTotals = new Map();
|
|
170
|
+
this.legendData = [];
|
|
171
|
+
this.propagateExternalLegendData();
|
|
172
|
+
this.hasHiddenValues = false;
|
|
173
|
+
}
|
|
156
174
|
}
|
|
157
175
|
buildProcessedStacks() {
|
|
158
176
|
if (!this.data) {
|
|
@@ -214,7 +232,6 @@ export class ChartStack {
|
|
|
214
232
|
return result;
|
|
215
233
|
}
|
|
216
234
|
countStackTotals(processedStacks) {
|
|
217
|
-
this.stackTotals = new Map();
|
|
218
235
|
const stackTotals = new Map();
|
|
219
236
|
processedStacks.forEach((segments, stackName) => {
|
|
220
237
|
const stackTotal = segments.reduce((acc, s) => acc + s.amount, 0);
|
|
@@ -390,22 +407,20 @@ export class ChartStack {
|
|
|
390
407
|
highlightSegment(item) {
|
|
391
408
|
var _a;
|
|
392
409
|
const idx = this.flattenedData.indexOf(item);
|
|
393
|
-
const segmentWrappers = this.
|
|
410
|
+
const segmentWrappers = this.segmentWrappers;
|
|
394
411
|
segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.add("faded"));
|
|
395
412
|
(_a = segmentWrappers[idx]) === null || _a === void 0 ? void 0 : _a.classList.remove("faded");
|
|
396
413
|
const legendIdx = this.legendData.findIndex((legendItem) => legendItem.barLegend === item.barLegend);
|
|
397
414
|
this.wmChartStackHighlighted.emit({ idx: legendIdx });
|
|
398
415
|
}
|
|
399
416
|
highlightSegmentsByLegend(legend) {
|
|
400
|
-
|
|
401
|
-
segmentWrappers.forEach((segmentWrapper, idx) => {
|
|
417
|
+
this.segmentWrappers.forEach((segmentWrapper, idx) => {
|
|
402
418
|
var _a;
|
|
403
419
|
segmentWrapper.classList.toggle("faded", ((_a = this.flattenedData[idx]) === null || _a === void 0 ? void 0 : _a.barLegend) !== legend);
|
|
404
420
|
});
|
|
405
421
|
}
|
|
406
422
|
clearHighlights() {
|
|
407
|
-
|
|
408
|
-
wrappers.forEach((wrapper) => wrapper.classList.remove("faded"));
|
|
423
|
+
this.segmentWrappers.forEach((segmentWrapper) => segmentWrapper.classList.remove("faded"));
|
|
409
424
|
this.wmChartStackHighlighted.emit({ idx: -1 });
|
|
410
425
|
}
|
|
411
426
|
clearFocus() {
|
|
@@ -419,9 +434,8 @@ export class ChartStack {
|
|
|
419
434
|
// #region Responsiveness
|
|
420
435
|
////////////////////////////////////////////////////////////
|
|
421
436
|
updateHiddenValues() {
|
|
422
|
-
const segmentWrappers = this.el.shadowRoot.querySelectorAll(".segment-wrapper");
|
|
423
437
|
let anyHidden = false;
|
|
424
|
-
segmentWrappers.forEach((segmentWrapper) => {
|
|
438
|
+
this.segmentWrappers.forEach((segmentWrapper) => {
|
|
425
439
|
const value = segmentWrapper.querySelector(".value");
|
|
426
440
|
if (!value) {
|
|
427
441
|
return;
|
|
@@ -445,7 +459,7 @@ export class ChartStack {
|
|
|
445
459
|
}
|
|
446
460
|
renderSegment(item, stackIdx, segmentIdx) {
|
|
447
461
|
var _a, _b;
|
|
448
|
-
return (h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), h("div", { class: `segment ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
|
|
462
|
+
return (h("div", { class: "segment-wrapper", style: { "--segment-width": `${item.gridPercent}%` }, key: `${stackIdx}-${segmentIdx}` }, (this.isPrintMode || this.valueFormat === "percentage") && this.renderValue(item), h("div", { class: `segment horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` }, tabindex: "-1", role: "img", "aria-label": `${item.groupName}, ${item.displayValue}. ${item.amount}/${(_b = this.stackTotals.get((_a = item.groupName) !== null && _a !== void 0 ? _a : "")) !== null && _b !== void 0 ? _b : 0} ${item.barLegend}`, "data-stack-index": stackIdx, "data-segment-index": segmentIdx, onClick: (ev) => this.handleSegmentClick(ev, item), onKeyDown: (ev) => this.handleSegmentKeyDown(ev, stackIdx, segmentIdx) })));
|
|
449
463
|
}
|
|
450
464
|
renderStacks() {
|
|
451
465
|
const stackNames = [...this.processedStacks.keys()];
|
|
@@ -466,7 +480,7 @@ export class ChartStack {
|
|
|
466
480
|
const total = (_a = this.stackTotals.get(stackName)) !== null && _a !== void 0 ? _a : 0;
|
|
467
481
|
return (h("div", { class: "print-table", "aria-hidden": "true" }, segments.map((item) => {
|
|
468
482
|
var _a, _b, _c;
|
|
469
|
-
return (h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, h("div", { class: "print-legend" }, h("div", { class: `swatch ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), h("span", { class: "print-legend-name" }, item.barLegend)), h("span", { class: "print-percent" }, item.displayValue), h("span", { class: "print-fraction" }, item.amount, "/", total), h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
|
|
483
|
+
return (h("div", { class: "print-row", key: `row-${stackName}-${item.barLegend}` }, h("div", { class: "print-legend" }, h("div", { class: `swatch horizontal ${this.getPatternClass(item)}`, style: { "--segment-color": `var(--${item.color})` } }), h("span", { class: "print-legend-name" }, item.barLegend)), h("span", { class: "print-percent" }, item.displayValue), h("span", { class: "print-fraction" }, item.amount, "/", total), h("span", { class: "print-text" }, (_c = (_a = item.popoverText) !== null && _a !== void 0 ? _a : (_b = this.config) === null || _b === void 0 ? void 0 : _b.popoverText) !== null && _c !== void 0 ? _c : "")));
|
|
470
484
|
})));
|
|
471
485
|
}
|
|
472
486
|
renderLegend(orientation) {
|
|
@@ -478,7 +492,7 @@ export class ChartStack {
|
|
|
478
492
|
render() {
|
|
479
493
|
var _a, _b, _c, _d;
|
|
480
494
|
const gridLineRow = this.processedStacks.size * (this.isPrintMode ? 2 : 1) + 1;
|
|
481
|
-
return (h(Host, { key: '
|
|
495
|
+
return (h(Host, { key: 'a02be9b6a7e8a570d12fc471ab0899c1d6bff609' }, h("div", { key: '27a456aca42c248c767a3d44d4fca43e27342113', class: "popover-wrapper" }, h("priv-chart-popover", { key: '710e6b9ed574358949d86736991a94ff23033e1b', ref: (el) => (this.popoverEl = el), onIntChartPopoverToggled: (ev) => this.handlePopoverToggled(ev) })), h("div", { key: 'c696620647c3a4bf69b8cbfdfd88fe0d56c0e9e4', ref: (el) => (this.componentWrapperEl = el), class: `component-wrapper ${this.isPrintMode ? "print-mode" : ""} ${this.isPatternMode ? "pattern-mode" : ""}`, tabindex: "0", role: "application", onKeyDown: (ev) => this.handleChartKeyDown(ev), onBlur: (ev) => this.handleComponentBlur(ev), "aria-roledescription": chartMessages.interactiveChart, "aria-describedby": "chart-instructions", "aria-label": (_a = this.config) === null || _a === void 0 ? void 0 : _a.label }, ((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showLabel) !== null && _c !== void 0 ? _c : true) && (h("label", { key: '7bcc1cdcf20e17af7078d5ddec312accafb0ee2a', id: "label", class: "label" }, h("span", { key: '4b1e5090ccbaf485a5efd543575056f77ecc3af8', class: "label-text" }, (_d = this.config) === null || _d === void 0 ? void 0 : _d.label), this.subinfoText && h("span", { key: '4eba44204c943e58e16a0edd2787315d44ae2f23', class: "subinfo" }, this.subinfoText))), this.showLegend === "top" && this.renderLegend("horizontal"), h("div", { key: 'c11932585eb98bc5b12ead052e6965d954d28b0f', class: "chart-body" }, this.showLegend === "left" && this.renderLegend("vertical"), h("div", { key: '772c6c62d2ff5ef996ca6e72bd18f174a5357dc3', class: `stacks ${this.isKeying ? "user-is-keying" : ""} ${this.showGrid ? "show-grid" : ""} ${this.isSingleStack ? "single-stack" : ""}`, ref: (el) => (this.stacksEl = el), style: { "--grid-line-row": `${gridLineRow}` } }, this.showGrid && h("div", { key: '85170b43d60832f82fca6588c39e0ccbcc00cede', class: "vertical-grid-line" }), this.renderStacks(), this.showGrid && (h("div", { key: 'ac782af53cf46f6797bb1a564fdbbc221fd8ea43', class: "x-axis" }, h("div", { key: 'f6175cb9012164eda83c920edc9746c25753bc1e', class: "x-axis-line" }), h("div", { key: 'd218b9ce3d734dd6e218f16d944e93199ac52580', class: "x-axis-ticks" }, h("span", { key: 'eff3d60abf1a6ca2cbaf0247996d891d3cbfadad', class: "tick zero" }, "0%"), h("span", { key: '8767b56809d269272bdc1ef9ccd4d194e6c79070', class: "tick end" }, "100%"))))), this.showLegend === "right" && this.renderLegend("vertical")), this.showLegend === "bottom" && this.renderLegend("horizontal"), !this.isPrintMode && (h("div", { key: '1d9a5524f1669987d19daa5d5fff5dcde93fe4ba', class: `hidden-values-warning ${this.hasHiddenValues ? "" : "hidden"}` }, stackChartMessages.hiddenValues)), renderInstructionsText())));
|
|
482
496
|
}
|
|
483
497
|
static get is() { return "wm-chart-stack"; }
|
|
484
498
|
static get encapsulation() { return "shadow"; }
|
|
@@ -8,9 +8,6 @@ import { getIconCodeFromName } from "../../global/interfaces";
|
|
|
8
8
|
*
|
|
9
9
|
* @accessibility
|
|
10
10
|
* - Rendered with `role="menuitem"` and `aria-disabled` when disabled.
|
|
11
|
-
* - Keyboard events (Arrow keys, Home, End, Tab, Escape, character keys) are captured and
|
|
12
|
-
* re-emitted as custom events consumed by the parent wm-action-menu to manage focus and
|
|
13
|
-
* menu state — do not listen to these events directly in application code.
|
|
14
11
|
*
|
|
15
12
|
* @usageNotes
|
|
16
13
|
* - `description` is limited to 100 characters and is incompatible with `icon`.
|
|
@@ -137,7 +134,7 @@ export class Menuitem {
|
|
|
137
134
|
}
|
|
138
135
|
}
|
|
139
136
|
render() {
|
|
140
|
-
return (h(Host, { key: '
|
|
137
|
+
return (h(Host, { key: '403704be13ca1f9c938e18a76f8442cbbaa4aab9', tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: 'c5818b2f8bd133a846abcd493f70c581b9d7113b', class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, h("div", { key: '05f047e1ffad3376e1aaeffd060ed52a6a3e80bf', class: "main-text" }, this.icon && this.renderIcon(), this.el.textContent), this.description ? h("div", { class: "description" }, this.description) : "")));
|
|
141
138
|
}
|
|
142
139
|
static get is() { return "wm-menuitem"; }
|
|
143
140
|
static get encapsulation() { return "shadow"; }
|
|
@@ -252,7 +249,10 @@ export class Menuitem {
|
|
|
252
249
|
"cancelable": true,
|
|
253
250
|
"composed": true,
|
|
254
251
|
"docs": {
|
|
255
|
-
"tags": [
|
|
252
|
+
"tags": [{
|
|
253
|
+
"name": "internal",
|
|
254
|
+
"text": undefined
|
|
255
|
+
}],
|
|
256
256
|
"text": ""
|
|
257
257
|
},
|
|
258
258
|
"complexType": {
|
|
@@ -272,7 +272,10 @@ export class Menuitem {
|
|
|
272
272
|
"cancelable": true,
|
|
273
273
|
"composed": true,
|
|
274
274
|
"docs": {
|
|
275
|
-
"tags": [
|
|
275
|
+
"tags": [{
|
|
276
|
+
"name": "internal",
|
|
277
|
+
"text": undefined
|
|
278
|
+
}],
|
|
276
279
|
"text": ""
|
|
277
280
|
},
|
|
278
281
|
"complexType": {
|
|
@@ -292,7 +295,10 @@ export class Menuitem {
|
|
|
292
295
|
"cancelable": true,
|
|
293
296
|
"composed": true,
|
|
294
297
|
"docs": {
|
|
295
|
-
"tags": [
|
|
298
|
+
"tags": [{
|
|
299
|
+
"name": "internal",
|
|
300
|
+
"text": undefined
|
|
301
|
+
}],
|
|
296
302
|
"text": ""
|
|
297
303
|
},
|
|
298
304
|
"complexType": {
|
|
@@ -312,7 +318,10 @@ export class Menuitem {
|
|
|
312
318
|
"cancelable": true,
|
|
313
319
|
"composed": true,
|
|
314
320
|
"docs": {
|
|
315
|
-
"tags": [
|
|
321
|
+
"tags": [{
|
|
322
|
+
"name": "internal",
|
|
323
|
+
"text": undefined
|
|
324
|
+
}],
|
|
316
325
|
"text": ""
|
|
317
326
|
},
|
|
318
327
|
"complexType": {
|
|
@@ -332,7 +341,10 @@ export class Menuitem {
|
|
|
332
341
|
"cancelable": true,
|
|
333
342
|
"composed": true,
|
|
334
343
|
"docs": {
|
|
335
|
-
"tags": [
|
|
344
|
+
"tags": [{
|
|
345
|
+
"name": "internal",
|
|
346
|
+
"text": undefined
|
|
347
|
+
}],
|
|
336
348
|
"text": ""
|
|
337
349
|
},
|
|
338
350
|
"complexType": {
|
|
@@ -352,7 +364,10 @@ export class Menuitem {
|
|
|
352
364
|
"cancelable": true,
|
|
353
365
|
"composed": true,
|
|
354
366
|
"docs": {
|
|
355
|
-
"tags": [
|
|
367
|
+
"tags": [{
|
|
368
|
+
"name": "internal",
|
|
369
|
+
"text": undefined
|
|
370
|
+
}],
|
|
356
371
|
"text": ""
|
|
357
372
|
},
|
|
358
373
|
"complexType": {
|
|
@@ -372,7 +387,10 @@ export class Menuitem {
|
|
|
372
387
|
"cancelable": true,
|
|
373
388
|
"composed": true,
|
|
374
389
|
"docs": {
|
|
375
|
-
"tags": [
|
|
390
|
+
"tags": [{
|
|
391
|
+
"name": "internal",
|
|
392
|
+
"text": undefined
|
|
393
|
+
}],
|
|
376
394
|
"text": ""
|
|
377
395
|
},
|
|
378
396
|
"complexType": {
|
|
@@ -392,7 +410,10 @@ export class Menuitem {
|
|
|
392
410
|
"cancelable": true,
|
|
393
411
|
"composed": true,
|
|
394
412
|
"docs": {
|
|
395
|
-
"tags": [
|
|
413
|
+
"tags": [{
|
|
414
|
+
"name": "internal",
|
|
415
|
+
"text": undefined
|
|
416
|
+
}],
|
|
396
417
|
"text": ""
|
|
397
418
|
},
|
|
398
419
|
"complexType": {
|
|
@@ -412,7 +433,10 @@ export class Menuitem {
|
|
|
412
433
|
"cancelable": true,
|
|
413
434
|
"composed": true,
|
|
414
435
|
"docs": {
|
|
415
|
-
"tags": [
|
|
436
|
+
"tags": [{
|
|
437
|
+
"name": "internal",
|
|
438
|
+
"text": undefined
|
|
439
|
+
}],
|
|
416
440
|
"text": ""
|
|
417
441
|
},
|
|
418
442
|
"complexType": {
|
|
@@ -427,7 +451,10 @@ export class Menuitem {
|
|
|
427
451
|
"cancelable": true,
|
|
428
452
|
"composed": true,
|
|
429
453
|
"docs": {
|
|
430
|
-
"tags": [
|
|
454
|
+
"tags": [{
|
|
455
|
+
"name": "internal",
|
|
456
|
+
"text": undefined
|
|
457
|
+
}],
|
|
431
458
|
"text": ""
|
|
432
459
|
},
|
|
433
460
|
"complexType": {
|
|
@@ -106,6 +106,16 @@ document.getElementById("pattern-mode-checkbox").addEventListener("change", (ev)
|
|
|
106
106
|
const dataJsonInput = document.getElementById("data-json-input");
|
|
107
107
|
|
|
108
108
|
function setChartData(data) {
|
|
109
|
+
// Restore a config if it was cleared (e.g. via the Unset preset) so the chart re-renders.
|
|
110
|
+
if (!stackChart1.config) {
|
|
111
|
+
stackChart1.config = {
|
|
112
|
+
label: "Year 1 Cohort Submission Status by Requirement",
|
|
113
|
+
subinfo: "Progress of completion of licensure requirements",
|
|
114
|
+
colors: "semantic",
|
|
115
|
+
showLegend: "top",
|
|
116
|
+
valueFormat: "percentage",
|
|
117
|
+
};
|
|
118
|
+
}
|
|
109
119
|
stackChart1.data = data;
|
|
110
120
|
if (dataJsonInput) {
|
|
111
121
|
dataJsonInput.value = JSON.stringify(data, null, 2);
|
|
@@ -178,6 +188,15 @@ document.getElementById("preset-popover").addEventListener("click", () => {
|
|
|
178
188
|
]);
|
|
179
189
|
});
|
|
180
190
|
|
|
191
|
+
// Preset: Unset config and data (test the data -> no data transition)
|
|
192
|
+
document.getElementById("preset-unset").addEventListener("click", () => {
|
|
193
|
+
stackChart1.config = undefined;
|
|
194
|
+
stackChart1.data = undefined;
|
|
195
|
+
if (dataJsonInput) {
|
|
196
|
+
dataJsonInput.value = "";
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
|
|
181
200
|
// Initialize JSON textarea with current data after chart loads
|
|
182
201
|
setTimeout(() => {
|
|
183
202
|
if (stackChart1 && stackChart1.data && dataJsonInput) {
|