@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
@@ -0,0 +1,93 @@
1
+ #!/bin/bash
2
+
3
+
4
+ # https://stackoverflow.com/questions/63299999/how-can-i-create-sdf-icons-used-in-mapbox-from-png#63314688
5
+
6
+ set -o pipefail
7
+ set -exu
8
+
9
+ cd "$(dirname "$0")"
10
+
11
+ MKTEMP="$(which gmktemp || which mktemp)"
12
+ TMPDIR1="$("$MKTEMP" -d)"
13
+ TMPDIR2="$("$MKTEMP" -d)"
14
+
15
+ trap "rm -rf '$TMPDIR1' '$TMPDIR2' ; pkill -P '$$'" EXIT
16
+
17
+ declare -a IMGFILES
18
+
19
+ IMGFILES=(
20
+ asterisk.png
21
+ ban.png
22
+ beer.png
23
+ bell.png
24
+ bolt.png
25
+ building.png
26
+ bullseye.png
27
+ bus.png
28
+ caret-up.png
29
+ certificate.png
30
+ check-circle.png
31
+ check.png
32
+ chevron-circle-down.png
33
+ chevron-circle-up.png
34
+ cloud-rain.png
35
+ cloud.png
36
+ comment.png
37
+ crosshairs.png
38
+ dot-circle-o.png
39
+ exclamation-circle.png
40
+ exclamation-triangle.png
41
+ female.png
42
+ file.png
43
+ flag.png
44
+ flask.png
45
+ h-square.png
46
+ home.png
47
+ info-circle.png
48
+ male.png
49
+ medkit.png
50
+ mobile.png
51
+ plus-circle.png
52
+ plus-square.png
53
+ plus.png
54
+ square.png
55
+ star.png
56
+ thumbs-down.png
57
+ thumbs-up.png
58
+ ticket.png
59
+ times-circle.png
60
+ times.png
61
+ tint.png
62
+ tree.png
63
+ university.png
64
+ usd.png
65
+ user.png
66
+ users.png
67
+ wheelchair.png
68
+ )
69
+
70
+ SVGINDIR="$(realpath -e "../../../../../apps/mwater-server/lib/routes/maps/marker-symbols/font-awesome")"
71
+ PNGOUTDIR="$(realpath "./font-awesome")"
72
+
73
+ rm -rvf "$PNGOUTDIR"
74
+ mkdir -pv "$PNGOUTDIR"
75
+
76
+ which image-sdf || npm install -g image-sdf
77
+
78
+ for IMGFILE in "${IMGFILES[@]}"
79
+ do
80
+ BASENAME="$(basename "$IMGFILE" .png)"
81
+ nice magick "$SVGINDIR/$BASENAME.svg" -channel RGB -negate -size 2000x2000 "$TMPDIR1/$BASENAME.png"
82
+ image-sdf "$TMPDIR1/$BASENAME.png" --spread 32 --downscale 2 --color black --output "$TMPDIR2/$BASENAME.png" &
83
+ done
84
+ wait
85
+
86
+ for IMGFILE in "$TMPDIR2"/*.png
87
+ do
88
+ magick "$IMGFILE" -resize 20x20 "$PNGOUTDIR/$(basename "$IMGFILE")" &
89
+ done
90
+ wait
91
+
92
+ cd "$PNGOUTDIR"
93
+ identify ./*.png
@@ -18,6 +18,7 @@ export declare function useVectorMap(options: {
18
18
  scrollZoom?: boolean;
19
19
  dragPan?: boolean;
20
20
  touchZoomRotate?: boolean;
21
+ padding?: number;
21
22
  }): Map | undefined;
22
23
  /** Sets cursor as pointer when over any layers with the specified ids */
23
24
  export declare function useHoverCursor(map: maplibregl.Map | undefined, layerIds: string[]): void;
@@ -43,7 +43,7 @@ function areVectorMapsEnabled() {
43
43
  }
44
44
  /** Loads a vector map, refreshing the WebGL context as needed */
45
45
  function useVectorMap(options) {
46
- const { divRef, bounds, scrollZoom, dragPan, touchZoomRotate } = options;
46
+ const { divRef, bounds, scrollZoom, dragPan, touchZoomRotate, padding } = options;
47
47
  // Maplibre map
48
48
  const [map, setMap] = (0, react_1.useState)();
49
49
  // Tracks if map div is visible
@@ -79,9 +79,8 @@ function useVectorMap(options) {
79
79
  return;
80
80
  }
81
81
  try {
82
- const m = new maplibre_gl_1.default.Map({
82
+ const mapConstructorOptions = {
83
83
  container: divRef,
84
- bounds: bounds,
85
84
  scrollZoom: scrollZoom === false ? false : true,
86
85
  dragPan: dragPan === false ? false : true,
87
86
  touchZoomRotate: touchZoomRotate === false ? false : true,
@@ -92,13 +91,19 @@ function useVectorMap(options) {
92
91
  layers: [],
93
92
  sources: {}
94
93
  },
95
- // Prevent scrolling outside of world bounds
96
94
  maxBounds: [
97
95
  [-179.9, -85], // Southwest coordinates
98
96
  [179.9, 85] // Northeast coordinates
99
97
  ],
100
98
  preserveDrawingBuffer: printingModeEnabled
101
- });
99
+ };
100
+ if (bounds) {
101
+ mapConstructorOptions.bounds = bounds;
102
+ if (padding !== undefined) {
103
+ mapConstructorOptions.fitBoundsOptions = { padding };
104
+ }
105
+ }
106
+ const m = new maplibre_gl_1.default.Map(mapConstructorOptions);
102
107
  setHasWebGLContext(true);
103
108
  // Add listener for losing context
104
109
  m.on("webglcontextlost", () => {
@@ -210,9 +215,8 @@ function useBaseStyle(baseLayer) {
210
215
  loadStyle(`https://api.maptiler.com/maps/streets-v2/style.json?key=${mapTilerApiKey}`);
211
216
  }
212
217
  else if (baseLayer == "bing_aerial") {
213
- // Switched to Bing for superior aerial imagery
214
- loadBingBasemap("AerialWithLabels", 1).then(setBaseStyle);
215
- // loadStyle(`https://api.maptiler.com/maps/hybrid/style.json?key=${mapTilerApiKey}`)
218
+ // Stadia Maps
219
+ loadStyle("https://tiles.stadiamaps.com/styles/alidade_satellite.json?api_key=835a418e-91f9-4eb8-9856-0883c3656c9d");
216
220
  }
217
221
  else if (baseLayer == "blank") {
218
222
  setBaseStyle({
@@ -263,7 +267,13 @@ function AttributionControl(props) {
263
267
  }
264
268
  if (props.baseLayer == "bing_aerial") {
265
269
  return (react_2.default.createElement("div", { className: "newmap-attribution-control" },
266
- "Copyright \u00A9 2022 Microsoft and its suppliers.",
270
+ "\u00A9 ",
271
+ react_2.default.createElement("a", { href: "https://stadiamaps.com/", target: "_blank" }, "Stadia Maps"),
272
+ "\u00A9 ",
273
+ react_2.default.createElement("a", { href: "https://openmaptiles.org/", target: "_blank" }, "OpenMapTiles"),
274
+ "\u00A9 ",
275
+ react_2.default.createElement("a", { href: "https://www.openstreetmap.org/copyright", target: "_blank" }, "OpenStreetMap"),
276
+ "\u00A9 CNES, Distribution Airbus DS, \u00A9 Airbus DS, \u00A9 PlanetObserver (Contains Copernicus Data)",
267
277
  props.extraText ? " " + props.extraText : null));
268
278
  }
269
279
  return (react_2.default.createElement("div", { className: "newmap-attribution-control" },
@@ -277,36 +287,10 @@ function VectorMapLogo(props) {
277
287
  return null;
278
288
  }
279
289
  if (props.baseLayer == "bing_aerial") {
280
- return react_2.default.createElement("img", { src: "https://dev.virtualearth.net/Branding/logo_powered_by.png", style: { position: "absolute", bottom: 38, left: 11, height: 22, zIndex: 1000, pointerEvents: "none" } });
290
+ return null;
281
291
  }
282
292
  return react_2.default.createElement("img", { src: require("./Maptiler-logo.png").default, style: { position: "absolute", bottom: 38, left: 11, height: 22, zIndex: 1000, pointerEvents: "none" } });
283
293
  }
284
- async function loadBingBasemap(basemapType, opacity) {
285
- // Load metadata
286
- const bingApiKey = "Ao26dWY2IC8PjorsJKFaoR85EPXCnCohrJdisCWXIULAXFo0JAXquGauppTMQbyU";
287
- const metadata = await fetch(`https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${basemapType}?key=${bingApiKey}`).then((response) => response.json());
288
- const resource = metadata.resourceSets[0].resources[0];
289
- return {
290
- sources: {
291
- "bing_raster": {
292
- type: "raster",
293
- tiles: resource.imageUrlSubdomains.map((subdomain) => resource.imageUrl.replace("{subdomain}", subdomain).replace("{culture}", "").replace("http:", "https:")),
294
- tileSize: resource.imageHeight,
295
- }
296
- },
297
- layers: [
298
- {
299
- id: "bing_raster",
300
- type: "raster",
301
- source: "bing_raster",
302
- paint: {
303
- "raster-opacity": opacity
304
- }
305
- }
306
- ],
307
- version: 8
308
- };
309
- }
310
294
  /** Persists map bounds to local storage */
311
295
  function usePersistedMapBounds(map, localStorageKey) {
312
296
  const [bounds, setBounds] = (0, react_1.useState)(null);
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import { Schema } from "@mwater/expressions";
3
+ interface FormsListComponentProps {
4
+ /** Url to hit api */
5
+ apiUrl: string;
6
+ /** Optional client */
7
+ client?: string;
8
+ schema: Schema;
9
+ /** User id */
10
+ user?: string;
11
+ /** Called with table selected */
12
+ onChange: any;
13
+ extraTables: any;
14
+ onExtraTableAdd: any;
15
+ onExtraTableRemove: any;
16
+ }
17
+ interface FormsListComponentState {
18
+ error?: any;
19
+ search: any;
20
+ forms: {
21
+ id: string;
22
+ name: string;
23
+ desc?: string;
24
+ }[] | null;
25
+ }
26
+ export declare class FormsListComponent extends React.Component<FormsListComponentProps, FormsListComponentState> {
27
+ constructor(props: any);
28
+ componentDidMount(): void;
29
+ handleTableRemove: (table: any) => any;
30
+ searchRef: (comp: any) => any;
31
+ render(): React.JSX.Element;
32
+ }
33
+ export {};
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.FormsListComponent = void 0;
30
+ const lodash_1 = __importDefault(require("lodash"));
31
+ const jquery_1 = __importDefault(require("jquery"));
32
+ const react_1 = __importDefault(require("react"));
33
+ const querystring_1 = __importDefault(require("querystring"));
34
+ const uiComponents = __importStar(require("../UIComponents"));
35
+ const expressions_1 = require("@mwater/expressions");
36
+ const moment_1 = __importDefault(require("moment"));
37
+ // Searchable list of forms
38
+ class FormsListComponent extends react_1.default.Component {
39
+ constructor(props) {
40
+ super(props);
41
+ this.state = {
42
+ forms: null,
43
+ search: ""
44
+ };
45
+ }
46
+ componentDidMount() {
47
+ // Get names and basic of forms
48
+ const query = {};
49
+ query.fields = JSON.stringify({
50
+ "design.name": 1,
51
+ "design.description": 1,
52
+ roles: 1,
53
+ created: 1,
54
+ modified: 1,
55
+ state: 1,
56
+ isMaster: 1
57
+ });
58
+ query.selector = JSON.stringify({ design: { $exists: true }, state: { $ne: "deleted" } });
59
+ query.client = this.props.client;
60
+ // Get list of all form names
61
+ jquery_1.default.getJSON(this.props.apiUrl + "forms?" + querystring_1.default.stringify(query), (forms) => {
62
+ // Sort by modified.on desc but first by user
63
+ forms = lodash_1.default.sortByOrder(forms, [
64
+ (form) => ((this.props.extraTables || []).includes("responses:" + form._id) ? 1 : 0),
65
+ (form) => (form.created.by === this.props.user ? 1 : 0),
66
+ (form) => form.modified?.on
67
+ ], ["desc", "desc", "desc"]);
68
+ // TODO use name instead of design.name
69
+ this.setState({
70
+ forms: lodash_1.default.map(forms, (form) => {
71
+ let desc = expressions_1.ExprUtils.localizeString(form.design.description, null) || "";
72
+ if (desc) {
73
+ desc += " - ";
74
+ }
75
+ desc += T `Modified ${(0, moment_1.default)(form.modified?.on, moment_1.default.ISO_8601).format("ll")}`;
76
+ return {
77
+ id: form._id,
78
+ name: expressions_1.ExprUtils.localizeString(form.design.name, null),
79
+ desc
80
+ };
81
+ })
82
+ });
83
+ }).fail((xhr) => {
84
+ this.setState({ error: xhr.responseText });
85
+ });
86
+ }
87
+ handleTableRemove = (table) => {
88
+ if (confirm(T `Remove ${expressions_1.ExprUtils.localizeString(table.name, T.locale)}? Any widgets that depend on it will no longer work properly.`)) {
89
+ return this.props.onExtraTableRemove(table.id);
90
+ }
91
+ };
92
+ searchRef = (comp) => {
93
+ // Focus
94
+ if (comp) {
95
+ return comp.focus();
96
+ }
97
+ };
98
+ render() {
99
+ let forms;
100
+ if (this.state.error) {
101
+ return react_1.default.createElement("div", { className: "alert alert-danger" }, this.state.error);
102
+ }
103
+ // Filter forms
104
+ if (this.state.search) {
105
+ const escapeRegExp = (s) => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
106
+ const searchStringRegExp = new RegExp(escapeRegExp(this.state.search), "i");
107
+ forms = lodash_1.default.filter(this.state.forms, (form) => form.name.match(searchStringRegExp));
108
+ }
109
+ else {
110
+ ;
111
+ ({ forms } = this.state);
112
+ }
113
+ // Remove if already included
114
+ forms = lodash_1.default.filter(forms || [], (f) => !(this.props.extraTables || []).includes(`responses:${f.id}`));
115
+ let tables = lodash_1.default.filter(this.props.schema.getTables(), (table) => (table.id.match(/^responses:/) || table.id.match(/^master_responses:/)) && !table.deprecated);
116
+ tables = lodash_1.default.sortBy(tables, (t) => t.name.en);
117
+ return (react_1.default.createElement("div", null,
118
+ react_1.default.createElement("label", null, T `Included Surveys:`),
119
+ tables.length > 0 ? (react_1.default.createElement(uiComponents.OptionListComponent, { items: lodash_1.default.map(tables, (table) => {
120
+ return {
121
+ name: expressions_1.ExprUtils.localizeString(table.name, T.locale),
122
+ desc: expressions_1.ExprUtils.localizeString(table.desc, T.locale),
123
+ onClick: this.props.onChange.bind(null, table.id),
124
+ onRemove: this.handleTableRemove.bind(null, table)
125
+ };
126
+ }) })) : (react_1.default.createElement("div", null, T `None`)),
127
+ react_1.default.createElement("br", null),
128
+ react_1.default.createElement("label", null, T `All Surveys:`),
129
+ !this.state.forms || this.state.forms.length === 0 ? (react_1.default.createElement("div", { className: "alert alert-info" },
130
+ react_1.default.createElement("i", { className: "fa fa-spinner fa-spin" }),
131
+ "\u00A0",
132
+ T `Loading...`)) : (react_1.default.createElement(react_1.default.Fragment, null,
133
+ react_1.default.createElement("input", { type: "text", className: "form-control form-control-sm", placeholder: T `Search...`, key: "search", ref: this.searchRef, style: { maxWidth: "20em", marginBottom: 10 }, value: this.state.search, onChange: (ev) => this.setState({ search: ev.target.value }) }),
134
+ react_1.default.createElement(uiComponents.OptionListComponent, { items: lodash_1.default.map(forms, (form) => ({
135
+ name: form.name,
136
+ desc: form.desc,
137
+ onClick: this.props.onChange.bind(null, "responses:" + form.id)
138
+ })) })))));
139
+ }
140
+ }
141
+ exports.FormsListComponent = FormsListComponent;
@@ -0,0 +1,49 @@
1
+ import React from "react";
2
+ import { Schema } from "@mwater/expressions";
3
+ export interface IndicatorsListComponentProps {
4
+ /** Url to hit api */
5
+ apiUrl: string;
6
+ /** Optional client */
7
+ client?: string;
8
+ schema: Schema;
9
+ /** User id */
10
+ user?: string;
11
+ /** Called with table selected */
12
+ onChange: any;
13
+ extraTables: any;
14
+ onExtraTableAdd: any;
15
+ onExtraTableRemove: any;
16
+ }
17
+ interface IndicatorsListComponentState {
18
+ error?: any;
19
+ search: any;
20
+ indicators: any[] | null;
21
+ }
22
+ export declare class IndicatorsListComponent extends React.Component<IndicatorsListComponentProps, IndicatorsListComponentState> {
23
+ addIndicatorConfirmPopup: AddIndicatorConfirmPopupComponent | null;
24
+ constructor(props: IndicatorsListComponentProps);
25
+ componentDidMount(): JQuery.jqXHR<any>;
26
+ handleTableRemove: (table: any) => any;
27
+ searchRef: (comp: any) => any;
28
+ handleSelect: (tableId: any) => void;
29
+ handleOpenIndicator: (id: string) => void;
30
+ renderIndicatorList(indicators: any[], searchText: string): React.JSX.Element;
31
+ render(): React.JSX.Element;
32
+ }
33
+ interface AddIndicatorConfirmPopupComponentProps {
34
+ schema: Schema;
35
+ /** Called with table selected */
36
+ onChange: any;
37
+ onExtraTableAdd: any;
38
+ }
39
+ interface AddIndicatorConfirmPopupComponentState {
40
+ indicatorTable: any;
41
+ visible: any;
42
+ }
43
+ declare class AddIndicatorConfirmPopupComponent extends React.Component<AddIndicatorConfirmPopupComponentProps, AddIndicatorConfirmPopupComponentState> {
44
+ constructor(props: any);
45
+ show(indicatorTable: any): void;
46
+ renderContents(): React.JSX.Element;
47
+ render(): React.JSX.Element | null;
48
+ }
49
+ export {};