@splunk/visualizations 26.4.1 → 27.0.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 +1262 -1600
- package/Area.config.js.map +7 -1
- package/Area.js +3002 -4930
- package/Area.js.map +7 -1
- package/Bar.config.js +1247 -1574
- package/Bar.config.js.map +7 -1
- package/Bar.js +2921 -4843
- package/Bar.js.map +7 -1
- package/Bubble.config.js +896 -1213
- package/Bubble.config.js.map +7 -1
- package/Bubble.js +2517 -4483
- package/Bubble.js.map +7 -1
- package/ChoroplethSvg.config.js +282 -582
- package/ChoroplethSvg.config.js.map +7 -1
- package/ChoroplethSvg.js +2004 -3810
- package/ChoroplethSvg.js.map +7 -1
- package/Column.config.js +1208 -1541
- package/Column.config.js.map +7 -1
- package/Column.js +2930 -4886
- package/Column.js.map +7 -1
- package/Ellipse.config.js +443 -774
- package/Ellipse.config.js.map +7 -1
- package/Ellipse.js +1651 -3341
- package/Ellipse.js.map +7 -1
- package/Events.config.js +207 -492
- package/Events.config.js.map +7 -1
- package/Events.js +2615 -4649
- package/Events.js.map +7 -1
- package/FillerGauge.config.js +420 -775
- package/FillerGauge.config.js.map +7 -1
- package/FillerGauge.js +2137 -4578
- package/FillerGauge.js.map +7 -1
- package/Image.config.js +144 -411
- package/Image.config.js.map +7 -1
- package/Image.js +1395 -3048
- package/Image.js.map +7 -1
- package/Line.config.js +1278 -1625
- package/Line.config.js.map +7 -1
- package/Line.js +2954 -4926
- package/Line.js.map +7 -1
- package/LinkGraph.config.js +390 -632
- package/LinkGraph.config.js.map +7 -1
- package/LinkGraph.js +5243 -6190
- package/LinkGraph.js.map +7 -1
- package/MIGRATION.md +6 -0
- package/Map.config.js +501 -801
- package/Map.config.js.map +7 -1
- package/Map.js +3369 -5676
- package/Map.js.map +7 -1
- package/Markdown.config.js +232 -528
- package/Markdown.config.js.map +7 -1
- package/Markdown.js +1645 -3216
- package/Markdown.js.map +7 -1
- package/MarkerGauge.config.js +308 -613
- package/MarkerGauge.config.js.map +7 -1
- package/MarkerGauge.js +2189 -4535
- package/MarkerGauge.js.map +7 -1
- package/ParallelCoordinates.config.js +282 -581
- package/ParallelCoordinates.config.js.map +7 -1
- package/ParallelCoordinates.js +2023 -4720
- package/ParallelCoordinates.js.map +7 -1
- package/Pie.config.js +278 -547
- package/Pie.config.js.map +7 -1
- package/Pie.js +1996 -3990
- package/Pie.js.map +7 -1
- package/Punchcard.config.js +291 -578
- package/Punchcard.config.js.map +7 -1
- package/Punchcard.js +2709 -5042
- package/Punchcard.js.map +7 -1
- package/Rectangle.config.js +455 -770
- package/Rectangle.config.js.map +7 -1
- package/Rectangle.js +1638 -3262
- package/Rectangle.js.map +7 -1
- package/Sankey.config.js +291 -626
- package/Sankey.config.js.map +7 -1
- package/Sankey.js +2737 -4909
- package/Sankey.js.map +7 -1
- package/Scatter.config.js +876 -1194
- package/Scatter.config.js.map +7 -1
- package/Scatter.js +2529 -4477
- package/Scatter.js.map +7 -1
- package/SingleValue.config.js +819 -1251
- package/SingleValue.config.js.map +7 -1
- package/SingleValue.js +4203 -7413
- package/SingleValue.js.map +7 -1
- package/SingleValueBasic.js +382 -1527
- package/SingleValueBasic.js.map +7 -1
- package/SingleValueIcon.config.js +781 -1207
- package/SingleValueIcon.config.js.map +7 -1
- package/SingleValueIcon.js +3350 -6285
- package/SingleValueIcon.js.map +7 -1
- package/SingleValueRadial.config.js +708 -1119
- package/SingleValueRadial.config.js.map +7 -1
- package/SingleValueRadial.js +3808 -6965
- package/SingleValueRadial.js.map +7 -1
- package/SparkLine.js +439 -746
- package/SparkLine.js.map +7 -1
- package/Table.config.js +565 -879
- package/Table.config.js.map +7 -1
- package/Table.js +3277 -5381
- package/Table.js.map +7 -1
- package/common/Charting.js +481 -1468
- package/common/Charting.js.map +7 -1
- package/common/ChartingApi.js +46 -170
- package/common/ChartingApi.js.map +7 -1
- package/common/DocExampleWithVizSandbox.js +270 -473
- package/common/DocExampleWithVizSandbox.js.map +7 -1
- package/common/EventsDoc.js +172 -464
- package/common/EventsDoc.js.map +7 -1
- package/common/GaugeMajorTicks.js +249 -347
- package/common/GaugeMajorTicks.js.map +7 -1
- package/common/GaugeValueMarker.js +201 -311
- package/common/GaugeValueMarker.js.map +7 -1
- package/common/OptionsDoc.js +347 -912
- package/common/OptionsDoc.js.map +7 -1
- package/common/OverviewDoc.js +435 -769
- package/common/OverviewDoc.js.map +7 -1
- package/common/SplunkVisualization.js +116 -259
- package/common/SplunkVisualization.js.map +7 -1
- package/common/SplunkVisualizationApi.js +40 -156
- package/common/SplunkVisualizationApi.js.map +7 -1
- package/common/ThemesDoc.js +271 -420
- package/common/ThemesDoc.js.map +7 -1
- package/common/chartingUtils.js +140 -312
- package/common/chartingUtils.js.map +7 -1
- package/common/docUtils.js +148 -266
- package/common/docUtils.js.map +7 -1
- package/common/gaugeUtils.js +280 -808
- package/common/gaugeUtils.js.map +7 -1
- package/common/shapeUtils.js +106 -211
- package/common/shapeUtils.js.map +7 -1
- package/common/utils/configUtils.js +126 -252
- package/common/utils/configUtils.js.map +7 -1
- package/common/utils/dataUtils.js +217 -812
- package/common/utils/dataUtils.js.map +7 -1
- package/common/utils/featureFlagUtils.js +53 -133
- package/common/utils/featureFlagUtils.js.map +7 -1
- package/common/utils/hocUtils.js +32 -122
- package/common/utils/hocUtils.js.map +7 -1
- package/common/utils/mapUtils.js +502 -1337
- package/common/utils/mapUtils.js.map +7 -1
- package/common/utils/singleValueUtils.js +462 -1010
- package/common/utils/singleValueUtils.js.map +7 -1
- package/common/utils/testHelper.js +92 -146
- package/common/utils/testHelper.js.map +7 -1
- package/common/utils/trellisUtils.js +237 -489
- package/common/utils/trellisUtils.js.map +7 -1
- package/common/utils/urlUtils.js +28 -112
- package/common/utils/urlUtils.js.map +7 -1
- package/common/withDashboardViz.js +1168 -2438
- package/common/withDashboardViz.js.map +7 -1
- package/package.json +52 -43
package/common/utils/mapUtils.js
CHANGED
|
@@ -1,1197 +1,330 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/******/ };
|
|
24
|
-
/******/
|
|
25
|
-
/******/ // Execute the module function
|
|
26
|
-
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
27
|
-
/******/
|
|
28
|
-
/******/ // Flag the module as loaded
|
|
29
|
-
/******/ module.l = true;
|
|
30
|
-
/******/
|
|
31
|
-
/******/ // Return the exports of the module
|
|
32
|
-
/******/ return module.exports;
|
|
33
|
-
/******/ }
|
|
34
|
-
/******/
|
|
35
|
-
/******/
|
|
36
|
-
/******/ // expose the modules object (__webpack_modules__)
|
|
37
|
-
/******/ __webpack_require__.m = modules;
|
|
38
|
-
/******/
|
|
39
|
-
/******/ // expose the module cache
|
|
40
|
-
/******/ __webpack_require__.c = installedModules;
|
|
41
|
-
/******/
|
|
42
|
-
/******/ // define getter function for harmony exports
|
|
43
|
-
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
44
|
-
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
45
|
-
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
46
|
-
/******/ }
|
|
47
|
-
/******/ };
|
|
48
|
-
/******/
|
|
49
|
-
/******/ // define __esModule on exports
|
|
50
|
-
/******/ __webpack_require__.r = function(exports) {
|
|
51
|
-
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
52
|
-
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
53
|
-
/******/ }
|
|
54
|
-
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
55
|
-
/******/ };
|
|
56
|
-
/******/
|
|
57
|
-
/******/ // create a fake namespace object
|
|
58
|
-
/******/ // mode & 1: value is a module id, require it
|
|
59
|
-
/******/ // mode & 2: merge all properties of value into the ns
|
|
60
|
-
/******/ // mode & 4: return value when already ns object
|
|
61
|
-
/******/ // mode & 8|1: behave like require
|
|
62
|
-
/******/ __webpack_require__.t = function(value, mode) {
|
|
63
|
-
/******/ if(mode & 1) value = __webpack_require__(value);
|
|
64
|
-
/******/ if(mode & 8) return value;
|
|
65
|
-
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
66
|
-
/******/ var ns = Object.create(null);
|
|
67
|
-
/******/ __webpack_require__.r(ns);
|
|
68
|
-
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
69
|
-
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
70
|
-
/******/ return ns;
|
|
71
|
-
/******/ };
|
|
72
|
-
/******/
|
|
73
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
74
|
-
/******/ __webpack_require__.n = function(module) {
|
|
75
|
-
/******/ var getter = module && module.__esModule ?
|
|
76
|
-
/******/ function getDefault() { return module['default']; } :
|
|
77
|
-
/******/ function getModuleExports() { return module; };
|
|
78
|
-
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
79
|
-
/******/ return getter;
|
|
80
|
-
/******/ };
|
|
81
|
-
/******/
|
|
82
|
-
/******/ // Object.prototype.hasOwnProperty.call
|
|
83
|
-
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
84
|
-
/******/
|
|
85
|
-
/******/ // __webpack_public_path__
|
|
86
|
-
/******/ __webpack_require__.p = "";
|
|
87
|
-
/******/
|
|
88
|
-
/******/
|
|
89
|
-
/******/ // Load entry module and return exports
|
|
90
|
-
/******/ return __webpack_require__(__webpack_require__.s = 40);
|
|
91
|
-
/******/ })
|
|
92
|
-
/************************************************************************/
|
|
93
|
-
/******/ ([
|
|
94
|
-
/* 0 */
|
|
95
|
-
/***/ (function(module, exports) {
|
|
96
|
-
|
|
97
|
-
module.exports = require("lodash");
|
|
98
|
-
|
|
99
|
-
/***/ }),
|
|
100
|
-
/* 1 */,
|
|
101
|
-
/* 2 */
|
|
102
|
-
/***/ (function(module, exports) {
|
|
103
|
-
|
|
104
|
-
module.exports = require("@babel/runtime/helpers/toConsumableArray");
|
|
105
|
-
|
|
106
|
-
/***/ }),
|
|
107
|
-
/* 3 */
|
|
108
|
-
/***/ (function(module, exports) {
|
|
109
|
-
|
|
110
|
-
module.exports = require("@babel/runtime/helpers/defineProperty");
|
|
111
|
-
|
|
112
|
-
/***/ }),
|
|
113
|
-
/* 4 */
|
|
114
|
-
/***/ (function(module, exports) {
|
|
115
|
-
|
|
116
|
-
module.exports = require("react");
|
|
117
|
-
|
|
118
|
-
/***/ }),
|
|
119
|
-
/* 5 */,
|
|
120
|
-
/* 6 */,
|
|
121
|
-
/* 7 */
|
|
122
|
-
/***/ (function(module, exports) {
|
|
123
|
-
|
|
124
|
-
module.exports = require("@splunk/visualization-schemas");
|
|
125
|
-
|
|
126
|
-
/***/ }),
|
|
127
|
-
/* 8 */
|
|
128
|
-
/***/ (function(module, exports) {
|
|
129
|
-
|
|
130
|
-
module.exports = require("@babel/runtime/helpers/slicedToArray");
|
|
131
|
-
|
|
132
|
-
/***/ }),
|
|
133
|
-
/* 9 */,
|
|
134
|
-
/* 10 */
|
|
135
|
-
/***/ (function(module, exports) {
|
|
136
|
-
|
|
137
|
-
module.exports = require("@splunk/visualization-encoding/utils/types");
|
|
138
|
-
|
|
139
|
-
/***/ }),
|
|
140
|
-
/* 11 */
|
|
141
|
-
/***/ (function(module, exports) {
|
|
142
|
-
|
|
143
|
-
module.exports = require("@babel/runtime/helpers/taggedTemplateLiteral");
|
|
144
|
-
|
|
145
|
-
/***/ }),
|
|
146
|
-
/* 12 */
|
|
147
|
-
/***/ (function(module, exports) {
|
|
148
|
-
|
|
149
|
-
module.exports = require("styled-components");
|
|
150
|
-
|
|
151
|
-
/***/ }),
|
|
152
|
-
/* 13 */
|
|
153
|
-
/***/ (function(module, exports) {
|
|
154
|
-
|
|
155
|
-
module.exports = require("@splunk/visualizations-shared/colorUtils");
|
|
156
|
-
|
|
157
|
-
/***/ }),
|
|
158
|
-
/* 14 */,
|
|
159
|
-
/* 15 */,
|
|
160
|
-
/* 16 */,
|
|
161
|
-
/* 17 */,
|
|
162
|
-
/* 18 */,
|
|
163
|
-
/* 19 */,
|
|
164
|
-
/* 20 */,
|
|
165
|
-
/* 21 */,
|
|
166
|
-
/* 22 */,
|
|
167
|
-
/* 23 */,
|
|
168
|
-
/* 24 */,
|
|
169
|
-
/* 25 */,
|
|
170
|
-
/* 26 */,
|
|
171
|
-
/* 27 */,
|
|
172
|
-
/* 28 */,
|
|
173
|
-
/* 29 */,
|
|
174
|
-
/* 30 */,
|
|
175
|
-
/* 31 */,
|
|
176
|
-
/* 32 */,
|
|
177
|
-
/* 33 */,
|
|
178
|
-
/* 34 */,
|
|
179
|
-
/* 35 */,
|
|
180
|
-
/* 36 */,
|
|
181
|
-
/* 37 */,
|
|
182
|
-
/* 38 */,
|
|
183
|
-
/* 39 */,
|
|
184
|
-
/* 40 */
|
|
185
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
186
|
-
|
|
187
|
-
"use strict";
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
Object.defineProperty(exports, "__esModule", {
|
|
191
|
-
value: true
|
|
192
|
-
});
|
|
193
|
-
exports.columnsNullToZeros = void 0;
|
|
194
|
-
|
|
195
|
-
var types_1 = __webpack_require__(10);
|
|
196
|
-
|
|
197
|
-
var dsl_1 = __webpack_require__(41);
|
|
198
|
-
|
|
199
|
-
var hocUtils_1 = __webpack_require__(42);
|
|
200
|
-
|
|
201
|
-
var JSONSchemaUtils_1 = __webpack_require__(43);
|
|
202
|
-
|
|
203
|
-
var BubbleLayer_1 = __webpack_require__(44);
|
|
204
|
-
|
|
205
|
-
var columnsNullToZeros = function columnsNullToZeros(config, dataSources, options) {
|
|
206
|
-
var _a, _b;
|
|
207
|
-
|
|
208
|
-
var primary = dataSources.primary;
|
|
209
|
-
var _primary$data = primary.data,
|
|
210
|
-
columns = _primary$data.columns,
|
|
211
|
-
fields = _primary$data.fields;
|
|
212
|
-
var newColumns = columns;
|
|
213
|
-
var mergedOptions = (0, hocUtils_1.deepMergeWithArrayPrimitiveOverrides)({}, options, (0, JSONSchemaUtils_1.pickFieldFromJSONSchema)(config.optionsSchema, 'default'));
|
|
214
|
-
|
|
215
|
-
if (((_b = (_a = mergedOptions.layers) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) === 'bubble') {
|
|
216
|
-
var latitudeField = (0, dsl_1.getFieldsFromDSL)(mergedOptions.layers[0].latitude, dataSources)[0] || '';
|
|
217
|
-
var longitudeField = (0, dsl_1.getFieldsFromDSL)(mergedOptions.layers[0].longitude, dataSources)[0] || '';
|
|
218
|
-
var excludedFields = [latitudeField, longitudeField, 'geobin'].concat(BubbleLayer_1.GEO_LAT_AND_LONG_FIELD);
|
|
219
|
-
var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
|
|
220
|
-
var field = typeof e === 'string' ? e : e.name.toString();
|
|
221
|
-
|
|
222
|
-
if (!excludedFields.includes(field)) {
|
|
223
|
-
arr.push(i);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
return arr;
|
|
227
|
-
}, []));
|
|
228
|
-
newColumns = columns.map(function (column, i) {
|
|
229
|
-
if (indicesToEvaluate.has(i)) {
|
|
230
|
-
// sanitize value and convert string to numeric numbers
|
|
231
|
-
return column.map(function (value) {
|
|
232
|
-
return !value || !(0, types_1.isNumber)(value) ? 0 : +value;
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return column;
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
|
|
241
|
-
primary: Object.assign(Object.assign({}, primary), {
|
|
242
|
-
data: Object.assign(Object.assign({}, primary.data), {
|
|
243
|
-
columns: newColumns
|
|
244
|
-
})
|
|
245
|
-
})
|
|
246
|
-
});
|
|
247
|
-
return modifiedDatasources;
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
exports.columnsNullToZeros = columnsNullToZeros;
|
|
251
|
-
|
|
252
|
-
/***/ }),
|
|
253
|
-
/* 41 */
|
|
254
|
-
/***/ (function(module, exports) {
|
|
255
|
-
|
|
256
|
-
module.exports = require("@splunk/visualization-encoding/utils/dsl");
|
|
257
|
-
|
|
258
|
-
/***/ }),
|
|
259
|
-
/* 42 */
|
|
260
|
-
/***/ (function(module, exports) {
|
|
261
|
-
|
|
262
|
-
module.exports = require("@splunk/visualizations-shared/hocUtils");
|
|
263
|
-
|
|
264
|
-
/***/ }),
|
|
265
|
-
/* 43 */
|
|
266
|
-
/***/ (function(module, exports) {
|
|
267
|
-
|
|
268
|
-
module.exports = require("@splunk/visualizations-shared/JSONSchemaUtils");
|
|
269
|
-
|
|
270
|
-
/***/ }),
|
|
271
|
-
/* 44 */
|
|
272
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
273
|
-
|
|
274
|
-
"use strict";
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
var _slicedToArray = __webpack_require__(8);
|
|
278
|
-
|
|
279
|
-
var _defineProperty = __webpack_require__(3);
|
|
280
|
-
|
|
281
|
-
var _toConsumableArray = __webpack_require__(2);
|
|
282
|
-
|
|
283
|
-
var _taggedTemplateLiteral = __webpack_require__(11);
|
|
284
|
-
|
|
285
|
-
var _templateObject;
|
|
286
|
-
|
|
287
|
-
Object.defineProperty(exports, "__esModule", {
|
|
288
|
-
value: true
|
|
289
|
-
});
|
|
290
|
-
exports.Bubble = exports.PieSegment = exports.GEO_LAT_AND_LONG_FIELD = exports.GEO_BOUND_PREFIX = void 0;
|
|
291
|
-
|
|
292
|
-
var React = __webpack_require__(4);
|
|
293
|
-
|
|
294
|
-
var styled_components_1 = __webpack_require__(12);
|
|
295
|
-
|
|
296
|
-
var lodash_1 = __webpack_require__(0);
|
|
297
|
-
|
|
298
|
-
var colorUtils_1 = __webpack_require__(13);
|
|
299
|
-
|
|
300
|
-
var MapUtils_1 = __webpack_require__(45);
|
|
301
|
-
|
|
302
|
-
var MarkerWrapper_1 = __webpack_require__(49);
|
|
303
|
-
|
|
304
|
-
exports.GEO_BOUND_PREFIX = '_geo_bounds_';
|
|
305
|
-
exports.GEO_LAT_AND_LONG_FIELD = ['_geo_long_field', '_geo_lat_field'];
|
|
306
|
-
exports.PieSegment = React.memo(function (_ref) {
|
|
307
|
-
var start = _ref.start,
|
|
308
|
-
end = _ref.end,
|
|
309
|
-
radius = _ref.radius,
|
|
310
|
-
color = _ref.color,
|
|
311
|
-
themeColor = _ref.themeColor,
|
|
312
|
-
segmentMetadata = _ref.segmentMetadata,
|
|
313
|
-
handleBubbleClick = _ref.handleBubbleClick;
|
|
314
|
-
|
|
315
|
-
var _ref2 = segmentMetadata !== null && segmentMetadata !== void 0 ? segmentMetadata : {},
|
|
316
|
-
name = _ref2.name,
|
|
317
|
-
value = _ref2.value;
|
|
318
|
-
|
|
319
|
-
var handleSegmentClick = React.useCallback(function (e) {
|
|
320
|
-
handleBubbleClick(e, name, value);
|
|
321
|
-
}, [name, value, handleBubbleClick]);
|
|
322
|
-
|
|
323
|
-
if (end - start === 1) {
|
|
324
|
-
return React.createElement("circle", {
|
|
325
|
-
onClick: handleSegmentClick,
|
|
326
|
-
cx: radius,
|
|
327
|
-
cy: radius,
|
|
328
|
-
r: radius,
|
|
329
|
-
fill: color,
|
|
330
|
-
fillOpacity: 0.5,
|
|
331
|
-
strokeWidth: 1.5,
|
|
332
|
-
stroke: color
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
var a0 = 2 * Math.PI * (start - 0.25);
|
|
337
|
-
var a1 = 2 * Math.PI * (end - 0.25);
|
|
338
|
-
var x0 = Math.cos(a0);
|
|
339
|
-
var y0 = Math.sin(a0);
|
|
340
|
-
var x1 = Math.cos(a1);
|
|
341
|
-
var y1 = Math.sin(a1);
|
|
342
|
-
var arc = end - start > 0.5 ? 1 : 0;
|
|
343
|
-
return React.createElement("path", {
|
|
344
|
-
onClick: handleSegmentClick,
|
|
345
|
-
d: "M ".concat(radius, " ").concat(radius, " L ").concat(radius + radius * x0, " ").concat(radius + radius * y0, " A ").concat(radius, " ").concat(radius, " 0 ").concat(arc, " 1 ").concat(radius + radius * x1, " ").concat(radius + radius * y1, " L ").concat(radius, " ").concat(radius, " A 0 0 0 ").concat(arc, " 0 ").concat(radius, " ").concat(radius),
|
|
346
|
-
fill: color,
|
|
347
|
-
fillOpacity: 0.8,
|
|
348
|
-
stroke: themeColor,
|
|
349
|
-
strokeWidth: 2,
|
|
350
|
-
strokeOpacity: 0.3
|
|
351
|
-
});
|
|
352
|
-
});
|
|
353
|
-
exports.PieSegment.displayName = 'MapBubblePieSegment';
|
|
354
|
-
var StyledMarkerWrapper = (0, styled_components_1.default)(MarkerWrapper_1.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n cursor: pointer;\n"])));
|
|
355
|
-
exports.Bubble = React.memo(function (_ref3) {
|
|
356
|
-
var originalValues = _ref3.originalValues,
|
|
357
|
-
valueRange = _ref3.valueRange,
|
|
358
|
-
colors = _ref3.colors,
|
|
359
|
-
themeColor = _ref3.themeColor,
|
|
360
|
-
isPie = _ref3.isPie,
|
|
361
|
-
latitude = _ref3.latitude,
|
|
362
|
-
longitude = _ref3.longitude,
|
|
363
|
-
bubbleSize = _ref3.bubbleSize,
|
|
364
|
-
_ref3$additionalField = _ref3.additionalFields,
|
|
365
|
-
additionalFields = _ref3$additionalField === void 0 ? [] : _ref3$additionalField,
|
|
366
|
-
map = _ref3.map,
|
|
367
|
-
handleMapClick = _ref3.handleMapClick;
|
|
368
|
-
var onBubbleClick = React.useCallback(function (e, name, value) {
|
|
369
|
-
handleMapClick(e, name, value);
|
|
370
|
-
e.stopPropagation();
|
|
371
|
-
}, [handleMapClick]);
|
|
372
|
-
var bubble = React.useMemo(function () {
|
|
373
|
-
var allZeros = originalValues.every(function (v) {
|
|
374
|
-
return v === 0;
|
|
375
|
-
});
|
|
376
|
-
|
|
377
|
-
if (allZeros || !originalValues.length) {
|
|
378
|
-
return null;
|
|
379
|
-
} // sanitize values
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
var values = originalValues.map(function (v) {
|
|
383
|
-
return v > 0 ? v : 0;
|
|
384
|
-
}); // compute offsets for pie segments
|
|
385
|
-
|
|
386
|
-
var offsets = [];
|
|
387
|
-
var total = 0;
|
|
388
|
-
values.forEach(function (count) {
|
|
389
|
-
offsets.push(total);
|
|
390
|
-
total += count;
|
|
391
|
-
});
|
|
392
|
-
var radius = (0, MapUtils_1.matchBubbleSize)(valueRange, total);
|
|
393
|
-
var width = radius * 2;
|
|
394
|
-
return React.createElement("svg", {
|
|
395
|
-
width: width,
|
|
396
|
-
height: width,
|
|
397
|
-
viewBox: "-3 -3 ".concat(width + 6, " ").concat(width + 6)
|
|
398
|
-
}, isPie ? React.createElement("circle", {
|
|
399
|
-
cx: radius,
|
|
400
|
-
cy: radius,
|
|
401
|
-
r: radius,
|
|
402
|
-
fill: "none",
|
|
403
|
-
strokeWidth: 2,
|
|
404
|
-
stroke: themeColor,
|
|
405
|
-
strokeOpacity: 0.3
|
|
406
|
-
}) : null, values.map(function (v, i) {
|
|
407
|
-
return React.createElement(exports.PieSegment, {
|
|
408
|
-
key: String(i),
|
|
409
|
-
start: offsets[i] / total,
|
|
410
|
-
end: (offsets[i] + v) / total,
|
|
411
|
-
radius: radius,
|
|
412
|
-
color: colors[i],
|
|
413
|
-
themeColor: themeColor,
|
|
414
|
-
segmentMetadata: bubbleSize[i],
|
|
415
|
-
handleBubbleClick: onBubbleClick
|
|
416
|
-
});
|
|
417
|
-
}));
|
|
418
|
-
}, [bubbleSize, colors, isPie, onBubbleClick, originalValues, themeColor, valueRange]);
|
|
419
|
-
|
|
420
|
-
if (!bubble) {
|
|
421
|
-
return null;
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
return React.createElement(StyledMarkerWrapper, {
|
|
425
|
-
longitude: longitude,
|
|
426
|
-
latitude: latitude,
|
|
427
|
-
additionalFields: [].concat(_toConsumableArray(bubbleSize), _toConsumableArray(additionalFields)),
|
|
428
|
-
map: map,
|
|
429
|
-
"data-test-type": "bubble"
|
|
430
|
-
}, bubble);
|
|
431
|
-
});
|
|
432
|
-
exports.Bubble.displayName = 'MapBubble';
|
|
433
|
-
|
|
434
|
-
var BubbleLayer = function BubbleLayer(props) {
|
|
435
|
-
var bubbleLayer = props.bubbleLayer,
|
|
436
|
-
themeColorScheme = props.themeColorScheme,
|
|
437
|
-
map = props.map,
|
|
438
|
-
zoom = props.zoom,
|
|
439
|
-
onMapClick = props.onMapClick;
|
|
440
|
-
bubbleLayer.seriesColors = bubbleLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
|
|
441
|
-
bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
|
|
442
|
-
var bakedData = React.useMemo(function () {
|
|
443
|
-
return (0, MapUtils_1.bakeBubbleData)(bubbleLayer);
|
|
444
|
-
}, [bubbleLayer]);
|
|
445
|
-
var staticColors = React.useMemo(function () {
|
|
446
|
-
return (0, MapUtils_1.getStaticColors)(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
|
|
447
|
-
}, [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]);
|
|
448
|
-
|
|
449
|
-
var _ref4 = bakedData !== null && bakedData !== void 0 ? bakedData : {},
|
|
450
|
-
_ref4$data = _ref4.data,
|
|
451
|
-
data = _ref4$data === void 0 ? [] : _ref4$data,
|
|
452
|
-
_ref4$dataRange = _ref4.dataRange,
|
|
453
|
-
dataRange = _ref4$dataRange === void 0 ? [] : _ref4$dataRange,
|
|
454
|
-
resultLimit = _ref4.resultLimit,
|
|
455
|
-
bubbleSizeFields = _ref4.bubbleSizeFields,
|
|
456
|
-
isPie = _ref4.isPie;
|
|
457
|
-
|
|
458
|
-
var _bubbleLayer$addition = bubbleLayer.additionalTooltipFields,
|
|
459
|
-
additionalTooltipFields = _bubbleLayer$addition === void 0 ? [] : _bubbleLayer$addition;
|
|
460
|
-
var roundedZoom = Math.round(zoom);
|
|
461
|
-
var themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';
|
|
462
|
-
var dynamicColors = bubbleLayer.dataColors; // filter data for the current zoom level and sort base on values
|
|
463
|
-
|
|
464
|
-
var dataToRender = React.useMemo(function () {
|
|
465
|
-
return data.reduce(function (acc, datum, i) {
|
|
466
|
-
if (datum.zoom === roundedZoom) {
|
|
467
|
-
acc.push({
|
|
468
|
-
data: datum,
|
|
469
|
-
idx: i
|
|
470
|
-
});
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
return acc;
|
|
474
|
-
}, []).slice(0, resultLimit || MapUtils_1.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
|
|
475
|
-
return (0, lodash_1.sum)(b.data.values) - (0, lodash_1.sum)(a.data.values);
|
|
476
|
-
});
|
|
477
|
-
}, [data, resultLimit, roundedZoom]);
|
|
478
|
-
|
|
479
|
-
var _handleMapClick = React.useCallback(function (e, name, value, i) {
|
|
480
|
-
var _a, _b, _c; // retrieve metadata from the appropriate datum, indexed by i
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
var metadata = (_c = (_b = (_a = dataToRender[i]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {};
|
|
484
|
-
var payload = Object.keys(metadata).reduce(function (acc, curr) {
|
|
485
|
-
var key = "row.".concat(curr, ".value");
|
|
486
|
-
var val = String(metadata[curr]);
|
|
487
|
-
return Object.assign(Object.assign({}, acc), _defineProperty({}, key, val));
|
|
488
|
-
}, {
|
|
489
|
-
name: name,
|
|
490
|
-
value: String(value)
|
|
491
|
-
});
|
|
492
|
-
onMapClick({
|
|
493
|
-
e: e,
|
|
494
|
-
payload: payload
|
|
495
|
-
});
|
|
496
|
-
}, [dataToRender, onMapClick]);
|
|
497
|
-
|
|
498
|
-
return React.createElement(React.Fragment, null, dataToRender.map(function (datum, i) {
|
|
499
|
-
var colors = dynamicColors ? [dataToRender.map(function (obj) {
|
|
500
|
-
return (0, colorUtils_1.isColor)(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
|
|
501
|
-
})[i]] : staticColors;
|
|
502
|
-
|
|
503
|
-
var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
|
|
504
|
-
longitude = _datum$data$coordinat[0],
|
|
505
|
-
latitude = _datum$data$coordinat[1];
|
|
506
|
-
|
|
507
|
-
var bubbleSize = datum.data.values.map(function (value, index) {
|
|
508
|
-
return {
|
|
509
|
-
name: bubbleSizeFields[index],
|
|
510
|
-
value: value,
|
|
511
|
-
color: colors[index]
|
|
512
|
-
};
|
|
513
|
-
});
|
|
514
|
-
var additionalFields = bubbleLayer.metadata ? additionalTooltipFields.map(function (field) {
|
|
515
|
-
return {
|
|
516
|
-
name: field,
|
|
517
|
-
value: datum.data.metadata[field]
|
|
518
|
-
};
|
|
519
|
-
}) : [];
|
|
520
|
-
return React.createElement(exports.Bubble, {
|
|
521
|
-
key: String(i),
|
|
522
|
-
originalValues: datum.data.values,
|
|
523
|
-
valueRange: dataRange,
|
|
524
|
-
colors: colors,
|
|
525
|
-
themeColor: themeColor,
|
|
526
|
-
isPie: isPie,
|
|
527
|
-
longitude: longitude,
|
|
528
|
-
latitude: latitude,
|
|
529
|
-
bubbleSize: bubbleSize,
|
|
530
|
-
additionalFields: additionalFields,
|
|
531
|
-
map: map,
|
|
532
|
-
handleMapClick: function handleMapClick(e, name, value) {
|
|
533
|
-
return _handleMapClick(e, name, value, i);
|
|
534
|
-
}
|
|
535
|
-
});
|
|
536
|
-
}));
|
|
537
|
-
};
|
|
538
|
-
|
|
539
|
-
exports.default = BubbleLayer;
|
|
540
|
-
|
|
541
|
-
/***/ }),
|
|
542
|
-
/* 45 */
|
|
543
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
544
|
-
|
|
545
|
-
"use strict";
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
var _defineProperty = __webpack_require__(3);
|
|
549
|
-
|
|
550
|
-
var _slicedToArray = __webpack_require__(8);
|
|
551
|
-
|
|
552
|
-
var _toConsumableArray = __webpack_require__(2);
|
|
553
|
-
|
|
554
|
-
Object.defineProperty(exports, "__esModule", {
|
|
555
|
-
value: true
|
|
556
|
-
});
|
|
557
|
-
exports.formatMetadata = exports.compareBaseStyles = exports.getScaledOpacities = exports.getGlobalLayerBoundaries = exports.isValidLatLon = exports.bakeBubbleData = exports.sanitizeValues = exports.transposeArray = exports.matchBubbleSize = exports.getStaticColors = exports.getZoomLevelFromGeobin = exports.getZoomConstraintsFromTileConfig = exports.getMapStyle = exports.getTilePreset = exports.DEFAULT_OPACITY = exports.MAX_BUBBLE_RADIUS = exports.MIN_BUBBLE_RADIUS = exports.MAP_STYLE_VERSION_NUMBER = exports.DEFAULT_SERIES_COLORS = exports.DEFAULT_CLUSTER_COLOR = exports.DEFAULT_RESULT_LIMIT = exports.MIN_LONGITUDE = exports.MAX_LONGITUDE = exports.MIN_LATITUDE = exports.MAX_LATITUDE = void 0;
|
|
558
|
-
|
|
559
|
-
var lodash_1 = __webpack_require__(0);
|
|
560
|
-
|
|
561
|
-
var d3_scale_1 = __webpack_require__(46);
|
|
562
|
-
|
|
563
|
-
var chroma = __webpack_require__(47);
|
|
564
|
-
|
|
565
|
-
var colorUtils_1 = __webpack_require__(13);
|
|
566
|
-
|
|
567
|
-
var visualization_color_palettes_1 = __webpack_require__(48);
|
|
568
|
-
|
|
569
|
-
var types_1 = __webpack_require__(10);
|
|
570
|
-
|
|
571
|
-
var visualization_schemas_1 = __webpack_require__(7);
|
|
572
|
-
|
|
573
|
-
exports.MAX_LATITUDE = 90;
|
|
574
|
-
exports.MIN_LATITUDE = -90;
|
|
575
|
-
exports.MAX_LONGITUDE = 180;
|
|
576
|
-
exports.MIN_LONGITUDE = -180;
|
|
577
|
-
exports.DEFAULT_RESULT_LIMIT = 1000;
|
|
578
|
-
exports.DEFAULT_CLUSTER_COLOR = '#909090';
|
|
579
|
-
exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL; // MapLibre requires a map style specification number which is always 8
|
|
580
|
-
|
|
581
|
-
exports.MAP_STYLE_VERSION_NUMBER = 8; // currently using one [min, max] value set for bubbles across all zoom levels
|
|
582
|
-
// TODO: design choices on [min, max] bubble size for different zoom levels
|
|
583
|
-
|
|
584
|
-
exports.MIN_BUBBLE_RADIUS = 7.11; // 10px
|
|
585
|
-
|
|
586
|
-
exports.MAX_BUBBLE_RADIUS = 45.26; // 85px
|
|
587
|
-
|
|
588
|
-
exports.DEFAULT_OPACITY = 0.8;
|
|
589
|
-
var LONGITUDE = 'longitude';
|
|
590
|
-
var LATITUDE = 'latitude';
|
|
591
|
-
/**
|
|
592
|
-
* Construct a tile preset {key: config} by combining the default + custom tile configs
|
|
593
|
-
* Also returns the default tile config for each theme - light/dark
|
|
594
|
-
* @param {MapContextInterface} args
|
|
595
|
-
* @param {BaseTileConfig[]} args.defaultTileConfig
|
|
596
|
-
* @param {BaseTileConfig[]} args.customTileConfig
|
|
597
|
-
* @returns {Object} tile preset
|
|
598
|
-
*/
|
|
599
|
-
|
|
600
|
-
var getTilePreset = function getTilePreset(_ref) {
|
|
601
|
-
var _ref$defaultTileConfi = _ref.defaultTileConfig,
|
|
602
|
-
defaultTileConfig = _ref$defaultTileConfi === void 0 ? [] : _ref$defaultTileConfi,
|
|
603
|
-
_ref$customTileConfig = _ref.customTileConfig,
|
|
604
|
-
customTileConfig = _ref$customTileConfig === void 0 ? [] : _ref$customTileConfig;
|
|
605
|
-
|
|
606
|
-
var _a, _b;
|
|
607
|
-
|
|
608
|
-
var tilePreset = {};
|
|
609
|
-
var defaultTileLight = {};
|
|
610
|
-
var defaultTileDark = {};
|
|
611
|
-
var tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);
|
|
612
|
-
(0, lodash_1.forEach)(tileConfigs, function (tileConfig) {
|
|
613
|
-
var key = tileConfig === null || tileConfig === void 0 ? void 0 : tileConfig.key;
|
|
614
|
-
var updatedConfig = Object.assign(Object.assign({
|
|
615
|
-
theme: 'all'
|
|
616
|
-
}, tileConfig), {
|
|
617
|
-
version: exports.MAP_STYLE_VERSION_NUMBER
|
|
618
|
-
});
|
|
619
|
-
tilePreset[key] = updatedConfig;
|
|
620
|
-
});
|
|
621
|
-
|
|
622
|
-
if (defaultTileConfig.length > 0) {
|
|
623
|
-
defaultTileLight = (_a = defaultTileConfig.find(function (config) {
|
|
624
|
-
return config.theme === 'light';
|
|
625
|
-
})) !== null && _a !== void 0 ? _a : defaultTileConfig.find(function (config) {
|
|
626
|
-
return config.theme === undefined;
|
|
627
|
-
});
|
|
628
|
-
defaultTileDark = (_b = defaultTileConfig.find(function (config) {
|
|
629
|
-
return config.theme === 'dark';
|
|
630
|
-
})) !== null && _b !== void 0 ? _b : defaultTileConfig.find(function (config) {
|
|
631
|
-
return config.theme === undefined;
|
|
632
|
-
});
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
return {
|
|
636
|
-
tilePreset: tilePreset,
|
|
637
|
-
defaultTileLight: defaultTileLight,
|
|
638
|
-
defaultTileDark: defaultTileDark
|
|
639
|
-
};
|
|
640
|
-
};
|
|
641
|
-
|
|
642
|
-
exports.getTilePreset = getTilePreset;
|
|
643
|
-
/**
|
|
644
|
-
* Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.
|
|
645
|
-
* If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType
|
|
646
|
-
* Else return default tile config based on current theme
|
|
647
|
-
* @param {Object} args
|
|
648
|
-
* @param {BaseTileConfig[]} args.tilePreset
|
|
649
|
-
* @param {String} args.baseLayerTilerServer
|
|
650
|
-
* @param {String} args.baseLayerTileServerType
|
|
651
|
-
* @param {String} args.colorScheme
|
|
652
|
-
* @param {BaseTileConfig} args.defaultTileDark
|
|
653
|
-
* @param {BaseTileConfig} args.defaultTileLight
|
|
654
|
-
* @returns {BaseTileConfig} mapStyle
|
|
655
|
-
*/
|
|
656
|
-
|
|
657
|
-
var getMapStyle = function getMapStyle(_ref2) {
|
|
658
|
-
var showBaseLayer = _ref2.showBaseLayer,
|
|
659
|
-
_ref2$baseLayerTileSe = _ref2.baseLayerTileServer,
|
|
660
|
-
baseLayerTileServer = _ref2$baseLayerTileSe === void 0 ? '' : _ref2$baseLayerTileSe,
|
|
661
|
-
_ref2$baseLayerTileSe2 = _ref2.baseLayerTileServerType,
|
|
662
|
-
baseLayerTileServerType = _ref2$baseLayerTileSe2 === void 0 ? '' : _ref2$baseLayerTileSe2,
|
|
663
|
-
_ref2$tilePreset = _ref2.tilePreset,
|
|
664
|
-
tilePreset = _ref2$tilePreset === void 0 ? {} : _ref2$tilePreset,
|
|
665
|
-
_ref2$colorScheme = _ref2.colorScheme,
|
|
666
|
-
colorScheme = _ref2$colorScheme === void 0 ? 'light' : _ref2$colorScheme,
|
|
667
|
-
_ref2$defaultTileLigh = _ref2.defaultTileLight,
|
|
668
|
-
defaultTileLight = _ref2$defaultTileLigh === void 0 ? {} : _ref2$defaultTileLigh,
|
|
669
|
-
_ref2$defaultTileDark = _ref2.defaultTileDark,
|
|
670
|
-
defaultTileDark = _ref2$defaultTileDark === void 0 ? {} : _ref2$defaultTileDark;
|
|
671
|
-
|
|
672
|
-
if (!showBaseLayer) {
|
|
673
|
-
return {
|
|
674
|
-
version: exports.MAP_STYLE_VERSION_NUMBER,
|
|
675
|
-
sources: {
|
|
676
|
-
'base-tiles': {
|
|
677
|
-
type: 'raster',
|
|
678
|
-
tiles: ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='],
|
|
679
|
-
tileSize: 256
|
|
680
|
-
}
|
|
681
|
-
},
|
|
682
|
-
layers: [{
|
|
683
|
-
id: 'base-layer',
|
|
684
|
-
type: 'raster',
|
|
685
|
-
source: 'base-tiles',
|
|
686
|
-
minzoom: 0,
|
|
687
|
-
maxzoom: 22
|
|
688
|
-
}]
|
|
689
|
-
};
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
if (baseLayerTileServer && tilePreset[baseLayerTileServer] && (tilePreset[baseLayerTileServer].theme === colorScheme || tilePreset[baseLayerTileServer].theme === 'all')) {
|
|
693
|
-
return tilePreset[baseLayerTileServer];
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
if (baseLayerTileServer && baseLayerTileServerType) {
|
|
697
|
-
var tiles = [];
|
|
698
|
-
/**
|
|
699
|
-
* Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain
|
|
700
|
-
* Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'
|
|
701
|
-
* Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers
|
|
702
|
-
*/
|
|
703
|
-
|
|
704
|
-
if (baseLayerTileServer.match(/^(https?):\/\/{(s|S)}\../)) {
|
|
705
|
-
/**
|
|
706
|
-
* sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains
|
|
707
|
-
* In order to preserve this behavior during conversion to splunk.map,
|
|
708
|
-
* if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains
|
|
709
|
-
* TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']
|
|
710
|
-
*/
|
|
711
|
-
tiles = [baseLayerTileServer.replace(/{(s|S)}/, 'a'), baseLayerTileServer.replace(/{(s|S)}/, 'b'), baseLayerTileServer.replace(/{(s|S)}/, 'c')];
|
|
712
|
-
} else {
|
|
713
|
-
tiles = [baseLayerTileServer];
|
|
714
|
-
} // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
var mapStyle = {
|
|
718
|
-
version: exports.MAP_STYLE_VERSION_NUMBER,
|
|
719
|
-
sources: {
|
|
720
|
-
'base-tiles': {
|
|
721
|
-
type: baseLayerTileServerType,
|
|
722
|
-
tiles: tiles,
|
|
723
|
-
tileSize: 256
|
|
724
|
-
}
|
|
725
|
-
},
|
|
726
|
-
layers: [{
|
|
727
|
-
id: 'base-layer',
|
|
728
|
-
type: 'raster',
|
|
729
|
-
source: 'base-tiles',
|
|
730
|
-
minzoom: 0,
|
|
731
|
-
maxzoom: 24 // https://maplibre.org/maplibre-gl-js-docs/api/map/
|
|
732
|
-
|
|
733
|
-
}]
|
|
734
|
-
};
|
|
735
|
-
return mapStyle;
|
|
736
|
-
} // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
|
|
740
|
-
};
|
|
741
|
-
|
|
742
|
-
exports.getMapStyle = getMapStyle;
|
|
743
|
-
|
|
744
|
-
var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig, baseLayerTileServer) {
|
|
745
|
-
var sources = tileConfig.sources,
|
|
746
|
-
layers = tileConfig.layers;
|
|
747
|
-
var matchedBaseLayerTileServer = false; // check sources for minzoom maxzoom first
|
|
748
|
-
|
|
749
|
-
var sourceKeys = Object.keys(sources);
|
|
750
|
-
|
|
751
|
-
for (var i = 0; i < sourceKeys.length; i += 1) {
|
|
752
|
-
var _sources$sourceKeys$i = sources[sourceKeys[i]],
|
|
753
|
-
minzoom = _sources$sourceKeys$i.minzoom,
|
|
754
|
-
maxzoom = _sources$sourceKeys$i.maxzoom;
|
|
755
|
-
|
|
756
|
-
if (baseLayerTileServer && sources[sourceKeys[i]].tiles.indexOf(baseLayerTileServer) !== -1) {
|
|
757
|
-
matchedBaseLayerTileServer = true;
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && (0, lodash_1.isNumber)(minzoom) && (0, lodash_1.isNumber)(maxzoom)) {
|
|
761
|
-
return {
|
|
762
|
-
minZoom: minzoom,
|
|
763
|
-
maxZoom: maxzoom
|
|
764
|
-
};
|
|
1
|
+
/* Copyright © 2020 Splunk Inc.
|
|
2
|
+
SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or
|
|
3
|
+
in part without a valid written license from Splunk Inc. is PROHIBITED. */
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __defProps = Object.defineProperties;
|
|
7
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
11
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
14
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __spreadValues = (a, b) => {
|
|
16
|
+
for (var prop in b || (b = {}))
|
|
17
|
+
if (__hasOwnProp.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
if (__getOwnPropSymbols)
|
|
20
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
21
|
+
if (__propIsEnum.call(b, prop))
|
|
22
|
+
__defNormalProp(a, prop, b[prop]);
|
|
765
23
|
}
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
};
|
|
24
|
+
return a;
|
|
25
|
+
};
|
|
26
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
|
+
var __objRest = (source, exclude) => {
|
|
28
|
+
var target = {};
|
|
29
|
+
for (var prop in source)
|
|
30
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
if (source != null && __getOwnPropSymbols)
|
|
33
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
34
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
35
|
+
target[prop] = source[prop];
|
|
779
36
|
}
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
return {
|
|
784
|
-
minZoom: 0,
|
|
785
|
-
maxZoom: 24
|
|
786
|
-
};
|
|
37
|
+
return target;
|
|
787
38
|
};
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
|
|
792
|
-
var _a;
|
|
793
|
-
|
|
794
|
-
if (!geobinStr) {
|
|
795
|
-
return null;
|
|
796
|
-
} // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
var geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;
|
|
800
|
-
var match = geobinPattern.exec(geobinStr);
|
|
801
|
-
return (_a = (match === null || match === void 0 ? void 0 : match.length) && parseInt(match[1], 10)) !== null && _a !== void 0 ? _a : null;
|
|
39
|
+
var __export = (target, all) => {
|
|
40
|
+
for (var name in all)
|
|
41
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
802
42
|
};
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
return [exports.DEFAULT_CLUSTER_COLOR];
|
|
43
|
+
var __copyProps = (to, from, except, desc) => {
|
|
44
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
45
|
+
for (let key of __getOwnPropNames(from))
|
|
46
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
47
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
809
48
|
}
|
|
810
|
-
|
|
811
|
-
if (!colorArray || !colorArray.length) {
|
|
812
|
-
return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
|
|
813
|
-
return exports.DEFAULT_SERIES_COLORS[i];
|
|
814
|
-
});
|
|
815
|
-
} // loop through colorArray to pick the first $colorCount colors
|
|
816
|
-
// start from begining again if colorCount > colorArray.length
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
|
|
820
|
-
return (0, colorUtils_1.isColor)(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : exports.DEFAULT_CLUSTER_COLOR;
|
|
821
|
-
});
|
|
49
|
+
return to;
|
|
822
50
|
};
|
|
51
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
52
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
53
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
54
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
55
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
56
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
57
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
58
|
+
mod
|
|
59
|
+
));
|
|
60
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
61
|
+
|
|
62
|
+
// src/common/utils/mapUtils.ts
|
|
63
|
+
var mapUtils_exports = {};
|
|
64
|
+
__export(mapUtils_exports, {
|
|
65
|
+
columnsNullToZeros: () => columnsNullToZeros
|
|
66
|
+
});
|
|
67
|
+
module.exports = __toCommonJS(mapUtils_exports);
|
|
823
68
|
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
69
|
+
// esm-externals:@splunk/visualization-encoding/utils/types
|
|
70
|
+
var types_exports = {};
|
|
71
|
+
__export(types_exports, {
|
|
72
|
+
default: () => types_default
|
|
73
|
+
});
|
|
74
|
+
var defaultImport = __toESM(require("@splunk/visualization-encoding/utils/types"));
|
|
75
|
+
__reExport(types_exports, require("@splunk/visualization-encoding/utils/types"));
|
|
76
|
+
var types_default = "default" in defaultImport ? defaultImport.default : defaultImport;
|
|
77
|
+
|
|
78
|
+
// esm-externals:@splunk/visualization-encoding/utils/dsl
|
|
79
|
+
var dsl_exports = {};
|
|
80
|
+
__export(dsl_exports, {
|
|
81
|
+
default: () => dsl_default
|
|
82
|
+
});
|
|
83
|
+
var defaultImport2 = __toESM(require("@splunk/visualization-encoding/utils/dsl"));
|
|
84
|
+
__reExport(dsl_exports, require("@splunk/visualization-encoding/utils/dsl"));
|
|
85
|
+
var dsl_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
|
|
86
|
+
|
|
87
|
+
// esm-externals:@splunk/visualizations-shared/hocUtils
|
|
88
|
+
var hocUtils_exports = {};
|
|
89
|
+
__export(hocUtils_exports, {
|
|
90
|
+
default: () => hocUtils_default
|
|
91
|
+
});
|
|
92
|
+
var defaultImport3 = __toESM(require("@splunk/visualizations-shared/hocUtils"));
|
|
93
|
+
__reExport(hocUtils_exports, require("@splunk/visualizations-shared/hocUtils"));
|
|
94
|
+
var hocUtils_default = "default" in defaultImport3 ? defaultImport3.default : defaultImport3;
|
|
95
|
+
|
|
96
|
+
// esm-externals:@splunk/visualizations-shared/JSONSchemaUtils
|
|
97
|
+
var JSONSchemaUtils_exports = {};
|
|
98
|
+
__export(JSONSchemaUtils_exports, {
|
|
99
|
+
default: () => JSONSchemaUtils_default
|
|
100
|
+
});
|
|
101
|
+
var defaultImport4 = __toESM(require("@splunk/visualizations-shared/JSONSchemaUtils"));
|
|
102
|
+
__reExport(JSONSchemaUtils_exports, require("@splunk/visualizations-shared/JSONSchemaUtils"));
|
|
103
|
+
var JSONSchemaUtils_default = "default" in defaultImport4 ? defaultImport4.default : defaultImport4;
|
|
104
|
+
|
|
105
|
+
// esm-externals:react
|
|
106
|
+
var react_exports = {};
|
|
107
|
+
__export(react_exports, {
|
|
108
|
+
default: () => react_default
|
|
109
|
+
});
|
|
110
|
+
var defaultImport5 = __toESM(require("react"));
|
|
111
|
+
__reExport(react_exports, require("react"));
|
|
112
|
+
var react_default = "default" in defaultImport5 ? defaultImport5.default : defaultImport5;
|
|
113
|
+
|
|
114
|
+
// esm-externals:styled-components
|
|
115
|
+
var styled_components_exports = {};
|
|
116
|
+
__export(styled_components_exports, {
|
|
117
|
+
default: () => styled_components_default
|
|
118
|
+
});
|
|
119
|
+
var defaultImport6 = __toESM(require("styled-components"));
|
|
120
|
+
__reExport(styled_components_exports, require("styled-components"));
|
|
121
|
+
var styled_components_default = "default" in defaultImport6 ? defaultImport6.default : defaultImport6;
|
|
122
|
+
|
|
123
|
+
// esm-externals:lodash
|
|
124
|
+
var lodash_exports = {};
|
|
125
|
+
__export(lodash_exports, {
|
|
126
|
+
default: () => lodash_default
|
|
127
|
+
});
|
|
128
|
+
var defaultImport7 = __toESM(require("lodash"));
|
|
129
|
+
__reExport(lodash_exports, require("lodash"));
|
|
130
|
+
var lodash_default = "default" in defaultImport7 ? defaultImport7.default : defaultImport7;
|
|
131
|
+
|
|
132
|
+
// esm-externals:@splunk/visualizations-shared/colorUtils
|
|
133
|
+
var colorUtils_exports = {};
|
|
134
|
+
__export(colorUtils_exports, {
|
|
135
|
+
default: () => colorUtils_default
|
|
136
|
+
});
|
|
137
|
+
var defaultImport8 = __toESM(require("@splunk/visualizations-shared/colorUtils"));
|
|
138
|
+
__reExport(colorUtils_exports, require("@splunk/visualizations-shared/colorUtils"));
|
|
139
|
+
var colorUtils_default = "default" in defaultImport8 ? defaultImport8.default : defaultImport8;
|
|
140
|
+
|
|
141
|
+
// esm-externals:d3-scale
|
|
142
|
+
var d3_scale_exports = {};
|
|
143
|
+
__export(d3_scale_exports, {
|
|
144
|
+
default: () => d3_scale_default
|
|
145
|
+
});
|
|
146
|
+
var defaultImport9 = __toESM(require("d3-scale"));
|
|
147
|
+
__reExport(d3_scale_exports, require("d3-scale"));
|
|
148
|
+
var d3_scale_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
|
|
149
|
+
|
|
150
|
+
// esm-externals:chroma-js
|
|
151
|
+
var chroma_js_exports = {};
|
|
152
|
+
__export(chroma_js_exports, {
|
|
153
|
+
default: () => chroma_js_default
|
|
154
|
+
});
|
|
155
|
+
var defaultImport10 = __toESM(require("chroma-js"));
|
|
156
|
+
__reExport(chroma_js_exports, require("chroma-js"));
|
|
157
|
+
var chroma_js_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
|
|
158
|
+
|
|
159
|
+
// esm-externals:@splunk/visualization-color-palettes
|
|
160
|
+
var visualization_color_palettes_exports = {};
|
|
161
|
+
__export(visualization_color_palettes_exports, {
|
|
162
|
+
default: () => visualization_color_palettes_default
|
|
163
|
+
});
|
|
164
|
+
var defaultImport11 = __toESM(require("@splunk/visualization-color-palettes"));
|
|
165
|
+
__reExport(visualization_color_palettes_exports, require("@splunk/visualization-color-palettes"));
|
|
166
|
+
var visualization_color_palettes_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
|
|
167
|
+
|
|
168
|
+
// esm-externals:@splunk/visualization-schemas
|
|
169
|
+
var visualization_schemas_exports = {};
|
|
170
|
+
__export(visualization_schemas_exports, {
|
|
171
|
+
default: () => visualization_schemas_default
|
|
172
|
+
});
|
|
173
|
+
var defaultImport12 = __toESM(require("@splunk/visualization-schemas"));
|
|
174
|
+
__reExport(visualization_schemas_exports, require("@splunk/visualization-schemas"));
|
|
175
|
+
var visualization_schemas_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
|
|
176
|
+
|
|
177
|
+
// src/Map/PureMap/MapUtils.ts
|
|
178
|
+
var MIN_BUBBLE_RADIUS = 7.11;
|
|
179
|
+
var MAX_BUBBLE_RADIUS = 45.26;
|
|
180
|
+
var matchBubbleSize = (dataRange, data) => {
|
|
181
|
+
const size = (0, d3_scale_exports.scalePow)().exponent(0.2).domain(dataRange).range([MIN_BUBBLE_RADIUS, MAX_BUBBLE_RADIUS])(
|
|
182
|
+
data
|
|
183
|
+
);
|
|
184
|
+
if (size > MAX_BUBBLE_RADIUS) {
|
|
185
|
+
return MAX_BUBBLE_RADIUS;
|
|
831
186
|
}
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
return exports.MIN_BUBBLE_RADIUS;
|
|
187
|
+
if (size < MIN_BUBBLE_RADIUS) {
|
|
188
|
+
return MIN_BUBBLE_RADIUS;
|
|
835
189
|
}
|
|
836
|
-
|
|
837
190
|
return size;
|
|
838
191
|
};
|
|
839
192
|
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
var
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
if (layer.bubbleSize.length > 1) {
|
|
902
|
-
isPie = true;
|
|
903
|
-
}
|
|
904
|
-
} else {
|
|
905
|
-
transposedBubbleSize = layer.bubbleSize.map(function (n) {
|
|
906
|
-
return [n];
|
|
907
|
-
});
|
|
908
|
-
transposedSanitizedBubbleSize = sanitizedBubbleSize.map(function (n) {
|
|
909
|
-
return [n];
|
|
910
|
-
});
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
if (!transposedBubbleSize || !transposedBubbleSize.length) {
|
|
914
|
-
return null;
|
|
915
|
-
}
|
|
916
|
-
|
|
917
|
-
var data = layer.latitude.map(function (lat, i) {
|
|
918
|
-
return {
|
|
919
|
-
zoom: (0, exports.getZoomLevelFromGeobin)(layer.geobin[i]),
|
|
920
|
-
values: transposedBubbleSize[i],
|
|
921
|
-
sanitizedValues: transposedSanitizedBubbleSize[i],
|
|
922
|
-
coordinates: [layer.longitude[i], lat],
|
|
923
|
-
metadata: layer.metadata ? layer.metadata[i] : {}
|
|
924
|
-
};
|
|
925
|
-
}).filter(function (d) {
|
|
926
|
-
return Boolean(d.values);
|
|
927
|
-
}); // compute the min/max value to encode min/max pie or bubble size
|
|
928
|
-
|
|
929
|
-
var min = (0, lodash_1.sum)(transposedSanitizedBubbleSize[0]);
|
|
930
|
-
var max = (0, lodash_1.sum)(transposedSanitizedBubbleSize[1]);
|
|
931
|
-
transposedSanitizedBubbleSize.forEach(function (row) {
|
|
932
|
-
var bubbleSize = (0, lodash_1.sum)(row);
|
|
933
|
-
max = bubbleSize > max ? bubbleSize : max;
|
|
934
|
-
min = bubbleSize < min ? bubbleSize : min;
|
|
935
|
-
});
|
|
936
|
-
return {
|
|
937
|
-
data: data,
|
|
938
|
-
dataRange: [min, max],
|
|
939
|
-
isPie: isPie,
|
|
940
|
-
resultLimit: layer.resultLimit,
|
|
941
|
-
bubbleSizeFields: layer.bubbleSizeFields
|
|
942
|
-
};
|
|
943
|
-
};
|
|
944
|
-
|
|
945
|
-
exports.bakeBubbleData = bakeBubbleData;
|
|
946
|
-
|
|
947
|
-
var isValidLatLon = function isValidLatLon(latlon) {
|
|
948
|
-
if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {
|
|
949
|
-
return false;
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
var _latlon = _slicedToArray(latlon, 2),
|
|
953
|
-
lat = _latlon[0],
|
|
954
|
-
lon = _latlon[1];
|
|
955
|
-
|
|
956
|
-
if (!(0, types_1.isNumber)(lat) || !(lat >= exports.MIN_LATITUDE && lat <= exports.MAX_LATITUDE)) {
|
|
957
|
-
return false;
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
if (!(0, types_1.isNumber)(lon) || !(lon >= exports.MIN_LONGITUDE && lon <= exports.MAX_LONGITUDE)) {
|
|
961
|
-
return false;
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
return true;
|
|
965
|
-
};
|
|
966
|
-
|
|
967
|
-
exports.isValidLatLon = isValidLatLon;
|
|
968
|
-
/**
|
|
969
|
-
* Returns a list of all lat or lon coordinates used in a specified layer
|
|
970
|
-
* @param {LayerType[]} layer
|
|
971
|
-
* @param {string} field
|
|
972
|
-
* @returns {number[]} list of lat coordinates or lon coordinates
|
|
973
|
-
*/
|
|
974
|
-
|
|
975
|
-
var getLatOrLonCoordinates = function getLatOrLonCoordinates(layer, field) {
|
|
976
|
-
var getClusterValues = function getClusterValues(clusterLayer) {
|
|
977
|
-
return (0, lodash_1.get)(clusterLayer, field, []).slice(0, clusterLayer.type === visualization_schemas_1.LAYER_TYPE.Marker && clusterLayer.resultLimit ? clusterLayer.resultLimit : exports.DEFAULT_RESULT_LIMIT);
|
|
978
|
-
};
|
|
979
|
-
|
|
980
|
-
var getChoroplethValues = function getChoroplethValues(choroplethLayer) {
|
|
981
|
-
var slicedGeomList = choroplethLayer.geom.slice(0, choroplethLayer.resultLimit);
|
|
982
|
-
var flatCoordinates = slicedGeomList.flatMap(function (geomObject) {
|
|
983
|
-
return geomObject.coordinates.flat(2);
|
|
984
|
-
});
|
|
985
|
-
return flatCoordinates.map(function (coord) {
|
|
986
|
-
return coord[field === LONGITUDE ? 0 : 1];
|
|
987
|
-
});
|
|
988
|
-
};
|
|
989
|
-
|
|
990
|
-
return layer.type === visualization_schemas_1.LAYER_TYPE.Choropleth ? getChoroplethValues(layer) : getClusterValues(layer);
|
|
991
|
-
};
|
|
992
|
-
/**
|
|
993
|
-
* Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles
|
|
994
|
-
* @param {LayerType[]} layers
|
|
995
|
-
* @returns {LngLatBoundsLike}
|
|
996
|
-
*/
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
|
|
1000
|
-
var isLayerValid = function isLayerValid(field) {
|
|
1001
|
-
return layers.every(function (layer) {
|
|
1002
|
-
return layer[field] || layer.geom;
|
|
1003
|
-
});
|
|
1004
|
-
};
|
|
1005
|
-
|
|
1006
|
-
var getDefaultMax = function getDefaultMax(field) {
|
|
1007
|
-
return field === LONGITUDE ? exports.MAX_LONGITUDE : exports.MAX_LATITUDE;
|
|
1008
|
-
};
|
|
1009
|
-
|
|
1010
|
-
var getDefaultMin = function getDefaultMin(field) {
|
|
1011
|
-
return field === LONGITUDE ? exports.MIN_LONGITUDE : exports.MIN_LATITUDE;
|
|
1012
|
-
};
|
|
1013
|
-
|
|
1014
|
-
if (!layers || !Array.isArray(layers) || !layers.length) {
|
|
1015
|
-
return null;
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
var getMin = function getMin(field) {
|
|
1019
|
-
if (!isLayerValid(field)) {
|
|
1020
|
-
return getDefaultMin(field);
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
return layers.reduce(function (prevVal, layer) {
|
|
1024
|
-
var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(function (x) {
|
|
1025
|
-
return +x;
|
|
1026
|
-
});
|
|
1027
|
-
return (0, lodash_1.min)([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
|
|
1028
|
-
}, getDefaultMax(field));
|
|
1029
|
-
};
|
|
1030
|
-
|
|
1031
|
-
var getMax = function getMax(field) {
|
|
1032
|
-
if (!isLayerValid(field)) {
|
|
1033
|
-
return getDefaultMax(field);
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
return layers.reduce(function (prevVal, layer) {
|
|
1037
|
-
var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(Number);
|
|
1038
|
-
return (0, lodash_1.max)([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
|
|
1039
|
-
}, getDefaultMin(field));
|
|
1040
|
-
};
|
|
1041
|
-
|
|
1042
|
-
return [[getMin(LONGITUDE), getMin(LATITUDE)], [getMax(LONGITUDE), getMax(LATITUDE)]];
|
|
1043
|
-
};
|
|
1044
|
-
|
|
1045
|
-
exports.getGlobalLayerBoundaries = getGlobalLayerBoundaries;
|
|
1046
|
-
|
|
1047
|
-
var getScaledOpacities = function getScaledOpacities(colors, cfgOpacity) {
|
|
1048
|
-
// extract opacity information from 8 digit hex codes
|
|
1049
|
-
var opacities = colors === null || colors === void 0 ? void 0 : colors.map(function (color) {
|
|
1050
|
-
var _a;
|
|
1051
|
-
|
|
1052
|
-
return (color === null || color === void 0 ? void 0 : color.length) === 9 ? (_a = chroma(color).alpha()) !== null && _a !== void 0 ? _a : 1 : 1;
|
|
1053
|
-
}); // opacity cannot be greater than configured opacity
|
|
1054
|
-
|
|
1055
|
-
return opacities === null || opacities === void 0 ? void 0 : opacities.map(function (opacity) {
|
|
1056
|
-
return opacity * cfgOpacity;
|
|
1057
|
-
});
|
|
1058
|
-
};
|
|
1059
|
-
|
|
1060
|
-
exports.getScaledOpacities = getScaledOpacities;
|
|
1061
|
-
|
|
1062
|
-
var compareBaseStyles = function compareBaseStyles(curr, next) {
|
|
1063
|
-
var _a, _b, _c, _d;
|
|
1064
|
-
|
|
1065
|
-
var currBaseLayer = (_a = curr === null || curr === void 0 ? void 0 : curr.layers) === null || _a === void 0 ? void 0 : _a.find(function (layer) {
|
|
1066
|
-
return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
|
|
1067
|
-
});
|
|
1068
|
-
var nextBaseLayer = (_b = next === null || next === void 0 ? void 0 : next.layers) === null || _b === void 0 ? void 0 : _b.find(function (layer) {
|
|
1069
|
-
return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
|
|
1070
|
-
});
|
|
1071
|
-
var currBaseSource = (0, lodash_1.get)(curr === null || curr === void 0 ? void 0 : curr.sources, (_c = currBaseLayer === null || currBaseLayer === void 0 ? void 0 : currBaseLayer.source) !== null && _c !== void 0 ? _c : '');
|
|
1072
|
-
var nextBaseSource = (0, lodash_1.get)(next === null || next === void 0 ? void 0 : next.sources, (_d = nextBaseLayer === null || nextBaseLayer === void 0 ? void 0 : nextBaseLayer.source) !== null && _d !== void 0 ? _d : '');
|
|
1073
|
-
|
|
1074
|
-
if (!currBaseLayer || !nextBaseLayer || !currBaseSource || !nextBaseSource) {
|
|
1075
|
-
return false;
|
|
193
|
+
// esm-externals:maplibre-gl
|
|
194
|
+
var maplibre_gl_exports = {};
|
|
195
|
+
__export(maplibre_gl_exports, {
|
|
196
|
+
default: () => maplibre_gl_default
|
|
197
|
+
});
|
|
198
|
+
var defaultImport13 = __toESM(require("maplibre-gl"));
|
|
199
|
+
__reExport(maplibre_gl_exports, require("maplibre-gl"));
|
|
200
|
+
var maplibre_gl_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
|
|
201
|
+
|
|
202
|
+
// esm-externals:@splunk/react-ui/Popover
|
|
203
|
+
var Popover_exports = {};
|
|
204
|
+
__export(Popover_exports, {
|
|
205
|
+
default: () => Popover_default
|
|
206
|
+
});
|
|
207
|
+
var defaultImport14 = __toESM(require("@splunk/react-ui/Popover"));
|
|
208
|
+
__reExport(Popover_exports, require("@splunk/react-ui/Popover"));
|
|
209
|
+
var Popover_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
|
|
210
|
+
|
|
211
|
+
// esm-externals:@splunk/ui-utils/i18n
|
|
212
|
+
var i18n_exports = {};
|
|
213
|
+
__export(i18n_exports, {
|
|
214
|
+
default: () => i18n_default
|
|
215
|
+
});
|
|
216
|
+
var defaultImport15 = __toESM(require("@splunk/ui-utils/i18n"));
|
|
217
|
+
__reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
|
|
218
|
+
var i18n_default = "default" in defaultImport15 ? defaultImport15.default : defaultImport15;
|
|
219
|
+
|
|
220
|
+
// src/Map/PureMap/Tooltip.tsx
|
|
221
|
+
var StyledPopover = styled_components_default(Popover_default)`
|
|
222
|
+
width: 250px;
|
|
223
|
+
font-size: 12px;
|
|
224
|
+
`;
|
|
225
|
+
var StyledTable = styled_components_default.table`
|
|
226
|
+
margin: 2px 6px 2px 6px;
|
|
227
|
+
width: calc(100% - 12px);
|
|
228
|
+
`;
|
|
229
|
+
var StyledTitleColumn = styled_components_default.td`
|
|
230
|
+
opacity: 0.85;
|
|
231
|
+
`;
|
|
232
|
+
var StyledValueColumn = styled_components_default.td`
|
|
233
|
+
text-align: right;
|
|
234
|
+
`;
|
|
235
|
+
var StyledColorBlock = styled_components_default.div`
|
|
236
|
+
background-color: ${(props) => props.color};
|
|
237
|
+
display: inline-block;
|
|
238
|
+
margin-right: 4px;
|
|
239
|
+
border-radius: 2px;
|
|
240
|
+
width: 6px;
|
|
241
|
+
height: 11px;
|
|
242
|
+
transform: translateY(1px);
|
|
243
|
+
`;
|
|
244
|
+
var convertDegToDMS = (decimalDegree, type) => {
|
|
245
|
+
const truncate = (n) => n > 0 ? Math.floor(n) : Math.ceil(n);
|
|
246
|
+
const absoluteDegree = Math.abs(decimalDegree);
|
|
247
|
+
let degrees = truncate(absoluteDegree);
|
|
248
|
+
let minutes = truncate((absoluteDegree - degrees) * 60);
|
|
249
|
+
let seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
|
|
250
|
+
if (seconds === 60) {
|
|
251
|
+
minutes += 1;
|
|
252
|
+
seconds = 0;
|
|
1076
253
|
}
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
exports.compareBaseStyles = compareBaseStyles;
|
|
1082
|
-
|
|
1083
|
-
var formatMetadata = function formatMetadata(choroplethLayer, i) {
|
|
1084
|
-
if (!choroplethLayer || !choroplethLayer.areaIds || !choroplethLayer.areaValues) return {};
|
|
1085
|
-
if (i >= choroplethLayer.areaIds.length) return {};
|
|
1086
|
-
var metadata = choroplethLayer.metadata ? choroplethLayer.metadata[i] : {};
|
|
1087
|
-
var name = choroplethLayer.areaIds[i];
|
|
1088
|
-
var value = choroplethLayer.areaValues[i];
|
|
1089
|
-
var base = {
|
|
1090
|
-
name: name,
|
|
1091
|
-
value: String(value)
|
|
1092
|
-
};
|
|
1093
|
-
return Object.keys(metadata).reduce(function (result, curr) {
|
|
1094
|
-
var key = "row.".concat(curr, ".value");
|
|
1095
|
-
var val = (0, lodash_1.isObject)(metadata[curr]) ? JSON.stringify(metadata[curr]) : String(metadata[curr]);
|
|
1096
|
-
return Object.assign(Object.assign({}, result), _defineProperty({}, key, val));
|
|
1097
|
-
}, base);
|
|
1098
|
-
};
|
|
1099
|
-
|
|
1100
|
-
exports.formatMetadata = formatMetadata;
|
|
1101
|
-
|
|
1102
|
-
/***/ }),
|
|
1103
|
-
/* 46 */
|
|
1104
|
-
/***/ (function(module, exports) {
|
|
1105
|
-
|
|
1106
|
-
module.exports = require("d3-scale");
|
|
1107
|
-
|
|
1108
|
-
/***/ }),
|
|
1109
|
-
/* 47 */
|
|
1110
|
-
/***/ (function(module, exports) {
|
|
1111
|
-
|
|
1112
|
-
module.exports = require("chroma-js");
|
|
1113
|
-
|
|
1114
|
-
/***/ }),
|
|
1115
|
-
/* 48 */
|
|
1116
|
-
/***/ (function(module, exports) {
|
|
1117
|
-
|
|
1118
|
-
module.exports = require("@splunk/visualization-color-palettes");
|
|
1119
|
-
|
|
1120
|
-
/***/ }),
|
|
1121
|
-
/* 49 */
|
|
1122
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1123
|
-
|
|
1124
|
-
"use strict";
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
var _slicedToArray = __webpack_require__(8);
|
|
1128
|
-
|
|
1129
|
-
var __rest = this && this.__rest || function (s, e) {
|
|
1130
|
-
var t = {};
|
|
1131
|
-
|
|
1132
|
-
for (var p in s) {
|
|
1133
|
-
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
254
|
+
if (minutes === 60) {
|
|
255
|
+
degrees += 1;
|
|
256
|
+
minutes = 0;
|
|
1134
257
|
}
|
|
1135
|
-
|
|
1136
|
-
if (
|
|
1137
|
-
|
|
258
|
+
let direction;
|
|
259
|
+
if (type === "longitude") {
|
|
260
|
+
direction = decimalDegree < 0 ? "W" : "E";
|
|
261
|
+
} else if (type === "latitude") {
|
|
262
|
+
direction = decimalDegree < 0 ? "S" : "N";
|
|
1138
263
|
}
|
|
1139
|
-
return
|
|
264
|
+
return `${degrees}\xB0 ${minutes}' ${seconds}" ${direction}`;
|
|
1140
265
|
};
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
var
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
266
|
+
var Tooltip = ({
|
|
267
|
+
open,
|
|
268
|
+
anchor,
|
|
269
|
+
latitude,
|
|
270
|
+
longitude,
|
|
271
|
+
areaId,
|
|
272
|
+
areaValue,
|
|
273
|
+
additionalFields = []
|
|
274
|
+
}) => /* @__PURE__ */ react_exports.createElement(
|
|
275
|
+
StyledPopover,
|
|
276
|
+
{
|
|
277
|
+
open,
|
|
278
|
+
animation: false,
|
|
279
|
+
anchor,
|
|
280
|
+
"data-test": "map-marker-tooltip",
|
|
281
|
+
defaultPlacement: "above"
|
|
282
|
+
},
|
|
283
|
+
/* @__PURE__ */ react_exports.createElement(StyledTable, null, /* @__PURE__ */ react_exports.createElement("tbody", null, areaId && areaValue && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "area-id" }, areaId), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "area-value" }, areaValue)), latitude && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Latitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "latitude" }, convertDegToDMS(latitude, "latitude"))), longitude && /* @__PURE__ */ react_exports.createElement("tr", null, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, null, (0, i18n_exports._)("Longitude")), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "longitude" }, convertDegToDMS(longitude, "longitude"))), additionalFields.filter(({ value }) => value && String(value) !== "0").map(({ name, value, color }, index) => /* @__PURE__ */ react_exports.createElement("tr", { key: String(index) }, /* @__PURE__ */ react_exports.createElement(StyledTitleColumn, { "data-test": "field-title" }, color ? /* @__PURE__ */ react_exports.createElement(StyledColorBlock, { "data-test": "field-color", color }) : null, name), /* @__PURE__ */ react_exports.createElement(StyledValueColumn, { "data-test": "field-value" }, value)))))
|
|
284
|
+
);
|
|
285
|
+
var Tooltip_default = Tooltip;
|
|
286
|
+
|
|
287
|
+
// src/Map/PureMap/MarkerWrapper.tsx
|
|
288
|
+
var MarkerWrapper = (_a) => {
|
|
289
|
+
var _b = _a, {
|
|
290
|
+
longitude,
|
|
291
|
+
latitude,
|
|
292
|
+
areaId,
|
|
293
|
+
areaValue,
|
|
294
|
+
additionalFields = [],
|
|
295
|
+
map,
|
|
296
|
+
isChoroplethTooltipOpen,
|
|
297
|
+
children
|
|
298
|
+
} = _b, otherProps = __objRest(_b, [
|
|
299
|
+
"longitude",
|
|
300
|
+
"latitude",
|
|
301
|
+
"areaId",
|
|
302
|
+
"areaValue",
|
|
303
|
+
"additionalFields",
|
|
304
|
+
"map",
|
|
305
|
+
"isChoroplethTooltipOpen",
|
|
306
|
+
"children"
|
|
307
|
+
]);
|
|
308
|
+
const container = react_exports.useRef();
|
|
309
|
+
const marker = react_exports.useRef();
|
|
310
|
+
const [isTooltipOpen, setTooltipOpenStatus] = react_exports.useState(false);
|
|
311
|
+
const isChoroplethTooltip = react_exports.useCallback(() => isChoroplethTooltipOpen !== void 0, [
|
|
312
|
+
isChoroplethTooltipOpen
|
|
313
|
+
]);
|
|
314
|
+
const openTooltip = react_exports.useCallback(() => setTooltipOpenStatus(true), []);
|
|
315
|
+
const closeTooltip = react_exports.useCallback(() => setTooltipOpenStatus(false), []);
|
|
316
|
+
const cleanupMarker = react_exports.useCallback(() => {
|
|
1182
317
|
if (marker.current) {
|
|
1183
318
|
marker.current.remove();
|
|
1184
|
-
marker.current =
|
|
319
|
+
marker.current = void 0;
|
|
1185
320
|
}
|
|
1186
321
|
}, []);
|
|
1187
|
-
|
|
322
|
+
react_exports.useEffect(() => {
|
|
1188
323
|
try {
|
|
1189
324
|
if (marker.current) {
|
|
1190
325
|
marker.current.setLngLat([longitude, latitude]);
|
|
1191
326
|
} else {
|
|
1192
|
-
marker.current = new
|
|
1193
|
-
element: container.current
|
|
1194
|
-
});
|
|
327
|
+
marker.current = new maplibre_gl_exports.Marker({ element: container.current });
|
|
1195
328
|
marker.current.setLngLat([longitude, latitude]);
|
|
1196
329
|
marker.current.addTo(map.current);
|
|
1197
330
|
}
|
|
@@ -1200,177 +333,209 @@ var MarkerWrapper = function MarkerWrapper(_a) {
|
|
|
1200
333
|
cleanupMarker();
|
|
1201
334
|
}
|
|
1202
335
|
}, [latitude, longitude, map]);
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
336
|
+
react_exports.useEffect(() => cleanupMarker, []);
|
|
337
|
+
return /* @__PURE__ */ react_exports.createElement("div", { style: { visibility: isChoroplethTooltip() ? "hidden" : "visible" } }, /* @__PURE__ */ react_exports.createElement(
|
|
338
|
+
"div",
|
|
339
|
+
__spreadValues({
|
|
340
|
+
style: { visibility: isChoroplethTooltip() ? "hidden" : "visible" },
|
|
341
|
+
ref: container,
|
|
342
|
+
"data-test": "map-marker",
|
|
343
|
+
onMouseOver: openTooltip,
|
|
344
|
+
onMouseLeave: closeTooltip,
|
|
345
|
+
onFocus: openTooltip,
|
|
346
|
+
onBlur: closeTooltip
|
|
347
|
+
}, otherProps),
|
|
348
|
+
children
|
|
349
|
+
), /* @__PURE__ */ react_exports.createElement("div", null, /* @__PURE__ */ react_exports.createElement(
|
|
350
|
+
Tooltip_default,
|
|
351
|
+
{
|
|
352
|
+
open: isChoroplethTooltip() ? isChoroplethTooltipOpen : isTooltipOpen,
|
|
353
|
+
anchor: container.current,
|
|
354
|
+
latitude: isChoroplethTooltip() ? null : latitude,
|
|
355
|
+
longitude: isChoroplethTooltip() ? null : longitude,
|
|
356
|
+
areaId,
|
|
357
|
+
areaValue,
|
|
358
|
+
additionalFields
|
|
1209
359
|
}
|
|
1210
|
-
|
|
1211
|
-
style: {
|
|
1212
|
-
visibility: isChoroplethTooltip() ? 'hidden' : 'visible'
|
|
1213
|
-
},
|
|
1214
|
-
ref: container,
|
|
1215
|
-
"data-test": "map-marker",
|
|
1216
|
-
onMouseOver: openTooltip,
|
|
1217
|
-
onMouseLeave: closeTooltip,
|
|
1218
|
-
onFocus: openTooltip,
|
|
1219
|
-
onBlur: closeTooltip
|
|
1220
|
-
}, otherProps), children), React.createElement("div", null, React.createElement(Tooltip_1.default, {
|
|
1221
|
-
open: isChoroplethTooltip() ? isChoroplethTooltipOpen : isTooltipOpen,
|
|
1222
|
-
anchor: container.current,
|
|
1223
|
-
latitude: isChoroplethTooltip() ? null : latitude,
|
|
1224
|
-
longitude: isChoroplethTooltip() ? null : longitude,
|
|
1225
|
-
areaId: areaId,
|
|
1226
|
-
areaValue: areaValue,
|
|
1227
|
-
additionalFields: additionalFields
|
|
1228
|
-
})));
|
|
360
|
+
)));
|
|
1229
361
|
};
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
return n > 0 ? Math.floor(n) : Math.ceil(n);
|
|
1286
|
-
};
|
|
1287
|
-
|
|
1288
|
-
var absoluteDegree = Math.abs(decimalDegree);
|
|
1289
|
-
var degrees = truncate(absoluteDegree);
|
|
1290
|
-
var minutes = truncate((absoluteDegree - degrees) * 60);
|
|
1291
|
-
var seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
|
|
1292
|
-
|
|
1293
|
-
if (seconds === 60) {
|
|
1294
|
-
minutes += 1;
|
|
1295
|
-
seconds = 0;
|
|
362
|
+
var MarkerWrapper_default = MarkerWrapper;
|
|
363
|
+
|
|
364
|
+
// src/Map/PureMap/BubbleLayer.tsx
|
|
365
|
+
var GEO_LAT_AND_LONG_FIELD = ["_geo_long_field", "_geo_lat_field"];
|
|
366
|
+
var PieSegment = react_exports.memo(
|
|
367
|
+
({
|
|
368
|
+
start,
|
|
369
|
+
end,
|
|
370
|
+
radius,
|
|
371
|
+
color,
|
|
372
|
+
themeColor,
|
|
373
|
+
segmentMetadata,
|
|
374
|
+
handleBubbleClick
|
|
375
|
+
}) => {
|
|
376
|
+
const { name, value } = segmentMetadata != null ? segmentMetadata : {};
|
|
377
|
+
const handleSegmentClick = react_exports.useCallback(
|
|
378
|
+
(e) => {
|
|
379
|
+
handleBubbleClick(e, name, value);
|
|
380
|
+
},
|
|
381
|
+
[name, value, handleBubbleClick]
|
|
382
|
+
);
|
|
383
|
+
if (end - start === 1) {
|
|
384
|
+
return /* @__PURE__ */ react_exports.createElement(
|
|
385
|
+
"circle",
|
|
386
|
+
{
|
|
387
|
+
onClick: handleSegmentClick,
|
|
388
|
+
cx: radius,
|
|
389
|
+
cy: radius,
|
|
390
|
+
r: radius,
|
|
391
|
+
fill: color,
|
|
392
|
+
fillOpacity: 0.5,
|
|
393
|
+
strokeWidth: 1.5,
|
|
394
|
+
stroke: color
|
|
395
|
+
}
|
|
396
|
+
);
|
|
397
|
+
}
|
|
398
|
+
const a0 = 2 * Math.PI * (start - 0.25);
|
|
399
|
+
const a1 = 2 * Math.PI * (end - 0.25);
|
|
400
|
+
const x0 = Math.cos(a0);
|
|
401
|
+
const y0 = Math.sin(a0);
|
|
402
|
+
const x1 = Math.cos(a1);
|
|
403
|
+
const y1 = Math.sin(a1);
|
|
404
|
+
const arc = end - start > 0.5 ? 1 : 0;
|
|
405
|
+
return /* @__PURE__ */ react_exports.createElement(
|
|
406
|
+
"path",
|
|
407
|
+
{
|
|
408
|
+
onClick: handleSegmentClick,
|
|
409
|
+
d: `M ${radius} ${radius} L ${radius + radius * x0} ${radius + radius * y0} A ${radius} ${radius} 0 ${arc} 1 ${radius + radius * x1} ${radius + radius * y1} L ${radius} ${radius} A 0 0 0 ${arc} 0 ${radius} ${radius}`,
|
|
410
|
+
fill: color,
|
|
411
|
+
fillOpacity: 0.8,
|
|
412
|
+
stroke: themeColor,
|
|
413
|
+
strokeWidth: 2,
|
|
414
|
+
strokeOpacity: 0.3
|
|
415
|
+
}
|
|
416
|
+
);
|
|
1296
417
|
}
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
418
|
+
);
|
|
419
|
+
PieSegment.displayName = "MapBubblePieSegment";
|
|
420
|
+
var StyledMarkerWrapper = styled_components_default(MarkerWrapper_default)`
|
|
421
|
+
cursor: pointer;
|
|
422
|
+
`;
|
|
423
|
+
var Bubble = react_exports.memo(
|
|
424
|
+
({
|
|
425
|
+
originalValues,
|
|
426
|
+
valueRange,
|
|
427
|
+
colors,
|
|
428
|
+
themeColor,
|
|
429
|
+
isPie,
|
|
430
|
+
latitude,
|
|
431
|
+
longitude,
|
|
432
|
+
bubbleSize,
|
|
433
|
+
additionalFields = [],
|
|
434
|
+
map,
|
|
435
|
+
handleMapClick
|
|
436
|
+
}) => {
|
|
437
|
+
const onBubbleClick = react_exports.useCallback(
|
|
438
|
+
(e, name, value) => {
|
|
439
|
+
handleMapClick(e, name, value);
|
|
440
|
+
e.stopPropagation();
|
|
441
|
+
},
|
|
442
|
+
[handleMapClick]
|
|
443
|
+
);
|
|
444
|
+
const bubble = react_exports.useMemo(() => {
|
|
445
|
+
const allZeros = originalValues.every((v) => v === 0);
|
|
446
|
+
if (allZeros || !originalValues.length) {
|
|
447
|
+
return null;
|
|
448
|
+
}
|
|
449
|
+
const values = originalValues.map((v) => v > 0 ? v : 0);
|
|
450
|
+
const offsets = [];
|
|
451
|
+
let total = 0;
|
|
452
|
+
values.forEach((count) => {
|
|
453
|
+
offsets.push(total);
|
|
454
|
+
total += count;
|
|
455
|
+
});
|
|
456
|
+
const radius = matchBubbleSize(valueRange, total);
|
|
457
|
+
const width = radius * 2;
|
|
458
|
+
return /* @__PURE__ */ react_exports.createElement("svg", { width, height: width, viewBox: `-3 -3 ${width + 6} ${width + 6}` }, isPie ? /* @__PURE__ */ react_exports.createElement(
|
|
459
|
+
"circle",
|
|
460
|
+
{
|
|
461
|
+
cx: radius,
|
|
462
|
+
cy: radius,
|
|
463
|
+
r: radius,
|
|
464
|
+
fill: "none",
|
|
465
|
+
strokeWidth: 2,
|
|
466
|
+
stroke: themeColor,
|
|
467
|
+
strokeOpacity: 0.3
|
|
468
|
+
}
|
|
469
|
+
) : null, values.map((v, i) => /* @__PURE__ */ react_exports.createElement(
|
|
470
|
+
PieSegment,
|
|
471
|
+
{
|
|
472
|
+
key: String(i),
|
|
473
|
+
start: offsets[i] / total,
|
|
474
|
+
end: (offsets[i] + v) / total,
|
|
475
|
+
radius,
|
|
476
|
+
color: colors[i],
|
|
477
|
+
themeColor,
|
|
478
|
+
segmentMetadata: bubbleSize[i],
|
|
479
|
+
handleBubbleClick: onBubbleClick
|
|
480
|
+
}
|
|
481
|
+
)));
|
|
482
|
+
}, [bubbleSize, colors, isPie, onBubbleClick, originalValues, themeColor, valueRange]);
|
|
483
|
+
if (!bubble) {
|
|
484
|
+
return null;
|
|
485
|
+
}
|
|
486
|
+
return /* @__PURE__ */ react_exports.createElement(
|
|
487
|
+
StyledMarkerWrapper,
|
|
488
|
+
{
|
|
489
|
+
longitude,
|
|
490
|
+
latitude,
|
|
491
|
+
additionalFields: [...bubbleSize, ...additionalFields],
|
|
492
|
+
map,
|
|
493
|
+
"data-test-type": "bubble"
|
|
494
|
+
},
|
|
495
|
+
bubble
|
|
496
|
+
);
|
|
1301
497
|
}
|
|
498
|
+
);
|
|
499
|
+
Bubble.displayName = "MapBubble";
|
|
1302
500
|
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
501
|
+
// src/common/utils/mapUtils.ts
|
|
502
|
+
var columnsNullToZeros = (config, dataSources, options) => {
|
|
503
|
+
var _a, _b;
|
|
504
|
+
const { primary } = dataSources;
|
|
505
|
+
const { columns, fields } = primary.data;
|
|
506
|
+
let newColumns = columns;
|
|
507
|
+
const mergedOptions = (0, hocUtils_exports.deepMergeWithArrayPrimitiveOverrides)(
|
|
508
|
+
{},
|
|
509
|
+
options,
|
|
510
|
+
(0, JSONSchemaUtils_exports.pickFieldFromJSONSchema)(config.optionsSchema, "default")
|
|
511
|
+
);
|
|
512
|
+
if (((_b = (_a = mergedOptions.layers) == null ? void 0 : _a[0]) == null ? void 0 : _b.type) === "bubble") {
|
|
513
|
+
const latitudeField = (0, dsl_exports.getFieldsFromDSL)(mergedOptions.layers[0].latitude, dataSources)[0] || "";
|
|
514
|
+
const longitudeField = (0, dsl_exports.getFieldsFromDSL)(mergedOptions.layers[0].longitude, dataSources)[0] || "";
|
|
515
|
+
const excludedFields = [latitudeField, longitudeField, "geobin"].concat(GEO_LAT_AND_LONG_FIELD);
|
|
516
|
+
const indicesToEvaluate = new Set(
|
|
517
|
+
fields.reduce((arr, e, i) => {
|
|
518
|
+
const field = typeof e === "string" ? e : e.name.toString();
|
|
519
|
+
if (!excludedFields.includes(field)) {
|
|
520
|
+
arr.push(i);
|
|
521
|
+
}
|
|
522
|
+
return arr;
|
|
523
|
+
}, [])
|
|
524
|
+
);
|
|
525
|
+
newColumns = columns.map((column, i) => {
|
|
526
|
+
if (indicesToEvaluate.has(i)) {
|
|
527
|
+
return column.map((value) => !value || !(0, types_exports.isNumber)(value) ? 0 : +value);
|
|
528
|
+
}
|
|
529
|
+
return column;
|
|
530
|
+
});
|
|
1309
531
|
}
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
}
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
var open = _ref.open,
|
|
1319
|
-
anchor = _ref.anchor,
|
|
1320
|
-
latitude = _ref.latitude,
|
|
1321
|
-
longitude = _ref.longitude,
|
|
1322
|
-
areaId = _ref.areaId,
|
|
1323
|
-
areaValue = _ref.areaValue,
|
|
1324
|
-
_ref$additionalFields = _ref.additionalFields,
|
|
1325
|
-
additionalFields = _ref$additionalFields === void 0 ? [] : _ref$additionalFields;
|
|
1326
|
-
return React.createElement(StyledPopover, {
|
|
1327
|
-
open: open,
|
|
1328
|
-
animation: false,
|
|
1329
|
-
anchor: anchor,
|
|
1330
|
-
"data-test": "map-marker-tooltip",
|
|
1331
|
-
defaultPlacement: "above"
|
|
1332
|
-
}, React.createElement(StyledTable, null, React.createElement("tbody", null, areaId && areaValue && React.createElement("tr", null, React.createElement(StyledTitleColumn, {
|
|
1333
|
-
"data-test": "area-id"
|
|
1334
|
-
}, areaId), React.createElement(StyledValueColumn, {
|
|
1335
|
-
"data-test": "area-value"
|
|
1336
|
-
}, areaValue)), latitude && React.createElement("tr", null, React.createElement(StyledTitleColumn, null, (0, i18n_1._)('Latitude')), React.createElement(StyledValueColumn, {
|
|
1337
|
-
"data-test": "latitude"
|
|
1338
|
-
}, (0, exports.convertDegToDMS)(latitude, 'latitude'))), longitude && React.createElement("tr", null, React.createElement(StyledTitleColumn, null, (0, i18n_1._)('Longitude')), React.createElement(StyledValueColumn, {
|
|
1339
|
-
"data-test": "longitude"
|
|
1340
|
-
}, (0, exports.convertDegToDMS)(longitude, 'longitude'))), additionalFields.filter(function (_ref2) {
|
|
1341
|
-
var value = _ref2.value;
|
|
1342
|
-
return value && String(value) !== '0';
|
|
1343
|
-
}).map(function (_ref3, index) {
|
|
1344
|
-
var name = _ref3.name,
|
|
1345
|
-
value = _ref3.value,
|
|
1346
|
-
color = _ref3.color;
|
|
1347
|
-
return React.createElement("tr", {
|
|
1348
|
-
key: String(index)
|
|
1349
|
-
}, React.createElement(StyledTitleColumn, {
|
|
1350
|
-
"data-test": "field-title"
|
|
1351
|
-
}, color ? React.createElement(StyledColorBlock, {
|
|
1352
|
-
"data-test": "field-color",
|
|
1353
|
-
color: color
|
|
1354
|
-
}) : null, name), React.createElement(StyledValueColumn, {
|
|
1355
|
-
"data-test": "field-value"
|
|
1356
|
-
}, value));
|
|
1357
|
-
}))));
|
|
532
|
+
const modifiedDatasources = __spreadProps(__spreadValues({}, dataSources), {
|
|
533
|
+
primary: __spreadProps(__spreadValues({}, primary), {
|
|
534
|
+
data: __spreadProps(__spreadValues({}, primary.data), {
|
|
535
|
+
columns: newColumns
|
|
536
|
+
})
|
|
537
|
+
})
|
|
538
|
+
});
|
|
539
|
+
return modifiedDatasources;
|
|
1358
540
|
};
|
|
1359
|
-
|
|
1360
|
-
exports.default = Tooltip;
|
|
1361
|
-
|
|
1362
|
-
/***/ }),
|
|
1363
|
-
/* 52 */
|
|
1364
|
-
/***/ (function(module, exports) {
|
|
1365
|
-
|
|
1366
|
-
module.exports = require("@splunk/react-ui/Popover");
|
|
1367
|
-
|
|
1368
|
-
/***/ }),
|
|
1369
|
-
/* 53 */
|
|
1370
|
-
/***/ (function(module, exports) {
|
|
1371
|
-
|
|
1372
|
-
module.exports = require("@splunk/ui-utils/i18n");
|
|
1373
|
-
|
|
1374
|
-
/***/ })
|
|
1375
|
-
/******/ ]);
|
|
1376
|
-
//# sourceMappingURL=mapUtils.js.map
|
|
541
|
+
//# sourceMappingURL=mapUtils.js.map
|