@mwater/visualization 5.4.5 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/lib/MWaterContextComponent.d.ts +1 -1
  2. package/lib/MWaterContextComponent.js +1 -1
  3. package/lib/MWaterGlobalFiltersComponent.d.ts +2 -2
  4. package/lib/MWaterGlobalFiltersComponent.js +11 -20
  5. package/lib/MWaterLoaderComponent.d.ts +5 -14
  6. package/lib/MWaterLoaderComponent.js +2 -11
  7. package/lib/UndoStack.d.ts +2 -1
  8. package/lib/UndoStack.js +12 -6
  9. package/lib/dashboards/DashboardComponent.js +7 -5
  10. package/lib/dashboards/DashboardDesign.d.ts +1 -1
  11. package/lib/dashboards/LayoutOptionsComponent.js +18 -11
  12. package/lib/dashboards/ServerDashboardDataSource.d.ts +10 -1
  13. package/lib/dashboards/ServerDashboardDataSource.js +29 -10
  14. package/lib/dashboards/SettingsModalComponent.js +1 -1
  15. package/lib/dashboards/layoutOptions.d.ts +5 -1
  16. package/lib/datagrids/DatagridComponent.js +23 -3
  17. package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -3
  18. package/lib/datagrids/DatagridDesignerComponent.js +108 -120
  19. package/lib/datagrids/DatagridViewComponent.js +3 -2
  20. package/lib/datagrids/ExprCellComponent.d.ts +1 -0
  21. package/lib/datagrids/ExprCellComponent.js +22 -20
  22. package/lib/datagrids/OrderBysDesignerComponent.d.ts +7 -7
  23. package/lib/datagrids/OrderBysDesignerComponent.js +19 -28
  24. package/lib/index.css +45 -2
  25. package/lib/index.d.ts +5 -5
  26. package/lib/index.js +2 -3
  27. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +8 -1
  28. package/lib/layouts/blocks/BlocksDisplayComponent.js +46 -4
  29. package/lib/maps/BufferLayer.d.ts +18 -0
  30. package/lib/maps/BufferLayer.js +36 -14
  31. package/lib/maps/BufferLayerDesign.d.ts +1 -1
  32. package/lib/maps/BufferLayerDesignerComponent.js +2 -2
  33. package/lib/maps/ChoroplethLayer.d.ts +18 -0
  34. package/lib/maps/ChoroplethLayer.js +46 -25
  35. package/lib/maps/ChoroplethLayerDesign.d.ts +7 -3
  36. package/lib/maps/ChoroplethLayerDesigner.d.ts +10 -22
  37. package/lib/maps/ChoroplethLayerDesigner.js +58 -89
  38. package/lib/maps/DirectMapDataSource.js +17 -10
  39. package/lib/maps/EditHoverOver.d.ts +4 -3
  40. package/lib/maps/EditHoverOver.js +64 -35
  41. package/lib/maps/HoverContent.d.ts +10 -5
  42. package/lib/maps/HoverContent.js +7 -36
  43. package/lib/maps/Layer.d.ts +37 -0
  44. package/lib/maps/Layer.js +30 -4
  45. package/lib/maps/LeafletMapComponent.js +10 -19
  46. package/lib/maps/MWaterServerLayer.d.ts +2 -2
  47. package/lib/maps/MWaterServerLayer.js +6 -6
  48. package/lib/maps/MapComponent.js +0 -1
  49. package/lib/maps/MapLayerDataSource.d.ts +9 -0
  50. package/lib/maps/MapUtils.d.ts +19 -1
  51. package/lib/maps/MapUtils.js +80 -1
  52. package/lib/maps/MarkersLayer.d.ts +18 -0
  53. package/lib/maps/MarkersLayer.js +42 -26
  54. package/lib/maps/MarkersLayerDesign.d.ts +1 -1
  55. package/lib/maps/MarkersLayerDesignerComponent.d.ts +12 -28
  56. package/lib/maps/MarkersLayerDesignerComponent.js +81 -111
  57. package/lib/maps/RasterMapViewComponent.js +1 -1
  58. package/lib/maps/ServerMapDataSource.d.ts +9 -0
  59. package/lib/maps/ServerMapDataSource.js +29 -10
  60. package/lib/maps/VectorMapViewComponent.js +7 -15
  61. package/lib/maps/maps.d.ts +4 -2
  62. package/lib/maps/symbols/font-awesome/asterisk.png +0 -0
  63. package/lib/maps/symbols/font-awesome/ban.png +0 -0
  64. package/lib/maps/symbols/font-awesome/beer.png +0 -0
  65. package/lib/maps/symbols/font-awesome/bell.png +0 -0
  66. package/lib/maps/symbols/font-awesome/bolt.png +0 -0
  67. package/lib/maps/symbols/font-awesome/building.png +0 -0
  68. package/lib/maps/symbols/font-awesome/bullseye.png +0 -0
  69. package/lib/maps/symbols/font-awesome/bus.png +0 -0
  70. package/lib/maps/symbols/font-awesome/caret-up.png +0 -0
  71. package/lib/maps/symbols/font-awesome/certificate.png +0 -0
  72. package/lib/maps/symbols/font-awesome/check-circle.png +0 -0
  73. package/lib/maps/symbols/font-awesome/check.png +0 -0
  74. package/lib/maps/symbols/font-awesome/chevron-circle-down.png +0 -0
  75. package/lib/maps/symbols/font-awesome/chevron-circle-up.png +0 -0
  76. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  77. package/lib/maps/symbols/font-awesome/cloud.png +0 -0
  78. package/lib/maps/symbols/font-awesome/comment.png +0 -0
  79. package/lib/maps/symbols/font-awesome/crosshairs.png +0 -0
  80. package/lib/maps/symbols/font-awesome/dot-circle-o.png +0 -0
  81. package/lib/maps/symbols/font-awesome/exclamation-circle.png +0 -0
  82. package/lib/maps/symbols/font-awesome/exclamation-triangle.png +0 -0
  83. package/lib/maps/symbols/font-awesome/female.png +0 -0
  84. package/lib/maps/symbols/font-awesome/file.png +0 -0
  85. package/lib/maps/symbols/font-awesome/flag.png +0 -0
  86. package/lib/maps/symbols/font-awesome/flask.png +0 -0
  87. package/lib/maps/symbols/font-awesome/h-square.png +0 -0
  88. package/lib/maps/symbols/font-awesome/home.png +0 -0
  89. package/lib/maps/symbols/font-awesome/info-circle.png +0 -0
  90. package/lib/maps/symbols/font-awesome/male.png +0 -0
  91. package/lib/maps/symbols/font-awesome/medkit.png +0 -0
  92. package/lib/maps/symbols/font-awesome/mobile.png +0 -0
  93. package/lib/maps/symbols/font-awesome/plus-circle.png +0 -0
  94. package/lib/maps/symbols/font-awesome/plus-square.png +0 -0
  95. package/lib/maps/symbols/font-awesome/plus.png +0 -0
  96. package/lib/maps/symbols/font-awesome/square.png +0 -0
  97. package/lib/maps/symbols/font-awesome/star.png +0 -0
  98. package/lib/maps/symbols/font-awesome/thumbs-down.png +0 -0
  99. package/lib/maps/symbols/font-awesome/thumbs-up.png +0 -0
  100. package/lib/maps/symbols/font-awesome/ticket.png +0 -0
  101. package/lib/maps/symbols/font-awesome/times-circle.png +0 -0
  102. package/lib/maps/symbols/font-awesome/times.png +0 -0
  103. package/lib/maps/symbols/font-awesome/tint.png +0 -0
  104. package/lib/maps/symbols/font-awesome/tree.png +0 -0
  105. package/lib/maps/symbols/font-awesome/university.png +0 -0
  106. package/lib/maps/symbols/font-awesome/usd.png +0 -0
  107. package/lib/maps/symbols/font-awesome/user.png +0 -0
  108. package/lib/maps/symbols/font-awesome/users.png +0 -0
  109. package/lib/maps/symbols/font-awesome/wheelchair.png +0 -0
  110. package/lib/maps/symbols/sdf-ize.sh +93 -0
  111. package/lib/maps/vectorMaps.d.ts +1 -0
  112. package/lib/maps/vectorMaps.js +20 -36
  113. package/lib/mwater_table_selection/FormsListComponent.d.ts +33 -0
  114. package/lib/mwater_table_selection/FormsListComponent.js +141 -0
  115. package/lib/mwater_table_selection/IndicatorsListComponent.d.ts +49 -0
  116. package/lib/mwater_table_selection/IndicatorsListComponent.js +251 -0
  117. package/lib/mwater_table_selection/IssuesListComponent.d.ts +29 -0
  118. package/lib/mwater_table_selection/IssuesListComponent.js +123 -0
  119. package/lib/mwater_table_selection/MWaterAccountingSystemListComponent.d.ts +20 -0
  120. package/lib/mwater_table_selection/MWaterAccountingSystemListComponent.js +157 -0
  121. package/lib/mwater_table_selection/MWaterAssetSystemsListComponent.d.ts +17 -0
  122. package/lib/mwater_table_selection/MWaterAssetSystemsListComponent.js +79 -0
  123. package/lib/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.d.ts +18 -0
  124. package/lib/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.js +80 -0
  125. package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.d.ts +63 -0
  126. package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.js +461 -0
  127. package/lib/mwater_table_selection/MWaterCustomTablesetListComponent.d.ts +17 -0
  128. package/lib/mwater_table_selection/MWaterCustomTablesetListComponent.js +94 -0
  129. package/lib/mwater_table_selection/MWaterMetricsTableListComponent.d.ts +17 -0
  130. package/lib/mwater_table_selection/MWaterMetricsTableListComponent.js +80 -0
  131. package/lib/mwater_table_selection/MWaterTableSelectComponent.d.ts +32 -0
  132. package/lib/mwater_table_selection/MWaterTableSelectComponent.js +163 -0
  133. package/lib/mwater_table_selection/MWaterWorkflowsSelectComponent.d.ts +19 -0
  134. package/lib/mwater_table_selection/MWaterWorkflowsSelectComponent.js +111 -0
  135. package/lib/quickfilter/QuickfiltersComponent.d.ts +3 -102
  136. package/lib/quickfilter/QuickfiltersComponent.js +53 -110
  137. package/lib/quickfilter/TextLiteralComponent.d.ts +23 -47
  138. package/lib/quickfilter/TextLiteralComponent.js +85 -82
  139. package/lib/widgets/MapWidget.js +4 -2
  140. package/lib/widgets/charts/Chart.d.ts +11 -0
  141. package/lib/widgets/charts/Chart.js +15 -0
  142. package/lib/widgets/charts/ChartWidgetComponent.d.ts +1 -0
  143. package/lib/widgets/charts/ChartWidgetComponent.js +27 -1
  144. package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +1 -1
  145. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +1 -1
  146. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +5 -12
  147. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +43 -57
  148. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +113 -110
  149. package/lib/widgets/charts/layered/LayeredChartUtils.d.ts +2 -1
  150. package/lib/widgets/charts/layered/LayeredChartUtils.js +0 -2
  151. package/lib/widgets/charts/pivot/PivotChart.d.ts +2 -0
  152. package/lib/widgets/charts/pivot/PivotChart.js +156 -0
  153. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +5 -20
  154. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +31 -61
  155. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +4 -0
  156. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +4 -2
  157. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.d.ts +5 -44
  158. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +38 -63
  159. package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +7 -68
  160. package/lib/widgets/charts/pivot/SegmentDesignerComponent.js +58 -106
  161. package/lib/widgets/charts/table/TableChart.d.ts +2 -0
  162. package/lib/widgets/charts/table/TableChart.js +172 -1
  163. package/lib/widgets/charts/table/TableChartDesignerComponent.d.ts +7 -17
  164. package/lib/widgets/charts/table/TableChartDesignerComponent.js +79 -95
  165. package/lib/widgets/charts/table/TableChartViewComponent.d.ts +1 -7
  166. package/lib/widgets/charts/table/TableChartViewComponent.js +19 -27
  167. package/lib/widgets/text/ExprItemEditorComponent.d.ts +3 -8
  168. package/lib/widgets/text/ExprItemEditorComponent.js +36 -33
  169. package/lib/widgets/text/ExprUpdateModalComponent.d.ts +1 -0
  170. package/package.json +4 -10
  171. package/src/MWaterContextComponent.tsx +2 -2
  172. package/src/{MWaterGlobalFiltersComponent.ts → MWaterGlobalFiltersComponent.tsx} +32 -33
  173. package/src/{MWaterLoaderComponent.ts → MWaterLoaderComponent.tsx} +18 -19
  174. package/src/UndoStack.ts +14 -6
  175. package/src/dashboards/DashboardComponent.tsx +7 -5
  176. package/src/dashboards/DashboardDesign.ts +1 -1
  177. package/src/dashboards/LayoutOptionsComponent.tsx +22 -10
  178. package/src/dashboards/ServerDashboardDataSource.ts +36 -13
  179. package/src/dashboards/SettingsModalComponent.tsx +1 -1
  180. package/src/dashboards/layoutOptions.tsx +5 -1
  181. package/src/datagrids/DatagridComponent.tsx +31 -3
  182. package/src/datagrids/DatagridDesignerComponent.tsx +241 -229
  183. package/src/datagrids/DatagridViewComponent.tsx +3 -2
  184. package/src/datagrids/ExprCellComponent.tsx +23 -20
  185. package/src/datagrids/OrderBysDesignerComponent.tsx +61 -70
  186. package/src/index.css +45 -2
  187. package/src/index.ts +5 -11
  188. package/src/layouts/blocks/BlocksDisplayComponent.tsx +60 -5
  189. package/src/maps/BufferLayer.ts +48 -20
  190. package/src/maps/BufferLayerDesign.ts +1 -1
  191. package/src/maps/BufferLayerDesignerComponent.tsx +2 -1
  192. package/src/maps/ChoroplethLayer.ts +70 -39
  193. package/src/maps/ChoroplethLayerDesign.ts +6 -2
  194. package/src/maps/ChoroplethLayerDesigner.tsx +171 -167
  195. package/src/maps/DirectMapDataSource.ts +21 -13
  196. package/src/maps/EditHoverOver.tsx +98 -54
  197. package/src/maps/HoverContent.tsx +17 -48
  198. package/src/maps/Layer.ts +42 -4
  199. package/src/maps/LeafletMapComponent.tsx +10 -19
  200. package/src/maps/MWaterServerLayer.ts +6 -6
  201. package/src/maps/MapComponent.ts +0 -1
  202. package/src/maps/MapLayerDataSource.ts +8 -0
  203. package/src/maps/MapUtils.ts +82 -3
  204. package/src/maps/MarkersLayer.ts +54 -27
  205. package/src/maps/MarkersLayerDesign.ts +1 -1
  206. package/src/maps/MarkersLayerDesignerComponent.tsx +360 -0
  207. package/src/maps/RasterMapViewComponent.ts +1 -1
  208. package/src/maps/ServerMapDataSource.ts +35 -12
  209. package/src/maps/VectorMapViewComponent.tsx +8 -19
  210. package/src/maps/maps.ts +4 -2
  211. package/src/maps/symbols/font-awesome/asterisk.png +0 -0
  212. package/src/maps/symbols/font-awesome/ban.png +0 -0
  213. package/src/maps/symbols/font-awesome/beer.png +0 -0
  214. package/src/maps/symbols/font-awesome/bell.png +0 -0
  215. package/src/maps/symbols/font-awesome/bolt.png +0 -0
  216. package/src/maps/symbols/font-awesome/building.png +0 -0
  217. package/src/maps/symbols/font-awesome/bullseye.png +0 -0
  218. package/src/maps/symbols/font-awesome/bus.png +0 -0
  219. package/src/maps/symbols/font-awesome/caret-up.png +0 -0
  220. package/src/maps/symbols/font-awesome/certificate.png +0 -0
  221. package/src/maps/symbols/font-awesome/check-circle.png +0 -0
  222. package/src/maps/symbols/font-awesome/check.png +0 -0
  223. package/src/maps/symbols/font-awesome/chevron-circle-down.png +0 -0
  224. package/src/maps/symbols/font-awesome/chevron-circle-up.png +0 -0
  225. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  226. package/src/maps/symbols/font-awesome/cloud.png +0 -0
  227. package/src/maps/symbols/font-awesome/comment.png +0 -0
  228. package/src/maps/symbols/font-awesome/crosshairs.png +0 -0
  229. package/src/maps/symbols/font-awesome/dot-circle-o.png +0 -0
  230. package/src/maps/symbols/font-awesome/exclamation-circle.png +0 -0
  231. package/src/maps/symbols/font-awesome/exclamation-triangle.png +0 -0
  232. package/src/maps/symbols/font-awesome/female.png +0 -0
  233. package/src/maps/symbols/font-awesome/file.png +0 -0
  234. package/src/maps/symbols/font-awesome/flag.png +0 -0
  235. package/src/maps/symbols/font-awesome/flask.png +0 -0
  236. package/src/maps/symbols/font-awesome/h-square.png +0 -0
  237. package/src/maps/symbols/font-awesome/home.png +0 -0
  238. package/src/maps/symbols/font-awesome/info-circle.png +0 -0
  239. package/src/maps/symbols/font-awesome/male.png +0 -0
  240. package/src/maps/symbols/font-awesome/medkit.png +0 -0
  241. package/src/maps/symbols/font-awesome/mobile.png +0 -0
  242. package/src/maps/symbols/font-awesome/plus-circle.png +0 -0
  243. package/src/maps/symbols/font-awesome/plus-square.png +0 -0
  244. package/src/maps/symbols/font-awesome/plus.png +0 -0
  245. package/src/maps/symbols/font-awesome/square.png +0 -0
  246. package/src/maps/symbols/font-awesome/star.png +0 -0
  247. package/src/maps/symbols/font-awesome/thumbs-down.png +0 -0
  248. package/src/maps/symbols/font-awesome/thumbs-up.png +0 -0
  249. package/src/maps/symbols/font-awesome/ticket.png +0 -0
  250. package/src/maps/symbols/font-awesome/times-circle.png +0 -0
  251. package/src/maps/symbols/font-awesome/times.png +0 -0
  252. package/src/maps/symbols/font-awesome/tint.png +0 -0
  253. package/src/maps/symbols/font-awesome/tree.png +0 -0
  254. package/src/maps/symbols/font-awesome/university.png +0 -0
  255. package/src/maps/symbols/font-awesome/usd.png +0 -0
  256. package/src/maps/symbols/font-awesome/user.png +0 -0
  257. package/src/maps/symbols/font-awesome/users.png +0 -0
  258. package/src/maps/symbols/font-awesome/wheelchair.png +0 -0
  259. package/src/maps/symbols/sdf-ize.sh +93 -0
  260. package/src/maps/vectorMaps.tsx +20 -44
  261. package/src/mwater_table_selection/FormsListComponent.tsx +188 -0
  262. package/src/mwater_table_selection/IndicatorsListComponent.tsx +411 -0
  263. package/src/mwater_table_selection/IssuesListComponent.tsx +167 -0
  264. package/src/mwater_table_selection/MWaterAccountingSystemListComponent.tsx +225 -0
  265. package/src/{MWaterAssetSystemsListComponent.tsx → mwater_table_selection/MWaterAssetSystemsListComponent.tsx} +2 -2
  266. package/src/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.tsx +111 -0
  267. package/src/mwater_table_selection/MWaterCompleteTableSelectComponent.tsx +713 -0
  268. package/src/{MWaterCustomTablesetListComponent.tsx → mwater_table_selection/MWaterCustomTablesetListComponent.tsx} +1 -1
  269. package/src/{MWaterMetricsTableListComponent.tsx → mwater_table_selection/MWaterMetricsTableListComponent.tsx} +1 -1
  270. package/src/{MWaterTableSelectComponent.tsx → mwater_table_selection/MWaterTableSelectComponent.tsx} +91 -90
  271. package/src/mwater_table_selection/MWaterWorkflowsSelectComponent.tsx +159 -0
  272. package/src/quickfilter/{QuickfiltersComponent.ts → QuickfiltersComponent.tsx} +165 -158
  273. package/src/quickfilter/TextLiteralComponent.tsx +197 -0
  274. package/src/widgets/MapWidget.tsx +9 -1
  275. package/src/widgets/charts/Chart.ts +17 -0
  276. package/src/widgets/charts/ChartWidgetComponent.tsx +36 -1
  277. package/src/widgets/charts/layered/LayeredChartDesign.ts +1 -1
  278. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +23 -24
  279. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +260 -211
  280. package/src/widgets/charts/layered/LayeredChartUtils.ts +7 -7
  281. package/src/widgets/charts/pivot/PivotChart.ts +191 -0
  282. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +124 -129
  283. package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +4 -2
  284. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +120 -149
  285. package/src/widgets/charts/pivot/SegmentDesignerComponent.tsx +178 -198
  286. package/src/widgets/charts/table/TableChart.ts +177 -1
  287. package/src/widgets/charts/table/TableChartDesignerComponent.tsx +422 -0
  288. package/src/widgets/charts/table/{TableChartViewComponent.ts → TableChartViewComponent.tsx} +65 -60
  289. package/src/widgets/text/ExprItemEditorComponent.tsx +83 -77
  290. package/src/widgets/text/ExprUpdateModalComponent.tsx +1 -0
  291. package/test/UndoStackTests.ts +52 -1
  292. package/.storybook/config.js +0 -7
  293. package/.storybook/head.html +0 -4
  294. package/.storybook/webpack.config.js +0 -15
  295. package/src/MWaterCompleteTableSelectComponent.tsx +0 -975
  296. package/src/maps/BingLayer.ts +0 -146
  297. package/src/maps/MarkersLayerDesignerComponent.ts +0 -374
  298. package/src/quickfilter/TextLiteralComponent.ts +0 -165
  299. package/src/widgets/charts/table/TableChartDesignerComponent.ts +0 -441
  300. package/stories/UpdateableComponent.js +0 -29
  301. package/stories/consoles.js +0 -202
  302. package/stories/dashboards.js +0 -217
  303. package/stories/datagridDesign.js +0 -114
  304. package/stories/datagrids.js +0 -69
  305. package/stories/dates.js +0 -80
  306. package/stories/exprcomponent.js +0 -43
  307. package/stories/index.js +0 -18
  308. package/stories/leaflet.js +0 -59
  309. package/stories/maps.js +0 -24
  310. package/stories/pivotChart.js +0 -235
@@ -28,10 +28,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const lodash_1 = __importDefault(require("lodash"));
30
30
  const react_1 = __importDefault(require("react"));
31
- const R = react_1.default.createElement;
32
31
  const expressions_ui_1 = require("@mwater/expressions-ui");
33
32
  const expressions_1 = require("@mwater/expressions");
34
- const AxisComponent_1 = __importDefault(require("./../axes/AxisComponent"));
33
+ const AxisComponent_1 = __importDefault(require("../axes/AxisComponent"));
35
34
  const ColorComponent_1 = __importDefault(require("../ColorComponent"));
36
35
  const expressions_ui_2 = require("@mwater/expressions-ui");
37
36
  const EditPopupComponent_1 = __importDefault(require("./EditPopupComponent"));
@@ -39,7 +38,7 @@ const ZoomLevelsComponent_1 = __importDefault(require("./ZoomLevelsComponent"));
39
38
  const MarkerSymbolSelectComponent_1 = __importDefault(require("./MarkerSymbolSelectComponent"));
40
39
  const PopupFilterJoinsUtils = __importStar(require("./PopupFilterJoinsUtils"));
41
40
  const ui = __importStar(require("@mwater/react-library/lib/bootstrap"));
42
- const EditHoverOver_1 = __importDefault(require("./EditHoverOver"));
41
+ const EditHoverOver_1 = require("./EditHoverOver");
43
42
  const rc_slider_1 = __importDefault(require("rc-slider"));
44
43
  // Designer for a markers layer
45
44
  class MarkersLayerDesignerComponent extends react_1.default.Component {
@@ -86,19 +85,22 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
86
85
  return this.update({ lineWidth });
87
86
  };
88
87
  renderTable() {
89
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("i", { className: "fa fa-database" }), " ", T `Data Source`), R("div", { style: { marginLeft: 10 } }, R(expressions_ui_2.TableSelectComponent, {
90
- schema: this.props.schema,
91
- value: this.props.design.table,
92
- onChange: this.handleTableChange,
93
- filter: this.props.design.filter,
94
- onFilterChange: this.handleFilterChange
95
- })));
88
+ return (react_1.default.createElement("div", { className: "mb-3" },
89
+ react_1.default.createElement("label", { className: "text-muted" },
90
+ react_1.default.createElement("i", { className: "fa fa-database" }),
91
+ " ",
92
+ T `Data Source`),
93
+ react_1.default.createElement("div", { style: { marginLeft: 10 } },
94
+ react_1.default.createElement(expressions_ui_2.TableSelectComponent, { schema: this.props.schema, value: this.props.design.table, onChange: this.handleTableChange, filter: this.props.design.filter, onFilterChange: this.handleFilterChange }))));
96
95
  }
97
96
  renderGeometryAxis() {
98
97
  if (!this.props.design.table) {
99
98
  return;
100
99
  }
101
- const title = R("span", null, R("span", { className: "fas fa-map-marker-alt" }), " ", T `Location`);
100
+ const title = react_1.default.createElement("span", null,
101
+ react_1.default.createElement("span", { className: "fas fa-map-marker-alt" }),
102
+ " ",
103
+ T `Location`);
102
104
  const filters = lodash_1.default.clone(this.props.filters) || [];
103
105
  if (this.props.design.filter != null) {
104
106
  const exprCompiler = new expressions_1.ExprCompiler(this.props.schema);
@@ -107,16 +109,10 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
107
109
  filters.push({ table: this.props.design.filter.table, jsonql });
108
110
  }
109
111
  }
110
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, title), R("div", { style: { marginLeft: 10 } }, R(AxisComponent_1.default, {
111
- schema: this.props.schema,
112
- dataSource: this.props.dataSource,
113
- table: this.props.design.table,
114
- types: ["geometry"],
115
- aggrNeed: "none",
116
- value: this.props.design.axes.geometry,
117
- onChange: this.handleGeometryAxisChange,
118
- filters
119
- })));
112
+ return (react_1.default.createElement("div", { className: "mb-3" },
113
+ react_1.default.createElement("label", { className: "text-muted" }, title),
114
+ react_1.default.createElement("div", { style: { marginLeft: 10 } },
115
+ react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["geometry"], aggrNeed: "none", value: this.props.design.axes.geometry, onChange: this.handleGeometryAxisChange, filters: filters }))));
120
116
  }
121
117
  renderColor() {
122
118
  if (!this.props.design.axes.geometry) {
@@ -130,140 +126,114 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
130
126
  filters.push({ table: this.props.design.filter.table, jsonql });
131
127
  }
132
128
  }
133
- return R("div", null, !this.props.design.axes.color
134
- ? R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-tint" }), T `Color`), R("div", null, R(ColorComponent_1.default, {
135
- color: this.props.design.color,
136
- onChange: this.handleColorChange
137
- })))
138
- : undefined, R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-tint" }), T `Color By Data`), R(AxisComponent_1.default, {
139
- schema: this.props.schema,
140
- dataSource: this.props.dataSource,
141
- table: this.props.design.table,
142
- types: ["text", "enum", "boolean", "date"],
143
- aggrNeed: "none",
144
- value: this.props.design.axes.color,
145
- defaultColor: this.props.design.color,
146
- showColorMap: true,
147
- onChange: this.handleColorAxisChange,
148
- allowExcludedValues: true,
149
- filters
150
- })));
129
+ return (react_1.default.createElement("div", null,
130
+ !this.props.design.axes.color ? (react_1.default.createElement("div", { className: "mb-3" },
131
+ react_1.default.createElement("label", { className: "text-muted" },
132
+ react_1.default.createElement("span", { className: "fas fa-tint" }),
133
+ T `Color`),
134
+ react_1.default.createElement("div", null,
135
+ react_1.default.createElement(ColorComponent_1.default, { color: this.props.design.color, onChange: this.handleColorChange })))) : undefined,
136
+ react_1.default.createElement("div", { className: "mb-3" },
137
+ react_1.default.createElement("label", { className: "text-muted" },
138
+ react_1.default.createElement("span", { className: "fas fa-tint" }),
139
+ T `Color By Data`),
140
+ react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["text", "enum", "boolean", "date"], aggrNeed: "none", value: this.props.design.axes.color, defaultColor: this.props.design.color, showColorMap: true, onChange: this.handleColorAxisChange, allowExcludedValues: true, filters: filters }))));
151
141
  }
152
142
  renderSymbol() {
153
143
  if (!this.props.design.axes.geometry) {
154
144
  return;
155
145
  }
156
- return R(MarkerSymbolSelectComponent_1.default, { symbol: this.props.design.symbol, onChange: this.handleSymbolChange });
146
+ return react_1.default.createElement(MarkerSymbolSelectComponent_1.default, { symbol: this.props.design.symbol, onChange: this.handleSymbolChange });
157
147
  }
158
148
  renderMarkerSize() {
159
149
  if (!this.props.design.axes.geometry) {
160
150
  return;
161
151
  }
162
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Marker Size`), R(ui.Select, {
163
- value: this.props.design.markerSize || 10,
164
- options: [
165
- { value: 5, label: T `Extra small` },
166
- { value: 8, label: T `Small` },
167
- { value: 10, label: T `Normal` },
168
- { value: 13, label: T `Large` },
169
- { value: 16, label: T `Extra large` }
170
- ],
171
- onChange: this.handleMarkerSizeChange
172
- }));
152
+ return (react_1.default.createElement("div", { className: "mb-3" },
153
+ react_1.default.createElement("label", { className: "text-muted" }, T `Marker Size`),
154
+ react_1.default.createElement(ui.Select, { value: this.props.design.markerSize || 10, options: [
155
+ { value: 5, label: T `Extra small` },
156
+ { value: 8, label: T `Small` },
157
+ { value: 10, label: T `Normal` },
158
+ { value: 13, label: T `Large` },
159
+ { value: 16, label: T `Extra large` }
160
+ ], onChange: this.handleMarkerSizeChange })));
173
161
  }
174
162
  renderLineWidth() {
175
163
  if (!this.props.design.axes.geometry) {
176
164
  return;
177
165
  }
178
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Line Width (for shapes)`), R(ui.Select, {
179
- value: this.props.design.lineWidth != null ? this.props.design.lineWidth : 3,
180
- options: [
181
- { value: 0, label: T `None` },
182
- { value: 1, label: T `1 pixel` },
183
- { value: 2, label: T `2 pixels` },
184
- { value: 3, label: T `3 pixels` },
185
- { value: 4, label: T `4 pixels` },
186
- { value: 5, label: T `5 pixels` },
187
- { value: 6, label: T `6 pixels` }
188
- ],
189
- onChange: this.handleLineWidthChange
190
- }));
166
+ return (react_1.default.createElement("div", { className: "mb-3" },
167
+ react_1.default.createElement("label", { className: "text-muted" }, T `Line Width (for shapes)`),
168
+ react_1.default.createElement(ui.Select, { value: this.props.design.lineWidth != null ? this.props.design.lineWidth : 3, options: [
169
+ { value: 0, label: T `None` },
170
+ { value: 1, label: T `1 pixel` },
171
+ { value: 2, label: T `2 pixels` },
172
+ { value: 3, label: T `3 pixels` },
173
+ { value: 4, label: T `4 pixels` },
174
+ { value: 5, label: T `5 pixels` },
175
+ { value: 6, label: T `6 pixels` }
176
+ ], onChange: this.handleLineWidthChange })));
191
177
  }
192
178
  renderPolygonBorderColor() {
193
179
  if (!this.props.design.axes.geometry) {
194
180
  return;
195
181
  }
196
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Polygon border color (blank for same as fill color)`), R("div", null, R(ColorComponent_1.default, {
197
- color: this.props.design.polygonBorderColor,
198
- onChange: this.handlePolygonBorderColorChange
199
- })));
182
+ return (react_1.default.createElement("div", { className: "mb-3" },
183
+ react_1.default.createElement("label", { className: "text-muted" }, T `Polygon border color (blank for same as fill color)`),
184
+ react_1.default.createElement("div", null,
185
+ react_1.default.createElement(ColorComponent_1.default, { color: this.props.design.polygonBorderColor, onChange: this.handlePolygonBorderColorChange }))));
200
186
  }
201
187
  renderPolygonFillOpacity() {
202
188
  if (!this.props.design.axes.geometry) {
203
189
  return;
204
190
  }
205
191
  const opacity = this.props.design.polygonFillOpacity != null ? this.props.design.polygonFillOpacity : 0.25;
206
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", null, T `Polygon Fill Opacity: ${Math.round(opacity * 100)}%`)), R("div", { style: { padding: "10px" } }, react_1.default.createElement(rc_slider_1.default, {
207
- min: 0,
208
- max: 100,
209
- step: 1,
210
- tipTransitionName: "rc-slider-tooltip-zoom-down",
211
- value: opacity * 100,
212
- onChange: this.handlePolygonFillOpacityChange
213
- })));
192
+ return (react_1.default.createElement("div", { className: "mb-3" },
193
+ react_1.default.createElement("label", { className: "text-muted" },
194
+ react_1.default.createElement("span", null, T `Polygon Fill Opacity: ${Math.round(opacity * 100)}%`)),
195
+ react_1.default.createElement("div", { style: { padding: "10px" } },
196
+ react_1.default.createElement(rc_slider_1.default, { min: 0, max: 100, step: 1, tipTransitionName: "rc-slider-tooltip-zoom-down", value: opacity * 100, onChange: this.handlePolygonFillOpacityChange }))));
214
197
  }
215
198
  renderFilter() {
216
199
  // If no data, hide
217
200
  if (!this.props.design.axes.geometry) {
218
201
  return null;
219
202
  }
220
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, R("span", { className: "fas fa-filter" }), T `Filters`), R("div", { style: { marginLeft: 8 } }, R(expressions_ui_1.FilterExprComponent, {
221
- schema: this.props.schema,
222
- dataSource: this.props.dataSource,
223
- onChange: this.handleFilterChange,
224
- table: this.props.design.table,
225
- value: this.props.design.filter
226
- })));
203
+ return (react_1.default.createElement("div", { className: "mb-3" },
204
+ react_1.default.createElement("label", { className: "text-muted" },
205
+ react_1.default.createElement("span", { className: "fas fa-filter" }),
206
+ T `Filters`),
207
+ react_1.default.createElement("div", { style: { marginLeft: 8 } },
208
+ react_1.default.createElement(expressions_ui_1.FilterExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, onChange: this.handleFilterChange, table: this.props.design.table, value: this.props.design.filter }))));
227
209
  }
228
210
  renderPopup() {
229
211
  if (!this.props.design.table) {
230
212
  return null;
231
213
  }
232
- return R(EditPopupComponent_1.default, {
233
- design: this.props.design,
234
- onDesignChange: this.props.onDesignChange,
235
- schema: this.props.schema,
236
- dataSource: this.props.dataSource,
237
- table: this.props.design.table,
238
- idTable: this.props.design.table,
239
- defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table)
240
- });
214
+ return (react_1.default.createElement(EditPopupComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table) }));
241
215
  }
242
216
  renderHoverOver() {
243
217
  if (!this.props.design.table) {
244
218
  return null;
245
219
  }
246
- return R(EditHoverOver_1.default, {
247
- design: this.props.design,
248
- onDesignChange: this.props.onDesignChange,
249
- schema: this.props.schema,
250
- dataSource: this.props.dataSource,
251
- table: this.props.design.table,
252
- idTable: this.props.design.table,
253
- defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table)
254
- });
220
+ return (react_1.default.createElement(EditHoverOver_1.EditHoverOver, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table), aggrStatuses: ["individual", "literal"] }));
255
221
  }
256
222
  render() {
257
- return R("div", null, this.renderTable(), this.renderGeometryAxis(), this.renderColor(), this.renderSymbol(), this.renderMarkerSize(), R(ui.CollapsibleSection, {
258
- label: T `Shape Options`,
259
- labelMuted: true
260
- }, [
261
- this.renderLineWidth(),
262
- this.renderPolygonBorderColor(),
263
- this.renderPolygonFillOpacity(),
264
- ]), this.renderFilter(), this.renderPopup(), this.renderHoverOver(), this.props.design.table
265
- ? R(ZoomLevelsComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange })
266
- : undefined);
223
+ return (react_1.default.createElement("div", null,
224
+ this.renderTable(),
225
+ this.renderGeometryAxis(),
226
+ this.renderColor(),
227
+ this.renderSymbol(),
228
+ this.renderMarkerSize(),
229
+ react_1.default.createElement(ui.CollapsibleSection, { label: T `Shape Options`, labelMuted: true },
230
+ this.renderLineWidth(),
231
+ this.renderPolygonBorderColor(),
232
+ this.renderPolygonFillOpacity()),
233
+ this.renderFilter(),
234
+ this.renderPopup(),
235
+ this.renderHoverOver(),
236
+ this.props.design.table ? (react_1.default.createElement(ZoomLevelsComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange })) : undefined));
267
237
  }
268
238
  }
269
239
  exports.default = MarkersLayerDesignerComponent;
@@ -158,7 +158,7 @@ class RasterMapViewComponent extends react_1.default.Component {
158
158
  filters: this.getCompiledFilters(),
159
159
  dataSource: this.props.dataSource,
160
160
  locale: this.context,
161
- translate: this.props.translate ?? (() => ""),
161
+ translate: this.props.translate ?? ((input) => input),
162
162
  onHide: () => this.setState({ legendHidden: true }),
163
163
  zoom: null
164
164
  });
@@ -54,6 +54,15 @@ declare class ServerLayerDataSource implements MapLayerDataSource {
54
54
  getPopupWidgetDataSource(design: any, widgetId: string): ServerMapLayerPopupWidgetDataSource;
55
55
  createUrl(filters: JsonQLFilter[], extension: string): string;
56
56
  createLegacyUrl(design: any, extension: string, filters: JsonQLFilter[]): string;
57
+ /** Gets hover over data for hover over items
58
+ * @param design The design of the layer
59
+ * @param data The data of the current item being hovered over. e.g. { id: 123 }
60
+ * @param filters The filters to apply to the layer does not include filters that narrow down to a specific item
61
+ * @returns A promise that resolves to the hover over data, indexed by the id of the hover over item
62
+ */
63
+ getHoverOverData(design: any, data: any, filters: JsonQLFilter[]): Promise<{
64
+ [key: string]: any;
65
+ }>;
57
66
  }
58
67
  interface ServerMapLayerPopupWidgetDataSourceOptions {
59
68
  /** API url to use for talking to mWater server */
@@ -144,22 +144,12 @@ class ServerLayerDataSource {
144
144
  rev: this.options.rev
145
145
  };
146
146
  let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?` + querystring_1.default.stringify(query);
147
- // Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
148
- // Used to speed queries
149
- if (url.match(/^https:\/\/api\.mwater\.co\//)) {
150
- url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
151
- }
152
147
  return url;
153
148
  }
154
149
  // Create query string
155
150
  createLegacyUrl(design, extension, filters) {
156
151
  let where;
157
152
  let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?type=${design.type}&radius=1000`;
158
- // Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
159
- // Used to speed queries
160
- if (url.match(/^https:\/\/api\.mwater\.co\//)) {
161
- url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
162
- }
163
153
  if (this.options.client) {
164
154
  url += `&client=${this.options.client}`;
165
155
  }
@@ -182,6 +172,35 @@ class ServerLayerDataSource {
182
172
  }
183
173
  return url;
184
174
  }
175
+ /** Gets hover over data for hover over items
176
+ * @param design The design of the layer
177
+ * @param data The data of the current item being hovered over. e.g. { id: 123 }
178
+ * @param filters The filters to apply to the layer does not include filters that narrow down to a specific item
179
+ * @returns A promise that resolves to the hover over data, indexed by the id of the hover over item
180
+ */
181
+ async getHoverOverData(design, data, filters) {
182
+ const query = {
183
+ client: this.options.client,
184
+ share: this.options.share,
185
+ filters: (0, compressJson_1.default)(filters || []),
186
+ data: (0, compressJson_1.default)(data),
187
+ rev: this.options.rev
188
+ };
189
+ const url = `${this.options.apiUrl}maps/${this.options.mapId}/layers/${this.options.layerView.id}/hoverdata?` +
190
+ querystring_1.default.stringify(query);
191
+ const response = await fetch(url, {
192
+ method: "GET",
193
+ headers: {
194
+ Accept: "application/json"
195
+ }
196
+ });
197
+ if (!response.ok) {
198
+ const errorText = await response.text();
199
+ console.error(errorText);
200
+ throw new Error(`Error fetching hover data: ${response.statusText}`);
201
+ }
202
+ return await response.json();
203
+ }
185
204
  }
186
205
  class ServerMapLayerPopupWidgetDataSource {
187
206
  options;
@@ -66,7 +66,7 @@ function VectorMapViewComponent(props) {
66
66
  const [legendHidden, setLegendHidden] = (0, react_1.useState)(initialLegendDisplay == "closed" || (props.width < 500 && initialLegendDisplay == "closedIfSmall"));
67
67
  // Locale to use
68
68
  const locale = props.locale || props.design.locale || "en";
69
- // Translate function to use TODO
69
+ // Translate function to use
70
70
  const translate = props.translate || ((input) => input);
71
71
  // Last feature that mouse entered
72
72
  const lastFeature = (0, react_2.useRef)();
@@ -230,17 +230,9 @@ function VectorMapViewComponent(props) {
230
230
  else {
231
231
  const tileUrl = props.mapDataSource.getLayerDataSource(layerView.id).getTileUrl(design, []);
232
232
  if (tileUrl) {
233
- // Replace "{s}" with "a", "b", "c"
234
- let tiles = [];
235
- if (tileUrl.includes("{s}")) {
236
- tiles = [tileUrl.replace("{s}", "a"), tileUrl.replace("{s}", "b"), tileUrl.replace("{s}", "c")];
237
- }
238
- else {
239
- tiles = [tileUrl];
240
- }
241
233
  newSources[layerView.id] = {
242
234
  type: "raster",
243
- tiles,
235
+ tiles: [tileUrl],
244
236
  tileSize: 256
245
237
  };
246
238
  newLayers.push({
@@ -424,12 +416,12 @@ function VectorMapViewComponent(props) {
424
416
  return;
425
417
  }
426
418
  if (!props.design.autoBounds && props.design.bounds) {
427
- // If we set the new bounds, do not update map bounds
419
+ // If we set the new bounds, do not update map bounds unless they differ by more than 0.0001 degrees (roughly 10m)
428
420
  if (boundsRef.current == null ||
429
- props.design.bounds.n != boundsRef.current.n ||
430
- props.design.bounds.e != boundsRef.current.e ||
431
- props.design.bounds.s != boundsRef.current.s ||
432
- props.design.bounds.w != boundsRef.current.w) {
421
+ Math.abs(props.design.bounds.n - boundsRef.current.n) > 0.0001 ||
422
+ Math.abs(props.design.bounds.e - boundsRef.current.e) > 0.0001 ||
423
+ Math.abs(props.design.bounds.s - boundsRef.current.s) > 0.0001 ||
424
+ Math.abs(props.design.bounds.w - boundsRef.current.w) > 0.0001) {
433
425
  map.fitBounds([props.design.bounds.w, props.design.bounds.s, props.design.bounds.e, props.design.bounds.n]);
434
426
  boundsRef.current = props.design.bounds;
435
427
  }
@@ -1,5 +1,6 @@
1
1
  import { JsonQLQuery } from "@mwater/jsonql";
2
2
  import { Expr } from "@mwater/expressions";
3
+ import { ReactNode } from "react";
3
4
  export interface LayerDefinition {
4
5
  layers: Array<{
5
6
  /** Layer id */
@@ -16,6 +17,7 @@ export interface LayerDefinition {
16
17
  fields: string[];
17
18
  };
18
19
  }
20
+ /** Results from onGridClick that can be used to display a popup */
19
21
  export type OnGridClickResults = {
20
22
  scope?: any;
21
23
  row?: {
@@ -24,9 +26,9 @@ export type OnGridClickResults = {
24
26
  };
25
27
  popup?: React.ReactElement<{}>;
26
28
  } | null;
29
+ /** Results from onGridHover that can be used to display a hover over */
27
30
  export type OnGridHoverResults = {
28
- scope?: any;
29
- hoverOver?: React.ReactElement<{}>;
31
+ hoverOver?: ReactNode;
30
32
  } | null;
31
33
  /** Item in hover over */
32
34
  export interface HoverOverItem {