@splunk/visualizations 26.0.0 → 26.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Area.config.js +102 -18
- package/Area.config.js.map +1 -1
- package/Area.js +618 -221
- package/Area.js.map +1 -1
- package/Bar.config.js +104 -20
- package/Bar.config.js.map +1 -1
- package/Bar.js +624 -219
- package/Bar.js.map +1 -1
- package/Bubble.config.js +94 -20
- package/Bubble.config.js.map +1 -1
- package/Bubble.js +606 -211
- package/Bubble.js.map +1 -1
- package/ChoroplethSvg.config.js +65 -14
- package/ChoroplethSvg.config.js.map +1 -1
- package/ChoroplethSvg.js +550 -183
- package/ChoroplethSvg.js.map +1 -1
- package/Column.config.js +103 -18
- package/Column.config.js.map +1 -1
- package/Column.js +637 -221
- package/Column.js.map +1 -1
- package/Ellipse.config.js +82 -17
- package/Ellipse.config.js.map +1 -1
- package/Ellipse.js +425 -148
- package/Ellipse.js.map +1 -1
- package/Events.config.js +100 -18
- package/Events.config.js.map +1 -1
- package/Events.js +752 -293
- package/Events.js.map +1 -1
- package/FillerGauge.config.js +96 -27
- package/FillerGauge.config.js.map +1 -1
- package/FillerGauge.js +759 -374
- package/FillerGauge.js.map +1 -1
- package/Image.config.js +62 -18
- package/Image.config.js.map +1 -1
- package/Image.js +419 -154
- package/Image.js.map +1 -1
- package/Line.config.js +106 -22
- package/Line.config.js.map +1 -1
- package/Line.js +631 -223
- package/Line.js.map +1 -1
- package/LinkGraph.config.js +72 -22
- package/LinkGraph.config.js.map +1 -1
- package/LinkGraph.js +632 -219
- package/LinkGraph.js.map +1 -1
- package/MIGRATION.md +1082 -0
- package/Map.config.js +241 -97
- package/Map.config.js.map +1 -1
- package/Map.js +1195 -595
- package/Map.js.map +1 -1
- package/Markdown.config.js +70 -20
- package/Markdown.config.js.map +1 -1
- package/Markdown.js +460 -195
- package/Markdown.js.map +1 -1
- package/MarkerGauge.config.js +79 -21
- package/MarkerGauge.config.js.map +1 -1
- package/MarkerGauge.js +802 -411
- package/MarkerGauge.js.map +1 -1
- package/ParallelCoordinates.config.js +72 -18
- package/ParallelCoordinates.config.js.map +1 -1
- package/ParallelCoordinates.js +853 -484
- package/ParallelCoordinates.js.map +1 -1
- package/Pie.config.js +75 -22
- package/Pie.config.js.map +1 -1
- package/Pie.js +612 -212
- package/Pie.js.map +1 -1
- package/Punchcard.config.js +81 -29
- package/Punchcard.config.js.map +1 -1
- package/Punchcard.js +844 -379
- package/Punchcard.js.map +1 -1
- package/Rectangle.config.js +85 -19
- package/Rectangle.config.js.map +1 -1
- package/Rectangle.js +432 -152
- package/Rectangle.js.map +1 -1
- package/Sankey.config.js +84 -22
- package/Sankey.config.js.map +1 -1
- package/Sankey.js +878 -342
- package/Sankey.js.map +1 -1
- package/Scatter.config.js +96 -22
- package/Scatter.config.js.map +1 -1
- package/Scatter.js +607 -212
- package/Scatter.js.map +1 -1
- package/SingleValue.config.js +94 -24
- package/SingleValue.config.js.map +1 -1
- package/SingleValue.js +1182 -650
- package/SingleValue.js.map +1 -1
- package/SingleValueBasic.js +286 -225
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon.config.js +92 -22
- package/SingleValueIcon.config.js.map +1 -1
- package/SingleValueIcon.js +965 -506
- package/SingleValueIcon.js.map +1 -1
- package/SingleValueRadial.config.js +99 -26
- package/SingleValueRadial.config.js.map +1 -1
- package/SingleValueRadial.js +1167 -616
- package/SingleValueRadial.js.map +1 -1
- package/SparkLine.js +126 -67
- package/SparkLine.js.map +1 -1
- package/Table.config.js +73 -20
- package/Table.config.js.map +1 -1
- package/Table.js +810 -322
- package/Table.js.map +1 -1
- package/common/Charting.js +107 -35
- package/common/Charting.js.map +1 -1
- package/common/ChartingApi.js +18 -7
- package/common/ChartingApi.js.map +1 -1
- package/common/EventsDoc.js +76 -22
- package/common/EventsDoc.js.map +1 -1
- package/common/GaugeMajorTicks.js +68 -58
- package/common/GaugeMajorTicks.js.map +1 -1
- package/common/GaugeValueMarker.js +43 -34
- package/common/GaugeValueMarker.js.map +1 -1
- package/common/OptionsDoc.js +156 -65
- package/common/OptionsDoc.js.map +1 -1
- package/common/OverviewDoc.js +33 -5
- package/common/OverviewDoc.js.map +1 -1
- package/common/SplunkVisualization.js +31 -4
- package/common/SplunkVisualization.js.map +1 -1
- package/common/SplunkVisualizationApi.js +8 -2
- package/common/SplunkVisualizationApi.js.map +1 -1
- package/common/ThemesDoc.js +27 -14
- package/common/ThemesDoc.js.map +1 -1
- package/common/chartingUtils.js +44 -12
- package/common/chartingUtils.js.map +1 -1
- package/common/docUtils.js +11 -1
- package/common/docUtils.js.map +1 -1
- package/common/gaugeUtils.js +173 -90
- package/common/gaugeUtils.js.map +1 -1
- package/common/shapeUtils.js +14 -2
- package/common/shapeUtils.js.map +1 -1
- package/common/utils/configUtils.js +49 -14
- package/common/utils/configUtils.js.map +1 -1
- package/common/utils/dataUtils.js +7 -2
- package/common/utils/dataUtils.js.map +1 -1
- package/common/utils/hocUtils.js +3 -1
- package/common/utils/hocUtils.js.map +1 -1
- package/common/utils/layoutUtils.js +1 -0
- package/common/utils/layoutUtils.js.map +1 -1
- package/common/utils/mapUtils.js +287 -127
- package/common/utils/mapUtils.js.map +1 -1
- package/common/utils/singleValueUtils.js +241 -196
- package/common/utils/singleValueUtils.js.map +1 -1
- package/common/utils/testHelper.js +9 -0
- package/common/utils/testHelper.js.map +1 -1
- package/common/utils/trellisUtils.js +61 -0
- package/common/utils/trellisUtils.js.map +1 -1
- package/common/utils/urlUtils.js +2 -0
- package/common/utils/urlUtils.js.map +1 -1
- package/common/withDashboardViz.js +274 -95
- package/common/withDashboardViz.js.map +1 -1
- package/package.json +16 -18
package/common/utils/mapUtils.js
CHANGED
|
@@ -165,28 +165,38 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
165
165
|
value: true
|
|
166
166
|
});
|
|
167
167
|
exports.columnsNullToZeros = void 0;
|
|
168
|
+
|
|
168
169
|
var types_1 = __webpack_require__(9);
|
|
170
|
+
|
|
169
171
|
var dsl_1 = __webpack_require__(20);
|
|
172
|
+
|
|
170
173
|
var hocUtils_1 = __webpack_require__(21);
|
|
174
|
+
|
|
171
175
|
var JSONSchemaUtils_1 = __webpack_require__(22);
|
|
176
|
+
|
|
172
177
|
var BubbleLayer_1 = __webpack_require__(23);
|
|
178
|
+
|
|
173
179
|
var columnsNullToZeros = function columnsNullToZeros(config, dataSources, options) {
|
|
174
180
|
var _a, _b;
|
|
181
|
+
|
|
175
182
|
var primary = dataSources.primary;
|
|
176
183
|
var _primary$data = primary.data,
|
|
177
|
-
|
|
178
|
-
|
|
184
|
+
columns = _primary$data.columns,
|
|
185
|
+
fields = _primary$data.fields;
|
|
179
186
|
var newColumns = columns;
|
|
180
187
|
var mergedOptions = (0, hocUtils_1.deepMergeWithArrayPrimitiveOverrides)({}, options, (0, JSONSchemaUtils_1.pickFieldFromJSONSchema)(config.optionsSchema, 'default'));
|
|
188
|
+
|
|
181
189
|
if (((_b = (_a = mergedOptions.layers) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) === 'bubble') {
|
|
182
190
|
var latitudeField = (0, dsl_1.getFieldsFromDSL)(mergedOptions.layers[0].latitude, dataSources)[0] || '';
|
|
183
191
|
var longitudeField = (0, dsl_1.getFieldsFromDSL)(mergedOptions.layers[0].longitude, dataSources)[0] || '';
|
|
184
192
|
var excludedFields = [latitudeField, longitudeField, 'geobin'].concat(BubbleLayer_1.GEO_LAT_AND_LONG_FIELD);
|
|
185
193
|
var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
|
|
186
194
|
var field = typeof e === 'string' ? e : e.name.toString();
|
|
195
|
+
|
|
187
196
|
if (!excludedFields.includes(field)) {
|
|
188
197
|
arr.push(i);
|
|
189
198
|
}
|
|
199
|
+
|
|
190
200
|
return arr;
|
|
191
201
|
}, []));
|
|
192
202
|
newColumns = columns.map(function (column, i) {
|
|
@@ -196,9 +206,11 @@ var columnsNullToZeros = function columnsNullToZeros(config, dataSources, option
|
|
|
196
206
|
return !value || !(0, types_1.isNumber)(value) ? 0 : +value;
|
|
197
207
|
});
|
|
198
208
|
}
|
|
209
|
+
|
|
199
210
|
return column;
|
|
200
211
|
});
|
|
201
212
|
}
|
|
213
|
+
|
|
202
214
|
var modifiedDatasources = Object.assign(Object.assign({}, dataSources), {
|
|
203
215
|
primary: Object.assign(Object.assign({}, primary), {
|
|
204
216
|
data: Object.assign(Object.assign({}, primary.data), {
|
|
@@ -208,6 +220,7 @@ var columnsNullToZeros = function columnsNullToZeros(config, dataSources, option
|
|
|
208
220
|
});
|
|
209
221
|
return modifiedDatasources;
|
|
210
222
|
};
|
|
223
|
+
|
|
211
224
|
exports.columnsNullToZeros = columnsNullToZeros;
|
|
212
225
|
|
|
213
226
|
/***/ }),
|
|
@@ -236,36 +249,51 @@ module.exports = require("@splunk/visualizations-shared/JSONSchemaUtils");
|
|
|
236
249
|
|
|
237
250
|
|
|
238
251
|
var _slicedToArray = __webpack_require__(7);
|
|
252
|
+
|
|
239
253
|
var _defineProperty = __webpack_require__(1);
|
|
254
|
+
|
|
240
255
|
var _toConsumableArray = __webpack_require__(2);
|
|
256
|
+
|
|
241
257
|
var _taggedTemplateLiteral = __webpack_require__(10);
|
|
258
|
+
|
|
242
259
|
var _templateObject;
|
|
260
|
+
|
|
243
261
|
Object.defineProperty(exports, "__esModule", {
|
|
244
262
|
value: true
|
|
245
263
|
});
|
|
246
264
|
exports.Bubble = exports.PieSegment = exports.GEO_LAT_AND_LONG_FIELD = exports.GEO_BOUND_PREFIX = void 0;
|
|
265
|
+
|
|
247
266
|
var React = __webpack_require__(3);
|
|
267
|
+
|
|
248
268
|
var styled_components_1 = __webpack_require__(11);
|
|
269
|
+
|
|
249
270
|
var lodash_1 = __webpack_require__(0);
|
|
271
|
+
|
|
250
272
|
var colorUtils_1 = __webpack_require__(12);
|
|
273
|
+
|
|
251
274
|
var MapUtils_1 = __webpack_require__(24);
|
|
275
|
+
|
|
252
276
|
var MarkerWrapper_1 = __webpack_require__(28);
|
|
277
|
+
|
|
253
278
|
exports.GEO_BOUND_PREFIX = '_geo_bounds_';
|
|
254
279
|
exports.GEO_LAT_AND_LONG_FIELD = ['_geo_long_field', '_geo_lat_field'];
|
|
255
280
|
exports.PieSegment = React.memo(function (_ref) {
|
|
256
281
|
var start = _ref.start,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
282
|
+
end = _ref.end,
|
|
283
|
+
radius = _ref.radius,
|
|
284
|
+
color = _ref.color,
|
|
285
|
+
themeColor = _ref.themeColor,
|
|
286
|
+
segmentMetadata = _ref.segmentMetadata,
|
|
287
|
+
handleBubbleClick = _ref.handleBubbleClick;
|
|
288
|
+
|
|
263
289
|
var _ref2 = segmentMetadata !== null && segmentMetadata !== void 0 ? segmentMetadata : {},
|
|
264
|
-
|
|
265
|
-
|
|
290
|
+
name = _ref2.name,
|
|
291
|
+
value = _ref2.value;
|
|
292
|
+
|
|
266
293
|
var handleSegmentClick = React.useCallback(function (e) {
|
|
267
294
|
handleBubbleClick(e, name, value);
|
|
268
295
|
}, [name, value, handleBubbleClick]);
|
|
296
|
+
|
|
269
297
|
if (end - start === 1) {
|
|
270
298
|
return React.createElement("circle", {
|
|
271
299
|
onClick: handleSegmentClick,
|
|
@@ -278,6 +306,7 @@ exports.PieSegment = React.memo(function (_ref) {
|
|
|
278
306
|
stroke: color
|
|
279
307
|
});
|
|
280
308
|
}
|
|
309
|
+
|
|
281
310
|
var a0 = 2 * Math.PI * (start - 0.25);
|
|
282
311
|
var a1 = 2 * Math.PI * (end - 0.25);
|
|
283
312
|
var x0 = Math.cos(a0);
|
|
@@ -299,17 +328,17 @@ exports.PieSegment.displayName = 'MapBubblePieSegment';
|
|
|
299
328
|
var StyledMarkerWrapper = (0, styled_components_1.default)(MarkerWrapper_1.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n cursor: pointer;\n"])));
|
|
300
329
|
exports.Bubble = React.memo(function (_ref3) {
|
|
301
330
|
var originalValues = _ref3.originalValues,
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
331
|
+
valueRange = _ref3.valueRange,
|
|
332
|
+
colors = _ref3.colors,
|
|
333
|
+
themeColor = _ref3.themeColor,
|
|
334
|
+
isPie = _ref3.isPie,
|
|
335
|
+
latitude = _ref3.latitude,
|
|
336
|
+
longitude = _ref3.longitude,
|
|
337
|
+
bubbleSize = _ref3.bubbleSize,
|
|
338
|
+
_ref3$additionalField = _ref3.additionalFields,
|
|
339
|
+
additionalFields = _ref3$additionalField === void 0 ? [] : _ref3$additionalField,
|
|
340
|
+
map = _ref3.map,
|
|
341
|
+
handleMapClick = _ref3.handleMapClick;
|
|
313
342
|
var onBubbleClick = React.useCallback(function (e, name, value) {
|
|
314
343
|
handleMapClick(e, name, value);
|
|
315
344
|
e.stopPropagation();
|
|
@@ -318,14 +347,16 @@ exports.Bubble = React.memo(function (_ref3) {
|
|
|
318
347
|
var allZeros = originalValues.every(function (v) {
|
|
319
348
|
return v === 0;
|
|
320
349
|
});
|
|
350
|
+
|
|
321
351
|
if (allZeros || !originalValues.length) {
|
|
322
352
|
return null;
|
|
323
|
-
}
|
|
324
|
-
|
|
353
|
+
} // sanitize values
|
|
354
|
+
|
|
355
|
+
|
|
325
356
|
var values = originalValues.map(function (v) {
|
|
326
357
|
return v > 0 ? v : 0;
|
|
327
|
-
});
|
|
328
|
-
|
|
358
|
+
}); // compute offsets for pie segments
|
|
359
|
+
|
|
329
360
|
var offsets = [];
|
|
330
361
|
var total = 0;
|
|
331
362
|
values.forEach(function (count) {
|
|
@@ -359,9 +390,11 @@ exports.Bubble = React.memo(function (_ref3) {
|
|
|
359
390
|
});
|
|
360
391
|
}));
|
|
361
392
|
}, [bubbleSize, colors, isPie, onBubbleClick, originalValues, themeColor, valueRange]);
|
|
393
|
+
|
|
362
394
|
if (!bubble) {
|
|
363
395
|
return null;
|
|
364
396
|
}
|
|
397
|
+
|
|
365
398
|
return React.createElement(StyledMarkerWrapper, {
|
|
366
399
|
longitude: longitude,
|
|
367
400
|
latitude: latitude,
|
|
@@ -371,12 +404,13 @@ exports.Bubble = React.memo(function (_ref3) {
|
|
|
371
404
|
}, bubble);
|
|
372
405
|
});
|
|
373
406
|
exports.Bubble.displayName = 'MapBubble';
|
|
407
|
+
|
|
374
408
|
var BubbleLayer = function BubbleLayer(props) {
|
|
375
409
|
var bubbleLayer = props.bubbleLayer,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
410
|
+
themeColorScheme = props.themeColorScheme,
|
|
411
|
+
map = props.map,
|
|
412
|
+
zoom = props.zoom,
|
|
413
|
+
onMapClick = props.onMapClick;
|
|
380
414
|
bubbleLayer.seriesColors = bubbleLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
|
|
381
415
|
bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
|
|
382
416
|
var bakedData = React.useMemo(function () {
|
|
@@ -385,20 +419,22 @@ var BubbleLayer = function BubbleLayer(props) {
|
|
|
385
419
|
var staticColors = React.useMemo(function () {
|
|
386
420
|
return (0, MapUtils_1.getStaticColors)(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
|
|
387
421
|
}, [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]);
|
|
422
|
+
|
|
388
423
|
var _ref4 = bakedData !== null && bakedData !== void 0 ? bakedData : {},
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
424
|
+
_ref4$data = _ref4.data,
|
|
425
|
+
data = _ref4$data === void 0 ? [] : _ref4$data,
|
|
426
|
+
_ref4$dataRange = _ref4.dataRange,
|
|
427
|
+
dataRange = _ref4$dataRange === void 0 ? [] : _ref4$dataRange,
|
|
428
|
+
resultLimit = _ref4.resultLimit,
|
|
429
|
+
bubbleSizeFields = _ref4.bubbleSizeFields,
|
|
430
|
+
isPie = _ref4.isPie;
|
|
431
|
+
|
|
396
432
|
var _bubbleLayer$addition = bubbleLayer.additionalTooltipFields,
|
|
397
|
-
|
|
433
|
+
additionalTooltipFields = _bubbleLayer$addition === void 0 ? [] : _bubbleLayer$addition;
|
|
398
434
|
var roundedZoom = Math.round(zoom);
|
|
399
435
|
var themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';
|
|
400
|
-
var dynamicColors = bubbleLayer.dataColors;
|
|
401
|
-
|
|
436
|
+
var dynamicColors = bubbleLayer.dataColors; // filter data for the current zoom level and sort base on values
|
|
437
|
+
|
|
402
438
|
var dataToRender = React.useMemo(function () {
|
|
403
439
|
return data.reduce(function (acc, datum, i) {
|
|
404
440
|
if (datum.zoom === roundedZoom) {
|
|
@@ -407,14 +443,17 @@ var BubbleLayer = function BubbleLayer(props) {
|
|
|
407
443
|
idx: i
|
|
408
444
|
});
|
|
409
445
|
}
|
|
446
|
+
|
|
410
447
|
return acc;
|
|
411
448
|
}, []).slice(0, resultLimit || MapUtils_1.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
|
|
412
449
|
return (0, lodash_1.sum)(b.data.values) - (0, lodash_1.sum)(a.data.values);
|
|
413
450
|
});
|
|
414
451
|
}, [data, resultLimit, roundedZoom]);
|
|
452
|
+
|
|
415
453
|
var _handleMapClick = React.useCallback(function (e, name, value, i) {
|
|
416
|
-
var _a, _b, _c;
|
|
417
|
-
|
|
454
|
+
var _a, _b, _c; // retrieve metadata from the appropriate datum, indexed by i
|
|
455
|
+
|
|
456
|
+
|
|
418
457
|
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 : {};
|
|
419
458
|
var payload = Object.keys(metadata).reduce(function (acc, curr) {
|
|
420
459
|
var key = "row.".concat(curr, ".value");
|
|
@@ -429,13 +468,16 @@ var BubbleLayer = function BubbleLayer(props) {
|
|
|
429
468
|
payload: payload
|
|
430
469
|
});
|
|
431
470
|
}, [dataToRender, onMapClick]);
|
|
471
|
+
|
|
432
472
|
return React.createElement(React.Fragment, null, dataToRender.map(function (datum, i) {
|
|
433
473
|
var colors = dynamicColors ? [dataToRender.map(function (obj) {
|
|
434
474
|
return (0, colorUtils_1.isColor)(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
|
|
435
475
|
})[i]] : staticColors;
|
|
476
|
+
|
|
436
477
|
var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
|
|
437
|
-
|
|
438
|
-
|
|
478
|
+
longitude = _datum$data$coordinat[0],
|
|
479
|
+
latitude = _datum$data$coordinat[1];
|
|
480
|
+
|
|
439
481
|
var bubbleSize = datum.data.values.map(function (value, index) {
|
|
440
482
|
return {
|
|
441
483
|
name: bubbleSizeFields[index],
|
|
@@ -467,6 +509,7 @@ var BubbleLayer = function BubbleLayer(props) {
|
|
|
467
509
|
});
|
|
468
510
|
}));
|
|
469
511
|
};
|
|
512
|
+
|
|
470
513
|
exports.default = BubbleLayer;
|
|
471
514
|
|
|
472
515
|
/***/ }),
|
|
@@ -477,35 +520,48 @@ exports.default = BubbleLayer;
|
|
|
477
520
|
|
|
478
521
|
|
|
479
522
|
var _defineProperty = __webpack_require__(1);
|
|
523
|
+
|
|
480
524
|
var _slicedToArray = __webpack_require__(7);
|
|
525
|
+
|
|
481
526
|
var _toConsumableArray = __webpack_require__(2);
|
|
527
|
+
|
|
482
528
|
Object.defineProperty(exports, "__esModule", {
|
|
483
529
|
value: true
|
|
484
530
|
});
|
|
485
531
|
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.LAYER_TYPE = 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;
|
|
532
|
+
|
|
486
533
|
var lodash_1 = __webpack_require__(0);
|
|
534
|
+
|
|
487
535
|
var d3_scale_1 = __webpack_require__(25);
|
|
536
|
+
|
|
488
537
|
var chroma = __webpack_require__(26);
|
|
538
|
+
|
|
489
539
|
var colorUtils_1 = __webpack_require__(12);
|
|
540
|
+
|
|
490
541
|
var visualization_color_palettes_1 = __webpack_require__(27);
|
|
542
|
+
|
|
491
543
|
var types_1 = __webpack_require__(9);
|
|
544
|
+
|
|
492
545
|
exports.MAX_LATITUDE = 90;
|
|
493
546
|
exports.MIN_LATITUDE = -90;
|
|
494
547
|
exports.MAX_LONGITUDE = 180;
|
|
495
548
|
exports.MIN_LONGITUDE = -180;
|
|
496
549
|
exports.DEFAULT_RESULT_LIMIT = 1000;
|
|
497
550
|
exports.DEFAULT_CLUSTER_COLOR = '#909090';
|
|
498
|
-
exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL;
|
|
499
|
-
|
|
500
|
-
exports.MAP_STYLE_VERSION_NUMBER = 8;
|
|
501
|
-
// currently using one [min, max] value set for bubbles across all zoom levels
|
|
551
|
+
exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL; // MapLibre requires a map style specification number which is always 8
|
|
552
|
+
|
|
553
|
+
exports.MAP_STYLE_VERSION_NUMBER = 8; // currently using one [min, max] value set for bubbles across all zoom levels
|
|
502
554
|
// TODO: design choices on [min, max] bubble size for different zoom levels
|
|
555
|
+
|
|
503
556
|
exports.MIN_BUBBLE_RADIUS = 7.11; // 10px
|
|
557
|
+
|
|
504
558
|
exports.MAX_BUBBLE_RADIUS = 45.26; // 85px
|
|
559
|
+
|
|
505
560
|
exports.DEFAULT_OPACITY = 0.8;
|
|
506
561
|
var LONGITUDE = 'longitude';
|
|
507
562
|
var LATITUDE = 'latitude';
|
|
508
563
|
var LAYER_TYPE;
|
|
564
|
+
|
|
509
565
|
(function (LAYER_TYPE) {
|
|
510
566
|
LAYER_TYPE["Marker"] = "marker";
|
|
511
567
|
LAYER_TYPE["Bubble"] = "bubble";
|
|
@@ -519,12 +575,16 @@ var LAYER_TYPE;
|
|
|
519
575
|
* @param {BaseTileConfig[]} args.customTileConfig
|
|
520
576
|
* @returns {Object} tile preset
|
|
521
577
|
*/
|
|
578
|
+
|
|
579
|
+
|
|
522
580
|
var getTilePreset = function getTilePreset(_ref) {
|
|
523
581
|
var _ref$defaultTileConfi = _ref.defaultTileConfig,
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
582
|
+
defaultTileConfig = _ref$defaultTileConfi === void 0 ? [] : _ref$defaultTileConfi,
|
|
583
|
+
_ref$customTileConfig = _ref.customTileConfig,
|
|
584
|
+
customTileConfig = _ref$customTileConfig === void 0 ? [] : _ref$customTileConfig;
|
|
585
|
+
|
|
527
586
|
var _a, _b;
|
|
587
|
+
|
|
528
588
|
var tilePreset = {};
|
|
529
589
|
var defaultTileLight = {};
|
|
530
590
|
var defaultTileDark = {};
|
|
@@ -538,6 +598,7 @@ var getTilePreset = function getTilePreset(_ref) {
|
|
|
538
598
|
});
|
|
539
599
|
tilePreset[key] = updatedConfig;
|
|
540
600
|
});
|
|
601
|
+
|
|
541
602
|
if (defaultTileConfig.length > 0) {
|
|
542
603
|
defaultTileLight = (_a = defaultTileConfig.find(function (config) {
|
|
543
604
|
return config.theme === 'light';
|
|
@@ -550,12 +611,14 @@ var getTilePreset = function getTilePreset(_ref) {
|
|
|
550
611
|
return config.theme === undefined;
|
|
551
612
|
});
|
|
552
613
|
}
|
|
614
|
+
|
|
553
615
|
return {
|
|
554
616
|
tilePreset: tilePreset,
|
|
555
617
|
defaultTileLight: defaultTileLight,
|
|
556
618
|
defaultTileDark: defaultTileDark
|
|
557
619
|
};
|
|
558
620
|
};
|
|
621
|
+
|
|
559
622
|
exports.getTilePreset = getTilePreset;
|
|
560
623
|
/**
|
|
561
624
|
* Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.
|
|
@@ -570,20 +633,22 @@ exports.getTilePreset = getTilePreset;
|
|
|
570
633
|
* @param {BaseTileConfig} args.defaultTileLight
|
|
571
634
|
* @returns {BaseTileConfig} mapStyle
|
|
572
635
|
*/
|
|
636
|
+
|
|
573
637
|
var getMapStyle = function getMapStyle(_ref2) {
|
|
574
638
|
var showBaseLayer = _ref2.showBaseLayer,
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
639
|
+
_ref2$baseLayerTileSe = _ref2.baseLayerTileServer,
|
|
640
|
+
baseLayerTileServer = _ref2$baseLayerTileSe === void 0 ? '' : _ref2$baseLayerTileSe,
|
|
641
|
+
_ref2$baseLayerTileSe2 = _ref2.baseLayerTileServerType,
|
|
642
|
+
baseLayerTileServerType = _ref2$baseLayerTileSe2 === void 0 ? '' : _ref2$baseLayerTileSe2,
|
|
643
|
+
_ref2$tilePreset = _ref2.tilePreset,
|
|
644
|
+
tilePreset = _ref2$tilePreset === void 0 ? {} : _ref2$tilePreset,
|
|
645
|
+
_ref2$colorScheme = _ref2.colorScheme,
|
|
646
|
+
colorScheme = _ref2$colorScheme === void 0 ? 'light' : _ref2$colorScheme,
|
|
647
|
+
_ref2$defaultTileLigh = _ref2.defaultTileLight,
|
|
648
|
+
defaultTileLight = _ref2$defaultTileLigh === void 0 ? {} : _ref2$defaultTileLigh,
|
|
649
|
+
_ref2$defaultTileDark = _ref2.defaultTileDark,
|
|
650
|
+
defaultTileDark = _ref2$defaultTileDark === void 0 ? {} : _ref2$defaultTileDark;
|
|
651
|
+
|
|
587
652
|
if (!showBaseLayer) {
|
|
588
653
|
return {
|
|
589
654
|
version: exports.MAP_STYLE_VERSION_NUMBER,
|
|
@@ -603,9 +668,11 @@ var getMapStyle = function getMapStyle(_ref2) {
|
|
|
603
668
|
}]
|
|
604
669
|
};
|
|
605
670
|
}
|
|
671
|
+
|
|
606
672
|
if (baseLayerTileServer && tilePreset[baseLayerTileServer] && (tilePreset[baseLayerTileServer].theme === colorScheme || tilePreset[baseLayerTileServer].theme === 'all')) {
|
|
607
673
|
return tilePreset[baseLayerTileServer];
|
|
608
674
|
}
|
|
675
|
+
|
|
609
676
|
if (baseLayerTileServer && baseLayerTileServerType) {
|
|
610
677
|
var tiles = [];
|
|
611
678
|
/**
|
|
@@ -613,6 +680,7 @@ var getMapStyle = function getMapStyle(_ref2) {
|
|
|
613
680
|
* Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'
|
|
614
681
|
* Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers
|
|
615
682
|
*/
|
|
683
|
+
|
|
616
684
|
if (baseLayerTileServer.match(/^(https?):\/\/{(s|S)}\../)) {
|
|
617
685
|
/**
|
|
618
686
|
* sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains
|
|
@@ -623,8 +691,9 @@ var getMapStyle = function getMapStyle(_ref2) {
|
|
|
623
691
|
tiles = [baseLayerTileServer.replace(/{(s|S)}/, 'a'), baseLayerTileServer.replace(/{(s|S)}/, 'b'), baseLayerTileServer.replace(/{(s|S)}/, 'c')];
|
|
624
692
|
} else {
|
|
625
693
|
tiles = [baseLayerTileServer];
|
|
626
|
-
}
|
|
627
|
-
|
|
694
|
+
} // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options
|
|
695
|
+
|
|
696
|
+
|
|
628
697
|
var mapStyle = {
|
|
629
698
|
version: exports.MAP_STYLE_VERSION_NUMBER,
|
|
630
699
|
sources: {
|
|
@@ -640,134 +709,164 @@ var getMapStyle = function getMapStyle(_ref2) {
|
|
|
640
709
|
source: 'base-tiles',
|
|
641
710
|
minzoom: 0,
|
|
642
711
|
maxzoom: 24 // https://maplibre.org/maplibre-gl-js-docs/api/map/
|
|
712
|
+
|
|
643
713
|
}]
|
|
644
714
|
};
|
|
645
|
-
|
|
646
715
|
return mapStyle;
|
|
647
|
-
}
|
|
648
|
-
|
|
716
|
+
} // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults
|
|
717
|
+
|
|
718
|
+
|
|
649
719
|
return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
|
|
650
720
|
};
|
|
721
|
+
|
|
651
722
|
exports.getMapStyle = getMapStyle;
|
|
723
|
+
|
|
652
724
|
var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig, baseLayerTileServer) {
|
|
653
725
|
var sources = tileConfig.sources,
|
|
654
|
-
|
|
655
|
-
var matchedBaseLayerTileServer = false;
|
|
656
|
-
|
|
726
|
+
layers = tileConfig.layers;
|
|
727
|
+
var matchedBaseLayerTileServer = false; // check sources for minzoom maxzoom first
|
|
728
|
+
|
|
657
729
|
var sourceKeys = Object.keys(sources);
|
|
730
|
+
|
|
658
731
|
for (var i = 0; i < sourceKeys.length; i += 1) {
|
|
659
732
|
var _sources$sourceKeys$i = sources[sourceKeys[i]],
|
|
660
|
-
|
|
661
|
-
|
|
733
|
+
minzoom = _sources$sourceKeys$i.minzoom,
|
|
734
|
+
maxzoom = _sources$sourceKeys$i.maxzoom;
|
|
735
|
+
|
|
662
736
|
if (baseLayerTileServer && sources[sourceKeys[i]].tiles.indexOf(baseLayerTileServer) !== -1) {
|
|
663
737
|
matchedBaseLayerTileServer = true;
|
|
664
738
|
}
|
|
739
|
+
|
|
665
740
|
if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && (0, lodash_1.isNumber)(minzoom) && (0, lodash_1.isNumber)(maxzoom)) {
|
|
666
741
|
return {
|
|
667
742
|
minZoom: minzoom,
|
|
668
743
|
maxZoom: maxzoom
|
|
669
744
|
};
|
|
670
745
|
}
|
|
671
|
-
}
|
|
672
|
-
|
|
746
|
+
} // then check layers
|
|
747
|
+
|
|
748
|
+
|
|
673
749
|
for (var _i = 0; _i < layers.length; _i += 1) {
|
|
674
750
|
var _layers$_i = layers[_i],
|
|
675
|
-
|
|
676
|
-
|
|
751
|
+
_minzoom = _layers$_i.minzoom,
|
|
752
|
+
_maxzoom = _layers$_i.maxzoom;
|
|
753
|
+
|
|
677
754
|
if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && (0, lodash_1.isNumber)(_minzoom) && (0, lodash_1.isNumber)(_maxzoom)) {
|
|
678
755
|
return {
|
|
679
756
|
minZoom: _minzoom,
|
|
680
757
|
maxZoom: _maxzoom
|
|
681
758
|
};
|
|
682
759
|
}
|
|
683
|
-
}
|
|
684
|
-
|
|
760
|
+
} // Maplibre default - would reset previous min/maxZoom https://maplibre.org/maplibre-gl-js-docs/api/map/
|
|
761
|
+
|
|
762
|
+
|
|
685
763
|
return {
|
|
686
764
|
minZoom: 0,
|
|
687
765
|
maxZoom: 24
|
|
688
766
|
};
|
|
689
767
|
};
|
|
768
|
+
|
|
690
769
|
exports.getZoomConstraintsFromTileConfig = getZoomConstraintsFromTileConfig;
|
|
770
|
+
|
|
691
771
|
var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
|
|
692
772
|
var _a;
|
|
773
|
+
|
|
693
774
|
if (!geobinStr) {
|
|
694
775
|
return null;
|
|
695
|
-
}
|
|
696
|
-
|
|
776
|
+
} // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
|
|
777
|
+
|
|
778
|
+
|
|
697
779
|
var geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;
|
|
698
780
|
var match = geobinPattern.exec(geobinStr);
|
|
699
781
|
return (_a = (match === null || match === void 0 ? void 0 : match.length) && parseInt(match[1], 10)) !== null && _a !== void 0 ? _a : null;
|
|
700
782
|
};
|
|
701
|
-
|
|
702
|
-
// Bubble colors - static
|
|
783
|
+
|
|
784
|
+
exports.getZoomLevelFromGeobin = getZoomLevelFromGeobin; // Bubble colors - static
|
|
785
|
+
|
|
703
786
|
var getStaticColors = function getStaticColors(colorCount, colorArray) {
|
|
704
787
|
if (colorCount < 0 || !colorCount) {
|
|
705
788
|
return [exports.DEFAULT_CLUSTER_COLOR];
|
|
706
789
|
}
|
|
790
|
+
|
|
707
791
|
if (!colorArray || !colorArray.length) {
|
|
708
792
|
return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
|
|
709
793
|
return exports.DEFAULT_SERIES_COLORS[i];
|
|
710
794
|
});
|
|
711
|
-
}
|
|
712
|
-
// loop through colorArray to pick the first $colorCount colors
|
|
795
|
+
} // loop through colorArray to pick the first $colorCount colors
|
|
713
796
|
// start from begining again if colorCount > colorArray.length
|
|
797
|
+
|
|
798
|
+
|
|
714
799
|
return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
|
|
715
800
|
return (0, colorUtils_1.isColor)(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : exports.DEFAULT_CLUSTER_COLOR;
|
|
716
801
|
});
|
|
717
802
|
};
|
|
718
|
-
|
|
719
|
-
// Bubble size
|
|
803
|
+
|
|
804
|
+
exports.getStaticColors = getStaticColors; // Bubble size
|
|
805
|
+
|
|
720
806
|
var matchBubbleSize = function matchBubbleSize(dataRange, data) {
|
|
721
807
|
var size = (0, d3_scale_1.scalePow)().exponent(0.2).domain(dataRange).range([exports.MIN_BUBBLE_RADIUS, exports.MAX_BUBBLE_RADIUS])(data);
|
|
808
|
+
|
|
722
809
|
if (size > exports.MAX_BUBBLE_RADIUS) {
|
|
723
810
|
return exports.MAX_BUBBLE_RADIUS;
|
|
724
811
|
}
|
|
812
|
+
|
|
725
813
|
if (size < exports.MIN_BUBBLE_RADIUS) {
|
|
726
814
|
return exports.MIN_BUBBLE_RADIUS;
|
|
727
815
|
}
|
|
816
|
+
|
|
728
817
|
return size;
|
|
729
818
|
};
|
|
819
|
+
|
|
730
820
|
exports.matchBubbleSize = matchBubbleSize;
|
|
821
|
+
|
|
731
822
|
var transposeArray = function transposeArray(array) {
|
|
732
823
|
if (!array || !array.length || !array[0] || !array[0].length) {
|
|
733
824
|
return [];
|
|
734
825
|
}
|
|
826
|
+
|
|
735
827
|
return array[0].map(function (_, i) {
|
|
736
828
|
return array.map(function (row) {
|
|
737
829
|
return row[i];
|
|
738
830
|
});
|
|
739
831
|
});
|
|
740
832
|
};
|
|
741
|
-
|
|
742
|
-
// sanitize values: update all null, undefined, or negative values to 0
|
|
833
|
+
|
|
834
|
+
exports.transposeArray = transposeArray; // sanitize values: update all null, undefined, or negative values to 0
|
|
835
|
+
|
|
743
836
|
var sanitizeValues = function sanitizeValues(values) {
|
|
744
837
|
// null / undefined
|
|
745
838
|
if (!values) {
|
|
746
839
|
return 0;
|
|
747
|
-
}
|
|
748
|
-
|
|
840
|
+
} // number
|
|
841
|
+
|
|
842
|
+
|
|
749
843
|
if (!Array.isArray(values)) {
|
|
750
844
|
return values > 0 ? values : 0;
|
|
751
|
-
}
|
|
752
|
-
|
|
845
|
+
} // array
|
|
846
|
+
|
|
847
|
+
|
|
753
848
|
return values.map(function (arr) {
|
|
754
849
|
return (0, exports.sanitizeValues)(arr);
|
|
755
850
|
});
|
|
756
851
|
};
|
|
852
|
+
|
|
757
853
|
exports.sanitizeValues = sanitizeValues;
|
|
854
|
+
|
|
758
855
|
var bakeBubbleData = function bakeBubbleData(layer) {
|
|
759
856
|
var _a;
|
|
857
|
+
|
|
760
858
|
if (!layer || !((_a = layer.bubbleSize) === null || _a === void 0 ? void 0 : _a.length) || !layer.geobin || !layer.geobin.length || !layer.latitude || !layer.latitude.length || !layer.longitude || !layer.longitude.length) {
|
|
761
859
|
return null;
|
|
762
|
-
}
|
|
763
|
-
// if bubbleSize is passed as an array of single number array (data series)
|
|
860
|
+
} // if bubbleSize is passed as an array of single number array (data series)
|
|
764
861
|
// e.g. [value0, value1, ...]
|
|
765
862
|
// format each value as an array to unify data operations for data series and frames
|
|
863
|
+
|
|
864
|
+
|
|
766
865
|
var sanitizedBubbleSize = (0, exports.sanitizeValues)(layer.bubbleSize);
|
|
767
866
|
var transposedBubbleSize;
|
|
768
867
|
var transposedSanitizedBubbleSize;
|
|
769
|
-
var isPie = false;
|
|
770
|
-
|
|
868
|
+
var isPie = false; // format array if bubbleSize is passed as an array of array (data frame)
|
|
869
|
+
|
|
771
870
|
if (Array.isArray(layer.bubbleSize[0])) {
|
|
772
871
|
// one-time array transpose,
|
|
773
872
|
// e.g. from [column0data, column0data] (multi series)
|
|
@@ -777,8 +876,8 @@ var bakeBubbleData = function bakeBubbleData(layer) {
|
|
|
777
876
|
// for easy access of values at each geo location,
|
|
778
877
|
// and min max pie size computation
|
|
779
878
|
transposedBubbleSize = (0, exports.transposeArray)(layer.bubbleSize);
|
|
780
|
-
transposedSanitizedBubbleSize = (0, exports.transposeArray)(sanitizedBubbleSize);
|
|
781
|
-
|
|
879
|
+
transposedSanitizedBubbleSize = (0, exports.transposeArray)(sanitizedBubbleSize); // if multiple series in the dataframe, set isPie to true
|
|
880
|
+
|
|
782
881
|
if (layer.bubbleSize.length > 1) {
|
|
783
882
|
isPie = true;
|
|
784
883
|
}
|
|
@@ -790,9 +889,11 @@ var bakeBubbleData = function bakeBubbleData(layer) {
|
|
|
790
889
|
return [n];
|
|
791
890
|
});
|
|
792
891
|
}
|
|
892
|
+
|
|
793
893
|
if (!transposedBubbleSize || !transposedBubbleSize.length) {
|
|
794
894
|
return null;
|
|
795
895
|
}
|
|
896
|
+
|
|
796
897
|
var data = layer.latitude.map(function (lat, i) {
|
|
797
898
|
return {
|
|
798
899
|
zoom: (0, exports.getZoomLevelFromGeobin)(layer.geobin[i]),
|
|
@@ -803,8 +904,8 @@ var bakeBubbleData = function bakeBubbleData(layer) {
|
|
|
803
904
|
};
|
|
804
905
|
}).filter(function (d) {
|
|
805
906
|
return Boolean(d.values);
|
|
806
|
-
});
|
|
807
|
-
|
|
907
|
+
}); // compute the min/max value to encode min/max pie or bubble size
|
|
908
|
+
|
|
808
909
|
var min = (0, lodash_1.sum)(transposedSanitizedBubbleSize[0]);
|
|
809
910
|
var max = (0, lodash_1.sum)(transposedSanitizedBubbleSize[1]);
|
|
810
911
|
transposedSanitizedBubbleSize.forEach(function (row) {
|
|
@@ -820,22 +921,29 @@ var bakeBubbleData = function bakeBubbleData(layer) {
|
|
|
820
921
|
bubbleSizeFields: layer.bubbleSizeFields
|
|
821
922
|
};
|
|
822
923
|
};
|
|
924
|
+
|
|
823
925
|
exports.bakeBubbleData = bakeBubbleData;
|
|
926
|
+
|
|
824
927
|
var isValidLatLon = function isValidLatLon(latlon) {
|
|
825
928
|
if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {
|
|
826
929
|
return false;
|
|
827
930
|
}
|
|
931
|
+
|
|
828
932
|
var _latlon = _slicedToArray(latlon, 2),
|
|
829
|
-
|
|
830
|
-
|
|
933
|
+
lat = _latlon[0],
|
|
934
|
+
lon = _latlon[1];
|
|
935
|
+
|
|
831
936
|
if (!(0, types_1.isNumber)(lat) || !(lat >= exports.MIN_LATITUDE && lat <= exports.MAX_LATITUDE)) {
|
|
832
937
|
return false;
|
|
833
938
|
}
|
|
939
|
+
|
|
834
940
|
if (!(0, types_1.isNumber)(lon) || !(lon >= exports.MIN_LONGITUDE && lon <= exports.MAX_LONGITUDE)) {
|
|
835
941
|
return false;
|
|
836
942
|
}
|
|
943
|
+
|
|
837
944
|
return true;
|
|
838
945
|
};
|
|
946
|
+
|
|
839
947
|
exports.isValidLatLon = isValidLatLon;
|
|
840
948
|
/**
|
|
841
949
|
* Returns a list of all lat or lon coordinates used in a specified layer
|
|
@@ -843,10 +951,12 @@ exports.isValidLatLon = isValidLatLon;
|
|
|
843
951
|
* @param {string} field
|
|
844
952
|
* @returns {number[]} list of lat coordinates or lon coordinates
|
|
845
953
|
*/
|
|
954
|
+
|
|
846
955
|
var getLatOrLonCoordinates = function getLatOrLonCoordinates(layer, field) {
|
|
847
956
|
var getClusterValues = function getClusterValues(clusterLayer) {
|
|
848
957
|
return (0, lodash_1.get)(clusterLayer, field, []).slice(0, clusterLayer.type === LAYER_TYPE.Marker && clusterLayer.resultLimit ? clusterLayer.resultLimit : exports.DEFAULT_RESULT_LIMIT);
|
|
849
958
|
};
|
|
959
|
+
|
|
850
960
|
var getChoroplethValues = function getChoroplethValues(choroplethLayer) {
|
|
851
961
|
var slicedGeomList = choroplethLayer.geom.slice(0, choroplethLayer.resultLimit);
|
|
852
962
|
var flatCoordinates = slicedGeomList.flatMap(function (geomObject) {
|
|
@@ -856,6 +966,7 @@ var getLatOrLonCoordinates = function getLatOrLonCoordinates(layer, field) {
|
|
|
856
966
|
return coord[field === LONGITUDE ? 0 : 1];
|
|
857
967
|
});
|
|
858
968
|
};
|
|
969
|
+
|
|
859
970
|
return layer.type === LAYER_TYPE.Choropleth ? getChoroplethValues(layer) : getClusterValues(layer);
|
|
860
971
|
};
|
|
861
972
|
/**
|
|
@@ -863,25 +974,32 @@ var getLatOrLonCoordinates = function getLatOrLonCoordinates(layer, field) {
|
|
|
863
974
|
* @param {LayerType[]} layers
|
|
864
975
|
* @returns {LngLatBoundsLike}
|
|
865
976
|
*/
|
|
977
|
+
|
|
978
|
+
|
|
866
979
|
var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
|
|
867
980
|
var isLayerValid = function isLayerValid(field) {
|
|
868
981
|
return layers.every(function (layer) {
|
|
869
982
|
return layer[field] || layer.geom;
|
|
870
983
|
});
|
|
871
984
|
};
|
|
985
|
+
|
|
872
986
|
var getDefaultMax = function getDefaultMax(field) {
|
|
873
987
|
return field === LONGITUDE ? exports.MAX_LONGITUDE : exports.MAX_LATITUDE;
|
|
874
988
|
};
|
|
989
|
+
|
|
875
990
|
var getDefaultMin = function getDefaultMin(field) {
|
|
876
991
|
return field === LONGITUDE ? exports.MIN_LONGITUDE : exports.MIN_LATITUDE;
|
|
877
992
|
};
|
|
993
|
+
|
|
878
994
|
if (!layers || !Array.isArray(layers) || !layers.length) {
|
|
879
995
|
return null;
|
|
880
996
|
}
|
|
997
|
+
|
|
881
998
|
var getMin = function getMin(field) {
|
|
882
999
|
if (!isLayerValid(field)) {
|
|
883
1000
|
return getDefaultMin(field);
|
|
884
1001
|
}
|
|
1002
|
+
|
|
885
1003
|
return layers.reduce(function (prevVal, layer) {
|
|
886
1004
|
var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(function (x) {
|
|
887
1005
|
return +x;
|
|
@@ -889,32 +1007,41 @@ var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
|
|
|
889
1007
|
return (0, lodash_1.min)([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
|
|
890
1008
|
}, getDefaultMax(field));
|
|
891
1009
|
};
|
|
1010
|
+
|
|
892
1011
|
var getMax = function getMax(field) {
|
|
893
1012
|
if (!isLayerValid(field)) {
|
|
894
1013
|
return getDefaultMax(field);
|
|
895
1014
|
}
|
|
1015
|
+
|
|
896
1016
|
return layers.reduce(function (prevVal, layer) {
|
|
897
1017
|
var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(Number);
|
|
898
1018
|
return (0, lodash_1.max)([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
|
|
899
1019
|
}, getDefaultMin(field));
|
|
900
1020
|
};
|
|
1021
|
+
|
|
901
1022
|
return [[getMin(LONGITUDE), getMin(LATITUDE)], [getMax(LONGITUDE), getMax(LATITUDE)]];
|
|
902
1023
|
};
|
|
1024
|
+
|
|
903
1025
|
exports.getGlobalLayerBoundaries = getGlobalLayerBoundaries;
|
|
1026
|
+
|
|
904
1027
|
var getScaledOpacities = function getScaledOpacities(colors, cfgOpacity) {
|
|
905
1028
|
// extract opacity information from 8 digit hex codes
|
|
906
1029
|
var opacities = colors === null || colors === void 0 ? void 0 : colors.map(function (color) {
|
|
907
1030
|
var _a;
|
|
1031
|
+
|
|
908
1032
|
return (color === null || color === void 0 ? void 0 : color.length) === 9 ? (_a = chroma(color).alpha()) !== null && _a !== void 0 ? _a : 1 : 1;
|
|
909
|
-
});
|
|
910
|
-
|
|
1033
|
+
}); // opacity cannot be greater than configured opacity
|
|
1034
|
+
|
|
911
1035
|
return opacities === null || opacities === void 0 ? void 0 : opacities.map(function (opacity) {
|
|
912
1036
|
return opacity * cfgOpacity;
|
|
913
1037
|
});
|
|
914
1038
|
};
|
|
1039
|
+
|
|
915
1040
|
exports.getScaledOpacities = getScaledOpacities;
|
|
1041
|
+
|
|
916
1042
|
var compareBaseStyles = function compareBaseStyles(curr, next) {
|
|
917
1043
|
var _a, _b, _c, _d;
|
|
1044
|
+
|
|
918
1045
|
var currBaseLayer = (_a = curr === null || curr === void 0 ? void 0 : curr.layers) === null || _a === void 0 ? void 0 : _a.find(function (layer) {
|
|
919
1046
|
return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
|
|
920
1047
|
});
|
|
@@ -923,12 +1050,16 @@ var compareBaseStyles = function compareBaseStyles(curr, next) {
|
|
|
923
1050
|
});
|
|
924
1051
|
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 : '');
|
|
925
1052
|
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 : '');
|
|
1053
|
+
|
|
926
1054
|
if (!currBaseLayer || !nextBaseLayer || !currBaseSource || !nextBaseSource) {
|
|
927
1055
|
return false;
|
|
928
1056
|
}
|
|
1057
|
+
|
|
929
1058
|
return (0, lodash_1.isEqual)(currBaseLayer, nextBaseLayer) && (0, lodash_1.isEqual)(currBaseSource, nextBaseSource);
|
|
930
1059
|
};
|
|
1060
|
+
|
|
931
1061
|
exports.compareBaseStyles = compareBaseStyles;
|
|
1062
|
+
|
|
932
1063
|
var formatMetadata = function formatMetadata(choroplethLayer, i) {
|
|
933
1064
|
if (!choroplethLayer || !choroplethLayer.areaIds || !choroplethLayer.areaValues) return {};
|
|
934
1065
|
if (i >= choroplethLayer.areaIds.length) return {};
|
|
@@ -945,6 +1076,7 @@ var formatMetadata = function formatMetadata(choroplethLayer, i) {
|
|
|
945
1076
|
return Object.assign(Object.assign({}, result), _defineProperty({}, key, val));
|
|
946
1077
|
}, base);
|
|
947
1078
|
};
|
|
1079
|
+
|
|
948
1080
|
exports.formatMetadata = formatMetadata;
|
|
949
1081
|
|
|
950
1082
|
/***/ }),
|
|
@@ -973,39 +1105,50 @@ module.exports = require("@splunk/visualization-color-palettes");
|
|
|
973
1105
|
|
|
974
1106
|
|
|
975
1107
|
var _slicedToArray = __webpack_require__(7);
|
|
1108
|
+
|
|
976
1109
|
var __rest = this && this.__rest || function (s, e) {
|
|
977
1110
|
var t = {};
|
|
1111
|
+
|
|
978
1112
|
for (var p in s) {
|
|
979
1113
|
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
980
1114
|
}
|
|
1115
|
+
|
|
981
1116
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
982
1117
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
983
1118
|
}
|
|
984
1119
|
return t;
|
|
985
1120
|
};
|
|
1121
|
+
|
|
986
1122
|
Object.defineProperty(exports, "__esModule", {
|
|
987
1123
|
value: true
|
|
988
1124
|
});
|
|
1125
|
+
|
|
989
1126
|
var maplibre_gl_1 = __webpack_require__(29);
|
|
1127
|
+
|
|
990
1128
|
var React = __webpack_require__(3);
|
|
1129
|
+
|
|
991
1130
|
var Tooltip_1 = __webpack_require__(30);
|
|
1131
|
+
|
|
992
1132
|
var MarkerWrapper = function MarkerWrapper(_a) {
|
|
993
1133
|
var longitude = _a.longitude,
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1134
|
+
latitude = _a.latitude,
|
|
1135
|
+
areaId = _a.areaId,
|
|
1136
|
+
areaValue = _a.areaValue,
|
|
1137
|
+
_a$additionalFields = _a.additionalFields,
|
|
1138
|
+
additionalFields = _a$additionalFields === void 0 ? [] : _a$additionalFields,
|
|
1139
|
+
map = _a.map,
|
|
1140
|
+
isChoroplethTooltipOpen = _a.isChoroplethTooltipOpen,
|
|
1141
|
+
children = _a.children,
|
|
1142
|
+
otherProps = __rest(_a, ["longitude", "latitude", "areaId", "areaValue", "additionalFields", "map", "isChoroplethTooltipOpen", "children"]);
|
|
1143
|
+
|
|
1003
1144
|
var container = React.useRef();
|
|
1004
1145
|
var marker = React.useRef();
|
|
1146
|
+
|
|
1005
1147
|
var _React$useState = React.useState(false),
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1148
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
1149
|
+
isTooltipOpen = _React$useState2[0],
|
|
1150
|
+
setTooltipOpenStatus = _React$useState2[1];
|
|
1151
|
+
|
|
1009
1152
|
var isChoroplethTooltip = React.useCallback(function () {
|
|
1010
1153
|
return isChoroplethTooltipOpen !== undefined;
|
|
1011
1154
|
}, [isChoroplethTooltipOpen]);
|
|
@@ -1064,6 +1207,7 @@ var MarkerWrapper = function MarkerWrapper(_a) {
|
|
|
1064
1207
|
additionalFields: additionalFields
|
|
1065
1208
|
})));
|
|
1066
1209
|
};
|
|
1210
|
+
|
|
1067
1211
|
exports.default = MarkerWrapper;
|
|
1068
1212
|
|
|
1069
1213
|
/***/ }),
|
|
@@ -1080,15 +1224,22 @@ module.exports = require("maplibre-gl");
|
|
|
1080
1224
|
|
|
1081
1225
|
|
|
1082
1226
|
var _taggedTemplateLiteral = __webpack_require__(10);
|
|
1227
|
+
|
|
1083
1228
|
var _templateObject;
|
|
1229
|
+
|
|
1084
1230
|
Object.defineProperty(exports, "__esModule", {
|
|
1085
1231
|
value: true
|
|
1086
1232
|
});
|
|
1087
1233
|
exports.convertDegToDMS = void 0;
|
|
1234
|
+
|
|
1088
1235
|
var React = __webpack_require__(3);
|
|
1236
|
+
|
|
1089
1237
|
var styled_components_1 = __webpack_require__(11);
|
|
1238
|
+
|
|
1090
1239
|
var Popover_1 = __webpack_require__(31);
|
|
1240
|
+
|
|
1091
1241
|
var i18n_1 = __webpack_require__(32);
|
|
1242
|
+
|
|
1092
1243
|
var StyledPopover = (0, styled_components_1.default)(Popover_1.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 250px;\n font-size: 12px;\n"])));
|
|
1093
1244
|
var StyledTable = styled_components_1.default.table.withConfig({
|
|
1094
1245
|
displayName: "Tooltip__StyledTable",
|
|
@@ -1108,42 +1259,50 @@ var StyledColorBlock = styled_components_1.default.div.withConfig({
|
|
|
1108
1259
|
})(["background-color:", ";display:inline-block;margin-right:4px;border-radius:2px;width:6px;height:11px;transform:translateY(1px);"], function (props) {
|
|
1109
1260
|
return props.color;
|
|
1110
1261
|
});
|
|
1262
|
+
|
|
1111
1263
|
var convertDegToDMS = function convertDegToDMS(decimalDegree, type) {
|
|
1112
1264
|
var truncate = function truncate(n) {
|
|
1113
1265
|
return n > 0 ? Math.floor(n) : Math.ceil(n);
|
|
1114
1266
|
};
|
|
1267
|
+
|
|
1115
1268
|
var absoluteDegree = Math.abs(decimalDegree);
|
|
1116
1269
|
var degrees = truncate(absoluteDegree);
|
|
1117
1270
|
var minutes = truncate((absoluteDegree - degrees) * 60);
|
|
1118
1271
|
var seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
|
|
1272
|
+
|
|
1119
1273
|
if (seconds === 60) {
|
|
1120
1274
|
minutes += 1;
|
|
1121
1275
|
seconds = 0;
|
|
1122
1276
|
}
|
|
1277
|
+
|
|
1123
1278
|
if (minutes === 60) {
|
|
1124
1279
|
degrees += 1;
|
|
1125
1280
|
minutes = 0;
|
|
1126
1281
|
}
|
|
1282
|
+
|
|
1127
1283
|
var direction;
|
|
1284
|
+
|
|
1128
1285
|
if (type === 'longitude') {
|
|
1129
1286
|
direction = decimalDegree < 0 ? 'W' : 'E';
|
|
1130
1287
|
} else if (type === 'latitude') {
|
|
1131
1288
|
direction = decimalDegree < 0 ? 'S' : 'N';
|
|
1132
1289
|
}
|
|
1290
|
+
|
|
1133
1291
|
return "".concat(degrees, "\xB0 ").concat(minutes, "' ").concat(seconds, "\" ").concat(direction);
|
|
1134
1292
|
};
|
|
1135
|
-
|
|
1136
|
-
// only want latitude/longitude for marker and bubble
|
|
1293
|
+
|
|
1294
|
+
exports.convertDegToDMS = convertDegToDMS; // only want latitude/longitude for marker and bubble
|
|
1137
1295
|
// omit for choropleth, and put areaid, areavalue instead
|
|
1296
|
+
|
|
1138
1297
|
var Tooltip = function Tooltip(_ref) {
|
|
1139
1298
|
var open = _ref.open,
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1299
|
+
anchor = _ref.anchor,
|
|
1300
|
+
latitude = _ref.latitude,
|
|
1301
|
+
longitude = _ref.longitude,
|
|
1302
|
+
areaId = _ref.areaId,
|
|
1303
|
+
areaValue = _ref.areaValue,
|
|
1304
|
+
_ref$additionalFields = _ref.additionalFields,
|
|
1305
|
+
additionalFields = _ref$additionalFields === void 0 ? [] : _ref$additionalFields;
|
|
1147
1306
|
return React.createElement(StyledPopover, {
|
|
1148
1307
|
open: open,
|
|
1149
1308
|
animation: false,
|
|
@@ -1163,8 +1322,8 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
1163
1322
|
return value && String(value) !== '0';
|
|
1164
1323
|
}).map(function (_ref3, index) {
|
|
1165
1324
|
var name = _ref3.name,
|
|
1166
|
-
|
|
1167
|
-
|
|
1325
|
+
value = _ref3.value,
|
|
1326
|
+
color = _ref3.color;
|
|
1168
1327
|
return React.createElement("tr", {
|
|
1169
1328
|
key: String(index)
|
|
1170
1329
|
}, React.createElement(StyledTitleColumn, {
|
|
@@ -1177,6 +1336,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
1177
1336
|
}, value));
|
|
1178
1337
|
}))));
|
|
1179
1338
|
};
|
|
1339
|
+
|
|
1180
1340
|
exports.default = Tooltip;
|
|
1181
1341
|
|
|
1182
1342
|
/***/ }),
|