@splunk/visualizations 28.3.0 → 28.5.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/Area.d.ts.map +1 -1
- package/Area.config.js +28 -8
- package/Area.config.js.map +2 -2
- package/Area.js +583 -120
- package/Area.js.map +3 -3
- package/Bar/Bar.d.ts.map +1 -1
- package/Bar.config.js +28 -8
- package/Bar.config.js.map +2 -2
- package/Bar.js +593 -120
- package/Bar.js.map +3 -3
- package/Bubble.config.js +4 -5
- package/Bubble.config.js.map +2 -2
- package/Bubble.js +554 -98
- package/Bubble.js.map +3 -3
- package/CHANGELOG.external.md +165 -0
- package/ChoroplethSvg/ChoroplethSvg.d.ts +4 -3
- package/ChoroplethSvg/ChoroplethSvg.d.ts.map +1 -1
- package/ChoroplethSvg.config.js +1 -3
- package/ChoroplethSvg.config.js.map +2 -2
- package/ChoroplethSvg.js +595 -111
- package/ChoroplethSvg.js.map +4 -4
- package/Column/Column.d.ts.map +1 -1
- package/Column.config.js +28 -8
- package/Column.config.js.map +2 -2
- package/Column.js +583 -120
- package/Column.js.map +3 -3
- package/Ellipse/config.d.ts.map +1 -1
- package/Ellipse.config.js +14 -5
- package/Ellipse.config.js.map +4 -4
- package/Ellipse.js +640 -159
- package/Ellipse.js.map +4 -4
- package/Events/PureEvents/PureEvents.d.ts.map +1 -1
- package/Events.js +668 -157
- package/Events.js.map +4 -4
- package/FillerGauge/FillerGauge.d.ts.map +1 -1
- package/FillerGauge/PureFillerGauge/FillerGauge.d.ts.map +1 -1
- package/FillerGauge.js +751 -169
- package/FillerGauge.js.map +4 -4
- package/Image/Image.d.ts.map +1 -1
- package/Image.js +620 -116
- package/Image.js.map +4 -4
- package/Line/Line.d.ts.map +1 -1
- package/Line/lineUtils.d.ts.map +1 -1
- package/Line/mockdata/LineData.d.ts +154 -0
- package/Line/mockdata/LineData.d.ts.map +1 -1
- package/Line.config.js +28 -8
- package/Line.config.js.map +2 -2
- package/Line.js +704 -122
- package/Line.js.map +3 -3
- package/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts +5 -0
- package/LinkGraph/PureLinkGraph/PureLinkGraph.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/PureLinkGraphUtils.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/components/Graph.d.ts +9 -1
- package/LinkGraph/PureLinkGraph/components/Graph.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/components/GraphStyles.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/components/Node.d.ts +1 -0
- package/LinkGraph/PureLinkGraph/components/Node.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/components/Nodes.d.ts +1 -0
- package/LinkGraph/PureLinkGraph/components/Nodes.d.ts.map +1 -1
- package/LinkGraph/PureLinkGraph/measurementUtils.d.ts +16 -0
- package/LinkGraph/PureLinkGraph/measurementUtils.d.ts.map +1 -0
- package/LinkGraph/PureLinkGraph/utils/iconLoader.d.ts.map +1 -1
- package/LinkGraph/config.d.ts.map +1 -1
- package/LinkGraph.config.js +15 -1
- package/LinkGraph.config.js.map +2 -2
- package/LinkGraph.js +1411 -662
- package/LinkGraph.js.map +4 -4
- package/Map/Map.d.ts +2 -2
- package/Map/Map.d.ts.map +1 -1
- package/Map/PureMap/BubbleLayer.d.ts +5 -0
- package/Map/PureMap/BubbleLayer.d.ts.map +1 -1
- package/Map/PureMap/ClusterLayer.d.ts.map +1 -1
- package/Map/PureMap/LocalChoroplethLayer.d.ts.map +1 -1
- package/Map/PureMap/MapUtils.d.ts +2 -2
- package/Map/PureMap/MapUtils.d.ts.map +1 -1
- package/Map/PureMap/PureMap.d.ts.map +1 -1
- package/Map/PureMap/PureMapContainer.d.ts.map +1 -1
- package/Map/PureMap/Tooltip.d.ts.map +1 -1
- package/Map/config.d.ts.map +1 -1
- package/Map.config.js +0 -1
- package/Map.config.js.map +2 -2
- package/Map.js +831 -247
- package/Map.js.map +4 -4
- package/Markdown/Markdown.d.ts.map +1 -1
- package/Markdown/config.d.ts.map +1 -1
- package/Markdown.config.js +14 -5
- package/Markdown.config.js.map +4 -4
- package/Markdown.js +619 -109
- package/Markdown.js.map +4 -4
- package/MarkerGauge/MarkerGauge.d.ts +5 -1
- package/MarkerGauge/MarkerGauge.d.ts.map +1 -1
- package/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts +4 -0
- package/MarkerGauge/PureMarkerGauge/MarkerGauge.d.ts.map +1 -1
- package/MarkerGauge/config.d.ts.map +1 -1
- package/MarkerGauge.config.js +121 -3
- package/MarkerGauge.config.js.map +3 -3
- package/MarkerGauge.js +1535 -172
- package/MarkerGauge.js.map +4 -4
- package/NetworkGraph/NetworkGraph.d.ts +22 -0
- package/NetworkGraph/NetworkGraph.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/PureNetworkGraph.d.ts +60 -0
- package/NetworkGraph/PureNetworkGraph/PureNetworkGraph.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/components/Link.d.ts +19 -0
- package/NetworkGraph/PureNetworkGraph/components/Link.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts +29 -0
- package/NetworkGraph/PureNetworkGraph/components/NetworkGraphSvg.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/components/Node.d.ts +27 -0
- package/NetworkGraph/PureNetworkGraph/components/Node.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/components/Tooltip.d.ts +12 -0
- package/NetworkGraph/PureNetworkGraph/components/Tooltip.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/components/ZoomControls.d.ts +13 -0
- package/NetworkGraph/PureNetworkGraph/components/ZoomControls.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/mockdata/data.d.ts +140 -0
- package/NetworkGraph/PureNetworkGraph/mockdata/data.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/mockdata/datasource.d.ts +89 -0
- package/NetworkGraph/PureNetworkGraph/mockdata/datasource.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/utils/dragUtils.d.ts +78 -0
- package/NetworkGraph/PureNetworkGraph/utils/dragUtils.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/utils/forceLayout.d.ts +47 -0
- package/NetworkGraph/PureNetworkGraph/utils/forceLayout.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/utils/iconLoader.d.ts +78 -0
- package/NetworkGraph/PureNetworkGraph/utils/iconLoader.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphShared.d.ts +111 -0
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphShared.d.ts.map +1 -0
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts +122 -0
- package/NetworkGraph/PureNetworkGraph/utils/networkGraphUtils.d.ts.map +1 -0
- package/NetworkGraph/config.d.ts +4 -0
- package/NetworkGraph/config.d.ts.map +1 -0
- package/NetworkGraph/index.d.ts +3 -0
- package/NetworkGraph/index.d.ts.map +1 -0
- package/NetworkGraph.config.js +938 -0
- package/NetworkGraph.config.js.map +7 -0
- package/NetworkGraph.js +7053 -0
- package/NetworkGraph.js.map +7 -0
- package/PERFORMANCE.md +23 -0
- package/ParallelCoordinates/ParallelCoordinates.d.ts +1 -46
- package/ParallelCoordinates/ParallelCoordinates.d.ts.map +1 -1
- package/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts +12 -58
- package/ParallelCoordinates/PureParallelCoordinates/PureParallelCoordinates.d.ts.map +1 -1
- package/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts +1 -0
- package/ParallelCoordinates/PureParallelCoordinates/src/ParallelCoordinatesChart.d.ts.map +1 -1
- package/ParallelCoordinates.js +664 -228
- package/ParallelCoordinates.js.map +4 -4
- package/Pie/Pie.d.ts.map +1 -1
- package/Pie/config.d.ts.map +1 -1
- package/Pie/pieUtils.d.ts +4 -0
- package/Pie/pieUtils.d.ts.map +1 -1
- package/Pie.config.js +16 -0
- package/Pie.config.js.map +2 -2
- package/Pie.js +610 -118
- package/Pie.js.map +3 -3
- package/Punchcard.js +579 -92
- package/Punchcard.js.map +4 -4
- package/Rectangle/config.d.ts.map +1 -1
- package/Rectangle.config.js +14 -5
- package/Rectangle.config.js.map +4 -4
- package/Rectangle.js +611 -130
- package/Rectangle.js.map +4 -4
- package/Sankey/PureSankey/PureSankey.d.ts +26 -72
- package/Sankey/PureSankey/PureSankey.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyLink.d.ts +3 -19
- package/Sankey/PureSankey/SankeyLink.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyNode.d.ts +3 -20
- package/Sankey/PureSankey/SankeyNode.d.ts.map +1 -1
- package/Sankey/PureSankey/SankeyTooltip.d.ts +3 -24
- package/Sankey/PureSankey/SankeyTooltip.d.ts.map +1 -1
- package/Sankey.js +814 -429
- package/Sankey.js.map +4 -4
- package/Scatter/Scatter.d.ts.map +1 -1
- package/Scatter.config.js +168 -148
- package/Scatter.config.js.map +4 -4
- package/Scatter.js +733 -260
- package/Scatter.js.map +4 -4
- package/SingleValue/SingleValue.d.ts.map +1 -1
- package/SingleValue/config.d.ts.map +1 -1
- package/SingleValue.config.js +15 -2
- package/SingleValue.config.js.map +2 -2
- package/SingleValue.js +733 -229
- package/SingleValue.js.map +3 -3
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon/SingleValueIcon.d.ts.map +1 -1
- package/SingleValueIcon/config.d.ts.map +1 -1
- package/SingleValueIcon.config.js +14 -6
- package/SingleValueIcon.config.js.map +4 -4
- package/SingleValueIcon.js +612 -182
- package/SingleValueIcon.js.map +4 -4
- package/SingleValueRadial/PureSingleValueRadial/GaugeGraph.d.ts.map +1 -1
- package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts +0 -8
- package/SingleValueRadial/PureSingleValueRadial/utils/gaugeUtils.d.ts.map +1 -1
- package/SingleValueRadial/SingleValueRadial.d.ts.map +1 -1
- package/SingleValueRadial.config.js +0 -1
- package/SingleValueRadial.config.js.map +2 -2
- package/SingleValueRadial.js +594 -182
- package/SingleValueRadial.js.map +4 -4
- package/SparkLine.js +46 -8
- package/SparkLine.js.map +2 -2
- package/Table/PureTable.d.ts +10 -0
- package/Table/PureTable.d.ts.map +1 -1
- package/Table/Table.d.ts.map +1 -1
- package/Table/cells/SparklineCell.d.ts.map +1 -1
- package/Table/config.d.ts.map +1 -1
- package/Table/hooks.d.ts +6 -0
- package/Table/hooks.d.ts.map +1 -1
- package/Table.config.js +1 -1
- package/Table.config.js.map +2 -2
- package/Table.js +836 -253
- package/Table.js.map +4 -4
- package/Timeline/PureTimeline/PureTimeline.d.ts.map +1 -1
- package/Timeline/PureTimeline/src/CursorPlugin.d.ts.map +1 -1
- package/Timeline/PureTimeline/src/TimelineLegend.d.ts.map +1 -1
- package/Timeline/PureTimeline/src/TimelinePlugin.d.ts.map +1 -1
- package/Timeline/PureTimeline/src/TimelineYAxis.d.ts.map +1 -1
- package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts +2 -1
- package/Timeline/PureTimeline/src/utils/timelineUtils.d.ts.map +1 -1
- package/Timeline/config.d.ts.map +1 -1
- package/Timeline.config.js +31 -12
- package/Timeline.config.js.map +4 -4
- package/Timeline.js +785 -247
- package/Timeline.js.map +4 -4
- package/common/Charting.d.ts +5 -0
- package/common/Charting.d.ts.map +1 -1
- package/common/Charting.js +12 -0
- package/common/Charting.js.map +2 -2
- package/common/GaugeMajorTicks.js +150 -13
- package/common/GaugeMajorTicks.js.map +4 -4
- package/common/GaugeValueMarker.js +84 -17
- package/common/GaugeValueMarker.js.map +4 -4
- package/common/OptionsDoc.js.map +1 -1
- package/common/OverviewDoc.d.ts.map +1 -1
- package/common/OverviewDoc.js +2 -2
- package/common/OverviewDoc.js.map +2 -2
- package/common/ThemesDoc.js +0 -1
- package/common/ThemesDoc.js.map +2 -2
- package/common/TimeSeriesChartWrapper.d.ts +24 -11
- package/common/TimeSeriesChartWrapper.d.ts.map +1 -1
- package/common/TimeSeriesChartWrapper.js +617 -91
- package/common/TimeSeriesChartWrapper.js.map +4 -4
- package/common/chartingUtils.d.ts +52 -6
- package/common/chartingUtils.d.ts.map +1 -1
- package/common/chartingUtils.js +116 -17
- package/common/chartingUtils.js.map +3 -3
- package/common/editorConfig/AxesChartDataConfig.d.ts +3 -3
- package/common/editorConfig/AxesChartDataConfig.d.ts.map +1 -1
- package/common/editorConfig/AxesChartDataDisplay.d.ts +4 -0
- package/common/editorConfig/AxesChartDataDisplay.d.ts.map +1 -1
- package/common/editorConfig/AxesChartLegend.d.ts.map +1 -1
- package/common/gaugeUtils.d.ts +37 -0
- package/common/gaugeUtils.d.ts.map +1 -1
- package/common/gaugeUtils.js +152 -2
- package/common/gaugeUtils.js.map +4 -4
- package/common/hocs/mockdata/trellisData.d.ts +119 -0
- package/common/hocs/mockdata/trellisData.d.ts.map +1 -1
- package/common/hocs/withTrellis.d.ts.map +1 -1
- package/common/interfaces/DashboardVizProps.d.ts +0 -3
- package/common/interfaces/DashboardVizProps.d.ts.map +1 -1
- package/common/interfaces/DataSource.d.ts +1 -1
- package/common/interfaces/DataSource.d.ts.map +1 -1
- package/common/interfaces/Overview.d.ts +1 -0
- package/common/interfaces/Overview.d.ts.map +1 -1
- package/common/interfaces/VizConfig.d.ts +2 -1
- package/common/interfaces/VizConfig.d.ts.map +1 -1
- package/common/shapeUtils.js +5 -20
- package/common/shapeUtils.js.map +2 -2
- package/common/utils/dataUtils.d.ts.map +1 -1
- package/common/utils/dataUtils.js +5 -4
- package/common/utils/dataUtils.js.map +2 -2
- package/common/utils/mapUtils.js +16 -9
- package/common/utils/mapUtils.js.map +2 -2
- package/common/utils/singleValueUtils.js +17 -18
- package/common/utils/singleValueUtils.js.map +2 -2
- package/common/utils/textUtils.d.ts +20 -0
- package/common/utils/textUtils.d.ts.map +1 -0
- package/common/utils/textUtils.js +76 -0
- package/common/utils/textUtils.js.map +7 -0
- package/common/utils/trellisUtils.d.ts.map +1 -1
- package/common/utils/trellisUtils.js +16 -20
- package/common/utils/trellisUtils.js.map +2 -2
- package/common/withDashboardViz.d.ts.map +1 -1
- package/common/withDashboardViz.js +600 -92
- package/common/withDashboardViz.js.map +4 -4
- package/package.json +46 -39
- package/common/utils/styleUtils.d.ts +0 -2
- package/common/utils/styleUtils.d.ts.map +0 -1
- package/common/utils/styleUtils.js +0 -30
- package/common/utils/styleUtils.js.map +0 -7
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const VIZ_FONT_FAMILY = "'Splunk Platform Sans', 'Splunk Data Sans', Roboto, Droid, 'Helvetica Neue', Helvetica, Arial, sans-serif";
|
|
2
|
+
/**
|
|
3
|
+
* Return text width
|
|
4
|
+
* @method computeTextWidth
|
|
5
|
+
* @param {String} text
|
|
6
|
+
* @param {String} font
|
|
7
|
+
* @returns {Number} width of text with font
|
|
8
|
+
*/
|
|
9
|
+
export declare const computeTextWidth: (text: string, font: string) => number;
|
|
10
|
+
/**
|
|
11
|
+
* Return truncated text
|
|
12
|
+
* @method truncateText
|
|
13
|
+
* @param {String} text
|
|
14
|
+
* @param {Number} maxWidth
|
|
15
|
+
* @param {String} truncationType
|
|
16
|
+
* @param {String} font
|
|
17
|
+
* @returns {String} truncated text
|
|
18
|
+
*/
|
|
19
|
+
export declare const truncateText: (text: string, maxWidth: number, truncationType: "ellipsisEnd" | "ellipsisMiddle" | "ellipsisStart", font?: string) => string;
|
|
20
|
+
//# sourceMappingURL=textUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textUtils.d.ts","sourceRoot":"","sources":["../../src/common/utils/textUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,8GACmF,CAAC;AAEhH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,MAM7D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GACrB,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,gBAAgB,aAAa,GAAG,gBAAgB,GAAG,eAAe,EAClE,aAAgC,KACjC,MA4CF,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* Copyright © 2020 Splunk Inc.
|
|
2
|
+
SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
|
|
3
|
+
in part without a valid written license from Splunk Inc. is PROHIBITED. */
|
|
4
|
+
"use strict";
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
|
|
23
|
+
// src/common/utils/textUtils.ts
|
|
24
|
+
var textUtils_exports = {};
|
|
25
|
+
__export(textUtils_exports, {
|
|
26
|
+
VIZ_FONT_FAMILY: () => VIZ_FONT_FAMILY,
|
|
27
|
+
computeTextWidth: () => computeTextWidth,
|
|
28
|
+
truncateText: () => truncateText
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(textUtils_exports);
|
|
31
|
+
var VIZ_FONT_FAMILY = "'Splunk Platform Sans', 'Splunk Data Sans', Roboto, Droid, 'Helvetica Neue', Helvetica, Arial, sans-serif";
|
|
32
|
+
var computeTextWidth = (text, font) => {
|
|
33
|
+
const canvas = document.createElement("canvas");
|
|
34
|
+
const context = canvas.getContext("2d");
|
|
35
|
+
context.font = font;
|
|
36
|
+
const measure = context.measureText(text);
|
|
37
|
+
return measure.width;
|
|
38
|
+
};
|
|
39
|
+
var truncateText = (text, maxWidth, truncationType, font = `10px ${VIZ_FONT_FAMILY}`) => {
|
|
40
|
+
const canvas = document.createElement("canvas");
|
|
41
|
+
const context = canvas.getContext("2d");
|
|
42
|
+
if (!context) return text;
|
|
43
|
+
context.font = font;
|
|
44
|
+
const ellipsis = "...";
|
|
45
|
+
const ellipsisWidth = context.measureText(ellipsis).width;
|
|
46
|
+
const fullTextWidth = context.measureText(text).width;
|
|
47
|
+
if (fullTextWidth <= maxWidth) {
|
|
48
|
+
return text;
|
|
49
|
+
}
|
|
50
|
+
if (truncationType === "ellipsisEnd") {
|
|
51
|
+
for (let i = text.length - 1; i > 0; i -= 1) {
|
|
52
|
+
const truncatedText = text.slice(0, i) + ellipsis;
|
|
53
|
+
if (context.measureText(truncatedText).width <= maxWidth) {
|
|
54
|
+
return truncatedText;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
} else if (truncationType === "ellipsisStart") {
|
|
58
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
59
|
+
const truncatedText = ellipsis + text.slice(i);
|
|
60
|
+
if (context.measureText(truncatedText).width <= maxWidth) {
|
|
61
|
+
return truncatedText;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
} else if (truncationType === "ellipsisMiddle") {
|
|
65
|
+
for (let i = 0; i < text.length / 2; i += 1) {
|
|
66
|
+
const left = text.slice(0, Math.floor(text.length / 2) - i);
|
|
67
|
+
const right = text.slice(Math.ceil(text.length / 2) + i);
|
|
68
|
+
const truncatedText = left + ellipsis + right;
|
|
69
|
+
if (context.measureText(left).width + ellipsisWidth + context.measureText(right).width <= maxWidth) {
|
|
70
|
+
return truncatedText;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return ellipsis;
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=textUtils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/common/utils/textUtils.ts"],
|
|
4
|
+
"sourcesContent": ["export const VIZ_FONT_FAMILY =\n \"'Splunk Platform Sans', 'Splunk Data Sans', Roboto, Droid, 'Helvetica Neue', Helvetica, Arial, sans-serif\";\n\n/**\n * Return text width\n * @method computeTextWidth\n * @param {String} text\n * @param {String} font\n * @returns {Number} width of text with font\n */\nexport const computeTextWidth = (text: string, font: string): number => {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n context.font = font;\n const measure = context.measureText(text);\n return measure.width;\n};\n\n/**\n * Return truncated text\n * @method truncateText\n * @param {String} text\n * @param {Number} maxWidth\n * @param {String} truncationType\n * @param {String} font\n * @returns {String} truncated text\n */\nexport const truncateText = (\n text: string,\n maxWidth: number,\n truncationType: 'ellipsisEnd' | 'ellipsisMiddle' | 'ellipsisStart',\n font = `10px ${VIZ_FONT_FAMILY}`\n): string => {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (!context) return text;\n\n context.font = font;\n\n const ellipsis = '...';\n const ellipsisWidth = context.measureText(ellipsis).width;\n const fullTextWidth = context.measureText(text).width;\n\n if (fullTextWidth <= maxWidth) {\n return text;\n }\n\n if (truncationType === 'ellipsisEnd') {\n for (let i = text.length - 1; i > 0; i -= 1) {\n const truncatedText = text.slice(0, i) + ellipsis;\n if (context.measureText(truncatedText).width <= maxWidth) {\n return truncatedText;\n }\n }\n } else if (truncationType === 'ellipsisStart') {\n for (let i = 0; i < text.length; i += 1) {\n const truncatedText = ellipsis + text.slice(i);\n if (context.measureText(truncatedText).width <= maxWidth) {\n return truncatedText;\n }\n }\n } else if (truncationType === 'ellipsisMiddle') {\n for (let i = 0; i < text.length / 2; i += 1) {\n const left = text.slice(0, Math.floor(text.length / 2) - i);\n const right = text.slice(Math.ceil(text.length / 2) + i);\n const truncatedText = left + ellipsis + right;\n if (\n context.measureText(left).width + ellipsisWidth + context.measureText(right).width <=\n maxWidth\n ) {\n return truncatedText;\n }\n }\n }\n\n return ellipsis;\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,kBACT;AASG,IAAM,mBAAmB,CAAC,MAAc,SAAyB;AACpE,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAM,UAAU,OAAO,WAAW,IAAI;AACtC,UAAQ,OAAO;AACf,QAAM,UAAU,QAAQ,YAAY,IAAI;AACxC,SAAO,QAAQ;AACnB;AAWO,IAAM,eAAe,CACxB,MACA,UACA,gBACA,OAAO,QAAQ,eAAe,OACrB;AACT,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAM,UAAU,OAAO,WAAW,IAAI;AACtC,MAAI,CAAC,QAAS,QAAO;AAErB,UAAQ,OAAO;AAEf,QAAM,WAAW;AACjB,QAAM,gBAAgB,QAAQ,YAAY,QAAQ,EAAE;AACpD,QAAM,gBAAgB,QAAQ,YAAY,IAAI,EAAE;AAEhD,MAAI,iBAAiB,UAAU;AAC3B,WAAO;AAAA,EACX;AAEA,MAAI,mBAAmB,eAAe;AAClC,aAAS,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG;AACzC,YAAM,gBAAgB,KAAK,MAAM,GAAG,CAAC,IAAI;AACzC,UAAI,QAAQ,YAAY,aAAa,EAAE,SAAS,UAAU;AACtD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,WAAW,mBAAmB,iBAAiB;AAC3C,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACrC,YAAM,gBAAgB,WAAW,KAAK,MAAM,CAAC;AAC7C,UAAI,QAAQ,YAAY,aAAa,EAAE,SAAS,UAAU;AACtD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,WAAW,mBAAmB,kBAAkB;AAC5C,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG;AACzC,YAAM,OAAO,KAAK,MAAM,GAAG,KAAK,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC;AAC1D,YAAM,QAAQ,KAAK,MAAM,KAAK,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC;AACvD,YAAM,gBAAgB,OAAO,WAAW;AACxC,UACI,QAAQ,YAAY,IAAI,EAAE,QAAQ,gBAAgB,QAAQ,YAAY,KAAK,EAAE,SAC7E,UACF;AACE,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trellisUtils.d.ts","sourceRoot":"","sources":["../../src/common/utils/trellisUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,aAAa,EAUhB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,CAAC;AAChF,MAAM,WAAW,eAAe;IAC5B,gBAAgB,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,yBAAyB,GAAG,wBAAwB,GAAG,SAAS,CAAC;CAC/E;AACD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,GAAI,YAAY;IAC9D,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,KAAG,eAsBH,CAAC;AAWF,eAAO,MAAM,+CAA+C,GAAI,YAAY;IACxE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,KAAG,eAkDH,CAAC;AAEF,eAAO,MAAM,mCAAmC,GAAI,YAAY;IAC5D,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,KAAG,eA4BH,CAAC;AAEF,eAAO,MAAM,+BAA+B,GACxC,YAAY;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,EAC1C,SAAS,MAAM,KAChB,
|
|
1
|
+
{"version":3,"file":"trellisUtils.d.ts","sourceRoot":"","sources":["../../src/common/utils/trellisUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,aAAa,EAUhB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;CAAE,CAAC;AAChF,MAAM,WAAW,eAAe;IAC5B,gBAAgB,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,yBAAyB,GAAG,wBAAwB,GAAG,SAAS,CAAC;CAC/E;AACD,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,GAAI,YAAY;IAC9D,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,KAAG,eAsBH,CAAC;AAWF,eAAO,MAAM,+CAA+C,GAAI,YAAY;IACxE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,KAAG,eAkDH,CAAC;AAEF,eAAO,MAAM,mCAAmC,GAAI,YAAY;IAC5D,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B,KAAG,eA4BH,CAAC;AAEF,eAAO,MAAM,+BAA+B,GACxC,YAAY;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,EAC1C,SAAS,MAAM,KAChB,eAyCF,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACpC,YAAY;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,EAC1C,SAAS,MAAM,KAChB,eAsLF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC,GAC7C,YAAY;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,EAC1C,SAAS,MAAM,EACf,YAAY,aAAa,KAC1B,eA4CF,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,WAAW,aAAa,EACxB,aAAa;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,EAC3C,gBAAgB,MAAM,KACvB,eA8BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,GAC5C,aAAa,OAAO,EACpB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvB,CAAC;AAiCF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GACxB,WAAW,eAAe,EAC1B,oBAAoB,OAAO,EAC3B,UAAU,MAAM,GAAG,MAAM,EACzB,UAAU,MAAM,GAAG,MAAM,EACzB,YAAY,MAAM,wBAWrB,CAAC"}
|
|
@@ -69,7 +69,7 @@ var trellisUtils_default = "default" in defaultImport2 ? defaultImport2.default
|
|
|
69
69
|
var AGGREGATIONS = "aggregations";
|
|
70
70
|
var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
|
|
71
71
|
var _a, _b, _c, _d;
|
|
72
|
-
const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
|
|
72
|
+
const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
|
|
73
73
|
const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
74
74
|
let splitDataSources = null;
|
|
75
75
|
let errorCode = null;
|
|
@@ -90,7 +90,7 @@ var dataSourcesSplitByAggregationsUnknown = (dataSource) => {
|
|
|
90
90
|
}
|
|
91
91
|
return { splitDataSources, errorCode };
|
|
92
92
|
};
|
|
93
|
-
var toFieldEntries = (fields) => {
|
|
93
|
+
var toFieldEntries = (fields = []) => {
|
|
94
94
|
return fields.map((field) => {
|
|
95
95
|
if (typeof field === "string") {
|
|
96
96
|
return { name: field };
|
|
@@ -105,7 +105,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
|
|
|
105
105
|
let splitDataSources = null;
|
|
106
106
|
let splitByFields = [];
|
|
107
107
|
let errorCode = null;
|
|
108
|
-
if (
|
|
108
|
+
if (fields.length > 0) {
|
|
109
109
|
splitByFields = (0, trellisUtils_exports.extractDataSourceAggregationKeysChart)(fields);
|
|
110
110
|
}
|
|
111
111
|
if (splitByFields && splitByFields.length > 0) {
|
|
@@ -143,12 +143,12 @@ var dataSourcesSplitByAggregationsTimechartAndChart = (dataSource) => {
|
|
|
143
143
|
};
|
|
144
144
|
var dataSourcesSplitByAggregationsStats = (dataSource) => {
|
|
145
145
|
var _a, _b, _c, _d;
|
|
146
|
-
const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
|
|
146
|
+
const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
|
|
147
147
|
const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
148
148
|
let splitDataSources = null;
|
|
149
149
|
let splitByFields = [];
|
|
150
150
|
let errorCode = null;
|
|
151
|
-
if (
|
|
151
|
+
if (fields.length > 0) {
|
|
152
152
|
splitByFields = (0, trellisUtils_exports.extractDataSourceAggregationKeysStats)(fields);
|
|
153
153
|
}
|
|
154
154
|
if (splitByFields && splitByFields.length > 0) {
|
|
@@ -172,12 +172,12 @@ var dataSourcesSplitByAggregationsStats = (dataSource) => {
|
|
|
172
172
|
};
|
|
173
173
|
var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
|
|
174
174
|
var _a, _b, _c, _d, _e;
|
|
175
|
-
const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
|
|
175
|
+
const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
|
|
176
176
|
const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
177
177
|
let splitDataSources = null;
|
|
178
178
|
let splitByFields = [];
|
|
179
179
|
let errorCode = null;
|
|
180
|
-
if (
|
|
180
|
+
if (fields.length > 0) {
|
|
181
181
|
splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
|
|
182
182
|
}
|
|
183
183
|
if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
|
|
@@ -193,16 +193,14 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
|
|
|
193
193
|
splitDataSources[val] = (0, lodash_exports.cloneDeep)(
|
|
194
194
|
(0, lodash_exports.omit)(dataSource, ["primary.data.fields", "primary.data.columns"])
|
|
195
195
|
);
|
|
196
|
-
splitDataSources[val].primary.data.fields = [
|
|
197
|
-
{ name: fields[0].name },
|
|
198
|
-
...dataSourceKeys.map((k) => ({
|
|
199
|
-
name: k
|
|
200
|
-
}))
|
|
201
|
-
];
|
|
196
|
+
splitDataSources[val].primary.data.fields = [{ name: fields[0].name }];
|
|
202
197
|
splitDataSources[val].primary.data.columns = [[...columns[0]]];
|
|
203
198
|
dataSourceKeys.forEach((dsKey) => {
|
|
204
199
|
fields.forEach((field, idx) => {
|
|
205
200
|
if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {
|
|
201
|
+
splitDataSources[val].primary.data.fields.push({
|
|
202
|
+
name: dsKey
|
|
203
|
+
});
|
|
206
204
|
splitDataSources[val].primary.data.columns.push([...columns[idx]]);
|
|
207
205
|
}
|
|
208
206
|
});
|
|
@@ -215,12 +213,12 @@ var dataSourcesSplitByModeTimechart = (dataSource, splitBy) => {
|
|
|
215
213
|
};
|
|
216
214
|
var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
|
|
217
215
|
var _a, _b, _c, _d;
|
|
218
|
-
const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
|
|
216
|
+
const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
|
|
219
217
|
const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
220
218
|
let splitDataSources = null;
|
|
221
219
|
let splitByFields = [];
|
|
222
220
|
let errorCode = null;
|
|
223
|
-
if (
|
|
221
|
+
if (fields.length > 0) {
|
|
224
222
|
splitByFields = (0, trellisUtils_exports.extractSplitByFieldsChartFields)(fields);
|
|
225
223
|
}
|
|
226
224
|
if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
|
|
@@ -308,17 +306,15 @@ var dataSourcesSplitByModeChart = (dataSource, splitBy) => {
|
|
|
308
306
|
};
|
|
309
307
|
var dataSourcesSplitByModeStatsorUnknown = (dataSource, splitBy, splitMode) => {
|
|
310
308
|
var _a, _b, _c, _d, _e, _f;
|
|
311
|
-
const fields = (_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields;
|
|
309
|
+
const fields = toFieldEntries((_b = (_a = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _a.data) == null ? void 0 : _b.fields);
|
|
312
310
|
const columns = (_d = (_c = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _c.data) == null ? void 0 : _d.columns;
|
|
313
311
|
let splitDataSources = null;
|
|
314
312
|
let splitByFields = [];
|
|
315
313
|
let errorCode = null;
|
|
316
|
-
if (
|
|
314
|
+
if (fields.length > 0) {
|
|
317
315
|
splitByFields = splitMode !== trellisUtils_exports.UNKNOWN ? (0, trellisUtils_exports.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_exports.extractSplitByFieldsForUnknown)(fields);
|
|
318
316
|
}
|
|
319
|
-
const splitByIndex = fields
|
|
320
|
-
(field) => field === splitBy || field.name === splitBy
|
|
321
|
-
);
|
|
317
|
+
const splitByIndex = fields.findIndex((field) => field.name === splitBy);
|
|
322
318
|
if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
|
|
323
319
|
const splitByColumn = (_f = (_e = dataSource == null ? void 0 : dataSource.primary) == null ? void 0 : _e.data) == null ? void 0 : _f.columns[splitByIndex];
|
|
324
320
|
splitDataSources = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/common/utils/trellisUtils.ts", "esm-externals:lodash", "esm-externals:@splunk/visualizations-shared/trellisUtils"],
|
|
4
|
-
"sourcesContent": ["import { cloneDeep, omit } from 'lodash';\nimport { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport {\n DataSplitMode,\n CHART,\n TIMECHART,\n STATS,\n UNKNOWN,\n extractDataSourceAggregationKeysChart,\n extractDataSourceAggregationKeysStats,\n extractSplitByFieldsChartFields,\n extractSplitByFieldsForStats,\n extractSplitByFieldsForUnknown,\n} from '@splunk/visualizations-shared/trellisUtils';\nimport { DataSource } from '../interfaces/DataSource';\n\nexport type SplitDataSource = { [key: string]: { [name: string]: DataSource } };\nexport interface DataSplitResult {\n splitDataSources: SplitDataSource;\n errorCode: 'UNKNOWN_DATA_SPLIT_MODE' | 'INVALID_SPLIT_BY_FIELD' | 'UNKNOWN';\n}\nexport const AGGREGATIONS = 'aggregations';\n\n/**\n * There can be certain SPL cmds that can produce dataSource without a specific field meta info (like group_by_rank, split_by_field etc),\n * to categorize it,\n * Example1:- `index = \"_internal\" | chart count`\n * Example2:- `index=_internal | chart avg(count), max(count)`\n * Example3:- `index = \"_internal\" | stats count`\n * Example4:- `index=_internal | stats avg(count), max(count)`\n */\nexport const dataSourcesSplitByAggregationsUnknown = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields;\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let errorCode = null;\n\n if (fields && fields.length) {\n splitDataSources = {};\n for (let i = 0; i < fields.length; i += 1) {\n const fieldName = (fields[i] as FieldEntry).name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nconst toFieldEntries = (fields: FieldEntry[] | string[]): FieldEntry[] => {\n return fields.map(field => {\n if (typeof field === 'string') {\n return { name: field };\n }\n return field;\n });\n};\n\nexport const dataSourcesSplitByAggregationsTimechartAndChart = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysChart(fields);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n fields.forEach((field: FieldEntry, idx) => {\n const fieldName = field?.name;\n if (\n fieldName !== '_time' &&\n !fieldName?.startsWith('_') &&\n field.data_source === splitByField\n ) {\n splitDataSources[splitByField].primary.data.fields.push(field);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n });\n } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {\n // handle where data_source doesnot exist in fields\n // example1 :- index=_internal | timechart count\n // example2 :- index=_internal | timechart max(count) avg(count)\n splitDataSources = {};\n for (let i = 1; i < fields.length; i += 1) {\n const fieldName = (fields[i] as FieldEntry).name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[0], fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[0], columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByAggregationsStats = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysStats(fields as FieldEntry[]);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n const idx = fields.findIndex(field => field.name === splitByField);\n if (idx > 0) {\n splitDataSources[splitByField].primary.data.fields.push(fields[idx]);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeTimechart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractSplitByFieldsChartFields(fields as FieldEntry[]);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n // not including internal fields\n if (!fields[i].name?.startsWith('_')) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: fields[0].name },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeChart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields as FieldEntry[];\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields = extractSplitByFieldsChartFields(fields);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const splitByFieldIdx = splitByFields.findIndex(f => f === splitBy);\n const otherSplitBy = splitByFields.filter(f => f !== splitBy);\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const nonDataSourceAggregations = [];\n if (\n !dataSourceKeys.length &&\n fields[0].groupby_rank === '0' &&\n fields.length &&\n !fields[1].groupby_rank\n ) {\n /* check for another aggregation scenario where no key 'data_source' will be returned (applies for both chart and stats cmd)\n For example :-\n index=_internal | chart count by status\n index = \"_internal\" | chart max(count) avg(count) by status\n index = \"_internal\" | stats max(count) avg(count) by status\n where field meta info is in this format -\n \"fields\": [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"max(count)\"\n },\n {\n \"name\": \"avg(count)\"\n }\n ]\n */\n\n for (let i = 1; i < fields.length; i += 1) {\n nonDataSourceAggregations.push(fields[i].name);\n }\n }\n if (splitByFieldIdx === 0) {\n // if splitBy is the first field, split row wise\n const valueKeys = cloneDeep(columns[0]);\n valueKeys.forEach((val, idx) => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [];\n if (otherSplitBy.length) {\n splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }]; // there can only be one otherSplitBy for chart cmd\n }\n if (dataSourceKeys.length) {\n const columnValues = [[]];\n splitDataSources[val].primary.data.fields = [\n ...splitDataSources[val].primary.data.fields,\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n dataSourceKeys.forEach(() => {\n columnValues.push([]);\n });\n /**\n * There can be chart SPL cmd where there are multiple data_source keys in the field meta info.\n * For eg - index = \"_internal\" | chart avg(count) max(count) by status , user) can result in fields and columns as below where \"data_source\" keys are \"avg(count)\" and \"max(count)\"\n * 'fields' : [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"avg(count): userA\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"avg(count): userB\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"avg(count): userC\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n {\n \"name\": \"max(count): userA\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"max(count): userB\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"max(count): userC\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n ]\n 'columns' : [['200','303','304','400'], ['1','2','3','4'], ['10','20','30','40'], ['100','200','300','400'], ['5','6','7','8'], ['50','60','70','80'],['500','600','700','800']]\n\n In this case when we split row wise, the data_source keys for userA appears in indices [1, 4, ..], the data_source keys for userB appears in indices [2, 5, ..]\n The resulting dataSplit for status '200', will have the fields => ['user','avg(count)', 'max(count)'] columns => [['userA', 'userB', 'userC'],['1','10','100'], ['5', '50', '500'] ]\n\n For the example above for..loop below will iterate from i= 1 to 3 (Math.ceil((fields.length - 1) / dataSourceKeys.length)). Exclude i = 0 as first column is the splitBy input.\n Since there are 2 data_source keys 'avg(count)' and 'max(count)', dataSourceKeys.forEach loop will collect individual arrays specific to the columnValues[indx] as below.\n columnValues[0] = ['userA', 'userB', 'userC']\n columnValues[1] = ['1','10','100']\n columnValues[2] = ['5', '50', '500']\n */\n for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {\n columnValues[0].push(\n fields[i].splitby_value ? fields[i].splitby_value : fields[i].name\n );\n dataSourceKeys.forEach((dskey, dsIndx) => {\n const mul = (fields.length - 1) / dataSourceKeys.length; // This line does the index calculation\n columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);\n });\n }\n splitDataSources[val].primary.data.columns = columnValues;\n } else if (nonDataSourceAggregations.length) {\n // There can be SPL where data_source field metainfo is not available and needs special handling\n // For eg :-\n // index=_internal | chart count by status\n // index = \"_internal\" | chart max(count) avg(count) by status\n // index = \"_internal\" | stats max(count) avg(count) by status\n const columnValues = [];\n fields.forEach((aggregationField, fieldIdx) => {\n if (fieldIdx > 0) {\n splitDataSources[val].primary.data.fields.push(aggregationField);\n columnValues.push([columns[fieldIdx][idx]]);\n }\n });\n splitDataSources[val].primary.data.columns = columnValues;\n }\n });\n } else {\n // split column wise\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: otherSplitBy[0] },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (\n field.data_source === dsKey &&\n (field.splitby_value === val || field.name === val)\n ) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\n/**\n * This method does datasplitting for 'stats' and generic cmds('makeresults','table' etc - categoried as 'unknown' splitMode).\n * The main difference is for 'stats' cmd possible splitBy fields have 'group_by_rank' in field meta info, whereas for 'unknown' cmd it can be any fieldnames\n */\nexport const dataSourcesSplitByModeStatsorUnknown = (\n dataSource: { [name: string]: DataSource },\n splitBy: string,\n splitMode?: DataSplitMode\n): DataSplitResult => {\n const fields = dataSource?.primary?.data?.fields;\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (typeof fields[0] !== 'string') {\n splitByFields =\n splitMode !== UNKNOWN\n ? extractSplitByFieldsForStats(fields as FieldEntry[])\n : extractSplitByFieldsForUnknown(fields as FieldEntry[]);\n }\n const splitByIndex = fields?.findIndex(\n field => field === splitBy || (field as FieldEntry).name === splitBy\n );\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n const splitByColumn = dataSource?.primary?.data?.columns[splitByIndex];\n splitDataSources = {};\n splitByColumn.forEach((val, idx) => {\n if (!splitDataSources[val]) {\n splitDataSources[val] = [idx];\n } else {\n splitDataSources[val].push(idx);\n }\n });\n const cloneFields = cloneDeep(fields);\n cloneFields.splice(splitByIndex, 1);\n const valueKeys = Object.keys(splitDataSources);\n valueKeys.forEach(val => {\n const valIndices = cloneDeep(splitDataSources[val]);\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = cloneFields;\n splitDataSources[val].primary.data.columns = [];\n columns.forEach((col, idx) => {\n if (idx !== splitByIndex) {\n const newCol = valIndices.map(valIdx => col[valIdx]);\n splitDataSources[val].primary.data.columns.push(newCol);\n }\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const getTrellisDataSourcesBySplitMode = (\n splitMode: DataSplitMode,\n dataSources: { [name: string]: DataSource },\n trellisSplitBy: string\n): DataSplitResult => {\n let result: DataSplitResult = null;\n try {\n if (splitMode === TIMECHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeTimechart(dataSources, trellisSplitBy);\n } else if (splitMode === STATS) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsStats(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, STATS);\n } else if (splitMode === CHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeChart(dataSources, trellisSplitBy);\n } else if (splitMode === UNKNOWN) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsUnknown(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, UNKNOWN);\n }\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error('getTrellisDataSourcesBySplitMode ', ex);\n result = { splitDataSources: null, errorCode: 'UNKNOWN' };\n }\n return result;\n};\n\n/**\n * sets legendDisplay to off when a visualization is in trellis mode and not set by the user\n * @param {Boolean} isTrellisOn\n * @param {DashboardVizOpts} options\n * @param {DashboardVizOpts} defaultOptions\n * @returns { {'legendDisplay', 'off'} or {} }\n */\nexport const turnOffLegendDisplayWhenTrellisIsOn = (\n isTrellisOn: boolean,\n options: Record<string, any>\n): Record<string, string> => {\n if (isTrellisOn && !options.legendDisplay) {\n return {\n legendDisplay: 'off',\n };\n }\n return {};\n};\n\n/**\n * helper fn that calculates shared min and max from the split data in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number>} [min, max]\n */\nconst calculateSharedMinMax = (splitData: SplitDataSource): Array<number> => {\n let max = -Infinity;\n let min = Infinity;\n\n Object.keys(splitData).forEach(splitByKey => {\n const datasources = splitData[splitByKey];\n Object.keys(datasources).forEach(datasourceName => {\n const dataColumns = datasources[datasourceName].data.columns;\n dataColumns.forEach(column => {\n column.forEach(point => {\n // Convert the string to a number. Non-numeric strings are converted to 'nan' and will be ignored.\n const pointNumber = Number(point);\n if (pointNumber > max) {\n max = pointNumber;\n }\n if (pointNumber < min) {\n min = pointNumber;\n }\n });\n });\n });\n });\n\n return [min, max];\n};\n\n/**\n * determines min and max to use in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number | string>} [min, max]\n */\nexport const determineMinMax = (\n splitData: SplitDataSource,\n trellisSharedScale: boolean,\n yAxisMin: number | string,\n yAxisMax: number | string,\n stackMode?: string\n) => {\n if (!trellisSharedScale || stackMode === 'stacked100' || (yAxisMin !== 'auto' && yAxisMax !== 'auto'))\n return [yAxisMin, yAxisMax];\n\n const [sharedMin, sharedMax] = calculateSharedMinMax(splitData);\n\n const shouldUseSharedMax = sharedMax !== -Infinity && yAxisMax === 'auto';\n const shouldUseSharedMin = sharedMin !== Infinity && yAxisMin === 'auto';\n\n return [shouldUseSharedMin ? sharedMin : yAxisMin, shouldUseSharedMax ? sharedMax : yAxisMax];\n};\n", "\nimport * as defaultImport from \"lodash\";\nexport * from \"lodash\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/trellisUtils\";\nexport * from \"@splunk/visualizations-shared/trellisUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,wBAAA;AAAA,SAAAA,uBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,2BAAc;AACd,IAAO,iBAAS,aAAa,gBAA8B,wBAAU;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,iCAAc;AACd,IAAO,uBAAS,aAAaA,iBAA8B,yBAAUA;;;AFkB9D,IAAM,eAAe;AAUrB,IAAM,wCAAwC,CAAC,eAE/B;AAjCvB;AAkCI,QAAM,
|
|
4
|
+
"sourcesContent": ["import { cloneDeep, omit } from 'lodash';\nimport { FieldEntry } from '@splunk/visualizations-shared/dataSourceUtils';\nimport {\n DataSplitMode,\n CHART,\n TIMECHART,\n STATS,\n UNKNOWN,\n extractDataSourceAggregationKeysChart,\n extractDataSourceAggregationKeysStats,\n extractSplitByFieldsChartFields,\n extractSplitByFieldsForStats,\n extractSplitByFieldsForUnknown,\n} from '@splunk/visualizations-shared/trellisUtils';\nimport { DataSource } from '../interfaces/DataSource';\n\nexport type SplitDataSource = { [key: string]: { [name: string]: DataSource } };\nexport interface DataSplitResult {\n splitDataSources: SplitDataSource;\n errorCode: 'UNKNOWN_DATA_SPLIT_MODE' | 'INVALID_SPLIT_BY_FIELD' | 'UNKNOWN';\n}\nexport const AGGREGATIONS = 'aggregations';\n\n/**\n * There can be certain SPL cmds that can produce dataSource without a specific field meta info (like group_by_rank, split_by_field etc),\n * to categorize it,\n * Example1:- `index = \"_internal\" | chart count`\n * Example2:- `index=_internal | chart avg(count), max(count)`\n * Example3:- `index = \"_internal\" | stats count`\n * Example4:- `index=_internal | stats avg(count), max(count)`\n */\nexport const dataSourcesSplitByAggregationsUnknown = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let errorCode = null;\n\n if (fields && fields.length) {\n splitDataSources = {};\n for (let i = 0; i < fields.length; i += 1) {\n const fieldName = fields[i].name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nconst toFieldEntries = (fields: FieldEntry[] | string[] = []): FieldEntry[] => {\n return fields.map(field => {\n if (typeof field === 'string') {\n return { name: field };\n }\n return field;\n });\n};\n\nexport const dataSourcesSplitByAggregationsTimechartAndChart = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n\n if (fields.length > 0) {\n splitByFields = extractDataSourceAggregationKeysChart(fields);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n fields.forEach((field: FieldEntry, idx) => {\n const fieldName = field?.name;\n if (\n fieldName !== '_time' &&\n !fieldName?.startsWith('_') &&\n field.data_source === splitByField\n ) {\n splitDataSources[splitByField].primary.data.fields.push(field);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n });\n } else if ((!splitByFields || !splitByFields.length) && fields.length > 1) {\n // handle where data_source doesnot exist in fields\n // example1 :- index=_internal | timechart count\n // example2 :- index=_internal | timechart max(count) avg(count)\n splitDataSources = {};\n for (let i = 1; i < fields.length; i += 1) {\n const fieldName = fields[i].name;\n if (!fieldName?.startsWith('_')) {\n splitDataSources[fieldName] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[fieldName].primary.data.fields = [fields[0], fields[i]];\n splitDataSources[fieldName].primary.data.columns = [columns[0], columns[i]];\n }\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByAggregationsStats = (dataSource: {\n [name: string]: DataSource;\n}): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (fields.length > 0) {\n splitByFields = extractDataSourceAggregationKeysStats(fields);\n }\n\n if (splitByFields && splitByFields.length > 0) {\n splitDataSources = {};\n splitByFields.forEach(splitByField => {\n splitDataSources[splitByField] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[splitByField].primary.data.fields = [fields[0]];\n splitDataSources[splitByField].primary.data.columns = [columns[0]];\n const idx = fields.findIndex(field => field.name === splitByField);\n if (idx > 0) {\n splitDataSources[splitByField].primary.data.fields.push(fields[idx]);\n splitDataSources[splitByField].primary.data.columns.push(columns[idx]);\n }\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeTimechart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (fields.length > 0) {\n splitByFields = extractSplitByFieldsChartFields(fields);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n // not including internal fields\n if (!fields[i].name?.startsWith('_')) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [{ name: fields[0].name }];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (field.data_source === dsKey && (field.splitby_value === val || field.name === val)) {\n // only push valid fields for the current split by valueKey, instead of all fields.\n splitDataSources[val].primary.data.fields.push({\n name: dsKey,\n });\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const dataSourcesSplitByModeChart = (\n dataSource: { [name: string]: DataSource },\n splitBy: string\n): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (fields.length > 0) {\n splitByFields = extractSplitByFieldsChartFields(fields);\n }\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n splitDataSources = {};\n const splitByFieldIdx = splitByFields.findIndex(f => f === splitBy);\n const otherSplitBy = splitByFields.filter(f => f !== splitBy);\n const dataSourceKeys = extractDataSourceAggregationKeysChart(fields);\n const nonDataSourceAggregations = [];\n if (\n !dataSourceKeys.length &&\n fields[0].groupby_rank === '0' &&\n fields.length &&\n !fields[1].groupby_rank\n ) {\n /* check for another aggregation scenario where no key 'data_source' will be returned (applies for both chart and stats cmd)\n For example :-\n index=_internal | chart count by status\n index = \"_internal\" | chart max(count) avg(count) by status\n index = \"_internal\" | stats max(count) avg(count) by status\n where field meta info is in this format -\n \"fields\": [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"max(count)\"\n },\n {\n \"name\": \"avg(count)\"\n }\n ]\n */\n\n for (let i = 1; i < fields.length; i += 1) {\n nonDataSourceAggregations.push(fields[i].name);\n }\n }\n if (splitByFieldIdx === 0) {\n // if splitBy is the first field, split row wise\n const valueKeys = cloneDeep(columns[0]);\n valueKeys.forEach((val, idx) => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [];\n if (otherSplitBy.length) {\n splitDataSources[val].primary.data.fields = [{ name: otherSplitBy[0] }]; // there can only be one otherSplitBy for chart cmd\n }\n if (dataSourceKeys.length) {\n const columnValues = [[]];\n splitDataSources[val].primary.data.fields = [\n ...splitDataSources[val].primary.data.fields,\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n dataSourceKeys.forEach(() => {\n columnValues.push([]);\n });\n /**\n * There can be chart SPL cmd where there are multiple data_source keys in the field meta info.\n * For eg - index = \"_internal\" | chart avg(count) max(count) by status , user) can result in fields and columns as below where \"data_source\" keys are \"avg(count)\" and \"max(count)\"\n * 'fields' : [\n {\n \"name\": \"status\",\n \"groupby_rank\": \"0\"\n },\n {\n \"name\": \"avg(count): userA\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"avg(count): userB\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"avg(count): userC\",\n \"data_source\": \"avg(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n {\n \"name\": \"max(count): userA\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userA\"\n },\n {\n \"name\": \"max(count): userB\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userB\"\n },\n {\n \"name\": \"max(count): userC\",\n \"data_source\": \"max(count)\",\n \"splitby_field\": \"user\",\n \"splitby_value\": \"userC\"\n },\n ]\n 'columns' : [['200','303','304','400'], ['1','2','3','4'], ['10','20','30','40'], ['100','200','300','400'], ['5','6','7','8'], ['50','60','70','80'],['500','600','700','800']]\n\n In this case when we split row wise, the data_source keys for userA appears in indices [1, 4, ..], the data_source keys for userB appears in indices [2, 5, ..]\n The resulting dataSplit for status '200', will have the fields => ['user','avg(count)', 'max(count)'] columns => [['userA', 'userB', 'userC'],['1','10','100'], ['5', '50', '500'] ]\n\n For the example above for..loop below will iterate from i= 1 to 3 (Math.ceil((fields.length - 1) / dataSourceKeys.length)). Exclude i = 0 as first column is the splitBy input.\n Since there are 2 data_source keys 'avg(count)' and 'max(count)', dataSourceKeys.forEach loop will collect individual arrays specific to the columnValues[indx] as below.\n columnValues[0] = ['userA', 'userB', 'userC']\n columnValues[1] = ['1','10','100']\n columnValues[2] = ['5', '50', '500']\n */\n for (let i = 1; i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); i += 1) {\n columnValues[0].push(\n fields[i].splitby_value ? fields[i].splitby_value : fields[i].name\n );\n dataSourceKeys.forEach((dskey, dsIndx) => {\n const mul = (fields.length - 1) / dataSourceKeys.length; // This line does the index calculation\n columnValues[dsIndx + 1].push(columns[i + dsIndx * mul][idx]);\n });\n }\n splitDataSources[val].primary.data.columns = columnValues;\n } else if (nonDataSourceAggregations.length) {\n // There can be SPL where data_source field metainfo is not available and needs special handling\n // For eg :-\n // index=_internal | chart count by status\n // index = \"_internal\" | chart max(count) avg(count) by status\n // index = \"_internal\" | stats max(count) avg(count) by status\n const columnValues = [];\n fields.forEach((aggregationField, fieldIdx) => {\n if (fieldIdx > 0) {\n splitDataSources[val].primary.data.fields.push(aggregationField);\n columnValues.push([columns[fieldIdx][idx]]);\n }\n });\n splitDataSources[val].primary.data.columns = columnValues;\n }\n });\n } else {\n // split column wise\n const valueKeys = [];\n for (let i = 1; i < fields.length; i += 1) {\n valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);\n }\n valueKeys.forEach(val => {\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = [\n { name: otherSplitBy[0] },\n ...dataSourceKeys.map(k => ({\n name: k,\n })),\n ];\n splitDataSources[val].primary.data.columns = [[...columns[0]]];\n dataSourceKeys.forEach(dsKey => {\n fields.forEach((field, idx) => {\n if (\n field.data_source === dsKey &&\n (field.splitby_value === val || field.name === val)\n ) {\n splitDataSources[val].primary.data.columns.push([...columns[idx]]);\n }\n });\n });\n });\n }\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\n/**\n * This method does datasplitting for 'stats' and generic cmds('makeresults','table' etc - categoried as 'unknown' splitMode).\n * The main difference is for 'stats' cmd possible splitBy fields have 'group_by_rank' in field meta info, whereas for 'unknown' cmd it can be any fieldnames\n */\nexport const dataSourcesSplitByModeStatsorUnknown = (\n dataSource: { [name: string]: DataSource },\n splitBy: string,\n splitMode?: DataSplitMode\n): DataSplitResult => {\n const fields = toFieldEntries(dataSource?.primary?.data?.fields);\n const columns = dataSource?.primary?.data?.columns;\n let splitDataSources = null;\n let splitByFields = [];\n let errorCode = null;\n if (fields.length > 0) {\n splitByFields =\n splitMode !== UNKNOWN\n ? extractSplitByFieldsForStats(fields)\n : extractSplitByFieldsForUnknown(fields);\n }\n const splitByIndex = fields.findIndex(field => field.name === splitBy);\n if (splitByFields && splitByFields.indexOf(splitBy) > -1) {\n const splitByColumn = dataSource?.primary?.data?.columns[splitByIndex];\n splitDataSources = {};\n splitByColumn.forEach((val, idx) => {\n if (!splitDataSources[val]) {\n splitDataSources[val] = [idx];\n } else {\n splitDataSources[val].push(idx);\n }\n });\n const cloneFields = cloneDeep(fields);\n cloneFields.splice(splitByIndex, 1);\n const valueKeys = Object.keys(splitDataSources);\n valueKeys.forEach(val => {\n const valIndices = cloneDeep(splitDataSources[val]);\n splitDataSources[val] = cloneDeep(\n omit(dataSource, ['primary.data.fields', 'primary.data.columns'])\n );\n splitDataSources[val].primary.data.fields = cloneFields;\n splitDataSources[val].primary.data.columns = [];\n columns.forEach((col, idx) => {\n if (idx !== splitByIndex) {\n const newCol = valIndices.map(valIdx => col[valIdx]);\n splitDataSources[val].primary.data.columns.push(newCol);\n }\n });\n });\n } else {\n errorCode = 'INVALID_SPLIT_BY_FIELD';\n }\n return { splitDataSources, errorCode };\n};\n\nexport const getTrellisDataSourcesBySplitMode = (\n splitMode: DataSplitMode,\n dataSources: { [name: string]: DataSource },\n trellisSplitBy: string\n): DataSplitResult => {\n let result: DataSplitResult = null;\n try {\n if (splitMode === TIMECHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeTimechart(dataSources, trellisSplitBy);\n } else if (splitMode === STATS) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsStats(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, STATS);\n } else if (splitMode === CHART) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsTimechartAndChart(dataSources)\n : dataSourcesSplitByModeChart(dataSources, trellisSplitBy);\n } else if (splitMode === UNKNOWN) {\n result =\n trellisSplitBy === AGGREGATIONS\n ? dataSourcesSplitByAggregationsUnknown(dataSources)\n : dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, UNKNOWN);\n }\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error('getTrellisDataSourcesBySplitMode ', ex);\n result = { splitDataSources: null, errorCode: 'UNKNOWN' };\n }\n return result;\n};\n\n/**\n * sets legendDisplay to off when a visualization is in trellis mode and not set by the user\n * @param {Boolean} isTrellisOn\n * @param {DashboardVizOpts} options\n * @param {DashboardVizOpts} defaultOptions\n * @returns { {'legendDisplay', 'off'} or {} }\n */\nexport const turnOffLegendDisplayWhenTrellisIsOn = (\n isTrellisOn: boolean,\n options: Record<string, any>\n): Record<string, string> => {\n if (isTrellisOn && !options.legendDisplay) {\n return {\n legendDisplay: 'off',\n };\n }\n return {};\n};\n\n/**\n * helper fn that calculates shared min and max from the split data in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number>} [min, max]\n */\nconst calculateSharedMinMax = (splitData: SplitDataSource): Array<number> => {\n let max = -Infinity;\n let min = Infinity;\n\n Object.keys(splitData).forEach(splitByKey => {\n const datasources = splitData[splitByKey];\n Object.keys(datasources).forEach(datasourceName => {\n const dataColumns = datasources[datasourceName].data.columns;\n dataColumns.forEach(column => {\n column.forEach(point => {\n // Convert the string to a number. Non-numeric strings are converted to 'nan' and will be ignored.\n const pointNumber = Number(point);\n if (pointNumber > max) {\n max = pointNumber;\n }\n if (pointNumber < min) {\n min = pointNumber;\n }\n });\n });\n });\n });\n\n return [min, max];\n};\n\n/**\n * determines min and max to use in trellis mode\n * @param {splitData} SplitDataSource\n * @returns {Array<number | string>} [min, max]\n */\nexport const determineMinMax = (\n splitData: SplitDataSource,\n trellisSharedScale: boolean,\n yAxisMin: number | string,\n yAxisMax: number | string,\n stackMode?: string\n) => {\n if (!trellisSharedScale || stackMode === 'stacked100' || (yAxisMin !== 'auto' && yAxisMax !== 'auto'))\n return [yAxisMin, yAxisMax];\n\n const [sharedMin, sharedMax] = calculateSharedMinMax(splitData);\n\n const shouldUseSharedMax = sharedMax !== -Infinity && yAxisMax === 'auto';\n const shouldUseSharedMin = sharedMin !== Infinity && yAxisMin === 'auto';\n\n return [shouldUseSharedMin ? sharedMin : yAxisMin, shouldUseSharedMax ? sharedMax : yAxisMax];\n};\n", "\nimport * as defaultImport from \"lodash\";\nexport * from \"lodash\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualizations-shared/trellisUtils\";\nexport * from \"@splunk/visualizations-shared/trellisUtils\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["trellisUtils_exports", "defaultImport"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withDashboardViz.d.ts","sourceRoot":"","sources":["../src/common/withDashboardViz.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iDAAiD,CAAC;AAE9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQvF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"withDashboardViz.d.ts","sourceRoot":"","sources":["../src/common/withDashboardViz.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iDAAiD,CAAC;AAE9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQvF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAa3C,KAAK,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAClD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,GAAG,CAAC;IACjC,yBAAyB,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,GAAG,CAAC;IAC3C,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,WAAW,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;SAAE,CAAC;QAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CACjB,WAAW,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,EAC3C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,QAAA,MAAM,gBAAgB,GAAI,MAAM,gBAAgB,KAAG,GA+WlD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|