@mwater/visualization 5.0.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/.prettierrc +11 -0
- package/.storybook/config.js +7 -0
- package/.storybook/head.html +4 -0
- package/.storybook/webpack.config.js +15 -0
- package/.vscode/launch.json +40 -0
- package/LICENSE +21 -0
- package/README.md +19 -0
- package/build-demo.ts +54 -0
- package/lib/CheckboxComponent.d.ts +15 -0
- package/lib/CheckboxComponent.js +25 -0
- package/lib/ColorComponent.d.ts +24 -0
- package/lib/ColorComponent.js +77 -0
- package/lib/ColorSchemeFactory.d.ts +8 -0
- package/lib/ColorSchemeFactory.js +164 -0
- package/lib/CsvBuilder.d.ts +5 -0
- package/lib/CsvBuilder.js +63 -0
- package/lib/DateRangeComponent.d.ts +81 -0
- package/lib/DateRangeComponent.js +190 -0
- package/lib/FiltersDesignerComponent.d.ts +25 -0
- package/lib/FiltersDesignerComponent.js +38 -0
- package/lib/ImplicitFilterBuilder.d.ts +8 -0
- package/lib/ImplicitFilterBuilder.js +114 -0
- package/lib/JsonQLFilter.d.ts +7 -0
- package/lib/JsonQLFilter.js +2 -0
- package/lib/LocaleContextInjector.d.ts +14 -0
- package/lib/LocaleContextInjector.js +20 -0
- package/lib/MWaterAddRelatedFormComponent.d.ts +25 -0
- package/lib/MWaterAddRelatedFormComponent.js +155 -0
- package/lib/MWaterAddRelatedIndicatorComponent.d.ts +31 -0
- package/lib/MWaterAddRelatedIndicatorComponent.js +129 -0
- package/lib/MWaterAssetSystemsListComponent.d.ts +17 -0
- package/lib/MWaterAssetSystemsListComponent.js +78 -0
- package/lib/MWaterCompleteTableSelectComponent.d.ts +224 -0
- package/lib/MWaterCompleteTableSelectComponent.js +680 -0
- package/lib/MWaterContextComponent.d.ts +31 -0
- package/lib/MWaterContextComponent.js +111 -0
- package/lib/MWaterCustomTablesetListComponent.d.ts +17 -0
- package/lib/MWaterCustomTablesetListComponent.js +87 -0
- package/lib/MWaterGlobalFiltersComponent.d.ts +16 -0
- package/lib/MWaterGlobalFiltersComponent.js +103 -0
- package/lib/MWaterLoaderComponent.d.ts +42 -0
- package/lib/MWaterLoaderComponent.js +77 -0
- package/lib/MWaterMetricsTableListComponent.d.ts +17 -0
- package/lib/MWaterMetricsTableListComponent.js +79 -0
- package/lib/MWaterResponsesFilterComponent.d.ts +42 -0
- package/lib/MWaterResponsesFilterComponent.js +145 -0
- package/lib/MWaterTableSelectComponent.d.ts +36 -0
- package/lib/MWaterTableSelectComponent.js +206 -0
- package/lib/MenuItemComponent.d.ts +0 -0
- package/lib/MenuItemComponent.js +3 -0
- package/lib/PopoverComponent.d.ts +15 -0
- package/lib/PopoverComponent.js +49 -0
- package/lib/RadioButtonComponent.d.ts +16 -0
- package/lib/RadioButtonComponent.js +25 -0
- package/lib/TableSelectComponent.d.ts +21 -0
- package/lib/TableSelectComponent.js +68 -0
- package/lib/UIComponents.d.ts +85 -0
- package/lib/UIComponents.js +195 -0
- package/lib/UndoStack.d.ts +11 -0
- package/lib/UndoStack.js +51 -0
- package/lib/VerticalLayoutComponent.d.ts +21 -0
- package/lib/VerticalLayoutComponent.js +76 -0
- package/lib/WidgetScope.d.ts +13 -0
- package/lib/WidgetScope.js +2 -0
- package/lib/axes/Axis.d.ts +81 -0
- package/lib/axes/Axis.js +2 -0
- package/lib/axes/AxisBuilder.d.ts +66 -0
- package/lib/axes/AxisBuilder.js +1202 -0
- package/lib/axes/AxisColorEditorComponent.d.ts +39 -0
- package/lib/axes/AxisColorEditorComponent.js +133 -0
- package/lib/axes/AxisComponent.d.ts +65 -0
- package/lib/axes/AxisComponent.js +359 -0
- package/lib/axes/BinsComponent.d.ts +21 -0
- package/lib/axes/BinsComponent.js +96 -0
- package/lib/axes/CategoryMapComponent.d.ts +41 -0
- package/lib/axes/CategoryMapComponent.js +175 -0
- package/lib/axes/ColorPaletteCollectionComponent.d.ts +17 -0
- package/lib/axes/ColorPaletteCollectionComponent.js +130 -0
- package/lib/axes/RangesComponent.d.ts +35 -0
- package/lib/axes/RangesComponent.js +119 -0
- package/lib/componenttest.d.ts +1 -0
- package/lib/componenttest.js +47 -0
- package/lib/compressJson.d.ts +4 -0
- package/lib/compressJson.js +19 -0
- package/lib/dashboards/DashboardComponent.d.ts +115 -0
- package/lib/dashboards/DashboardComponent.js +297 -0
- package/lib/dashboards/DashboardDataSource.d.ts +9 -0
- package/lib/dashboards/DashboardDataSource.js +14 -0
- package/lib/dashboards/DashboardDesign.d.ts +45 -0
- package/lib/dashboards/DashboardDesign.js +2 -0
- package/lib/dashboards/DashboardUpgrader.d.ts +4 -0
- package/lib/dashboards/DashboardUpgrader.js +95 -0
- package/lib/dashboards/DashboardUtils.d.ts +7 -0
- package/lib/dashboards/DashboardUtils.js +69 -0
- package/lib/dashboards/DashboardViewComponent.d.ts +71 -0
- package/lib/dashboards/DashboardViewComponent.js +235 -0
- package/lib/dashboards/DirectDashboardDataSource.d.ts +31 -0
- package/lib/dashboards/DirectDashboardDataSource.js +62 -0
- package/lib/dashboards/LayoutOptionsComponent.d.ts +11 -0
- package/lib/dashboards/LayoutOptionsComponent.js +119 -0
- package/lib/dashboards/README.md +13 -0
- package/lib/dashboards/ServerDashboardDataSource.d.ts +96 -0
- package/lib/dashboards/ServerDashboardDataSource.js +383 -0
- package/lib/dashboards/SettingsModalComponent.d.ts +33 -0
- package/lib/dashboards/SettingsModalComponent.js +122 -0
- package/lib/dashboards/WidgetComponent.d.ts +53 -0
- package/lib/dashboards/WidgetComponent.js +66 -0
- package/lib/dashboards/layoutOptions.d.ts +19 -0
- package/lib/dashboards/layoutOptions.js +19 -0
- package/lib/datagrids/DatagridComponent.d.ts +122 -0
- package/lib/datagrids/DatagridComponent.js +285 -0
- package/lib/datagrids/DatagridDataSource.d.ts +9 -0
- package/lib/datagrids/DatagridDataSource.js +13 -0
- package/lib/datagrids/DatagridDesign.d.ts +75 -0
- package/lib/datagrids/DatagridDesign.js +2 -0
- package/lib/datagrids/DatagridDesignerComponent.d.ts +114 -0
- package/lib/datagrids/DatagridDesignerComponent.js +389 -0
- package/lib/datagrids/DatagridQueryBuilder.d.ts +68 -0
- package/lib/datagrids/DatagridQueryBuilder.js +540 -0
- package/lib/datagrids/DatagridUtils.d.ts +8 -0
- package/lib/datagrids/DatagridUtils.js +91 -0
- package/lib/datagrids/DatagridViewComponent.d.ts +86 -0
- package/lib/datagrids/DatagridViewComponent.js +321 -0
- package/lib/datagrids/DirectDatagridDataSource.d.ts +20 -0
- package/lib/datagrids/DirectDatagridDataSource.js +62 -0
- package/lib/datagrids/EditExprCellComponent.d.ts +77 -0
- package/lib/datagrids/EditExprCellComponent.js +212 -0
- package/lib/datagrids/ExprCellComponent.d.ts +34 -0
- package/lib/datagrids/ExprCellComponent.js +81 -0
- package/lib/datagrids/FindReplaceModalComponent.d.ts +52 -0
- package/lib/datagrids/FindReplaceModalComponent.js +248 -0
- package/lib/datagrids/LabeledExprGenerator.d.ts +40 -0
- package/lib/datagrids/LabeledExprGenerator.js +252 -0
- package/lib/datagrids/OrderBysDesignerComponent.d.ts +22 -0
- package/lib/datagrids/OrderBysDesignerComponent.js +67 -0
- package/lib/datagrids/README.md +3 -0
- package/lib/datagrids/ServerDatagridDataSource.d.ts +40 -0
- package/lib/datagrids/ServerDatagridDataSource.js +79 -0
- package/lib/demo.d.ts +1 -0
- package/lib/demo.js +4006 -0
- package/lib/demoBlocks.d.ts +1 -0
- package/lib/demoBlocks.js +112 -0
- package/lib/index.css +550 -0
- package/lib/index.d.ts +69 -0
- package/lib/index.js +156 -0
- package/lib/injectTableAlias.d.ts +2 -0
- package/lib/injectTableAlias.js +30 -0
- package/lib/languages.d.ts +9 -0
- package/lib/languages.js +926 -0
- package/lib/layout-styles.css +263 -0
- package/lib/layouts/DecoratedBlockComponent.d.ts +44 -0
- package/lib/layouts/DecoratedBlockComponent.js +96 -0
- package/lib/layouts/DragSourceComponent.d.ts +2 -0
- package/lib/layouts/DragSourceComponent.js +26 -0
- package/lib/layouts/LayoutManager.d.ts +50 -0
- package/lib/layouts/LayoutManager.js +41 -0
- package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +75 -0
- package/lib/layouts/blocks/BlocksDisplayComponent.js +336 -0
- package/lib/layouts/blocks/BlocksLayoutManager.d.ts +36 -0
- package/lib/layouts/blocks/BlocksLayoutManager.js +74 -0
- package/lib/layouts/blocks/ClipboardPaletteItemComponent.d.ts +9 -0
- package/lib/layouts/blocks/ClipboardPaletteItemComponent.js +59 -0
- package/lib/layouts/blocks/DraggableBlockComponent.d.ts +2 -0
- package/lib/layouts/blocks/DraggableBlockComponent.js +163 -0
- package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +31 -0
- package/lib/layouts/blocks/HorizontalBlockComponent.js +191 -0
- package/lib/layouts/blocks/PaletteItemComponent.d.ts +14 -0
- package/lib/layouts/blocks/PaletteItemComponent.js +15 -0
- package/lib/layouts/blocks/README.md +11 -0
- package/lib/layouts/blocks/blockUtils.d.ts +22 -0
- package/lib/layouts/blocks/blockUtils.js +155 -0
- package/lib/layouts/decorated-block.css +100 -0
- package/lib/layouts/grid/GridLayoutComponent.d.ts +23 -0
- package/lib/layouts/grid/GridLayoutComponent.js +49 -0
- package/lib/layouts/grid/GridLayoutManager.d.ts +29 -0
- package/lib/layouts/grid/GridLayoutManager.js +141 -0
- package/lib/layouts/grid/LegoLayoutEngine.d.ts +33 -0
- package/lib/layouts/grid/LegoLayoutEngine.js +129 -0
- package/lib/layouts/grid/PaletteItemComponent.d.ts +14 -0
- package/lib/layouts/grid/PaletteItemComponent.js +15 -0
- package/lib/layouts/grid/README.md +14 -0
- package/lib/layouts/grid/WidgetContainerComponent.d.ts +9 -0
- package/lib/layouts/grid/WidgetContainerComponent.js +333 -0
- package/lib/mWaterLoader.d.ts +26 -0
- package/lib/mWaterLoader.js +55 -0
- package/lib/mapdemo.d.ts +0 -0
- package/lib/mapdemo.js +115 -0
- package/lib/maps/AddLayerComponent.d.ts +22 -0
- package/lib/maps/AddLayerComponent.js +85 -0
- package/lib/maps/AdminScopeAndDetailLevelComponent.d.ts +19 -0
- package/lib/maps/AdminScopeAndDetailLevelComponent.js +59 -0
- package/lib/maps/BaseLayerDesignerComponent.d.ts +28 -0
- package/lib/maps/BaseLayerDesignerComponent.js +57 -0
- package/lib/maps/BingLayer.d.ts +1 -0
- package/lib/maps/BingLayer.js +151 -0
- package/lib/maps/BufferLayer.d.ts +51 -0
- package/lib/maps/BufferLayer.js +816 -0
- package/lib/maps/BufferLayerDesign.d.ts +37 -0
- package/lib/maps/BufferLayerDesign.js +2 -0
- package/lib/maps/BufferLayerDesignerComponent.d.ts +49 -0
- package/lib/maps/BufferLayerDesignerComponent.js +217 -0
- package/lib/maps/ChoroplethLayer.d.ts +74 -0
- package/lib/maps/ChoroplethLayer.js +1515 -0
- package/lib/maps/ChoroplethLayerDesign.d.ts +56 -0
- package/lib/maps/ChoroplethLayerDesign.js +2 -0
- package/lib/maps/ChoroplethLayerDesigner.d.ts +53 -0
- package/lib/maps/ChoroplethLayerDesigner.js +382 -0
- package/lib/maps/ClusterLayer.d.ts +38 -0
- package/lib/maps/ClusterLayer.js +746 -0
- package/lib/maps/ClusterLayerDesign.d.ts +22 -0
- package/lib/maps/ClusterLayerDesign.js +2 -0
- package/lib/maps/ClusterLayerDesignerComponent.d.ts +37 -0
- package/lib/maps/ClusterLayerDesignerComponent.js +110 -0
- package/lib/maps/DetailLevelSelectComponent.d.ts +122 -0
- package/lib/maps/DetailLevelSelectComponent.js +91 -0
- package/lib/maps/DirectMapDataSource.d.ts +68 -0
- package/lib/maps/DirectMapDataSource.js +265 -0
- package/lib/maps/EditHoverOver.d.ts +18 -0
- package/lib/maps/EditHoverOver.js +88 -0
- package/lib/maps/EditPopupComponent.d.ts +26 -0
- package/lib/maps/EditPopupComponent.js +75 -0
- package/lib/maps/Grid Functions.sql +167 -0
- package/lib/maps/GridLayer.d.ts +48 -0
- package/lib/maps/GridLayer.js +684 -0
- package/lib/maps/GridLayerDesign.d.ts +35 -0
- package/lib/maps/GridLayerDesign.js +2 -0
- package/lib/maps/GridLayerDesigner.d.ts +38 -0
- package/lib/maps/GridLayerDesigner.js +229 -0
- package/lib/maps/HoverContent.d.ts +13 -0
- package/lib/maps/HoverContent.js +92 -0
- package/lib/maps/HtmlUrlLegend.d.ts +16 -0
- package/lib/maps/HtmlUrlLegend.js +38 -0
- package/lib/maps/Layer.d.ts +164 -0
- package/lib/maps/Layer.js +193 -0
- package/lib/maps/LayerFactory.d.ts +5 -0
- package/lib/maps/LayerFactory.js +47 -0
- package/lib/maps/LayerLegendComponent.d.ts +23 -0
- package/lib/maps/LayerLegendComponent.js +68 -0
- package/lib/maps/LayerSwitcherComponent.d.ts +7 -0
- package/lib/maps/LayerSwitcherComponent.js +97 -0
- package/lib/maps/LeafletLoading.css +24 -0
- package/lib/maps/LeafletLoading.d.ts +42 -0
- package/lib/maps/LeafletLoading.js +318 -0
- package/lib/maps/LeafletMapComponent.d.ts +141 -0
- package/lib/maps/LeafletMapComponent.js +438 -0
- package/lib/maps/LegendComponent.d.ts +14 -0
- package/lib/maps/LegendComponent.js +74 -0
- package/lib/maps/LegendGroup.d.ts +24 -0
- package/lib/maps/LegendGroup.js +86 -0
- package/lib/maps/MWaterServerLayer.d.ts +40 -0
- package/lib/maps/MWaterServerLayer.js +101 -0
- package/lib/maps/MapBoundsCalculator.d.ts +16 -0
- package/lib/maps/MapBoundsCalculator.js +85 -0
- package/lib/maps/MapComponent.d.ts +98 -0
- package/lib/maps/MapComponent.js +186 -0
- package/lib/maps/MapControlComponent.d.ts +17 -0
- package/lib/maps/MapControlComponent.js +25 -0
- package/lib/maps/MapDataSource.d.ts +18 -0
- package/lib/maps/MapDataSource.js +2 -0
- package/lib/maps/MapDesign.d.ts +77 -0
- package/lib/maps/MapDesign.js +2 -0
- package/lib/maps/MapDesignerComponent.d.ts +39 -0
- package/lib/maps/MapDesignerComponent.js +215 -0
- package/lib/maps/MapFiltersDesignerComponent.d.ts +21 -0
- package/lib/maps/MapFiltersDesignerComponent.js +70 -0
- package/lib/maps/MapLayerDataSource.d.ts +22 -0
- package/lib/maps/MapLayerDataSource.js +2 -0
- package/lib/maps/MapLayerViewDesignerComponent.d.ts +87 -0
- package/lib/maps/MapLayerViewDesignerComponent.js +151 -0
- package/lib/maps/MapLayersDesignerComponent.d.ts +32 -0
- package/lib/maps/MapLayersDesignerComponent.js +98 -0
- package/lib/maps/MapUtils.d.ts +21 -0
- package/lib/maps/MapUtils.js +119 -0
- package/lib/maps/MapViewComponent.d.ts +38 -0
- package/lib/maps/MapViewComponent.js +20 -0
- package/lib/maps/Maptiler-logo.png +0 -0
- package/lib/maps/MarkerSymbolSelectComponent.d.ts +10 -0
- package/lib/maps/MarkerSymbolSelectComponent.js +28 -0
- package/lib/maps/MarkersLayer.d.ts +66 -0
- package/lib/maps/MarkersLayer.js +838 -0
- package/lib/maps/MarkersLayerDesign.d.ts +44 -0
- package/lib/maps/MarkersLayerDesign.js +2 -0
- package/lib/maps/MarkersLayerDesignerComponent.d.ts +56 -0
- package/lib/maps/MarkersLayerDesignerComponent.js +269 -0
- package/lib/maps/PopupFilterJoinsEditComponent.d.ts +30 -0
- package/lib/maps/PopupFilterJoinsEditComponent.js +75 -0
- package/lib/maps/PopupFilterJoinsUtils.d.ts +15 -0
- package/lib/maps/PopupFilterJoinsUtils.js +91 -0
- package/lib/maps/RasterMapViewComponent.d.ts +108 -0
- package/lib/maps/RasterMapViewComponent.js +283 -0
- package/lib/maps/RegionSelectComponent.d.ts +55 -0
- package/lib/maps/RegionSelectComponent.js +61 -0
- package/lib/maps/ScopeAndDetailLevelComponent.d.ts +21 -0
- package/lib/maps/ScopeAndDetailLevelComponent.js +76 -0
- package/lib/maps/ServerMapDataSource.d.ts +86 -0
- package/lib/maps/ServerMapDataSource.js +273 -0
- package/lib/maps/SwitchableTileUrlLayer.d.ts +53 -0
- package/lib/maps/SwitchableTileUrlLayer.js +69 -0
- package/lib/maps/SwitchableTileUrlLayerDesigner.d.ts +14 -0
- package/lib/maps/SwitchableTileUrlLayerDesigner.js +26 -0
- package/lib/maps/TileUrlLayer.d.ts +40 -0
- package/lib/maps/TileUrlLayer.js +96 -0
- package/lib/maps/UtfGridLayer.d.ts +1 -0
- package/lib/maps/UtfGridLayer.js +216 -0
- package/lib/maps/VectorMapViewComponent.css +21 -0
- package/lib/maps/VectorMapViewComponent.d.ts +44 -0
- package/lib/maps/VectorMapViewComponent.js +565 -0
- package/lib/maps/ZoomLevelsComponent.d.ts +15 -0
- package/lib/maps/ZoomLevelsComponent.js +37 -0
- package/lib/maps/mapSymbols.d.ts +6 -0
- package/lib/maps/mapSymbols.js +167 -0
- package/lib/maps/mapboxUtils.d.ts +6 -0
- package/lib/maps/mapboxUtils.js +60 -0
- package/lib/maps/maps.d.ts +36 -0
- package/lib/maps/maps.js +2 -0
- package/lib/maps/marker-icon-2x.png +0 -0
- package/lib/maps/marker-icon.png +0 -0
- package/lib/maps/marker-shadow.png +0 -0
- 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.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/vectorMaps.d.ts +42 -0
- package/lib/maps/vectorMaps.js +331 -0
- package/lib/memoizedDebounce.d.ts +6 -0
- package/lib/memoizedDebounce.js +21 -0
- package/lib/quickfilter/DateExprComponent.d.ts +81 -0
- package/lib/quickfilter/DateExprComponent.js +197 -0
- package/lib/quickfilter/IdArrayQuickfilterComponent.d.ts +24 -0
- package/lib/quickfilter/IdArrayQuickfilterComponent.js +30 -0
- package/lib/quickfilter/Quickfilter.d.ts +21 -0
- package/lib/quickfilter/Quickfilter.js +2 -0
- package/lib/quickfilter/QuickfilterCompiler.d.ts +16 -0
- package/lib/quickfilter/QuickfilterCompiler.js +167 -0
- package/lib/quickfilter/QuickfilterUtils.d.ts +7 -0
- package/lib/quickfilter/QuickfilterUtils.js +106 -0
- package/lib/quickfilter/QuickfiltersComponent.d.ts +293 -0
- package/lib/quickfilter/QuickfiltersComponent.js +257 -0
- package/lib/quickfilter/QuickfiltersDataSource.d.ts +7 -0
- package/lib/quickfilter/QuickfiltersDataSource.js +2 -0
- package/lib/quickfilter/QuickfiltersDesignComponent.d.ts +46 -0
- package/lib/quickfilter/QuickfiltersDesignComponent.js +176 -0
- package/lib/quickfilter/README.md +8 -0
- package/lib/quickfilter/TextLiteralComponent.d.ts +216 -0
- package/lib/quickfilter/TextLiteralComponent.js +128 -0
- package/lib/richtext/ExprItemsHtmlConverter.d.ts +39 -0
- package/lib/richtext/ExprItemsHtmlConverter.js +118 -0
- package/lib/richtext/FontColorPaletteItem.d.ts +23 -0
- package/lib/richtext/FontColorPaletteItem.js +84 -0
- package/lib/richtext/FontSizePaletteItem.d.ts +29 -0
- package/lib/richtext/FontSizePaletteItem.js +70 -0
- package/lib/richtext/ItemsHtmlConverter.d.ts +31 -0
- package/lib/richtext/ItemsHtmlConverter.js +209 -0
- package/lib/richtext/README.md +3 -0
- package/lib/richtext/RichTextComponent.d.ts +84 -0
- package/lib/richtext/RichTextComponent.js +255 -0
- package/lib/valueFormatter.d.ts +16 -0
- package/lib/valueFormatter.js +93 -0
- package/lib/widgets/DirectWidgetDataSource.d.ts +43 -0
- package/lib/widgets/DirectWidgetDataSource.js +39 -0
- package/lib/widgets/DropdownWidgetComponent.d.ts +31 -0
- package/lib/widgets/DropdownWidgetComponent.js +41 -0
- package/lib/widgets/IFrameWidget.d.ts +16 -0
- package/lib/widgets/IFrameWidget.js +38 -0
- package/lib/widgets/IFrameWidgetComponent.d.ts +33 -0
- package/lib/widgets/IFrameWidgetComponent.js +101 -0
- package/lib/widgets/ImageUploaderComponent.d.ts +29 -0
- package/lib/widgets/ImageUploaderComponent.js +91 -0
- package/lib/widgets/ImageWidget.d.ts +49 -0
- package/lib/widgets/ImageWidget.js +112 -0
- package/lib/widgets/ImageWidgetComponent.d.ts +125 -0
- package/lib/widgets/ImageWidgetComponent.js +368 -0
- package/lib/widgets/ImagelistCarouselComponent.d.ts +29 -0
- package/lib/widgets/ImagelistCarouselComponent.js +64 -0
- package/lib/widgets/MapWidget.d.ts +55 -0
- package/lib/widgets/MapWidget.js +167 -0
- package/lib/widgets/MarkdownWidget.d.ts +53 -0
- package/lib/widgets/MarkdownWidget.js +134 -0
- package/lib/widgets/TOCWidget.d.ts +39 -0
- package/lib/widgets/TOCWidget.js +254 -0
- package/lib/widgets/Widget.d.ts +61 -0
- package/lib/widgets/Widget.js +33 -0
- package/lib/widgets/WidgetDataSource.d.ts +20 -0
- package/lib/widgets/WidgetDataSource.js +2 -0
- package/lib/widgets/WidgetFactory.d.ts +4 -0
- package/lib/widgets/WidgetFactory.js +40 -0
- package/lib/widgets/WidgetScoper.d.ts +9 -0
- package/lib/widgets/WidgetScoper.js +49 -0
- package/lib/widgets/WidgetScopesViewComponent.d.ts +26 -0
- package/lib/widgets/WidgetScopesViewComponent.js +36 -0
- package/lib/widgets/charts/Chart.d.ts +57 -0
- package/lib/widgets/charts/Chart.js +83 -0
- package/lib/widgets/charts/ChartViewComponent.d.ts +72 -0
- package/lib/widgets/charts/ChartViewComponent.js +120 -0
- package/lib/widgets/charts/ChartWidget.d.ts +87 -0
- package/lib/widgets/charts/ChartWidget.js +248 -0
- package/lib/widgets/charts/calendar/CalendarChart.d.ts +39 -0
- package/lib/widgets/charts/calendar/CalendarChart.js +175 -0
- package/lib/widgets/charts/calendar/CalendarChartDesignerComponent.d.ts +35 -0
- package/lib/widgets/charts/calendar/CalendarChartDesignerComponent.js +142 -0
- package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +56 -0
- package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +263 -0
- package/lib/widgets/charts/imagemosaic/ImageMosaicChart.d.ts +21 -0
- package/lib/widgets/charts/imagemosaic/ImageMosaicChart.js +183 -0
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.d.ts +28 -0
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.js +105 -0
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.d.ts +31 -0
- package/lib/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.js +87 -0
- package/lib/widgets/charts/imagemosaic/ImagePopupComponent.d.ts +20 -0
- package/lib/widgets/charts/imagemosaic/ImagePopupComponent.js +38 -0
- package/lib/widgets/charts/layered/LayeredChart.d.ts +28 -0
- package/lib/widgets/charts/layered/LayeredChart.js +324 -0
- package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +113 -0
- package/lib/widgets/charts/layered/LayeredChartCompiler.js +1092 -0
- package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +76 -0
- package/lib/widgets/charts/layered/LayeredChartDesign.js +2 -0
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +80 -0
- package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +317 -0
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +72 -0
- package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +329 -0
- package/lib/widgets/charts/layered/LayeredChartSvgFileSaver.d.ts +5 -0
- package/lib/widgets/charts/layered/LayeredChartSvgFileSaver.js +138 -0
- package/lib/widgets/charts/layered/LayeredChartUtils.d.ts +1 -0
- package/lib/widgets/charts/layered/LayeredChartUtils.js +25 -0
- package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +44 -0
- package/lib/widgets/charts/layered/LayeredChartViewComponent.js +406 -0
- package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +115 -0
- package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +235 -0
- package/lib/widgets/charts/pivot/PivotChart.d.ts +36 -0
- package/lib/widgets/charts/pivot/PivotChart.js +343 -0
- package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +88 -0
- package/lib/widgets/charts/pivot/PivotChartDesign.js +2 -0
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +37 -0
- package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +159 -0
- package/lib/widgets/charts/pivot/PivotChartLayout.d.ts +73 -0
- package/lib/widgets/charts/pivot/PivotChartLayout.js +2 -0
- package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +37 -0
- package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +676 -0
- package/lib/widgets/charts/pivot/PivotChartLayoutComponent.d.ts +74 -0
- package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +333 -0
- package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +31 -0
- package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +263 -0
- package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +12 -0
- package/lib/widgets/charts/pivot/PivotChartUtils.js +195 -0
- package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +84 -0
- package/lib/widgets/charts/pivot/PivotChartViewComponent.js +205 -0
- package/lib/widgets/charts/pivot/README.md +30 -0
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.d.ts +96 -0
- package/lib/widgets/charts/pivot/SegmentDesignerComponent.js +216 -0
- package/lib/widgets/charts/table/OrderingsComponent.d.ts +15 -0
- package/lib/widgets/charts/table/OrderingsComponent.js +66 -0
- package/lib/widgets/charts/table/TableChart.d.ts +57 -0
- package/lib/widgets/charts/table/TableChart.js +310 -0
- package/lib/widgets/charts/table/TableChartDesignerComponent.d.ts +48 -0
- package/lib/widgets/charts/table/TableChartDesignerComponent.js +291 -0
- package/lib/widgets/charts/table/TableChartViewComponent.d.ts +28 -0
- package/lib/widgets/charts/table/TableChartViewComponent.js +206 -0
- package/lib/widgets/text/ExprInsertModalComponent.d.ts +35 -0
- package/lib/widgets/text/ExprInsertModalComponent.js +51 -0
- package/lib/widgets/text/ExprItemEditorComponent.d.ts +34 -0
- package/lib/widgets/text/ExprItemEditorComponent.js +92 -0
- package/lib/widgets/text/ExprUpdateModalComponent.d.ts +33 -0
- package/lib/widgets/text/ExprUpdateModalComponent.js +47 -0
- package/lib/widgets/text/README.md +2 -0
- package/lib/widgets/text/TextComponent.d.ts +48 -0
- package/lib/widgets/text/TextComponent.js +109 -0
- package/lib/widgets/text/TextWidget.d.ts +29 -0
- package/lib/widgets/text/TextWidget.js +243 -0
- package/lib/widgets/text/TextWidgetComponent.d.ts +33 -0
- package/lib/widgets/text/TextWidgetComponent.js +88 -0
- package/lib/widgets/text/TextWidgetDesign.d.ts +6 -0
- package/lib/widgets/text/TextWidgetDesign.js +2 -0
- package/mocha.html +10 -0
- package/package.json +113 -0
- package/server.js +10 -0
- package/src/CheckboxComponent.ts +33 -0
- package/src/ColorComponent.ts +117 -0
- package/src/ColorSchemeFactory.ts +144 -0
- package/src/CsvBuilder.ts +65 -0
- package/src/DateRangeComponent.ts +279 -0
- package/src/FiltersDesignerComponent.ts +55 -0
- package/src/ImplicitFilterBuilder.ts +135 -0
- package/src/JsonQLFilter.ts +8 -0
- package/src/LocaleContextInjector.tsx +17 -0
- package/src/MWaterAddRelatedFormComponent.ts +213 -0
- package/src/MWaterAddRelatedIndicatorComponent.ts +205 -0
- package/src/MWaterAssetSystemsListComponent.tsx +114 -0
- package/src/MWaterCompleteTableSelectComponent.tsx +984 -0
- package/src/MWaterContextComponent.ts +144 -0
- package/src/MWaterCustomTablesetListComponent.tsx +141 -0
- package/src/MWaterGlobalFiltersComponent.ts +117 -0
- package/src/MWaterLoaderComponent.ts +118 -0
- package/src/MWaterMetricsTableListComponent.tsx +120 -0
- package/src/MWaterResponsesFilterComponent.ts +194 -0
- package/src/MWaterTableSelectComponent.ts +316 -0
- package/src/MenuItemComponent.ts +2 -0
- package/src/PopoverComponent.ts +59 -0
- package/src/RadioButtonComponent.ts +34 -0
- package/src/TableSelectComponent.ts +60 -0
- package/src/UIComponents.ts +289 -0
- package/src/UndoStack.ts +59 -0
- package/src/VerticalLayoutComponent.ts +108 -0
- package/src/WidgetScope.ts +17 -0
- package/src/axes/Axis.ts +89 -0
- package/src/axes/AxisBuilder.ts +1325 -0
- package/src/axes/AxisColorEditorComponent.ts +210 -0
- package/src/axes/AxisComponent.ts +449 -0
- package/src/axes/BinsComponent.tsx +169 -0
- package/src/axes/CategoryMapComponent.ts +278 -0
- package/src/axes/ColorPaletteCollectionComponent.ts +163 -0
- package/src/axes/RangesComponent.ts +234 -0
- package/src/color-mixer.d.ts +1 -0
- package/src/componenttest.ts +64 -0
- package/src/compressJson.ts +13 -0
- package/src/dashboards/DashboardComponent.ts +468 -0
- package/src/dashboards/DashboardDataSource.ts +15 -0
- package/src/dashboards/DashboardDesign.ts +57 -0
- package/src/dashboards/DashboardUpgrader.ts +103 -0
- package/src/dashboards/DashboardUtils.ts +82 -0
- package/src/dashboards/DashboardViewComponent.ts +304 -0
- package/src/dashboards/DirectDashboardDataSource.ts +69 -0
- package/src/dashboards/LayoutOptionsComponent.tsx +227 -0
- package/src/dashboards/README.md +13 -0
- package/src/dashboards/ServerDashboardDataSource.ts +520 -0
- package/src/dashboards/SettingsModalComponent.ts +169 -0
- package/src/dashboards/WidgetComponent.tsx +131 -0
- package/src/dashboards/layoutOptions.ts +40 -0
- package/src/datagrids/DatagridComponent.ts +430 -0
- package/src/datagrids/DatagridDataSource.ts +21 -0
- package/src/datagrids/DatagridDesign.ts +94 -0
- package/src/datagrids/DatagridDesignerComponent.tsx +585 -0
- package/src/datagrids/DatagridQueryBuilder.ts +722 -0
- package/src/datagrids/DatagridUtils.ts +74 -0
- package/src/datagrids/DatagridViewComponent.ts +460 -0
- package/src/datagrids/DirectDatagridDataSource.ts +57 -0
- package/src/datagrids/EditExprCellComponent.tsx +305 -0
- package/src/datagrids/ExprCellComponent.ts +104 -0
- package/src/datagrids/FindReplaceModalComponent.ts +354 -0
- package/src/datagrids/LabeledExprGenerator.ts +302 -0
- package/src/datagrids/OrderBysDesignerComponent.tsx +128 -0
- package/src/datagrids/README.md +3 -0
- package/src/datagrids/ServerDatagridDataSource.ts +119 -0
- package/src/datagrids/react-linkify.d.ts +1 -0
- package/src/demo.ts +4148 -0
- package/src/demoBlocks.ts +130 -0
- package/src/globals.d.ts +2 -0
- package/src/index.css +550 -0
- package/src/index.ts +112 -0
- package/src/injectTableAlias.ts +31 -0
- package/src/languages.ts +931 -0
- package/src/layout-styles.css +263 -0
- package/src/layouts/DecoratedBlockComponent.ts +167 -0
- package/src/layouts/DragSourceComponent.ts +35 -0
- package/src/layouts/LayoutManager.ts +86 -0
- package/src/layouts/blocks/BlocksDisplayComponent.ts +461 -0
- package/src/layouts/blocks/BlocksLayoutManager.ts +78 -0
- package/src/layouts/blocks/ClipboardPaletteItemComponent.ts +89 -0
- package/src/layouts/blocks/DraggableBlockComponent.ts +219 -0
- package/src/layouts/blocks/HorizontalBlockComponent.ts +288 -0
- package/src/layouts/blocks/PaletteItemComponent.ts +27 -0
- package/src/layouts/blocks/README.md +11 -0
- package/src/layouts/blocks/blockUtils.ts +207 -0
- package/src/layouts/decorated-block.css +100 -0
- package/src/layouts/grid/GridLayoutComponent.ts +67 -0
- package/src/layouts/grid/GridLayoutManager.ts +185 -0
- package/src/layouts/grid/LegoLayoutEngine.ts +142 -0
- package/src/layouts/grid/PaletteItemComponent.ts +28 -0
- package/src/layouts/grid/README.md +14 -0
- package/src/layouts/grid/WidgetContainerComponent.ts +420 -0
- package/src/mWaterLoader.ts +82 -0
- package/src/mapdemo.ts +127 -0
- package/src/maps/AddLayerComponent.ts +125 -0
- package/src/maps/AdminScopeAndDetailLevelComponent.ts +90 -0
- package/src/maps/BaseLayerDesignerComponent.ts +104 -0
- package/src/maps/BingLayer.ts +156 -0
- package/src/maps/BufferLayer.ts +927 -0
- package/src/maps/BufferLayerDesign.ts +48 -0
- package/src/maps/BufferLayerDesignerComponent.ts +311 -0
- package/src/maps/ChoroplethLayer.ts +1712 -0
- package/src/maps/ChoroplethLayerDesign.ts +73 -0
- package/src/maps/ChoroplethLayerDesigner.tsx +558 -0
- package/src/maps/ClusterLayer.ts +836 -0
- package/src/maps/ClusterLayerDesign.ts +29 -0
- package/src/maps/ClusterLayerDesignerComponent.ts +190 -0
- package/src/maps/DetailLevelSelectComponent.ts +119 -0
- package/src/maps/DirectMapDataSource.ts +386 -0
- package/src/maps/EditHoverOver.tsx +151 -0
- package/src/maps/EditPopupComponent.ts +121 -0
- package/src/maps/Grid Functions.sql +167 -0
- package/src/maps/GridLayer.ts +776 -0
- package/src/maps/GridLayerDesign.ts +53 -0
- package/src/maps/GridLayerDesigner.tsx +332 -0
- package/src/maps/HoverContent.tsx +96 -0
- package/src/maps/HtmlUrlLegend.tsx +44 -0
- package/src/maps/Layer.ts +338 -0
- package/src/maps/LayerFactory.ts +51 -0
- package/src/maps/LayerLegendComponent.ts +88 -0
- package/src/maps/LayerSwitcherComponent.tsx +91 -0
- package/src/maps/LeafletLoading.css +24 -0
- package/src/maps/LeafletLoading.ts +355 -0
- package/src/maps/LeafletMapComponent.tsx +587 -0
- package/src/maps/LegendComponent.tsx +101 -0
- package/src/maps/LegendGroup.ts +120 -0
- package/src/maps/MWaterServerLayer.ts +116 -0
- package/src/maps/MapBoundsCalculator.ts +88 -0
- package/src/maps/MapComponent.ts +312 -0
- package/src/maps/MapControlComponent.ts +46 -0
- package/src/maps/MapDataSource.ts +20 -0
- package/src/maps/MapDesign.ts +103 -0
- package/src/maps/MapDesignerComponent.ts +356 -0
- package/src/maps/MapFiltersDesignerComponent.ts +95 -0
- package/src/maps/MapLayerDataSource.ts +27 -0
- package/src/maps/MapLayerViewDesignerComponent.ts +243 -0
- package/src/maps/MapLayersDesignerComponent.ts +144 -0
- package/src/maps/MapUtils.ts +148 -0
- package/src/maps/MapViewComponent.tsx +62 -0
- package/src/maps/Maptiler-logo.png +0 -0
- package/src/maps/MarkerSymbolSelectComponent.ts +41 -0
- package/src/maps/MarkersLayer.ts +941 -0
- package/src/maps/MarkersLayerDesign.ts +56 -0
- package/src/maps/MarkersLayerDesignerComponent.ts +374 -0
- package/src/maps/PopupFilterJoinsEditComponent.ts +114 -0
- package/src/maps/PopupFilterJoinsUtils.ts +99 -0
- package/src/maps/RasterMapViewComponent.ts +382 -0
- package/src/maps/RegionSelectComponent.ts +80 -0
- package/src/maps/ScopeAndDetailLevelComponent.ts +82 -0
- package/src/maps/ServerMapDataSource.ts +399 -0
- package/src/maps/SwitchableTileUrlLayer.tsx +130 -0
- package/src/maps/SwitchableTileUrlLayerDesigner.tsx +60 -0
- package/src/maps/TileUrlLayer.tsx +142 -0
- package/src/maps/UtfGridLayer.ts +286 -0
- package/src/maps/VectorMapViewComponent.css +21 -0
- package/src/maps/VectorMapViewComponent.tsx +743 -0
- package/src/maps/ZoomLevelsComponent.ts +72 -0
- package/src/maps/mapSymbols.ts +162 -0
- package/src/maps/mapboxUtils.ts +61 -0
- package/src/maps/maps.ts +38 -0
- package/src/maps/marker-icon-2x.png +0 -0
- package/src/maps/marker-icon.png +0 -0
- package/src/maps/marker-shadow.png +0 -0
- package/src/maps/png.d.ts +1 -0
- 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.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/vectorMaps.tsx +410 -0
- package/src/memoizedDebounce.tsx +32 -0
- package/src/quickfilter/DateExprComponent.ts +284 -0
- package/src/quickfilter/IdArrayQuickfilterComponent.ts +58 -0
- package/src/quickfilter/Quickfilter.ts +29 -0
- package/src/quickfilter/QuickfilterCompiler.ts +167 -0
- package/src/quickfilter/QuickfilterUtils.ts +123 -0
- package/src/quickfilter/QuickfiltersComponent.ts +416 -0
- package/src/quickfilter/QuickfiltersDataSource.ts +15 -0
- package/src/quickfilter/QuickfiltersDesignComponent.tsx +257 -0
- package/src/quickfilter/README.md +8 -0
- package/src/quickfilter/TextLiteralComponent.ts +161 -0
- package/src/quickfilter/react-onclickout.d.ts +1 -0
- package/src/richtext/ExprItemsHtmlConverter.ts +144 -0
- package/src/richtext/FontColorPaletteItem.ts +172 -0
- package/src/richtext/FontSizePaletteItem.ts +110 -0
- package/src/richtext/ItemsHtmlConverter.ts +246 -0
- package/src/richtext/README.md +3 -0
- package/src/richtext/RichTextComponent.tsx +390 -0
- package/src/richtext/react-float-affixed.d.ts +1 -0
- package/src/update-object.d.ts +1 -0
- package/src/valueFormatter.ts +110 -0
- package/src/widgets/DirectWidgetDataSource.ts +67 -0
- package/src/widgets/DropdownWidgetComponent.ts +78 -0
- package/src/widgets/IFrameWidget.ts +36 -0
- package/src/widgets/IFrameWidgetComponent.ts +116 -0
- package/src/widgets/ImageUploaderComponent.tsx +143 -0
- package/src/widgets/ImageWidget.ts +147 -0
- package/src/widgets/ImageWidgetComponent.ts +546 -0
- package/src/widgets/ImagelistCarouselComponent.ts +109 -0
- package/src/widgets/MapWidget.ts +219 -0
- package/src/widgets/MarkdownWidget.ts +201 -0
- package/src/widgets/TOCWidget.ts +326 -0
- package/src/widgets/Widget.ts +83 -0
- package/src/widgets/WidgetDataSource.ts +23 -0
- package/src/widgets/WidgetFactory.ts +37 -0
- package/src/widgets/WidgetScoper.ts +51 -0
- package/src/widgets/WidgetScopesViewComponent.ts +54 -0
- package/src/widgets/charts/Chart.ts +140 -0
- package/src/widgets/charts/ChartViewComponent.ts +209 -0
- package/src/widgets/charts/ChartWidget.ts +345 -0
- package/src/widgets/charts/calendar/CalendarChart.ts +227 -0
- package/src/widgets/charts/calendar/CalendarChartDesignerComponent.ts +187 -0
- package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +320 -0
- package/src/widgets/charts/calendar/d3-tip.d.ts +1 -0
- package/src/widgets/charts/imagemosaic/ImageMosaicChart.ts +213 -0
- package/src/widgets/charts/imagemosaic/ImageMosaicChartDesignerComponent.ts +121 -0
- package/src/widgets/charts/imagemosaic/ImageMosaicChartViewComponent.ts +117 -0
- package/src/widgets/charts/imagemosaic/ImagePopupComponent.ts +51 -0
- package/src/widgets/charts/imagemosaic/react-lazy-load-image-component.d.ts +1 -0
- package/src/widgets/charts/layered/LayeredChart.ts +361 -0
- package/src/widgets/charts/layered/LayeredChartCompiler.ts +1299 -0
- package/src/widgets/charts/layered/LayeredChartDesign.ts +106 -0
- package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +523 -0
- package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +448 -0
- package/src/widgets/charts/layered/LayeredChartSvgFileSaver.ts +146 -0
- package/src/widgets/charts/layered/LayeredChartUtils.ts +24 -0
- package/src/widgets/charts/layered/LayeredChartViewComponent.ts +486 -0
- package/src/widgets/charts/layered/save-svg-as-png.d.ts +1 -0
- package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +338 -0
- package/src/widgets/charts/pivot/PivotChart.ts +377 -0
- package/src/widgets/charts/pivot/PivotChartDesign.ts +115 -0
- package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +240 -0
- package/src/widgets/charts/pivot/PivotChartLayout.ts +99 -0
- package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +779 -0
- package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +504 -0
- package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +273 -0
- package/src/widgets/charts/pivot/PivotChartUtils.ts +219 -0
- package/src/widgets/charts/pivot/PivotChartViewComponent.ts +276 -0
- package/src/widgets/charts/pivot/README.md +30 -0
- package/src/widgets/charts/pivot/SegmentDesignerComponent.tsx +353 -0
- package/src/widgets/charts/table/OrderingsComponent.tsx +119 -0
- package/src/widgets/charts/table/TableChart.ts +420 -0
- package/src/widgets/charts/table/TableChartDesignerComponent.ts +441 -0
- package/src/widgets/charts/table/TableChartViewComponent.ts +327 -0
- package/src/widgets/text/ExprInsertModalComponent.ts +77 -0
- package/src/widgets/text/ExprItemEditorComponent.tsx +164 -0
- package/src/widgets/text/ExprUpdateModalComponent.ts +70 -0
- package/src/widgets/text/README.md +2 -0
- package/src/widgets/text/TextComponent.tsx +151 -0
- package/src/widgets/text/TextWidget.ts +265 -0
- package/src/widgets/text/TextWidgetComponent.ts +120 -0
- package/src/widgets/text/TextWidgetDesign.ts +7 -0
- package/stories/UpdateableComponent.js +29 -0
- package/stories/consoles.js +202 -0
- package/stories/dashboards.js +217 -0
- package/stories/datagridDesign.js +114 -0
- package/stories/datagrids.js +69 -0
- package/stories/dates.js +80 -0
- package/stories/exprcomponent.js +43 -0
- package/stories/index.js +18 -0
- package/stories/leaflet.js +59 -0
- package/stories/maps.js +24 -0
- package/stories/pivotChart.js +235 -0
- package/test/AxisBuilderTests.ts +931 -0
- package/test/ChartWidgetTests.ts +85 -0
- package/test/ColorSchemeFactoryTests.ts +29 -0
- package/test/CsvBuilderTests.ts +22 -0
- package/test/DashboardUpgraderTests.ts +170 -0
- package/test/ImplicitFilterBuilderTests.ts +161 -0
- package/test/LayeredChartCompilerTests.ts +1067 -0
- package/test/LayeredChartTests.ts +88 -0
- package/test/LegoLayoutEngineTests.ts +69 -0
- package/test/MWaterGlobalFiltersComponentTests.ts +130 -0
- package/test/MWaterResponsesFilterComponentTests.ts +164 -0
- package/test/QuickfilterCompilerTests.ts +167 -0
- package/test/TestComponent.ts +49 -0
- package/test/UndoStackTests.ts +73 -0
- package/test/WidgetScoperTests.ts +35 -0
- package/test/blockUtilsTests.ts +290 -0
- package/test/canonical-json.d.ts +1 -0
- package/test/dashboards/DashboardUtilsTests.ts +131 -0
- package/test/datagrids/DatagridQueryBuilderTests.ts +445 -0
- package/test/datagrids/DatagridUtilsTests.ts +54 -0
- package/test/datagrids/LabeledExprGeneratorTests.ts +121 -0
- package/test/fixtures.ts +263 -0
- package/test/index.ts +2 -0
- package/test/maps/MapUtilsTests.ts +168 -0
- package/test/maps/PopupFilterJoinsUtilsTests.ts +105 -0
- package/test/richtext/ItemsHtmlConverterTests.ts +41 -0
- package/test/test_index.ts +4 -0
- package/test/widgets/TextWidgetTests.ts +42 -0
- package/test/widgets/charts/pivot/PivotChartLayoutBuilderTests.ts +817 -0
- package/test/widgets/charts/pivot/PivotChartQueryBuilderTests.ts +359 -0
- package/test/widgets/charts/pivot/PivotChartTests.ts +64 -0
- package/test/widgets/charts/pivot/PivotChartUtilsTests.ts +184 -0
- package/test/widgets/charts/table/TableChartTests.ts +253 -0
- package/tsconfig.build.json +26 -0
- package/types/utm.d.ts +10 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/// <reference types="jquery" />
|
|
2
|
+
import { DataSource, Expr, Schema } from "@mwater/expressions";
|
|
3
|
+
import { JsonQLFilter } from "../JsonQLFilter";
|
|
4
|
+
import { MapDesign, MapLayerView } from "./MapDesign";
|
|
5
|
+
import { MapDataSource } from "./MapDataSource";
|
|
6
|
+
import { MapLayerDataSource } from "./MapLayerDataSource";
|
|
7
|
+
import { WidgetDataSource } from "../widgets/WidgetDataSource";
|
|
8
|
+
import { QuickfiltersDataSource } from "../quickfilter/QuickfiltersDataSource";
|
|
9
|
+
interface ServerMapDataSourceOptions {
|
|
10
|
+
/** schema to use */
|
|
11
|
+
schema: Schema;
|
|
12
|
+
/** data source to use */
|
|
13
|
+
dataSource: DataSource;
|
|
14
|
+
/** design of entire map */
|
|
15
|
+
design: MapDesign;
|
|
16
|
+
/** share id to use for talking to mWater server */
|
|
17
|
+
share?: string;
|
|
18
|
+
/** API url to use for talking to mWater server */
|
|
19
|
+
apiUrl: string;
|
|
20
|
+
/** client id to use for talking to mWater server */
|
|
21
|
+
client?: string;
|
|
22
|
+
/** map id to use on server */
|
|
23
|
+
mapId: string;
|
|
24
|
+
/** revision to use to allow caching */
|
|
25
|
+
rev: string;
|
|
26
|
+
}
|
|
27
|
+
interface ServerMapLayerDataSourceOptions extends ServerMapDataSourceOptions {
|
|
28
|
+
layerView: MapLayerView;
|
|
29
|
+
}
|
|
30
|
+
/** Get map urls for map stored on server */
|
|
31
|
+
export default class ServerMapDataSource implements MapDataSource {
|
|
32
|
+
options: ServerMapDataSourceOptions;
|
|
33
|
+
constructor(options: ServerMapDataSourceOptions);
|
|
34
|
+
getLayerDataSource(layerId: string): ServerLayerDataSource;
|
|
35
|
+
getBounds(design: MapDesign, filters: JsonQLFilter[], callback: (error: any, bounds?: {
|
|
36
|
+
w: number;
|
|
37
|
+
n: number;
|
|
38
|
+
e: number;
|
|
39
|
+
s: number;
|
|
40
|
+
} | null) => void): void;
|
|
41
|
+
getQuickfiltersDataSource(): ServerQuickfilterDataSource;
|
|
42
|
+
}
|
|
43
|
+
declare class ServerLayerDataSource implements MapLayerDataSource {
|
|
44
|
+
options: ServerMapLayerDataSourceOptions;
|
|
45
|
+
constructor(options: ServerMapLayerDataSourceOptions);
|
|
46
|
+
getTileUrl(design: any, filters: JsonQLFilter[]): any;
|
|
47
|
+
getUtfGridUrl(design: any, filters: JsonQLFilter[]): string | null;
|
|
48
|
+
/** Get the url for vector tile source with an expiry time. Only for layers of type "VectorTile"
|
|
49
|
+
* @param createdAfter ISO 8601 timestamp requiring that tile source on server is created after specified datetime
|
|
50
|
+
*/
|
|
51
|
+
getVectorTileUrl(layerDesign: any, filters: JsonQLFilter[], createdAfter: string): Promise<{
|
|
52
|
+
url: string;
|
|
53
|
+
expires: string;
|
|
54
|
+
}>;
|
|
55
|
+
getPopupWidgetDataSource(design: any, widgetId: string): ServerMapLayerPopupWidgetDataSource;
|
|
56
|
+
createUrl(filters: JsonQLFilter[], extension: string): string;
|
|
57
|
+
createLegacyUrl(design: any, extension: string, filters: JsonQLFilter[]): string;
|
|
58
|
+
}
|
|
59
|
+
interface ServerMapLayerPopupWidgetDataSourceOptions {
|
|
60
|
+
/** API url to use for talking to mWater server */
|
|
61
|
+
apiUrl: string;
|
|
62
|
+
/** client id to use for talking to mWater server */
|
|
63
|
+
client?: string;
|
|
64
|
+
/** share id to use for talking to mWater server */
|
|
65
|
+
share?: string;
|
|
66
|
+
/** map id to use on server */
|
|
67
|
+
mapId: string;
|
|
68
|
+
/** revision to use to allow caching */
|
|
69
|
+
rev: string;
|
|
70
|
+
/** Layer id to use */
|
|
71
|
+
layerId: string;
|
|
72
|
+
/** Popup widget id to use */
|
|
73
|
+
popupWidgetId: string;
|
|
74
|
+
}
|
|
75
|
+
declare class ServerMapLayerPopupWidgetDataSource implements WidgetDataSource {
|
|
76
|
+
options: ServerMapLayerPopupWidgetDataSourceOptions;
|
|
77
|
+
constructor(options: ServerMapLayerPopupWidgetDataSourceOptions);
|
|
78
|
+
getData(design: any, filters: JsonQLFilter[], callback: (error: any, data?: any) => void): JQuery.jqXHR<any>;
|
|
79
|
+
getImageUrl(imageId: string, height?: number): string;
|
|
80
|
+
}
|
|
81
|
+
declare class ServerQuickfilterDataSource implements QuickfiltersDataSource {
|
|
82
|
+
options: ServerMapDataSourceOptions;
|
|
83
|
+
constructor(options: ServerMapDataSourceOptions);
|
|
84
|
+
getValues(index: number, expr: Expr, filters: JsonQLFilter[], offset: number, limit: number, callback: (error: any, values?: any[]) => void): void;
|
|
85
|
+
}
|
|
86
|
+
export {};
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const expressions_1 = require("@mwater/expressions");
|
|
7
|
+
const compressJson_1 = __importDefault(require("../compressJson"));
|
|
8
|
+
const querystring_1 = __importDefault(require("querystring"));
|
|
9
|
+
const jquery_1 = __importDefault(require("jquery"));
|
|
10
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
+
const LayerFactory_1 = __importDefault(require("./LayerFactory"));
|
|
12
|
+
/** Get map urls for map stored on server */
|
|
13
|
+
class ServerMapDataSource {
|
|
14
|
+
options;
|
|
15
|
+
// Create map url source that uses map design stored on server
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
// Gets the data source for a layer
|
|
20
|
+
getLayerDataSource(layerId) {
|
|
21
|
+
// Get layerView
|
|
22
|
+
const layerView = lodash_1.default.findWhere(this.options.design.layerViews, { id: layerId });
|
|
23
|
+
if (!layerView) {
|
|
24
|
+
throw new Error("Layer not found");
|
|
25
|
+
}
|
|
26
|
+
return new ServerLayerDataSource({ ...this.options, layerView });
|
|
27
|
+
}
|
|
28
|
+
// Gets the bounds for the map. Null for no opinion. Callback as { n:, s:, w:, e: }
|
|
29
|
+
getBounds(design, filters, callback) {
|
|
30
|
+
const query = {
|
|
31
|
+
client: this.options.client,
|
|
32
|
+
share: this.options.share,
|
|
33
|
+
filters: (0, compressJson_1.default)(filters),
|
|
34
|
+
rev: this.options.rev
|
|
35
|
+
};
|
|
36
|
+
const url = this.options.apiUrl + `maps/${this.options.mapId}/bounds?` + querystring_1.default.stringify(query);
|
|
37
|
+
jquery_1.default.getJSON(url, (data) => {
|
|
38
|
+
return callback(null, data);
|
|
39
|
+
}).fail((xhr) => {
|
|
40
|
+
console.log(xhr.responseText);
|
|
41
|
+
return callback(new Error(xhr.responseText));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getQuickfiltersDataSource() {
|
|
45
|
+
return new ServerQuickfilterDataSource(this.options);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.default = ServerMapDataSource;
|
|
49
|
+
class ServerLayerDataSource {
|
|
50
|
+
options;
|
|
51
|
+
// Create map url source that uses map design stored on server
|
|
52
|
+
// options:
|
|
53
|
+
// apiUrl: API url to use for talking to mWater server
|
|
54
|
+
// client: client id to use for talking to mWater server
|
|
55
|
+
// design: design of entire map
|
|
56
|
+
// schema: schema to use
|
|
57
|
+
// share: share id to use for talking to mWater server
|
|
58
|
+
// mapId: map id to use on server
|
|
59
|
+
// rev: revision to use to allow caching
|
|
60
|
+
// layerView: layer view
|
|
61
|
+
constructor(options) {
|
|
62
|
+
this.options = options;
|
|
63
|
+
}
|
|
64
|
+
// Get the url for the image tiles with the specified filters applied
|
|
65
|
+
// Called with (design, filters) where design is the design of the layer and filters are filters to apply. Returns URL
|
|
66
|
+
getTileUrl(design, filters) {
|
|
67
|
+
// Handle special cases
|
|
68
|
+
if (this.options.layerView.type === "MWaterServer") {
|
|
69
|
+
return this.createLegacyUrl(design, "png", filters);
|
|
70
|
+
}
|
|
71
|
+
// Create layer
|
|
72
|
+
const layer = LayerFactory_1.default.createLayer(this.options.layerView.type);
|
|
73
|
+
// If layer has tiles url directly available
|
|
74
|
+
if (layer.getLayerDefinitionType() === "TileUrl") {
|
|
75
|
+
return layer.getTileUrl(this.options.layerView.design, filters);
|
|
76
|
+
}
|
|
77
|
+
return this.createUrl(filters, "png");
|
|
78
|
+
}
|
|
79
|
+
// Get the url for the interactivity tiles with the specified filters applied
|
|
80
|
+
// Called with (design, filters) where design is the design of the layer and filters are filters to apply. Returns URL
|
|
81
|
+
getUtfGridUrl(design, filters) {
|
|
82
|
+
// Handle special cases
|
|
83
|
+
if (this.options.layerView.type === "MWaterServer") {
|
|
84
|
+
return this.createLegacyUrl(design, "grid.json", filters);
|
|
85
|
+
}
|
|
86
|
+
// Create layer
|
|
87
|
+
const layer = LayerFactory_1.default.createLayer(this.options.layerView.type);
|
|
88
|
+
// If layer has tiles url directly available
|
|
89
|
+
if (layer.getLayerDefinitionType() === "TileUrl") {
|
|
90
|
+
return layer.getUtfGridUrl(this.options.layerView.design, filters);
|
|
91
|
+
}
|
|
92
|
+
return this.createUrl(filters, "grid.json");
|
|
93
|
+
}
|
|
94
|
+
/** Get the url for vector tile source with an expiry time. Only for layers of type "VectorTile"
|
|
95
|
+
* @param createdAfter ISO 8601 timestamp requiring that tile source on server is created after specified datetime
|
|
96
|
+
*/
|
|
97
|
+
async getVectorTileUrl(layerDesign, filters, createdAfter) {
|
|
98
|
+
const qs = querystring_1.default.stringify({
|
|
99
|
+
client: this.options.client,
|
|
100
|
+
share: this.options.share
|
|
101
|
+
});
|
|
102
|
+
const url = `${this.options.apiUrl}vector_tiles/create_token/maps/${this.options.mapId}/layers/${this.options.layerView.id}?${qs}`;
|
|
103
|
+
const request = {
|
|
104
|
+
createdAfter: createdAfter,
|
|
105
|
+
// 12 hours
|
|
106
|
+
expiresAfter: new Date(Date.now() + 1000 * 3600 * 12).toISOString(),
|
|
107
|
+
filters: (0, compressJson_1.default)(filters || [])
|
|
108
|
+
};
|
|
109
|
+
const response = await fetch(url, {
|
|
110
|
+
method: "POST",
|
|
111
|
+
body: JSON.stringify(request),
|
|
112
|
+
headers: {
|
|
113
|
+
Accept: "application/json",
|
|
114
|
+
"Content-Type": "application/json"
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
if (!response.ok) {
|
|
118
|
+
throw new Error("Error getting tiles token");
|
|
119
|
+
}
|
|
120
|
+
const { token, expires } = await response.json();
|
|
121
|
+
return { url: this.options.apiUrl + `vector_tiles/tiles/{z}/{x}/{y}?token=${token}`, expires };
|
|
122
|
+
}
|
|
123
|
+
// Gets widget data source for a popup widget
|
|
124
|
+
getPopupWidgetDataSource(design, widgetId) {
|
|
125
|
+
return new ServerMapLayerPopupWidgetDataSource({
|
|
126
|
+
apiUrl: this.options.apiUrl,
|
|
127
|
+
client: this.options.client,
|
|
128
|
+
share: this.options.share,
|
|
129
|
+
mapId: this.options.mapId,
|
|
130
|
+
rev: this.options.rev,
|
|
131
|
+
layerId: this.options.layerView.id,
|
|
132
|
+
popupWidgetId: widgetId
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
createUrl(filters, extension) {
|
|
136
|
+
const query = {
|
|
137
|
+
type: "maps",
|
|
138
|
+
client: this.options.client,
|
|
139
|
+
share: this.options.share,
|
|
140
|
+
map: this.options.mapId,
|
|
141
|
+
layer: this.options.layerView.id,
|
|
142
|
+
filters: (0, compressJson_1.default)(filters || []),
|
|
143
|
+
rev: this.options.rev
|
|
144
|
+
};
|
|
145
|
+
let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?` + querystring_1.default.stringify(query);
|
|
146
|
+
// Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
|
|
147
|
+
// Used to speed queries
|
|
148
|
+
if (url.match(/^https:\/\/api\.mwater\.co\//)) {
|
|
149
|
+
url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
|
|
150
|
+
}
|
|
151
|
+
return url;
|
|
152
|
+
}
|
|
153
|
+
// Create query string
|
|
154
|
+
createLegacyUrl(design, extension, filters) {
|
|
155
|
+
let where;
|
|
156
|
+
let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?type=${design.type}&radius=1000`;
|
|
157
|
+
// Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
|
|
158
|
+
// Used to speed queries
|
|
159
|
+
if (url.match(/^https:\/\/api\.mwater\.co\//)) {
|
|
160
|
+
url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
|
|
161
|
+
}
|
|
162
|
+
if (this.options.client) {
|
|
163
|
+
url += `&client=${this.options.client}`;
|
|
164
|
+
}
|
|
165
|
+
if (this.options.share) {
|
|
166
|
+
url += `&share=${this.options.share}`;
|
|
167
|
+
}
|
|
168
|
+
// Add where for any relevant filters
|
|
169
|
+
const relevantFilters = lodash_1.default.where(filters, { table: design.table });
|
|
170
|
+
// If any, create and
|
|
171
|
+
const whereClauses = lodash_1.default.map(relevantFilters, (f) => (0, expressions_1.injectTableAlias)(f.jsonql, "main"));
|
|
172
|
+
// Wrap if multiple
|
|
173
|
+
if (whereClauses.length > 1) {
|
|
174
|
+
where = { type: "op", op: "and", exprs: whereClauses };
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
where = whereClauses[0];
|
|
178
|
+
}
|
|
179
|
+
if (where) {
|
|
180
|
+
url += "&where=" + encodeURIComponent((0, compressJson_1.default)(where));
|
|
181
|
+
}
|
|
182
|
+
return url;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
class ServerMapLayerPopupWidgetDataSource {
|
|
186
|
+
options;
|
|
187
|
+
// options:
|
|
188
|
+
// apiUrl: API url to use for talking to mWater server
|
|
189
|
+
// client: client id to use for talking to mWater server
|
|
190
|
+
// share: share id to use for talking to mWater server
|
|
191
|
+
// mapId: map id to use on server
|
|
192
|
+
// rev: revision to use to allow caching
|
|
193
|
+
// layerId: layer id to use
|
|
194
|
+
// popupWidgetId: id of popup widget
|
|
195
|
+
constructor(options) {
|
|
196
|
+
this.options = options;
|
|
197
|
+
}
|
|
198
|
+
// Get the data that the widget needs. The widget should implement getData method (see above) to get the actual data on the server
|
|
199
|
+
// filters: array of filters to apply. Each is { table: table id, jsonql: jsonql condition with {alias} for tableAlias. Use injectAlias to correct
|
|
200
|
+
// callback: (error, data)
|
|
201
|
+
getData(design, filters, callback) {
|
|
202
|
+
const query = {
|
|
203
|
+
client: this.options.client,
|
|
204
|
+
share: this.options.share,
|
|
205
|
+
filters: (0, compressJson_1.default)(filters),
|
|
206
|
+
rev: this.options.rev
|
|
207
|
+
};
|
|
208
|
+
const url = this.options.apiUrl +
|
|
209
|
+
`maps/${this.options.mapId}/layers/${this.options.layerId}/widgets/${this.options.popupWidgetId}/data?` +
|
|
210
|
+
querystring_1.default.stringify(query);
|
|
211
|
+
return jquery_1.default.getJSON(url, (data) => {
|
|
212
|
+
return callback(null, data);
|
|
213
|
+
}).fail((xhr) => {
|
|
214
|
+
console.log(xhr.responseText);
|
|
215
|
+
return callback(new Error(xhr.responseText));
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
// Get the url to download an image (by id from an image or imagelist column)
|
|
219
|
+
// Height, if specified, is minimum height needed. May return larger image
|
|
220
|
+
getImageUrl(imageId, height) {
|
|
221
|
+
let url = this.options.apiUrl + `images/${imageId}`;
|
|
222
|
+
if (height) {
|
|
223
|
+
url += `?h=${height}`;
|
|
224
|
+
}
|
|
225
|
+
return url;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
class ServerQuickfilterDataSource {
|
|
229
|
+
options;
|
|
230
|
+
// options:
|
|
231
|
+
// apiUrl: API url to use for talking to mWater server
|
|
232
|
+
// client: client id to use for talking to mWater server
|
|
233
|
+
// share: share id to use for talking to mWater server
|
|
234
|
+
// dashboardId: dashboard id to use on server
|
|
235
|
+
// dataSource: data source that is used for determining cache expiry
|
|
236
|
+
// rev: revision to use to allow caching
|
|
237
|
+
constructor(options) {
|
|
238
|
+
this.options = options;
|
|
239
|
+
}
|
|
240
|
+
// Gets the values of the quickfilter at index
|
|
241
|
+
getValues(index, expr, filters, offset, limit, callback) {
|
|
242
|
+
const query = {
|
|
243
|
+
client: this.options.client,
|
|
244
|
+
share: this.options.share,
|
|
245
|
+
filters: (0, compressJson_1.default)(filters),
|
|
246
|
+
offset,
|
|
247
|
+
limit,
|
|
248
|
+
rev: this.options.rev
|
|
249
|
+
};
|
|
250
|
+
const url = this.options.apiUrl +
|
|
251
|
+
`maps/${this.options.mapId}/quickfilters/${index}/values?` +
|
|
252
|
+
querystring_1.default.stringify(query);
|
|
253
|
+
const headers = {};
|
|
254
|
+
const cacheExpiry = this.options.dataSource.getCacheExpiry();
|
|
255
|
+
if (cacheExpiry) {
|
|
256
|
+
const seconds = Math.floor((new Date().getTime() - cacheExpiry) / 1000);
|
|
257
|
+
headers["Cache-Control"] = `max-age=${seconds}`;
|
|
258
|
+
}
|
|
259
|
+
jquery_1.default.ajax({
|
|
260
|
+
dataType: "json",
|
|
261
|
+
method: "GET",
|
|
262
|
+
url,
|
|
263
|
+
headers
|
|
264
|
+
})
|
|
265
|
+
.done((data) => {
|
|
266
|
+
return callback(null, data);
|
|
267
|
+
})
|
|
268
|
+
.fail((xhr) => {
|
|
269
|
+
console.log(xhr.responseText);
|
|
270
|
+
return callback(new Error(xhr.responseText));
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import Layer from "./Layer";
|
|
2
|
+
import { Schema, DataSource } from "@mwater/expressions";
|
|
3
|
+
import { JsonQLFilter } from "../index";
|
|
4
|
+
import React from "react";
|
|
5
|
+
/**
|
|
6
|
+
* Layer that is composed of multiple tile urls that can be switched between
|
|
7
|
+
* Loads legend from the server as well
|
|
8
|
+
*/
|
|
9
|
+
export interface SwitchableTileUrlLayerDesign {
|
|
10
|
+
options: SwitchableOption[];
|
|
11
|
+
/** id of active option */
|
|
12
|
+
activeOption: string;
|
|
13
|
+
/** Minimum zoom level allowed */
|
|
14
|
+
minZoom?: number;
|
|
15
|
+
/** Maximum zoom level allowed */
|
|
16
|
+
maxZoom?: number;
|
|
17
|
+
/** Optional note to display */
|
|
18
|
+
note?: string;
|
|
19
|
+
}
|
|
20
|
+
/** One option that can be selected with its own urls */
|
|
21
|
+
interface SwitchableOption {
|
|
22
|
+
/** Unique id of the option */
|
|
23
|
+
id: string;
|
|
24
|
+
/** Name of the option */
|
|
25
|
+
name: string;
|
|
26
|
+
/** Url with {z}, {x}, {y} included to get tiles */
|
|
27
|
+
tileUrl?: string;
|
|
28
|
+
/** Url with {z}, {x}, {y} included to get utf grid tiles */
|
|
29
|
+
utfGridUrl?: string;
|
|
30
|
+
/** Url to get legend html from. {name} will be replaced with url-encoded name of layer */
|
|
31
|
+
legendUrl?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Layer that has multiple tile urls that it can display. Switchable but not editable */
|
|
34
|
+
export default class SwitchableTileUrlLayer extends Layer<SwitchableTileUrlLayerDesign> {
|
|
35
|
+
getLayerDefinitionType(): "TileUrl";
|
|
36
|
+
getMinZoom(design: SwitchableTileUrlLayerDesign): number | null;
|
|
37
|
+
getMaxZoom(design: SwitchableTileUrlLayerDesign): number;
|
|
38
|
+
/** Gets the tile url for definition type "TileUrl" */
|
|
39
|
+
getTileUrl(design: SwitchableTileUrlLayerDesign, filters: JsonQLFilter[]): string | null;
|
|
40
|
+
/** Gets the utf grid url for definition type "TileUrl" */
|
|
41
|
+
getUtfGridUrl(design: SwitchableTileUrlLayerDesign, filters: JsonQLFilter[]): string | null;
|
|
42
|
+
getLegend(design: SwitchableTileUrlLayerDesign, schema: Schema, name: string, dataSource: DataSource, locale: string, filters: JsonQLFilter[]): React.JSX.Element | null;
|
|
43
|
+
/** True if layer can be edited */
|
|
44
|
+
isEditable(): boolean;
|
|
45
|
+
createDesignerElement(options: {
|
|
46
|
+
design: SwitchableTileUrlLayerDesign;
|
|
47
|
+
schema: Schema;
|
|
48
|
+
dataSource: DataSource;
|
|
49
|
+
onDesignChange: (design: SwitchableTileUrlLayerDesign) => void;
|
|
50
|
+
filters: JsonQLFilter[];
|
|
51
|
+
}): React.ReactElement<{}>;
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Layer_1 = __importDefault(require("./Layer"));
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const HtmlUrlLegend_1 = require("./HtmlUrlLegend");
|
|
9
|
+
/** Layer that has multiple tile urls that it can display. Switchable but not editable */
|
|
10
|
+
class SwitchableTileUrlLayer extends Layer_1.default {
|
|
11
|
+
getLayerDefinitionType() {
|
|
12
|
+
return "TileUrl";
|
|
13
|
+
}
|
|
14
|
+
getMinZoom(design) {
|
|
15
|
+
return design.minZoom || null;
|
|
16
|
+
}
|
|
17
|
+
getMaxZoom(design) {
|
|
18
|
+
return design.maxZoom || 21;
|
|
19
|
+
}
|
|
20
|
+
/** Gets the tile url for definition type "TileUrl" */
|
|
21
|
+
getTileUrl(design, filters) {
|
|
22
|
+
// Find active option
|
|
23
|
+
const option = design.options.find((d) => d.id === design.activeOption);
|
|
24
|
+
if (!option) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return option.tileUrl || null;
|
|
28
|
+
}
|
|
29
|
+
/** Gets the utf grid url for definition type "TileUrl" */
|
|
30
|
+
getUtfGridUrl(design, filters) {
|
|
31
|
+
// Find active option
|
|
32
|
+
const option = design.options.find((d) => d.id === design.activeOption);
|
|
33
|
+
if (!option) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return option.utfGridUrl || null;
|
|
37
|
+
}
|
|
38
|
+
getLegend(design, schema, name, dataSource, locale, filters) {
|
|
39
|
+
// Find active option
|
|
40
|
+
const option = design.options.find((d) => d.id === design.activeOption);
|
|
41
|
+
if (!option || !option.legendUrl) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const url = option.legendUrl.replace(/\{name\}/, encodeURIComponent(name));
|
|
45
|
+
return react_1.default.createElement(HtmlUrlLegend_1.HtmlUrlLegend, { url: url });
|
|
46
|
+
}
|
|
47
|
+
/** True if layer can be edited */
|
|
48
|
+
isEditable() {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
// Creates a design element with specified options
|
|
52
|
+
// options:
|
|
53
|
+
// design: design of layer
|
|
54
|
+
// schema: schema to use
|
|
55
|
+
// dataSource: data source to use
|
|
56
|
+
// onDesignChange: function called when design changes
|
|
57
|
+
// filters: array of filters
|
|
58
|
+
createDesignerElement(options) {
|
|
59
|
+
// Require here to prevent server require problems
|
|
60
|
+
const SwitchableTileUrlLayerDesigner = require("./SwitchableTileUrlLayerDesigner").default;
|
|
61
|
+
return react_1.default.createElement(SwitchableTileUrlLayerDesigner, {
|
|
62
|
+
design: options.design,
|
|
63
|
+
onDesignChange: (design) => {
|
|
64
|
+
return options.onDesignChange(design);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.default = SwitchableTileUrlLayer;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { JsonQLFilter } from "../index";
|
|
3
|
+
import { SwitchableTileUrlLayerDesign } from "./SwitchableTileUrlLayer";
|
|
4
|
+
/** Designer for a switchable tile url layer */
|
|
5
|
+
export default class SwitchableTileUrlLayerDesigner extends React.Component<{
|
|
6
|
+
design: SwitchableTileUrlLayerDesign;
|
|
7
|
+
onDesignChange: (design: SwitchableTileUrlLayerDesign) => void;
|
|
8
|
+
/** array of filters to apply. Each is { table: table id, jsonql: jsonql condition with {alias} for tableAlias. Use injectAlias to correct */
|
|
9
|
+
filters: JsonQLFilter[];
|
|
10
|
+
}> {
|
|
11
|
+
update(mutation: (d: SwitchableTileUrlLayerDesign) => void): void;
|
|
12
|
+
handleChange: (activeOption: string) => void;
|
|
13
|
+
render(): React.JSX.Element;
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const R = react_1.default.createElement;
|
|
8
|
+
const immer_1 = require("immer");
|
|
9
|
+
const bootstrap_1 = require("@mwater/react-library/lib/bootstrap");
|
|
10
|
+
/** Designer for a switchable tile url layer */
|
|
11
|
+
class SwitchableTileUrlLayerDesigner extends react_1.default.Component {
|
|
12
|
+
update(mutation) {
|
|
13
|
+
this.props.onDesignChange((0, immer_1.produce)(this.props.design, mutation));
|
|
14
|
+
}
|
|
15
|
+
handleChange = (activeOption) => {
|
|
16
|
+
this.props.onDesignChange({ ...this.props.design, activeOption: activeOption });
|
|
17
|
+
};
|
|
18
|
+
render() {
|
|
19
|
+
return (react_1.default.createElement("div", null,
|
|
20
|
+
react_1.default.createElement("div", { className: "text-muted", style: { paddingBottom: 5 } }, this.props.design.note),
|
|
21
|
+
this.props.design.options.map((opt) => {
|
|
22
|
+
return (react_1.default.createElement(bootstrap_1.Radio, { key: opt.id, value: this.props.design.activeOption, radioValue: opt.id, onChange: this.handleChange, inline: false }, opt.name));
|
|
23
|
+
})));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = SwitchableTileUrlLayerDesigner;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Layer from "./Layer";
|
|
3
|
+
import { DataSource, Schema } from "@mwater/expressions";
|
|
4
|
+
import { JsonQLFilter } from "../JsonQLFilter";
|
|
5
|
+
export interface TileUrlLayerDesign {
|
|
6
|
+
/** Url with {s}, {z}, {x}, {y} */
|
|
7
|
+
tileUrl: string;
|
|
8
|
+
/** optional min zoom level */
|
|
9
|
+
minZoom?: number;
|
|
10
|
+
/** optional max zoom level */
|
|
11
|
+
maxZoom?: number;
|
|
12
|
+
/** if true, hides url and prevents editing */
|
|
13
|
+
readonly?: boolean;
|
|
14
|
+
/** Url to get legend html from. */
|
|
15
|
+
legendUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
export default class TileUrlLayer extends Layer<TileUrlLayerDesign> {
|
|
18
|
+
getLayerDefinitionType(): "TileUrl";
|
|
19
|
+
getTileUrl(design: any, filters: any): any;
|
|
20
|
+
getUtfGridUrl(design: any, filters: any): null;
|
|
21
|
+
getMinZoom(design: any): any;
|
|
22
|
+
getMaxZoom(design: any): any;
|
|
23
|
+
isEditable(): boolean;
|
|
24
|
+
isIncomplete(design: any, schema: Schema): boolean;
|
|
25
|
+
getLegend(design: TileUrlLayerDesign, schema: Schema, name: string, dataSource: DataSource, locale: string, filters: JsonQLFilter[]): React.JSX.Element | null;
|
|
26
|
+
createDesignerElement(options: any): React.CElement<TileUrlLayerDesignerComponentProps, TileUrlLayerDesignerComponent>;
|
|
27
|
+
cleanDesign(design: any, schema: Schema): any;
|
|
28
|
+
validateDesign(design: any, schema: Schema): "Missing Url" | null;
|
|
29
|
+
}
|
|
30
|
+
interface TileUrlLayerDesignerComponentProps {
|
|
31
|
+
/** Design of the marker layer */
|
|
32
|
+
design: TileUrlLayerDesign;
|
|
33
|
+
onDesignChange: (design: TileUrlLayerDesign) => void;
|
|
34
|
+
}
|
|
35
|
+
declare class TileUrlLayerDesignerComponent extends React.Component<TileUrlLayerDesignerComponentProps> {
|
|
36
|
+
handleTileUrlChange: (tileUrl: string) => void;
|
|
37
|
+
handleLegendUrlChange: (legendUrl: string) => void;
|
|
38
|
+
render(): React.JSX.Element | null;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const R = react_1.default.createElement;
|
|
8
|
+
const Layer_1 = __importDefault(require("./Layer"));
|
|
9
|
+
const HtmlUrlLegend_1 = require("./HtmlUrlLegend");
|
|
10
|
+
const bootstrap_1 = require("@mwater/react-library/lib/bootstrap");
|
|
11
|
+
/*
|
|
12
|
+
Layer that is a custom Leaflet-style url tile layer
|
|
13
|
+
Design is:
|
|
14
|
+
tileUrl:
|
|
15
|
+
minZoom:
|
|
16
|
+
maxZoom: optional max zoom level
|
|
17
|
+
readonly:
|
|
18
|
+
legendUrl:
|
|
19
|
+
*/
|
|
20
|
+
class TileUrlLayer extends Layer_1.default {
|
|
21
|
+
// Gets the type of layer definition ("JsonQLCss"/"TileUrl")
|
|
22
|
+
getLayerDefinitionType() {
|
|
23
|
+
return "TileUrl";
|
|
24
|
+
}
|
|
25
|
+
// Gets the tile url for definition type "TileUrl"
|
|
26
|
+
getTileUrl(design, filters) {
|
|
27
|
+
return design.tileUrl;
|
|
28
|
+
}
|
|
29
|
+
// Gets the utf grid url for definition type "TileUrl"
|
|
30
|
+
getUtfGridUrl(design, filters) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
// Get min and max zoom levels
|
|
34
|
+
getMinZoom(design) {
|
|
35
|
+
return design.minZoom;
|
|
36
|
+
}
|
|
37
|
+
getMaxZoom(design) {
|
|
38
|
+
return design.maxZoom;
|
|
39
|
+
}
|
|
40
|
+
// True if layer can be edited
|
|
41
|
+
isEditable() {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
// True if layer is incomplete (e.g. brand new) and should be editable immediately
|
|
45
|
+
isIncomplete(design, schema) {
|
|
46
|
+
return this.validateDesign(this.cleanDesign(design, schema), schema) != null;
|
|
47
|
+
}
|
|
48
|
+
getLegend(design, schema, name, dataSource, locale, filters) {
|
|
49
|
+
// Find active option
|
|
50
|
+
if (!design.legendUrl) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return react_1.default.createElement(HtmlUrlLegend_1.HtmlUrlLegend, { url: design.legendUrl });
|
|
54
|
+
}
|
|
55
|
+
// Creates a design element with specified options.
|
|
56
|
+
// Design should be cleaned on the way in and on way out.
|
|
57
|
+
// options:
|
|
58
|
+
// design: design of layer
|
|
59
|
+
// schema: schema to use
|
|
60
|
+
// dataSource: data source to use
|
|
61
|
+
// onDesignChange: function called when design changes
|
|
62
|
+
createDesignerElement(options) {
|
|
63
|
+
return R(TileUrlLayerDesignerComponent, { design: options.design, onDesignChange: options.onDesignChange });
|
|
64
|
+
}
|
|
65
|
+
// Returns a cleaned design
|
|
66
|
+
cleanDesign(design, schema) {
|
|
67
|
+
return design;
|
|
68
|
+
}
|
|
69
|
+
// Validates design. Null if ok, message otherwise
|
|
70
|
+
validateDesign(design, schema) {
|
|
71
|
+
if (!design.tileUrl) {
|
|
72
|
+
return "Missing Url";
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.default = TileUrlLayer;
|
|
78
|
+
class TileUrlLayerDesignerComponent extends react_1.default.Component {
|
|
79
|
+
handleTileUrlChange = (tileUrl) => {
|
|
80
|
+
return this.props.onDesignChange({ ...this.props.design, tileUrl });
|
|
81
|
+
};
|
|
82
|
+
handleLegendUrlChange = (legendUrl) => {
|
|
83
|
+
return this.props.onDesignChange({ ...this.props.design, legendUrl });
|
|
84
|
+
};
|
|
85
|
+
render() {
|
|
86
|
+
// Readonly is non-editable and shows only description
|
|
87
|
+
if (this.props.design.readonly) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return react_1.default.createElement("div", { className: "mb-3" },
|
|
91
|
+
react_1.default.createElement(bootstrap_1.FormGroup, { label: "Url (containing {z}, {x} and {y})", labelMuted: true },
|
|
92
|
+
react_1.default.createElement(bootstrap_1.TextInput, { value: this.props.design.tileUrl, onChange: this.handleTileUrlChange })),
|
|
93
|
+
react_1.default.createElement(bootstrap_1.FormGroup, { label: "Optional URL of Legend", labelMuted: true },
|
|
94
|
+
react_1.default.createElement(bootstrap_1.TextInput, { value: this.props.design.legendUrl || "", onChange: this.handleLegendUrlChange })));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|