@mwater/visualization 5.4.5 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/MWaterContextComponent.d.ts +1 -1
- package/lib/MWaterContextComponent.js +1 -1
- package/lib/MWaterGlobalFiltersComponent.d.ts +2 -2
- package/lib/MWaterGlobalFiltersComponent.js +11 -20
- package/lib/MWaterLoaderComponent.d.ts +5 -14
- package/lib/MWaterLoaderComponent.js +2 -11
- package/lib/UndoStack.d.ts +2 -1
- package/lib/UndoStack.js +12 -6
- package/lib/dashboards/DashboardComponent.js +7 -5
- package/lib/dashboards/DashboardDesign.d.ts +1 -1
- package/lib/dashboards/LayoutOptionsComponent.js +18 -11
- package/lib/dashboards/ServerDashboardDataSource.d.ts +10 -1
- package/lib/dashboards/ServerDashboardDataSource.js +29 -10
- package/lib/dashboards/SettingsModalComponent.js +1 -1
- package/lib/dashboards/layoutOptions.d.ts +5 -1
- package/lib/datagrids/DatagridComponent.js +23 -3
- package/lib/datagrids/DatagridDesignerComponent.d.ts +2 -3
- package/lib/datagrids/DatagridDesignerComponent.js +108 -120
- package/lib/datagrids/DatagridViewComponent.js +3 -2
- package/lib/datagrids/ExprCellComponent.d.ts +1 -0
- package/lib/datagrids/ExprCellComponent.js +22 -20
- package/lib/datagrids/OrderBysDesignerComponent.d.ts +7 -7
- package/lib/datagrids/OrderBysDesignerComponent.js +19 -28
- package/lib/index.css +45 -2
- package/lib/index.d.ts +5 -5
- package/lib/index.js +2 -3
- package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +8 -1
- package/lib/layouts/blocks/BlocksDisplayComponent.js +46 -4
- package/lib/maps/BufferLayer.d.ts +18 -0
- package/lib/maps/BufferLayer.js +36 -14
- package/lib/maps/BufferLayerDesign.d.ts +1 -1
- package/lib/maps/BufferLayerDesignerComponent.js +2 -2
- package/lib/maps/ChoroplethLayer.d.ts +18 -0
- package/lib/maps/ChoroplethLayer.js +46 -25
- package/lib/maps/ChoroplethLayerDesign.d.ts +7 -3
- package/lib/maps/ChoroplethLayerDesigner.d.ts +10 -22
- package/lib/maps/ChoroplethLayerDesigner.js +58 -89
- package/lib/maps/DirectMapDataSource.js +17 -10
- package/lib/maps/EditHoverOver.d.ts +4 -3
- package/lib/maps/EditHoverOver.js +64 -35
- package/lib/maps/HoverContent.d.ts +10 -5
- package/lib/maps/HoverContent.js +7 -36
- package/lib/maps/Layer.d.ts +37 -0
- package/lib/maps/Layer.js +30 -4
- package/lib/maps/LeafletMapComponent.js +10 -19
- package/lib/maps/MWaterServerLayer.d.ts +2 -2
- package/lib/maps/MWaterServerLayer.js +6 -6
- package/lib/maps/MapComponent.js +0 -1
- package/lib/maps/MapLayerDataSource.d.ts +9 -0
- package/lib/maps/MapUtils.d.ts +19 -1
- package/lib/maps/MapUtils.js +80 -1
- package/lib/maps/MarkersLayer.d.ts +18 -0
- package/lib/maps/MarkersLayer.js +42 -26
- package/lib/maps/MarkersLayerDesign.d.ts +1 -1
- package/lib/maps/MarkersLayerDesignerComponent.d.ts +12 -28
- package/lib/maps/MarkersLayerDesignerComponent.js +81 -111
- package/lib/maps/RasterMapViewComponent.js +1 -1
- package/lib/maps/ServerMapDataSource.d.ts +9 -0
- package/lib/maps/ServerMapDataSource.js +29 -10
- package/lib/maps/VectorMapViewComponent.js +7 -15
- package/lib/maps/maps.d.ts +4 -2
- package/lib/maps/symbols/font-awesome/asterisk.png +0 -0
- package/lib/maps/symbols/font-awesome/ban.png +0 -0
- package/lib/maps/symbols/font-awesome/beer.png +0 -0
- package/lib/maps/symbols/font-awesome/bell.png +0 -0
- package/lib/maps/symbols/font-awesome/bolt.png +0 -0
- package/lib/maps/symbols/font-awesome/building.png +0 -0
- package/lib/maps/symbols/font-awesome/bullseye.png +0 -0
- package/lib/maps/symbols/font-awesome/bus.png +0 -0
- package/lib/maps/symbols/font-awesome/caret-up.png +0 -0
- package/lib/maps/symbols/font-awesome/certificate.png +0 -0
- package/lib/maps/symbols/font-awesome/check-circle.png +0 -0
- package/lib/maps/symbols/font-awesome/check.png +0 -0
- package/lib/maps/symbols/font-awesome/chevron-circle-down.png +0 -0
- package/lib/maps/symbols/font-awesome/chevron-circle-up.png +0 -0
- package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
- package/lib/maps/symbols/font-awesome/cloud.png +0 -0
- package/lib/maps/symbols/font-awesome/comment.png +0 -0
- package/lib/maps/symbols/font-awesome/crosshairs.png +0 -0
- package/lib/maps/symbols/font-awesome/dot-circle-o.png +0 -0
- package/lib/maps/symbols/font-awesome/exclamation-circle.png +0 -0
- package/lib/maps/symbols/font-awesome/exclamation-triangle.png +0 -0
- package/lib/maps/symbols/font-awesome/female.png +0 -0
- package/lib/maps/symbols/font-awesome/file.png +0 -0
- package/lib/maps/symbols/font-awesome/flag.png +0 -0
- package/lib/maps/symbols/font-awesome/flask.png +0 -0
- package/lib/maps/symbols/font-awesome/h-square.png +0 -0
- package/lib/maps/symbols/font-awesome/home.png +0 -0
- package/lib/maps/symbols/font-awesome/info-circle.png +0 -0
- package/lib/maps/symbols/font-awesome/male.png +0 -0
- package/lib/maps/symbols/font-awesome/medkit.png +0 -0
- package/lib/maps/symbols/font-awesome/mobile.png +0 -0
- package/lib/maps/symbols/font-awesome/plus-circle.png +0 -0
- package/lib/maps/symbols/font-awesome/plus-square.png +0 -0
- package/lib/maps/symbols/font-awesome/plus.png +0 -0
- package/lib/maps/symbols/font-awesome/square.png +0 -0
- package/lib/maps/symbols/font-awesome/star.png +0 -0
- package/lib/maps/symbols/font-awesome/thumbs-down.png +0 -0
- package/lib/maps/symbols/font-awesome/thumbs-up.png +0 -0
- package/lib/maps/symbols/font-awesome/ticket.png +0 -0
- package/lib/maps/symbols/font-awesome/times-circle.png +0 -0
- package/lib/maps/symbols/font-awesome/times.png +0 -0
- package/lib/maps/symbols/font-awesome/tint.png +0 -0
- package/lib/maps/symbols/font-awesome/tree.png +0 -0
- package/lib/maps/symbols/font-awesome/university.png +0 -0
- package/lib/maps/symbols/font-awesome/usd.png +0 -0
- package/lib/maps/symbols/font-awesome/user.png +0 -0
- package/lib/maps/symbols/font-awesome/users.png +0 -0
- package/lib/maps/symbols/font-awesome/wheelchair.png +0 -0
- package/lib/maps/symbols/sdf-ize.sh +93 -0
- package/lib/maps/vectorMaps.d.ts +1 -0
- package/lib/maps/vectorMaps.js +20 -36
- package/lib/mwater_table_selection/FormsListComponent.d.ts +33 -0
- package/lib/mwater_table_selection/FormsListComponent.js +141 -0
- package/lib/mwater_table_selection/IndicatorsListComponent.d.ts +49 -0
- package/lib/mwater_table_selection/IndicatorsListComponent.js +251 -0
- package/lib/mwater_table_selection/IssuesListComponent.d.ts +29 -0
- package/lib/mwater_table_selection/IssuesListComponent.js +123 -0
- package/lib/mwater_table_selection/MWaterAccountingSystemListComponent.d.ts +20 -0
- package/lib/mwater_table_selection/MWaterAccountingSystemListComponent.js +157 -0
- package/lib/mwater_table_selection/MWaterAssetSystemsListComponent.d.ts +17 -0
- package/lib/mwater_table_selection/MWaterAssetSystemsListComponent.js +79 -0
- package/lib/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.d.ts +18 -0
- package/lib/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.js +80 -0
- package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.d.ts +63 -0
- package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.js +461 -0
- package/lib/mwater_table_selection/MWaterCustomTablesetListComponent.d.ts +17 -0
- package/lib/mwater_table_selection/MWaterCustomTablesetListComponent.js +94 -0
- package/lib/mwater_table_selection/MWaterMetricsTableListComponent.d.ts +17 -0
- package/lib/mwater_table_selection/MWaterMetricsTableListComponent.js +80 -0
- package/lib/mwater_table_selection/MWaterTableSelectComponent.d.ts +32 -0
- package/lib/mwater_table_selection/MWaterTableSelectComponent.js +163 -0
- package/lib/mwater_table_selection/MWaterWorkflowsSelectComponent.d.ts +19 -0
- package/lib/mwater_table_selection/MWaterWorkflowsSelectComponent.js +111 -0
- package/lib/quickfilter/QuickfiltersComponent.d.ts +3 -102
- package/lib/quickfilter/QuickfiltersComponent.js +53 -110
- package/lib/quickfilter/TextLiteralComponent.d.ts +23 -47
- package/lib/quickfilter/TextLiteralComponent.js +85 -82
- package/lib/widgets/MapWidget.js +4 -2
- package/lib/widgets/charts/Chart.d.ts +11 -0
- package/lib/widgets/charts/Chart.js +15 -0
- package/lib/widgets/charts/ChartWidgetComponent.d.ts +1 -0
- package/lib/widgets/charts/ChartWidgetComponent.js +27 -1
- package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +1 -1
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +1 -1
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +5 -12
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +43 -57
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +113 -110
- package/lib/widgets/charts/layered/LayeredChartUtils.d.ts +2 -1
- package/lib/widgets/charts/layered/LayeredChartUtils.js +0 -2
- package/lib/widgets/charts/pivot/PivotChart.d.ts +2 -0
- package/lib/widgets/charts/pivot/PivotChart.js +156 -0
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +5 -20
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +31 -61
- package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +4 -0
- package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +4 -2
- package/lib/widgets/charts/pivot/PivotChartLayoutComponent.d.ts +5 -44
- package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +38 -63
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +7 -68
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.js +58 -106
- package/lib/widgets/charts/table/TableChart.d.ts +2 -0
- package/lib/widgets/charts/table/TableChart.js +172 -1
- package/lib/widgets/charts/table/TableChartDesignerComponent.d.ts +7 -17
- package/lib/widgets/charts/table/TableChartDesignerComponent.js +79 -95
- package/lib/widgets/charts/table/TableChartViewComponent.d.ts +1 -7
- package/lib/widgets/charts/table/TableChartViewComponent.js +19 -27
- package/lib/widgets/text/ExprItemEditorComponent.d.ts +3 -8
- package/lib/widgets/text/ExprItemEditorComponent.js +36 -33
- package/lib/widgets/text/ExprUpdateModalComponent.d.ts +1 -0
- package/package.json +4 -10
- package/src/MWaterContextComponent.tsx +2 -2
- package/src/{MWaterGlobalFiltersComponent.ts → MWaterGlobalFiltersComponent.tsx} +32 -33
- package/src/{MWaterLoaderComponent.ts → MWaterLoaderComponent.tsx} +18 -19
- package/src/UndoStack.ts +14 -6
- package/src/dashboards/DashboardComponent.tsx +7 -5
- package/src/dashboards/DashboardDesign.ts +1 -1
- package/src/dashboards/LayoutOptionsComponent.tsx +22 -10
- package/src/dashboards/ServerDashboardDataSource.ts +36 -13
- package/src/dashboards/SettingsModalComponent.tsx +1 -1
- package/src/dashboards/layoutOptions.tsx +5 -1
- package/src/datagrids/DatagridComponent.tsx +31 -3
- package/src/datagrids/DatagridDesignerComponent.tsx +241 -229
- package/src/datagrids/DatagridViewComponent.tsx +3 -2
- package/src/datagrids/ExprCellComponent.tsx +23 -20
- package/src/datagrids/OrderBysDesignerComponent.tsx +61 -70
- package/src/index.css +45 -2
- package/src/index.ts +5 -11
- package/src/layouts/blocks/BlocksDisplayComponent.tsx +60 -5
- package/src/maps/BufferLayer.ts +48 -20
- package/src/maps/BufferLayerDesign.ts +1 -1
- package/src/maps/BufferLayerDesignerComponent.tsx +2 -1
- package/src/maps/ChoroplethLayer.ts +70 -39
- package/src/maps/ChoroplethLayerDesign.ts +6 -2
- package/src/maps/ChoroplethLayerDesigner.tsx +171 -167
- package/src/maps/DirectMapDataSource.ts +21 -13
- package/src/maps/EditHoverOver.tsx +98 -54
- package/src/maps/HoverContent.tsx +17 -48
- package/src/maps/Layer.ts +42 -4
- package/src/maps/LeafletMapComponent.tsx +10 -19
- package/src/maps/MWaterServerLayer.ts +6 -6
- package/src/maps/MapComponent.ts +0 -1
- package/src/maps/MapLayerDataSource.ts +8 -0
- package/src/maps/MapUtils.ts +82 -3
- package/src/maps/MarkersLayer.ts +54 -27
- package/src/maps/MarkersLayerDesign.ts +1 -1
- package/src/maps/MarkersLayerDesignerComponent.tsx +360 -0
- package/src/maps/RasterMapViewComponent.ts +1 -1
- package/src/maps/ServerMapDataSource.ts +35 -12
- package/src/maps/VectorMapViewComponent.tsx +8 -19
- package/src/maps/maps.ts +4 -2
- package/src/maps/symbols/font-awesome/asterisk.png +0 -0
- package/src/maps/symbols/font-awesome/ban.png +0 -0
- package/src/maps/symbols/font-awesome/beer.png +0 -0
- package/src/maps/symbols/font-awesome/bell.png +0 -0
- package/src/maps/symbols/font-awesome/bolt.png +0 -0
- package/src/maps/symbols/font-awesome/building.png +0 -0
- package/src/maps/symbols/font-awesome/bullseye.png +0 -0
- package/src/maps/symbols/font-awesome/bus.png +0 -0
- package/src/maps/symbols/font-awesome/caret-up.png +0 -0
- package/src/maps/symbols/font-awesome/certificate.png +0 -0
- package/src/maps/symbols/font-awesome/check-circle.png +0 -0
- package/src/maps/symbols/font-awesome/check.png +0 -0
- package/src/maps/symbols/font-awesome/chevron-circle-down.png +0 -0
- package/src/maps/symbols/font-awesome/chevron-circle-up.png +0 -0
- package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
- package/src/maps/symbols/font-awesome/cloud.png +0 -0
- package/src/maps/symbols/font-awesome/comment.png +0 -0
- package/src/maps/symbols/font-awesome/crosshairs.png +0 -0
- package/src/maps/symbols/font-awesome/dot-circle-o.png +0 -0
- package/src/maps/symbols/font-awesome/exclamation-circle.png +0 -0
- package/src/maps/symbols/font-awesome/exclamation-triangle.png +0 -0
- package/src/maps/symbols/font-awesome/female.png +0 -0
- package/src/maps/symbols/font-awesome/file.png +0 -0
- package/src/maps/symbols/font-awesome/flag.png +0 -0
- package/src/maps/symbols/font-awesome/flask.png +0 -0
- package/src/maps/symbols/font-awesome/h-square.png +0 -0
- package/src/maps/symbols/font-awesome/home.png +0 -0
- package/src/maps/symbols/font-awesome/info-circle.png +0 -0
- package/src/maps/symbols/font-awesome/male.png +0 -0
- package/src/maps/symbols/font-awesome/medkit.png +0 -0
- package/src/maps/symbols/font-awesome/mobile.png +0 -0
- package/src/maps/symbols/font-awesome/plus-circle.png +0 -0
- package/src/maps/symbols/font-awesome/plus-square.png +0 -0
- package/src/maps/symbols/font-awesome/plus.png +0 -0
- package/src/maps/symbols/font-awesome/square.png +0 -0
- package/src/maps/symbols/font-awesome/star.png +0 -0
- package/src/maps/symbols/font-awesome/thumbs-down.png +0 -0
- package/src/maps/symbols/font-awesome/thumbs-up.png +0 -0
- package/src/maps/symbols/font-awesome/ticket.png +0 -0
- package/src/maps/symbols/font-awesome/times-circle.png +0 -0
- package/src/maps/symbols/font-awesome/times.png +0 -0
- package/src/maps/symbols/font-awesome/tint.png +0 -0
- package/src/maps/symbols/font-awesome/tree.png +0 -0
- package/src/maps/symbols/font-awesome/university.png +0 -0
- package/src/maps/symbols/font-awesome/usd.png +0 -0
- package/src/maps/symbols/font-awesome/user.png +0 -0
- package/src/maps/symbols/font-awesome/users.png +0 -0
- package/src/maps/symbols/font-awesome/wheelchair.png +0 -0
- package/src/maps/symbols/sdf-ize.sh +93 -0
- package/src/maps/vectorMaps.tsx +20 -44
- package/src/mwater_table_selection/FormsListComponent.tsx +188 -0
- package/src/mwater_table_selection/IndicatorsListComponent.tsx +411 -0
- package/src/mwater_table_selection/IssuesListComponent.tsx +167 -0
- package/src/mwater_table_selection/MWaterAccountingSystemListComponent.tsx +225 -0
- package/src/{MWaterAssetSystemsListComponent.tsx → mwater_table_selection/MWaterAssetSystemsListComponent.tsx} +2 -2
- package/src/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.tsx +111 -0
- package/src/mwater_table_selection/MWaterCompleteTableSelectComponent.tsx +713 -0
- package/src/{MWaterCustomTablesetListComponent.tsx → mwater_table_selection/MWaterCustomTablesetListComponent.tsx} +1 -1
- package/src/{MWaterMetricsTableListComponent.tsx → mwater_table_selection/MWaterMetricsTableListComponent.tsx} +1 -1
- package/src/{MWaterTableSelectComponent.tsx → mwater_table_selection/MWaterTableSelectComponent.tsx} +91 -90
- package/src/mwater_table_selection/MWaterWorkflowsSelectComponent.tsx +159 -0
- package/src/quickfilter/{QuickfiltersComponent.ts → QuickfiltersComponent.tsx} +165 -158
- package/src/quickfilter/TextLiteralComponent.tsx +197 -0
- package/src/widgets/MapWidget.tsx +9 -1
- package/src/widgets/charts/Chart.ts +17 -0
- package/src/widgets/charts/ChartWidgetComponent.tsx +36 -1
- package/src/widgets/charts/layered/LayeredChartDesign.ts +1 -1
- package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +23 -24
- package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +260 -211
- package/src/widgets/charts/layered/LayeredChartUtils.ts +7 -7
- package/src/widgets/charts/pivot/PivotChart.ts +191 -0
- package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +124 -129
- package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +4 -2
- package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +120 -149
- package/src/widgets/charts/pivot/SegmentDesignerComponent.tsx +178 -198
- package/src/widgets/charts/table/TableChart.ts +177 -1
- package/src/widgets/charts/table/TableChartDesignerComponent.tsx +422 -0
- package/src/widgets/charts/table/{TableChartViewComponent.ts → TableChartViewComponent.tsx} +65 -60
- package/src/widgets/text/ExprItemEditorComponent.tsx +83 -77
- package/src/widgets/text/ExprUpdateModalComponent.tsx +1 -0
- package/test/UndoStackTests.ts +52 -1
- package/.storybook/config.js +0 -7
- package/.storybook/head.html +0 -4
- package/.storybook/webpack.config.js +0 -15
- package/src/MWaterCompleteTableSelectComponent.tsx +0 -975
- package/src/maps/BingLayer.ts +0 -146
- package/src/maps/MarkersLayerDesignerComponent.ts +0 -374
- package/src/quickfilter/TextLiteralComponent.ts +0 -165
- package/src/widgets/charts/table/TableChartDesignerComponent.ts +0 -441
- package/stories/UpdateableComponent.js +0 -29
- package/stories/consoles.js +0 -202
- package/stories/dashboards.js +0 -217
- package/stories/datagridDesign.js +0 -114
- package/stories/datagrids.js +0 -69
- package/stories/dates.js +0 -80
- package/stories/exprcomponent.js +0 -43
- package/stories/index.js +0 -18
- package/stories/leaflet.js +0 -59
- package/stories/maps.js +0 -24
- package/stories/pivotChart.js +0 -235
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { default as LeafletMapComponent
|
|
1
|
+
export { default as LeafletMapComponent } from "./maps/LeafletMapComponent";
|
|
2
|
+
export type { MapBounds, TileLayer, GeoJsonLayer, MapLayer } from "./maps/LeafletMapComponent";
|
|
2
3
|
export { default as DateRangeComponent } from "./DateRangeComponent";
|
|
3
4
|
export { default as RegionSelectComponent } from "./maps/RegionSelectComponent";
|
|
4
5
|
export * from "./datagrids/DatagridDesign";
|
|
@@ -7,7 +8,7 @@ export { default as DashboardComponent } from "./dashboards/DashboardComponent";
|
|
|
7
8
|
export { default as DashboardDataSource } from "./dashboards/DashboardDataSource";
|
|
8
9
|
export { default as DirectDashboardDataSource } from "./dashboards/DirectDashboardDataSource";
|
|
9
10
|
export * from "./dashboards/DashboardDesign";
|
|
10
|
-
export { MapDesign, MapLayerView } from "./maps/MapDesign";
|
|
11
|
+
export type { MapDesign, MapLayerView } from "./maps/MapDesign";
|
|
11
12
|
export { default as compressJson } from "./compressJson";
|
|
12
13
|
export { default as LocaleContextInjector } from "./LocaleContextInjector";
|
|
13
14
|
export * from "./WidgetScope";
|
|
@@ -15,12 +16,12 @@ export { default as WidgetFactory } from "./widgets/WidgetFactory";
|
|
|
15
16
|
export { default as Widget } from "./widgets/Widget";
|
|
16
17
|
export { default as DatagridUtils } from "./datagrids/DatagridUtils";
|
|
17
18
|
export * from "./maps/MapViewComponent";
|
|
18
|
-
export { MapScope } from "./maps/MapUtils";
|
|
19
|
+
export type { MapScope } from "./maps/MapUtils";
|
|
19
20
|
export { languages } from "./languages";
|
|
20
21
|
export { default as MWaterLoaderComponent } from "./MWaterLoaderComponent";
|
|
21
22
|
export { default as MWaterContextComponent } from "./MWaterContextComponent";
|
|
22
23
|
export { default as mWaterLoader } from "./mWaterLoader";
|
|
23
|
-
export { WidgetDataSource } from "./widgets/WidgetDataSource";
|
|
24
|
+
export type { WidgetDataSource } from "./widgets/WidgetDataSource";
|
|
24
25
|
export { default as DirectWidgetDataSource } from "./widgets/DirectWidgetDataSource";
|
|
25
26
|
import "leaflet/dist/leaflet.css";
|
|
26
27
|
import "rc-slider/assets/index.css";
|
|
@@ -31,7 +32,6 @@ import "./index.css";
|
|
|
31
32
|
export { setMapTilerApiKey } from "./maps/vectorMaps";
|
|
32
33
|
export { default as UndoStack } from "./UndoStack";
|
|
33
34
|
export { default as DashboardViewComponent } from "./dashboards/DashboardViewComponent";
|
|
34
|
-
export declare let BingLayer: any;
|
|
35
35
|
export declare let UtfGridLayer: any;
|
|
36
36
|
export { default as LayerFactory } from "./maps/LayerFactory";
|
|
37
37
|
export { default as MapDesignerComponent } from "./maps/MapDesignerComponent";
|
package/lib/index.js
CHANGED
|
@@ -17,8 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.ItemsHtmlConverter = exports.RichTextComponent = exports.AxisColorEditorComponent = exports.MarkerSymbolSelectComponent = exports.DetailLevelSelectComponent = exports.LayoutManager = exports.LabeledExprGenerator = exports.DirectDatagridDataSource = exports.ServerDatagridDataSource = exports.DirectMapDataSource = exports.ServerMapDataSource = exports.ServerDashboardDataSource = exports.DatagridViewComponent = exports.DatagridComponent = exports.ColorSchemeFactory = exports.AxisBuilder = exports.WidgetScopesViewComponent = exports.WidgetScoper = exports.ChartViewComponent = exports.ImageMosaicChart = exports.CalendarChart = exports.TableChart = exports.LayeredChart = exports.CheckboxComponent = exports.RadioButtonComponent = exports.VerticalLayoutComponent = exports.MapComponent = exports.MapDesignerComponent = exports.LayerFactory = exports.UtfGridLayer = exports.
|
|
21
|
-
exports.OptionListComponent = exports.ToggleEditComponent = exports.QuickfilterCompiler =
|
|
20
|
+
exports.DropdownWidgetComponent = exports.ItemsHtmlConverter = exports.RichTextComponent = exports.AxisColorEditorComponent = exports.MarkerSymbolSelectComponent = exports.DetailLevelSelectComponent = exports.LayoutManager = exports.LabeledExprGenerator = exports.DirectDatagridDataSource = exports.ServerDatagridDataSource = exports.DirectMapDataSource = exports.ServerMapDataSource = exports.ServerDashboardDataSource = exports.DatagridViewComponent = exports.DatagridComponent = exports.ColorSchemeFactory = exports.AxisBuilder = exports.WidgetScopesViewComponent = exports.WidgetScoper = exports.ChartViewComponent = exports.ImageMosaicChart = exports.CalendarChart = exports.TableChart = exports.LayeredChart = exports.CheckboxComponent = exports.RadioButtonComponent = exports.VerticalLayoutComponent = exports.MapComponent = exports.MapDesignerComponent = exports.LayerFactory = exports.UtfGridLayer = exports.DashboardViewComponent = exports.UndoStack = exports.setMapTilerApiKey = exports.DirectWidgetDataSource = exports.mWaterLoader = exports.MWaterContextComponent = exports.MWaterLoaderComponent = exports.languages = exports.DatagridUtils = exports.Widget = exports.WidgetFactory = exports.LocaleContextInjector = exports.compressJson = exports.DirectDashboardDataSource = exports.DashboardDataSource = exports.DashboardComponent = exports.RegionSelectComponent = exports.DateRangeComponent = exports.LeafletMapComponent = void 0;
|
|
21
|
+
exports.OptionListComponent = exports.ToggleEditComponent = exports.QuickfilterCompiler = void 0;
|
|
22
22
|
var LeafletMapComponent_1 = require("./maps/LeafletMapComponent");
|
|
23
23
|
Object.defineProperty(exports, "LeafletMapComponent", { enumerable: true, get: function () { return __importDefault(LeafletMapComponent_1).default; } });
|
|
24
24
|
var DateRangeComponent_1 = require("./DateRangeComponent");
|
|
@@ -68,7 +68,6 @@ var UndoStack_1 = require("./UndoStack");
|
|
|
68
68
|
Object.defineProperty(exports, "UndoStack", { enumerable: true, get: function () { return __importDefault(UndoStack_1).default; } });
|
|
69
69
|
var DashboardViewComponent_1 = require("./dashboards/DashboardViewComponent");
|
|
70
70
|
Object.defineProperty(exports, "DashboardViewComponent", { enumerable: true, get: function () { return __importDefault(DashboardViewComponent_1).default; } });
|
|
71
|
-
exports.BingLayer = require("./maps/BingLayer");
|
|
72
71
|
exports.UtfGridLayer = require("./maps/UtfGridLayer");
|
|
73
72
|
var LayerFactory_1 = require("./maps/LayerFactory");
|
|
74
73
|
Object.defineProperty(exports, "LayerFactory", { enumerable: true, get: function () { return __importDefault(LayerFactory_1).default; } });
|
|
@@ -20,11 +20,18 @@ export interface BlocksDisplayComponentProps {
|
|
|
20
20
|
/** message to display if clipboard can't be pasted into current dashboard */
|
|
21
21
|
cantPasteMessage?: string;
|
|
22
22
|
}
|
|
23
|
+
interface BlocksDisplayComponentState {
|
|
24
|
+
isPaletteVisible: boolean;
|
|
25
|
+
isManuallyHidden: boolean;
|
|
26
|
+
}
|
|
23
27
|
/**
|
|
24
28
|
Renders the complete layout of the blocks and also optionally a palette to the left
|
|
25
29
|
that can be used to drag new items into the layout. Palette is only displayed if onItemsChange is not null
|
|
26
30
|
*/
|
|
27
|
-
declare class BlocksDisplayComponent extends React.Component<BlocksDisplayComponentProps> {
|
|
31
|
+
declare class BlocksDisplayComponent extends React.Component<BlocksDisplayComponentProps, BlocksDisplayComponentState> {
|
|
32
|
+
state: BlocksDisplayComponentState;
|
|
33
|
+
componentDidUpdate(prevProps: BlocksDisplayComponentProps): void;
|
|
34
|
+
handlePaletteToggle: () => void;
|
|
28
35
|
handleBlockDrop: (sourceBlock: LayoutBlock, targetBlock: LayoutBlock, side: "top" | "left" | "right" | "bottom") => void;
|
|
29
36
|
handleBlockRemove: (block: LayoutBlock) => void;
|
|
30
37
|
handleBlockUpdate: (block: LayoutBlock) => void;
|
|
@@ -42,6 +42,27 @@ const layoutOptions_1 = require("../../dashboards/layoutOptions");
|
|
|
42
42
|
that can be used to drag new items into the layout. Palette is only displayed if onItemsChange is not null
|
|
43
43
|
*/
|
|
44
44
|
class BlocksDisplayComponent extends react_1.default.Component {
|
|
45
|
+
state = {
|
|
46
|
+
isPaletteVisible: false,
|
|
47
|
+
isManuallyHidden: false
|
|
48
|
+
};
|
|
49
|
+
componentDidUpdate(prevProps) {
|
|
50
|
+
// If editing state changes (onItemsChange becomes available/unavailable)
|
|
51
|
+
if (prevProps.onItemsChange !== this.props.onItemsChange) {
|
|
52
|
+
if (this.props.onItemsChange && !this.state.isManuallyHidden) {
|
|
53
|
+
this.setState({ isPaletteVisible: true });
|
|
54
|
+
}
|
|
55
|
+
else if (!this.props.onItemsChange) {
|
|
56
|
+
this.setState({ isPaletteVisible: false, isManuallyHidden: false });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
handlePaletteToggle = () => {
|
|
61
|
+
this.setState(prevState => ({
|
|
62
|
+
isPaletteVisible: !prevState.isPaletteVisible,
|
|
63
|
+
isManuallyHidden: !prevState.isManuallyHidden
|
|
64
|
+
}));
|
|
65
|
+
};
|
|
45
66
|
handleBlockDrop = (sourceBlock, targetBlock, side) => {
|
|
46
67
|
// Remove source from items
|
|
47
68
|
let items = blockUtils.removeBlock(this.props.items, sourceBlock);
|
|
@@ -121,8 +142,28 @@ class BlocksDisplayComponent extends react_1.default.Component {
|
|
|
121
142
|
});
|
|
122
143
|
}
|
|
123
144
|
renderPalette() {
|
|
124
|
-
return (react_1.default.createElement("div", { key: "palette", style: {
|
|
145
|
+
return (react_1.default.createElement("div", { key: "palette", style: {
|
|
146
|
+
width: 141,
|
|
147
|
+
height: "100%",
|
|
148
|
+
position: "absolute",
|
|
149
|
+
top: 0,
|
|
150
|
+
left: 0,
|
|
151
|
+
transition: "transform 0.3s ease-in-out",
|
|
152
|
+
transform: this.state.isPaletteVisible ? "translateX(0)" : "translateX(-100%)"
|
|
153
|
+
} },
|
|
125
154
|
react_1.default.createElement("div", { className: "mwater-visualization-palette", style: { height: "100%" } },
|
|
155
|
+
react_1.default.createElement("div", { style: {
|
|
156
|
+
position: "absolute",
|
|
157
|
+
right: -14,
|
|
158
|
+
top: 0,
|
|
159
|
+
background: "#363b3e",
|
|
160
|
+
color: "white",
|
|
161
|
+
padding: "5px 3px 5px 5px",
|
|
162
|
+
cursor: "pointer",
|
|
163
|
+
borderRadius: "0 3px 3px 0",
|
|
164
|
+
zIndex: 1001
|
|
165
|
+
}, onClick: this.handlePaletteToggle },
|
|
166
|
+
react_1.default.createElement("i", { className: `fa fa-chevron-${this.state.isPaletteVisible ? 'left' : 'right'}` })),
|
|
126
167
|
react_1.default.createElement(PaletteItemComponent_1.default, { createItem: this.createBlockItem({ type: "widget", widgetType: "Text", design: { style: "title" } }), title: react_1.default.createElement("i", { className: "fa fa-font" }), subtitle: T `Title` }),
|
|
127
168
|
react_1.default.createElement(PaletteItemComponent_1.default, { createItem: this.createBlockItem({ type: "widget", widgetType: "Text", design: {} }), title: react_1.default.createElement("i", { className: "fa fa-align-left" }), subtitle: T `Text` }),
|
|
128
169
|
react_1.default.createElement(PaletteItemComponent_1.default, { createItem: this.createBlockItem({ type: "widget", aspectRatio: 1.4, widgetType: "Image", design: {} }), title: react_1.default.createElement("i", { className: "fa fa-picture-o" }), subtitle: T `Image` }),
|
|
@@ -178,15 +219,16 @@ class BlocksDisplayComponent extends react_1.default.Component {
|
|
|
178
219
|
innerParentStyle = {};
|
|
179
220
|
innerParentStyle.maxWidth = layoutOptions.maximumWidth || undefined;
|
|
180
221
|
return (react_1.default.createElement(layoutOptions_1.DashboardStyleWrapper, { style: { width: "100%", height: "100%", overflow: "hidden", position: "relative" }, layoutOptions: layoutOptions },
|
|
181
|
-
this.renderPalette(),
|
|
222
|
+
react_1.default.createElement("div", { className: "mwater-visualization-palette-container" }, this.renderPalette()),
|
|
182
223
|
react_1.default.createElement("div", { style: {
|
|
183
224
|
position: "absolute",
|
|
184
|
-
left: 141,
|
|
225
|
+
left: this.state.isPaletteVisible ? 141 : 0,
|
|
185
226
|
top: 0,
|
|
186
227
|
bottom: 0,
|
|
187
228
|
right: 0,
|
|
188
229
|
overflowX: "auto",
|
|
189
|
-
overflowY: "scroll"
|
|
230
|
+
overflowY: "scroll",
|
|
231
|
+
transition: "left 0.3s ease-in-out"
|
|
190
232
|
}, className: `mwater-visualization-block-parent-outer mwater-visualization-block-editing` },
|
|
191
233
|
react_1.default.createElement("div", { key: "inner", className: `mwater-visualization-block-parent-inner mwater-visualization-block-parent-inner-${this.props.style || "default"}`, style: innerParentStyle }, this.renderBlock(this.props.items, false, 0)))));
|
|
192
234
|
}
|
|
@@ -50,4 +50,22 @@ export default class BufferLayer extends Layer<BufferLayerDesign> {
|
|
|
50
50
|
validateDesign(design: BufferLayerDesign, schema: Schema): string | null;
|
|
51
51
|
/** Get strings to be translated */
|
|
52
52
|
getTranslatableStrings(design: BufferLayerDesign, schema: Schema): string[];
|
|
53
|
+
/** Gets hover over data for hover over items. This should be implemented by layers that have hover over items.
|
|
54
|
+
* It will be called on the server side if using a server map data source, or on the client side if using a direct
|
|
55
|
+
* map data source.
|
|
56
|
+
*/
|
|
57
|
+
getHoverOverData(options: {
|
|
58
|
+
/** Design of the layer */
|
|
59
|
+
design: BufferLayerDesign;
|
|
60
|
+
/** Data of the current item being hovered over. e.g. { id: 123 } */
|
|
61
|
+
data: any;
|
|
62
|
+
/** Filters to apply to the hover over data, not including filtering down to the current item */
|
|
63
|
+
filters: JsonQLFilter[];
|
|
64
|
+
/** Schema to use */
|
|
65
|
+
schema: Schema;
|
|
66
|
+
/** Data source to use */
|
|
67
|
+
dataSource: DataSource;
|
|
68
|
+
}): Promise<{
|
|
69
|
+
[key: string]: any;
|
|
70
|
+
}>;
|
|
53
71
|
}
|
package/lib/maps/BufferLayer.js
CHANGED
|
@@ -39,6 +39,7 @@ const HoverContent_1 = __importDefault(require("./HoverContent"));
|
|
|
39
39
|
const layoutOptions_1 = require("../dashboards/layoutOptions");
|
|
40
40
|
const BlocksLayoutManager_1 = __importDefault(require("../layouts/blocks/BlocksLayoutManager"));
|
|
41
41
|
const DashboardUtils_1 = require("../dashboards/DashboardUtils");
|
|
42
|
+
const MapUtils_1 = require("./MapUtils");
|
|
42
43
|
/** Layer which draws a buffer around geometries (i.e. a radius circle around points) */
|
|
43
44
|
class BufferLayer extends Layer_1.default {
|
|
44
45
|
/** Gets the type of layer definition */
|
|
@@ -635,25 +636,20 @@ marker-fill: ` +
|
|
|
635
636
|
}
|
|
636
637
|
// same as onGridClick but handles hover over
|
|
637
638
|
onGridHoverOver(ev, hoverOptions) {
|
|
638
|
-
if (ev.data && ev.data.id) {
|
|
639
|
-
const
|
|
640
|
-
|
|
641
|
-
// Popup
|
|
642
|
-
if (hoverOptions.design.hoverOver) {
|
|
643
|
-
// Create filter using popupFilterJoins
|
|
644
|
-
const popupFilterJoins = hoverOptions.design.popupFilterJoins || PopupFilterJoinsUtils.createDefaultPopupFilterJoins(table);
|
|
645
|
-
const popupFilters = PopupFilterJoinsUtils.createPopupFilters(popupFilterJoins, hoverOptions.schema, table, ev.data.id);
|
|
646
|
-
results.hoverOver = react_1.default.createElement(HoverContent_1.default, {
|
|
639
|
+
if (ev.data && ev.data.id && hoverOptions.design.hoverOver && hoverOptions.design.hoverOver.items.length > 0) {
|
|
640
|
+
const results = {
|
|
641
|
+
hoverOver: react_1.default.createElement(HoverContent_1.default, {
|
|
647
642
|
key: ev.data.id,
|
|
648
643
|
schema: hoverOptions.schema,
|
|
649
|
-
|
|
650
|
-
|
|
644
|
+
data: ev.data,
|
|
645
|
+
mapLayerDataSource: hoverOptions.layerDataSource,
|
|
646
|
+
design: hoverOptions.design,
|
|
651
647
|
items: hoverOptions.design.hoverOver.items,
|
|
652
|
-
filters:
|
|
648
|
+
filters: hoverOptions.filters,
|
|
653
649
|
locale: hoverOptions.locale,
|
|
654
650
|
translate: hoverOptions.translate
|
|
655
|
-
})
|
|
656
|
-
}
|
|
651
|
+
})
|
|
652
|
+
};
|
|
657
653
|
return results;
|
|
658
654
|
}
|
|
659
655
|
else {
|
|
@@ -781,6 +777,18 @@ marker-fill: ` +
|
|
|
781
777
|
aggrNeed: "none"
|
|
782
778
|
});
|
|
783
779
|
draft.filter = exprCleaner.cleanExpr(design.filter || null, { table: design.table });
|
|
780
|
+
// Clean hover over expressions
|
|
781
|
+
if (design.table && design.hoverOver && design.hoverOver.items) {
|
|
782
|
+
for (let i = 0; i < design.hoverOver.items.length; i++) {
|
|
783
|
+
const item = design.hoverOver.items[i];
|
|
784
|
+
if (item.value) {
|
|
785
|
+
draft.hoverOver.items[i].value = exprCleaner.cleanExpr(item.value || null, {
|
|
786
|
+
table: design.table,
|
|
787
|
+
aggrStatuses: ["individual", "literal"]
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
}
|
|
784
792
|
});
|
|
785
793
|
return design;
|
|
786
794
|
}
|
|
@@ -836,5 +844,19 @@ marker-fill: ` +
|
|
|
836
844
|
// Remove duplicates
|
|
837
845
|
return lodash_1.default.uniq(strings);
|
|
838
846
|
}
|
|
847
|
+
/** Gets hover over data for hover over items. This should be implemented by layers that have hover over items.
|
|
848
|
+
* It will be called on the server side if using a server map data source, or on the client side if using a direct
|
|
849
|
+
* map data source.
|
|
850
|
+
*/
|
|
851
|
+
getHoverOverData(options) {
|
|
852
|
+
return (0, MapUtils_1.getSimpleHoverOverData)({
|
|
853
|
+
id: options.data.id,
|
|
854
|
+
table: options.design.table,
|
|
855
|
+
filters: options.filters,
|
|
856
|
+
schema: options.schema,
|
|
857
|
+
dataSource: options.dataSource,
|
|
858
|
+
hoverOverItems: options.design.hoverOver.items,
|
|
859
|
+
});
|
|
860
|
+
}
|
|
839
861
|
}
|
|
840
862
|
exports.default = BufferLayer;
|
|
@@ -39,7 +39,7 @@ const ZoomLevelsComponent_1 = __importDefault(require("./ZoomLevelsComponent"));
|
|
|
39
39
|
const PopupFilterJoinsUtils = __importStar(require("./PopupFilterJoinsUtils"));
|
|
40
40
|
const bootstrap_1 = require("@mwater/react-library/lib/bootstrap");
|
|
41
41
|
const vectorMaps_1 = require("./vectorMaps");
|
|
42
|
-
const EditHoverOver_1 =
|
|
42
|
+
const EditHoverOver_1 = require("./EditHoverOver");
|
|
43
43
|
class BufferLayerDesignerComponent extends react_1.default.Component {
|
|
44
44
|
handleTableChange = (table) => {
|
|
45
45
|
this.props.onDesignChange({ ...this.props.design, table });
|
|
@@ -164,7 +164,7 @@ class BufferLayerDesignerComponent extends react_1.default.Component {
|
|
|
164
164
|
if (!this.props.design.table) {
|
|
165
165
|
return null;
|
|
166
166
|
}
|
|
167
|
-
return (react_1.default.createElement(EditHoverOver_1.
|
|
167
|
+
return (react_1.default.createElement(EditHoverOver_1.EditHoverOver, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table), aggrStatuses: ["individual", "literal"] }));
|
|
168
168
|
}
|
|
169
169
|
render() {
|
|
170
170
|
return (react_1.default.createElement("div", null,
|
|
@@ -72,4 +72,22 @@ export default class ChoroplethLayer extends Layer<ChoroplethLayerDesign> {
|
|
|
72
72
|
}): React.ReactElement<{}>;
|
|
73
73
|
/** Get strings to be translated */
|
|
74
74
|
getTranslatableStrings(design: ChoroplethLayerDesign, schema: Schema): string[];
|
|
75
|
+
/** Gets hover over data for hover over items. This should be implemented by layers that have hover over items.
|
|
76
|
+
* It will be called on the server side if using a server map data source, or on the client side if using a direct
|
|
77
|
+
* map data source.
|
|
78
|
+
*/
|
|
79
|
+
getHoverOverData(options: {
|
|
80
|
+
/** Design of the layer */
|
|
81
|
+
design: ChoroplethLayerDesign;
|
|
82
|
+
/** Data of the current item being hovered over. e.g. { id: 123 } */
|
|
83
|
+
data: any;
|
|
84
|
+
/** Filters to apply to the hover over data, not including filtering down to the current item */
|
|
85
|
+
filters: JsonQLFilter[];
|
|
86
|
+
/** Schema to use */
|
|
87
|
+
schema: Schema;
|
|
88
|
+
/** Data source to use */
|
|
89
|
+
dataSource: DataSource;
|
|
90
|
+
}): Promise<{
|
|
91
|
+
[key: string]: any;
|
|
92
|
+
}>;
|
|
75
93
|
}
|
|
@@ -39,6 +39,7 @@ const HoverContent_1 = __importDefault(require("./HoverContent"));
|
|
|
39
39
|
const layoutOptions_1 = require("../dashboards/layoutOptions");
|
|
40
40
|
const BlocksLayoutManager_1 = __importDefault(require("../layouts/blocks/BlocksLayoutManager"));
|
|
41
41
|
const DashboardUtils_1 = require("../dashboards/DashboardUtils");
|
|
42
|
+
const MapUtils_1 = require("./MapUtils");
|
|
42
43
|
class ChoroplethLayer extends Layer_1.default {
|
|
43
44
|
/** Gets the type of layer definition */
|
|
44
45
|
getLayerDefinitionType() {
|
|
@@ -1246,41 +1247,28 @@ class ChoroplethLayer extends Layer_1.default {
|
|
|
1246
1247
|
}
|
|
1247
1248
|
// same as onGridClick but handles hover over
|
|
1248
1249
|
onGridHoverOver(ev, hoverOptions) {
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
if (!ev.data || !ev.data.id) {
|
|
1253
|
-
return null;
|
|
1254
|
-
}
|
|
1250
|
+
// Only applicable to indirect mode
|
|
1251
|
+
if (hoverOptions.design.regionMode !== "indirect") {
|
|
1252
|
+
return null;
|
|
1255
1253
|
}
|
|
1256
1254
|
// Ignore if indirect with no table
|
|
1257
1255
|
if (!hoverOptions.design.table) {
|
|
1258
1256
|
return null;
|
|
1259
1257
|
}
|
|
1260
|
-
if (ev.data && ev.data.id) {
|
|
1261
|
-
const
|
|
1262
|
-
|
|
1263
|
-
// Popup
|
|
1264
|
-
if (hoverOptions.design.hoverOver) {
|
|
1265
|
-
// Create default popup filter joins
|
|
1266
|
-
const defaultPopupFilterJoins = {};
|
|
1267
|
-
if (hoverOptions.design.adminRegionExpr) {
|
|
1268
|
-
defaultPopupFilterJoins[hoverOptions.design.table] = hoverOptions.design.adminRegionExpr;
|
|
1269
|
-
}
|
|
1270
|
-
// Create filter using popupFilterJoins
|
|
1271
|
-
const popupFilterJoins = hoverOptions.design.popupFilterJoins || defaultPopupFilterJoins;
|
|
1272
|
-
const popupFilters = PopupFilterJoinsUtils.createPopupFilters(popupFilterJoins, hoverOptions.schema, table, ev.data.id, true);
|
|
1273
|
-
results.hoverOver = react_1.default.createElement(HoverContent_1.default, {
|
|
1258
|
+
if (ev.data && ev.data.id && hoverOptions.design.hoverOver && hoverOptions.design.hoverOver.items.length > 0) {
|
|
1259
|
+
const results = {
|
|
1260
|
+
hoverOver: react_1.default.createElement(HoverContent_1.default, {
|
|
1274
1261
|
key: ev.data.id,
|
|
1275
1262
|
schema: hoverOptions.schema,
|
|
1276
|
-
|
|
1277
|
-
|
|
1263
|
+
mapLayerDataSource: hoverOptions.layerDataSource,
|
|
1264
|
+
design: hoverOptions.design,
|
|
1278
1265
|
items: hoverOptions.design.hoverOver.items,
|
|
1279
|
-
|
|
1266
|
+
data: ev.data,
|
|
1267
|
+
filters: hoverOptions.filters,
|
|
1280
1268
|
locale: hoverOptions.locale,
|
|
1281
1269
|
translate: hoverOptions.translate
|
|
1282
|
-
})
|
|
1283
|
-
}
|
|
1270
|
+
})
|
|
1271
|
+
};
|
|
1284
1272
|
return results;
|
|
1285
1273
|
}
|
|
1286
1274
|
else {
|
|
@@ -1446,6 +1434,18 @@ class ChoroplethLayer extends Layer_1.default {
|
|
|
1446
1434
|
else {
|
|
1447
1435
|
delete draft.filter;
|
|
1448
1436
|
}
|
|
1437
|
+
// Clean hover over expressions only for indirect mode with a valid table
|
|
1438
|
+
if (design.table && design.regionMode === "indirect" && design.hoverOver && design.hoverOver.items) {
|
|
1439
|
+
for (let i = 0; i < design.hoverOver.items.length; i++) {
|
|
1440
|
+
const item = design.hoverOver.items[i];
|
|
1441
|
+
if (item.value) {
|
|
1442
|
+
draft.hoverOver.items[i].value = exprCleaner.cleanExpr(item.value || null, {
|
|
1443
|
+
table: design.table,
|
|
1444
|
+
aggrStatuses: ["individual", "literal", "aggregate"]
|
|
1445
|
+
});
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
1449
|
if (design.detailLevel == null) {
|
|
1450
1450
|
draft.detailLevel = 0;
|
|
1451
1451
|
}
|
|
@@ -1535,5 +1535,26 @@ class ChoroplethLayer extends Layer_1.default {
|
|
|
1535
1535
|
// Remove duplicates
|
|
1536
1536
|
return lodash_1.default.uniq(strings);
|
|
1537
1537
|
}
|
|
1538
|
+
/** Gets hover over data for hover over items. This should be implemented by layers that have hover over items.
|
|
1539
|
+
* It will be called on the server side if using a server map data source, or on the client side if using a direct
|
|
1540
|
+
* map data source.
|
|
1541
|
+
*/
|
|
1542
|
+
getHoverOverData(options) {
|
|
1543
|
+
// Use popup filter joins utilities to create filters
|
|
1544
|
+
const popupFilterJoins = {};
|
|
1545
|
+
if (options.design.adminRegionExpr) {
|
|
1546
|
+
popupFilterJoins[options.design.table] = options.design.adminRegionExpr;
|
|
1547
|
+
}
|
|
1548
|
+
const popupFilters = PopupFilterJoinsUtils.createPopupFilters(popupFilterJoins, options.schema, options.design.table, options.data.id, true);
|
|
1549
|
+
return (0, MapUtils_1.getSimpleHoverOverData)({
|
|
1550
|
+
// Filter using popup filters instead of id since will return multiple rows
|
|
1551
|
+
id: null,
|
|
1552
|
+
table: options.design.table,
|
|
1553
|
+
filters: popupFilters,
|
|
1554
|
+
schema: options.schema,
|
|
1555
|
+
dataSource: options.dataSource,
|
|
1556
|
+
hoverOverItems: options.design.hoverOver.items,
|
|
1557
|
+
});
|
|
1558
|
+
}
|
|
1538
1559
|
}
|
|
1539
1560
|
exports.default = ChoroplethLayer;
|
|
@@ -48,11 +48,15 @@ export default interface ChoroplethLayerDesign {
|
|
|
48
48
|
popup: {
|
|
49
49
|
items: LayoutBlock;
|
|
50
50
|
};
|
|
51
|
-
hoverOver: {
|
|
52
|
-
items: HoverOverItem[];
|
|
53
|
-
};
|
|
54
51
|
/** customizable filtering for popup. See PopupFilterJoins.md. Only when region mode is "indirect" */
|
|
55
52
|
popupFilterJoins: PopupFilterJoins;
|
|
53
|
+
/** Hover over items to display when hovering over a region. Only when region mode is "indirect".
|
|
54
|
+
* This is an aggregate hover over, but can contain individual items. If so, only the first row
|
|
55
|
+
* of the resulting query will be displayed.
|
|
56
|
+
*/
|
|
57
|
+
hoverOver?: {
|
|
58
|
+
items: HoverOverItem[];
|
|
59
|
+
};
|
|
56
60
|
/** minimum zoom level */
|
|
57
61
|
minZoom?: number;
|
|
58
62
|
/** maximum zoom level */
|
|
@@ -2,9 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { Schema, DataSource, Expr } from "@mwater/expressions";
|
|
3
3
|
import ChoroplethLayerDesign from "./ChoroplethLayerDesign";
|
|
4
4
|
import { JsonQLFilter } from "../index";
|
|
5
|
-
import EditPopupComponent from "./EditPopupComponent";
|
|
6
5
|
import { Axis } from "../axes/Axis";
|
|
7
|
-
import ScopeAndDetailLevelComponent from "./ScopeAndDetailLevelComponent";
|
|
8
6
|
export default class ChoroplethLayerDesigner extends React.Component<{
|
|
9
7
|
schema: Schema;
|
|
10
8
|
dataSource: DataSource;
|
|
@@ -30,24 +28,14 @@ export default class ChoroplethLayerDesigner extends React.Component<{
|
|
|
30
28
|
renderTable(): React.JSX.Element | null;
|
|
31
29
|
renderRegionsTable(): React.JSX.Element;
|
|
32
30
|
renderAdminRegionExpr(): React.JSX.Element | null;
|
|
33
|
-
renderScopeAndDetailLevel(): React.
|
|
34
|
-
renderDisplayNames(): React.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}, HTMLElement>;
|
|
44
|
-
renderBorderColor(): React.DetailedReactHTMLElement<{
|
|
45
|
-
className: string;
|
|
46
|
-
}, HTMLElement>;
|
|
47
|
-
renderFilter(): React.DetailedReactHTMLElement<{
|
|
48
|
-
className: string;
|
|
49
|
-
}, HTMLElement> | null;
|
|
50
|
-
renderPopup(): React.CElement<any, EditPopupComponent> | null;
|
|
51
|
-
renderHoverOver(): React.FunctionComponentElement<import("./EditHoverOver").EditHoverOverProps> | null;
|
|
52
|
-
render(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
31
|
+
renderScopeAndDetailLevel(): React.JSX.Element;
|
|
32
|
+
renderDisplayNames(): React.JSX.Element;
|
|
33
|
+
renderColor(): React.JSX.Element | null;
|
|
34
|
+
renderColorAxis(): React.JSX.Element | null | undefined;
|
|
35
|
+
renderFillOpacity(): React.JSX.Element;
|
|
36
|
+
renderBorderColor(): React.JSX.Element;
|
|
37
|
+
renderFilter(): React.JSX.Element | null;
|
|
38
|
+
renderPopup(): React.JSX.Element | null;
|
|
39
|
+
renderHoverOver(): React.JSX.Element | null;
|
|
40
|
+
render(): React.JSX.Element;
|
|
53
41
|
}
|