@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,7 +28,6 @@ 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 = __importStar(require("react"));
31
- const R = react_1.default.createElement;
32
31
  const react_select_1 = __importDefault(require("react-select"));
33
32
  const languages_1 = require("../languages");
34
33
  const expressions_1 = require("@mwater/expressions");
@@ -36,6 +35,7 @@ const expressions_2 = require("@mwater/expressions");
36
35
  const TabbedComponent_1 = __importDefault(require("@mwater/react-library/lib/TabbedComponent"));
37
36
  const expressions_ui_1 = require("@mwater/expressions-ui");
38
37
  const expressions_ui_2 = require("@mwater/expressions-ui");
38
+ const SelectExprModalComponent_1 = __importDefault(require("@mwater/expressions-ui/lib/SelectExprModalComponent"));
39
39
  const OrderBysDesignerComponent_1 = __importDefault(require("./OrderBysDesignerComponent"));
40
40
  const ReorderableListComponent_1 = __importDefault(require("@mwater/react-library/lib/reorderable/ReorderableListComponent"));
41
41
  const QuickfiltersDesignComponent_1 = __importDefault(require("../quickfilter/QuickfiltersDesignComponent"));
@@ -70,80 +70,54 @@ class DatagridDesignerComponent extends react_1.default.Component {
70
70
  };
71
71
  // Render the tabs of the designer
72
72
  renderTabs() {
73
- return R(TabbedComponent_1.default, {
74
- initialTabId: "columns",
75
- tabs: [
73
+ return react_1.default.createElement(TabbedComponent_1.default, { initialTabId: "columns", tabs: [
76
74
  {
77
75
  id: "columns",
78
76
  label: T `Columns`,
79
- elem: R(ColumnsDesignerComponent, {
80
- schema: this.props.schema,
81
- dataSource: this.props.dataSource,
82
- table: this.props.design.table,
83
- columns: this.props.design.columns,
84
- onColumnsChange: this.handleColumnsChange
85
- })
77
+ elem: react_1.default.createElement(ColumnsDesignerComponent, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, columns: this.props.design.columns, onColumnsChange: this.handleColumnsChange })
86
78
  },
87
79
  {
88
80
  id: "filter",
89
81
  label: T `Filter`,
90
82
  // Here because of modal scroll issue
91
- elem: R("div", { style: { marginBottom: 200 } }, R(expressions_ui_2.FilterExprComponent, {
92
- schema: this.props.schema,
93
- dataSource: this.props.dataSource,
94
- table: this.props.design.table,
95
- value: this.props.design.filter,
96
- onChange: this.handleFilterChange
97
- }), react_1.default.createElement(MWaterContextComponent_1.GlobalFiltersElementFactoryContext.Consumer, null, (globalFiltersElementFactory) => globalFiltersElementFactory
98
- ? R("div", { style: { marginTop: 20 } }, globalFiltersElementFactory({
99
- schema: this.props.schema,
100
- dataSource: this.props.dataSource,
101
- filterableTables: [this.props.design.table],
102
- globalFilters: this.props.design.globalFilters,
103
- onChange: this.handleGlobalFiltersChange,
104
- nullIfIrrelevant: true
105
- }))
106
- : undefined))
83
+ elem: react_1.default.createElement("div", { style: { marginBottom: 200 } },
84
+ react_1.default.createElement(expressions_ui_2.FilterExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, value: this.props.design.filter, onChange: this.handleFilterChange }),
85
+ react_1.default.createElement(MWaterContextComponent_1.GlobalFiltersElementFactoryContext.Consumer, null, (globalFiltersElementFactory) => globalFiltersElementFactory
86
+ ? react_1.default.createElement("div", { style: { marginTop: 20 } }, globalFiltersElementFactory({
87
+ schema: this.props.schema,
88
+ dataSource: this.props.dataSource,
89
+ filterableTables: [this.props.design.table],
90
+ globalFilters: this.props.design.globalFilters,
91
+ onChange: this.handleGlobalFiltersChange,
92
+ nullIfIrrelevant: true
93
+ }))
94
+ : undefined))
107
95
  },
108
96
  {
109
97
  id: "order",
110
98
  label: T `Sorting`,
111
- elem: R("div", { style: { marginBottom: 200 } }, R(OrderBysDesignerComponent_1.default, {
112
- schema: this.props.schema,
113
- dataSource: this.props.dataSource,
114
- table: this.props.design.table,
115
- orderBys: this.props.design.orderBys,
116
- onChange: this.handleOrderBysChange
117
- }))
99
+ elem: react_1.default.createElement("div", { style: { marginBottom: 200 } },
100
+ react_1.default.createElement(OrderBysDesignerComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, orderBys: this.props.design.orderBys, onChange: this.handleOrderBysChange }))
118
101
  },
119
102
  {
120
103
  id: "quickfilters",
121
104
  label: T `Quickfilters`,
122
- elem: R("div", { style: { marginBottom: 200 } }, R(QuickfiltersDesignComponent_1.default, {
123
- design: this.props.design.quickfilters || [],
124
- onDesignChange: (design) => this.props.onDesignChange((0, update_object_1.default)(this.props.design, { quickfilters: { $set: design } })),
125
- schema: this.props.schema,
126
- dataSource: this.props.dataSource,
127
- tables: [this.props.design.table]
128
- }))
105
+ elem: react_1.default.createElement("div", { style: { marginBottom: 200 } },
106
+ react_1.default.createElement(QuickfiltersDesignComponent_1.default, { design: this.props.design.quickfilters || [], onDesignChange: (design) => this.props.onDesignChange((0, update_object_1.default)(this.props.design, { quickfilters: { $set: design } })), schema: this.props.schema, dataSource: this.props.dataSource, tables: [this.props.design.table] }))
129
107
  },
130
108
  {
131
109
  id: "options",
132
110
  label: T `Options`,
133
- elem: R("div", { style: { marginBottom: 200 } }, R(DatagridOptionsComponent, {
134
- design: this.props.design,
135
- onDesignChange: this.props.onDesignChange
136
- }))
111
+ elem: react_1.default.createElement("div", { style: { marginBottom: 200 } },
112
+ react_1.default.createElement(DatagridOptionsComponent, { design: this.props.design, onDesignChange: this.props.onDesignChange }))
137
113
  }
138
- ]
139
- });
114
+ ] });
140
115
  }
141
116
  render() {
142
- return R("div", null, R("label", null, T `Data Source:`), R(expressions_ui_3.TableSelectComponent, {
143
- schema: this.props.schema,
144
- value: this.props.design.table,
145
- onChange: this.handleTableChange
146
- }), this.props.design.table ? this.renderTabs() : undefined);
117
+ return react_1.default.createElement("div", null,
118
+ react_1.default.createElement("label", null, T `Data Source:`),
119
+ react_1.default.createElement(expressions_ui_3.TableSelectComponent, { schema: this.props.schema, value: this.props.design.table, onChange: this.handleTableChange }),
120
+ this.props.design.table ? this.renderTabs() : undefined);
147
121
  }
148
122
  }
149
123
  exports.default = DatagridDesignerComponent;
@@ -163,6 +137,9 @@ function DatagridOptionsComponent(props) {
163
137
  }
164
138
  // Columns list
165
139
  class ColumnsDesignerComponent extends react_1.default.Component {
140
+ state = {
141
+ showSelectExprModal: false
142
+ };
166
143
  handleColumnChange = (columnIndex, column) => {
167
144
  const columns = this.props.columns.slice();
168
145
  // Handle remove
@@ -171,7 +148,7 @@ class ColumnsDesignerComponent extends react_1.default.Component {
171
148
  }
172
149
  else if (lodash_1.default.isArray(column)) {
173
150
  // Handle array case
174
- Array.prototype.splice.apply(columns, [columnIndex, 1].concat(column));
151
+ columns.splice(columnIndex, 1, ...column);
175
152
  }
176
153
  else {
177
154
  columns[columnIndex] = column;
@@ -179,9 +156,28 @@ class ColumnsDesignerComponent extends react_1.default.Component {
179
156
  return this.props.onColumnsChange(columns);
180
157
  };
181
158
  handleAddColumn = () => {
159
+ this.setState({ showSelectExprModal: true });
160
+ };
161
+ handleExprSelect = (expr) => {
162
+ // Clean the expression first
163
+ const exprCleaner = new expressions_1.ExprCleaner(this.props.schema);
164
+ const cleanedExpr = exprCleaner.cleanExpr(expr, {
165
+ aggrStatuses: ["individual", "literal", "aggregate"]
166
+ });
167
+ const exprUtils = new expressions_1.ExprUtils(this.props.schema);
182
168
  const columns = this.props.columns.slice();
183
- columns.push({ id: (0, uuid_1.default)(), type: "expr", width: 150 });
184
- return this.props.onColumnsChange(columns);
169
+ columns.push({
170
+ id: (0, uuid_1.default)(),
171
+ type: "expr",
172
+ width: 150,
173
+ expr: cleanedExpr,
174
+ label: exprUtils.summarizeExpr(cleanedExpr).slice(0, 30)
175
+ });
176
+ this.props.onColumnsChange(columns);
177
+ this.setState({ showSelectExprModal: false });
178
+ };
179
+ handleExprCancel = () => {
180
+ this.setState({ showSelectExprModal: false });
185
181
  };
186
182
  handleAddIdColumn = () => {
187
183
  const columns = this.props.columns.slice();
@@ -206,7 +202,7 @@ class ColumnsDesignerComponent extends react_1.default.Component {
206
202
  id: (0, uuid_1.default)(),
207
203
  width: 150,
208
204
  type: "expr",
209
- label: null, // Use default label instead. # labeledExpr.label
205
+ label: undefined, // Use default label instead. # labeledExpr.label
210
206
  expr: labeledExpr.expr
211
207
  });
212
208
  }
@@ -217,45 +213,39 @@ class ColumnsDesignerComponent extends react_1.default.Component {
217
213
  return this.props.onColumnsChange([]);
218
214
  };
219
215
  renderColumn = (column, columnIndex, connectDragSource, connectDragPreview, connectDropTarget) => {
220
- return R(ColumnDesignerComponent, {
221
- key: columnIndex,
222
- schema: this.props.schema,
223
- table: this.props.table,
224
- dataSource: this.props.dataSource,
225
- column,
226
- onColumnChange: this.handleColumnChange.bind(null, columnIndex),
227
- connectDragSource,
228
- connectDragPreview,
229
- connectDropTarget
230
- });
216
+ return react_1.default.createElement(ColumnDesignerComponent, { key: columnIndex, schema: this.props.schema, table: this.props.table, dataSource: this.props.dataSource, column: column, onColumnChange: this.handleColumnChange.bind(null, columnIndex), connectDragSource: connectDragSource, connectDragPreview: connectDragPreview, connectDropTarget: connectDropTarget });
231
217
  };
232
218
  render() {
233
- return R("div", { style: { height: "auto", overflowY: "auto", overflowX: "hidden" } }, R("div", { style: { textAlign: "right" }, key: "options" }, R("button", {
234
- key: "addAll",
235
- type: "button",
236
- className: "btn btn-link btn-sm",
237
- onClick: this.handleAddDefaultColumns
238
- }, R("span", { className: "fas fa-plus" }), " " + T `Add Default Columns`), R("button", {
239
- key: "removeAll",
240
- type: "button",
241
- className: "btn btn-link btn-sm",
242
- onClick: this.handleRemoveAllColumns
243
- }, R("span", { className: "fas fa-times" }), " " + T `Remove All Columns`)), R(ReorderableListComponent_1.default, {
244
- items: this.props.columns,
245
- onReorder: this.props.onColumnsChange,
246
- renderItem: this.renderColumn,
247
- getItemId: (item) => item.id
248
- }), R("div", { className: "p-2" }, R("button", {
249
- key: "add",
250
- type: "button",
251
- className: "btn btn-link",
252
- onClick: this.handleAddColumn
253
- }, R("span", { className: "fas fa-plus" }), " " + T `Add Column`), R("button", {
254
- key: "add-id",
255
- type: "button",
256
- className: "btn btn-link",
257
- onClick: this.handleAddIdColumn
258
- }, R("span", { className: "fas fa-plus" }), " " + T `Add Unique Id (advanced)`)));
219
+ return react_1.default.createElement("div", { style: { height: "auto", overflowY: "auto", overflowX: "hidden" } },
220
+ react_1.default.createElement("div", { style: { textAlign: "right" }, key: "options" },
221
+ react_1.default.createElement("button", { key: "addAll", type: "button", className: "btn btn-link btn-sm", onClick: this.handleAddDefaultColumns },
222
+ react_1.default.createElement("span", { className: "fas fa-plus" }),
223
+ " " + T `Add Default Columns`),
224
+ react_1.default.createElement("button", { key: "removeAll", type: "button", className: "btn btn-link btn-sm", onClick: this.handleRemoveAllColumns },
225
+ react_1.default.createElement("span", { className: "fas fa-times" }),
226
+ " " + T `Remove All Columns`)),
227
+ react_1.default.createElement(ReorderableListComponent_1.default, { items: this.props.columns, onReorder: this.props.onColumnsChange, renderItem: this.renderColumn, getItemId: (item) => item.id }),
228
+ react_1.default.createElement("div", { className: "p-2" },
229
+ react_1.default.createElement("button", { key: "add", type: "button", className: "btn btn-link", onClick: this.handleAddColumn },
230
+ react_1.default.createElement("span", { className: "fas fa-plus" }),
231
+ " " + T `Add Column`),
232
+ react_1.default.createElement("button", { key: "add-id", type: "button", className: "btn btn-link", onClick: this.handleAddIdColumn },
233
+ react_1.default.createElement("span", { className: "fas fa-plus" }),
234
+ " " + T `Add Unique Id (advanced)`)),
235
+ this.state.showSelectExprModal && (react_1.default.createElement(SelectExprModalComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.table, value: null, allowCase: true, onSelect: this.handleExprSelect, onCancel: this.handleExprCancel, types: [
236
+ "text",
237
+ "number",
238
+ "enum",
239
+ "enumset",
240
+ "boolean",
241
+ "date",
242
+ "datetime",
243
+ "image",
244
+ "imagelist",
245
+ "text[]",
246
+ "geometry",
247
+ "id"
248
+ ], aggrStatuses: ["literal", "individual", "aggregate"] })));
259
249
  }
260
250
  }
261
251
  // Column item
@@ -317,10 +307,14 @@ class ColumnDesignerComponent extends react_1.default.Component {
317
307
  const exprType = exprUtils.getExprType(this.props.column.expr);
318
308
  switch (exprType) {
319
309
  case "enumset":
320
- return R("a", { className: "btn btn-sm btn-link", onClick: this.handleSplitEnumset }, R("i", { className: "fa fa-chain-broken" }), " " + T `Split by options`);
310
+ return react_1.default.createElement("a", { className: "btn btn-sm btn-link", onClick: this.handleSplitEnumset },
311
+ react_1.default.createElement("i", { className: "fa fa-chain-broken" }),
312
+ " " + T `Split by options`);
321
313
  break;
322
314
  case "geometry":
323
- return R("a", { className: "btn btn-sm btn-link", onClick: this.handleSplitGeometry }, R("i", { className: "fa fa-chain-broken" }), " " + T `Split by lat/lng`);
315
+ return react_1.default.createElement("a", { className: "btn btn-sm btn-link", onClick: this.handleSplitGeometry },
316
+ react_1.default.createElement("i", { className: "fa fa-chain-broken" }),
317
+ " " + T `Split by lat/lng`);
324
318
  break;
325
319
  }
326
320
  return null;
@@ -335,12 +329,10 @@ class ColumnDesignerComponent extends react_1.default.Component {
335
329
  if (!formats) {
336
330
  return null;
337
331
  }
338
- return R("div", { className: "mb-3" }, R("label", { className: "text-muted" }, T `Format`), ": ", R("select", {
339
- value: this.props.column.format != null ? this.props.column.format : (0, valueFormatter_2.getDefaultFormat)(exprType),
340
- className: "form-select",
341
- style: { width: "auto", display: "inline-block" },
342
- onChange: this.handleFormatChange
343
- }, lodash_1.default.map(formats, (format) => R("option", { key: format.value, value: format.value }, format.label))));
332
+ return react_1.default.createElement("div", { className: "mb-3" },
333
+ react_1.default.createElement("label", { className: "text-muted" }, T `Format`),
334
+ ": ",
335
+ react_1.default.createElement("select", { value: this.props.column.format != null ? this.props.column.format : (0, valueFormatter_2.getDefaultFormat)(exprType), className: "form-select", style: { width: "auto", display: "inline-block" }, onChange: this.handleFormatChange }, lodash_1.default.map(formats, (format) => react_1.default.createElement("option", { key: format.value, value: format.value }, format.label))));
344
336
  }
345
337
  render = () => {
346
338
  const exprUtils = new expressions_1.ExprUtils(this.props.schema);
@@ -368,25 +360,21 @@ class ColumnDesignerComponent extends react_1.default.Component {
368
360
  const error = exprValidator.validateExpr(this.props.column.expr, {
369
361
  aggrStatuses: ["individual", "literal", "aggregate"]
370
362
  });
371
- const elem = R("div", { className: "row" }, R("div", { className: "col-1" }, this.props.connectDragSource(R("span", { className: "text-muted fa fa-bars _mviz-move" }))), R("div", { className: "col-6" }, // style: { border: "solid 1px #DDD", padding: 4 },
372
- R(expressions_ui_1.ExprComponent, {
373
- schema: this.props.schema,
374
- dataSource: this.props.dataSource,
375
- table: this.props.table,
376
- value: this.props.column.expr,
377
- aggrStatuses: ["literal", "individual", "aggregate"],
378
- types: allowedTypes,
379
- onChange: this.handleExprChange
380
- }), this.renderSplit(), this.renderFormat(), error ? react_1.default.createElement("span", { className: "text-danger" },
381
- react_1.default.createElement("i", { className: "fa fa-exclamation-circle" }),
382
- " ",
383
- error) : undefined), R("div", { className: "col-4" }, R("input", {
384
- type: "text",
385
- className: "form-control",
386
- placeholder: exprUtils.summarizeExpr(this.props.column.expr),
387
- value: this.props.column.label,
388
- onChange: (ev) => this.handleLabelChange(ev.target.value)
389
- })), R("div", { className: "col-1" }, R("a", { className: "link-plain", onClick: this.props.onColumnChange.bind(null, null) }, R("span", { className: "fas fa-times" }))));
363
+ const elem = react_1.default.createElement("div", { className: "row" },
364
+ react_1.default.createElement("div", { className: "col-1" }, this.props.connectDragSource(react_1.default.createElement("span", { className: "text-muted fa fa-bars mwater-visualization-cursor-hover" }))),
365
+ react_1.default.createElement("div", { className: "col-6" },
366
+ react_1.default.createElement(expressions_ui_1.ExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.table, value: this.props.column.expr, aggrStatuses: ["literal", "individual", "aggregate"], types: allowedTypes, onChange: this.handleExprChange }),
367
+ this.renderSplit(),
368
+ this.renderFormat(),
369
+ error ? react_1.default.createElement("span", { className: "text-danger" },
370
+ react_1.default.createElement("i", { className: "fa fa-exclamation-circle" }),
371
+ " ",
372
+ error) : undefined),
373
+ react_1.default.createElement("div", { className: "col-4" },
374
+ react_1.default.createElement("input", { type: "text", className: "form-control", placeholder: exprUtils.summarizeExpr(this.props.column.expr), value: this.props.column.label, onChange: (ev) => this.handleLabelChange(ev.target.value) })),
375
+ react_1.default.createElement("div", { className: "col-1" },
376
+ react_1.default.createElement("a", { className: "link-plain", onClick: this.props.onColumnChange.bind(null, null) },
377
+ react_1.default.createElement("span", { className: "fas fa-times" }))));
390
378
  return this.props.connectDropTarget(this.props.connectDragPreview(elem));
391
379
  };
392
380
  }
@@ -108,7 +108,6 @@ const DatagridViewComponent = (0, react_2.forwardRef)((props, ref) => {
108
108
  });
109
109
  });
110
110
  function reload() {
111
- console.log("reload");
112
111
  setRows([]);
113
112
  setEntirelyLoaded(false);
114
113
  }
@@ -267,7 +266,9 @@ const DatagridViewComponent = (0, react_2.forwardRef)((props, ref) => {
267
266
  fontWeight: "bold",
268
267
  height: "100%",
269
268
  display: "flex",
270
- alignItems: "center"
269
+ alignItems: "center",
270
+ overflow: "hidden",
271
+ width: options.width
271
272
  } }, column.label || exprUtils.summarizeExpr(column.expr, props.design.locale)));
272
273
  });
273
274
  const renderCellEditor = (0, useStableCallback_1.useStableCallback)((options) => {
@@ -23,5 +23,6 @@ export interface ExprCellComponentProps {
23
23
  }
24
24
  export default class ExprCellComponent extends React.Component<ExprCellComponentProps> {
25
25
  renderImage(id: string): React.JSX.Element;
26
+ renderCellContent(): string | React.JSX.Element | React.JSX.Element[] | null;
26
27
  render(): React.JSX.Element;
27
28
  }
@@ -16,51 +16,53 @@ class ExprCellComponent extends react_1.default.Component {
16
16
  const url = this.props.dataSource.getImageUrl(id);
17
17
  return react_1.default.createElement("a", { href: url, key: id, target: "_blank", style: { paddingLeft: 5, paddingRight: 5 } }, T `Image`);
18
18
  }
19
- render() {
20
- let node;
21
- const exprUtils = new expressions_1.ExprUtils(this.props.schema);
19
+ renderCellContent() {
22
20
  let { value } = this.props;
21
+ const exprUtils = new expressions_1.ExprUtils(this.props.schema);
23
22
  if (value == null || !this.props.expr) {
24
- node = null;
23
+ return null;
25
24
  }
26
25
  else {
27
26
  // Parse if should be JSON
28
27
  if (["image", "imagelist", "geometry", "text[]"].includes(this.props.exprType) && lodash_1.default.isString(value)) {
29
- value = JSON.parse(value);
28
+ try {
29
+ value = JSON.parse(value);
30
+ }
31
+ catch (e) {
32
+ console.error("Error parsing JSON", e);
33
+ return "???";
34
+ }
30
35
  }
31
36
  // Format if possible
32
37
  if ((0, valueFormatter_1.canFormatType)(this.props.exprType)) {
33
- node = (0, valueFormatter_2.formatValue)(this.props.exprType, value, this.props.format);
38
+ return (0, valueFormatter_2.formatValue)(this.props.exprType, value, this.props.format);
34
39
  }
35
40
  else {
36
41
  // Convert to node based on type
37
42
  switch (this.props.exprType) {
38
43
  case "text":
39
- node = react_1.default.createElement(react_linkify_1.default, { properties: { target: "_blank" } }, value);
40
- break;
44
+ return react_1.default.createElement(react_linkify_1.default, { properties: { target: "_blank" } }, value);
41
45
  case "boolean":
42
46
  case "enum":
43
47
  case "enumset":
44
48
  case "text[]":
45
- node = exprUtils.stringifyExprLiteral(this.props.expr, value, this.props.locale);
46
- break;
49
+ return exprUtils.stringifyExprLiteral(this.props.expr, value, this.props.locale);
47
50
  case "date":
48
- node = (0, moment_1.default)(value, "YYYY-MM-DD").format("ll");
49
- break;
51
+ return (0, moment_1.default)(value, "YYYY-MM-DD").format("ll");
50
52
  case "datetime":
51
- node = (0, moment_1.default)(value, moment_1.default.ISO_8601).format("lll");
52
- break;
53
+ return (0, moment_1.default)(value, moment_1.default.ISO_8601).format("lll");
53
54
  case "image":
54
- node = this.renderImage(value.id);
55
- break;
55
+ return this.renderImage(value.id);
56
56
  case "imagelist":
57
- node = lodash_1.default.map(value, (v) => this.renderImage(v.id));
58
- break;
57
+ return lodash_1.default.map(value, (v) => this.renderImage(v.id));
59
58
  default:
60
- node = "" + value;
59
+ return "" + value;
61
60
  }
62
61
  }
63
62
  }
63
+ }
64
+ render() {
65
+ const content = this.renderCellContent();
64
66
  return (react_1.default.createElement("div", { style: {
65
67
  width: this.props.width,
66
68
  height: this.props.height,
@@ -71,7 +73,7 @@ class ExprCellComponent extends react_1.default.Component {
71
73
  cursor: this.props.onClick ? "pointer" : undefined,
72
74
  overflow: "hidden",
73
75
  textOverflow: "ellipsis"
74
- }, onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick }, node));
76
+ }, onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick }, content));
75
77
  }
76
78
  }
77
79
  exports.default = ExprCellComponent;
@@ -1,22 +1,22 @@
1
1
  import React from "react";
2
2
  import { DataSource, Schema } from "@mwater/expressions";
3
+ import { DatagridDesignOrderBy } from "./DatagridDesign";
3
4
  export interface OrderBysDesignerComponentProps {
4
5
  /** schema to use */
5
6
  schema: Schema;
6
7
  /** dataSource to use */
7
8
  dataSource: DataSource;
8
9
  table: string;
9
- /** Columns list See README.md of this folder */
10
- orderBys: any;
10
+ orderBys: DatagridDesignOrderBy[];
11
11
  /** Called when columns changes */
12
- onChange: any;
12
+ onChange: (orderBys: DatagridDesignOrderBy[]) => void;
13
13
  }
14
14
  export default class OrderBysDesignerComponent extends React.Component<OrderBysDesignerComponentProps> {
15
15
  static defaultProps: {
16
16
  orderBys: never[];
17
17
  };
18
- handleChange: (index: any, orderBy: any) => any;
19
- handleRemove: (index: any) => any;
20
- handleAdd: () => any;
21
- render(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
18
+ handleChange: (index: any, orderBy: any) => void;
19
+ handleRemove: (index: any) => void;
20
+ handleAdd: () => void;
21
+ render(): React.JSX.Element;
22
22
  }
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
7
  const react_1 = __importDefault(require("react"));
8
- const R = react_1.default.createElement;
9
8
  const expressions_ui_1 = require("@mwater/expressions-ui");
10
9
  const bootstrap_1 = require("@mwater/react-library/lib/bootstrap");
11
10
  // Edits an orderBys which is a list of expressions and directions. See README.md
@@ -27,22 +26,13 @@ class OrderBysDesignerComponent extends react_1.default.Component {
27
26
  return this.props.onChange(orderBys);
28
27
  };
29
28
  render() {
30
- return R("div", null, lodash_1.default.map(this.props.orderBys, (orderBy, index) => {
31
- return R(OrderByDesignerComponent, {
32
- key: index,
33
- schema: this.props.schema,
34
- table: this.props.table,
35
- dataSource: this.props.dataSource,
36
- orderBy,
37
- onChange: this.handleChange.bind(null, index),
38
- onRemove: this.handleRemove.bind(null, index)
39
- });
40
- }), R("button", {
41
- key: "add",
42
- type: "button",
43
- className: "btn btn-link",
44
- onClick: this.handleAdd
45
- }, R("span", { className: "fas fa-plus" }), " " + T `Add Ordering`));
29
+ return (react_1.default.createElement("div", null,
30
+ lodash_1.default.map(this.props.orderBys, (orderBy, index) => {
31
+ return react_1.default.createElement(OrderByDesignerComponent, { key: index, schema: this.props.schema, table: this.props.table, dataSource: this.props.dataSource, orderBy: orderBy, onChange: this.handleChange.bind(null, index), onRemove: this.handleRemove.bind(null, index) });
32
+ }),
33
+ react_1.default.createElement("button", { key: "add", type: "button", className: "btn btn-link", onClick: this.handleAdd },
34
+ react_1.default.createElement("span", { className: "fas fa-plus" }),
35
+ " " + T `Add Ordering`)));
46
36
  }
47
37
  }
48
38
  exports.default = OrderBysDesignerComponent;
@@ -50,18 +40,19 @@ class OrderByDesignerComponent extends react_1.default.Component {
50
40
  handleExprChange = (expr) => {
51
41
  return this.props.onChange(lodash_1.default.extend({}, this.props.orderBy, { expr }));
52
42
  };
53
- handleDirectionChange = (value) => {
54
- return this.props.onChange(lodash_1.default.extend({}, this.props.orderBy, { direction: value ? "desc" : "asc" }));
43
+ handleDirectionChange = (direction) => {
44
+ return this.props.onChange(lodash_1.default.extend({}, this.props.orderBy, { direction }));
55
45
  };
56
46
  render() {
57
- return R("div", { className: "row" }, R("div", { className: "col-7" }, R(expressions_ui_1.ExprComponent, {
58
- schema: this.props.schema,
59
- dataSource: this.props.dataSource,
60
- table: this.props.table,
61
- types: ["text", "number", "boolean", "date", "datetime"],
62
- aggrStatuses: ["individual", "literal", "aggregate"],
63
- value: this.props.orderBy.expr,
64
- onChange: this.handleExprChange
65
- })), R("div", { className: "col-3" }, react_1.default.createElement(bootstrap_1.Checkbox, { inline: true, value: this.props.orderBy.direction === "desc", onChange: this.handleDirectionChange }, T `Reverse`)), R("div", { className: "col-1" }, R("button", { className: "btn btn-sm btn-link", type: "button", onClick: this.props.onRemove }, R("span", { className: "fas fa-times" }))));
47
+ return (react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "8px" } },
48
+ react_1.default.createElement("div", { style: { flex: 1 } },
49
+ react_1.default.createElement(expressions_ui_1.ExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.table, types: ["text", "number", "boolean", "date", "datetime"], aggrStatuses: ["individual", "literal", "aggregate"], value: this.props.orderBy.expr, onChange: this.handleExprChange })),
50
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "8px" } },
51
+ react_1.default.createElement(bootstrap_1.Toggle, { size: "xs", value: this.props.orderBy.direction, onChange: this.handleDirectionChange, options: [
52
+ { value: "asc", label: T `Ascending` },
53
+ { value: "desc", label: T `Descending` }
54
+ ] }),
55
+ react_1.default.createElement("button", { className: "btn btn-sm btn-link", type: "button", onClick: this.props.onRemove },
56
+ react_1.default.createElement("span", { className: "fas fa-times" })))));
66
57
  }
67
58
  }
package/lib/index.css CHANGED
@@ -55,6 +55,12 @@ Lato, Lora, Inter, Merriweather, Roboto
55
55
  }
56
56
  }
57
57
 
58
+ @media only screen and (max-width: 800px) {
59
+ .hide-800px {
60
+ display: none;
61
+ }
62
+ }
63
+
58
64
  /* Dashed thresholds */
59
65
  .bb-grid line {
60
66
  stroke-dasharray: 3;
@@ -133,6 +139,20 @@ Lato, Lora, Inter, Merriweather, Roboto
133
139
  visibility: visible;
134
140
  }
135
141
 
142
+ /* Use these to make a grandchild that displays only when parent is hovered */
143
+ .hover-display-parent > * > .hover-display-grandchild {
144
+ visibility: hidden;
145
+ }
146
+
147
+ .hover-display-parent:hover > * > .hover-display-grandchild {
148
+ visibility: visible;
149
+ }
150
+
151
+ /* Use these to set a faint background on hover */
152
+ .hover-grey:hover {
153
+ background-color: #f8f8f8;
154
+ }
155
+
136
156
  .bb-title {
137
157
  font: 14px sans-serif;
138
158
  font-weight: bold;
@@ -342,6 +362,29 @@ Lato, Lora, Inter, Merriweather, Roboto
342
362
  background-color: #363b3e;
343
363
  padding: 5px;
344
364
  padding-top: 6px;
365
+ transform: translateX(-100%);
366
+ animation: slideIn 0.3s ease-in-out;
367
+ }
368
+
369
+ @keyframes slideIn {
370
+ from {
371
+ transform: translateX(-100%);
372
+ }
373
+ to {
374
+ transform: translateX(0);
375
+ }
376
+ }
377
+
378
+ .mwater-visualization-palette-container {
379
+ position: absolute;
380
+ top: 0;
381
+ left: 0;
382
+ height: 100%;
383
+ z-index: 1000;
384
+ }
385
+
386
+ .mwater-visualization-palette-container:not(.hidden) .mwater-visualization-palette {
387
+ transform: translateX(0);
345
388
  }
346
389
 
347
390
  .mwater-visualization-palette-item {
@@ -543,11 +586,11 @@ Lato, Lora, Inter, Merriweather, Roboto
543
586
  background-color: rgba(0, 0, 0, 0.075);
544
587
  }
545
588
 
546
- ._mviz-move:hover {
589
+ .mwater-visualization-cursor-hover:hover {
547
590
  cursor: move;
548
591
  }
549
592
 
550
- ._mviz-map-hover-content {
593
+ .mwater-visualization-map-hover-content {
551
594
  display: grid;
552
595
  grid-template-columns: 1fr 2fr;
553
596
  grid-auto-rows: min-content;