@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,32 @@
1
+ import React from "react";
2
+ import { ToggleEditComponent } from "../UIComponents";
3
+ import { Schema } from "@mwater/expressions";
4
+ export interface MWaterTableSelectComponentProps {
5
+ /** Url to hit api */
6
+ apiUrl: string;
7
+ /** Optional client */
8
+ client?: string;
9
+ schema: Schema;
10
+ /** User id */
11
+ user?: string;
12
+ table?: string;
13
+ /** Called with table selected */
14
+ onChange: (table: string | null) => void;
15
+ extraTables?: string[];
16
+ onExtraTablesChange?: (tables: string[]) => void;
17
+ /** Can also perform filtering for some types. Include these props to enable this */
18
+ filter?: any;
19
+ onFilterChange?: (filter: any) => void;
20
+ }
21
+ interface MWaterTableSelectComponentState {
22
+ pendingExtraTable: string | null;
23
+ }
24
+ export default class MWaterTableSelectComponent extends React.Component<MWaterTableSelectComponentProps, MWaterTableSelectComponentState> {
25
+ toggleEdit: ToggleEditComponent | null;
26
+ constructor(props: MWaterTableSelectComponentProps);
27
+ componentDidUpdate(prevProps: MWaterTableSelectComponentProps): void;
28
+ handleChange: (tableId: string | null) => void;
29
+ handleTableChange: (tableId: string | null) => void;
30
+ render(): React.JSX.Element;
31
+ }
32
+ export {};
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lodash_1 = __importDefault(require("lodash"));
7
+ const react_1 = __importDefault(require("react"));
8
+ const UIComponents_1 = require("../UIComponents");
9
+ const expressions_1 = require("@mwater/expressions");
10
+ const MWaterResponsesFilterComponent_1 = __importDefault(require("../MWaterResponsesFilterComponent"));
11
+ const ModalPopupComponent_1 = __importDefault(require("@mwater/react-library/lib/ModalPopupComponent"));
12
+ const MWaterCompleteTableSelectComponent_1 = __importDefault(require("./MWaterCompleteTableSelectComponent"));
13
+ const expressions_ui_1 = require("@mwater/expressions-ui");
14
+ // Allows selection of a mwater-visualization table. Loads forms as well and calls event if modified
15
+ class MWaterTableSelectComponent extends react_1.default.Component {
16
+ toggleEdit = null;
17
+ constructor(props) {
18
+ super(props);
19
+ this.state = {
20
+ pendingExtraTable: null // Set when waiting for a table to load
21
+ };
22
+ }
23
+ componentDidUpdate(prevProps) {
24
+ // If received new schema with pending extra table, select it
25
+ let table = null;
26
+ if (this.state.pendingExtraTable) {
27
+ table = this.state.pendingExtraTable;
28
+ if (this.props.schema.getTable(table)) {
29
+ // No longer waiting
30
+ this.setState({ pendingExtraTable: null });
31
+ // Close toggle edit
32
+ this.toggleEdit?.close();
33
+ // Fire change
34
+ this.props.onChange(table);
35
+ }
36
+ }
37
+ // If table is newly selected and is a responses table and no filters, set filters to final only
38
+ if (this.props.table &&
39
+ this.props.table.match(/responses:/) &&
40
+ this.props.table !== prevProps.table &&
41
+ !this.props.filter &&
42
+ this.props.onFilterChange) {
43
+ this.props.onFilterChange({
44
+ type: "op",
45
+ op: "= any",
46
+ table: this.props.table,
47
+ exprs: [
48
+ { type: "field", table: this.props.table, column: "status" },
49
+ { type: "literal", valueType: "enumset", value: ["final"] }
50
+ ]
51
+ });
52
+ }
53
+ }
54
+ handleChange = (tableId) => {
55
+ // Close toggle edit
56
+ this.toggleEdit?.close();
57
+ // Call onChange if different
58
+ if (tableId !== this.props.table) {
59
+ return this.props.onChange(tableId);
60
+ }
61
+ };
62
+ handleTableChange = (tableId) => {
63
+ // If not part of extra tables, add it and wait for new schema
64
+ if (tableId && !this.props.schema.getTable(tableId)) {
65
+ if (this.props.onExtraTablesChange) {
66
+ this.setState({ pendingExtraTable: tableId }, () => {
67
+ this.props.onExtraTablesChange(lodash_1.default.union(this.props.extraTables || [], [tableId]));
68
+ });
69
+ }
70
+ else {
71
+ alert(T `Cannot add new tables.`);
72
+ }
73
+ }
74
+ else {
75
+ this.handleChange(tableId);
76
+ }
77
+ };
78
+ render() {
79
+ const editor = react_1.default.createElement(EditModeTableSelectComponent, { apiUrl: this.props.apiUrl, client: this.props.client, schema: this.props.schema, user: this.props.user, table: this.props.table, onChange: this.handleTableChange, extraTables: this.props.extraTables, onExtraTablesChange: this.props.onExtraTablesChange });
80
+ return (react_1.default.createElement("div", null,
81
+ this.state.pendingExtraTable ? (react_1.default.createElement("div", { className: "alert alert-info", key: "pendingExtraTable" },
82
+ react_1.default.createElement("i", { className: "fa fa-spinner fa-spin" }),
83
+ "\u00A0",
84
+ T `Please wait...`)) : undefined,
85
+ react_1.default.createElement(UIComponents_1.ToggleEditComponent, { ref: (c) => {
86
+ this.toggleEdit = c;
87
+ }, forceOpen: !this.props.table, label: this.props.table
88
+ ? expressions_1.ExprUtils.localizeString(this.props.schema.getTable(this.props.table)?.name, T.locale)
89
+ : "", editor: editor, onRemove: () => {
90
+ this.props.onChange(null);
91
+ } }),
92
+ this.props.table &&
93
+ this.props.onFilterChange &&
94
+ this.props.table.match(/^responses:/) &&
95
+ this.props.schema.getTable(this.props.table) ? (react_1.default.createElement(MWaterResponsesFilterComponent_1.default, { schema: this.props.schema, table: this.props.table, filter: this.props.filter, onFilterChange: this.props.onFilterChange })) : undefined));
96
+ }
97
+ }
98
+ exports.default = MWaterTableSelectComponent;
99
+ // Is the table select component when in edit mode. Toggles between complete list and simplified list
100
+ class EditModeTableSelectComponent extends react_1.default.Component {
101
+ constructor(props) {
102
+ super(props);
103
+ this.state = {
104
+ // True when in popup mode that shows all tables
105
+ completeMode: false
106
+ };
107
+ }
108
+ handleShowMore = () => {
109
+ return this.setState({ completeMode: true });
110
+ };
111
+ // Get list of tables that should be included in shortlist
112
+ // This is all active tables and all responses tables in schema (so as to include rosters) and all extra tables
113
+ // Also includes current table
114
+ getTableShortlist(activeTables) {
115
+ let tables = activeTables;
116
+ // Remove dead tables
117
+ tables = tables.filter((t) => this.props.schema.getTable(t) != null && !this.props.schema.getTable(t)?.deprecated);
118
+ tables = lodash_1.default.union(tables, lodash_1.default.filter(lodash_1.default.pluck(this.props.schema.getTables(), "id"), (t) => t.match(/^responses:/)));
119
+ if (this.props.table) {
120
+ tables = lodash_1.default.union(tables, [this.props.table]);
121
+ }
122
+ for (let extraTable of this.props.extraTables || []) {
123
+ // Check if wildcard
124
+ if (extraTable.match(/\*$/)) {
125
+ for (let table of this.props.schema.getTables()) {
126
+ if (table.id.startsWith(extraTable.substr(0, extraTable.length - 1)) && !table.deprecated) {
127
+ tables = lodash_1.default.union(tables, [table.id]);
128
+ }
129
+ }
130
+ }
131
+ else {
132
+ // Add if exists
133
+ if (this.props.schema.getTable(extraTable) && !this.props.schema.getTable(extraTable)?.deprecated) {
134
+ tables = lodash_1.default.union(tables, [extraTable]);
135
+ }
136
+ }
137
+ }
138
+ // Sort by name
139
+ tables = lodash_1.default.sortBy(tables, (tableId) => expressions_1.ExprUtils.localizeString(this.props.schema.getTable(tableId)?.name, T.locale));
140
+ return tables;
141
+ }
142
+ handleCompleteChange = (tableId) => {
143
+ this.setState({ completeMode: false });
144
+ return this.props.onChange(tableId);
145
+ };
146
+ render() {
147
+ return (react_1.default.createElement(expressions_ui_1.ActiveTablesContext.Consumer, null, (activeTables) => (react_1.default.createElement("div", null,
148
+ this.state.completeMode ? (react_1.default.createElement(ModalPopupComponent_1.default, { header: T `Select Data Source`, onClose: () => this.setState({ completeMode: false }), showCloseX: true, size: "x-large" },
149
+ react_1.default.createElement(MWaterCompleteTableSelectComponent_1.default, { apiUrl: this.props.apiUrl, client: this.props.client, schema: this.props.schema, user: this.props.user, table: this.props.table, onChange: this.handleCompleteChange, extraTables: this.props.extraTables, onExtraTablesChange: this.props.onExtraTablesChange }))) : null,
150
+ this.getTableShortlist(activeTables).length > 0 ? (react_1.default.createElement(react_1.default.Fragment, null,
151
+ react_1.default.createElement("div", { className: "text-muted" }, T `Select Data Source:`),
152
+ react_1.default.createElement(UIComponents_1.OptionListComponent, { items: this.getTableShortlist(activeTables).map((tableId) => {
153
+ const table = this.props.schema.getTable(tableId);
154
+ return {
155
+ name: expressions_1.ExprUtils.localizeString(table?.name, T.locale),
156
+ desc: expressions_1.ExprUtils.localizeString(table?.desc, T.locale),
157
+ onClick: () => table && this.props.onChange(table.id)
158
+ };
159
+ }) }),
160
+ react_1.default.createElement("div", null,
161
+ react_1.default.createElement("button", { type: "button", className: "btn btn-link btn-sm", onClick: this.handleShowMore }, T `Show All Available Data Sources...`)))) : (react_1.default.createElement("button", { type: "button", className: "btn btn-link", onClick: this.handleShowMore }, T `Select Data Source...`))))));
162
+ }
163
+ }
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import { Schema } from "@mwater/expressions";
3
+ interface MWaterWorkflowsSelectComponentProps {
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: (tableId: string) => void;
13
+ extraTables: string[];
14
+ onExtraTableAdd: (tableId: string) => void;
15
+ onExtraTableRemove: (tableId: string) => void;
16
+ }
17
+ /** Searchable list of workflow types */
18
+ export declare function MWaterWorkflowsSelectComponent(props: MWaterWorkflowsSelectComponentProps): React.JSX.Element;
19
+ export {};
@@ -0,0 +1,111 @@
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.MWaterWorkflowsSelectComponent = MWaterWorkflowsSelectComponent;
30
+ const lodash_1 = __importDefault(require("lodash"));
31
+ const jquery_1 = __importDefault(require("jquery"));
32
+ const react_1 = __importStar(require("react"));
33
+ const querystring_1 = __importDefault(require("querystring"));
34
+ const uiComponents = __importStar(require("../UIComponents"));
35
+ const expressions_1 = require("@mwater/expressions");
36
+ /** Searchable list of workflow types */
37
+ function MWaterWorkflowsSelectComponent(props) {
38
+ const [workflowTypes, setWorkflowTypes] = (0, react_1.useState)(null);
39
+ const [search, setSearch] = (0, react_1.useState)("");
40
+ const [error, setError] = (0, react_1.useState)(null);
41
+ (0, react_1.useEffect)(() => {
42
+ // Get names and basic of workflow types
43
+ const query = {};
44
+ query.fields = JSON.stringify({
45
+ name: 1,
46
+ description: 1,
47
+ roles: 1,
48
+ _created_by: 1,
49
+ _modified_on: 1
50
+ });
51
+ query.client = props.client;
52
+ // Get list of all workflow types
53
+ jquery_1.default.getJSON(props.apiUrl + "workflow_types?" + querystring_1.default.stringify(query), (types) => {
54
+ // Sort by included first, then user-created, then by name
55
+ types = lodash_1.default.sortByOrder(types, [
56
+ (type) => ((props.extraTables || []).includes("workflows:" + type._id) ? 0 : 1),
57
+ (type) => (type._created_by === props.user ? 0 : 1),
58
+ (type) => expressions_1.ExprUtils.localizeString(type.name, T.locale) || T `Untitled Workflow Type`
59
+ ], ["asc", "asc", "asc"]);
60
+ setWorkflowTypes(lodash_1.default.map(types, (type) => ({
61
+ id: type._id,
62
+ name: expressions_1.ExprUtils.localizeString(type.name, T.locale) || T `Untitled Workflow Type`,
63
+ desc: expressions_1.ExprUtils.localizeString(type.description, T.locale)
64
+ })));
65
+ }).fail((xhr) => {
66
+ setError(xhr.responseText);
67
+ });
68
+ }, [props.apiUrl, props.client, props.user, props.extraTables]);
69
+ const handleTableRemove = (table) => {
70
+ if (confirm(T `Remove ${table.name}? Any widgets that depend on it will no longer work properly.`)) {
71
+ props.onExtraTableRemove(`workflows:${table.id}`);
72
+ }
73
+ };
74
+ if (error) {
75
+ return react_1.default.createElement("div", { className: "alert alert-danger" }, error);
76
+ }
77
+ // Filter workflow types by search
78
+ let filteredWorkflowTypes = workflowTypes;
79
+ if (search && workflowTypes) {
80
+ const escapeRegExp = (s) => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
81
+ const searchStringRegExp = new RegExp(escapeRegExp(search), "i");
82
+ filteredWorkflowTypes = lodash_1.default.filter(workflowTypes, (type) => type.name.match(searchStringRegExp));
83
+ }
84
+ // Remove if already included
85
+ filteredWorkflowTypes = lodash_1.default.filter(filteredWorkflowTypes || [], (wt) => !(props.extraTables || []).includes(`workflows:${wt.id}`));
86
+ // Get included workflow tables from schema
87
+ let includedTables = lodash_1.default.filter(props.schema.getTables(), (table) => (table.id.match(/^workflows:/) || table.id.match(/^workflow_events:/)) && !table.deprecated);
88
+ includedTables = lodash_1.default.sortBy(includedTables, (t) => t.name.en);
89
+ return (react_1.default.createElement("div", null,
90
+ react_1.default.createElement("label", null, T `Included Workflows:`),
91
+ includedTables.length > 0 ? (react_1.default.createElement(uiComponents.OptionListComponent, { items: lodash_1.default.map(includedTables, (table) => {
92
+ return {
93
+ name: expressions_1.ExprUtils.localizeString(table.name, T.locale),
94
+ desc: expressions_1.ExprUtils.localizeString(table.desc, T.locale),
95
+ onClick: () => props.onChange(table.id),
96
+ onRemove: () => handleTableRemove({ id: table.id.replace(/^workflows:/, ""), name: expressions_1.ExprUtils.localizeString(table.name, T.locale) })
97
+ };
98
+ }) })) : (react_1.default.createElement("div", null, T `None`)),
99
+ react_1.default.createElement("br", null),
100
+ react_1.default.createElement("label", null, T `All Workflows:`),
101
+ !workflowTypes || workflowTypes.length === 0 ? (react_1.default.createElement("div", { className: "alert alert-info" },
102
+ react_1.default.createElement("i", { className: "fa fa-spinner fa-spin" }),
103
+ "\u00A0",
104
+ T `Loading...`)) : (react_1.default.createElement(react_1.default.Fragment, null,
105
+ react_1.default.createElement("input", { type: "text", className: "form-control form-control-sm", placeholder: T `Search...`, key: "search", autoFocus: true, style: { maxWidth: "20em", marginBottom: 10 }, value: search, onChange: (ev) => setSearch(ev.target.value) }),
106
+ react_1.default.createElement(uiComponents.OptionListComponent, { items: lodash_1.default.map(filteredWorkflowTypes, (workflowType) => ({
107
+ name: workflowType.name,
108
+ desc: workflowType.desc,
109
+ onClick: () => props.onChange("workflows:" + workflowType.id)
110
+ })) })))));
111
+ }
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
- import { DataSource, LocalizedString, Schema } from "@mwater/expressions";
3
- import IdArrayQuickfilterComponent from "./IdArrayQuickfilterComponent";
2
+ import { DataSource, Schema } from "@mwater/expressions";
4
3
  import { Quickfilter, QuickfilterLock } from "./Quickfilter";
5
4
  import { QuickfiltersDataSource } from "./QuickfiltersDataSource";
6
5
  import { JsonQLFilter } from "..";
@@ -26,104 +25,6 @@ export interface QuickfiltersComponentProps {
26
25
  }
27
26
  /** Displays quick filters and allows their value to be modified */
28
27
  export default class QuickfiltersComponent extends React.Component<QuickfiltersComponentProps> {
29
- renderQuickfilter(item: any, index: any): React.CElement<EnumQuickfilterComponentProps, EnumQuickfilterComponent> | React.CElement<TextQuickfilterComponentProps, TextQuickfilterComponent> | React.CElement<DateQuickfilterComponentProps, DateQuickfilterComponent> | React.CElement<import("./IdArrayQuickfilterComponent").IdArrayQuickfilterComponentProps, IdArrayQuickfilterComponent> | null;
30
- render(): React.DetailedReactHTMLElement<{
31
- style: {
32
- borderTop: string | undefined;
33
- borderBottom: string;
34
- padding: number;
35
- };
36
- }, HTMLElement> | null;
28
+ renderQuickfilter(item: Quickfilter, index: number): React.JSX.Element | null;
29
+ render(): React.JSX.Element | null;
37
30
  }
38
- interface EnumQuickfilterComponentProps {
39
- label?: string;
40
- schema: Schema;
41
- /** true to display multiple values */
42
- multi?: boolean;
43
- /** Current value of quickfilter (state of filter selected) */
44
- value?: any;
45
- /** Called when value changes */
46
- onValueChange?: any;
47
- options: {
48
- /** id of option */
49
- id: string;
50
- /** localized name */
51
- name: LocalizedString;
52
- }[];
53
- }
54
- /** Quickfilter for an enum */
55
- declare class EnumQuickfilterComponent extends React.Component<EnumQuickfilterComponentProps> {
56
- static contextType: React.Context<string>;
57
- handleSingleChange: (val: any) => any;
58
- handleMultiChange: (val: any) => any;
59
- renderSingleSelect(options: any[]): React.FunctionComponentElement<{
60
- placeholder: string;
61
- value: any;
62
- options: any[];
63
- isClearable: boolean;
64
- onChange: (value: any) => any;
65
- isDisabled: boolean;
66
- styles: {
67
- menu: (style: import("react-select").CSSObjectWithLabel) => import("react-select").CSSObjectWithLabel;
68
- };
69
- }>;
70
- renderMultiSelect(options: any[]): React.FunctionComponentElement<{
71
- placeholder: string;
72
- value: any[];
73
- isClearable: boolean;
74
- isMulti: boolean;
75
- options: any[];
76
- onChange: ((val: any) => any) | undefined;
77
- isDisabled: boolean;
78
- styles: {
79
- menu: (style: import("react-select").CSSObjectWithLabel) => import("react-select").CSSObjectWithLabel;
80
- };
81
- }>;
82
- render(): React.DetailedReactHTMLElement<{
83
- style: {
84
- display: "inline-block";
85
- paddingRight: number;
86
- };
87
- }, HTMLElement>;
88
- }
89
- interface TextQuickfilterComponentProps {
90
- label: string;
91
- schema: Schema;
92
- /** See QuickfiltersDataSource */
93
- quickfiltersDataSource: QuickfiltersDataSource;
94
- expr: any;
95
- index: number;
96
- /** Current value of quickfilter (state of filter selected) */
97
- value?: any;
98
- /** Called when value changes */
99
- onValueChange?: any;
100
- /** true to display multiple values */
101
- multi?: boolean;
102
- /** Filters to add to restrict quick filter data to */
103
- filters?: JsonQLFilter[];
104
- }
105
- declare class TextQuickfilterComponent extends React.Component<TextQuickfilterComponentProps> {
106
- render(): React.DetailedReactHTMLElement<{
107
- style: {
108
- display: "inline-block";
109
- paddingRight: number;
110
- };
111
- }, HTMLElement>;
112
- }
113
- interface DateQuickfilterComponentProps {
114
- label?: string;
115
- schema: Schema;
116
- expr: any;
117
- /** Current value of quickfilter (state of filter selected) */
118
- value?: any;
119
- onValueChange: any;
120
- }
121
- declare class DateQuickfilterComponent extends React.Component<DateQuickfilterComponentProps> {
122
- render(): React.DetailedReactHTMLElement<{
123
- style: {
124
- display: "inline-block";
125
- paddingRight: number;
126
- };
127
- }, HTMLElement>;
128
- }
129
- export {};