@mwater/visualization 5.1.0 → 5.3.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 (305) hide show
  1. package/lib/ColorComponent.d.ts +10 -11
  2. package/lib/ColorComponent.js +78 -29
  3. package/lib/ColorSchemeFactory.d.ts +13 -2
  4. package/lib/ColorSchemeFactory.js +7 -5
  5. package/lib/CustomColorsContext.d.ts +6 -0
  6. package/lib/CustomColorsContext.js +6 -0
  7. package/lib/FiltersDesignerComponent.d.ts +1 -4
  8. package/lib/FiltersDesignerComponent.js +2 -3
  9. package/lib/GlobalFilter.d.ts +13 -0
  10. package/lib/GlobalFilter.js +2 -0
  11. package/lib/LocaleContextInjector.d.ts +5 -11
  12. package/lib/LocaleContextInjector.js +4 -12
  13. package/lib/MWaterAddRelatedFormComponent.js +3 -3
  14. package/lib/MWaterAddRelatedIndicatorComponent.d.ts +1 -4
  15. package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
  16. package/lib/MWaterCompleteTableSelectComponent.d.ts +7 -25
  17. package/lib/MWaterCompleteTableSelectComponent.js +36 -36
  18. package/lib/MWaterContextComponent.d.ts +19 -9
  19. package/lib/MWaterContextComponent.js +38 -22
  20. package/lib/MWaterCustomTablesetListComponent.js +9 -3
  21. package/lib/MWaterGlobalFiltersComponent.d.ts +6 -5
  22. package/lib/MWaterGlobalFiltersComponent.js +4 -4
  23. package/lib/MWaterLoaderComponent.d.ts +15 -3
  24. package/lib/MWaterLoaderComponent.js +11 -2
  25. package/lib/MWaterTableSelectComponent.d.ts +1 -4
  26. package/lib/MWaterTableSelectComponent.js +10 -12
  27. package/lib/UIComponents.d.ts +2 -2
  28. package/lib/UIComponents.js +4 -12
  29. package/lib/axes/Axis.d.ts +20 -25
  30. package/lib/axes/AxisBuilder.d.ts +7 -4
  31. package/lib/axes/AxisBuilder.js +12 -8
  32. package/lib/axes/AxisComponent.d.ts +6 -9
  33. package/lib/axes/AxisComponent.js +1 -2
  34. package/lib/axes/ColorPaletteCollectionComponent.d.ts +5 -12
  35. package/lib/axes/ColorPaletteCollectionComponent.js +67 -36
  36. package/lib/dashboards/DashboardComponent.d.ts +4 -17
  37. package/lib/dashboards/DashboardComponent.js +20 -67
  38. package/lib/dashboards/DashboardDesign.d.ts +5 -20
  39. package/lib/dashboards/DashboardUpgrader.js +36 -1
  40. package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
  41. package/lib/dashboards/DashboardViewComponent.js +112 -136
  42. package/lib/dashboards/FontStyleEditor.d.ts +8 -0
  43. package/lib/dashboards/FontStyleEditor.js +130 -0
  44. package/lib/dashboards/LayoutOptionsComponent.d.ts +0 -1
  45. package/lib/dashboards/LayoutOptionsComponent.js +209 -39
  46. package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
  47. package/lib/dashboards/ServerDashboardDataSource.js +52 -33
  48. package/lib/dashboards/SettingsModalComponent.d.ts +4 -15
  49. package/lib/dashboards/SettingsModalComponent.js +24 -38
  50. package/lib/dashboards/WidgetComponent.d.ts +3 -3
  51. package/lib/dashboards/WidgetComponent.js +3 -6
  52. package/lib/dashboards/WidgetDataSourcePrioritizer.d.ts +20 -0
  53. package/lib/dashboards/WidgetDataSourcePrioritizer.js +72 -0
  54. package/lib/dashboards/layoutOptions.d.ts +83 -0
  55. package/lib/dashboards/layoutOptions.js +436 -10
  56. package/lib/datagrids/DatagridComponent.d.ts +2 -9
  57. package/lib/datagrids/DatagridDataSource.d.ts +3 -3
  58. package/lib/datagrids/DatagridDataSource.js +0 -14
  59. package/lib/datagrids/DatagridDesign.d.ts +7 -6
  60. package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -93
  61. package/lib/datagrids/DatagridDesignerComponent.js +8 -6
  62. package/lib/datagrids/DatagridViewComponent.js +1 -1
  63. package/lib/datagrids/FindReplaceModalComponent.d.ts +4 -20
  64. package/lib/datagrids/FindReplaceModalComponent.js +27 -13
  65. package/lib/datagrids/ServerDatagridDataSource.d.ts +8 -7
  66. package/lib/datagrids/ServerDatagridDataSource.js +88 -36
  67. package/lib/demo.js +4 -4
  68. package/lib/index.css +5 -0
  69. package/lib/index.d.ts +2 -1
  70. package/lib/index.js +0 -1
  71. package/lib/layouts/LayoutManager.d.ts +33 -29
  72. package/lib/layouts/LayoutManager.js +2 -8
  73. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +26 -56
  74. package/lib/layouts/blocks/BlocksDisplayComponent.js +122 -205
  75. package/lib/layouts/blocks/BlocksLayoutManager.d.ts +6 -22
  76. package/lib/layouts/blocks/BlocksLayoutManager.js +5 -14
  77. package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +5 -4
  78. package/lib/layouts/blocks/HorizontalBlockComponent.js +5 -5
  79. package/lib/layouts/grid/GridLayoutManager.d.ts +2 -1
  80. package/lib/mWaterLoader.d.ts +2 -0
  81. package/lib/mWaterLoader.js +2 -1
  82. package/lib/maps/AddLayerComponent.d.ts +6 -8
  83. package/lib/maps/AddLayerComponent.js +6 -6
  84. package/lib/maps/BingLayer.js +10 -20
  85. package/lib/maps/BufferLayer.js +5 -2
  86. package/lib/maps/ChoroplethLayer.js +2 -1
  87. package/lib/maps/ClusterLayer.js +3 -1
  88. package/lib/maps/DirectMapDataSource.d.ts +5 -2
  89. package/lib/maps/DirectMapDataSource.js +2 -1
  90. package/lib/maps/EditPopupComponent.js +2 -1
  91. package/lib/maps/GridLayer.js +5 -3
  92. package/lib/maps/GridLayerDesigner.js +0 -1
  93. package/lib/maps/LayerSwitcherComponent.js +1 -1
  94. package/lib/maps/MapComponent.d.ts +3 -11
  95. package/lib/maps/MapComponent.js +3 -3
  96. package/lib/maps/MapDesign.d.ts +2 -13
  97. package/lib/maps/MapFiltersDesignerComponent.d.ts +0 -4
  98. package/lib/maps/MapFiltersDesignerComponent.js +4 -5
  99. package/lib/maps/MarkersLayer.js +30 -25
  100. package/lib/maps/RasterMapViewComponent.d.ts +3 -13
  101. package/lib/maps/RasterMapViewComponent.js +3 -3
  102. package/lib/maps/RegionSelectComponent.d.ts +2 -1
  103. package/lib/maps/ServerMapDataSource.d.ts +3 -4
  104. package/lib/maps/ServerMapDataSource.js +5 -5
  105. package/lib/maps/VectorMapViewComponent.js +2 -1
  106. package/lib/maps/mapSymbols.js +2 -0
  107. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  108. package/lib/maps/vectorMaps.d.ts +1 -0
  109. package/lib/maps/vectorMaps.js +70 -56
  110. package/lib/quickfilter/QuickfilterCompiler.d.ts +1 -1
  111. package/lib/quickfilter/QuickfiltersComponent.d.ts +1 -4
  112. package/lib/quickfilter/QuickfiltersComponent.js +3 -3
  113. package/lib/richtext/DropdownPaletteItem.d.ts +32 -0
  114. package/lib/richtext/DropdownPaletteItem.js +82 -0
  115. package/lib/richtext/FontColorPaletteItem.d.ts +1 -5
  116. package/lib/richtext/FontColorPaletteItem.js +32 -27
  117. package/lib/richtext/ItemsHtmlConverter.js +12 -3
  118. package/lib/richtext/RichTextComponent.d.ts +26 -52
  119. package/lib/richtext/RichTextComponent.js +166 -128
  120. package/lib/valueFormatter.js +6 -1
  121. package/lib/wellknown.d.ts +5 -0
  122. package/lib/wellknown.js +288 -0
  123. package/lib/widgets/DropdownWidgetComponent.d.ts +8 -25
  124. package/lib/widgets/DropdownWidgetComponent.js +48 -25
  125. package/lib/widgets/IFrameWidgetComponent.d.ts +3 -11
  126. package/lib/widgets/ImageWidgetComponent.d.ts +8 -27
  127. package/lib/widgets/MapWidget.d.ts +4 -7
  128. package/lib/widgets/MapWidget.js +2 -1
  129. package/lib/widgets/MarkdownWidget.d.ts +2 -7
  130. package/lib/widgets/TOCWidget.d.ts +2 -9
  131. package/lib/widgets/TOCWidget.js +2 -1
  132. package/lib/widgets/Widget.d.ts +2 -0
  133. package/lib/widgets/WidgetDataSource.d.ts +3 -1
  134. package/lib/widgets/charts/Chart.d.ts +0 -1
  135. package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
  136. package/lib/widgets/charts/ChartViewComponent.js +11 -3
  137. package/lib/widgets/charts/ChartWidget.d.ts +1 -74
  138. package/lib/widgets/charts/ChartWidget.js +4 -183
  139. package/lib/widgets/charts/ChartWidgetComponent.d.ts +51 -0
  140. package/lib/widgets/charts/ChartWidgetComponent.js +167 -0
  141. package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +1 -4
  142. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +4 -4
  143. package/lib/widgets/charts/imagemosaic/ImagePopupComponent.d.ts +2 -7
  144. package/lib/widgets/charts/layered/LayeredChart.d.ts +5 -10
  145. package/lib/widgets/charts/layered/LayeredChart.js +6 -7
  146. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +4 -2
  147. package/lib/widgets/charts/layered/LayeredChartCompiler.js +46 -32
  148. package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +4 -0
  149. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +5 -31
  150. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
  151. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -7
  152. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +2 -1
  153. package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +1 -4
  154. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +89 -38
  155. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +5 -105
  156. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +122 -166
  157. package/lib/widgets/charts/pivot/PivotChart.d.ts +6 -0
  158. package/lib/widgets/charts/pivot/PivotChart.js +47 -17
  159. package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +11 -0
  160. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +11 -7
  161. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +1 -1
  162. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +2 -2
  163. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +20 -36
  164. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +0 -1
  165. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +23 -2
  166. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +215 -181
  167. package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +2 -2
  168. package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +9 -47
  169. package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
  170. package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +55 -58
  171. package/lib/widgets/charts/table/TableChart.js +8 -4
  172. package/lib/widgets/charts/table/TableChartDesignerComponent.js +3 -3
  173. package/lib/widgets/charts/table/TableChartViewComponent.js +30 -16
  174. package/lib/widgets/text/ExprInsertModalComponent.d.ts +2 -13
  175. package/lib/widgets/text/ExprUpdateModalComponent.d.ts +2 -13
  176. package/lib/widgets/text/TextComponent.d.ts +5 -12
  177. package/lib/widgets/text/TextComponent.js +19 -39
  178. package/lib/widgets/text/TextWidget.d.ts +2 -1
  179. package/lib/widgets/text/TextWidget.js +5 -1
  180. package/lib/widgets/text/TextWidgetComponent.d.ts +15 -3
  181. package/lib/widgets/text/TextWidgetComponent.js +76 -19
  182. package/lib/widgets/text/TextWidgetDesign.d.ts +16 -2
  183. package/lib/widgets/text/TextWidgetDesign.js +6 -0
  184. package/package.json +4 -4
  185. package/src/ColorComponent.tsx +177 -0
  186. package/src/ColorSchemeFactory.ts +12 -6
  187. package/src/CustomColorsContext.tsx +8 -0
  188. package/src/FiltersDesignerComponent.ts +3 -4
  189. package/src/GlobalFilter.ts +17 -0
  190. package/src/LocaleContextInjector.tsx +14 -13
  191. package/src/MWaterAddRelatedFormComponent.ts +3 -3
  192. package/src/MWaterAddRelatedIndicatorComponent.ts +6 -6
  193. package/src/MWaterCompleteTableSelectComponent.tsx +36 -36
  194. package/src/MWaterContextComponent.tsx +42 -33
  195. package/src/MWaterCustomTablesetListComponent.tsx +21 -3
  196. package/src/MWaterGlobalFiltersComponent.ts +8 -8
  197. package/src/MWaterLoaderComponent.ts +14 -4
  198. package/src/MWaterTableSelectComponent.tsx +11 -12
  199. package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
  200. package/src/axes/Axis.ts +24 -25
  201. package/src/axes/AxisBuilder.ts +16 -13
  202. package/src/axes/AxisComponent.ts +3 -4
  203. package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
  204. package/src/dashboards/DashboardComponent.tsx +73 -147
  205. package/src/dashboards/DashboardDesign.ts +5 -25
  206. package/src/dashboards/DashboardUpgrader.ts +41 -1
  207. package/src/dashboards/DashboardViewComponent.tsx +313 -0
  208. package/src/dashboards/FontStyleEditor.tsx +166 -0
  209. package/src/dashboards/LayoutOptionsComponent.tsx +377 -71
  210. package/src/dashboards/ServerDashboardDataSource.ts +52 -33
  211. package/src/dashboards/SettingsModalComponent.tsx +170 -0
  212. package/src/dashboards/WidgetComponent.tsx +6 -12
  213. package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
  214. package/src/dashboards/layoutOptions.tsx +581 -0
  215. package/src/datagrids/DatagridDataSource.ts +6 -12
  216. package/src/datagrids/DatagridDesign.ts +8 -3
  217. package/src/datagrids/DatagridDesignerComponent.tsx +22 -18
  218. package/src/datagrids/DatagridViewComponent.ts +3 -3
  219. package/src/datagrids/ExprCellComponent.ts +0 -1
  220. package/src/datagrids/FindReplaceModalComponent.ts +39 -22
  221. package/src/datagrids/ServerDatagridDataSource.ts +107 -45
  222. package/src/demo.ts +4 -4
  223. package/src/index.css +5 -0
  224. package/src/index.ts +2 -1
  225. package/src/layouts/LayoutManager.ts +44 -42
  226. package/src/layouts/blocks/BlocksDisplayComponent.tsx +498 -0
  227. package/src/layouts/blocks/BlocksLayoutManager.ts +6 -15
  228. package/src/layouts/blocks/HorizontalBlockComponent.ts +9 -8
  229. package/src/mWaterLoader.ts +4 -1
  230. package/src/maps/AddLayerComponent.ts +9 -9
  231. package/src/maps/BingLayer.ts +16 -26
  232. package/src/maps/BufferLayer.ts +5 -2
  233. package/src/maps/ChoroplethLayer.ts +2 -1
  234. package/src/maps/ClusterLayer.ts +3 -1
  235. package/src/maps/DirectMapDataSource.ts +12 -3
  236. package/src/maps/EditPopupComponent.ts +2 -1
  237. package/src/maps/GridLayer.ts +5 -3
  238. package/src/maps/GridLayerDesigner.tsx +0 -1
  239. package/src/maps/LayerSwitcherComponent.tsx +1 -1
  240. package/src/maps/MapComponent.ts +3 -3
  241. package/src/maps/MapDesign.ts +2 -17
  242. package/src/maps/{MapFiltersDesignerComponent.ts → MapFiltersDesignerComponent.tsx} +25 -25
  243. package/src/maps/MarkersLayer.ts +38 -41
  244. package/src/maps/RasterMapViewComponent.ts +3 -3
  245. package/src/maps/ServerMapDataSource.ts +8 -8
  246. package/src/maps/VectorMapViewComponent.tsx +2 -2
  247. package/src/maps/mapSymbols.ts +2 -0
  248. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  249. package/src/maps/vectorMaps.tsx +88 -74
  250. package/src/quickfilter/QuickfilterCompiler.ts +1 -1
  251. package/src/quickfilter/QuickfiltersComponent.ts +3 -3
  252. package/src/richtext/DropdownPaletteItem.tsx +144 -0
  253. package/src/richtext/FontColorPaletteItem.tsx +160 -0
  254. package/src/richtext/ItemsHtmlConverter.ts +15 -5
  255. package/src/richtext/RichTextComponent.tsx +274 -232
  256. package/src/valueFormatter.ts +5 -1
  257. package/src/wellknown.ts +286 -0
  258. package/src/widgets/DropdownWidgetComponent.tsx +75 -0
  259. package/src/widgets/MapWidget.ts +5 -2
  260. package/src/widgets/TOCWidget.ts +2 -1
  261. package/src/widgets/Widget.ts +3 -0
  262. package/src/widgets/WidgetDataSource.ts +3 -1
  263. package/src/widgets/charts/Chart.ts +1 -1
  264. package/src/widgets/charts/ChartViewComponent.ts +16 -3
  265. package/src/widgets/charts/ChartWidget.ts +3 -275
  266. package/src/widgets/charts/ChartWidgetComponent.tsx +281 -0
  267. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +4 -4
  268. package/src/widgets/charts/layered/LayeredChart.ts +4 -6
  269. package/src/widgets/charts/layered/LayeredChartCompiler.ts +80 -63
  270. package/src/widgets/charts/layered/LayeredChartDesign.ts +7 -1
  271. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +43 -10
  272. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +6 -6
  273. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +140 -88
  274. package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +305 -221
  275. package/src/widgets/charts/pivot/PivotChart.ts +56 -18
  276. package/src/widgets/charts/pivot/PivotChartDesign.ts +12 -0
  277. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +4 -3
  278. package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +39 -76
  279. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +0 -1
  280. package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +230 -189
  281. package/src/widgets/charts/pivot/PivotChartUtils.ts +4 -4
  282. package/src/widgets/charts/pivot/{PivotChartViewComponent.ts → PivotChartViewComponent.tsx} +86 -89
  283. package/src/widgets/charts/table/TableChart.ts +8 -4
  284. package/src/widgets/charts/table/TableChartDesignerComponent.ts +4 -4
  285. package/src/widgets/charts/table/TableChartViewComponent.ts +32 -19
  286. package/src/widgets/text/TextComponent.tsx +47 -49
  287. package/src/widgets/text/TextWidget.ts +8 -3
  288. package/src/widgets/text/TextWidgetComponent.tsx +249 -0
  289. package/src/widgets/text/TextWidgetDesign.ts +26 -2
  290. package/src/ColorComponent.ts +0 -117
  291. package/src/dashboards/DashboardViewComponent.ts +0 -304
  292. package/src/dashboards/SettingsModalComponent.ts +0 -169
  293. package/src/dashboards/layoutOptions.ts +0 -40
  294. package/src/layout-styles.css +0 -263
  295. package/src/layouts/blocks/BlocksDisplayComponent.ts +0 -461
  296. package/src/layouts/grid/GridLayoutComponent.ts +0 -67
  297. package/src/layouts/grid/GridLayoutManager.ts +0 -185
  298. package/src/layouts/grid/LegoLayoutEngine.ts +0 -142
  299. package/src/layouts/grid/PaletteItemComponent.ts +0 -28
  300. package/src/layouts/grid/README.md +0 -14
  301. package/src/layouts/grid/WidgetContainerComponent.ts +0 -420
  302. package/src/richtext/FontColorPaletteItem.ts +0 -172
  303. package/src/richtext/FontSizePaletteItem.ts +0 -110
  304. package/src/widgets/DropdownWidgetComponent.ts +0 -78
  305. package/src/widgets/text/TextWidgetComponent.ts +0 -120
@@ -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 jquery_1 = __importDefault(require("jquery"));
31
- const prop_types_1 = __importDefault(require("prop-types"));
32
31
  const react_1 = __importDefault(require("react"));
33
32
  const R = react_1.default.createElement;
34
33
  const querystring_1 = __importDefault(require("querystring"));
@@ -40,6 +39,7 @@ const ModalPopupComponent_1 = __importDefault(require("@mwater/react-library/lib
40
39
  const MWaterCustomTablesetListComponent_1 = require("./MWaterCustomTablesetListComponent");
41
40
  const MWaterMetricsTableListComponent_1 = require("./MWaterMetricsTableListComponent");
42
41
  const MWaterAssetSystemsListComponent_1 = require("./MWaterAssetSystemsListComponent");
42
+ const contexts_1 = require("@mwater/expressions-ui/lib/contexts");
43
43
  const sitesOrder = {
44
44
  "entities.water_point": 1,
45
45
  "entities.sanitation_facility": 2,
@@ -59,7 +59,7 @@ const assetEntities = [
59
59
  ];
60
60
  // Allows selection of a table. Is the complete list mode of tables
61
61
  class MWaterCompleteTableSelectComponent extends react_1.default.Component {
62
- static contextTypes = { locale: prop_types_1.default.string };
62
+ static contextType = contexts_1.LocaleContext;
63
63
  constructor(props) {
64
64
  super(props);
65
65
  this.state = {
@@ -98,8 +98,8 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
98
98
  items: lodash_1.default.compact(lodash_1.default.map(types, (tableId) => {
99
99
  table = this.props.schema.getTable(tableId);
100
100
  return {
101
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
102
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
101
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
102
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
103
103
  onClick: this.props.onChange.bind(null, table.id)
104
104
  };
105
105
  }))
@@ -147,8 +147,8 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
147
147
  return R(uiComponents.OptionListComponent, {
148
148
  items: lodash_1.default.map(sweetSenseTables, (table) => {
149
149
  return {
150
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
151
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
150
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
151
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
152
152
  onClick: this.props.onChange.bind(null, table.id)
153
153
  };
154
154
  })
@@ -164,7 +164,7 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
164
164
  extraTables: this.props.extraTables,
165
165
  onExtraTableAdd: this.handleExtraTableAdd,
166
166
  onExtraTableRemove: this.handleExtraTableRemove,
167
- locale: this.context.locale
167
+ locale: this.context
168
168
  });
169
169
  }
170
170
  renderMetrics() {
@@ -177,7 +177,7 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
177
177
  extraTables: this.props.extraTables,
178
178
  onExtraTableAdd: this.handleExtraTableAdd,
179
179
  onExtraTableRemove: this.handleExtraTableRemove,
180
- locale: this.context.locale
180
+ locale: this.context
181
181
  });
182
182
  }
183
183
  renderAssets() {
@@ -188,8 +188,8 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
188
188
  continue;
189
189
  }
190
190
  items.push({
191
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
192
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
191
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
192
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
193
193
  onClick: this.props.onChange.bind(null, table.id)
194
194
  });
195
195
  }
@@ -211,7 +211,7 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
211
211
  extraTables: this.props.extraTables,
212
212
  onExtraTableAdd: this.handleExtraTableAdd,
213
213
  onExtraTableRemove: this.handleExtraTableRemove,
214
- locale: this.context.locale
214
+ locale: this.context
215
215
  });
216
216
  }
217
217
  renderOther() {
@@ -258,8 +258,8 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
258
258
  return R(uiComponents.OptionListComponent, {
259
259
  items: lodash_1.default.map(otherTables, (table) => {
260
260
  return {
261
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
262
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
261
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
262
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
263
263
  onClick: this.props.onChange.bind(null, table.id)
264
264
  };
265
265
  })
@@ -308,7 +308,7 @@ class MWaterCompleteTableSelectComponent extends react_1.default.Component {
308
308
  exports.default = MWaterCompleteTableSelectComponent;
309
309
  // Searchable list of forms
310
310
  class FormsListComponent extends react_1.default.Component {
311
- static contextTypes = { locale: prop_types_1.default.string };
311
+ static contextType = contexts_1.LocaleContext;
312
312
  constructor(props) {
313
313
  super(props);
314
314
  this.state = {
@@ -341,14 +341,14 @@ class FormsListComponent extends react_1.default.Component {
341
341
  // TODO use name instead of design.name
342
342
  this.setState({
343
343
  forms: lodash_1.default.map(forms, (form) => {
344
- let desc = expressions_1.ExprUtils.localizeString(form.design.description, this.context.locale) || "";
344
+ let desc = expressions_1.ExprUtils.localizeString(form.design.description, null) || "";
345
345
  if (desc) {
346
346
  desc += " - ";
347
347
  }
348
348
  desc += `Modified ${(0, moment_1.default)(form.modified?.on, moment_1.default.ISO_8601).format("ll")}`;
349
349
  return {
350
350
  id: form._id,
351
- name: expressions_1.ExprUtils.localizeString(form.design.name, this.context.locale),
351
+ name: expressions_1.ExprUtils.localizeString(form.design.name, null),
352
352
  desc
353
353
  };
354
354
  })
@@ -358,7 +358,7 @@ class FormsListComponent extends react_1.default.Component {
358
358
  });
359
359
  }
360
360
  handleTableRemove = (table) => {
361
- if (confirm(`Remove ${expressions_1.ExprUtils.localizeString(table.name, this.context.locale)}? Any widgets that depend on it will no longer work properly.`)) {
361
+ if (confirm(`Remove ${expressions_1.ExprUtils.localizeString(table.name, this.context)}? Any widgets that depend on it will no longer work properly.`)) {
362
362
  return this.props.onExtraTableRemove(table.id);
363
363
  }
364
364
  };
@@ -391,8 +391,8 @@ class FormsListComponent extends react_1.default.Component {
391
391
  ? R(uiComponents.OptionListComponent, {
392
392
  items: lodash_1.default.map(tables, (table) => {
393
393
  return {
394
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
395
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
394
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
395
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
396
396
  onClick: this.props.onChange.bind(null, table.id),
397
397
  onRemove: this.handleTableRemove.bind(null, table)
398
398
  };
@@ -423,7 +423,7 @@ class FormsListComponent extends react_1.default.Component {
423
423
  }
424
424
  // Searchable list of indicators
425
425
  class IndicatorsListComponent extends react_1.default.Component {
426
- static contextTypes = { locale: prop_types_1.default.string };
426
+ static contextType = contexts_1.LocaleContext;
427
427
  addIndicatorConfirmPopup;
428
428
  constructor(props) {
429
429
  super(props);
@@ -445,13 +445,13 @@ class IndicatorsListComponent extends react_1.default.Component {
445
445
  indicators = lodash_1.default.sortByOrder(indicators, [
446
446
  (indicator) => ((this.props.extraTables || []).includes("indicator_values:" + indicator._id) ? 0 : 1),
447
447
  (indicator) => (indicator.design.recommended ? 0 : 1),
448
- (indicator) => expressions_1.ExprUtils.localizeString(indicator.design.name, this.context.locale)
448
+ (indicator) => expressions_1.ExprUtils.localizeString(indicator.design.name, this.context)
449
449
  ], ["asc", "asc", "asc"]);
450
450
  return this.setState({
451
451
  indicators: lodash_1.default.map(indicators, (indicator) => ({
452
452
  id: indicator._id,
453
- name: expressions_1.ExprUtils.localizeString(indicator.design.name, this.context.locale),
454
- desc: expressions_1.ExprUtils.localizeString(indicator.design.desc, this.context.locale)
453
+ name: expressions_1.ExprUtils.localizeString(indicator.design.name, this.context),
454
+ desc: expressions_1.ExprUtils.localizeString(indicator.design.desc, this.context)
455
455
  }))
456
456
  });
457
457
  }).fail((xhr) => {
@@ -459,7 +459,7 @@ class IndicatorsListComponent extends react_1.default.Component {
459
459
  });
460
460
  }
461
461
  handleTableRemove = (table) => {
462
- if (confirm(`Remove ${expressions_1.ExprUtils.localizeString(table.name, this.context.locale)}? Any widgets that depend on it will no longer work properly.`)) {
462
+ if (confirm(`Remove ${expressions_1.ExprUtils.localizeString(table.name, this.context)}? Any widgets that depend on it will no longer work properly.`)) {
463
463
  return this.props.onExtraTableRemove(table.id);
464
464
  }
465
465
  };
@@ -506,8 +506,8 @@ class IndicatorsListComponent extends react_1.default.Component {
506
506
  ? R(uiComponents.OptionListComponent, {
507
507
  items: lodash_1.default.map(tables, (table) => {
508
508
  return {
509
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
510
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
509
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
510
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
511
511
  onClick: this.handleSelect.bind(null, table.id),
512
512
  onRemove: this.handleTableRemove.bind(null, table)
513
513
  };
@@ -537,7 +537,7 @@ class IndicatorsListComponent extends react_1.default.Component {
537
537
  }
538
538
  }
539
539
  class AddIndicatorConfirmPopupComponent extends react_1.default.Component {
540
- static contextTypes = { locale: prop_types_1.default.string };
540
+ static contextType = contexts_1.LocaleContext;
541
541
  constructor(props) {
542
542
  super(props);
543
543
  this.state = {
@@ -559,8 +559,8 @@ class AddIndicatorConfirmPopupComponent extends react_1.default.Component {
559
559
  below, then find the indicator values in the 'Related Indicators' section. Or click on 'Use Raw Indicator' if you
560
560
  are certain that you want to use the raw indicator table`), R(uiComponents.OptionListComponent, {
561
561
  items: lodash_1.default.map(entityColumns, (entityColumn) => ({
562
- name: expressions_1.ExprUtils.localizeString(entityColumn.name, this.context.locale),
563
- desc: expressions_1.ExprUtils.localizeString(entityColumn.desc, this.context.locale),
562
+ name: expressions_1.ExprUtils.localizeString(entityColumn.name, this.context),
563
+ desc: expressions_1.ExprUtils.localizeString(entityColumn.desc, this.context),
564
564
  onClick: () => {
565
565
  // Select table
566
566
  this.props.onChange(entityColumn.join.toTable);
@@ -582,7 +582,7 @@ are certain that you want to use the raw indicator table`), R(uiComponents.Optio
582
582
  }
583
583
  // Searchable list of issue types
584
584
  class IssuesListComponent extends react_1.default.Component {
585
- static contextTypes = { locale: prop_types_1.default.string };
585
+ static contextType = contexts_1.LocaleContext;
586
586
  constructor(props) {
587
587
  super(props);
588
588
  this.state = {
@@ -601,13 +601,13 @@ class IssuesListComponent extends react_1.default.Component {
601
601
  issueTypes = lodash_1.default.sortByOrder(issueTypes, [
602
602
  (issueType) => ((this.props.extraTables || []).includes("issues:" + issueType._id) ? 0 : 1),
603
603
  (issueType) => (issueType.created.by === this.props.user ? 0 : 1),
604
- (issueType) => expressions_1.ExprUtils.localizeString(issueType.name, this.context.locale)
604
+ (issueType) => expressions_1.ExprUtils.localizeString(issueType.name, this.context)
605
605
  ], ["asc", "asc", "asc"]);
606
606
  return this.setState({
607
607
  issueTypes: lodash_1.default.map(issueTypes, (issueType) => ({
608
608
  id: issueType._id,
609
- name: expressions_1.ExprUtils.localizeString(issueType.name, this.context.locale),
610
- desc: expressions_1.ExprUtils.localizeString(issueType.desc, this.context.locale)
609
+ name: expressions_1.ExprUtils.localizeString(issueType.name, this.context),
610
+ desc: expressions_1.ExprUtils.localizeString(issueType.desc, this.context)
611
611
  }))
612
612
  });
613
613
  }).fail((xhr) => {
@@ -615,7 +615,7 @@ class IssuesListComponent extends react_1.default.Component {
615
615
  });
616
616
  }
617
617
  handleTableRemove = (table) => {
618
- if (confirm(`Remove ${expressions_1.ExprUtils.localizeString(table.name, this.context.locale)}? Any widgets that depend on it will no longer work properly.`)) {
618
+ if (confirm(`Remove ${expressions_1.ExprUtils.localizeString(table.name, this.context)}? Any widgets that depend on it will no longer work properly.`)) {
619
619
  return this.props.onExtraTableRemove(table.id);
620
620
  }
621
621
  };
@@ -648,8 +648,8 @@ class IssuesListComponent extends react_1.default.Component {
648
648
  ? R(uiComponents.OptionListComponent, {
649
649
  items: lodash_1.default.map(tables, (table) => {
650
650
  return {
651
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
652
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
651
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
652
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
653
653
  onClick: this.props.onChange.bind(null, table.id),
654
654
  onRemove: this.handleTableRemove.bind(null, table)
655
655
  };
@@ -1,7 +1,21 @@
1
- import PropTypes from "prop-types";
2
1
  import React from "react";
3
- import { Schema, Section } from "@mwater/expressions";
2
+ import { DataSource, Schema, Section } from "@mwater/expressions";
4
3
  import { CustomTableSelectComponentFactoryOptions, DecorateScalarExprTreeSectionChildrenOptions } from "@mwater/expressions-ui";
4
+ import { GlobalFilter } from "./GlobalFilter";
5
+ import { AddLayerComponentProps } from "./maps/AddLayerComponent";
6
+ export interface GlobalFiltersElementFactoryProps {
7
+ schema: Schema;
8
+ dataSource: DataSource;
9
+ filterableTables: string[];
10
+ globalFilters?: GlobalFilter[];
11
+ onChange: (globalFilters: GlobalFilter[]) => void;
12
+ /** If true, return null element if not applicable to filterableTables */
13
+ nullIfIrrelevant?: boolean;
14
+ }
15
+ export type GlobalFiltersElementFactory = (props: GlobalFiltersElementFactoryProps) => React.ReactElement | null;
16
+ export declare const GlobalFiltersElementFactoryContext: React.Context<GlobalFiltersElementFactory | null>;
17
+ export type AddLayerElementFactory = (props: AddLayerComponentProps) => React.ReactElement | null;
18
+ export declare const AddLayerElementFactoryContext: React.Context<AddLayerElementFactory | undefined>;
5
19
  /**
6
20
  * Creates several contexts to allow selecting of a table in an mWater-friendly way
7
21
  * and several other context items
@@ -9,7 +23,7 @@ import { CustomTableSelectComponentFactoryOptions, DecorateScalarExprTreeSection
9
23
  export default class MWaterContextComponent extends React.Component<{
10
24
  apiUrl: string;
11
25
  client?: string;
12
- /** user id of logged in user */
26
+ /** user id of logged in user */
13
27
  user?: string;
14
28
  schema: Schema;
15
29
  /** Extra tables to load in schema. Forms are not loaded by default as they are too many */
@@ -17,14 +31,10 @@ export default class MWaterContextComponent extends React.Component<{
17
31
  /** Called when extra tables are changed and schema will be reloaded */
18
32
  onExtraTablesChange?: (extraTables: string[]) => void;
19
33
  /** Override default add layer component. See AddLayerComponent for details */
20
- addLayerElementFactory?: any;
34
+ addLayerElementFactory?: AddLayerElementFactory;
21
35
  }> {
22
- static childContextTypes: {
23
- addLayerElementFactory: PropTypes.Requireable<(...args: any[]) => any>;
24
- globalFiltersElementFactory: PropTypes.Requireable<(...args: any[]) => any>;
25
- };
26
36
  createTableSelectElementFactory: (options: CustomTableSelectComponentFactoryOptions) => React.JSX.Element;
27
- getChildContext(): any;
37
+ createGlobalFiltersElementFactory: (props: GlobalFiltersElementFactoryProps) => React.JSX.Element | null;
28
38
  isScalarExprTreeSectionMatch: (options: {
29
39
  tableId: string;
30
40
  section: Section;
@@ -1,11 +1,34 @@
1
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
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const prop_types_1 = __importDefault(require("prop-types"));
29
+ exports.AddLayerElementFactoryContext = exports.GlobalFiltersElementFactoryContext = void 0;
7
30
  const lodash_1 = __importDefault(require("lodash"));
8
- const react_1 = __importDefault(require("react"));
31
+ const react_1 = __importStar(require("react"));
9
32
  const R = react_1.default.createElement;
10
33
  const MWaterTableSelectComponent_1 = __importDefault(require("./MWaterTableSelectComponent"));
11
34
  const MWaterAddRelatedFormComponent_1 = __importDefault(require("./MWaterAddRelatedFormComponent"));
@@ -13,32 +36,22 @@ const MWaterAddRelatedIndicatorComponent_1 = __importDefault(require("./MWaterAd
13
36
  const MWaterGlobalFiltersComponent_1 = __importDefault(require("./MWaterGlobalFiltersComponent"));
14
37
  const expressions_ui_1 = require("@mwater/expressions-ui");
15
38
  const expressions_ui_2 = require("@mwater/expressions-ui");
39
+ exports.GlobalFiltersElementFactoryContext = (0, react_1.createContext)(null);
40
+ exports.AddLayerElementFactoryContext = (0, react_1.createContext)(undefined);
16
41
  /**
17
42
  * Creates several contexts to allow selecting of a table in an mWater-friendly way
18
43
  * and several other context items
19
44
  */
20
45
  class MWaterContextComponent extends react_1.default.Component {
21
- static childContextTypes = {
22
- addLayerElementFactory: prop_types_1.default.func,
23
- globalFiltersElementFactory: prop_types_1.default.func, // Call with props { schema, dataSource, filterableTables, globalFilters, onChange, nullIfIrrelevant }.
24
- // Displays a component to edit global filters. nullIfIrrelevant causes null element if not applicable to filterableTables
25
- };
26
46
  createTableSelectElementFactory = (options) => {
27
47
  return (react_1.default.createElement(MWaterTableSelectComponent_1.default, { apiUrl: this.props.apiUrl, client: this.props.client, schema: options.schema, user: this.props.user, table: options.value ?? undefined, onChange: options.onChange, extraTables: this.props.extraTables, onExtraTablesChange: this.props.onExtraTablesChange, filter: options.filter, onFilterChange: options.onFilterChange }));
28
48
  };
29
- getChildContext() {
30
- const context = {};
31
- if (this.props.addLayerElementFactory) {
32
- context.addLayerElementFactory = this.props.addLayerElementFactory;
49
+ createGlobalFiltersElementFactory = (props) => {
50
+ if (props.nullIfIrrelevant && !lodash_1.default.any(props.filterableTables, (t) => t.match(/^entities./))) {
51
+ return null;
33
52
  }
34
- context.globalFiltersElementFactory = (props) => {
35
- if (props.nullIfIrrelevant && !lodash_1.default.any(props.filterableTables, (t) => t.match(/^entities./))) {
36
- return null;
37
- }
38
- return react_1.default.createElement(MWaterGlobalFiltersComponent_1.default, props);
39
- };
40
- return context;
41
- }
53
+ return react_1.default.createElement(MWaterGlobalFiltersComponent_1.default, { ...props });
54
+ };
42
55
  isScalarExprTreeSectionMatch = (options) => {
43
56
  if (options.tableId.match(/^entities\./) && options.section.id === "!indicators") {
44
57
  return true;
@@ -84,9 +97,12 @@ class MWaterContextComponent extends react_1.default.Component {
84
97
  };
85
98
  render() {
86
99
  return react_1.default.createElement(expressions_ui_1.CustomTableSelectComponentFactoryContext.Provider, { value: this.createTableSelectElementFactory },
87
- react_1.default.createElement(expressions_ui_2.IsScalarExprTreeSectionMatchContext.Provider, { value: this.isScalarExprTreeSectionMatch },
88
- react_1.default.createElement(expressions_ui_2.IsScalarExprTreeSectionInitiallyOpenContext.Provider, { value: this.isScalarExprTreeSectionInitiallyOpen },
89
- react_1.default.createElement(expressions_ui_1.DecorateScalarExprTreeSectionChildrenContext.Provider, { value: this.decorateScalarExprTreeSectionChildren }, this.props.children))));
100
+ react_1.default.createElement(exports.GlobalFiltersElementFactoryContext.Provider, { value: this.createGlobalFiltersElementFactory },
101
+ react_1.default.createElement(expressions_ui_2.IsScalarExprTreeSectionMatchContext.Provider, { value: this.isScalarExprTreeSectionMatch },
102
+ react_1.default.createElement(expressions_ui_2.IsScalarExprTreeSectionInitiallyOpenContext.Provider, { value: this.isScalarExprTreeSectionInitiallyOpen },
103
+ react_1.default.createElement(expressions_ui_1.DecorateScalarExprTreeSectionChildrenContext.Provider, { value: this.decorateScalarExprTreeSectionChildren },
104
+ react_1.default.createElement(exports.AddLayerElementFactoryContext.Provider, { value: this.props.addLayerElementFactory }, this.props.children))))),
105
+ " ");
90
106
  }
91
107
  }
92
108
  exports.default = MWaterContextComponent;
@@ -15,13 +15,16 @@ const MWaterCustomTablesetListComponent = (props) => {
15
15
  const [tablesets, setTablesets] = (0, react_1.useState)();
16
16
  const [search, setSearch] = (0, react_1.useState)("");
17
17
  const [extraTableNeeded, setExtraTableNeeded] = (0, react_1.useState)();
18
+ const [showSystem, setShowSystem] = (0, react_1.useState)(false);
18
19
  // Get list of all tablesets
19
20
  (0, react_1.useEffect)(() => {
20
21
  fetch(`${props.apiUrl}custom_tablesets?client=${props.client || ""}`)
21
22
  .then((response) => response.json())
22
- .then((body) => {
23
+ .then((tablesets) => {
24
+ // Filter out non-normal
25
+ tablesets = tablesets.filter((ts) => ts.type === "normal");
23
26
  // Put included ones first
24
- setTablesets(lodash_1.default.sortByAll(body, [
27
+ setTablesets(lodash_1.default.sortByAll(tablesets, [
25
28
  (ts) => (props.extraTables.some((t) => (t || "").startsWith(`custom.${ts.code}.`)) ? 0 : 1),
26
29
  (ts) => expressions_1.ExprUtils.localizeString(ts.design.name, props.locale)
27
30
  ]));
@@ -80,8 +83,11 @@ const MWaterCustomTablesetListComponent = (props) => {
80
83
  react_2.default.createElement("h4", { className: "text-muted" }, name),
81
84
  react_2.default.createElement(UIComponents_1.OptionListComponent, { items: items })));
82
85
  };
86
+ const visibleTablesets = tablesets.filter((ts) => (showSystem || !ts.design.system) && !ts.design.deprecated);
83
87
  return (react_2.default.createElement("div", null,
84
88
  react_2.default.createElement(bootstrap_1.TextInput, { value: search, onChange: setSearch, placeholder: "Search..." }),
85
- tablesets.map((ts) => renderTableset(ts))));
89
+ visibleTablesets.map((ts) => renderTableset(ts)),
90
+ react_2.default.createElement("div", null,
91
+ react_2.default.createElement("button", { className: "btn btn-link btn-sm", onClick: () => setShowSystem(!showSystem) }, showSystem ? "Hide system tables" : "Show system tables"))));
86
92
  };
87
93
  exports.MWaterCustomTablesetListComponent = MWaterCustomTablesetListComponent;
@@ -1,16 +1,17 @@
1
1
  import React from "react";
2
2
  import { DataSource, Schema } from "@mwater/expressions";
3
+ import { GlobalFilter } from "./GlobalFilter";
3
4
  export interface MWaterGlobalFiltersComponentProps {
4
5
  /** Schema of the database */
5
6
  schema: Schema;
6
7
  /** Data source to use to get values */
7
8
  dataSource: DataSource;
8
- filterableTables: any;
9
- globalFilters?: any;
10
- onChange: any;
9
+ filterableTables: string[];
10
+ globalFilters?: GlobalFilter[];
11
+ onChange: (globalFilters: GlobalFilter[]) => void;
11
12
  }
12
13
  export default class MWaterGlobalFiltersComponent extends React.Component<MWaterGlobalFiltersComponentProps> {
13
- handleRegionsChange: (regions: any) => any;
14
- handleManagedByChange: (managedBy: any) => any;
14
+ handleRegionsChange: (regions: any) => void;
15
+ handleManagedByChange: (managedBy: any) => void;
15
16
  render(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
16
17
  }
@@ -45,7 +45,7 @@ class MWaterGlobalFiltersComponent extends react_1.default.Component {
45
45
  exprs: [{ type: "literal", valueType: "id[]", idTable: "admin_regions", value: regions }]
46
46
  });
47
47
  }
48
- return this.props.onChange(globalFilters);
48
+ this.props.onChange(globalFilters);
49
49
  };
50
50
  handleManagedByChange = (managedBy) => {
51
51
  // Remove existing filter
@@ -59,12 +59,12 @@ class MWaterGlobalFiltersComponent extends react_1.default.Component {
59
59
  exprs: [{ type: "literal", valueType: "id", idTable: "subjects", value: "group:" + managedBy }]
60
60
  });
61
61
  }
62
- return this.props.onChange(globalFilters);
62
+ this.props.onChange(globalFilters);
63
63
  };
64
64
  render() {
65
65
  // Find managed by
66
66
  let adminRegions, managedBy;
67
- const managedByEntry = lodash_1.default.find(this.props.globalFilters, (gf) => gf.op === "within" && gf.columnId === "_managed_by");
67
+ const managedByEntry = lodash_1.default.find(this.props.globalFilters || [], (gf) => gf.op === "within" && gf.columnId === "_managed_by");
68
68
  if (managedByEntry) {
69
69
  managedBy = managedByEntry.exprs[0].value.split(":")[1];
70
70
  }
@@ -72,7 +72,7 @@ class MWaterGlobalFiltersComponent extends react_1.default.Component {
72
72
  managedBy = null;
73
73
  }
74
74
  // Find admin region
75
- const adminRegionEntry = lodash_1.default.find(this.props.globalFilters, (gf) => gf.op === "within any" && gf.columnId === "admin_region");
75
+ const adminRegionEntry = lodash_1.default.find(this.props.globalFilters || [], (gf) => gf.op === "within any" && gf.columnId === "admin_region");
76
76
  if (adminRegionEntry) {
77
77
  adminRegions = adminRegionEntry.exprs[0].value;
78
78
  }
@@ -1,6 +1,8 @@
1
- import { ReactElement } from "react";
1
+ import React, { ReactElement } from "react";
2
2
  import { DataSource, Schema } from "@mwater/expressions";
3
3
  import AsyncLoadComponent from "@mwater/react-library/lib/AsyncLoadComponent";
4
+ import LoadingComponent from "@mwater/react-library/lib/LoadingComponent";
5
+ import MWaterContextComponent, { AddLayerElementFactory } from "./MWaterContextComponent";
4
6
  /**
5
7
  * Loads an mWater schema from the server and creates child with schema and dataSource
6
8
  * Also creates context to allow selecting of a table in an mWater-friendly way
@@ -21,13 +23,15 @@ export default class MWaterLoaderComponent extends AsyncLoadComponent<{
21
23
  /** Locales of the schema to load. Default is all. */
22
24
  locales?: string[];
23
25
  /** Override default add layer component. See AddLayerComponent for details */
24
- addLayerElementFactory?: any;
26
+ addLayerElementFactory?: AddLayerElementFactory;
25
27
  children: (error: any, config?: {
26
28
  schema: Schema;
27
29
  dataSource: DataSource;
28
30
  }) => ReactElement<any>;
29
31
  /** Custom error formatter that returns React node or string, gets passed the error response from server */
30
32
  errorFormatter?: (data: any, defaultError: string) => string;
33
+ /** Origin of usage. e.g. "dashboards:43445364..." */
34
+ origin?: string;
31
35
  }, {
32
36
  error: any;
33
37
  schema: Schema | null;
@@ -38,5 +42,13 @@ export default class MWaterLoaderComponent extends AsyncLoadComponent<{
38
42
  constructor(props: any);
39
43
  isLoadNeeded(newProps: any, oldProps: any): boolean;
40
44
  load(props: any, prevProps: any, callback: any): void;
41
- render(): any;
45
+ render(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.CElement<import("@mwater/react-library/lib/LoadingComponent").LoadingComponentProps, LoadingComponent> | React.CElement<{
46
+ apiUrl: string;
47
+ client?: string | undefined;
48
+ user?: string | undefined;
49
+ schema: Schema;
50
+ extraTables?: string[] | undefined;
51
+ onExtraTablesChange?: ((extraTables: string[]) => void) | undefined;
52
+ addLayerElementFactory?: AddLayerElementFactory | undefined;
53
+ }, MWaterContextComponent>;
42
54
  }
@@ -40,12 +40,21 @@ class MWaterLoaderComponent extends AsyncLoadComponent_1.default {
40
40
  share: props.share,
41
41
  asUser: props.asUser,
42
42
  extraTables: props.extraTables,
43
- locales: props.locales
43
+ locales: props.locales,
44
+ origin: props.origin
44
45
  }, (error, config) => {
45
46
  if (error) {
46
47
  const defaultError = `Cannot load one of the forms that this depends on. Perhaps the administrator has not shared the form with you? Details: ${error.message}`;
47
48
  if (this.props.errorFormatter) {
48
- return callback({ error: this.props.errorFormatter(JSON.parse(error.message), defaultError) });
49
+ try {
50
+ const parsedError = JSON.parse(error.message);
51
+ if (parsedError) {
52
+ return callback({ error: this.props.errorFormatter(parsedError, defaultError) });
53
+ }
54
+ }
55
+ catch (e) {
56
+ // Ignore
57
+ }
49
58
  }
50
59
  return callback({ error: defaultError });
51
60
  }
@@ -1,4 +1,3 @@
1
- import PropTypes from "prop-types";
2
1
  import React from "react";
3
2
  import { Schema } from "@mwater/expressions";
4
3
  export interface MWaterTableSelectComponentProps {
@@ -22,9 +21,7 @@ interface MWaterTableSelectComponentState {
22
21
  pendingExtraTable: any;
23
22
  }
24
23
  export default class MWaterTableSelectComponent extends React.Component<MWaterTableSelectComponentProps, MWaterTableSelectComponentState> {
25
- static contextTypes: {
26
- locale: PropTypes.Requireable<string>;
27
- };
24
+ static contextType: React.Context<string>;
28
25
  toggleEdit: any;
29
26
  constructor(props: any);
30
27
  componentWillReceiveProps(nextProps: any): any;
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
- const prop_types_1 = __importDefault(require("prop-types"));
8
7
  const react_1 = __importDefault(require("react"));
9
8
  const R = react_1.default.createElement;
10
9
  const UIComponents_1 = require("./UIComponents");
@@ -15,9 +14,7 @@ const MWaterCompleteTableSelectComponent_1 = __importDefault(require("./MWaterCo
15
14
  const expressions_ui_1 = require("@mwater/expressions-ui");
16
15
  // Allows selection of a mwater-visualization table. Loads forms as well and calls event if modified
17
16
  class MWaterTableSelectComponent extends react_1.default.Component {
18
- static contextTypes = {
19
- locale: prop_types_1.default.string, // e.g. "en"
20
- };
17
+ static contextType = expressions_ui_1.LocaleContext;
21
18
  toggleEdit;
22
19
  constructor(props) {
23
20
  super(props);
@@ -96,9 +93,12 @@ class MWaterTableSelectComponent extends react_1.default.Component {
96
93
  },
97
94
  forceOpen: !this.props.table,
98
95
  label: this.props.table
99
- ? expressions_1.ExprUtils.localizeString(this.props.schema.getTable(this.props.table)?.name, this.context.locale)
96
+ ? expressions_1.ExprUtils.localizeString(this.props.schema.getTable(this.props.table)?.name, this.context)
100
97
  : "",
101
- editor
98
+ editor,
99
+ onRemove: () => {
100
+ this.props.onChange(null);
101
+ }
102
102
  }),
103
103
  // Make sure table still exists
104
104
  this.props.table &&
@@ -117,9 +117,7 @@ class MWaterTableSelectComponent extends react_1.default.Component {
117
117
  exports.default = MWaterTableSelectComponent;
118
118
  // Is the table select component when in edit mode. Toggles between complete list and simplified list
119
119
  class EditModeTableSelectComponent extends react_1.default.Component {
120
- static contextTypes = {
121
- locale: prop_types_1.default.string, // e.g. "en"
122
- };
120
+ static contextType = expressions_ui_1.LocaleContext;
123
121
  constructor(props) {
124
122
  super(props);
125
123
  this.state = {
@@ -158,7 +156,7 @@ class EditModeTableSelectComponent extends react_1.default.Component {
158
156
  }
159
157
  }
160
158
  // Sort by name
161
- tables = lodash_1.default.sortBy(tables, (tableId) => expressions_1.ExprUtils.localizeString(this.props.schema.getTable(tableId).name, this.context.locale));
159
+ tables = lodash_1.default.sortBy(tables, (tableId) => expressions_1.ExprUtils.localizeString(this.props.schema.getTable(tableId).name, this.context));
162
160
  return tables;
163
161
  }
164
162
  handleCompleteChange = (tableId) => {
@@ -174,8 +172,8 @@ class EditModeTableSelectComponent extends react_1.default.Component {
174
172
  react_1.default.createElement(UIComponents_1.OptionListComponent, { items: this.getTableShortlist(activeTables).map((tableId) => {
175
173
  const table = this.props.schema.getTable(tableId);
176
174
  return {
177
- name: expressions_1.ExprUtils.localizeString(table.name, this.context.locale),
178
- desc: expressions_1.ExprUtils.localizeString(table.desc, this.context.locale),
175
+ name: expressions_1.ExprUtils.localizeString(table.name, this.context),
176
+ desc: expressions_1.ExprUtils.localizeString(table.desc, this.context),
179
177
  onClick: () => this.props.onChange(table.id)
180
178
  };
181
179
  }) }),