@splunk/visualizations 26.0.0 → 26.1.0
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/Area.config.js +102 -18
- package/Area.config.js.map +1 -1
- package/Area.js +618 -221
- package/Area.js.map +1 -1
- package/Bar.config.js +104 -20
- package/Bar.config.js.map +1 -1
- package/Bar.js +624 -219
- package/Bar.js.map +1 -1
- package/Bubble.config.js +94 -20
- package/Bubble.config.js.map +1 -1
- package/Bubble.js +606 -211
- package/Bubble.js.map +1 -1
- package/ChoroplethSvg.config.js +65 -14
- package/ChoroplethSvg.config.js.map +1 -1
- package/ChoroplethSvg.js +550 -183
- package/ChoroplethSvg.js.map +1 -1
- package/Column.config.js +103 -18
- package/Column.config.js.map +1 -1
- package/Column.js +637 -221
- package/Column.js.map +1 -1
- package/Ellipse.config.js +82 -17
- package/Ellipse.config.js.map +1 -1
- package/Ellipse.js +425 -148
- package/Ellipse.js.map +1 -1
- package/Events.config.js +100 -18
- package/Events.config.js.map +1 -1
- package/Events.js +752 -293
- package/Events.js.map +1 -1
- package/FillerGauge.config.js +96 -27
- package/FillerGauge.config.js.map +1 -1
- package/FillerGauge.js +759 -374
- package/FillerGauge.js.map +1 -1
- package/Image.config.js +62 -18
- package/Image.config.js.map +1 -1
- package/Image.js +419 -154
- package/Image.js.map +1 -1
- package/Line.config.js +106 -22
- package/Line.config.js.map +1 -1
- package/Line.js +631 -223
- package/Line.js.map +1 -1
- package/LinkGraph.config.js +72 -22
- package/LinkGraph.config.js.map +1 -1
- package/LinkGraph.js +632 -219
- package/LinkGraph.js.map +1 -1
- package/MIGRATION.md +1082 -0
- package/Map.config.js +241 -97
- package/Map.config.js.map +1 -1
- package/Map.js +1195 -595
- package/Map.js.map +1 -1
- package/Markdown.config.js +70 -20
- package/Markdown.config.js.map +1 -1
- package/Markdown.js +460 -195
- package/Markdown.js.map +1 -1
- package/MarkerGauge.config.js +79 -21
- package/MarkerGauge.config.js.map +1 -1
- package/MarkerGauge.js +802 -411
- package/MarkerGauge.js.map +1 -1
- package/ParallelCoordinates.config.js +72 -18
- package/ParallelCoordinates.config.js.map +1 -1
- package/ParallelCoordinates.js +853 -484
- package/ParallelCoordinates.js.map +1 -1
- package/Pie.config.js +75 -22
- package/Pie.config.js.map +1 -1
- package/Pie.js +612 -212
- package/Pie.js.map +1 -1
- package/Punchcard.config.js +81 -29
- package/Punchcard.config.js.map +1 -1
- package/Punchcard.js +844 -379
- package/Punchcard.js.map +1 -1
- package/Rectangle.config.js +85 -19
- package/Rectangle.config.js.map +1 -1
- package/Rectangle.js +432 -152
- package/Rectangle.js.map +1 -1
- package/Sankey.config.js +84 -22
- package/Sankey.config.js.map +1 -1
- package/Sankey.js +878 -342
- package/Sankey.js.map +1 -1
- package/Scatter.config.js +96 -22
- package/Scatter.config.js.map +1 -1
- package/Scatter.js +607 -212
- package/Scatter.js.map +1 -1
- package/SingleValue.config.js +94 -24
- package/SingleValue.config.js.map +1 -1
- package/SingleValue.js +1182 -650
- package/SingleValue.js.map +1 -1
- package/SingleValueBasic.js +286 -225
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon.config.js +92 -22
- package/SingleValueIcon.config.js.map +1 -1
- package/SingleValueIcon.js +965 -506
- package/SingleValueIcon.js.map +1 -1
- package/SingleValueRadial.config.js +99 -26
- package/SingleValueRadial.config.js.map +1 -1
- package/SingleValueRadial.js +1167 -616
- package/SingleValueRadial.js.map +1 -1
- package/SparkLine.js +126 -67
- package/SparkLine.js.map +1 -1
- package/Table.config.js +73 -20
- package/Table.config.js.map +1 -1
- package/Table.js +810 -322
- package/Table.js.map +1 -1
- package/common/Charting.js +107 -35
- package/common/Charting.js.map +1 -1
- package/common/ChartingApi.js +18 -7
- package/common/ChartingApi.js.map +1 -1
- package/common/EventsDoc.js +76 -22
- package/common/EventsDoc.js.map +1 -1
- package/common/GaugeMajorTicks.js +68 -58
- package/common/GaugeMajorTicks.js.map +1 -1
- package/common/GaugeValueMarker.js +43 -34
- package/common/GaugeValueMarker.js.map +1 -1
- package/common/OptionsDoc.js +156 -65
- package/common/OptionsDoc.js.map +1 -1
- package/common/OverviewDoc.js +33 -5
- package/common/OverviewDoc.js.map +1 -1
- package/common/SplunkVisualization.js +31 -4
- package/common/SplunkVisualization.js.map +1 -1
- package/common/SplunkVisualizationApi.js +8 -2
- package/common/SplunkVisualizationApi.js.map +1 -1
- package/common/ThemesDoc.js +27 -14
- package/common/ThemesDoc.js.map +1 -1
- package/common/chartingUtils.js +44 -12
- package/common/chartingUtils.js.map +1 -1
- package/common/docUtils.js +11 -1
- package/common/docUtils.js.map +1 -1
- package/common/gaugeUtils.js +173 -90
- package/common/gaugeUtils.js.map +1 -1
- package/common/shapeUtils.js +14 -2
- package/common/shapeUtils.js.map +1 -1
- package/common/utils/configUtils.js +49 -14
- package/common/utils/configUtils.js.map +1 -1
- package/common/utils/dataUtils.js +7 -2
- package/common/utils/dataUtils.js.map +1 -1
- package/common/utils/hocUtils.js +3 -1
- package/common/utils/hocUtils.js.map +1 -1
- package/common/utils/layoutUtils.js +1 -0
- package/common/utils/layoutUtils.js.map +1 -1
- package/common/utils/mapUtils.js +287 -127
- package/common/utils/mapUtils.js.map +1 -1
- package/common/utils/singleValueUtils.js +241 -196
- package/common/utils/singleValueUtils.js.map +1 -1
- package/common/utils/testHelper.js +9 -0
- package/common/utils/testHelper.js.map +1 -1
- package/common/utils/trellisUtils.js +61 -0
- package/common/utils/trellisUtils.js.map +1 -1
- package/common/utils/urlUtils.js +2 -0
- package/common/utils/urlUtils.js.map +1 -1
- package/common/withDashboardViz.js +274 -95
- package/common/withDashboardViz.js.map +1 -1
- package/package.json +16 -18
package/common/Charting.js
CHANGED
|
@@ -170,15 +170,19 @@ module.exports = require("@splunk/visualizations-shared/style");
|
|
|
170
170
|
|
|
171
171
|
|
|
172
172
|
var _classCallCheck = __webpack_require__(4);
|
|
173
|
+
|
|
173
174
|
var _createClass = __webpack_require__(6);
|
|
175
|
+
|
|
174
176
|
Object.defineProperty(exports, "__esModule", {
|
|
175
177
|
value: true
|
|
176
178
|
});
|
|
177
179
|
exports.ChartingApiFunctional = void 0;
|
|
180
|
+
|
|
178
181
|
var ChartingApiFunctional = /*#__PURE__*/function () {
|
|
179
182
|
// eslint-disable-next-line no-useless-constructor
|
|
180
183
|
function ChartingApiFunctional(chartRef) {
|
|
181
184
|
_classCallCheck(this, ChartingApiFunctional);
|
|
185
|
+
|
|
182
186
|
this.chartRef = chartRef;
|
|
183
187
|
}
|
|
184
188
|
/**
|
|
@@ -186,15 +190,18 @@ var ChartingApiFunctional = /*#__PURE__*/function () {
|
|
|
186
190
|
*
|
|
187
191
|
* @memberof ChartingApiFunctional
|
|
188
192
|
*/
|
|
193
|
+
|
|
194
|
+
|
|
189
195
|
_createClass(ChartingApiFunctional, [{
|
|
190
196
|
key: "highlight",
|
|
191
197
|
value: function highlight() {
|
|
192
198
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
199
|
+
xValue: '',
|
|
200
|
+
seriesName: ''
|
|
201
|
+
},
|
|
202
|
+
xValue = _ref.xValue,
|
|
203
|
+
seriesName = _ref.seriesName;
|
|
204
|
+
|
|
198
205
|
this.getChart().highlight(xValue, seriesName);
|
|
199
206
|
}
|
|
200
207
|
/**
|
|
@@ -202,21 +209,25 @@ var ChartingApiFunctional = /*#__PURE__*/function () {
|
|
|
202
209
|
*
|
|
203
210
|
* @memberof ChartingApiFunctional
|
|
204
211
|
*/
|
|
212
|
+
|
|
205
213
|
}, {
|
|
206
214
|
key: "unHighlight",
|
|
207
215
|
value: function unHighlight() {
|
|
208
216
|
this.getChart().unHighlight();
|
|
209
|
-
}
|
|
210
|
-
|
|
217
|
+
} // returns chart object
|
|
218
|
+
|
|
211
219
|
}, {
|
|
212
220
|
key: "getChart",
|
|
213
221
|
value: function getChart() {
|
|
214
222
|
var _a;
|
|
223
|
+
|
|
215
224
|
return (_a = this.chartRef) === null || _a === void 0 ? void 0 : _a.current;
|
|
216
225
|
}
|
|
217
226
|
}]);
|
|
227
|
+
|
|
218
228
|
return ChartingApiFunctional;
|
|
219
229
|
}();
|
|
230
|
+
|
|
220
231
|
exports.ChartingApiFunctional = ChartingApiFunctional;
|
|
221
232
|
|
|
222
233
|
/***/ }),
|
|
@@ -250,23 +261,42 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
250
261
|
});
|
|
251
262
|
exports.updateRowPayload = exports.canUpdateInPlace = exports.changedOptions = exports.NO_INPLACE_PROPS = void 0;
|
|
252
263
|
/* eslint-disable react/no-unused-prop-types */
|
|
264
|
+
|
|
253
265
|
var lodash_1 = __webpack_require__(3);
|
|
266
|
+
|
|
254
267
|
var i18n_1 = __webpack_require__(7);
|
|
268
|
+
|
|
255
269
|
var visualization_color_palettes_1 = __webpack_require__(43);
|
|
270
|
+
|
|
256
271
|
var react_1 = __webpack_require__(0);
|
|
272
|
+
|
|
257
273
|
var React = __webpack_require__(0);
|
|
274
|
+
|
|
258
275
|
var T = __webpack_require__(1);
|
|
276
|
+
|
|
259
277
|
var react_event_listener_1 = __webpack_require__(44);
|
|
278
|
+
|
|
260
279
|
__webpack_require__(45); // fixme, @splunk/charting should be refactor to use locale & timezone instead of i18n functions
|
|
280
|
+
|
|
281
|
+
|
|
261
282
|
var charting_bundle_1 = __webpack_require__(46);
|
|
283
|
+
|
|
262
284
|
var TimezoneContext_1 = __webpack_require__(20);
|
|
285
|
+
|
|
263
286
|
var style_1 = __webpack_require__(21);
|
|
287
|
+
|
|
264
288
|
var styled_components_1 = __webpack_require__(2);
|
|
289
|
+
|
|
265
290
|
var Message_1 = __webpack_require__(18);
|
|
291
|
+
|
|
266
292
|
var useSplunkTheme_1 = __webpack_require__(47);
|
|
293
|
+
|
|
267
294
|
var themeUtils_1 = __webpack_require__(48);
|
|
295
|
+
|
|
268
296
|
var ChartingApi_1 = __webpack_require__(22);
|
|
297
|
+
|
|
269
298
|
exports.NO_INPLACE_PROPS = ['chart', 'chart.orientation', 'layout.splitSeries', 'chart.style', 'legend.placement'];
|
|
299
|
+
|
|
270
300
|
var changedOptions = function changedOptions(curOptions, nextOptions) {
|
|
271
301
|
return Object.keys(curOptions).filter(function (key) {
|
|
272
302
|
return !(key in nextOptions);
|
|
@@ -274,7 +304,9 @@ var changedOptions = function changedOptions(curOptions, nextOptions) {
|
|
|
274
304
|
return !(key in curOptions) || curOptions[key] !== nextOptions[key];
|
|
275
305
|
}));
|
|
276
306
|
};
|
|
307
|
+
|
|
277
308
|
exports.changedOptions = changedOptions;
|
|
309
|
+
|
|
278
310
|
function usePrevious(value) {
|
|
279
311
|
var ref = (0, react_1.useRef)();
|
|
280
312
|
(0, react_1.useEffect)(function () {
|
|
@@ -282,21 +314,24 @@ function usePrevious(value) {
|
|
|
282
314
|
});
|
|
283
315
|
return ref.current;
|
|
284
316
|
}
|
|
317
|
+
|
|
285
318
|
var canUpdateInPlace = function canUpdateInPlace(curOptions, nextOptions) {
|
|
286
319
|
// if either of the options are undefined
|
|
287
320
|
// it cannot update in place.
|
|
288
321
|
if (!curOptions || !nextOptions) {
|
|
289
322
|
return false;
|
|
290
323
|
}
|
|
324
|
+
|
|
291
325
|
return !exports.NO_INPLACE_PROPS.some(function (p) {
|
|
292
326
|
return curOptions[p] !== nextOptions[p];
|
|
293
327
|
}) && !(0, exports.changedOptions)(curOptions, nextOptions).some(function (p) {
|
|
294
328
|
return p.toLowerCase().endsWith('color');
|
|
295
329
|
});
|
|
296
330
|
};
|
|
297
|
-
|
|
298
|
-
// create 'row' payloads from 'rowContext' in the flattened format:
|
|
331
|
+
|
|
332
|
+
exports.canUpdateInPlace = canUpdateInPlace; // create 'row' payloads from 'rowContext' in the flattened format:
|
|
299
333
|
// row.<fieldname>.value
|
|
334
|
+
|
|
300
335
|
var updateRowPayload = function updateRowPayload(chartEventRowContext, payload) {
|
|
301
336
|
Object.keys(chartEventRowContext || {}).forEach(function (key) {
|
|
302
337
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -304,18 +339,21 @@ var updateRowPayload = function updateRowPayload(chartEventRowContext, payload)
|
|
|
304
339
|
});
|
|
305
340
|
return payload;
|
|
306
341
|
};
|
|
342
|
+
|
|
307
343
|
exports.updateRowPayload = updateRowPayload;
|
|
308
344
|
var VizChartEventType;
|
|
345
|
+
|
|
309
346
|
(function (VizChartEventType) {
|
|
310
347
|
VizChartEventType["POINT_CLICK"] = "point.click";
|
|
311
348
|
VizChartEventType["POINT_MOUSE_OUT"] = "point.mouseout";
|
|
312
349
|
VizChartEventType["POINT_MOUSE_OVER"] = "point.mouseover";
|
|
313
350
|
VizChartEventType["LEGEND_CLICK"] = "legend.click";
|
|
314
|
-
})(VizChartEventType || (VizChartEventType = {}));
|
|
315
|
-
// @TODO(pwied): remove after HC upgrade to 8+
|
|
351
|
+
})(VizChartEventType || (VizChartEventType = {})); // @TODO(pwied): remove after HC upgrade to 8+
|
|
316
352
|
// .highcharts-a11y-proxy-container rule addresses a HighCharts < 8 bug
|
|
317
353
|
// caused by the accessibility plugin
|
|
318
354
|
// https://github.com/highcharts/highcharts/issues/12883
|
|
355
|
+
|
|
356
|
+
|
|
319
357
|
var ChartingContainer = styled_components_1.default.div.attrs(function (props) {
|
|
320
358
|
return {
|
|
321
359
|
'data-test': 'charting-container',
|
|
@@ -343,6 +381,7 @@ var propTypes = {
|
|
|
343
381
|
visualizationApiRef: T.func,
|
|
344
382
|
themeKey: T.string
|
|
345
383
|
};
|
|
384
|
+
|
|
346
385
|
var Charting = function Charting(props) {
|
|
347
386
|
var container = (0, react_1.useRef)(null);
|
|
348
387
|
var needsInit = (0, react_1.useRef)(true);
|
|
@@ -350,6 +389,7 @@ var Charting = function Charting(props) {
|
|
|
350
389
|
var needsRedraw = (0, react_1.useRef)(true);
|
|
351
390
|
var api = (0, react_1.useRef)(new ChartingApi_1.ChartingApiFunctional(chart));
|
|
352
391
|
var timezone = (0, react_1.useContext)(TimezoneContext_1.default);
|
|
392
|
+
|
|
353
393
|
var computeChartingSize = function computeChartingSize() {
|
|
354
394
|
if (container.current) {
|
|
355
395
|
var rect = container.current.getBoundingClientRect();
|
|
@@ -358,48 +398,56 @@ var Charting = function Charting(props) {
|
|
|
358
398
|
width: rect.width
|
|
359
399
|
};
|
|
360
400
|
}
|
|
401
|
+
|
|
361
402
|
return {};
|
|
362
403
|
};
|
|
404
|
+
|
|
363
405
|
var splunkTheme = (0, useSplunkTheme_1.default)();
|
|
364
406
|
var themeKey = props.themeKey ? props.themeKey : (0, themeUtils_1.getChartingThemeKey)({
|
|
365
407
|
splunkThemeV1: splunkTheme
|
|
366
408
|
});
|
|
367
409
|
var width = props.width,
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
410
|
+
height = props.height,
|
|
411
|
+
style = props.style,
|
|
412
|
+
chartData = props.chartData,
|
|
413
|
+
options = props.options,
|
|
414
|
+
colorPalette = props.colorPalette,
|
|
415
|
+
onClick = props.onClick,
|
|
416
|
+
onSelect = props.onSelect,
|
|
417
|
+
onPointMouseOut = props.onPointMouseOut,
|
|
418
|
+
onPointMouseOver = props.onPointMouseOver,
|
|
419
|
+
onEventTrigger = props.onEventTrigger;
|
|
378
420
|
var prevOptions = usePrevious(options);
|
|
379
421
|
var prevTimezone = usePrevious(timezone);
|
|
422
|
+
|
|
380
423
|
var handleClick = function handleClick(chartEvent, type) {
|
|
381
424
|
var payload = (0, lodash_1.pick)(chartEvent, 'name2', 'value2', '_span', 'modifierKey');
|
|
382
425
|
payload.name = payload.name2;
|
|
383
426
|
delete payload.name2;
|
|
427
|
+
|
|
384
428
|
if (type === VizChartEventType.POINT_CLICK) {
|
|
385
429
|
payload.value = payload.value2;
|
|
386
430
|
delete payload.value2;
|
|
387
431
|
payload = (0, exports.updateRowPayload)(chartEvent.rowContext, payload);
|
|
388
432
|
}
|
|
433
|
+
|
|
389
434
|
onClick({
|
|
390
435
|
type: type,
|
|
391
436
|
originalEvent: chartEvent,
|
|
392
437
|
payload: payload
|
|
393
438
|
});
|
|
394
439
|
};
|
|
440
|
+
|
|
395
441
|
var destroyChart = function destroyChart() {
|
|
396
442
|
if (chart.current) {
|
|
397
443
|
chart.current.destroy();
|
|
398
444
|
chart.current = null;
|
|
399
445
|
}
|
|
446
|
+
|
|
400
447
|
needsRedraw.current = true;
|
|
401
448
|
needsInit.current = true;
|
|
402
449
|
};
|
|
450
|
+
|
|
403
451
|
var handleSelect = function handleSelect(chartEvent) {
|
|
404
452
|
// todo: need change this after breaking all visualizations
|
|
405
453
|
if (onSelect && typeof onSelect === 'function') {
|
|
@@ -409,14 +457,16 @@ var Charting = function Charting(props) {
|
|
|
409
457
|
payload: (0, lodash_1.pick)(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue')
|
|
410
458
|
});
|
|
411
459
|
return;
|
|
412
|
-
}
|
|
413
|
-
|
|
460
|
+
} // the chartEvent here is a jQuery event
|
|
461
|
+
|
|
462
|
+
|
|
414
463
|
onEventTrigger({
|
|
415
464
|
type: 'range.select',
|
|
416
465
|
originalEvent: chartEvent,
|
|
417
466
|
payload: (0, lodash_1.pick)(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue')
|
|
418
467
|
});
|
|
419
468
|
};
|
|
469
|
+
|
|
420
470
|
var handlePointMouseOut = function handlePointMouseOut(chartEvent, type) {
|
|
421
471
|
var payload = (0, lodash_1.pick)(chartEvent, 'name2', 'value2', '_span', 'modifierKey', 'tooltipContext');
|
|
422
472
|
payload.name = payload.name2;
|
|
@@ -430,6 +480,7 @@ var Charting = function Charting(props) {
|
|
|
430
480
|
payload: payload
|
|
431
481
|
});
|
|
432
482
|
};
|
|
483
|
+
|
|
433
484
|
var handlePointMouseOver = function handlePointMouseOver(chartEvent, type) {
|
|
434
485
|
var payload = (0, lodash_1.pick)(chartEvent, 'name2', 'value2', '_span', 'modifierKey', 'tooltipContext');
|
|
435
486
|
payload.name = payload.name2;
|
|
@@ -443,6 +494,7 @@ var Charting = function Charting(props) {
|
|
|
443
494
|
payload: payload
|
|
444
495
|
});
|
|
445
496
|
};
|
|
497
|
+
|
|
446
498
|
var drawChart = function drawChart() {
|
|
447
499
|
var updatedOptions = Object.assign(Object.assign({}, options), {
|
|
448
500
|
shouldColorizeTooltipData: false
|
|
@@ -453,15 +505,18 @@ var Charting = function Charting(props) {
|
|
|
453
505
|
var serializedTimezone = timezone === null || timezone === void 0 ? void 0 : timezone.serializedTimezone;
|
|
454
506
|
var ianaTimezone = timezone === null || timezone === void 0 ? void 0 : timezone.ianaTimezone;
|
|
455
507
|
var utcOffset = timezone === null || timezone === void 0 ? void 0 : timezone.utcOffset;
|
|
508
|
+
|
|
456
509
|
if (!computedWidth || !computedHeight) {
|
|
457
510
|
return;
|
|
458
511
|
}
|
|
512
|
+
|
|
459
513
|
if (!chartData || !Object.keys(chartData).length) {
|
|
460
514
|
return;
|
|
461
|
-
}
|
|
462
|
-
// splunk-charting layers configuration option updates.
|
|
515
|
+
} // splunk-charting layers configuration option updates.
|
|
463
516
|
// when an option is removed it needs to be set to an empty string
|
|
464
517
|
// to override the previous configuration
|
|
518
|
+
|
|
519
|
+
|
|
465
520
|
if (prevOptions) {
|
|
466
521
|
Object.keys(prevOptions).forEach(function (key) {
|
|
467
522
|
if (updatedOptions[key] === undefined) {
|
|
@@ -469,13 +524,16 @@ var Charting = function Charting(props) {
|
|
|
469
524
|
}
|
|
470
525
|
});
|
|
471
526
|
}
|
|
527
|
+
|
|
472
528
|
try {
|
|
473
529
|
if (needsInit.current) {
|
|
474
530
|
destroyChart();
|
|
475
531
|
charting_bundle_1.default.setTheme(themeKey);
|
|
532
|
+
|
|
476
533
|
if (colorPalette.length > 0) {
|
|
477
534
|
charting_bundle_1.default.setColorPalette(colorPalette);
|
|
478
535
|
}
|
|
536
|
+
|
|
479
537
|
chart.current = charting_bundle_1.default.createChart(container.current, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, updatedOptions), {
|
|
480
538
|
drilldown: 'all'
|
|
481
539
|
}), typeof serializedTimezone === 'string' && {
|
|
@@ -484,8 +542,8 @@ var Charting = function Charting(props) {
|
|
|
484
542
|
'time.ianaTimezone': ianaTimezone
|
|
485
543
|
}), typeof utcOffset === 'number' && {
|
|
486
544
|
'time.timezoneOffset': utcOffset
|
|
487
|
-
}));
|
|
488
|
-
|
|
545
|
+
})); // bind event handlers
|
|
546
|
+
|
|
489
547
|
chart.current.on('pointClick', function (e) {
|
|
490
548
|
handleClick(e, VizChartEventType.POINT_CLICK);
|
|
491
549
|
});
|
|
@@ -500,29 +558,37 @@ var Charting = function Charting(props) {
|
|
|
500
558
|
});
|
|
501
559
|
chart.current.on('chartRangeSelect', handleSelect);
|
|
502
560
|
}
|
|
561
|
+
|
|
503
562
|
if (needsRedraw.current) {
|
|
504
563
|
charting_bundle_1.default.setTheme(themeKey);
|
|
564
|
+
|
|
505
565
|
if (colorPalette.length > 0) {
|
|
506
566
|
charting_bundle_1.default.setColorPalette(colorPalette);
|
|
507
567
|
}
|
|
568
|
+
|
|
508
569
|
chart.current.prepareAndDraw(chartData, updatedOptions, function () {});
|
|
509
570
|
}
|
|
571
|
+
|
|
510
572
|
if (chart.current) {
|
|
511
573
|
if (Math.round(chart.current.height) !== Math.round(computedHeight) || Math.round(chart.current.width) !== Math.round(computedWidth)) {
|
|
512
574
|
chart.current.resize(computedWidth, computedHeight);
|
|
513
575
|
}
|
|
514
576
|
}
|
|
577
|
+
|
|
515
578
|
needsInit.current = false;
|
|
516
579
|
needsRedraw.current = false;
|
|
517
580
|
} catch (e) {
|
|
518
581
|
window.console.error('Caught error rendering chart:', e);
|
|
519
582
|
}
|
|
520
583
|
};
|
|
584
|
+
|
|
521
585
|
var debouncedDrawChart = (0, lodash_1.debounce)(drawChart, 5);
|
|
586
|
+
|
|
522
587
|
var onContainerMount = function onContainerMount(chartingContainer) {
|
|
523
588
|
container.current = chartingContainer;
|
|
524
589
|
debouncedDrawChart();
|
|
525
590
|
};
|
|
591
|
+
|
|
526
592
|
var prevTheme = usePrevious(themeKey);
|
|
527
593
|
var prevOnClick = usePrevious(onClick);
|
|
528
594
|
(0, react_1.useEffect)(function () {
|
|
@@ -536,14 +602,14 @@ var Charting = function Charting(props) {
|
|
|
536
602
|
(0, react_1.useEffect)(function () {
|
|
537
603
|
// TODO: figure out why re-init is needed for functional components (i.e. PlatformViz) when changing theme
|
|
538
604
|
// seems like redraw doesn't suffice to update the background colors
|
|
539
|
-
if (!chart.current || !(0, exports.canUpdateInPlace)(prevOptions, options) ||
|
|
540
|
-
// timezone is a simple object so this comparison should be fast
|
|
605
|
+
if (!chart.current || !(0, exports.canUpdateInPlace)(prevOptions, options) || // timezone is a simple object so this comparison should be fast
|
|
541
606
|
JSON.stringify(prevTimezone) !== JSON.stringify(timezone) || !props.themeKey && prevTheme !== themeKey || prevOnClick !== onClick) {
|
|
542
607
|
needsInit.current = true;
|
|
543
608
|
}
|
|
544
|
-
|
|
545
|
-
// need to immediately call drawChart upon an option or chartData change
|
|
609
|
+
|
|
610
|
+
needsRedraw.current = true; // need to immediately call drawChart upon an option or chartData change
|
|
546
611
|
// otherwise a noop would occur if the onContainerMount drawChart is re-invoked when dimensions change
|
|
612
|
+
|
|
547
613
|
drawChart();
|
|
548
614
|
}, [JSON.stringify(options), JSON.stringify(chartData.toJSON()), JSON.stringify(chartData.annotations), timezone === null || timezone === void 0 ? void 0 : timezone.ianaTimezone, timezone === null || timezone === void 0 ? void 0 : timezone.utcOffset, timezone === null || timezone === void 0 ? void 0 : timezone.serializedTimezone, themeKey, onClick]);
|
|
549
615
|
return React.createElement(ChartingContainer, {
|
|
@@ -556,6 +622,7 @@ var Charting = function Charting(props) {
|
|
|
556
622
|
onResize: debouncedDrawChart
|
|
557
623
|
}));
|
|
558
624
|
};
|
|
625
|
+
|
|
559
626
|
var defaultProps = {
|
|
560
627
|
width: '100%',
|
|
561
628
|
height: 250,
|
|
@@ -573,31 +640,36 @@ var defaultProps = {
|
|
|
573
640
|
themeKey: null
|
|
574
641
|
};
|
|
575
642
|
Charting.propTypes = propTypes;
|
|
576
|
-
Charting.defaultProps = defaultProps;
|
|
577
|
-
|
|
643
|
+
Charting.defaultProps = defaultProps; // allow for early return in case of empty chartData while still following hook rules
|
|
644
|
+
|
|
578
645
|
var withEmptyChartMessage = function withEmptyChartMessage(Chart) {
|
|
579
646
|
var Wrapper = function Wrapper(props) {
|
|
580
647
|
var chartData = props.chartData;
|
|
648
|
+
|
|
581
649
|
if (!chartData) {
|
|
582
650
|
return React.createElement(Message_1.default, {
|
|
583
651
|
message: (0, i18n_1._)('No DataSource'),
|
|
584
652
|
level: "warning"
|
|
585
653
|
});
|
|
586
654
|
}
|
|
655
|
+
|
|
587
656
|
if (chartData && !Object.keys(chartData).length) {
|
|
588
657
|
return React.createElement(Message_1.default, {
|
|
589
658
|
message: (0, i18n_1._)('No Result'),
|
|
590
659
|
level: "info"
|
|
591
660
|
});
|
|
592
661
|
}
|
|
662
|
+
|
|
593
663
|
return React.createElement(Chart, Object.assign({}, props));
|
|
594
664
|
};
|
|
665
|
+
|
|
595
666
|
Wrapper.displayName = 'ChartingWrapper';
|
|
596
667
|
Wrapper.propTypes = propTypes;
|
|
597
668
|
Wrapper.defaultProps = defaultProps;
|
|
598
669
|
return Wrapper;
|
|
599
|
-
};
|
|
600
|
-
|
|
670
|
+
}; // export default Charting;
|
|
671
|
+
|
|
672
|
+
|
|
601
673
|
exports.default = withEmptyChartMessage(Charting);
|
|
602
674
|
|
|
603
675
|
/***/ }),
|
package/common/Charting.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"prop-types\"","webpack:///external \"styled-components\"","webpack:///external \"lodash\"","webpack:///external \"@babel/runtime/helpers/classCallCheck\"","webpack:///external \"@babel/runtime/helpers/createClass\"","webpack:///external \"@splunk/ui-utils/i18n\"","webpack:///external \"@splunk/visualizations-shared/Message\"","webpack:///external \"@splunk/visualization-context/TimezoneContext\"","webpack:///external \"@splunk/visualizations-shared/style\"","webpack:///./src/common/ChartingApi.ts","webpack:///./src/common/Charting.tsx","webpack:///external \"@splunk/visualization-color-palettes\"","webpack:///external \"react-event-listener\"","webpack:///external \"@splunk/visualizations-shared/i18n\"","webpack:///external \"@splunk/charting-bundle\"","webpack:///external \"@splunk/themes/useSplunkTheme\"","webpack:///external \"@splunk/visualizations-shared/themeUtils\""],"names":["ChartingApiFunctional","chartRef","_classCallCheck","_createClass","key","value","highlight","_ref","arguments","length","undefined","xValue","seriesName","getChart","unHighlight","_a","current","exports","lodash_1","require","i18n_1","visualization_color_palettes_1","react_1","React","T","react_event_listener_1","charting_bundle_1","TimezoneContext_1","style_1","styled_components_1","Message_1","useSplunkTheme_1","themeUtils_1","ChartingApi_1","NO_INPLACE_PROPS","changedOptions","curOptions","nextOptions","Object","keys","filter","concat","usePrevious","ref","useRef","useEffect","canUpdateInPlace","some","p","toLowerCase","endsWith","updateRowPayload","chartEventRowContext","payload","forEach","VizChartEventType","ChartingContainer","default","div","attrs","props","width","height","withConfig","displayName","componentId","toDimension","pick","propTypes","oneOfType","string","number","options","object","chartData","onEventTrigger","func","onClick","onSelect","onPointMouseOver","onPointMouseOut","style","colorPalette","array","visualizationApiRef","themeKey","Charting","container","needsInit","chart","needsRedraw","api","timezone","useContext","computeChartingSize","rect","getBoundingClientRect","splunkTheme","getChartingThemeKey","splunkThemeV1","prevOptions","prevTimezone","handleClick","chartEvent","type","name","name2","POINT_CLICK","value2","rowContext","originalEvent","destroyChart","destroy","handleSelect","handlePointMouseOut","handlePointMouseOver","drawChart","updatedOptions","assign","shouldColorizeTooltipData","computedChartSize","computedWidth","computedHeight","serializedTimezone","ianaTimezone","utcOffset","setTheme","setColorPalette","createChart","drilldown","on","e","POINT_MOUSE_OVER","POINT_MOUSE_OUT","LEGEND_CLICK","prepareAndDraw","Math","round","resize","window","console","error","debouncedDrawChart","debounce","onContainerMount","chartingContainer","prevTheme","prevOnClick","JSON","stringify","toJSON","annotations","createElement","target","onResize","defaultProps","noop","VIZ_CATEGORICAL","withEmptyChartMessage","Chart","Wrapper","message","_","level"],"mappings":"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","file":"Charting.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 42);\n","module.exports = require(\"react\");","module.exports = require(\"prop-types\");","module.exports = require(\"styled-components\");","module.exports = require(\"lodash\");","module.exports = require(\"@babel/runtime/helpers/classCallCheck\");","module.exports = require(\"@babel/runtime/helpers/createClass\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/visualizations-shared/Message\");","module.exports = require(\"@splunk/visualization-context/TimezoneContext\");","module.exports = require(\"@splunk/visualizations-shared/style\");","import jsCharting from '@splunk/charting-bundle';\n\ninterface Point {\n /**\n * Valid xValue of the chart\n *\n * @type {string|number}\n * @memberof Point\n */\n xValue?: string | number;\n\n /**\n * Valid seriesName for a chart\n *\n * @type {string}\n * @memberof Point\n */\n seriesName?: string;\n}\n\nexport class ChartingApiFunctional {\n // eslint-disable-next-line no-useless-constructor\n constructor(private chartRef: any) {}\n\n /**\n * Allows users to programmatically highlight a point on the chart\n *\n * @memberof ChartingApiFunctional\n */\n highlight({ xValue, seriesName }: Point = { xValue: '', seriesName: '' }): void {\n this.getChart().highlight(xValue, seriesName);\n }\n\n /**\n * Allows users to programmatically unhighlight all points on the chart\n *\n * @memberof ChartingApiFunctional\n */\n unHighlight(): void {\n this.getChart().unHighlight();\n }\n\n // returns chart object\n getChart(): jsCharting {\n return this.chartRef?.current;\n }\n}\n","/* eslint-disable react/no-unused-prop-types */\nimport { pick, debounce, noop } from 'lodash';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport { useEffect, useRef, useContext } from 'react';\nimport * as React from 'react';\nimport * as T from 'prop-types';\nimport EventListener from 'react-event-listener';\nimport '@splunk/visualizations-shared/i18n'; // fixme, @splunk/charting should be refactor to use locale & timezone instead of i18n functions\nimport jsCharting from '@splunk/charting-bundle';\nimport TimezoneContext, { TimezoneContextInterface } from '@splunk/visualization-context/TimezoneContext';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport styled from 'styled-components';\nimport Message from '@splunk/visualizations-shared/Message';\nimport useSplunkTheme from '@splunk/themes/useSplunkTheme';\nimport { getChartingThemeKey } from '@splunk/visualizations-shared/themeUtils';\nimport { ChartingApiFunctional } from './ChartingApi';\n\nexport const NO_INPLACE_PROPS = [\n 'chart',\n 'chart.orientation',\n 'layout.splitSeries',\n 'chart.style',\n 'legend.placement',\n];\n\nexport const changedOptions = (curOptions: Record<string, any>, nextOptions: Record<string, any>): string[] =>\n Object.keys(curOptions)\n .filter(key => !(key in nextOptions))\n .concat(\n Object.keys(nextOptions).filter(\n key => !(key in curOptions) || curOptions[key] !== nextOptions[key]\n )\n );\n\nfunction usePrevious(value): Record<string, any> {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport const canUpdateInPlace = (\n curOptions: Record<string, any>,\n nextOptions: Record<string, any>\n): boolean => {\n // if either of the options are undefined\n // it cannot update in place.\n if (!curOptions || !nextOptions) {\n return false;\n }\n return (\n !NO_INPLACE_PROPS.some(p => curOptions[p] !== nextOptions[p]) &&\n !changedOptions(curOptions, nextOptions).some(p => p.toLowerCase().endsWith('color'))\n );\n};\n\n// create 'row' payloads from 'rowContext' in the flattened format:\n// row.<fieldname>.value\nexport const updateRowPayload = (\n chartEventRowContext: Record<string, any>,\n payload: Record<string, any>\n): Record<string, any> => {\n Object.keys(chartEventRowContext || {}).forEach(key => {\n // eslint-disable-next-line no-param-reassign\n payload[`${key}.value`] = chartEventRowContext[key];\n });\n\n return payload;\n};\n\nexport interface ContainerProps {\n width: string | number;\n height: string | number;\n}\n\ntype ChartEventType = 'pointClick' | 'pointMouseOver' | 'pointMouseOut' | 'chartRangeSelect' | 'legendClick';\nenum VizChartEventType {\n POINT_CLICK = 'point.click',\n POINT_MOUSE_OUT = 'point.mouseout',\n POINT_MOUSE_OVER = 'point.mouseover',\n LEGEND_CLICK = 'legend.click',\n}\n\ninterface ChartEvent<T extends ChartEventType> extends Event {\n name: string;\n name2: string;\n value?: unknown;\n value2?: unknown;\n rowContext?: Record<string, any>;\n span?: number;\n type: T;\n}\n\n// @TODO(pwied): remove after HC upgrade to 8+\n// .highcharts-a11y-proxy-container rule addresses a HighCharts < 8 bug\n// caused by the accessibility plugin\n// https://github.com/highcharts/highcharts/issues/12883\nconst ChartingContainer = styled.div.attrs((props: ContainerProps) => ({\n 'data-test': 'charting-container',\n width: props.width,\n height: props.height,\n}))`\n & .highcharts-a11y-proxy-container {\n pointer-events: none;\n }\n overflow: hidden;\n position: relative;\n ${props => toDimension(pick(props, ['width', 'height']))};\n`;\n\nexport interface ChartingProps {\n // width in pixel or string, defaults to 100%\n width: string | number;\n // height in pixel or string\n height: string | number;\n // visualization formatting options\n options?: Record<string, any>;\n // charting dataset from jsCharting.extractChartReadyData\n chartData: Record<string, any>;\n // callbacks to trigger event\n onEventTrigger?: (...args: any[]) => void;\n onSelect?: (...args: any[]) => void;\n onClick?: (...args: any[]) => void;\n onPointMouseOver?: (...args: any[]) => void;\n onPointMouseOut?: (...args: any[]) => void;\n // Custom style on visualization\n style?: Record<string, any>;\n colorPalette?: Array<string>;\n visualizationApiRef?: (...args: any[]) => void;\n themeKey?: string;\n}\n\nconst propTypes: Record<keyof ChartingProps, T.Validator<any>> = {\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n options: T.object,\n chartData: T.object,\n onEventTrigger: T.func,\n onClick: T.func,\n onSelect: T.func,\n onPointMouseOver: T.func,\n onPointMouseOut: T.func,\n style: T.object,\n colorPalette: T.array,\n visualizationApiRef: T.func,\n themeKey: T.string,\n};\n\nconst Charting = (props: ChartingProps): React.ReactElement => {\n const container = useRef<HTMLDivElement>(null);\n const needsInit = useRef<boolean>(true);\n const chart = useRef<jsCharting>();\n const needsRedraw = useRef<boolean>(true);\n const api = useRef(new ChartingApiFunctional(chart));\n const timezone = useContext<TimezoneContextInterface>(TimezoneContext);\n\n const computeChartingSize = () => {\n if (container.current) {\n const rect = container.current.getBoundingClientRect();\n return {\n height: rect.height,\n width: rect.width,\n };\n }\n return {};\n };\n const splunkTheme = useSplunkTheme();\n const themeKey = props.themeKey ? props.themeKey : getChartingThemeKey({ splunkThemeV1: splunkTheme });\n const {\n width,\n height,\n style,\n chartData,\n options,\n colorPalette,\n onClick,\n onSelect,\n onPointMouseOut,\n onPointMouseOver,\n onEventTrigger,\n } = props;\n const prevOptions = usePrevious(options);\n const prevTimezone = usePrevious(timezone);\n\n const handleClick = (\n chartEvent: ChartEvent<'pointClick' | 'legendClick'>,\n type: VizChartEventType\n ): void => {\n let payload: Partial<ChartEvent<'pointClick' | 'legendClick'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n\n if (type === VizChartEventType.POINT_CLICK) {\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n }\n\n onClick({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const destroyChart = (): void => {\n if (chart.current) {\n chart.current.destroy();\n chart.current = null;\n }\n needsRedraw.current = true;\n needsInit.current = true;\n };\n\n const handleSelect = (chartEvent: ChartEvent<'chartRangeSelect'>): void => {\n // todo: need change this after breaking all visualizations\n if (onSelect && typeof onSelect === 'function') {\n onSelect({\n type: 'range.select',\n originalEvent: chartEvent,\n payload: pick(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue'),\n });\n\n return;\n }\n\n // the chartEvent here is a jQuery event\n onEventTrigger({\n type: 'range.select',\n originalEvent: chartEvent,\n payload: pick(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue'),\n });\n };\n\n const handlePointMouseOut = (chartEvent: ChartEvent<'pointMouseOut'>, type: VizChartEventType): void => {\n let payload: Partial<ChartEvent<'pointMouseOut'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n\n onPointMouseOut({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const handlePointMouseOver = (\n chartEvent: ChartEvent<'pointMouseOver'>,\n type: VizChartEventType\n ): void => {\n let payload: Partial<ChartEvent<'pointMouseOver'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n\n onPointMouseOver({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const drawChart = (): void => {\n const updatedOptions = { ...options, shouldColorizeTooltipData: false };\n const computedChartSize = computeChartingSize();\n const computedWidth = computedChartSize.width;\n const computedHeight = computedChartSize.height;\n const serializedTimezone = timezone?.serializedTimezone;\n const ianaTimezone = timezone?.ianaTimezone;\n const utcOffset = timezone?.utcOffset;\n if (!computedWidth || !computedHeight) {\n return;\n }\n if (!chartData || !Object.keys(chartData).length) {\n return;\n }\n\n // splunk-charting layers configuration option updates.\n // when an option is removed it needs to be set to an empty string\n // to override the previous configuration\n if (prevOptions) {\n Object.keys(prevOptions).forEach(key => {\n if (updatedOptions[key] === undefined) {\n updatedOptions[key] = '';\n }\n });\n }\n\n try {\n if (needsInit.current) {\n destroyChart();\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n chart.current = jsCharting.createChart(container.current, {\n ...updatedOptions,\n drilldown: 'all',\n ...(typeof serializedTimezone === 'string' && {\n 'time.serializedTz': serializedTimezone,\n }),\n ...(typeof ianaTimezone === 'string' && {\n 'time.ianaTimezone': ianaTimezone,\n }),\n ...(typeof utcOffset === 'number' && {\n 'time.timezoneOffset': utcOffset,\n }),\n });\n // bind event handlers\n chart.current.on('pointClick', e => {\n handleClick(e, VizChartEventType.POINT_CLICK);\n });\n chart.current.on('pointMouseOver', e => {\n handlePointMouseOver(e, VizChartEventType.POINT_MOUSE_OVER);\n });\n chart.current.on('pointMouseOut', e => {\n handlePointMouseOut(e, VizChartEventType.POINT_MOUSE_OUT);\n });\n chart.current.on('legendClick', e => {\n handleClick(e, VizChartEventType.LEGEND_CLICK);\n });\n chart.current.on('chartRangeSelect', handleSelect);\n }\n if (needsRedraw.current) {\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n chart.current.prepareAndDraw(chartData, updatedOptions, () => {});\n }\n if (chart.current) {\n if (\n Math.round(chart.current.height) !== Math.round(computedHeight) ||\n Math.round(chart.current.width) !== Math.round(computedWidth)\n ) {\n chart.current.resize(computedWidth, computedHeight);\n }\n }\n needsInit.current = false;\n needsRedraw.current = false;\n } catch (e) {\n window.console.error('Caught error rendering chart:', e);\n }\n };\n\n const debouncedDrawChart = debounce(drawChart, 5);\n\n const onContainerMount = chartingContainer => {\n container.current = chartingContainer;\n debouncedDrawChart();\n };\n\n const prevTheme = usePrevious(themeKey);\n const prevOnClick = usePrevious(onClick);\n\n useEffect(() => {\n debouncedDrawChart();\n props.visualizationApiRef(api.current);\n return () => {\n props.visualizationApiRef(null);\n destroyChart();\n };\n }, []);\n\n useEffect(() => {\n // TODO: figure out why re-init is needed for functional components (i.e. PlatformViz) when changing theme\n // seems like redraw doesn't suffice to update the background colors\n if (\n !chart.current ||\n !canUpdateInPlace(prevOptions, options) ||\n // timezone is a simple object so this comparison should be fast\n JSON.stringify(prevTimezone) !== JSON.stringify(timezone) ||\n (!props.themeKey && prevTheme !== themeKey) ||\n prevOnClick !== onClick\n ) {\n needsInit.current = true;\n }\n needsRedraw.current = true;\n // need to immediately call drawChart upon an option or chartData change\n // otherwise a noop would occur if the onContainerMount drawChart is re-invoked when dimensions change\n drawChart();\n }, [\n JSON.stringify(options),\n JSON.stringify(chartData.toJSON()),\n JSON.stringify(chartData.annotations),\n timezone?.ianaTimezone,\n timezone?.utcOffset,\n timezone?.serializedTimezone,\n themeKey,\n onClick,\n ]);\n return (\n <ChartingContainer style={style} ref={onContainerMount} width={width} height={height}>\n <EventListener target={window} onResize={debouncedDrawChart} />\n </ChartingContainer>\n );\n};\n\nconst defaultProps: Record<keyof ChartingProps, any> = {\n width: '100%',\n height: 250,\n options: {},\n style: {},\n // todo: need remove it\n onEventTrigger: noop,\n onClick: noop,\n onSelect: noop,\n onPointMouseOver: noop,\n onPointMouseOut: noop,\n colorPalette: VIZ_CATEGORICAL,\n visualizationApiRef: noop,\n chartData: null,\n themeKey: null,\n};\n\nCharting.propTypes = propTypes;\nCharting.defaultProps = defaultProps;\n\n// allow for early return in case of empty chartData while still following hook rules\nconst withEmptyChartMessage = (Chart): React.FunctionComponent<ChartingProps> => {\n const Wrapper = (props: ChartingProps): React.ReactElement => {\n const { chartData } = props;\n\n if (!chartData) {\n return <Message message={_('No DataSource')} level=\"warning\" />;\n }\n\n if (chartData && !Object.keys(chartData).length) {\n return <Message message={_('No Result')} level=\"info\" />;\n }\n\n return <Chart {...props} />;\n };\n\n Wrapper.displayName = 'ChartingWrapper';\n Wrapper.propTypes = propTypes;\n Wrapper.defaultProps = defaultProps;\n return Wrapper;\n};\n\n// export default Charting;\nexport default withEmptyChartMessage(Charting as any);\n","module.exports = require(\"@splunk/visualization-color-palettes\");","module.exports = require(\"react-event-listener\");","module.exports = require(\"@splunk/visualizations-shared/i18n\");","module.exports = require(\"@splunk/charting-bundle\");","module.exports = require(\"@splunk/themes/useSplunkTheme\");","module.exports = require(\"@splunk/visualizations-shared/themeUtils\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"prop-types\"","webpack:///external \"styled-components\"","webpack:///external \"lodash\"","webpack:///external \"@babel/runtime/helpers/classCallCheck\"","webpack:///external \"@babel/runtime/helpers/createClass\"","webpack:///external \"@splunk/ui-utils/i18n\"","webpack:///external \"@splunk/visualizations-shared/Message\"","webpack:///external \"@splunk/visualization-context/TimezoneContext\"","webpack:///external \"@splunk/visualizations-shared/style\"","webpack:///./src/common/ChartingApi.ts","webpack:///./src/common/Charting.tsx","webpack:///external \"@splunk/visualization-color-palettes\"","webpack:///external \"react-event-listener\"","webpack:///external \"@splunk/visualizations-shared/i18n\"","webpack:///external \"@splunk/charting-bundle\"","webpack:///external \"@splunk/themes/useSplunkTheme\"","webpack:///external \"@splunk/visualizations-shared/themeUtils\""],"names":[],"mappings":"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","file":"Charting.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 42);\n","module.exports = require(\"react\");","module.exports = require(\"prop-types\");","module.exports = require(\"styled-components\");","module.exports = require(\"lodash\");","module.exports = require(\"@babel/runtime/helpers/classCallCheck\");","module.exports = require(\"@babel/runtime/helpers/createClass\");","module.exports = require(\"@splunk/ui-utils/i18n\");","module.exports = require(\"@splunk/visualizations-shared/Message\");","module.exports = require(\"@splunk/visualization-context/TimezoneContext\");","module.exports = require(\"@splunk/visualizations-shared/style\");","import jsCharting from '@splunk/charting-bundle';\n\ninterface Point {\n /**\n * Valid xValue of the chart\n *\n * @type {string|number}\n * @memberof Point\n */\n xValue?: string | number;\n\n /**\n * Valid seriesName for a chart\n *\n * @type {string}\n * @memberof Point\n */\n seriesName?: string;\n}\n\nexport class ChartingApiFunctional {\n // eslint-disable-next-line no-useless-constructor\n constructor(private chartRef: any) {}\n\n /**\n * Allows users to programmatically highlight a point on the chart\n *\n * @memberof ChartingApiFunctional\n */\n highlight({ xValue, seriesName }: Point = { xValue: '', seriesName: '' }): void {\n this.getChart().highlight(xValue, seriesName);\n }\n\n /**\n * Allows users to programmatically unhighlight all points on the chart\n *\n * @memberof ChartingApiFunctional\n */\n unHighlight(): void {\n this.getChart().unHighlight();\n }\n\n // returns chart object\n getChart(): jsCharting {\n return this.chartRef?.current;\n }\n}\n","/* eslint-disable react/no-unused-prop-types */\nimport { pick, debounce, noop } from 'lodash';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { VIZ_CATEGORICAL } from '@splunk/visualization-color-palettes';\nimport { useEffect, useRef, useContext } from 'react';\nimport * as React from 'react';\nimport * as T from 'prop-types';\nimport EventListener from 'react-event-listener';\nimport '@splunk/visualizations-shared/i18n'; // fixme, @splunk/charting should be refactor to use locale & timezone instead of i18n functions\nimport jsCharting from '@splunk/charting-bundle';\nimport TimezoneContext, { TimezoneContextInterface } from '@splunk/visualization-context/TimezoneContext';\nimport { toDimension } from '@splunk/visualizations-shared/style';\nimport styled from 'styled-components';\nimport Message from '@splunk/visualizations-shared/Message';\nimport useSplunkTheme from '@splunk/themes/useSplunkTheme';\nimport { getChartingThemeKey } from '@splunk/visualizations-shared/themeUtils';\nimport { ChartingApiFunctional } from './ChartingApi';\n\nexport const NO_INPLACE_PROPS = [\n 'chart',\n 'chart.orientation',\n 'layout.splitSeries',\n 'chart.style',\n 'legend.placement',\n];\n\nexport const changedOptions = (curOptions: Record<string, any>, nextOptions: Record<string, any>): string[] =>\n Object.keys(curOptions)\n .filter(key => !(key in nextOptions))\n .concat(\n Object.keys(nextOptions).filter(\n key => !(key in curOptions) || curOptions[key] !== nextOptions[key]\n )\n );\n\nfunction usePrevious(value): Record<string, any> {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport const canUpdateInPlace = (\n curOptions: Record<string, any>,\n nextOptions: Record<string, any>\n): boolean => {\n // if either of the options are undefined\n // it cannot update in place.\n if (!curOptions || !nextOptions) {\n return false;\n }\n return (\n !NO_INPLACE_PROPS.some(p => curOptions[p] !== nextOptions[p]) &&\n !changedOptions(curOptions, nextOptions).some(p => p.toLowerCase().endsWith('color'))\n );\n};\n\n// create 'row' payloads from 'rowContext' in the flattened format:\n// row.<fieldname>.value\nexport const updateRowPayload = (\n chartEventRowContext: Record<string, any>,\n payload: Record<string, any>\n): Record<string, any> => {\n Object.keys(chartEventRowContext || {}).forEach(key => {\n // eslint-disable-next-line no-param-reassign\n payload[`${key}.value`] = chartEventRowContext[key];\n });\n\n return payload;\n};\n\nexport interface ContainerProps {\n width: string | number;\n height: string | number;\n}\n\ntype ChartEventType = 'pointClick' | 'pointMouseOver' | 'pointMouseOut' | 'chartRangeSelect' | 'legendClick';\nenum VizChartEventType {\n POINT_CLICK = 'point.click',\n POINT_MOUSE_OUT = 'point.mouseout',\n POINT_MOUSE_OVER = 'point.mouseover',\n LEGEND_CLICK = 'legend.click',\n}\n\ninterface ChartEvent<T extends ChartEventType> extends Event {\n name: string;\n name2: string;\n value?: unknown;\n value2?: unknown;\n rowContext?: Record<string, any>;\n span?: number;\n type: T;\n}\n\n// @TODO(pwied): remove after HC upgrade to 8+\n// .highcharts-a11y-proxy-container rule addresses a HighCharts < 8 bug\n// caused by the accessibility plugin\n// https://github.com/highcharts/highcharts/issues/12883\nconst ChartingContainer = styled.div.attrs((props: ContainerProps) => ({\n 'data-test': 'charting-container',\n width: props.width,\n height: props.height,\n}))`\n & .highcharts-a11y-proxy-container {\n pointer-events: none;\n }\n overflow: hidden;\n position: relative;\n ${props => toDimension(pick(props, ['width', 'height']))};\n`;\n\nexport interface ChartingProps {\n // width in pixel or string, defaults to 100%\n width: string | number;\n // height in pixel or string\n height: string | number;\n // visualization formatting options\n options?: Record<string, any>;\n // charting dataset from jsCharting.extractChartReadyData\n chartData: Record<string, any>;\n // callbacks to trigger event\n onEventTrigger?: (...args: any[]) => void;\n onSelect?: (...args: any[]) => void;\n onClick?: (...args: any[]) => void;\n onPointMouseOver?: (...args: any[]) => void;\n onPointMouseOut?: (...args: any[]) => void;\n // Custom style on visualization\n style?: Record<string, any>;\n colorPalette?: Array<string>;\n visualizationApiRef?: (...args: any[]) => void;\n themeKey?: string;\n}\n\nconst propTypes: Record<keyof ChartingProps, T.Validator<any>> = {\n width: T.oneOfType([T.string, T.number]),\n height: T.oneOfType([T.string, T.number]),\n options: T.object,\n chartData: T.object,\n onEventTrigger: T.func,\n onClick: T.func,\n onSelect: T.func,\n onPointMouseOver: T.func,\n onPointMouseOut: T.func,\n style: T.object,\n colorPalette: T.array,\n visualizationApiRef: T.func,\n themeKey: T.string,\n};\n\nconst Charting = (props: ChartingProps): React.ReactElement => {\n const container = useRef<HTMLDivElement>(null);\n const needsInit = useRef<boolean>(true);\n const chart = useRef<jsCharting>();\n const needsRedraw = useRef<boolean>(true);\n const api = useRef(new ChartingApiFunctional(chart));\n const timezone = useContext<TimezoneContextInterface>(TimezoneContext);\n\n const computeChartingSize = () => {\n if (container.current) {\n const rect = container.current.getBoundingClientRect();\n return {\n height: rect.height,\n width: rect.width,\n };\n }\n return {};\n };\n const splunkTheme = useSplunkTheme();\n const themeKey = props.themeKey ? props.themeKey : getChartingThemeKey({ splunkThemeV1: splunkTheme });\n const {\n width,\n height,\n style,\n chartData,\n options,\n colorPalette,\n onClick,\n onSelect,\n onPointMouseOut,\n onPointMouseOver,\n onEventTrigger,\n } = props;\n const prevOptions = usePrevious(options);\n const prevTimezone = usePrevious(timezone);\n\n const handleClick = (\n chartEvent: ChartEvent<'pointClick' | 'legendClick'>,\n type: VizChartEventType\n ): void => {\n let payload: Partial<ChartEvent<'pointClick' | 'legendClick'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n\n if (type === VizChartEventType.POINT_CLICK) {\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n }\n\n onClick({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const destroyChart = (): void => {\n if (chart.current) {\n chart.current.destroy();\n chart.current = null;\n }\n needsRedraw.current = true;\n needsInit.current = true;\n };\n\n const handleSelect = (chartEvent: ChartEvent<'chartRangeSelect'>): void => {\n // todo: need change this after breaking all visualizations\n if (onSelect && typeof onSelect === 'function') {\n onSelect({\n type: 'range.select',\n originalEvent: chartEvent,\n payload: pick(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue'),\n });\n\n return;\n }\n\n // the chartEvent here is a jQuery event\n onEventTrigger({\n type: 'range.select',\n originalEvent: chartEvent,\n payload: pick(chartEvent, 'startXIndex', 'endXIndex', 'startXValue', 'endXValue'),\n });\n };\n\n const handlePointMouseOut = (chartEvent: ChartEvent<'pointMouseOut'>, type: VizChartEventType): void => {\n let payload: Partial<ChartEvent<'pointMouseOut'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n\n onPointMouseOut({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const handlePointMouseOver = (\n chartEvent: ChartEvent<'pointMouseOver'>,\n type: VizChartEventType\n ): void => {\n let payload: Partial<ChartEvent<'pointMouseOver'>> = pick(\n chartEvent,\n 'name2',\n 'value2',\n '_span',\n 'modifierKey',\n 'tooltipContext'\n );\n\n payload.name = payload.name2;\n delete payload.name2;\n payload.value = payload.value2;\n delete payload.value2;\n\n payload = updateRowPayload(chartEvent.rowContext, payload);\n\n onPointMouseOver({\n type,\n originalEvent: chartEvent,\n payload,\n });\n };\n\n const drawChart = (): void => {\n const updatedOptions = { ...options, shouldColorizeTooltipData: false };\n const computedChartSize = computeChartingSize();\n const computedWidth = computedChartSize.width;\n const computedHeight = computedChartSize.height;\n const serializedTimezone = timezone?.serializedTimezone;\n const ianaTimezone = timezone?.ianaTimezone;\n const utcOffset = timezone?.utcOffset;\n if (!computedWidth || !computedHeight) {\n return;\n }\n if (!chartData || !Object.keys(chartData).length) {\n return;\n }\n\n // splunk-charting layers configuration option updates.\n // when an option is removed it needs to be set to an empty string\n // to override the previous configuration\n if (prevOptions) {\n Object.keys(prevOptions).forEach(key => {\n if (updatedOptions[key] === undefined) {\n updatedOptions[key] = '';\n }\n });\n }\n\n try {\n if (needsInit.current) {\n destroyChart();\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n chart.current = jsCharting.createChart(container.current, {\n ...updatedOptions,\n drilldown: 'all',\n ...(typeof serializedTimezone === 'string' && {\n 'time.serializedTz': serializedTimezone,\n }),\n ...(typeof ianaTimezone === 'string' && {\n 'time.ianaTimezone': ianaTimezone,\n }),\n ...(typeof utcOffset === 'number' && {\n 'time.timezoneOffset': utcOffset,\n }),\n });\n // bind event handlers\n chart.current.on('pointClick', e => {\n handleClick(e, VizChartEventType.POINT_CLICK);\n });\n chart.current.on('pointMouseOver', e => {\n handlePointMouseOver(e, VizChartEventType.POINT_MOUSE_OVER);\n });\n chart.current.on('pointMouseOut', e => {\n handlePointMouseOut(e, VizChartEventType.POINT_MOUSE_OUT);\n });\n chart.current.on('legendClick', e => {\n handleClick(e, VizChartEventType.LEGEND_CLICK);\n });\n chart.current.on('chartRangeSelect', handleSelect);\n }\n if (needsRedraw.current) {\n jsCharting.setTheme(themeKey);\n if (colorPalette.length > 0) {\n jsCharting.setColorPalette(colorPalette);\n }\n chart.current.prepareAndDraw(chartData, updatedOptions, () => {});\n }\n if (chart.current) {\n if (\n Math.round(chart.current.height) !== Math.round(computedHeight) ||\n Math.round(chart.current.width) !== Math.round(computedWidth)\n ) {\n chart.current.resize(computedWidth, computedHeight);\n }\n }\n needsInit.current = false;\n needsRedraw.current = false;\n } catch (e) {\n window.console.error('Caught error rendering chart:', e);\n }\n };\n\n const debouncedDrawChart = debounce(drawChart, 5);\n\n const onContainerMount = chartingContainer => {\n container.current = chartingContainer;\n debouncedDrawChart();\n };\n\n const prevTheme = usePrevious(themeKey);\n const prevOnClick = usePrevious(onClick);\n\n useEffect(() => {\n debouncedDrawChart();\n props.visualizationApiRef(api.current);\n return () => {\n props.visualizationApiRef(null);\n destroyChart();\n };\n }, []);\n\n useEffect(() => {\n // TODO: figure out why re-init is needed for functional components (i.e. PlatformViz) when changing theme\n // seems like redraw doesn't suffice to update the background colors\n if (\n !chart.current ||\n !canUpdateInPlace(prevOptions, options) ||\n // timezone is a simple object so this comparison should be fast\n JSON.stringify(prevTimezone) !== JSON.stringify(timezone) ||\n (!props.themeKey && prevTheme !== themeKey) ||\n prevOnClick !== onClick\n ) {\n needsInit.current = true;\n }\n needsRedraw.current = true;\n // need to immediately call drawChart upon an option or chartData change\n // otherwise a noop would occur if the onContainerMount drawChart is re-invoked when dimensions change\n drawChart();\n }, [\n JSON.stringify(options),\n JSON.stringify(chartData.toJSON()),\n JSON.stringify(chartData.annotations),\n timezone?.ianaTimezone,\n timezone?.utcOffset,\n timezone?.serializedTimezone,\n themeKey,\n onClick,\n ]);\n return (\n <ChartingContainer style={style} ref={onContainerMount} width={width} height={height}>\n <EventListener target={window} onResize={debouncedDrawChart} />\n </ChartingContainer>\n );\n};\n\nconst defaultProps: Record<keyof ChartingProps, any> = {\n width: '100%',\n height: 250,\n options: {},\n style: {},\n // todo: need remove it\n onEventTrigger: noop,\n onClick: noop,\n onSelect: noop,\n onPointMouseOver: noop,\n onPointMouseOut: noop,\n colorPalette: VIZ_CATEGORICAL,\n visualizationApiRef: noop,\n chartData: null,\n themeKey: null,\n};\n\nCharting.propTypes = propTypes;\nCharting.defaultProps = defaultProps;\n\n// allow for early return in case of empty chartData while still following hook rules\nconst withEmptyChartMessage = (Chart): React.FunctionComponent<ChartingProps> => {\n const Wrapper = (props: ChartingProps): React.ReactElement => {\n const { chartData } = props;\n\n if (!chartData) {\n return <Message message={_('No DataSource')} level=\"warning\" />;\n }\n\n if (chartData && !Object.keys(chartData).length) {\n return <Message message={_('No Result')} level=\"info\" />;\n }\n\n return <Chart {...props} />;\n };\n\n Wrapper.displayName = 'ChartingWrapper';\n Wrapper.propTypes = propTypes;\n Wrapper.defaultProps = defaultProps;\n return Wrapper;\n};\n\n// export default Charting;\nexport default withEmptyChartMessage(Charting as any);\n","module.exports = require(\"@splunk/visualization-color-palettes\");","module.exports = require(\"react-event-listener\");","module.exports = require(\"@splunk/visualizations-shared/i18n\");","module.exports = require(\"@splunk/charting-bundle\");","module.exports = require(\"@splunk/themes/useSplunkTheme\");","module.exports = require(\"@splunk/visualizations-shared/themeUtils\");"],"sourceRoot":""}
|