@splunk/visualizations 25.6.0 → 25.7.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/.loki/reference/chrome_docker_VisualizationEditors_Editors_Bar_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_ChoroplethSvg_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Column_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Ellipse_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_FillerGauge_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_LinkGraph_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Map_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Parallel_Coordinates_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Pie_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Rectangle_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Icon_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Single_Value_Radial_Editor.png +0 -0
- package/.loki/reference/chrome_docker_VisualizationEditors_Editors_Table_Editor.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Bar_Bar_Legend_Mode_Series_Compare.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Column_Column_Legend_Mode_Series_Compare.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_Pagination.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_background_color.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_count_by_status_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_max_count_avg_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_chart_cmd_max_count_avg_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_layout_options.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_makeresults_name_age.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_makeresults_name_age_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_avg_count_max_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_avg_count_max_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_count_by_status_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_stats_cmd_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_table.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_table_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_count_by_status_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Icon_Single_Value_Icon_Basic_Single_Value_Icon_Trellis_timechart_cmd_max_count_avg_count_by_status_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Chart.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Chart_Count.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Pagination.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_Timechart.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_background_color.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_chart_cmd_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_chart_cmd_max_count_avg_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_chart_cmd_max_count_avg_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_layout_options.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_makeresults_name_age.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_makeresults_name_age_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_stats_cmd_avg_count_max_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_stats_cmd_count_by_status_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_stats_cmd_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_table.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_table_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_timechart_cmd_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_timechart_cmd_count_by_status_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Radial_Trellis_timechart_cmd_max_count_avg_count_by_status_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Radial_Single_Value_Radial_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_Pagination.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_assign_default_trellisSplitBy_value_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_background_color.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_avg_count_max_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_avg_count_max_count_by_status_value_by_max_count.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_count_by_status_user_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_by_status_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_chart_cmd_max_count_avg_count_by_status_user_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_layout_options.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_makeresults_name_age.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_makeresults_name_age_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_avg_count_max_count_by_status_value_by_max_count.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_count_by_status_user.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_stats_cmd_count_by_status_user_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_table.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_table_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_count_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_count_by_status_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_max_count_avg_count_by_status.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Basic_Single_Value_Trellis_timechart_cmd_max_count_avg_count_by_status_aggregations.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Major_value_data_null_show_N_A.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Single_Value_Single_Value_Set_The_Background_Color_Based_On_The_Major_Value_Trellis.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Height_Percentage.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Height_Percentage_100_no_paginator.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Height_Percentage_50_no_paginator.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline_Custom.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparkline_Width.png +0 -0
- package/.loki/reference/chrome_docker_Visualizations_Table_Table_Sparklines_Adv.png +0 -0
- package/Area.config.js +12 -7
- package/Area.config.js.map +1 -1
- package/Area.js +192 -171
- package/Area.js.map +1 -1
- package/Bar.config.js +36 -8
- package/Bar.config.js.map +1 -1
- package/Bar.js +216 -172
- package/Bar.js.map +1 -1
- package/Bubble.config.js +7 -2
- package/Bubble.config.js.map +1 -1
- package/Bubble.js +183 -162
- package/Bubble.js.map +1 -1
- package/ChoroplethSvg.config.js +12 -8
- package/ChoroplethSvg.config.js.map +1 -1
- package/ChoroplethSvg.js +191 -174
- package/ChoroplethSvg.js.map +1 -1
- package/Column.config.js +36 -8
- package/Column.config.js.map +1 -1
- package/Column.js +216 -172
- package/Column.js.map +1 -1
- package/Ellipse.config.js +23 -20
- package/Ellipse.config.js.map +1 -1
- package/Ellipse.js +168 -149
- package/Ellipse.js.map +1 -1
- package/Events.config.js +79 -19
- package/Events.config.js.map +1 -1
- package/Events.js +404 -244
- package/Events.js.map +1 -1
- package/FEATUREFLAGS.md +40 -0
- package/FillerGauge.config.js +22 -19
- package/FillerGauge.config.js.map +1 -1
- package/FillerGauge.js +170 -151
- package/FillerGauge.js.map +1 -1
- package/Image.config.js +3 -3
- package/Image.config.js.map +1 -1
- package/Image.js +143 -130
- package/Image.js.map +1 -1
- package/LICENSE.md +444 -8
- package/Line.config.js +12 -7
- package/Line.config.js.map +1 -1
- package/Line.js +192 -171
- package/Line.js.map +1 -1
- package/LinkGraph.config.js +9 -15
- package/LinkGraph.config.js.map +1 -1
- package/LinkGraph.js +743 -729
- package/LinkGraph.js.map +1 -1
- package/Map.config.js +51 -48
- package/Map.config.js.map +1 -1
- package/Map.js +602 -587
- package/Map.js.map +1 -1
- package/Markdown.config.js +10 -9
- package/Markdown.config.js.map +1 -1
- package/Markdown.js +185 -171
- package/Markdown.js.map +1 -1
- package/MarkerGauge.config.js +71 -70
- package/MarkerGauge.config.js.map +1 -1
- package/MarkerGauge.js +193 -179
- package/MarkerGauge.js.map +1 -1
- package/ParallelCoordinates.config.js +3 -3
- package/ParallelCoordinates.config.js.map +1 -1
- package/ParallelCoordinates.js +179 -155
- package/ParallelCoordinates.js.map +1 -1
- package/Pie.config.js +30 -6
- package/Pie.config.js.map +1 -1
- package/Pie.js +237 -200
- package/Pie.js.map +1 -1
- package/Punchcard.config.js +3 -2
- package/Punchcard.config.js.map +1 -1
- package/Punchcard.js +305 -291
- package/Punchcard.js.map +1 -1
- package/Rectangle.config.js +22 -23
- package/Rectangle.config.js.map +1 -1
- package/Rectangle.js +232 -220
- package/Rectangle.js.map +1 -1
- package/Sankey.config.js +14 -13
- package/Sankey.config.js.map +1 -1
- package/Sankey.js +1311 -1297
- package/Sankey.js.map +1 -1
- package/Scatter.config.js +552 -580
- package/Scatter.config.js.map +1 -1
- package/Scatter.js +258 -244
- package/Scatter.js.map +1 -1
- package/SingleValue.config.js +242 -52
- package/SingleValue.config.js.map +1 -1
- package/SingleValue.js +1456 -350
- package/SingleValue.js.map +1 -1
- package/SingleValueBasic.js +40 -29
- package/SingleValueBasic.js.map +1 -1
- package/SingleValueIcon.config.js +267 -58
- package/SingleValueIcon.config.js.map +1 -1
- package/SingleValueIcon.js +1490 -363
- package/SingleValueIcon.js.map +1 -1
- package/SingleValueRadial.config.js +249 -41
- package/SingleValueRadial.config.js.map +1 -1
- package/SingleValueRadial.js +1435 -286
- package/SingleValueRadial.js.map +1 -1
- package/TRELLIS.md +296 -0
- package/Table.config.js +39 -41
- package/Table.config.js.map +1 -1
- package/Table.js +352 -306
- package/Table.js.map +1 -1
- package/common/EventsDoc.js +9 -3
- package/common/EventsDoc.js.map +1 -1
- package/common/docUtils.js +1 -1
- package/common/docUtils.js.map +1 -1
- package/common/utils/configUtils.js +26 -20
- package/common/utils/configUtils.js.map +1 -1
- package/common/utils/dataUtils.js +2 -2
- package/common/utils/dataUtils.js.map +1 -1
- package/common/utils/hocUtils.js +2 -2
- package/common/utils/hocUtils.js.map +1 -1
- package/common/utils/layoutUtils.js +115 -0
- package/common/utils/layoutUtils.js.map +1 -0
- package/common/utils/mapUtils.js +1166 -23
- package/common/utils/mapUtils.js.map +1 -1
- package/common/utils/singleValueUtils.js +54 -46
- package/common/utils/singleValueUtils.js.map +1 -1
- package/common/utils/testHelper.js +14 -14
- package/common/utils/testHelper.js.map +1 -1
- package/common/utils/trellisUtils.js +612 -0
- package/common/utils/trellisUtils.js.map +1 -0
- package/common/withDashboardViz.js +31 -17
- package/common/withDashboardViz.js.map +1 -1
- package/package.json +12 -12
package/common/utils/mapUtils.js
CHANGED
|
@@ -87,23 +87,69 @@ module.exports =
|
|
|
87
87
|
/******/
|
|
88
88
|
/******/
|
|
89
89
|
/******/ // Load entry module and return exports
|
|
90
|
-
/******/ return __webpack_require__(__webpack_require__.s =
|
|
90
|
+
/******/ return __webpack_require__(__webpack_require__.s = 18);
|
|
91
91
|
/******/ })
|
|
92
92
|
/************************************************************************/
|
|
93
93
|
/******/ ([
|
|
94
|
-
/* 0
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
/* 0 */
|
|
95
|
+
/***/ (function(module, exports) {
|
|
96
|
+
|
|
97
|
+
module.exports = require("lodash");
|
|
98
|
+
|
|
99
|
+
/***/ }),
|
|
100
|
+
/* 1 */
|
|
101
|
+
/***/ (function(module, exports) {
|
|
102
|
+
|
|
103
|
+
module.exports = require("@babel/runtime/helpers/defineProperty");
|
|
104
|
+
|
|
105
|
+
/***/ }),
|
|
106
|
+
/* 2 */
|
|
107
|
+
/***/ (function(module, exports) {
|
|
108
|
+
|
|
109
|
+
module.exports = require("@babel/runtime/helpers/toConsumableArray");
|
|
110
|
+
|
|
111
|
+
/***/ }),
|
|
112
|
+
/* 3 */
|
|
113
|
+
/***/ (function(module, exports) {
|
|
114
|
+
|
|
115
|
+
module.exports = require("react");
|
|
116
|
+
|
|
117
|
+
/***/ }),
|
|
98
118
|
/* 4 */,
|
|
99
119
|
/* 5 */,
|
|
100
120
|
/* 6 */,
|
|
101
|
-
/* 7
|
|
121
|
+
/* 7 */
|
|
122
|
+
/***/ (function(module, exports) {
|
|
123
|
+
|
|
124
|
+
module.exports = require("@babel/runtime/helpers/slicedToArray");
|
|
125
|
+
|
|
126
|
+
/***/ }),
|
|
102
127
|
/* 8 */,
|
|
103
|
-
/* 9
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
128
|
+
/* 9 */
|
|
129
|
+
/***/ (function(module, exports) {
|
|
130
|
+
|
|
131
|
+
module.exports = require("@splunk/visualization-encoding/utils/types");
|
|
132
|
+
|
|
133
|
+
/***/ }),
|
|
134
|
+
/* 10 */
|
|
135
|
+
/***/ (function(module, exports) {
|
|
136
|
+
|
|
137
|
+
module.exports = require("styled-components");
|
|
138
|
+
|
|
139
|
+
/***/ }),
|
|
140
|
+
/* 11 */
|
|
141
|
+
/***/ (function(module, exports) {
|
|
142
|
+
|
|
143
|
+
module.exports = require("@splunk/visualizations-shared/colorUtils");
|
|
144
|
+
|
|
145
|
+
/***/ }),
|
|
146
|
+
/* 12 */,
|
|
147
|
+
/* 13 */,
|
|
148
|
+
/* 14 */,
|
|
149
|
+
/* 15 */,
|
|
150
|
+
/* 16 */,
|
|
151
|
+
/* 17 */,
|
|
152
|
+
/* 18 */
|
|
107
153
|
/***/ (function(module, exports, __webpack_require__) {
|
|
108
154
|
|
|
109
155
|
"use strict";
|
|
@@ -114,13 +160,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
114
160
|
});
|
|
115
161
|
exports.columnsNullToZeros = void 0;
|
|
116
162
|
|
|
117
|
-
var types_1 = __webpack_require__(
|
|
163
|
+
var types_1 = __webpack_require__(9);
|
|
118
164
|
|
|
119
|
-
var dsl_1 = __webpack_require__(
|
|
165
|
+
var dsl_1 = __webpack_require__(19);
|
|
120
166
|
|
|
121
|
-
var hocUtils_1 = __webpack_require__(
|
|
167
|
+
var hocUtils_1 = __webpack_require__(20);
|
|
122
168
|
|
|
123
|
-
var JSONSchemaUtils_1 = __webpack_require__(
|
|
169
|
+
var JSONSchemaUtils_1 = __webpack_require__(21);
|
|
170
|
+
|
|
171
|
+
var BubbleLayer_1 = __webpack_require__(22);
|
|
124
172
|
|
|
125
173
|
var columnsNullToZeros = function columnsNullToZeros(config, dataSources, options) {
|
|
126
174
|
var _a, _b;
|
|
@@ -135,7 +183,7 @@ var columnsNullToZeros = function columnsNullToZeros(config, dataSources, option
|
|
|
135
183
|
if (((_b = (_a = mergedOptions.layers) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) === 'bubble') {
|
|
136
184
|
var latitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].latitude, dataSources)[0] || '';
|
|
137
185
|
var longitudeField = dsl_1.getFieldsFromDSL(mergedOptions.layers[0].longitude, dataSources)[0] || '';
|
|
138
|
-
var excludedFields = [latitudeField, longitudeField, 'geobin'];
|
|
186
|
+
var excludedFields = [latitudeField, longitudeField, 'geobin'].concat(BubbleLayer_1.GEO_LAT_AND_LONG_FIELD);
|
|
139
187
|
var indicesToEvaluate = new Set(fields.reduce(function (arr, e, i) {
|
|
140
188
|
var field = typeof e === 'string' ? e : e.name.toString();
|
|
141
189
|
|
|
@@ -170,28 +218,1123 @@ var columnsNullToZeros = function columnsNullToZeros(config, dataSources, option
|
|
|
170
218
|
exports.columnsNullToZeros = columnsNullToZeros;
|
|
171
219
|
|
|
172
220
|
/***/ }),
|
|
173
|
-
/*
|
|
221
|
+
/* 19 */
|
|
174
222
|
/***/ (function(module, exports) {
|
|
175
223
|
|
|
176
|
-
module.exports = require("@splunk/visualization-encoding/utils/
|
|
224
|
+
module.exports = require("@splunk/visualization-encoding/utils/dsl");
|
|
177
225
|
|
|
178
226
|
/***/ }),
|
|
179
|
-
/*
|
|
227
|
+
/* 20 */
|
|
180
228
|
/***/ (function(module, exports) {
|
|
181
229
|
|
|
182
|
-
module.exports = require("@splunk/
|
|
230
|
+
module.exports = require("@splunk/visualizations-shared/hocUtils");
|
|
183
231
|
|
|
184
232
|
/***/ }),
|
|
185
|
-
/*
|
|
233
|
+
/* 21 */
|
|
186
234
|
/***/ (function(module, exports) {
|
|
187
235
|
|
|
188
|
-
module.exports = require("@splunk/visualizations-shared/
|
|
236
|
+
module.exports = require("@splunk/visualizations-shared/JSONSchemaUtils");
|
|
237
|
+
|
|
238
|
+
/***/ }),
|
|
239
|
+
/* 22 */
|
|
240
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
241
|
+
|
|
242
|
+
"use strict";
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
var _slicedToArray = __webpack_require__(7);
|
|
246
|
+
|
|
247
|
+
var _defineProperty = __webpack_require__(1);
|
|
248
|
+
|
|
249
|
+
var _toConsumableArray = __webpack_require__(2);
|
|
250
|
+
|
|
251
|
+
Object.defineProperty(exports, "__esModule", {
|
|
252
|
+
value: true
|
|
253
|
+
});
|
|
254
|
+
exports.Bubble = exports.PieSegment = exports.GEO_LAT_AND_LONG_FIELD = exports.GEO_BOUND_PREFIX = void 0;
|
|
255
|
+
|
|
256
|
+
var React = __webpack_require__(3);
|
|
257
|
+
|
|
258
|
+
var styled_components_1 = __webpack_require__(10);
|
|
259
|
+
|
|
260
|
+
var lodash_1 = __webpack_require__(0);
|
|
261
|
+
|
|
262
|
+
var colorUtils_1 = __webpack_require__(11);
|
|
263
|
+
|
|
264
|
+
var MapUtils_1 = __webpack_require__(23);
|
|
265
|
+
|
|
266
|
+
var MarkerWrapper_1 = __webpack_require__(27);
|
|
267
|
+
|
|
268
|
+
exports.GEO_BOUND_PREFIX = '_geo_bounds_';
|
|
269
|
+
exports.GEO_LAT_AND_LONG_FIELD = ['_geo_long_field', '_geo_lat_field'];
|
|
270
|
+
exports.PieSegment = React.memo(function (_ref) {
|
|
271
|
+
var start = _ref.start,
|
|
272
|
+
end = _ref.end,
|
|
273
|
+
radius = _ref.radius,
|
|
274
|
+
color = _ref.color,
|
|
275
|
+
themeColor = _ref.themeColor,
|
|
276
|
+
segmentMetadata = _ref.segmentMetadata,
|
|
277
|
+
handleBubbleClick = _ref.handleBubbleClick;
|
|
278
|
+
|
|
279
|
+
var _ref2 = segmentMetadata !== null && segmentMetadata !== void 0 ? segmentMetadata : {},
|
|
280
|
+
name = _ref2.name,
|
|
281
|
+
value = _ref2.value;
|
|
282
|
+
|
|
283
|
+
var handleSegmentClick = React.useCallback(function (e) {
|
|
284
|
+
handleBubbleClick(e, name, value);
|
|
285
|
+
}, [name, value, handleBubbleClick]);
|
|
286
|
+
|
|
287
|
+
if (end - start === 1) {
|
|
288
|
+
return React.createElement("circle", {
|
|
289
|
+
onClick: handleSegmentClick,
|
|
290
|
+
cx: radius,
|
|
291
|
+
cy: radius,
|
|
292
|
+
r: radius,
|
|
293
|
+
fill: color,
|
|
294
|
+
fillOpacity: 0.5,
|
|
295
|
+
strokeWidth: 1.5,
|
|
296
|
+
stroke: color
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
var a0 = 2 * Math.PI * (start - 0.25);
|
|
301
|
+
var a1 = 2 * Math.PI * (end - 0.25);
|
|
302
|
+
var x0 = Math.cos(a0);
|
|
303
|
+
var y0 = Math.sin(a0);
|
|
304
|
+
var x1 = Math.cos(a1);
|
|
305
|
+
var y1 = Math.sin(a1);
|
|
306
|
+
var arc = end - start > 0.5 ? 1 : 0;
|
|
307
|
+
return React.createElement("path", {
|
|
308
|
+
onClick: handleSegmentClick,
|
|
309
|
+
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),
|
|
310
|
+
fill: color,
|
|
311
|
+
fillOpacity: 0.8,
|
|
312
|
+
stroke: themeColor,
|
|
313
|
+
strokeWidth: 2,
|
|
314
|
+
strokeOpacity: 0.3
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
exports.PieSegment.displayName = 'MapBubblePieSegment';
|
|
318
|
+
var StyledMarkerWrapper = styled_components_1.default(MarkerWrapper_1.default).withConfig({
|
|
319
|
+
displayName: "BubbleLayer__StyledMarkerWrapper",
|
|
320
|
+
componentId: "sc-8aqbb-0"
|
|
321
|
+
})(["cursor:pointer;"]);
|
|
322
|
+
exports.Bubble = React.memo(function (_ref3) {
|
|
323
|
+
var originalValues = _ref3.originalValues,
|
|
324
|
+
valueRange = _ref3.valueRange,
|
|
325
|
+
colors = _ref3.colors,
|
|
326
|
+
themeColor = _ref3.themeColor,
|
|
327
|
+
isPie = _ref3.isPie,
|
|
328
|
+
latitude = _ref3.latitude,
|
|
329
|
+
longitude = _ref3.longitude,
|
|
330
|
+
bubbleSize = _ref3.bubbleSize,
|
|
331
|
+
_ref3$additionalField = _ref3.additionalFields,
|
|
332
|
+
additionalFields = _ref3$additionalField === void 0 ? [] : _ref3$additionalField,
|
|
333
|
+
map = _ref3.map,
|
|
334
|
+
handleMapClick = _ref3.handleMapClick;
|
|
335
|
+
var onBubbleClick = React.useCallback(function (e, name, value) {
|
|
336
|
+
handleMapClick(e, name, value);
|
|
337
|
+
e.stopPropagation();
|
|
338
|
+
}, [bubbleSize]);
|
|
339
|
+
var bubble = React.useMemo(function () {
|
|
340
|
+
var allZeros = originalValues.every(function (v) {
|
|
341
|
+
return v === 0;
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
if (allZeros || !originalValues.length) {
|
|
345
|
+
return null;
|
|
346
|
+
} // sanitize values
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
var values = originalValues.map(function (v) {
|
|
350
|
+
return v > 0 ? v : 0;
|
|
351
|
+
}); // compute offsets for pie segments
|
|
352
|
+
|
|
353
|
+
var offsets = [];
|
|
354
|
+
var total = 0;
|
|
355
|
+
values.forEach(function (count) {
|
|
356
|
+
offsets.push(total);
|
|
357
|
+
total += count;
|
|
358
|
+
});
|
|
359
|
+
var radius = MapUtils_1.matchBubbleSize(valueRange, total);
|
|
360
|
+
var width = radius * 2;
|
|
361
|
+
return React.createElement("svg", {
|
|
362
|
+
width: width,
|
|
363
|
+
height: width,
|
|
364
|
+
viewBox: "-3 -3 ".concat(width + 6, " ").concat(width + 6)
|
|
365
|
+
}, isPie ? React.createElement("circle", {
|
|
366
|
+
cx: radius,
|
|
367
|
+
cy: radius,
|
|
368
|
+
r: radius,
|
|
369
|
+
fill: "none",
|
|
370
|
+
strokeWidth: 2,
|
|
371
|
+
stroke: themeColor,
|
|
372
|
+
strokeOpacity: 0.3
|
|
373
|
+
}) : null, values.map(function (v, i) {
|
|
374
|
+
return React.createElement(exports.PieSegment, {
|
|
375
|
+
key: String(i),
|
|
376
|
+
start: offsets[i] / total,
|
|
377
|
+
end: (offsets[i] + v) / total,
|
|
378
|
+
radius: radius,
|
|
379
|
+
color: colors[i],
|
|
380
|
+
themeColor: themeColor,
|
|
381
|
+
segmentMetadata: bubbleSize[i],
|
|
382
|
+
handleBubbleClick: onBubbleClick
|
|
383
|
+
});
|
|
384
|
+
}));
|
|
385
|
+
}, [colors, isPie, originalValues, themeColor, valueRange]);
|
|
386
|
+
|
|
387
|
+
if (!bubble) {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return React.createElement(StyledMarkerWrapper, {
|
|
392
|
+
longitude: longitude,
|
|
393
|
+
latitude: latitude,
|
|
394
|
+
additionalFields: [].concat(_toConsumableArray(bubbleSize), _toConsumableArray(additionalFields)),
|
|
395
|
+
map: map,
|
|
396
|
+
"data-test-type": "bubble"
|
|
397
|
+
}, bubble);
|
|
398
|
+
});
|
|
399
|
+
exports.Bubble.displayName = 'MapBubble';
|
|
400
|
+
|
|
401
|
+
var BubbleLayer = function BubbleLayer(props) {
|
|
402
|
+
var bubbleLayer = props.bubbleLayer,
|
|
403
|
+
themeColorScheme = props.themeColorScheme,
|
|
404
|
+
map = props.map,
|
|
405
|
+
zoom = props.zoom,
|
|
406
|
+
onMapClick = props.onMapClick;
|
|
407
|
+
bubbleLayer.seriesColors = bubbleLayer.seriesColors || MapUtils_1.DEFAULT_SERIES_COLORS;
|
|
408
|
+
bubbleLayer.bubbleSize = bubbleLayer.bubbleSize || [];
|
|
409
|
+
var bakedData = React.useMemo(function () {
|
|
410
|
+
return MapUtils_1.bakeBubbleData(bubbleLayer);
|
|
411
|
+
}, [bubbleLayer]);
|
|
412
|
+
var staticColors = React.useMemo(function () {
|
|
413
|
+
return MapUtils_1.getStaticColors(bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors);
|
|
414
|
+
}, [bubbleLayer.bubbleSize.length, bubbleLayer.seriesColors]);
|
|
415
|
+
|
|
416
|
+
var _ref4 = bakedData !== null && bakedData !== void 0 ? bakedData : {},
|
|
417
|
+
_ref4$data = _ref4.data,
|
|
418
|
+
data = _ref4$data === void 0 ? [] : _ref4$data,
|
|
419
|
+
_ref4$dataRange = _ref4.dataRange,
|
|
420
|
+
dataRange = _ref4$dataRange === void 0 ? [] : _ref4$dataRange,
|
|
421
|
+
resultLimit = _ref4.resultLimit,
|
|
422
|
+
bubbleSizeFields = _ref4.bubbleSizeFields,
|
|
423
|
+
isPie = _ref4.isPie;
|
|
424
|
+
|
|
425
|
+
var _bubbleLayer$addition = bubbleLayer.additionalTooltipFields,
|
|
426
|
+
additionalTooltipFields = _bubbleLayer$addition === void 0 ? [] : _bubbleLayer$addition;
|
|
427
|
+
var roundedZoom = Math.round(zoom);
|
|
428
|
+
var themeColor = themeColorScheme === 'light' ? '#ffffff' : '#1a1c20';
|
|
429
|
+
var dynamicColors = bubbleLayer.dataColors; // filter data for the current zoom level and sort base on values
|
|
430
|
+
|
|
431
|
+
var dataToRender = React.useMemo(function () {
|
|
432
|
+
return data.reduce(function (acc, datum, i) {
|
|
433
|
+
if (datum.zoom === roundedZoom) {
|
|
434
|
+
acc.push({
|
|
435
|
+
data: datum,
|
|
436
|
+
idx: i
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
return acc;
|
|
441
|
+
}, []).slice(0, resultLimit || MapUtils_1.DEFAULT_RESULT_LIMIT).sort(function (a, b) {
|
|
442
|
+
return lodash_1.sum(b.data.values) - lodash_1.sum(a.data.values);
|
|
443
|
+
});
|
|
444
|
+
}, [data, resultLimit, roundedZoom]);
|
|
445
|
+
|
|
446
|
+
var _handleMapClick = React.useCallback(function (e, name, value, i) {
|
|
447
|
+
var _a, _b, _c; // retrieve metadata from the appropriate datum, indexed by i
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
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 : {};
|
|
451
|
+
var payload = Object.keys(metadata).reduce(function (acc, curr) {
|
|
452
|
+
var key = "row.".concat(curr, ".value");
|
|
453
|
+
var val = String(metadata[curr]);
|
|
454
|
+
return Object.assign(Object.assign({}, acc), _defineProperty({}, key, val));
|
|
455
|
+
}, {
|
|
456
|
+
name: name,
|
|
457
|
+
value: String(value)
|
|
458
|
+
});
|
|
459
|
+
onMapClick({
|
|
460
|
+
e: e,
|
|
461
|
+
payload: payload
|
|
462
|
+
});
|
|
463
|
+
}, [dataToRender]);
|
|
464
|
+
|
|
465
|
+
return React.createElement(React.Fragment, null, dataToRender.map(function (datum, i) {
|
|
466
|
+
var colors = dynamicColors ? [dataToRender.map(function (obj) {
|
|
467
|
+
return colorUtils_1.isColor(dynamicColors[obj.idx]) ? dynamicColors[obj.idx] : MapUtils_1.DEFAULT_CLUSTER_COLOR;
|
|
468
|
+
})[i]] : staticColors;
|
|
469
|
+
|
|
470
|
+
var _datum$data$coordinat = _slicedToArray(datum.data.coordinates, 2),
|
|
471
|
+
longitude = _datum$data$coordinat[0],
|
|
472
|
+
latitude = _datum$data$coordinat[1];
|
|
473
|
+
|
|
474
|
+
var bubbleSize = datum.data.values.map(function (value, index) {
|
|
475
|
+
return {
|
|
476
|
+
name: bubbleSizeFields[index],
|
|
477
|
+
value: value,
|
|
478
|
+
color: colors[index]
|
|
479
|
+
};
|
|
480
|
+
});
|
|
481
|
+
var additionalFields = bubbleLayer.metadata ? additionalTooltipFields.map(function (field) {
|
|
482
|
+
return {
|
|
483
|
+
name: field,
|
|
484
|
+
value: datum.data.metadata[field]
|
|
485
|
+
};
|
|
486
|
+
}) : [];
|
|
487
|
+
return React.createElement(exports.Bubble, {
|
|
488
|
+
key: String(i),
|
|
489
|
+
originalValues: datum.data.values,
|
|
490
|
+
valueRange: dataRange,
|
|
491
|
+
colors: colors,
|
|
492
|
+
themeColor: themeColor,
|
|
493
|
+
isPie: isPie,
|
|
494
|
+
longitude: longitude,
|
|
495
|
+
latitude: latitude,
|
|
496
|
+
bubbleSize: bubbleSize,
|
|
497
|
+
additionalFields: additionalFields,
|
|
498
|
+
map: map,
|
|
499
|
+
handleMapClick: function handleMapClick(e, name, value) {
|
|
500
|
+
return _handleMapClick(e, name, value, i);
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
}));
|
|
504
|
+
};
|
|
505
|
+
|
|
506
|
+
exports.default = BubbleLayer;
|
|
507
|
+
|
|
508
|
+
/***/ }),
|
|
509
|
+
/* 23 */
|
|
510
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
511
|
+
|
|
512
|
+
"use strict";
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
var _defineProperty = __webpack_require__(1);
|
|
516
|
+
|
|
517
|
+
var _slicedToArray = __webpack_require__(7);
|
|
518
|
+
|
|
519
|
+
var _toConsumableArray = __webpack_require__(2);
|
|
520
|
+
|
|
521
|
+
Object.defineProperty(exports, "__esModule", {
|
|
522
|
+
value: true
|
|
523
|
+
});
|
|
524
|
+
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;
|
|
525
|
+
|
|
526
|
+
var lodash_1 = __webpack_require__(0);
|
|
527
|
+
|
|
528
|
+
var d3_scale_1 = __webpack_require__(24);
|
|
529
|
+
|
|
530
|
+
var chroma = __webpack_require__(25);
|
|
531
|
+
|
|
532
|
+
var colorUtils_1 = __webpack_require__(11);
|
|
533
|
+
|
|
534
|
+
var visualization_color_palettes_1 = __webpack_require__(26);
|
|
535
|
+
|
|
536
|
+
var types_1 = __webpack_require__(9);
|
|
537
|
+
|
|
538
|
+
exports.MAX_LATITUDE = 90;
|
|
539
|
+
exports.MIN_LATITUDE = -90;
|
|
540
|
+
exports.MAX_LONGITUDE = 180;
|
|
541
|
+
exports.MIN_LONGITUDE = -180;
|
|
542
|
+
exports.DEFAULT_RESULT_LIMIT = 1000;
|
|
543
|
+
exports.DEFAULT_CLUSTER_COLOR = '#909090';
|
|
544
|
+
exports.DEFAULT_SERIES_COLORS = visualization_color_palettes_1.VIZ_CATEGORICAL; // MapLibre requires a map style specification number which is always 8
|
|
545
|
+
|
|
546
|
+
exports.MAP_STYLE_VERSION_NUMBER = 8; // currently using one [min, max] value set for bubbles across all zoom levels
|
|
547
|
+
// TODO: design choices on [min, max] bubble size for different zoom levels
|
|
548
|
+
|
|
549
|
+
exports.MIN_BUBBLE_RADIUS = 7.11; // 10px
|
|
550
|
+
|
|
551
|
+
exports.MAX_BUBBLE_RADIUS = 45.26; // 85px
|
|
552
|
+
|
|
553
|
+
exports.DEFAULT_OPACITY = 0.8;
|
|
554
|
+
var LONGITUDE = 'longitude';
|
|
555
|
+
var LATITUDE = 'latitude';
|
|
556
|
+
var LAYER_TYPE;
|
|
557
|
+
|
|
558
|
+
(function (LAYER_TYPE) {
|
|
559
|
+
LAYER_TYPE["Marker"] = "marker";
|
|
560
|
+
LAYER_TYPE["Bubble"] = "bubble";
|
|
561
|
+
LAYER_TYPE["Choropleth"] = "choropleth";
|
|
562
|
+
})(LAYER_TYPE = exports.LAYER_TYPE || (exports.LAYER_TYPE = {}));
|
|
563
|
+
/**
|
|
564
|
+
* Construct a tile preset {key: config} by combining the default + custom tile configs
|
|
565
|
+
* Also returns the default tile config for each theme - light/dark
|
|
566
|
+
* @param {MapContextInterface} args
|
|
567
|
+
* @param {BaseTileConfig[]} args.defaultTileConfig
|
|
568
|
+
* @param {BaseTileConfig[]} args.customTileConfig
|
|
569
|
+
* @returns {Object} tile preset
|
|
570
|
+
*/
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
var getTilePreset = function getTilePreset(_ref) {
|
|
574
|
+
var _ref$defaultTileConfi = _ref.defaultTileConfig,
|
|
575
|
+
defaultTileConfig = _ref$defaultTileConfi === void 0 ? [] : _ref$defaultTileConfi,
|
|
576
|
+
_ref$customTileConfig = _ref.customTileConfig,
|
|
577
|
+
customTileConfig = _ref$customTileConfig === void 0 ? [] : _ref$customTileConfig;
|
|
578
|
+
|
|
579
|
+
var _a, _b;
|
|
580
|
+
|
|
581
|
+
var tilePreset = {};
|
|
582
|
+
var defaultTileLight = {};
|
|
583
|
+
var defaultTileDark = {};
|
|
584
|
+
var tileConfigs = [].concat(defaultTileConfig).concat(customTileConfig);
|
|
585
|
+
lodash_1.forEach(tileConfigs, function (tileConfig) {
|
|
586
|
+
var key = tileConfig === null || tileConfig === void 0 ? void 0 : tileConfig.key;
|
|
587
|
+
var updatedConfig = Object.assign(Object.assign({
|
|
588
|
+
theme: 'all'
|
|
589
|
+
}, tileConfig), {
|
|
590
|
+
version: exports.MAP_STYLE_VERSION_NUMBER
|
|
591
|
+
});
|
|
592
|
+
tilePreset[key] = updatedConfig;
|
|
593
|
+
});
|
|
594
|
+
|
|
595
|
+
if (defaultTileConfig.length > 0) {
|
|
596
|
+
defaultTileLight = (_a = defaultTileConfig.find(function (config) {
|
|
597
|
+
return config.theme === 'light';
|
|
598
|
+
})) !== null && _a !== void 0 ? _a : defaultTileConfig.find(function (config) {
|
|
599
|
+
return config.theme === undefined;
|
|
600
|
+
});
|
|
601
|
+
defaultTileDark = (_b = defaultTileConfig.find(function (config) {
|
|
602
|
+
return config.theme === 'dark';
|
|
603
|
+
})) !== null && _b !== void 0 ? _b : defaultTileConfig.find(function (config) {
|
|
604
|
+
return config.theme === undefined;
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
return {
|
|
609
|
+
tilePreset: tilePreset,
|
|
610
|
+
defaultTileLight: defaultTileLight,
|
|
611
|
+
defaultTileDark: defaultTileDark
|
|
612
|
+
};
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
exports.getTilePreset = getTilePreset;
|
|
616
|
+
/**
|
|
617
|
+
* Check if baseLayerTileServer is in tilePreset and config matches current theme, if yes, return.
|
|
618
|
+
* If no, construct a mapStyle with baseLayerTilerServer and baseLayerTileServerType
|
|
619
|
+
* Else return default tile config based on current theme
|
|
620
|
+
* @param {Object} args
|
|
621
|
+
* @param {BaseTileConfig[]} args.tilePreset
|
|
622
|
+
* @param {String} args.baseLayerTilerServer
|
|
623
|
+
* @param {String} args.baseLayerTileServerType
|
|
624
|
+
* @param {String} args.colorScheme
|
|
625
|
+
* @param {BaseTileConfig} args.defaultTileDark
|
|
626
|
+
* @param {BaseTileConfig} args.defaultTileLight
|
|
627
|
+
* @returns {BaseTileConfig} mapStyle
|
|
628
|
+
*/
|
|
629
|
+
|
|
630
|
+
var getMapStyle = function getMapStyle(_ref2) {
|
|
631
|
+
var showBaseLayer = _ref2.showBaseLayer,
|
|
632
|
+
_ref2$baseLayerTileSe = _ref2.baseLayerTileServer,
|
|
633
|
+
baseLayerTileServer = _ref2$baseLayerTileSe === void 0 ? '' : _ref2$baseLayerTileSe,
|
|
634
|
+
_ref2$baseLayerTileSe2 = _ref2.baseLayerTileServerType,
|
|
635
|
+
baseLayerTileServerType = _ref2$baseLayerTileSe2 === void 0 ? '' : _ref2$baseLayerTileSe2,
|
|
636
|
+
_ref2$tilePreset = _ref2.tilePreset,
|
|
637
|
+
tilePreset = _ref2$tilePreset === void 0 ? {} : _ref2$tilePreset,
|
|
638
|
+
_ref2$colorScheme = _ref2.colorScheme,
|
|
639
|
+
colorScheme = _ref2$colorScheme === void 0 ? 'light' : _ref2$colorScheme,
|
|
640
|
+
_ref2$defaultTileLigh = _ref2.defaultTileLight,
|
|
641
|
+
defaultTileLight = _ref2$defaultTileLigh === void 0 ? {} : _ref2$defaultTileLigh,
|
|
642
|
+
_ref2$defaultTileDark = _ref2.defaultTileDark,
|
|
643
|
+
defaultTileDark = _ref2$defaultTileDark === void 0 ? {} : _ref2$defaultTileDark;
|
|
644
|
+
|
|
645
|
+
if (!showBaseLayer) {
|
|
646
|
+
return {
|
|
647
|
+
version: exports.MAP_STYLE_VERSION_NUMBER,
|
|
648
|
+
sources: {
|
|
649
|
+
'base-tiles': {
|
|
650
|
+
type: 'raster',
|
|
651
|
+
tiles: ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='],
|
|
652
|
+
tileSize: 256
|
|
653
|
+
}
|
|
654
|
+
},
|
|
655
|
+
layers: [{
|
|
656
|
+
id: 'base-layer',
|
|
657
|
+
type: 'raster',
|
|
658
|
+
source: 'base-tiles',
|
|
659
|
+
minzoom: 0,
|
|
660
|
+
maxzoom: 22
|
|
661
|
+
}]
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
if (baseLayerTileServer && tilePreset[baseLayerTileServer] && (tilePreset[baseLayerTileServer].theme === colorScheme || tilePreset[baseLayerTileServer].theme === 'all')) {
|
|
666
|
+
return tilePreset[baseLayerTileServer];
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
if (baseLayerTileServer && baseLayerTileServerType) {
|
|
670
|
+
var tiles = [];
|
|
671
|
+
/**
|
|
672
|
+
* Tile Server URLs (eg: http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png) can specify the variable {s} which refers to a subdomain
|
|
673
|
+
* Subdomains are used to help with browser parallel requests per domain limitation. These subdomains are typically single letters 'a', 'b' and 'c'
|
|
674
|
+
* Refer to https://leafletjs.com/SlavaUkraini/reference.html#tilelayer and https://wiki.openstreetmap.org/wiki/Tile_servers
|
|
675
|
+
*/
|
|
676
|
+
|
|
677
|
+
if (baseLayerTileServer.match(/^(https?):\/\/{(s|S)}\../)) {
|
|
678
|
+
/**
|
|
679
|
+
* sXML (Leaflet) allows users to define their own tile server URLs + list of available subdomains
|
|
680
|
+
* In order to preserve this behavior during conversion to splunk.map,
|
|
681
|
+
* if the variable {s} or {S} is detected, replace it with 'a', 'b' and 'c' - default values for subdomains
|
|
682
|
+
* TODO: in the future, add an additional prop - baseLayerTileServerSubdomains: ['x', 'y', 'z'], default being ['a', 'b', 'c']
|
|
683
|
+
*/
|
|
684
|
+
tiles = [baseLayerTileServer.replace(/{(s|S)}/, 'a'), baseLayerTileServer.replace(/{(s|S)}/, 'b'), baseLayerTileServer.replace(/{(s|S)}/, 'c')];
|
|
685
|
+
} else {
|
|
686
|
+
tiles = [baseLayerTileServer];
|
|
687
|
+
} // TODO: remove hardcoded style when we allow users to pass in layer style through Viz options
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
var mapStyle = {
|
|
691
|
+
version: exports.MAP_STYLE_VERSION_NUMBER,
|
|
692
|
+
sources: {
|
|
693
|
+
'base-tiles': {
|
|
694
|
+
type: baseLayerTileServerType,
|
|
695
|
+
tiles: tiles,
|
|
696
|
+
tileSize: 256
|
|
697
|
+
}
|
|
698
|
+
},
|
|
699
|
+
layers: [{
|
|
700
|
+
id: 'base-layer',
|
|
701
|
+
type: 'raster',
|
|
702
|
+
source: 'base-tiles',
|
|
703
|
+
minzoom: 0,
|
|
704
|
+
maxzoom: 10
|
|
705
|
+
}]
|
|
706
|
+
};
|
|
707
|
+
return mapStyle;
|
|
708
|
+
} // if tile server is not present in the preset AND we can't construct a mapStyle, fall back on defaults
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
return colorScheme === 'light' ? defaultTileLight : defaultTileDark;
|
|
712
|
+
};
|
|
713
|
+
|
|
714
|
+
exports.getMapStyle = getMapStyle;
|
|
715
|
+
|
|
716
|
+
var getZoomConstraintsFromTileConfig = function getZoomConstraintsFromTileConfig(tileConfig, baseLayerTileServer) {
|
|
717
|
+
var sources = tileConfig.sources,
|
|
718
|
+
layers = tileConfig.layers;
|
|
719
|
+
var matchedBaseLayerTileServer = false; // check sources for minzoom maxzoom first
|
|
720
|
+
|
|
721
|
+
var sourceKeys = Object.keys(sources);
|
|
722
|
+
|
|
723
|
+
for (var i = 0; i < sourceKeys.length; i += 1) {
|
|
724
|
+
var _sources$sourceKeys$i = sources[sourceKeys[i]],
|
|
725
|
+
minzoom = _sources$sourceKeys$i.minzoom,
|
|
726
|
+
maxzoom = _sources$sourceKeys$i.maxzoom;
|
|
727
|
+
|
|
728
|
+
if (baseLayerTileServer && sources[sourceKeys[i]].tiles.indexOf(baseLayerTileServer) !== -1) {
|
|
729
|
+
matchedBaseLayerTileServer = true;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && lodash_1.isNumber(minzoom) && lodash_1.isNumber(maxzoom)) {
|
|
733
|
+
return {
|
|
734
|
+
minZoom: minzoom,
|
|
735
|
+
maxZoom: maxzoom
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
} // then check layers
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
for (var _i = 0; _i < layers.length; _i += 1) {
|
|
742
|
+
var _layers$_i = layers[_i],
|
|
743
|
+
_minzoom = _layers$_i.minzoom,
|
|
744
|
+
_maxzoom = _layers$_i.maxzoom;
|
|
745
|
+
|
|
746
|
+
if ((baseLayerTileServer && matchedBaseLayerTileServer || !baseLayerTileServer) && lodash_1.isNumber(_minzoom) && lodash_1.isNumber(_maxzoom)) {
|
|
747
|
+
return {
|
|
748
|
+
minZoom: _minzoom,
|
|
749
|
+
maxZoom: _maxzoom
|
|
750
|
+
};
|
|
751
|
+
}
|
|
752
|
+
} // Maplibre default - would reset previous min/maxZoom
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
return {
|
|
756
|
+
minZoom: 0,
|
|
757
|
+
maxZoom: 22
|
|
758
|
+
};
|
|
759
|
+
};
|
|
760
|
+
|
|
761
|
+
exports.getZoomConstraintsFromTileConfig = getZoomConstraintsFromTileConfig;
|
|
762
|
+
|
|
763
|
+
var getZoomLevelFromGeobin = function getZoomLevelFromGeobin(geobinStr) {
|
|
764
|
+
var _a;
|
|
765
|
+
|
|
766
|
+
if (!geobinStr) {
|
|
767
|
+
return null;
|
|
768
|
+
} // geostats cmds return geobin with zoom level 0-18, 0-99 in the geobinPattern covers the range
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
var geobinPattern = /bin_id_zl_([0-9]{0,2})?_y_/g;
|
|
772
|
+
var match = geobinPattern.exec(geobinStr);
|
|
773
|
+
return (_a = (match === null || match === void 0 ? void 0 : match.length) && parseInt(match[1], 10)) !== null && _a !== void 0 ? _a : null;
|
|
774
|
+
};
|
|
775
|
+
|
|
776
|
+
exports.getZoomLevelFromGeobin = getZoomLevelFromGeobin; // Bubble colors - static
|
|
777
|
+
|
|
778
|
+
var getStaticColors = function getStaticColors(colorCount, colorArray) {
|
|
779
|
+
if (colorCount < 0 || !colorCount) {
|
|
780
|
+
return [exports.DEFAULT_CLUSTER_COLOR];
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
if (!colorArray || !colorArray.length) {
|
|
784
|
+
return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
|
|
785
|
+
return exports.DEFAULT_SERIES_COLORS[i];
|
|
786
|
+
});
|
|
787
|
+
} // loop through colorArray to pick the first $colorCount colors
|
|
788
|
+
// start from begining again if colorCount > colorArray.length
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
return _toConsumableArray(Array(colorCount).keys()).map(function (i) {
|
|
792
|
+
return colorUtils_1.isColor(colorArray[i % colorArray.length]) ? colorArray[i % colorArray.length] : exports.DEFAULT_CLUSTER_COLOR;
|
|
793
|
+
});
|
|
794
|
+
};
|
|
795
|
+
|
|
796
|
+
exports.getStaticColors = getStaticColors; // Bubble size
|
|
797
|
+
|
|
798
|
+
var matchBubbleSize = function matchBubbleSize(dataRange, data) {
|
|
799
|
+
var size = d3_scale_1.scalePow().exponent(0.2).domain(dataRange).range([exports.MIN_BUBBLE_RADIUS, exports.MAX_BUBBLE_RADIUS])(data);
|
|
800
|
+
|
|
801
|
+
if (size > exports.MAX_BUBBLE_RADIUS) {
|
|
802
|
+
return exports.MAX_BUBBLE_RADIUS;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
if (size < exports.MIN_BUBBLE_RADIUS) {
|
|
806
|
+
return exports.MIN_BUBBLE_RADIUS;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
return size;
|
|
810
|
+
};
|
|
811
|
+
|
|
812
|
+
exports.matchBubbleSize = matchBubbleSize;
|
|
813
|
+
|
|
814
|
+
var transposeArray = function transposeArray(array) {
|
|
815
|
+
if (!array || !array.length || !array[0] || !array[0].length) {
|
|
816
|
+
return [];
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
return array[0].map(function (_, i) {
|
|
820
|
+
return array.map(function (row) {
|
|
821
|
+
return row[i];
|
|
822
|
+
});
|
|
823
|
+
});
|
|
824
|
+
};
|
|
825
|
+
|
|
826
|
+
exports.transposeArray = transposeArray; // sanitize values: update all null, undefined, or negative values to 0
|
|
827
|
+
|
|
828
|
+
var sanitizeValues = function sanitizeValues(values) {
|
|
829
|
+
// null / undefined
|
|
830
|
+
if (!values) {
|
|
831
|
+
return 0;
|
|
832
|
+
} // number
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
if (!Array.isArray(values)) {
|
|
836
|
+
return values > 0 ? values : 0;
|
|
837
|
+
} // array
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
return values.map(function (arr) {
|
|
841
|
+
return exports.sanitizeValues(arr);
|
|
842
|
+
});
|
|
843
|
+
};
|
|
844
|
+
|
|
845
|
+
exports.sanitizeValues = sanitizeValues;
|
|
846
|
+
|
|
847
|
+
var bakeBubbleData = function bakeBubbleData(layer) {
|
|
848
|
+
var _a;
|
|
849
|
+
|
|
850
|
+
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) {
|
|
851
|
+
return null;
|
|
852
|
+
} // if bubbleSize is passed as an array of single number array (data series)
|
|
853
|
+
// e.g. [value0, value1, ...]
|
|
854
|
+
// format each value as an array to unify data operations for data series and frames
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
var sanitizedBubbleSize = exports.sanitizeValues(layer.bubbleSize);
|
|
858
|
+
var transposedBubbleSize;
|
|
859
|
+
var transposedSanitizedBubbleSize;
|
|
860
|
+
var isPie = false; // format array if bubbleSize is passed as an array of array (data frame)
|
|
861
|
+
|
|
862
|
+
if (Array.isArray(layer.bubbleSize[0])) {
|
|
863
|
+
// one-time array transpose,
|
|
864
|
+
// e.g. from [column0data, column0data] (multi series)
|
|
865
|
+
// to [[column0datum0, column1datum0], [column0datum1, column1data1], ...]
|
|
866
|
+
// or e.g. from [column0data] (single series)
|
|
867
|
+
// to [[column0data]]
|
|
868
|
+
// for easy access of values at each geo location,
|
|
869
|
+
// and min max pie size computation
|
|
870
|
+
transposedBubbleSize = exports.transposeArray(layer.bubbleSize);
|
|
871
|
+
transposedSanitizedBubbleSize = exports.transposeArray(sanitizedBubbleSize); // if multiple series in the dataframe, set isPie to true
|
|
872
|
+
|
|
873
|
+
if (layer.bubbleSize.length > 1) {
|
|
874
|
+
isPie = true;
|
|
875
|
+
}
|
|
876
|
+
} else {
|
|
877
|
+
transposedBubbleSize = layer.bubbleSize.map(function (n) {
|
|
878
|
+
return [n];
|
|
879
|
+
});
|
|
880
|
+
transposedSanitizedBubbleSize = sanitizedBubbleSize.map(function (n) {
|
|
881
|
+
return [n];
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
if (!transposedBubbleSize || !transposedBubbleSize.length) {
|
|
886
|
+
return null;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
var data = layer.latitude.map(function (lat, i) {
|
|
890
|
+
return {
|
|
891
|
+
zoom: exports.getZoomLevelFromGeobin(layer.geobin[i]),
|
|
892
|
+
values: transposedBubbleSize[i],
|
|
893
|
+
sanitizedValues: transposedSanitizedBubbleSize[i],
|
|
894
|
+
coordinates: [layer.longitude[i], lat],
|
|
895
|
+
metadata: layer.metadata ? layer.metadata[i] : {}
|
|
896
|
+
};
|
|
897
|
+
}).filter(function (d) {
|
|
898
|
+
return Boolean(d.values);
|
|
899
|
+
}); // compute the min/max value to encode min/max pie or bubble size
|
|
900
|
+
|
|
901
|
+
var min = lodash_1.sum(transposedSanitizedBubbleSize[0]);
|
|
902
|
+
var max = lodash_1.sum(transposedSanitizedBubbleSize[1]);
|
|
903
|
+
transposedSanitizedBubbleSize.forEach(function (row) {
|
|
904
|
+
var bubbleSize = lodash_1.sum(row);
|
|
905
|
+
max = bubbleSize > max ? bubbleSize : max;
|
|
906
|
+
min = bubbleSize < min ? bubbleSize : min;
|
|
907
|
+
});
|
|
908
|
+
return {
|
|
909
|
+
data: data,
|
|
910
|
+
dataRange: [min, max],
|
|
911
|
+
isPie: isPie,
|
|
912
|
+
resultLimit: layer.resultLimit,
|
|
913
|
+
bubbleSizeFields: layer.bubbleSizeFields
|
|
914
|
+
};
|
|
915
|
+
};
|
|
916
|
+
|
|
917
|
+
exports.bakeBubbleData = bakeBubbleData;
|
|
918
|
+
|
|
919
|
+
var isValidLatLon = function isValidLatLon(latlon) {
|
|
920
|
+
if (!latlon || !Array.isArray(latlon) || latlon.length !== 2) {
|
|
921
|
+
return false;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
var _latlon = _slicedToArray(latlon, 2),
|
|
925
|
+
lat = _latlon[0],
|
|
926
|
+
lon = _latlon[1];
|
|
927
|
+
|
|
928
|
+
if (!types_1.isNumber(lat) || !(lat >= exports.MIN_LATITUDE && lat <= exports.MAX_LATITUDE)) {
|
|
929
|
+
return false;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
if (!types_1.isNumber(lon) || !(lon >= exports.MIN_LONGITUDE && lon <= exports.MAX_LONGITUDE)) {
|
|
933
|
+
return false;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
return true;
|
|
937
|
+
};
|
|
938
|
+
|
|
939
|
+
exports.isValidLatLon = isValidLatLon;
|
|
940
|
+
/**
|
|
941
|
+
* Returns a list of all lat or lon coordinates used in a specified layer
|
|
942
|
+
* @param {LayerType[]} layer
|
|
943
|
+
* @param {string} field
|
|
944
|
+
* @returns {number[]} list of lat coordinates or lon coordinates
|
|
945
|
+
*/
|
|
946
|
+
|
|
947
|
+
var getLatOrLonCoordinates = function getLatOrLonCoordinates(layer, field) {
|
|
948
|
+
var getClusterValues = function getClusterValues(clusterLayer) {
|
|
949
|
+
return lodash_1.get(clusterLayer, field, []).slice(0, clusterLayer.type === LAYER_TYPE.Marker && clusterLayer.resultLimit ? clusterLayer.resultLimit : exports.DEFAULT_RESULT_LIMIT);
|
|
950
|
+
};
|
|
951
|
+
|
|
952
|
+
var getChoroplethValues = function getChoroplethValues(choroplethLayer) {
|
|
953
|
+
var slicedGeomList = choroplethLayer.geom.slice(0, choroplethLayer.resultLimit);
|
|
954
|
+
var flatCoordinates = slicedGeomList.flatMap(function (geomObject) {
|
|
955
|
+
return geomObject.coordinates.flat(2);
|
|
956
|
+
});
|
|
957
|
+
return flatCoordinates.map(function (coord) {
|
|
958
|
+
return coord[field === LONGITUDE ? 0 : 1];
|
|
959
|
+
});
|
|
960
|
+
};
|
|
961
|
+
|
|
962
|
+
return layer.type === LAYER_TYPE.Choropleth ? getChoroplethValues(layer) : getClusterValues(layer);
|
|
963
|
+
};
|
|
964
|
+
/**
|
|
965
|
+
* Returns the min and max LongLat pairs to determine the layer boundaries to fit all markers/bubbles
|
|
966
|
+
* @param {LayerType[]} layers
|
|
967
|
+
* @returns {LngLatBoundsLike}
|
|
968
|
+
*/
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
var getGlobalLayerBoundaries = function getGlobalLayerBoundaries(layers) {
|
|
972
|
+
var isLayerValid = function isLayerValid(field) {
|
|
973
|
+
return layers.every(function (layer) {
|
|
974
|
+
return layer[field] || layer.geom;
|
|
975
|
+
});
|
|
976
|
+
};
|
|
977
|
+
|
|
978
|
+
var getDefaultMax = function getDefaultMax(field) {
|
|
979
|
+
return field === LONGITUDE ? exports.MAX_LONGITUDE : exports.MAX_LATITUDE;
|
|
980
|
+
};
|
|
981
|
+
|
|
982
|
+
var getDefaultMin = function getDefaultMin(field) {
|
|
983
|
+
return field === LONGITUDE ? exports.MIN_LONGITUDE : exports.MIN_LATITUDE;
|
|
984
|
+
};
|
|
985
|
+
|
|
986
|
+
if (!layers || !Array.isArray(layers) || !layers.length) {
|
|
987
|
+
return null;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
var getMin = function getMin(field) {
|
|
991
|
+
if (!isLayerValid(field)) {
|
|
992
|
+
return getDefaultMin(field);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
return layers.reduce(function (prevVal, layer) {
|
|
996
|
+
var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(function (x) {
|
|
997
|
+
return +x;
|
|
998
|
+
});
|
|
999
|
+
return lodash_1.min([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
|
|
1000
|
+
}, getDefaultMax(field));
|
|
1001
|
+
};
|
|
1002
|
+
|
|
1003
|
+
var getMax = function getMax(field) {
|
|
1004
|
+
if (!isLayerValid(field)) {
|
|
1005
|
+
return getDefaultMax(field);
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
return layers.reduce(function (prevVal, layer) {
|
|
1009
|
+
var coordinatesNumArr = getLatOrLonCoordinates(layer, field).map(Number);
|
|
1010
|
+
return lodash_1.max([prevVal].concat(_toConsumableArray(coordinatesNumArr)));
|
|
1011
|
+
}, getDefaultMin(field));
|
|
1012
|
+
};
|
|
1013
|
+
|
|
1014
|
+
return [[getMin(LONGITUDE), getMin(LATITUDE)], [getMax(LONGITUDE), getMax(LATITUDE)]];
|
|
1015
|
+
};
|
|
1016
|
+
|
|
1017
|
+
exports.getGlobalLayerBoundaries = getGlobalLayerBoundaries;
|
|
1018
|
+
|
|
1019
|
+
var getScaledOpacities = function getScaledOpacities(colors, cfgOpacity) {
|
|
1020
|
+
// extract opacity information from 8 digit hex codes
|
|
1021
|
+
var opacities = colors === null || colors === void 0 ? void 0 : colors.map(function (color) {
|
|
1022
|
+
var _a;
|
|
1023
|
+
|
|
1024
|
+
return (color === null || color === void 0 ? void 0 : color.length) === 9 ? (_a = chroma(color).alpha()) !== null && _a !== void 0 ? _a : 1 : 1;
|
|
1025
|
+
}); // opacity cannot be greater than configured opacity
|
|
1026
|
+
|
|
1027
|
+
return opacities === null || opacities === void 0 ? void 0 : opacities.map(function (opacity) {
|
|
1028
|
+
return opacity * cfgOpacity;
|
|
1029
|
+
});
|
|
1030
|
+
};
|
|
1031
|
+
|
|
1032
|
+
exports.getScaledOpacities = getScaledOpacities;
|
|
1033
|
+
|
|
1034
|
+
var compareBaseStyles = function compareBaseStyles(curr, next) {
|
|
1035
|
+
var _a, _b, _c, _d;
|
|
1036
|
+
|
|
1037
|
+
var currBaseLayer = (_a = curr === null || curr === void 0 ? void 0 : curr.layers) === null || _a === void 0 ? void 0 : _a.find(function (layer) {
|
|
1038
|
+
return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
|
|
1039
|
+
});
|
|
1040
|
+
var nextBaseLayer = (_b = next === null || next === void 0 ? void 0 : next.layers) === null || _b === void 0 ? void 0 : _b.find(function (layer) {
|
|
1041
|
+
return (layer === null || layer === void 0 ? void 0 : layer.id) === 'base-layer';
|
|
1042
|
+
});
|
|
1043
|
+
var currBaseSource = 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 : '');
|
|
1044
|
+
var nextBaseSource = 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 : '');
|
|
1045
|
+
|
|
1046
|
+
if (!currBaseLayer || !nextBaseLayer || !currBaseSource || !nextBaseSource) {
|
|
1047
|
+
return false;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
return lodash_1.isEqual(currBaseLayer, nextBaseLayer) && lodash_1.isEqual(currBaseSource, nextBaseSource);
|
|
1051
|
+
};
|
|
1052
|
+
|
|
1053
|
+
exports.compareBaseStyles = compareBaseStyles;
|
|
1054
|
+
|
|
1055
|
+
var formatMetadata = function formatMetadata(choroplethLayer, i) {
|
|
1056
|
+
if (!choroplethLayer || !choroplethLayer.areaIds || !choroplethLayer.areaValues) return {};
|
|
1057
|
+
if (i >= choroplethLayer.areaIds.length) return {};
|
|
1058
|
+
var metadata = choroplethLayer.metadata ? choroplethLayer.metadata[i] : {};
|
|
1059
|
+
var name = choroplethLayer.areaIds[i];
|
|
1060
|
+
var value = choroplethLayer.areaValues[i];
|
|
1061
|
+
var base = {
|
|
1062
|
+
name: name,
|
|
1063
|
+
value: String(value)
|
|
1064
|
+
};
|
|
1065
|
+
return Object.keys(metadata).reduce(function (result, curr) {
|
|
1066
|
+
var key = "row.".concat(curr, ".value");
|
|
1067
|
+
var val = lodash_1.isObject(metadata[curr]) ? JSON.stringify(metadata[curr]) : String(metadata[curr]);
|
|
1068
|
+
return Object.assign(Object.assign({}, result), _defineProperty({}, key, val));
|
|
1069
|
+
}, base);
|
|
1070
|
+
};
|
|
1071
|
+
|
|
1072
|
+
exports.formatMetadata = formatMetadata;
|
|
189
1073
|
|
|
190
1074
|
/***/ }),
|
|
191
|
-
/*
|
|
1075
|
+
/* 24 */
|
|
192
1076
|
/***/ (function(module, exports) {
|
|
193
1077
|
|
|
194
|
-
module.exports = require("
|
|
1078
|
+
module.exports = require("d3-scale");
|
|
1079
|
+
|
|
1080
|
+
/***/ }),
|
|
1081
|
+
/* 25 */
|
|
1082
|
+
/***/ (function(module, exports) {
|
|
1083
|
+
|
|
1084
|
+
module.exports = require("chroma-js");
|
|
1085
|
+
|
|
1086
|
+
/***/ }),
|
|
1087
|
+
/* 26 */
|
|
1088
|
+
/***/ (function(module, exports) {
|
|
1089
|
+
|
|
1090
|
+
module.exports = require("@splunk/visualization-color-palettes");
|
|
1091
|
+
|
|
1092
|
+
/***/ }),
|
|
1093
|
+
/* 27 */
|
|
1094
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1095
|
+
|
|
1096
|
+
"use strict";
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
var _slicedToArray = __webpack_require__(7);
|
|
1100
|
+
|
|
1101
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
1102
|
+
var t = {};
|
|
1103
|
+
|
|
1104
|
+
for (var p in s) {
|
|
1105
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
1109
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
1110
|
+
}
|
|
1111
|
+
return t;
|
|
1112
|
+
};
|
|
1113
|
+
|
|
1114
|
+
Object.defineProperty(exports, "__esModule", {
|
|
1115
|
+
value: true
|
|
1116
|
+
});
|
|
1117
|
+
|
|
1118
|
+
var maplibre_gl_1 = __webpack_require__(28);
|
|
1119
|
+
|
|
1120
|
+
var React = __webpack_require__(3);
|
|
1121
|
+
|
|
1122
|
+
var Tooltip_1 = __webpack_require__(29);
|
|
1123
|
+
|
|
1124
|
+
var MarkerWrapper = function MarkerWrapper(_a) {
|
|
1125
|
+
var longitude = _a.longitude,
|
|
1126
|
+
latitude = _a.latitude,
|
|
1127
|
+
areaId = _a.areaId,
|
|
1128
|
+
areaValue = _a.areaValue,
|
|
1129
|
+
_a$additionalFields = _a.additionalFields,
|
|
1130
|
+
additionalFields = _a$additionalFields === void 0 ? [] : _a$additionalFields,
|
|
1131
|
+
map = _a.map,
|
|
1132
|
+
isChoroplethTooltipOpen = _a.isChoroplethTooltipOpen,
|
|
1133
|
+
children = _a.children,
|
|
1134
|
+
otherProps = __rest(_a, ["longitude", "latitude", "areaId", "areaValue", "additionalFields", "map", "isChoroplethTooltipOpen", "children"]);
|
|
1135
|
+
|
|
1136
|
+
var container = React.useRef();
|
|
1137
|
+
var marker = React.useRef();
|
|
1138
|
+
|
|
1139
|
+
var _React$useState = React.useState(false),
|
|
1140
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
1141
|
+
isTooltipOpen = _React$useState2[0],
|
|
1142
|
+
setTooltipOpenStatus = _React$useState2[1];
|
|
1143
|
+
|
|
1144
|
+
var isChoroplethTooltip = React.useCallback(function () {
|
|
1145
|
+
return isChoroplethTooltipOpen !== undefined;
|
|
1146
|
+
}, [isChoroplethTooltipOpen]);
|
|
1147
|
+
var openTooltip = React.useCallback(function () {
|
|
1148
|
+
return setTooltipOpenStatus(true);
|
|
1149
|
+
}, []);
|
|
1150
|
+
var closeTooltip = React.useCallback(function () {
|
|
1151
|
+
return setTooltipOpenStatus(false);
|
|
1152
|
+
}, []);
|
|
1153
|
+
var cleanupMarker = React.useCallback(function () {
|
|
1154
|
+
if (marker.current) {
|
|
1155
|
+
marker.current.remove();
|
|
1156
|
+
marker.current = undefined;
|
|
1157
|
+
}
|
|
1158
|
+
}, []);
|
|
1159
|
+
React.useEffect(function () {
|
|
1160
|
+
try {
|
|
1161
|
+
if (marker.current) {
|
|
1162
|
+
marker.current.setLngLat([longitude, latitude]);
|
|
1163
|
+
} else {
|
|
1164
|
+
marker.current = new maplibre_gl_1.Marker(container.current);
|
|
1165
|
+
marker.current.setLngLat([longitude, latitude]);
|
|
1166
|
+
marker.current.addTo(map.current);
|
|
1167
|
+
}
|
|
1168
|
+
} catch (error) {
|
|
1169
|
+
console.error(error);
|
|
1170
|
+
cleanupMarker();
|
|
1171
|
+
}
|
|
1172
|
+
}, [latitude, longitude, map]);
|
|
1173
|
+
React.useEffect(function () {
|
|
1174
|
+
return cleanupMarker;
|
|
1175
|
+
}, []);
|
|
1176
|
+
return React.createElement("div", {
|
|
1177
|
+
style: {
|
|
1178
|
+
visibility: isChoroplethTooltip() ? 'hidden' : 'visible'
|
|
1179
|
+
}
|
|
1180
|
+
}, React.createElement("div", Object.assign({
|
|
1181
|
+
style: {
|
|
1182
|
+
visibility: isChoroplethTooltip() ? 'hidden' : 'visible'
|
|
1183
|
+
},
|
|
1184
|
+
ref: container,
|
|
1185
|
+
"data-test": "map-marker",
|
|
1186
|
+
onMouseOver: openTooltip,
|
|
1187
|
+
onMouseLeave: closeTooltip,
|
|
1188
|
+
onFocus: openTooltip,
|
|
1189
|
+
onBlur: closeTooltip
|
|
1190
|
+
}, otherProps), children), React.createElement("div", null, React.createElement(Tooltip_1.default, {
|
|
1191
|
+
open: isChoroplethTooltip() ? isChoroplethTooltipOpen : isTooltipOpen,
|
|
1192
|
+
anchor: container.current,
|
|
1193
|
+
latitude: isChoroplethTooltip() ? null : latitude,
|
|
1194
|
+
longitude: isChoroplethTooltip() ? null : longitude,
|
|
1195
|
+
areaId: areaId,
|
|
1196
|
+
areaValue: areaValue,
|
|
1197
|
+
additionalFields: additionalFields
|
|
1198
|
+
})));
|
|
1199
|
+
};
|
|
1200
|
+
|
|
1201
|
+
exports.default = MarkerWrapper;
|
|
1202
|
+
|
|
1203
|
+
/***/ }),
|
|
1204
|
+
/* 28 */
|
|
1205
|
+
/***/ (function(module, exports) {
|
|
1206
|
+
|
|
1207
|
+
module.exports = require("maplibre-gl");
|
|
1208
|
+
|
|
1209
|
+
/***/ }),
|
|
1210
|
+
/* 29 */
|
|
1211
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1212
|
+
|
|
1213
|
+
"use strict";
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
Object.defineProperty(exports, "__esModule", {
|
|
1217
|
+
value: true
|
|
1218
|
+
});
|
|
1219
|
+
exports.convertDegToDMS = void 0;
|
|
1220
|
+
|
|
1221
|
+
var React = __webpack_require__(3);
|
|
1222
|
+
|
|
1223
|
+
var styled_components_1 = __webpack_require__(10);
|
|
1224
|
+
|
|
1225
|
+
var Popover_1 = __webpack_require__(30);
|
|
1226
|
+
|
|
1227
|
+
var i18n_1 = __webpack_require__(31);
|
|
1228
|
+
|
|
1229
|
+
var StyledPopover = styled_components_1.default(Popover_1.default).withConfig({
|
|
1230
|
+
displayName: "Tooltip__StyledPopover",
|
|
1231
|
+
componentId: "xwewsa-0"
|
|
1232
|
+
})(["width:250px;font-size:12px;"]);
|
|
1233
|
+
var StyledTable = styled_components_1.default.table.withConfig({
|
|
1234
|
+
displayName: "Tooltip__StyledTable",
|
|
1235
|
+
componentId: "xwewsa-1"
|
|
1236
|
+
})(["margin:2px 6px 2px 6px;width:calc(100% - 12px);"]);
|
|
1237
|
+
var StyledTitleColumn = styled_components_1.default.td.withConfig({
|
|
1238
|
+
displayName: "Tooltip__StyledTitleColumn",
|
|
1239
|
+
componentId: "xwewsa-2"
|
|
1240
|
+
})(["opacity:0.85;"]);
|
|
1241
|
+
var StyledValueColumn = styled_components_1.default.td.withConfig({
|
|
1242
|
+
displayName: "Tooltip__StyledValueColumn",
|
|
1243
|
+
componentId: "xwewsa-3"
|
|
1244
|
+
})(["text-align:right;"]);
|
|
1245
|
+
var StyledColorBlock = styled_components_1.default.div.withConfig({
|
|
1246
|
+
displayName: "Tooltip__StyledColorBlock",
|
|
1247
|
+
componentId: "xwewsa-4"
|
|
1248
|
+
})(["background-color:", ";display:inline-block;margin-right:4px;border-radius:2px;width:6px;height:11px;transform:translateY(1px);"], function (props) {
|
|
1249
|
+
return props.color;
|
|
1250
|
+
});
|
|
1251
|
+
|
|
1252
|
+
var convertDegToDMS = function convertDegToDMS(decimalDegree, type) {
|
|
1253
|
+
var truncate = function truncate(n) {
|
|
1254
|
+
return n > 0 ? Math.floor(n) : Math.ceil(n);
|
|
1255
|
+
};
|
|
1256
|
+
|
|
1257
|
+
var absoluteDegree = Math.abs(decimalDegree);
|
|
1258
|
+
var degrees = truncate(absoluteDegree);
|
|
1259
|
+
var minutes = truncate((absoluteDegree - degrees) * 60);
|
|
1260
|
+
var seconds = Math.round((absoluteDegree - degrees - minutes / 60) * 3600);
|
|
1261
|
+
|
|
1262
|
+
if (seconds === 60) {
|
|
1263
|
+
minutes += 1;
|
|
1264
|
+
seconds = 0;
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
if (minutes === 60) {
|
|
1268
|
+
degrees += 1;
|
|
1269
|
+
minutes = 0;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
var direction;
|
|
1273
|
+
|
|
1274
|
+
if (type === 'longitude') {
|
|
1275
|
+
direction = decimalDegree < 0 ? 'W' : 'E';
|
|
1276
|
+
} else if (type === 'latitude') {
|
|
1277
|
+
direction = decimalDegree < 0 ? 'S' : 'N';
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
return "".concat(degrees, "\xB0 ").concat(minutes, "' ").concat(seconds, "\" ").concat(direction);
|
|
1281
|
+
};
|
|
1282
|
+
|
|
1283
|
+
exports.convertDegToDMS = convertDegToDMS; // only want latitude/longitude for marker and bubble
|
|
1284
|
+
// omit for choropleth, and put areaid, areavalue instead
|
|
1285
|
+
|
|
1286
|
+
var Tooltip = function Tooltip(_ref) {
|
|
1287
|
+
var open = _ref.open,
|
|
1288
|
+
anchor = _ref.anchor,
|
|
1289
|
+
latitude = _ref.latitude,
|
|
1290
|
+
longitude = _ref.longitude,
|
|
1291
|
+
areaId = _ref.areaId,
|
|
1292
|
+
areaValue = _ref.areaValue,
|
|
1293
|
+
_ref$additionalFields = _ref.additionalFields,
|
|
1294
|
+
additionalFields = _ref$additionalFields === void 0 ? [] : _ref$additionalFields;
|
|
1295
|
+
return React.createElement(StyledPopover, {
|
|
1296
|
+
open: open,
|
|
1297
|
+
anchor: anchor,
|
|
1298
|
+
"data-test": "map-marker-tooltip",
|
|
1299
|
+
defaultPlacement: "above"
|
|
1300
|
+
}, React.createElement(StyledTable, null, React.createElement("tbody", null, areaId && areaValue && React.createElement("tr", null, React.createElement(StyledTitleColumn, {
|
|
1301
|
+
"data-test": "area-id"
|
|
1302
|
+
}, areaId), React.createElement(StyledValueColumn, {
|
|
1303
|
+
"data-test": "area-value"
|
|
1304
|
+
}, areaValue)), latitude && React.createElement("tr", null, React.createElement(StyledTitleColumn, null, i18n_1._('Latitude')), React.createElement(StyledValueColumn, {
|
|
1305
|
+
"data-test": "latitude"
|
|
1306
|
+
}, exports.convertDegToDMS(latitude, 'latitude'))), longitude && React.createElement("tr", null, React.createElement(StyledTitleColumn, null, i18n_1._('Longitude')), React.createElement(StyledValueColumn, {
|
|
1307
|
+
"data-test": "longitude"
|
|
1308
|
+
}, exports.convertDegToDMS(longitude, 'longitude'))), additionalFields.map(function (_ref2, index) {
|
|
1309
|
+
var name = _ref2.name,
|
|
1310
|
+
value = _ref2.value,
|
|
1311
|
+
color = _ref2.color;
|
|
1312
|
+
return React.createElement("tr", {
|
|
1313
|
+
key: String(index)
|
|
1314
|
+
}, React.createElement(StyledTitleColumn, {
|
|
1315
|
+
"data-test": "field-title"
|
|
1316
|
+
}, color ? React.createElement(StyledColorBlock, {
|
|
1317
|
+
"data-test": "field-color",
|
|
1318
|
+
color: color
|
|
1319
|
+
}) : null, name), React.createElement(StyledValueColumn, {
|
|
1320
|
+
"data-test": "field-value"
|
|
1321
|
+
}, value));
|
|
1322
|
+
}))));
|
|
1323
|
+
};
|
|
1324
|
+
|
|
1325
|
+
exports.default = Tooltip;
|
|
1326
|
+
|
|
1327
|
+
/***/ }),
|
|
1328
|
+
/* 30 */
|
|
1329
|
+
/***/ (function(module, exports) {
|
|
1330
|
+
|
|
1331
|
+
module.exports = require("@splunk/react-ui/Popover");
|
|
1332
|
+
|
|
1333
|
+
/***/ }),
|
|
1334
|
+
/* 31 */
|
|
1335
|
+
/***/ (function(module, exports) {
|
|
1336
|
+
|
|
1337
|
+
module.exports = require("@splunk/ui-utils/i18n");
|
|
195
1338
|
|
|
196
1339
|
/***/ })
|
|
197
1340
|
/******/ ]);
|