@splunk/visualizations 25.13.1 → 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.
Files changed (150) hide show
  1. package/Area.config.js +318 -234
  2. package/Area.config.js.map +1 -1
  3. package/Area.js +1131 -766
  4. package/Area.js.map +1 -1
  5. package/Bar.config.js +317 -233
  6. package/Bar.config.js.map +1 -1
  7. package/Bar.js +1007 -594
  8. package/Bar.js.map +1 -1
  9. package/Bubble.config.js +234 -160
  10. package/Bubble.config.js.map +1 -1
  11. package/Bubble.js +912 -509
  12. package/Bubble.js.map +1 -1
  13. package/ChoroplethSvg.config.js +80 -29
  14. package/ChoroplethSvg.config.js.map +1 -1
  15. package/ChoroplethSvg.js +691 -319
  16. package/ChoroplethSvg.js.map +1 -1
  17. package/Column.config.js +308 -223
  18. package/Column.config.js.map +1 -1
  19. package/Column.js +1011 -587
  20. package/Column.js.map +1 -1
  21. package/Ellipse.config.js +127 -62
  22. package/Ellipse.config.js.map +1 -1
  23. package/Ellipse.js +576 -286
  24. package/Ellipse.js.map +1 -1
  25. package/Events.config.js +111 -29
  26. package/Events.config.js.map +1 -1
  27. package/Events.js +998 -527
  28. package/Events.js.map +1 -1
  29. package/FillerGauge.config.js +142 -73
  30. package/FillerGauge.config.js.map +1 -1
  31. package/FillerGauge.js +962 -572
  32. package/FillerGauge.js.map +1 -1
  33. package/Image.config.js +70 -26
  34. package/Image.config.js.map +1 -1
  35. package/Image.js +524 -253
  36. package/Image.js.map +1 -1
  37. package/Line.config.js +326 -242
  38. package/Line.config.js.map +1 -1
  39. package/Line.js +1022 -606
  40. package/Line.js.map +1 -1
  41. package/LinkGraph.config.js +99 -49
  42. package/LinkGraph.config.js.map +1 -1
  43. package/LinkGraph.js +1184 -762
  44. package/LinkGraph.js.map +1 -1
  45. package/MIGRATION.md +1082 -0
  46. package/Map.config.js +311 -167
  47. package/Map.config.js.map +1 -1
  48. package/Map.js +1479 -873
  49. package/Map.js.map +1 -1
  50. package/Markdown.config.js +93 -43
  51. package/Markdown.config.js.map +1 -1
  52. package/Markdown.js +603 -332
  53. package/Markdown.js.map +1 -1
  54. package/MarkerGauge.config.js +163 -105
  55. package/MarkerGauge.config.js.map +1 -1
  56. package/MarkerGauge.js +1025 -628
  57. package/MarkerGauge.js.map +1 -1
  58. package/ParallelCoordinates.config.js +95 -41
  59. package/ParallelCoordinates.config.js.map +1 -1
  60. package/ParallelCoordinates.js +993 -622
  61. package/ParallelCoordinates.js.map +1 -1
  62. package/Pie.config.js +99 -46
  63. package/Pie.config.js.map +1 -1
  64. package/Pie.js +847 -442
  65. package/Pie.js.map +1 -1
  66. package/Punchcard.config.js +114 -62
  67. package/Punchcard.config.js.map +1 -1
  68. package/Punchcard.js +1097 -633
  69. package/Punchcard.js.map +1 -1
  70. package/Rectangle.config.js +131 -65
  71. package/Rectangle.config.js.map +1 -1
  72. package/Rectangle.js +580 -288
  73. package/Rectangle.js.map +1 -1
  74. package/Sankey.config.js +103 -41
  75. package/Sankey.config.js.map +1 -1
  76. package/Sankey.js +1128 -586
  77. package/Sankey.js.map +1 -1
  78. package/Scatter.config.js +231 -157
  79. package/Scatter.config.js.map +1 -1
  80. package/Scatter.js +904 -504
  81. package/Scatter.js.map +1 -1
  82. package/SingleValue.config.js +212 -142
  83. package/SingleValue.config.js.map +1 -1
  84. package/SingleValue.js +1506 -956
  85. package/SingleValue.js.map +1 -1
  86. package/SingleValueBasic.js +294 -233
  87. package/SingleValueBasic.js.map +1 -1
  88. package/SingleValueIcon.config.js +208 -138
  89. package/SingleValueIcon.config.js.map +1 -1
  90. package/SingleValueIcon.js +1375 -914
  91. package/SingleValueIcon.js.map +1 -1
  92. package/SingleValueRadial.config.js +252 -137
  93. package/SingleValueRadial.config.js.map +1 -1
  94. package/SingleValueRadial.js +2194 -1069
  95. package/SingleValueRadial.js.map +1 -1
  96. package/SparkLine.js +172 -83
  97. package/SparkLine.js.map +1 -1
  98. package/Table.config.js +123 -70
  99. package/Table.config.js.map +1 -1
  100. package/Table.js +1094 -590
  101. package/Table.js.map +1 -1
  102. package/common/Charting.js +147 -75
  103. package/common/Charting.js.map +1 -1
  104. package/common/ChartingApi.js +18 -7
  105. package/common/ChartingApi.js.map +1 -1
  106. package/common/EventsDoc.js +91 -36
  107. package/common/EventsDoc.js.map +1 -1
  108. package/common/GaugeMajorTicks.js +70 -60
  109. package/common/GaugeMajorTicks.js.map +1 -1
  110. package/common/GaugeValueMarker.js +45 -36
  111. package/common/GaugeValueMarker.js.map +1 -1
  112. package/common/OptionsDoc.js +177 -86
  113. package/common/OptionsDoc.js.map +1 -1
  114. package/common/OverviewDoc.js +65 -32
  115. package/common/OverviewDoc.js.map +1 -1
  116. package/common/SplunkVisualization.js +34 -7
  117. package/common/SplunkVisualization.js.map +1 -1
  118. package/common/SplunkVisualizationApi.js +10 -4
  119. package/common/SplunkVisualizationApi.js.map +1 -1
  120. package/common/ThemesDoc.js +41 -28
  121. package/common/ThemesDoc.js.map +1 -1
  122. package/common/chartingUtils.js +56 -24
  123. package/common/chartingUtils.js.map +1 -1
  124. package/common/docUtils.js +15 -5
  125. package/common/docUtils.js.map +1 -1
  126. package/common/gaugeUtils.js +238 -155
  127. package/common/gaugeUtils.js.map +1 -1
  128. package/common/shapeUtils.js +34 -16
  129. package/common/shapeUtils.js.map +1 -1
  130. package/common/utils/configUtils.js +59 -23
  131. package/common/utils/configUtils.js.map +1 -1
  132. package/common/utils/dataUtils.js +9 -4
  133. package/common/utils/dataUtils.js.map +1 -1
  134. package/common/utils/hocUtils.js +5 -3
  135. package/common/utils/hocUtils.js.map +1 -1
  136. package/common/utils/layoutUtils.js +3 -2
  137. package/common/utils/layoutUtils.js.map +1 -1
  138. package/common/utils/mapUtils.js +370 -206
  139. package/common/utils/mapUtils.js.map +1 -1
  140. package/common/utils/singleValueUtils.js +243 -198
  141. package/common/utils/singleValueUtils.js.map +1 -1
  142. package/common/utils/testHelper.js +36 -9
  143. package/common/utils/testHelper.js.map +1 -1
  144. package/common/utils/trellisUtils.js +87 -26
  145. package/common/utils/trellisUtils.js.map +1 -1
  146. package/common/utils/urlUtils.js +4 -2
  147. package/common/utils/urlUtils.js.map +1 -1
  148. package/common/withDashboardViz.js +375 -193
  149. package/common/withDashboardViz.js.map +1 -1
  150. package/package.json +25 -27
@@ -87,7 +87,7 @@ module.exports =
87
87
  /******/
88
88
  /******/
89
89
  /******/ // Load entry module and return exports
90
- /******/ return __webpack_require__(__webpack_require__.s = 36);
90
+ /******/ return __webpack_require__(__webpack_require__.s = 38);
91
91
  /******/ })
92
92
  /************************************************************************/
93
93
  /******/ ({
@@ -106,19 +106,23 @@ module.exports = require("@babel/runtime/helpers/toConsumableArray");
106
106
 
107
107
  /***/ }),
108
108
 
109
- /***/ 36:
109
+ /***/ 38:
110
110
  /***/ (function(module, exports, __webpack_require__) {
111
111
 
112
112
  "use strict";
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);
121
- var trellisUtils_1 = __webpack_require__(37);
123
+
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,18 +132,23 @@ 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
- splitDataSources[fieldName] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
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]];
144
153
  splitDataSources[fieldName].primary.data.columns = [columns[i]];
145
154
  }
@@ -147,30 +156,37 @@ 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
- splitByFields = trellisUtils_1.extractDataSourceAggregationKeysChart(fields);
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) {
169
- splitDataSources[splitByField] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
184
+ splitDataSources[splitByField] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
170
185
  splitDataSources[splitByField].primary.data.fields = [fields[0]];
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,10 +198,12 @@ 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
- splitDataSources[fieldName] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
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]];
190
208
  splitDataSources[fieldName].primary.data.columns = [columns[0], columns[i]];
191
209
  }
@@ -193,31 +211,38 @@ 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
- splitByFields = trellisUtils_1.extractDataSourceAggregationKeysStats(fields);
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) {
215
- splitDataSources[splitByField] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
239
+ splitDataSources[splitByField] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
216
240
  splitDataSources[splitByField].primary.data.fields = [fields[0]];
217
241
  splitDataSources[splitByField].primary.data.columns = [columns[0]];
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,34 +251,42 @@ 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
- splitByFields = trellisUtils_1.extractSplitByFieldsChartFields(fields);
273
+ splitByFields = (0, trellisUtils_1.extractSplitByFieldsChartFields)(fields);
244
274
  }
275
+
245
276
  if (splitByFields && splitByFields.indexOf(splitBy) > -1) {
246
277
  splitDataSources = {};
247
- var dataSourceKeys = trellisUtils_1.extractDataSourceAggregationKeysChart(fields);
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
- splitDataSources[val] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
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 = [{
258
291
  name: fields[0].name
259
292
  }].concat(_toConsumableArray(dataSourceKeys.map(function (k) {
@@ -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
- splitByFields = trellisUtils_1.extractSplitByFieldsChartFields(fields);
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) {
@@ -297,8 +336,9 @@ var dataSourcesSplitByModeChart = function dataSourcesSplitByModeChart(dataSourc
297
336
  var otherSplitBy = splitByFields.filter(function (f) {
298
337
  return f !== splitBy;
299
338
  });
300
- var dataSourceKeys = trellisUtils_1.extractDataSourceAggregationKeysChart(fields);
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
- var valueKeys = lodash_1.cloneDeep(columns[0]);
369
+ var valueKeys = (0, lodash_1.cloneDeep)(columns[0]);
329
370
  valueKeys.forEach(function (val, idx) {
330
- splitDataSources[val] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
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,11 +477,13 @@ 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
- splitDataSources[val] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
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 = [{
440
488
  name: otherSplitBy[0]
441
489
  }].concat(_toConsumableArray(dataSourceKeys.map(function (k) {
@@ -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
- splitByFields = splitMode !== trellisUtils_1.UNKNOWN ? trellisUtils_1.extractSplitByFieldsForStats(fields) : trellisUtils_1.extractSplitByFieldsForUnknown(fields);
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 = {};
@@ -489,12 +544,12 @@ var dataSourcesSplitByModeStatsorUnknown = function dataSourcesSplitByModeStatso
489
544
  splitDataSources[val].push(idx);
490
545
  }
491
546
  });
492
- var cloneFields = lodash_1.cloneDeep(fields);
547
+ var cloneFields = (0, lodash_1.cloneDeep)(fields);
493
548
  cloneFields.splice(splitByIndex, 1);
494
549
  var valueKeys = Object.keys(splitDataSources);
495
550
  valueKeys.forEach(function (val) {
496
- var valIndices = lodash_1.cloneDeep(splitDataSources[val]);
497
- splitDataSources[val] = lodash_1.cloneDeep(lodash_1.omit(dataSource, ['primary.data.fields', 'primary.data.columns']));
551
+ var valIndices = (0, lodash_1.cloneDeep)(splitDataSources[val]);
552
+ splitDataSources[val] = (0, lodash_1.cloneDeep)((0, lodash_1.omit)(dataSource, ['primary.data.fields', 'primary.data.columns']));
498
553
  splitDataSources[val].primary.data.fields = cloneFields;
499
554
  splitDataSources[val].primary.data.columns = [];
500
555
  columns.forEach(function (col, idx) {
@@ -509,23 +564,27 @@ 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
- result = trellisSplitBy === exports.AGGREGATIONS ? exports.dataSourcesSplitByAggregationsTimechartAndChart(dataSources) : exports.dataSourcesSplitByModeTimechart(dataSources, trellisSplitBy);
581
+ result = trellisSplitBy === exports.AGGREGATIONS ? (0, exports.dataSourcesSplitByAggregationsTimechartAndChart)(dataSources) : (0, exports.dataSourcesSplitByModeTimechart)(dataSources, trellisSplitBy);
523
582
  } else if (splitMode === trellisUtils_1.STATS) {
524
- result = trellisSplitBy === exports.AGGREGATIONS ? exports.dataSourcesSplitByAggregationsStats(dataSources) : exports.dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, trellisUtils_1.STATS);
583
+ result = trellisSplitBy === exports.AGGREGATIONS ? (0, exports.dataSourcesSplitByAggregationsStats)(dataSources) : (0, exports.dataSourcesSplitByModeStatsorUnknown)(dataSources, trellisSplitBy, trellisUtils_1.STATS);
525
584
  } else if (splitMode === trellisUtils_1.CHART) {
526
- result = trellisSplitBy === exports.AGGREGATIONS ? exports.dataSourcesSplitByAggregationsTimechartAndChart(dataSources) : exports.dataSourcesSplitByModeChart(dataSources, trellisSplitBy);
585
+ result = trellisSplitBy === exports.AGGREGATIONS ? (0, exports.dataSourcesSplitByAggregationsTimechartAndChart)(dataSources) : (0, exports.dataSourcesSplitByModeChart)(dataSources, trellisSplitBy);
527
586
  } else if (splitMode === trellisUtils_1.UNKNOWN) {
528
- result = trellisSplitBy === exports.AGGREGATIONS ? exports.dataSourcesSplitByAggregationsUnknown(dataSources) : exports.dataSourcesSplitByModeStatsorUnknown(dataSources, trellisSplitBy, trellisUtils_1.UNKNOWN);
587
+ result = trellisSplitBy === exports.AGGREGATIONS ? (0, exports.dataSourcesSplitByAggregationsUnknown)(dataSources) : (0, exports.dataSourcesSplitByModeStatsorUnknown)(dataSources, trellisSplitBy, trellisUtils_1.UNKNOWN);
529
588
  }
530
589
  } catch (ex) {
531
590
  console.error('getTrellisDataSourcesBySplitMode ', ex);
@@ -534,13 +593,15 @@ 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
  /***/ }),
542
603
 
543
- /***/ 37:
604
+ /***/ 39:
544
605
  /***/ (function(module, exports) {
545
606
 
546
607
  module.exports = require("@splunk/visualizations-shared/trellisUtils");
@@ -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 = 36);\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":""}
@@ -87,12 +87,12 @@ module.exports =
87
87
  /******/
88
88
  /******/
89
89
  /******/ // Load entry module and return exports
90
- /******/ return __webpack_require__(__webpack_require__.s = 38);
90
+ /******/ return __webpack_require__(__webpack_require__.s = 40);
91
91
  /******/ })
92
92
  /************************************************************************/
93
93
  /******/ ({
94
94
 
95
- /***/ 38:
95
+ /***/ 40:
96
96
  /***/ (function(module, exports, __webpack_require__) {
97
97
 
98
98
  "use strict";
@@ -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
  /***/ })