@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
|
@@ -113,12 +113,16 @@ module.exports = require("@babel/runtime/helpers/toConsumableArray");
|
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
var _toConsumableArray = __webpack_require__(2);
|
|
116
|
+
|
|
116
117
|
Object.defineProperty(exports, "__esModule", {
|
|
117
118
|
value: true
|
|
118
119
|
});
|
|
119
120
|
exports.getTrellisDataSourcesBySplitMode = exports.dataSourcesSplitByModeStatsorUnknown = exports.dataSourcesSplitByModeChart = exports.dataSourcesSplitByModeTimechart = exports.dataSourcesSplitByAggregationsStats = exports.dataSourcesSplitByAggregationsTimechartAndChart = exports.dataSourcesSplitByAggregationsUnknown = exports.AGGREGATIONS = void 0;
|
|
121
|
+
|
|
120
122
|
var lodash_1 = __webpack_require__(0);
|
|
123
|
+
|
|
121
124
|
var trellisUtils_1 = __webpack_require__(39);
|
|
125
|
+
|
|
122
126
|
exports.AGGREGATIONS = 'aggregations';
|
|
123
127
|
/**
|
|
124
128
|
* There can be certain SPL cmds that can produce dataSource without a specific field meta info (like group_by_rank, split_by_field etc),
|
|
@@ -128,16 +132,21 @@ exports.AGGREGATIONS = 'aggregations';
|
|
|
128
132
|
* Example3:- `index = "_internal" | stats count`
|
|
129
133
|
* Example4:- `index=_internal | stats avg(count), max(count)`
|
|
130
134
|
*/
|
|
135
|
+
|
|
131
136
|
var dataSourcesSplitByAggregationsUnknown = function dataSourcesSplitByAggregationsUnknown(dataSource) {
|
|
132
137
|
var _a, _b, _c, _d;
|
|
138
|
+
|
|
133
139
|
var fields = (_b = (_a = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.fields;
|
|
134
140
|
var columns = (_d = (_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.columns;
|
|
135
141
|
var splitDataSources = null;
|
|
136
142
|
var errorCode = null;
|
|
143
|
+
|
|
137
144
|
if (fields && fields.length) {
|
|
138
145
|
splitDataSources = {};
|
|
146
|
+
|
|
139
147
|
for (var i = 0; i < fields.length; i += 1) {
|
|
140
148
|
var fieldName = fields[i].name;
|
|
149
|
+
|
|
141
150
|
if (!(fieldName === null || fieldName === void 0 ? void 0 : fieldName.startsWith('_'))) {
|
|
142
151
|
splitDataSources[fieldName] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
|
|
143
152
|
splitDataSources[fieldName].primary.data.fields = [fields[i]];
|
|
@@ -147,22 +156,28 @@ var dataSourcesSplitByAggregationsUnknown = function dataSourcesSplitByAggregati
|
|
|
147
156
|
} else {
|
|
148
157
|
errorCode = 'INVALID_SPLIT_BY_FIELD';
|
|
149
158
|
}
|
|
159
|
+
|
|
150
160
|
return {
|
|
151
161
|
splitDataSources: splitDataSources,
|
|
152
162
|
errorCode: errorCode
|
|
153
163
|
};
|
|
154
164
|
};
|
|
165
|
+
|
|
155
166
|
exports.dataSourcesSplitByAggregationsUnknown = dataSourcesSplitByAggregationsUnknown;
|
|
167
|
+
|
|
156
168
|
var dataSourcesSplitByAggregationsTimechartAndChart = function dataSourcesSplitByAggregationsTimechartAndChart(dataSource) {
|
|
157
169
|
var _a, _b, _c, _d;
|
|
170
|
+
|
|
158
171
|
var fields = (_b = (_a = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.fields;
|
|
159
172
|
var columns = (_d = (_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.columns;
|
|
160
173
|
var splitDataSources = null;
|
|
161
174
|
var splitByFields = [];
|
|
162
175
|
var errorCode = null;
|
|
176
|
+
|
|
163
177
|
if (typeof fields[0] !== 'string') {
|
|
164
178
|
splitByFields = (0, trellisUtils_1.extractDataSourceAggregationKeysChart)(fields);
|
|
165
179
|
}
|
|
180
|
+
|
|
166
181
|
if (splitByFields && splitByFields.length > 0) {
|
|
167
182
|
splitDataSources = {};
|
|
168
183
|
splitByFields.forEach(function (splitByField) {
|
|
@@ -171,6 +186,7 @@ var dataSourcesSplitByAggregationsTimechartAndChart = function dataSourcesSplitB
|
|
|
171
186
|
splitDataSources[splitByField].primary.data.columns = [columns[0]];
|
|
172
187
|
fields.forEach(function (field, idx) {
|
|
173
188
|
var fieldName = field === null || field === void 0 ? void 0 : field.name;
|
|
189
|
+
|
|
174
190
|
if (fieldName !== '_time' && !(fieldName === null || fieldName === void 0 ? void 0 : fieldName.startsWith('_')) && field.data_source === splitByField) {
|
|
175
191
|
splitDataSources[splitByField].primary.data.fields.push(field);
|
|
176
192
|
splitDataSources[splitByField].primary.data.columns.push(columns[idx]);
|
|
@@ -182,8 +198,10 @@ var dataSourcesSplitByAggregationsTimechartAndChart = function dataSourcesSplitB
|
|
|
182
198
|
// example1 :- index=_internal | timechart count
|
|
183
199
|
// example2 :- index=_internal | timechart max(count) avg(count)
|
|
184
200
|
splitDataSources = {};
|
|
201
|
+
|
|
185
202
|
for (var i = 1; i < fields.length; i += 1) {
|
|
186
203
|
var fieldName = fields[i].name;
|
|
204
|
+
|
|
187
205
|
if (!(fieldName === null || fieldName === void 0 ? void 0 : fieldName.startsWith('_'))) {
|
|
188
206
|
splitDataSources[fieldName] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
|
|
189
207
|
splitDataSources[fieldName].primary.data.fields = [fields[0], fields[i]];
|
|
@@ -193,22 +211,28 @@ var dataSourcesSplitByAggregationsTimechartAndChart = function dataSourcesSplitB
|
|
|
193
211
|
} else {
|
|
194
212
|
errorCode = 'INVALID_SPLIT_BY_FIELD';
|
|
195
213
|
}
|
|
214
|
+
|
|
196
215
|
return {
|
|
197
216
|
splitDataSources: splitDataSources,
|
|
198
217
|
errorCode: errorCode
|
|
199
218
|
};
|
|
200
219
|
};
|
|
220
|
+
|
|
201
221
|
exports.dataSourcesSplitByAggregationsTimechartAndChart = dataSourcesSplitByAggregationsTimechartAndChart;
|
|
222
|
+
|
|
202
223
|
var dataSourcesSplitByAggregationsStats = function dataSourcesSplitByAggregationsStats(dataSource) {
|
|
203
224
|
var _a, _b, _c, _d;
|
|
225
|
+
|
|
204
226
|
var fields = (_b = (_a = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.fields;
|
|
205
227
|
var columns = (_d = (_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.columns;
|
|
206
228
|
var splitDataSources = null;
|
|
207
229
|
var splitByFields = [];
|
|
208
230
|
var errorCode = null;
|
|
231
|
+
|
|
209
232
|
if (typeof fields[0] !== 'string') {
|
|
210
233
|
splitByFields = (0, trellisUtils_1.extractDataSourceAggregationKeysStats)(fields);
|
|
211
234
|
}
|
|
235
|
+
|
|
212
236
|
if (splitByFields && splitByFields.length > 0) {
|
|
213
237
|
splitDataSources = {};
|
|
214
238
|
splitByFields.forEach(function (splitByField) {
|
|
@@ -218,6 +242,7 @@ var dataSourcesSplitByAggregationsStats = function dataSourcesSplitByAggregation
|
|
|
218
242
|
var idx = fields.findIndex(function (field) {
|
|
219
243
|
return field.name === splitByField;
|
|
220
244
|
});
|
|
245
|
+
|
|
221
246
|
if (idx > 0) {
|
|
222
247
|
splitDataSources[splitByField].primary.data.fields.push(fields[idx]);
|
|
223
248
|
splitDataSources[splitByField].primary.data.columns.push(columns[idx]);
|
|
@@ -226,32 +251,40 @@ var dataSourcesSplitByAggregationsStats = function dataSourcesSplitByAggregation
|
|
|
226
251
|
} else {
|
|
227
252
|
errorCode = 'INVALID_SPLIT_BY_FIELD';
|
|
228
253
|
}
|
|
254
|
+
|
|
229
255
|
return {
|
|
230
256
|
splitDataSources: splitDataSources,
|
|
231
257
|
errorCode: errorCode
|
|
232
258
|
};
|
|
233
259
|
};
|
|
260
|
+
|
|
234
261
|
exports.dataSourcesSplitByAggregationsStats = dataSourcesSplitByAggregationsStats;
|
|
262
|
+
|
|
235
263
|
var dataSourcesSplitByModeTimechart = function dataSourcesSplitByModeTimechart(dataSource, splitBy) {
|
|
236
264
|
var _a, _b, _c, _d, _e;
|
|
265
|
+
|
|
237
266
|
var fields = (_b = (_a = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.fields;
|
|
238
267
|
var columns = (_d = (_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.columns;
|
|
239
268
|
var splitDataSources = null;
|
|
240
269
|
var splitByFields = [];
|
|
241
270
|
var errorCode = null;
|
|
271
|
+
|
|
242
272
|
if (typeof fields[0] !== 'string') {
|
|
243
273
|
splitByFields = (0, trellisUtils_1.extractSplitByFieldsChartFields)(fields);
|
|
244
274
|
}
|
|
275
|
+
|
|
245
276
|
if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
|
|
246
277
|
splitDataSources = {};
|
|
247
278
|
var dataSourceKeys = (0, trellisUtils_1.extractDataSourceAggregationKeysChart)(fields);
|
|
248
279
|
var valueKeys = [];
|
|
280
|
+
|
|
249
281
|
for (var i = 1; i < fields.length; i += 1) {
|
|
250
282
|
// not including internal fields
|
|
251
283
|
if (!((_e = fields[i].name) === null || _e === void 0 ? void 0 : _e.startsWith('_'))) {
|
|
252
284
|
valueKeys.push(fields[i].splitby_value ? fields[i].splitby_value : fields[i].name);
|
|
253
285
|
}
|
|
254
286
|
}
|
|
287
|
+
|
|
255
288
|
valueKeys.forEach(function (val) {
|
|
256
289
|
splitDataSources[val] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
|
|
257
290
|
splitDataSources[val].primary.data.fields = [{
|
|
@@ -273,22 +306,28 @@ var dataSourcesSplitByModeTimechart = function dataSourcesSplitByModeTimechart(d
|
|
|
273
306
|
} else {
|
|
274
307
|
errorCode = 'INVALID_SPLIT_BY_FIELD';
|
|
275
308
|
}
|
|
309
|
+
|
|
276
310
|
return {
|
|
277
311
|
splitDataSources: splitDataSources,
|
|
278
312
|
errorCode: errorCode
|
|
279
313
|
};
|
|
280
314
|
};
|
|
315
|
+
|
|
281
316
|
exports.dataSourcesSplitByModeTimechart = dataSourcesSplitByModeTimechart;
|
|
317
|
+
|
|
282
318
|
var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSource, splitBy) {
|
|
283
319
|
var _a, _b, _c, _d;
|
|
320
|
+
|
|
284
321
|
var fields = (_b = (_a = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.fields;
|
|
285
322
|
var columns = (_d = (_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.columns;
|
|
286
323
|
var splitDataSources = null;
|
|
287
324
|
var splitByFields = [];
|
|
288
325
|
var errorCode = null;
|
|
326
|
+
|
|
289
327
|
if (typeof fields[0] !== 'string') {
|
|
290
328
|
splitByFields = (0, trellisUtils_1.extractSplitByFieldsChartFields)(fields);
|
|
291
329
|
}
|
|
330
|
+
|
|
292
331
|
if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
|
|
293
332
|
splitDataSources = {};
|
|
294
333
|
var splitByFieldIdx = splitByFields.findIndex(function (f) {
|
|
@@ -299,6 +338,7 @@ var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSourc
|
|
|
299
338
|
});
|
|
300
339
|
var dataSourceKeys = (0, trellisUtils_1.extractDataSourceAggregationKeysChart)(fields);
|
|
301
340
|
var nonDataSourceAggregations = [];
|
|
341
|
+
|
|
302
342
|
if (!dataSourceKeys.length && fields[0].groupby_rank === '0' && fields.length && !fields[1].groupby_rank) {
|
|
303
343
|
/* check for another aggregation scenario where no key 'data_source' will be returned (applies for both chart and stats cmd)
|
|
304
344
|
For example :-
|
|
@@ -323,12 +363,14 @@ var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSourc
|
|
|
323
363
|
nonDataSourceAggregations.push(fields[i].name);
|
|
324
364
|
}
|
|
325
365
|
}
|
|
366
|
+
|
|
326
367
|
if (splitByFieldIdx === 0) {
|
|
327
368
|
// if splitBy is the first field, split row wise
|
|
328
369
|
var valueKeys = (0, lodash_1.cloneDeep)(columns[0]);
|
|
329
370
|
valueKeys.forEach(function (val, idx) {
|
|
330
371
|
splitDataSources[val] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
|
|
331
372
|
splitDataSources[val].primary.data.fields = [];
|
|
373
|
+
|
|
332
374
|
if (otherSplitBy.length) {
|
|
333
375
|
splitDataSources[val].primary.data.fields = [{
|
|
334
376
|
name: otherSplitBy[0]
|
|
@@ -400,16 +442,20 @@ var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSourc
|
|
|
400
442
|
columnValues[1] = ['1','10','100']
|
|
401
443
|
columnValues[2] = ['5', '50', '500']
|
|
402
444
|
*/
|
|
445
|
+
|
|
403
446
|
var _loop = function _loop(_i) {
|
|
404
447
|
columnValues[0].push(fields[_i].splitby_value ? fields[_i].splitby_value : fields[_i].name);
|
|
405
448
|
dataSourceKeys.forEach(function (dskey, dsIndx) {
|
|
406
449
|
var mul = (fields.length - 1) / dataSourceKeys.length; // This line does the index calculation
|
|
450
|
+
|
|
407
451
|
columnValues[dsIndx + 1].push(columns[_i + dsIndx * mul][idx]);
|
|
408
452
|
});
|
|
409
453
|
};
|
|
454
|
+
|
|
410
455
|
for (var _i = 1; _i <= Math.ceil((fields.length - 1) / dataSourceKeys.length); _i += 1) {
|
|
411
456
|
_loop(_i);
|
|
412
457
|
}
|
|
458
|
+
|
|
413
459
|
splitDataSources[val].primary.data.columns = columnValues;
|
|
414
460
|
})();
|
|
415
461
|
} else if (nonDataSourceAggregations.length) {
|
|
@@ -431,9 +477,11 @@ var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSourc
|
|
|
431
477
|
} else {
|
|
432
478
|
// split column wise
|
|
433
479
|
var _valueKeys = [];
|
|
480
|
+
|
|
434
481
|
for (var _i2 = 1; _i2 < fields.length; _i2 += 1) {
|
|
435
482
|
_valueKeys.push(fields[_i2].splitby_value ? fields[_i2].splitby_value : fields[_i2].name);
|
|
436
483
|
}
|
|
484
|
+
|
|
437
485
|
_valueKeys.forEach(function (val) {
|
|
438
486
|
splitDataSources[val] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
|
|
439
487
|
splitDataSources[val].primary.data.fields = [{
|
|
@@ -456,29 +504,36 @@ var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSourc
|
|
|
456
504
|
} else {
|
|
457
505
|
errorCode = 'INVALID_SPLIT_BY_FIELD';
|
|
458
506
|
}
|
|
507
|
+
|
|
459
508
|
return {
|
|
460
509
|
splitDataSources: splitDataSources,
|
|
461
510
|
errorCode: errorCode
|
|
462
511
|
};
|
|
463
512
|
};
|
|
513
|
+
|
|
464
514
|
exports.dataSourcesSplitByModeChart = dataSourcesSplitByModeChart;
|
|
465
515
|
/**
|
|
466
516
|
* This method does datasplitting for 'stats' and generic cmds('makeresults','table' etc - categoried as 'unknown' splitMode).
|
|
467
517
|
* 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
|
|
468
518
|
*/
|
|
519
|
+
|
|
469
520
|
var dataSourcesSplitByModeStatsorUnknown = function dataSourcesSplitByModeStatsorUnknown(dataSource, splitBy, splitMode) {
|
|
470
521
|
var _a, _b, _c, _d, _e, _f;
|
|
522
|
+
|
|
471
523
|
var fields = (_b = (_a = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.fields;
|
|
472
524
|
var columns = (_d = (_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.columns;
|
|
473
525
|
var splitDataSources = null;
|
|
474
526
|
var splitByFields = [];
|
|
475
527
|
var errorCode = null;
|
|
528
|
+
|
|
476
529
|
if (typeof fields[0] !== 'string') {
|
|
477
530
|
splitByFields = splitMode !== trellisUtils_1.UNKNOWN ? (0, trellisUtils_1.extractSplitByFieldsForStats)(fields) : (0, trellisUtils_1.extractSplitByFieldsForUnknown)(fields);
|
|
478
531
|
}
|
|
532
|
+
|
|
479
533
|
var splitByIndex = fields === null || fields === void 0 ? void 0 : fields.findIndex(function (field) {
|
|
480
534
|
return field === splitBy || field.name === splitBy;
|
|
481
535
|
});
|
|
536
|
+
|
|
482
537
|
if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
|
|
483
538
|
var splitByColumn = (_f = (_e = dataSource === null || dataSource === void 0 ? void 0 : dataSource.primary) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.columns[splitByIndex];
|
|
484
539
|
splitDataSources = {};
|
|
@@ -509,14 +564,18 @@ var dataSourcesSplitByModeStatsorUnknown = function dataSourcesSplitByModeStatso
|
|
|
509
564
|
} else {
|
|
510
565
|
errorCode = 'INVALID_SPLIT_BY_FIELD';
|
|
511
566
|
}
|
|
567
|
+
|
|
512
568
|
return {
|
|
513
569
|
splitDataSources: splitDataSources,
|
|
514
570
|
errorCode: errorCode
|
|
515
571
|
};
|
|
516
572
|
};
|
|
573
|
+
|
|
517
574
|
exports.dataSourcesSplitByModeStatsorUnknown = dataSourcesSplitByModeStatsorUnknown;
|
|
575
|
+
|
|
518
576
|
var getTrellisDataSourcesBySplitMode = function getTrellisDataSourcesBySplitMode(splitMode, dataSources, trellisSplitBy) {
|
|
519
577
|
var result = null;
|
|
578
|
+
|
|
520
579
|
try {
|
|
521
580
|
if (splitMode === trellisUtils_1.TIMECHART) {
|
|
522
581
|
result = trellisSplitBy === exports.AGGREGATIONS ? (0, exports.dataSourcesSplitByAggregationsTimechartAndChart)(dataSources) : (0, exports.dataSourcesSplitByModeTimechart)(dataSources, trellisSplitBy);
|
|
@@ -534,8 +593,10 @@ var getTrellisDataSourcesBySplitMode = function getTrellisDataSourcesBySplitMode
|
|
|
534
593
|
errorCode: 'UNKNOWN'
|
|
535
594
|
};
|
|
536
595
|
}
|
|
596
|
+
|
|
537
597
|
return result;
|
|
538
598
|
};
|
|
599
|
+
|
|
539
600
|
exports.getTrellisDataSourcesBySplitMode = getTrellisDataSourcesBySplitMode;
|
|
540
601
|
|
|
541
602
|
/***/ }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"lodash\"","webpack:///external \"@babel/runtime/helpers/toConsumableArray\"","webpack:///./src/common/utils/trellisUtils.ts","webpack:///external \"@splunk/visualizations-shared/trellisUtils\""],"names":["lodash_1","require","trellisUtils_1","exports","AGGREGATIONS","dataSourcesSplitByAggregationsUnknown","dataSource","fields","_b","_a","primary","data","columns","_d","_c","splitDataSources","errorCode","length","i","fieldName","name","startsWith","cloneDeep","omit","dataSourcesSplitByAggregationsTimechartAndChart","splitByFields","extractDataSourceAggregationKeysChart","forEach","splitByField","field","idx","data_source","push","dataSourcesSplitByAggregationsStats","extractDataSourceAggregationKeysStats","findIndex","dataSourcesSplitByModeTimechart","splitBy","extractSplitByFieldsChartFields","indexOf","dataSourceKeys","valueKeys","_e","splitby_value","val","concat","_toConsumableArray","map","k","dsKey","dataSourcesSplitByModeChart","splitByFieldIdx","f","otherSplitBy","filter","nonDataSourceAggregations","groupby_rank","columnValues","_loop","dskey","dsIndx","mul","Math","ceil","aggregationField","fieldIdx","dataSourcesSplitByModeStatsorUnknown","splitMode","UNKNOWN","extractSplitByFieldsForStats","extractSplitByFieldsForUnknown","splitByIndex","splitByColumn","_f","cloneFields","splice","Object","keys","valIndices","col","newCol","valIdx","getTrellisDataSourcesBySplitMode","dataSources","trellisSplitBy","result","TIMECHART","STATS","CHART","ex","console","error"],"mappings":"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","file":"trellisUtils.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 = 38);\n","module.exports = require(\"lodash\");","module.exports = require(\"@babel/runtime/helpers/toConsumableArray\");","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\nexport const dataSourcesSplitByAggregationsTimechartAndChart = (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 splitByFields = [];\n let errorCode = null;\n\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysChart(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 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 console.error('getTrellisDataSourcesBySplitMode ', ex);\n result = { splitDataSources: null, errorCode: 'UNKNOWN' };\n }\n return result;\n};\n","module.exports = require(\"@splunk/visualizations-shared/trellisUtils\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"lodash\"","webpack:///external \"@babel/runtime/helpers/toConsumableArray\"","webpack:///./src/common/utils/trellisUtils.ts","webpack:///external \"@splunk/visualizations-shared/trellisUtils\""],"names":[],"mappings":"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","file":"trellisUtils.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 = 38);\n","module.exports = require(\"lodash\");","module.exports = require(\"@babel/runtime/helpers/toConsumableArray\");","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\nexport const dataSourcesSplitByAggregationsTimechartAndChart = (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 splitByFields = [];\n let errorCode = null;\n\n if (typeof fields[0] !== 'string') {\n splitByFields = extractDataSourceAggregationKeysChart(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 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 console.error('getTrellisDataSourcesBySplitMode ', ex);\n result = { splitDataSources: null, errorCode: 'UNKNOWN' };\n }\n return result;\n};\n","module.exports = require(\"@splunk/visualizations-shared/trellisUtils\");"],"sourceRoot":""}
|
package/common/utils/urlUtils.js
CHANGED
|
@@ -102,6 +102,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
102
102
|
value: true
|
|
103
103
|
});
|
|
104
104
|
exports.isValidUrl = void 0;
|
|
105
|
+
|
|
105
106
|
var isValidUrl = function isValidUrl(value) {
|
|
106
107
|
try {
|
|
107
108
|
var url = new URL(value);
|
|
@@ -110,6 +111,7 @@ var isValidUrl = function isValidUrl(value) {
|
|
|
110
111
|
return false;
|
|
111
112
|
}
|
|
112
113
|
};
|
|
114
|
+
|
|
113
115
|
exports.isValidUrl = isValidUrl;
|
|
114
116
|
|
|
115
117
|
/***/ })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/common/utils/urlUtils.ts"],"names":[
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/common/utils/urlUtils.ts"],"names":[],"mappings":";;;;;;;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;AClFO,IAAM,UAAU,GAAG,SAAb,UAAa,CAAC,KAAD,EAAkB;AACxC,MAAI;AACA,QAAM,GAAG,GAAG,IAAI,GAAJ,CAAQ,KAAR,CAAZ;AACA,WAAO,CAAC,CAAC,GAAG,CAAC,QAAb;AACH,GAHD,CAGE,OAAO,GAAP,EAAY;AACV,WAAO,KAAP;AACH;AACJ,CAPM;;AAAM,qBAAU,UAAV,C","file":"urlUtils.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 = 40);\n","export const isValidUrl = (value: string) => {\n try {\n const url = new URL(value);\n return !!url.protocol;\n } catch (err) {\n return false;\n }\n};\n"],"sourceRoot":""}
|