@mwater/visualization 5.4.0 → 5.4.2

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 (271) hide show
  1. package/lib/ColorComponent.js +2 -1
  2. package/lib/IdSelection.d.ts +16 -0
  3. package/lib/IdSelection.js +59 -0
  4. package/lib/MWaterAddRelatedIndicatorComponent.js +2 -2
  5. package/lib/MWaterCompleteTableSelectComponent.d.ts +3 -8
  6. package/lib/MWaterCompleteTableSelectComponent.js +36 -42
  7. package/lib/MWaterLoaderComponent.d.ts +11 -10
  8. package/lib/MWaterLoaderComponent.js +1 -1
  9. package/lib/MWaterResponsesFilterComponent.js +1 -1
  10. package/lib/MWaterTableSelectComponent.d.ts +0 -1
  11. package/lib/MWaterTableSelectComponent.js +4 -6
  12. package/lib/autotranslate.d.ts +20 -0
  13. package/lib/autotranslate.js +122 -0
  14. package/lib/axes/AxisBuilder.js +3 -3
  15. package/lib/axes/AxisColorEditorComponent.js +4 -0
  16. package/lib/axes/AxisComponent.d.ts +8 -12
  17. package/lib/axes/AxisComponent.js +32 -80
  18. package/lib/axes/CategoryMapComponent.js +4 -4
  19. package/lib/axes/RangesComponent.js +2 -2
  20. package/lib/dashboards/DashboardComponent.d.ts +6 -0
  21. package/lib/dashboards/DashboardComponent.js +44 -12
  22. package/lib/dashboards/DashboardDesign.d.ts +11 -2
  23. package/lib/dashboards/DashboardUtils.d.ts +5 -0
  24. package/lib/dashboards/DashboardUtils.js +30 -0
  25. package/lib/dashboards/DashboardViewComponent.d.ts +2 -0
  26. package/lib/dashboards/DashboardViewComponent.js +16 -3
  27. package/lib/dashboards/ServerDashboardDataSource.js +2 -1
  28. package/lib/dashboards/SettingsModalComponent.d.ts +1 -1
  29. package/lib/dashboards/SettingsModalComponent.js +256 -19
  30. package/lib/dashboards/WidgetComponent.d.ts +6 -3
  31. package/lib/dashboards/WidgetComponent.js +3 -1
  32. package/lib/datagrids/CellEditor.d.ts +19 -0
  33. package/lib/datagrids/CellEditor.js +223 -0
  34. package/lib/datagrids/DatagridComponent.d.ts +18 -87
  35. package/lib/datagrids/DatagridComponent.js +304 -222
  36. package/lib/datagrids/DatagridViewComponent.d.ts +15 -53
  37. package/lib/datagrids/DatagridViewComponent.js +256 -257
  38. package/lib/datagrids/DirectDatagridDataSource.js +2 -3
  39. package/lib/datagrids/ExprCellComponent.d.ts +8 -15
  40. package/lib/datagrids/ExprCellComponent.js +11 -15
  41. package/lib/datagrids/FindReplaceModalComponent.d.ts +4 -6
  42. package/lib/datagrids/FindReplaceModalComponent.js +38 -75
  43. package/lib/index.css +1 -1
  44. package/lib/index.d.ts +0 -1
  45. package/lib/index.js +0 -1
  46. package/lib/layouts/blocks/HorizontalBlockComponent.js +2 -2
  47. package/lib/mWaterLoader.d.ts +1 -1
  48. package/lib/maps/BufferLayer.d.ts +7 -5
  49. package/lib/maps/BufferLayer.js +69 -48
  50. package/lib/maps/BufferLayerDesign.d.ts +21 -14
  51. package/lib/maps/BufferLayerDesignerComponent.d.ts +16 -31
  52. package/lib/maps/BufferLayerDesignerComponent.js +68 -102
  53. package/lib/maps/ChoroplethLayer.d.ts +5 -4
  54. package/lib/maps/ChoroplethLayer.js +32 -9
  55. package/lib/maps/ChoroplethLayerDesign.d.ts +6 -2
  56. package/lib/maps/ChoroplethLayerDesigner.js +4 -2
  57. package/lib/maps/ClusterLayer.d.ts +3 -4
  58. package/lib/maps/ClusterLayer.js +2 -1
  59. package/lib/maps/DetailLevelSelectComponent.js +1 -1
  60. package/lib/maps/DirectMapDataSource.js +2 -1
  61. package/lib/maps/EditPopupComponent.js +5 -3
  62. package/lib/maps/GridLayer.d.ts +3 -4
  63. package/lib/maps/GridLayer.js +2 -1
  64. package/lib/maps/GridLayerDesigner.js +5 -3
  65. package/lib/maps/HoverContent.d.ts +11 -3
  66. package/lib/maps/HoverContent.js +25 -9
  67. package/lib/maps/Layer.d.ts +24 -3
  68. package/lib/maps/Layer.js +5 -1
  69. package/lib/maps/LayerFactory.js +0 -8
  70. package/lib/maps/LayerLegendComponent.js +0 -1
  71. package/lib/maps/LayerSwitcherComponent.d.ts +1 -0
  72. package/lib/maps/LayerSwitcherComponent.js +1 -1
  73. package/lib/maps/LeafletMapComponent.js +3 -1
  74. package/lib/maps/LegendComponent.d.ts +1 -0
  75. package/lib/maps/LegendComponent.js +9 -1
  76. package/lib/maps/MWaterServerLayer.d.ts +2 -2
  77. package/lib/maps/MWaterServerLayer.js +2 -2
  78. package/lib/maps/MapComponent.js +3 -3
  79. package/lib/maps/MapDesign.d.ts +2 -0
  80. package/lib/maps/MapDesignerComponent.d.ts +4 -3
  81. package/lib/maps/MapDesignerComponent.js +68 -74
  82. package/lib/maps/MapLayerViewDesignerComponent.js +2 -2
  83. package/lib/maps/MapUtils.d.ts +4 -0
  84. package/lib/maps/MapUtils.js +19 -0
  85. package/lib/maps/MapViewComponent.d.ts +8 -3
  86. package/lib/maps/MarkersLayer.d.ts +5 -4
  87. package/lib/maps/MarkersLayer.js +33 -7
  88. package/lib/maps/MarkersLayerDesign.d.ts +19 -16
  89. package/lib/maps/PopupFilterJoinsUtils.d.ts +6 -3
  90. package/lib/maps/PopupFilterJoinsUtils.js +0 -6
  91. package/lib/maps/RasterMapViewComponent.d.ts +3 -31
  92. package/lib/maps/RasterMapViewComponent.js +7 -2
  93. package/lib/maps/ServerMapDataSource.js +2 -1
  94. package/lib/maps/SwitchableTileUrlLayer.d.ts +3 -3
  95. package/lib/maps/SwitchableTileUrlLayer.js +2 -1
  96. package/lib/maps/TileUrlLayer.d.ts +4 -5
  97. package/lib/maps/TileUrlLayer.js +2 -1
  98. package/lib/maps/VectorMapViewComponent.d.ts +5 -37
  99. package/lib/maps/VectorMapViewComponent.js +19 -8
  100. package/lib/maps/maps.d.ts +3 -0
  101. package/lib/quickfilter/QuickfiltersComponent.d.ts +2 -0
  102. package/lib/quickfilter/QuickfiltersComponent.js +9 -7
  103. package/lib/quickfilter/QuickfiltersDesignComponent.d.ts +1 -1
  104. package/lib/quickfilter/QuickfiltersDesignComponent.js +19 -35
  105. package/lib/richtext/ExprItemsHtmlConverter.d.ts +5 -2
  106. package/lib/richtext/ExprItemsHtmlConverter.js +4 -4
  107. package/lib/richtext/ExprItemsTranslator.d.ts +5 -0
  108. package/lib/richtext/ExprItemsTranslator.js +149 -0
  109. package/lib/richtext/ItemsHtmlConverter.d.ts +1 -1
  110. package/lib/richtext/ItemsHtmlConverter.js +31 -15
  111. package/lib/wellknown.js +12 -9
  112. package/lib/widgets/IFrameWidget.d.ts +4 -4
  113. package/lib/widgets/ImageWidget.d.ts +7 -4
  114. package/lib/widgets/ImageWidget.js +9 -1
  115. package/lib/widgets/ImageWidgetComponent.d.ts +1 -0
  116. package/lib/widgets/ImageWidgetComponent.js +1 -1
  117. package/lib/widgets/MapWidget.d.ts +5 -48
  118. package/lib/widgets/MapWidget.js +26 -63
  119. package/lib/widgets/MarkdownWidget.d.ts +3 -0
  120. package/lib/widgets/MarkdownWidget.js +3 -0
  121. package/lib/widgets/TOCWidget.d.ts +15 -27
  122. package/lib/widgets/TOCWidget.js +107 -183
  123. package/lib/widgets/Widget.d.ts +18 -7
  124. package/lib/widgets/Widget.js +4 -0
  125. package/lib/widgets/WidgetScopesViewComponent.js +1 -1
  126. package/lib/widgets/charts/Chart.d.ts +10 -1
  127. package/lib/widgets/charts/Chart.js +22 -11
  128. package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
  129. package/lib/widgets/charts/ChartViewComponent.js +6 -3
  130. package/lib/widgets/charts/ChartWidget.d.ts +2 -0
  131. package/lib/widgets/charts/ChartWidget.js +9 -1
  132. package/lib/widgets/charts/ChartWidgetComponent.d.ts +4 -0
  133. package/lib/widgets/charts/ChartWidgetComponent.js +2 -2
  134. package/lib/widgets/charts/calendar/CalendarChart.d.ts +1 -0
  135. package/lib/widgets/charts/calendar/CalendarChart.js +26 -0
  136. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +3 -1
  137. package/lib/widgets/charts/imagemosaic/ImageMosaicChart.d.ts +1 -0
  138. package/lib/widgets/charts/imagemosaic/ImageMosaicChart.js +8 -0
  139. package/lib/widgets/charts/layered/LayeredChart.d.ts +2 -0
  140. package/lib/widgets/charts/layered/LayeredChart.js +63 -3
  141. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +1 -1
  142. package/lib/widgets/charts/layered/LayeredChartCompiler.js +3 -3
  143. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +2 -2
  144. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +8 -3
  145. package/lib/widgets/charts/pivot/PivotChart.d.ts +1 -0
  146. package/lib/widgets/charts/pivot/PivotChart.js +63 -0
  147. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +1 -0
  148. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +1 -1
  149. package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +6 -0
  150. package/lib/widgets/charts/pivot/SegmentDesignerComponent.js +7 -4
  151. package/lib/widgets/charts/table/OrderingsComponent.js +1 -1
  152. package/lib/widgets/charts/table/TableChart.d.ts +1 -0
  153. package/lib/widgets/charts/table/TableChart.js +15 -0
  154. package/lib/widgets/text/TextComponent.d.ts +11 -4
  155. package/lib/widgets/text/TextComponent.js +11 -8
  156. package/lib/widgets/text/TextWidget.d.ts +6 -3
  157. package/lib/widgets/text/TextWidget.js +7 -1
  158. package/lib/widgets/text/TextWidgetComponent.d.ts +4 -0
  159. package/lib/widgets/text/TextWidgetComponent.js +7 -1
  160. package/lib/widgets/text/TextWidgetDesign.d.ts +2 -4
  161. package/lib/widgets/text/TextWidgetDesign.js +1 -1
  162. package/package.json +7 -8
  163. package/src/ColorComponent.tsx +1 -2
  164. package/src/IdSelection.ts +62 -0
  165. package/src/MWaterAddRelatedIndicatorComponent.ts +3 -2
  166. package/src/MWaterCompleteTableSelectComponent.tsx +36 -46
  167. package/src/MWaterLoaderComponent.ts +28 -26
  168. package/src/MWaterResponsesFilterComponent.ts +5 -2
  169. package/src/MWaterTableSelectComponent.tsx +5 -9
  170. package/src/autotranslate.ts +141 -0
  171. package/src/axes/AxisBuilder.ts +3 -3
  172. package/src/axes/AxisColorEditorComponent.tsx +5 -0
  173. package/src/axes/{AxisComponent.ts → AxisComponent.tsx} +106 -106
  174. package/src/axes/CategoryMapComponent.ts +4 -4
  175. package/src/axes/RangesComponent.ts +3 -2
  176. package/src/dashboards/DashboardComponent.tsx +79 -14
  177. package/src/dashboards/DashboardDesign.ts +9 -2
  178. package/src/dashboards/DashboardUtils.ts +39 -0
  179. package/src/dashboards/DashboardViewComponent.tsx +22 -3
  180. package/src/dashboards/ServerDashboardDataSource.ts +2 -1
  181. package/src/dashboards/SettingsModalComponent.tsx +450 -35
  182. package/src/dashboards/WidgetComponent.tsx +12 -6
  183. package/src/datagrids/CellEditor.tsx +354 -0
  184. package/src/datagrids/DatagridComponent.tsx +646 -0
  185. package/src/datagrids/DatagridViewComponent.tsx +539 -0
  186. package/src/datagrids/DirectDatagridDataSource.ts +2 -3
  187. package/src/datagrids/{ExprCellComponent.ts → ExprCellComponent.tsx} +28 -23
  188. package/src/datagrids/{FindReplaceModalComponent.ts → FindReplaceModalComponent.tsx} +109 -122
  189. package/src/index.css +1 -1
  190. package/src/index.ts +0 -1
  191. package/src/layouts/blocks/HorizontalBlockComponent.ts +2 -2
  192. package/src/mWaterLoader.ts +1 -1
  193. package/src/maps/BufferLayer.ts +83 -60
  194. package/src/maps/BufferLayerDesign.ts +20 -14
  195. package/src/maps/BufferLayerDesignerComponent.tsx +309 -0
  196. package/src/maps/ChoroplethLayer.ts +40 -19
  197. package/src/maps/ChoroplethLayerDesign.ts +4 -2
  198. package/src/maps/ChoroplethLayerDesigner.tsx +4 -2
  199. package/src/maps/ClusterLayer.ts +4 -10
  200. package/src/maps/DetailLevelSelectComponent.ts +1 -1
  201. package/src/maps/DirectMapDataSource.ts +2 -1
  202. package/src/maps/EditPopupComponent.ts +7 -3
  203. package/src/maps/GridLayer.ts +4 -10
  204. package/src/maps/GridLayerDesigner.tsx +5 -3
  205. package/src/maps/HoverContent.tsx +40 -16
  206. package/src/maps/Layer.ts +28 -10
  207. package/src/maps/LayerFactory.ts +0 -8
  208. package/src/maps/LayerLegendComponent.ts +2 -4
  209. package/src/maps/LayerSwitcherComponent.tsx +6 -2
  210. package/src/maps/LeafletMapComponent.tsx +3 -1
  211. package/src/maps/LegendComponent.tsx +10 -1
  212. package/src/maps/MWaterServerLayer.ts +3 -3
  213. package/src/maps/MapComponent.ts +3 -3
  214. package/src/maps/MapDesign.ts +3 -0
  215. package/src/maps/MapDesignerComponent.tsx +165 -162
  216. package/src/maps/MapLayerViewDesignerComponent.ts +2 -2
  217. package/src/maps/MapUtils.ts +24 -0
  218. package/src/maps/MapViewComponent.tsx +11 -3
  219. package/src/maps/MarkersLayer.ts +44 -18
  220. package/src/maps/MarkersLayerDesign.ts +19 -16
  221. package/src/maps/PopupFilterJoinsUtils.ts +6 -2
  222. package/src/maps/RasterMapViewComponent.ts +9 -45
  223. package/src/maps/ServerMapDataSource.ts +2 -2
  224. package/src/maps/SwitchableTileUrlLayer.tsx +4 -10
  225. package/src/maps/TileUrlLayer.tsx +4 -10
  226. package/src/maps/VectorMapViewComponent.tsx +28 -55
  227. package/src/maps/maps.ts +3 -0
  228. package/src/quickfilter/QuickfiltersComponent.ts +13 -7
  229. package/src/quickfilter/QuickfiltersDesignComponent.tsx +56 -74
  230. package/src/richtext/ExprItemsHtmlConverter.ts +9 -5
  231. package/src/richtext/ExprItemsTranslator.ts +176 -0
  232. package/src/richtext/ItemsHtmlConverter.ts +33 -18
  233. package/src/wellknown.ts +33 -30
  234. package/src/widgets/ImageWidget.ts +10 -1
  235. package/src/widgets/ImageWidgetComponent.ts +3 -2
  236. package/src/widgets/{MapWidget.ts → MapWidget.tsx} +90 -101
  237. package/src/widgets/MarkdownWidget.ts +3 -0
  238. package/src/widgets/TOCWidget.tsx +281 -0
  239. package/src/widgets/Widget.ts +25 -5
  240. package/src/widgets/WidgetScopesViewComponent.ts +2 -1
  241. package/src/widgets/charts/Chart.ts +31 -12
  242. package/src/widgets/charts/ChartViewComponent.ts +13 -3
  243. package/src/widgets/charts/ChartWidget.ts +11 -1
  244. package/src/widgets/charts/ChartWidgetComponent.tsx +9 -1
  245. package/src/widgets/charts/calendar/CalendarChart.ts +29 -0
  246. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +3 -1
  247. package/src/widgets/charts/imagemosaic/ImageMosaicChart.ts +9 -0
  248. package/src/widgets/charts/layered/LayeredChart.ts +71 -3
  249. package/src/widgets/charts/layered/LayeredChartCompiler.ts +4 -4
  250. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +4 -2
  251. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +10 -4
  252. package/src/widgets/charts/pivot/PivotChart.ts +73 -0
  253. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +1 -1
  254. package/src/widgets/charts/pivot/SegmentDesignerComponent.tsx +6 -4
  255. package/src/widgets/charts/table/OrderingsComponent.tsx +2 -1
  256. package/src/widgets/charts/table/TableChart.ts +17 -0
  257. package/src/widgets/text/TextComponent.tsx +22 -12
  258. package/src/widgets/text/TextWidget.ts +9 -2
  259. package/src/widgets/text/TextWidgetComponent.tsx +16 -1
  260. package/src/widgets/text/TextWidgetDesign.ts +4 -7
  261. package/test/IdSelectionTests.ts +54 -0
  262. package/test/LayeredChartCompilerTests.ts +0 -2
  263. package/test/richtext/ExprItemsTranslatorTests.ts +144 -0
  264. package/test/wellknownTests.ts +144 -0
  265. package/src/datagrids/DatagridComponent.ts +0 -478
  266. package/src/datagrids/DatagridViewComponent.ts +0 -464
  267. package/src/datagrids/EditExprCellComponent.tsx +0 -305
  268. package/src/datagrids/README.md +0 -3
  269. package/src/maps/BufferLayerDesignerComponent.ts +0 -311
  270. package/src/widgets/TOCWidget.ts +0 -326
  271. package/test/LegoLayoutEngineTests.ts +0 -69
@@ -102,7 +102,7 @@ class QuickfiltersDesignComponent extends react_1.default.Component {
102
102
  };
103
103
  render() {
104
104
  return R("div", null, react_1.default.createElement(ListEditorComponent_1.ListEditorComponent, { items: this.props.design, onItemsChange: this.handleDesignChange, renderItem: this.renderQuickfilter, getReorderableKey: (item, index) => index }), this.props.tables.length > 0
105
- ? R("button", { type: "button", className: "btn btn-sm btn-link", onClick: this.handleAdd }, R("span", { className: "fas fa-plus" }), T `Add Quick Filter`)
105
+ ? R("button", { type: "button", className: "btn btn-sm btn-link", onClick: this.handleAdd }, R("span", { className: "fas fa-plus me-1" }), T `Add Quick Filter`)
106
106
  : undefined);
107
107
  }
108
108
  }
@@ -138,39 +138,23 @@ class QuickfilterDesignComponent extends react_1.default.Component {
138
138
  render() {
139
139
  // Determine type of expression
140
140
  const exprType = new expressions_1.ExprUtils(this.props.schema).getExprType(this.props.design.expr);
141
- return R("div", {}, R("div", { className: "mb-3 mt-1", key: "table" }, R("label", { className: "text-muted" }, T `Data Source`), R(ui.Select, {
142
- value: this.state.table,
143
- options: lodash_1.default.map(this.props.tables, (table) => ({
144
- value: table,
145
- label: expressions_1.ExprUtils.localizeString(this.props.schema.getTable(table).name)
146
- })),
147
- onChange: this.handleTableChange,
148
- nullLabel: T `Select...`
149
- })), R("div", { className: "mb-3", key: "expr" }, R("label", { className: "text-muted" }, T `Filter By`), R("div", null, R(expressions_ui_1.ExprComponent, {
150
- schema: this.props.schema,
151
- dataSource: this.props.dataSource,
152
- table: this.state.table,
153
- value: this.props.design.expr,
154
- onChange: this.handleExprChange,
155
- types: ["enum", "text", "enumset", "date", "datetime", "id[]", "text[]"],
156
- }))), this.props.design.expr
157
- ? R("div", { className: "mb-3", key: "label" }, R("label", { className: "text-muted" }, T `Label`), R("input", {
158
- type: "text",
159
- className: "form-control form-control-sm",
160
- value: this.props.design.label || "",
161
- onChange: this.handleLabelChange,
162
- placeholder: T `Optional Label`
163
- }))
164
- : undefined, this.props.mergeable
165
- ? R(ui.Checkbox, {
166
- value: this.props.design.merged,
167
- onChange: this.handleMergedChange
168
- }, T `Merge with previous quickfilter `, R("span", { className: "text-muted" }, T `- displays as one single control that filters both`))
169
- : undefined, ["enum", "text", "enumset", "id[]", "text[]"].includes(exprType)
170
- ? R(ui.Checkbox, {
171
- value: this.props.design.multi,
172
- onChange: this.handleMultiChange
173
- }, T `Allow multiple selections`)
174
- : undefined);
141
+ return (react_1.default.createElement("div", null,
142
+ react_1.default.createElement("div", { className: "mb-3 mt-1", key: "table" },
143
+ react_1.default.createElement("label", { className: "text-muted" }, T `Data Source`),
144
+ react_1.default.createElement(ui.Select, { value: this.state.table, options: lodash_1.default.map(this.props.tables, (table) => ({
145
+ value: table,
146
+ label: expressions_1.ExprUtils.localizeString(this.props.schema.getTable(table).name)
147
+ })), onChange: this.handleTableChange, nullLabel: T `Select...` })),
148
+ react_1.default.createElement("div", { className: "mb-3", key: "expr" },
149
+ react_1.default.createElement("label", { className: "text-muted" }, T `Filter By`),
150
+ react_1.default.createElement("div", null,
151
+ react_1.default.createElement(expressions_ui_1.ExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.state.table, value: this.props.design.expr, onChange: this.handleExprChange, types: ["enum", "text", "enumset", "date", "datetime", "id[]", "text[]"] }))),
152
+ this.props.design.expr ? (react_1.default.createElement("div", { className: "mb-3", key: "label" },
153
+ react_1.default.createElement("label", { className: "text-muted" }, T `Label`),
154
+ react_1.default.createElement("input", { type: "text", className: "form-control form-control-sm", value: this.props.design.label || "", onChange: this.handleLabelChange, placeholder: T `Optional Label` }))) : undefined,
155
+ this.props.mergeable ? (react_1.default.createElement(ui.Checkbox, { value: this.props.design.merged, onChange: this.handleMergedChange },
156
+ T `Merge with previous quickfilter `,
157
+ react_1.default.createElement("span", { className: "text-muted" }, `- ${T `displays as one single control that filters both`}`))) : undefined,
158
+ ["enum", "text", "enumset", "id[]", "text[]"].includes(exprType) ? (react_1.default.createElement(ui.Checkbox, { value: this.props.design.multi, onChange: this.handleMultiChange }, T `Allow multiple selections`)) : undefined));
175
159
  }
176
160
  }
@@ -1,5 +1,6 @@
1
- import ItemsHtmlConverter, { HtmlItemBase } from "./ItemsHtmlConverter";
1
+ import ItemsHtmlConverter, { HtmlItem, HtmlItemBase } from "./ItemsHtmlConverter";
2
2
  import { Expr, Schema } from "@mwater/expressions";
3
+ /** Html item that is an expression */
3
4
  export interface HtmlItemExpr extends HtmlItemBase {
4
5
  type: "expr";
5
6
  /** unique id */
@@ -13,6 +14,8 @@ export interface HtmlItemExpr extends HtmlItemBase {
13
14
  /** d3 format if number */
14
15
  format?: string;
15
16
  }
17
+ /** Html item that is an expression or a normal item */
18
+ export type HtmlItemOrExpr = HtmlItem | HtmlItemExpr;
16
19
  /**
17
20
  * ItemsHtmlConverter that supports embedded mwater expressions
18
21
  * Converts items (JSON contents of rich text) to HTML and back to allow editing
@@ -35,5 +38,5 @@ export default class ExprItemsHtmlConverter extends ItemsHtmlConverter {
35
38
  [key: string]: string;
36
39
  }, locale?: string);
37
40
  convertSpecialItemToHtml(item: HtmlItemBase): string;
38
- convertElemToItems(elem: HTMLElement): import("./ItemsHtmlConverter").HtmlItem[];
41
+ convertElemToItems(elem: HTMLElement): HtmlItem[];
39
42
  }
@@ -46,7 +46,7 @@ class ExprItemsHtmlConverter extends ItemsHtmlConverter_1.default {
46
46
  if (this.summarizeExprs) {
47
47
  text = new expressions_1.ExprUtils(this.schema).summarizeExpr(exprItem.expr, this.locale);
48
48
  if (text.length > 30) {
49
- text = text.substr(0, 30) + T `...`;
49
+ text = text.substr(0, 30) + `...`;
50
50
  }
51
51
  exprHtml = lodash_1.default.escape(text);
52
52
  }
@@ -67,7 +67,7 @@ class ExprItemsHtmlConverter extends ItemsHtmlConverter_1.default {
67
67
  exprHtml = lodash_1.default.escape(text);
68
68
  }
69
69
  else {
70
- exprHtml = `<span style="color: #DDD">${T `---`}</span>`;
70
+ exprHtml = `<span style="color: #DDD">${`---`}</span>`;
71
71
  }
72
72
  }
73
73
  else {
@@ -76,13 +76,13 @@ class ExprItemsHtmlConverter extends ItemsHtmlConverter_1.default {
76
76
  }
77
77
  // Add label
78
78
  if (exprItem.includeLabel) {
79
- const label = exprItem.labelText || new expressions_1.ExprUtils(this.schema).summarizeExpr(exprItem.expr, this.locale) + T `:\u00A0`;
79
+ const label = exprItem.labelText || new expressions_1.ExprUtils(this.schema).summarizeExpr(exprItem.expr, this.locale) + `:\u00A0`;
80
80
  exprHtml = `<span class="text-muted">${lodash_1.default.escape(label)}</span>` + exprHtml;
81
81
  }
82
82
  if (this.designMode) {
83
83
  html +=
84
84
  `\u2060<span data-embed="${lodash_1.default.escape(JSON.stringify(item))}" class="mwater-visualization-text-widget-expr">` +
85
- (exprHtml || T `\u00A0`) +
85
+ (exprHtml || `\u00A0`) +
86
86
  `</span>\u2060`;
87
87
  }
88
88
  else {
@@ -0,0 +1,5 @@
1
+ import { HtmlItemOrExpr } from "./ExprItemsHtmlConverter";
2
+ /** Gets all unique strings from html items */
3
+ export declare function getHtmlItemsStrings(items: HtmlItemOrExpr[]): string[];
4
+ /** Translates items in an html items list with expressions */
5
+ export declare function translateHtmlItems(items: HtmlItemOrExpr[], translate: (input: string) => string): HtmlItemOrExpr[];
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getHtmlItemsStrings = getHtmlItemsStrings;
7
+ exports.translateHtmlItems = translateHtmlItems;
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const immer_1 = require("immer");
10
+ const ItemsHtmlConverter_1 = __importDefault(require("./ItemsHtmlConverter"));
11
+ /** Gets all unique strings from html items */
12
+ function getHtmlItemsStrings(items) {
13
+ const strings = new Set();
14
+ // Create collector function that just saves strings and returns them unchanged
15
+ const collectStrings = (str) => {
16
+ // Only collect non-empty strings
17
+ if (str) {
18
+ strings.add(str);
19
+ }
20
+ return str;
21
+ };
22
+ // Use existing translation function but with collector
23
+ translateHtmlItems(items, collectStrings);
24
+ return Array.from(strings);
25
+ }
26
+ /** Translates items in an html items list with expressions */
27
+ function translateHtmlItems(items, translate) {
28
+ return (0, immer_1.produce)(items, draft => {
29
+ function translateItems(itemList) {
30
+ // Accumulate simple items
31
+ let simpleItems = [];
32
+ let simpleItemStartIndex = null;
33
+ /** Process accumulated simple nodes which are simple inline elements */
34
+ function processSimpleNodes() {
35
+ if (simpleItems.length === 0) {
36
+ return;
37
+ }
38
+ // Create html string with {0}, {1}, etc. for expressions and html for other items
39
+ const expressions = [];
40
+ const converter = new TranslationItemsHtmlConverter(item => {
41
+ if (item.type === "expr") {
42
+ const expr = item;
43
+ if (expr.labelText) {
44
+ expr.labelText = translate(expr.labelText);
45
+ }
46
+ expressions.push(expr);
47
+ return `{${expressions.length - 1}}`;
48
+ }
49
+ return "";
50
+ });
51
+ // Convert items to html which has the side effect of translating expressions
52
+ let html = converter.convertItemsToHtml(simpleItems);
53
+ // If there was no text, do nothing except translate expressions
54
+ if (!simpleItems.some(doesItemContainText)) {
55
+ return;
56
+ }
57
+ // Remove leading and trailing whitespace from the HTML
58
+ const leftWhitespace = html.slice(0, html.length - html.trimStart().length);
59
+ const rightWhitespace = html.slice(html.trimEnd().length);
60
+ html = html.trim();
61
+ if (!html) {
62
+ return;
63
+ }
64
+ let translatedHtml = leftWhitespace + translate(html) + rightWhitespace;
65
+ // Parse translatedHtml into items by first replacing {0}, {1}, etc. with html that can be converted to items
66
+ for (let i = 0; i < expressions.length; i++) {
67
+ const expr = expressions[i];
68
+ translatedHtml = translatedHtml.replace(new RegExp(`\\{${i}\\}`, "g"), `<span data-embed="${lodash_1.default.escape(JSON.stringify(expr))}"></span>`);
69
+ }
70
+ // Wrap in a div to prevent whitespace from being trimmed.
71
+ const translatedItems = (converter.convertElemToItems(new DOMParser().parseFromString("<div>" + translatedHtml + "</div>", "text/html").body.firstChild));
72
+ // Replace the simple items with the translated items
73
+ itemList.splice(simpleItemStartIndex, simpleItems.length, ...translatedItems);
74
+ simpleItems = [];
75
+ simpleItemStartIndex = null;
76
+ }
77
+ for (let i = 0; i < itemList.length; i++) {
78
+ const item = itemList[i];
79
+ // If the child is a simple node, add it to the list
80
+ if (isItemSimple(item)) {
81
+ simpleItems.push(item);
82
+ if (simpleItemStartIndex == null) {
83
+ simpleItemStartIndex = i;
84
+ }
85
+ }
86
+ else {
87
+ // If we have gathered simple nodes, we need to return/replace them
88
+ processSimpleNodes();
89
+ simpleItemStartIndex = null;
90
+ simpleItems = [];
91
+ // Handle the current node
92
+ if (typeof item !== "string" && item.type === "element" && item.items) {
93
+ translateItems(item.items);
94
+ }
95
+ }
96
+ }
97
+ if (simpleItems.length > 0) {
98
+ processSimpleNodes();
99
+ simpleItemStartIndex = null;
100
+ simpleItems = [];
101
+ }
102
+ }
103
+ translateItems(draft);
104
+ });
105
+ }
106
+ /** ItemsHtmlConverter that has a callback for handling special items */
107
+ class TranslationItemsHtmlConverter extends ItemsHtmlConverter_1.default {
108
+ handleSpecialItem;
109
+ constructor(handleSpecialItem) {
110
+ super();
111
+ this.handleSpecialItem = handleSpecialItem;
112
+ }
113
+ convertSpecialItemToHtml(item) {
114
+ return this.handleSpecialItem(item);
115
+ }
116
+ }
117
+ /**
118
+ * Check if an html item is simple.
119
+ * A node is simple if it is:
120
+ * - a string
121
+ * - a tag that is a "b", "i", "u", "a", "strong", "em" tag with no children or only simple children
122
+ * Only sequences of simple nodes are exported to translation entries as HTML.
123
+ */
124
+ function isItemSimple(node) {
125
+ if (typeof node === "string") {
126
+ return true;
127
+ }
128
+ if (node.type === "expr") {
129
+ return true;
130
+ }
131
+ if (node.type === "element") {
132
+ const element = node;
133
+ if (["b", "i", "u", "a", "strong", "em"].indexOf(element.tag) === -1) {
134
+ return false;
135
+ }
136
+ return (element.items || []).every(child => isItemSimple(child));
137
+ }
138
+ return false;
139
+ }
140
+ /** Determines if an item contains any non-empty text strings */
141
+ function doesItemContainText(item) {
142
+ if (typeof item === "string") {
143
+ return item.trim().length > 0;
144
+ }
145
+ if (item.type === "element") {
146
+ return (item.items || []).some(child => doesItemContainText(child));
147
+ }
148
+ return false;
149
+ }
@@ -25,7 +25,7 @@ export default class ItemsHtmlConverter {
25
25
  constructor(namedStrings?: {
26
26
  [key: string]: string;
27
27
  });
28
- convertItemsToHtml(items: any): string;
28
+ convertItemsToHtml(items: HtmlItem[]): string;
29
29
  convertSpecialItemToHtml(item: HtmlItemBase): string;
30
30
  convertElemToItems(elem: HTMLElement): HtmlItem[];
31
31
  }
@@ -50,18 +50,19 @@ class ItemsHtmlConverter {
50
50
  html += lodash_1.default.escape(itemStr);
51
51
  }
52
52
  else if (item.type === "element") {
53
- if (!allowedTags[item.tag]) {
53
+ const element = item;
54
+ if (!allowedTags[element.tag]) {
54
55
  // Ignore and do contents
55
- html += this.convertItemsToHtml(item.items);
56
+ html += this.convertItemsToHtml(element.items || []);
56
57
  continue;
57
58
  }
58
59
  let attrs = "";
59
60
  // Add style
60
- if (item.style) {
61
+ if (element.style) {
61
62
  attrs += ' style="';
62
63
  let first = true;
63
- for (let key in item.style) {
64
- const value = item.style[key];
64
+ for (let key in element.style) {
65
+ const value = element.style[key];
65
66
  if (!allowedStyles[key]) {
66
67
  continue;
67
68
  }
@@ -77,19 +78,19 @@ class ItemsHtmlConverter {
77
78
  attrs += '"';
78
79
  }
79
80
  // Add href
80
- if (item.href) {
81
- attrs += ' href="' + item.href + '"';
81
+ if (element.href) {
82
+ attrs += ' href="' + element.href + '"';
82
83
  }
83
84
  // Add target
84
- if (item.target) {
85
- attrs += ' target="' + lodash_1.default.escape(item.target) + '"';
85
+ if (element.target) {
86
+ attrs += ' target="' + lodash_1.default.escape(element.target) + '"';
86
87
  }
87
88
  // Special case for self-closing tags
88
- if (["br"].includes(item.tag)) {
89
- html += `<${item.tag}${attrs}>`;
89
+ if (["br"].includes(element.tag)) {
90
+ html += `<${element.tag}${attrs}>`;
90
91
  }
91
92
  else {
92
- html += `<${item.tag}${attrs}>` + this.convertItemsToHtml(item.items) + `</${item.tag}>`;
93
+ html += `<${element.tag}${attrs}>` + this.convertItemsToHtml(element.items || []) + `</${element.tag}>`;
93
94
  }
94
95
  }
95
96
  else {
@@ -101,6 +102,8 @@ class ItemsHtmlConverter {
101
102
  html = "\u2060";
102
103
  }
103
104
  // console.log "createHtml: #{html}"
105
+ // console.log("convertItemsToHtml: " + JSON.stringify(items, null, 2))
106
+ // console.log("convertItemsToHtml: " + html)
104
107
  return html;
105
108
  }
106
109
  // Converts an item that is not an element to html. Override in subclass.
@@ -138,14 +141,19 @@ class ItemsHtmlConverter {
138
141
  const nodeElement = node;
139
142
  if (nodeElement.style != null) {
140
143
  const styleDeclaration = nodeElement.style;
141
- for (const style of styleDeclaration) {
144
+ for (let i = 0; i < styleDeclaration.length; i++) {
145
+ const style = styleDeclaration[i];
142
146
  if (!allowedStyles[style]) {
143
147
  continue;
144
148
  }
145
- const value = styleDeclaration[style];
149
+ const value = styleDeclaration.getPropertyValue(style);
146
150
  if (value == null || value === "") {
147
151
  continue;
148
152
  }
153
+ // Ignore bootstrap variables in style values
154
+ if (value.startsWith("var(--bs-")) {
155
+ continue;
156
+ }
149
157
  item.style = item.style || {};
150
158
  item.style[style] = value;
151
159
  }
@@ -168,7 +176,13 @@ class ItemsHtmlConverter {
168
176
  if (node.target) {
169
177
  item.target = node.target;
170
178
  }
171
- items.push(item);
179
+ // Unwrap pointless span elements that have no style and one child
180
+ if (tag === "span" && item.style == null && item.items?.length === 1) {
181
+ items.push(item.items[0]);
182
+ }
183
+ else {
184
+ items.push(item);
185
+ }
172
186
  // Handle text
173
187
  }
174
188
  else if (node.nodeType === 3) {
@@ -181,6 +195,8 @@ class ItemsHtmlConverter {
181
195
  }
182
196
  }
183
197
  // console.log JSON.stringify(items, null, 2)
198
+ // console.log("convertElemToItems: " + elem.outerHTML)
199
+ // console.log("convertElemToItems: " + JSON.stringify(items, null, 2))
184
200
  return items;
185
201
  }
186
202
  }
package/lib/wellknown.js CHANGED
@@ -23,7 +23,7 @@ exports.parse = parse;
23
23
  exports.stringify = stringify;
24
24
  const numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
25
25
  // Matches sequences like '100 100' or '100 100 100'.
26
- const tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,}');
26
+ const tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,3}');
27
27
  /*
28
28
  * Parse WKT and return GeoJSON.
29
29
  *
@@ -91,7 +91,9 @@ function parse(input) {
91
91
  stack[stack.length - 1].push(pointer);
92
92
  }
93
93
  else if (!elem.split(/\s/g).some(s => isNaN(s))) {
94
- Array.prototype.push.apply(pointer, elem.split(/\s/g).map(parseFloat));
94
+ // Split into values and only take first 3 if there are 4 (ZM coordinates)
95
+ const values = elem.split(/\s/g).map(parseFloat);
96
+ Array.prototype.push.apply(pointer, values.length === 4 ? values.slice(0, 3) : values);
95
97
  }
96
98
  else {
97
99
  return null;
@@ -116,7 +118,8 @@ function parse(input) {
116
118
  else if (!pt.split(/\s/g).some(s => isNaN(s))) {
117
119
  if (!item)
118
120
  item = [];
119
- Array.prototype.push.apply(item, pt.split(/\s/g).map(parseFloat));
121
+ const values = pt.split(/\s/g).map(parseFloat);
122
+ Array.prototype.push.apply(item, values.length === 4 ? values.slice(0, 3) : values);
120
123
  }
121
124
  white();
122
125
  }
@@ -127,7 +130,7 @@ function parse(input) {
127
130
  return list.length ? list : null;
128
131
  }
129
132
  function point() {
130
- if (!$(/^(point(\sz)?)/i))
133
+ if (!$(/^(point(\s+zm|\s+z)?)/i))
131
134
  return null;
132
135
  white();
133
136
  if (!$(/^(\()/))
@@ -144,7 +147,7 @@ function parse(input) {
144
147
  };
145
148
  }
146
149
  function multipoint() {
147
- if (!$(/^(multipoint(\sz)?)/i))
150
+ if (!$(/^(multipoint(\s+zm|\s+z)?)/i))
148
151
  return null;
149
152
  white();
150
153
  let newCoordsFormat = _
@@ -162,7 +165,7 @@ function parse(input) {
162
165
  };
163
166
  }
164
167
  function multilinestring() {
165
- if (!$(/^(multilinestring(\sz)?)/i))
168
+ if (!$(/^(multilinestring(\s+zm|\s+z)?)/i))
166
169
  return null;
167
170
  white();
168
171
  let c = multicoords();
@@ -175,7 +178,7 @@ function parse(input) {
175
178
  };
176
179
  }
177
180
  function linestring() {
178
- if (!$(/^(linestring(\sz)?)/i))
181
+ if (!$(/^(linestring(\s+zm|\s+z)?)/i))
179
182
  return null;
180
183
  white();
181
184
  if (!$(/^(\()/))
@@ -191,7 +194,7 @@ function parse(input) {
191
194
  };
192
195
  }
193
196
  function polygon() {
194
- if (!$(/^(polygon(\sz)?)/i))
197
+ if (!$(/^(polygon(\s+zm|\s+z)?)/i))
195
198
  return null;
196
199
  white();
197
200
  let c = multicoords();
@@ -203,7 +206,7 @@ function parse(input) {
203
206
  };
204
207
  }
205
208
  function multipolygon() {
206
- if (!$(/^(multipolygon(\sz)?)/i))
209
+ if (!$(/^(multipolygon(\s+zm|\s+z)?)/i))
207
210
  return null;
208
211
  white();
209
212
  let c = multicoords();
@@ -2,13 +2,13 @@ import React from "react";
2
2
  import Widget, { CreateViewElementOptions } from "./Widget";
3
3
  export default class IFrameWidget extends Widget {
4
4
  createViewElement(options: CreateViewElementOptions): React.CElement<{
5
- design: object;
6
- onDesignChange: ((design: object) => void) | null | undefined;
5
+ design: any;
6
+ onDesignChange: ((design: any) => void) | null | undefined;
7
7
  width: number | undefined;
8
8
  height: number | undefined;
9
9
  }, React.Component<{
10
- design: object;
11
- onDesignChange: ((design: object) => void) | null | undefined;
10
+ design: any;
11
+ onDesignChange: ((design: any) => void) | null | undefined;
12
12
  width: number | undefined;
13
13
  height: number | undefined;
14
14
  }, any, any>>;
@@ -27,23 +27,26 @@ export default class ImageWidget extends Widget {
27
27
  dataSource: DataSource;
28
28
  widgetDataSource: import("./WidgetDataSource").WidgetDataSource;
29
29
  filters: JsonQLFilter[];
30
- design: object;
31
- onDesignChange: ((design: object) => void) | null | undefined;
30
+ design: any;
31
+ onDesignChange: ((design: any) => void) | null | undefined;
32
32
  width: number | undefined;
33
33
  height: number | undefined;
34
34
  singleRowTable: string | undefined;
35
+ translate: (input: string) => string;
35
36
  }, React.Component<{
36
37
  schema: Schema;
37
38
  dataSource: DataSource;
38
39
  widgetDataSource: import("./WidgetDataSource").WidgetDataSource;
39
40
  filters: JsonQLFilter[];
40
- design: object;
41
- onDesignChange: ((design: object) => void) | null | undefined;
41
+ design: any;
42
+ onDesignChange: ((design: any) => void) | null | undefined;
42
43
  width: number | undefined;
43
44
  height: number | undefined;
44
45
  singleRowTable: string | undefined;
46
+ translate: (input: string) => string;
45
47
  }, any, any>>;
46
48
  getData(design: ImageWidgetDesign, schema: Schema, dataSource: DataSource, filters: JsonQLFilter[], callback: any): any;
47
49
  isAutoHeight(): boolean;
48
50
  getFilterableTables(design: any, schema: Schema): any[];
51
+ getTranslatableStrings(design: ImageWidgetDesign, schema: Schema): string[];
49
52
  }
@@ -35,7 +35,8 @@ class ImageWidget extends Widget_1.default {
35
35
  onDesignChange: options.onDesignChange,
36
36
  width: options.width,
37
37
  height: options.height,
38
- singleRowTable: options.singleRowTable
38
+ singleRowTable: options.singleRowTable,
39
+ translate: options.translate
39
40
  });
40
41
  }
41
42
  // Get the data that the widget needs. This will be called on the server, typically.
@@ -108,5 +109,12 @@ class ImageWidget extends Widget_1.default {
108
109
  }
109
110
  return [];
110
111
  }
112
+ getTranslatableStrings(design, schema) {
113
+ const strings = [];
114
+ if (design.caption) {
115
+ strings.push(design.caption);
116
+ }
117
+ return strings;
118
+ }
111
119
  }
112
120
  exports.default = ImageWidget;
@@ -17,6 +17,7 @@ export interface ImageWidgetComponentProps {
17
17
  width: number;
18
18
  height: number;
19
19
  singleRowTable?: string;
20
+ translate: (input: string) => string;
20
21
  }
21
22
  export default class ImageWidgetComponent extends AsyncLoadComponent<ImageWidgetComponentProps, {
22
23
  data: any;
@@ -143,7 +143,7 @@ class ImageWidgetComponent extends AsyncLoadComponent_1.default {
143
143
  : R("div", {
144
144
  className: "mwater-visualization-image-widget",
145
145
  style: { position: "relative", width: this.props.width, height: this.props.height }
146
- }, captionPosition === "top" ? R("div", { className: "caption" }, this.props.design.caption) : undefined, R("div", { className: "image" }, this.renderContent()), captionPosition === "bottom" ? R("div", { className: "caption" }, this.props.design.caption) : undefined));
146
+ }, captionPosition === "top" && this.props.design.caption ? R("div", { className: "caption" }, this.props.translate(this.props.design.caption)) : undefined, R("div", { className: "image" }, this.renderContent()), captionPosition === "bottom" && this.props.design.caption ? R("div", { className: "caption" }, this.props.translate(this.props.design.caption)) : undefined));
147
147
  }
148
148
  }
149
149
  exports.default = ImageWidgetComponent;
@@ -1,52 +1,9 @@
1
1
  import React from "react";
2
2
  import Widget, { CreateViewElementOptions } from "./Widget";
3
- import ModalWindowComponent from "@mwater/react-library/lib/ModalWindowComponent";
4
- import { DataSource, Schema } from "@mwater/expressions";
5
- import { WidgetDataSource } from "./WidgetDataSource";
3
+ import { Schema } from "@mwater/expressions";
4
+ import { MapDesign } from "../maps/MapDesign";
6
5
  export default class MapWidget extends Widget {
7
- createViewElement(options: CreateViewElementOptions): React.CElement<any, MapWidgetComponent>;
8
- getFilterableTables(design: any, schema: Schema): string[];
6
+ createViewElement(options: CreateViewElementOptions): React.JSX.Element;
7
+ getFilterableTables(design: MapDesign, schema: Schema): string[];
8
+ getTranslatableStrings(design: MapDesign, schema: Schema): string[];
9
9
  }
10
- interface MapWidgetComponentProps {
11
- /** Schema to use */
12
- schema: Schema;
13
- /** Data source to use */
14
- dataSource: DataSource;
15
- widgetDataSource: WidgetDataSource;
16
- /** See Map Design.md */
17
- design: any;
18
- /** Called with new design. null/undefined for readonly */
19
- onDesignChange?: any;
20
- width?: number;
21
- height?: number;
22
- /** scope of the widget (when the widget self-selects a particular scope) */
23
- scope?: any;
24
- /** array of filters to apply. Each is { table: table id, jsonql: jsonql condition with {alias} for tableAlias. Use injectAlias to correct */
25
- filters?: any;
26
- /** called with (scope) as a scope to apply to self and filter to apply to other widgets. See WidgetScoper for details */
27
- onScopeChange?: any;
28
- onRowClick?: any;
29
- /** TODO: implement refreshing */
30
- refreshKey?: any;
31
- }
32
- interface MapWidgetComponentState {
33
- editDesign: any;
34
- transientDesign: any;
35
- }
36
- declare class MapWidgetComponent extends React.Component<MapWidgetComponentProps, MapWidgetComponentState> {
37
- constructor(props: any);
38
- componentDidUpdate(prevProps: any): void;
39
- handleStartEditing: () => void;
40
- handleEndEditing: () => void;
41
- handleEditDesignChange: (design: any) => void;
42
- renderEditor(): React.CElement<import("@mwater/react-library/lib/ModalWindowComponent").ModalWindowComponentProps, ModalWindowComponent> | null;
43
- renderContent(design: any, onDesignChange: any, width: any, height: any): React.DetailedReactHTMLElement<{
44
- style: {
45
- width: any;
46
- height: any;
47
- padding: number;
48
- };
49
- }, HTMLElement>;
50
- render(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
51
- }
52
- export {};