@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
|
@@ -8,7 +8,7 @@ export interface GlobalFiltersElementFactoryProps {
|
|
|
8
8
|
dataSource: DataSource;
|
|
9
9
|
filterableTables: string[];
|
|
10
10
|
globalFilters?: GlobalFilter[];
|
|
11
|
-
onChange
|
|
11
|
+
onChange?: (globalFilters: GlobalFilter[]) => void;
|
|
12
12
|
/** If true, return null element if not applicable to filterableTables */
|
|
13
13
|
nullIfIrrelevant?: boolean;
|
|
14
14
|
}
|
|
@@ -30,7 +30,7 @@ exports.AddLayerElementFactoryContext = exports.GlobalFiltersElementFactoryConte
|
|
|
30
30
|
const lodash_1 = __importDefault(require("lodash"));
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
32
|
const R = react_1.default.createElement;
|
|
33
|
-
const MWaterTableSelectComponent_1 = __importDefault(require("./MWaterTableSelectComponent"));
|
|
33
|
+
const MWaterTableSelectComponent_1 = __importDefault(require("./mwater_table_selection/MWaterTableSelectComponent"));
|
|
34
34
|
const MWaterAddRelatedFormComponent_1 = __importDefault(require("./MWaterAddRelatedFormComponent"));
|
|
35
35
|
const MWaterAddRelatedIndicatorComponent_1 = __importDefault(require("./MWaterAddRelatedIndicatorComponent"));
|
|
36
36
|
const MWaterGlobalFiltersComponent_1 = __importDefault(require("./MWaterGlobalFiltersComponent"));
|
|
@@ -8,10 +8,10 @@ export interface MWaterGlobalFiltersComponentProps {
|
|
|
8
8
|
dataSource: DataSource;
|
|
9
9
|
filterableTables: string[];
|
|
10
10
|
globalFilters?: GlobalFilter[];
|
|
11
|
-
onChange
|
|
11
|
+
onChange?: (globalFilters: GlobalFilter[]) => void;
|
|
12
12
|
}
|
|
13
13
|
export default class MWaterGlobalFiltersComponent extends React.Component<MWaterGlobalFiltersComponentProps> {
|
|
14
14
|
handleRegionsChange: (regions: any) => void;
|
|
15
15
|
handleManagedByChange: (managedBy: any) => void;
|
|
16
|
-
render(): React.
|
|
16
|
+
render(): React.JSX.Element;
|
|
17
17
|
}
|
|
@@ -28,12 +28,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const lodash_1 = __importDefault(require("lodash"));
|
|
30
30
|
const react_1 = __importDefault(require("react"));
|
|
31
|
-
const R = react_1.default.createElement;
|
|
32
31
|
const ui = __importStar(require("@mwater/react-library/lib/bootstrap"));
|
|
33
32
|
const expressions_ui_1 = require("@mwater/expressions-ui");
|
|
34
33
|
// Control to edit the global filters (_managed_by and admin_region)
|
|
35
34
|
class MWaterGlobalFiltersComponent extends react_1.default.Component {
|
|
36
35
|
handleRegionsChange = (regions) => {
|
|
36
|
+
if (!this.props.onChange) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
37
39
|
// Remove existing filter
|
|
38
40
|
const globalFilters = lodash_1.default.filter(this.props.globalFilters || [], (gf) => !(gf.op === "within any" && gf.columnId === "admin_region"));
|
|
39
41
|
// Add new filter if present
|
|
@@ -48,6 +50,9 @@ class MWaterGlobalFiltersComponent extends react_1.default.Component {
|
|
|
48
50
|
this.props.onChange(globalFilters);
|
|
49
51
|
};
|
|
50
52
|
handleManagedByChange = (managedBy) => {
|
|
53
|
+
if (!this.props.onChange) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
51
56
|
// Remove existing filter
|
|
52
57
|
const globalFilters = lodash_1.default.filter(this.props.globalFilters || [], (gf) => !(gf.op === "within" && gf.columnId === "_managed_by"));
|
|
53
58
|
// Add new filter if present
|
|
@@ -79,25 +84,11 @@ class MWaterGlobalFiltersComponent extends react_1.default.Component {
|
|
|
79
84
|
else {
|
|
80
85
|
adminRegions = null;
|
|
81
86
|
}
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
dataSource: this.props.dataSource,
|
|
88
|
-
placeholder: T `All Organizations`,
|
|
89
|
-
multi: false,
|
|
90
|
-
filter: { type: "field", tableAlias: "main", column: "canManageEntities" }
|
|
91
|
-
})), R(ui.FormGroup, { label: T `Only sites located in`, labelMuted: true }, R(expressions_ui_1.IdLiteralComponent, {
|
|
92
|
-
value: adminRegions,
|
|
93
|
-
onChange: this.handleRegionsChange,
|
|
94
|
-
idTable: "admin_regions",
|
|
95
|
-
schema: this.props.schema,
|
|
96
|
-
dataSource: this.props.dataSource,
|
|
97
|
-
placeholder: T `All Regions`,
|
|
98
|
-
multi: true,
|
|
99
|
-
orderBy: [{ expr: { type: "field", tableAlias: "main", column: "level" }, direction: "asc" }]
|
|
100
|
-
})));
|
|
87
|
+
return (react_1.default.createElement("div", null,
|
|
88
|
+
react_1.default.createElement(ui.FormGroup, { label: T `Only sites managed by`, labelMuted: true },
|
|
89
|
+
react_1.default.createElement(expressions_ui_1.IdLiteralComponent, { value: managedBy, onChange: this.props.onChange ? this.handleManagedByChange : undefined, idTable: "groups", schema: this.props.schema, dataSource: this.props.dataSource, placeholder: T `All Organizations`, multi: false, filter: { type: "field", tableAlias: "main", column: "canManageEntities" } })),
|
|
90
|
+
react_1.default.createElement(ui.FormGroup, { label: T `Only sites located in`, labelMuted: true },
|
|
91
|
+
react_1.default.createElement(expressions_ui_1.IdLiteralComponent, { value: adminRegions, onChange: this.props.onChange ? this.handleRegionsChange : undefined, idTable: "admin_regions", schema: this.props.schema, dataSource: this.props.dataSource, placeholder: T `All Regions`, multi: true, orderBy: [{ expr: { type: "field", tableAlias: "main", column: "level" }, direction: "asc" }] }))));
|
|
101
92
|
}
|
|
102
93
|
}
|
|
103
94
|
exports.default = MWaterGlobalFiltersComponent;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React, { ReactElement } from "react";
|
|
1
|
+
import React, { ReactElement, ReactNode } from "react";
|
|
2
2
|
import { DataSource, Schema } from "@mwater/expressions";
|
|
3
3
|
import AsyncLoadComponent from "@mwater/react-library/lib/AsyncLoadComponent";
|
|
4
|
-
import
|
|
5
|
-
import MWaterContextComponent, { AddLayerElementFactory } from "./MWaterContextComponent";
|
|
4
|
+
import { AddLayerElementFactory } from "./MWaterContextComponent";
|
|
6
5
|
export interface MWaterLoaderComponentProps {
|
|
7
6
|
apiUrl: string;
|
|
8
7
|
client?: string;
|
|
@@ -22,9 +21,9 @@ export interface MWaterLoaderComponentProps {
|
|
|
22
21
|
children: (error: any, config?: {
|
|
23
22
|
schema: Schema;
|
|
24
23
|
dataSource: DataSource;
|
|
25
|
-
}) => ReactElement<any
|
|
24
|
+
}) => ReactElement<any> | null;
|
|
26
25
|
/** Custom error formatter that returns React node or string, gets passed the error response from server */
|
|
27
|
-
errorFormatter?: (data: any, defaultError:
|
|
26
|
+
errorFormatter?: (data: any, defaultError: ReactNode) => ReactNode;
|
|
28
27
|
/** Origin of usage. e.g. "dashboards:43445364..." */
|
|
29
28
|
origin?: string;
|
|
30
29
|
}
|
|
@@ -43,13 +42,5 @@ export default class MWaterLoaderComponent extends AsyncLoadComponent<MWaterLoad
|
|
|
43
42
|
constructor(props: MWaterLoaderComponentProps);
|
|
44
43
|
isLoadNeeded(newProps: MWaterLoaderComponentProps, oldProps: MWaterLoaderComponentProps): boolean;
|
|
45
44
|
load(props: MWaterLoaderComponentProps, prevProps: MWaterLoaderComponentProps, callback: any): void;
|
|
46
|
-
render(): React.
|
|
47
|
-
apiUrl: string;
|
|
48
|
-
client?: string;
|
|
49
|
-
user?: string;
|
|
50
|
-
schema: Schema;
|
|
51
|
-
extraTables?: string[];
|
|
52
|
-
onExtraTablesChange?: (extraTables: string[]) => void;
|
|
53
|
-
addLayerElementFactory?: AddLayerElementFactory;
|
|
54
|
-
}, MWaterContextComponent>;
|
|
45
|
+
render(): React.JSX.Element | null;
|
|
55
46
|
}
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const R = react_1.default.createElement;
|
|
9
8
|
const AsyncLoadComponent_1 = __importDefault(require("@mwater/react-library/lib/AsyncLoadComponent"));
|
|
10
9
|
const LoadingComponent_1 = __importDefault(require("@mwater/react-library/lib/LoadingComponent"));
|
|
11
10
|
const mWaterLoader_1 = __importDefault(require("./mWaterLoader"));
|
|
@@ -69,18 +68,10 @@ class MWaterLoaderComponent extends AsyncLoadComponent_1.default {
|
|
|
69
68
|
return this.props.children(this.state.error);
|
|
70
69
|
}
|
|
71
70
|
// Inject context
|
|
72
|
-
return
|
|
73
|
-
apiUrl: this.props.apiUrl,
|
|
74
|
-
client: this.props.client,
|
|
75
|
-
user: this.props.user,
|
|
76
|
-
schema: this.state.schema,
|
|
77
|
-
extraTables: this.props.extraTables,
|
|
78
|
-
onExtraTablesChange: this.props.onExtraTablesChange,
|
|
79
|
-
addLayerElementFactory: this.props.addLayerElementFactory
|
|
80
|
-
}, this.props.children(this.state.error, {
|
|
71
|
+
return (react_1.default.createElement(MWaterContextComponent_1.default, { apiUrl: this.props.apiUrl, client: this.props.client, user: this.props.user, schema: this.state.schema, extraTables: this.props.extraTables, onExtraTablesChange: this.props.onExtraTablesChange, addLayerElementFactory: this.props.addLayerElementFactory }, this.props.children(this.state.error, {
|
|
81
72
|
schema: this.state.schema,
|
|
82
73
|
dataSource: this.state.dataSource
|
|
83
|
-
}));
|
|
74
|
+
})));
|
|
84
75
|
}
|
|
85
76
|
}
|
|
86
77
|
exports.default = MWaterLoaderComponent;
|
package/lib/UndoStack.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export default class UndoStack {
|
|
2
2
|
undoStack: any[];
|
|
3
3
|
redoStack: any[];
|
|
4
|
-
|
|
4
|
+
maxDepth?: number;
|
|
5
|
+
constructor(undoStack?: any, redoStack?: any, maxDepth?: number);
|
|
5
6
|
push(value: any): UndoStack;
|
|
6
7
|
canUndo(): boolean;
|
|
7
8
|
canRedo(): boolean;
|
package/lib/UndoStack.js
CHANGED
|
@@ -8,20 +8,26 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
8
8
|
class UndoStack {
|
|
9
9
|
undoStack;
|
|
10
10
|
redoStack;
|
|
11
|
-
|
|
11
|
+
maxDepth;
|
|
12
|
+
constructor(undoStack, redoStack, maxDepth) {
|
|
12
13
|
this.undoStack = undoStack || [];
|
|
13
14
|
this.redoStack = redoStack || [];
|
|
15
|
+
this.maxDepth = maxDepth;
|
|
14
16
|
}
|
|
15
17
|
// Add a value to the stack
|
|
16
18
|
push(value) {
|
|
17
19
|
// No trivial pushes
|
|
18
|
-
if (
|
|
20
|
+
if (JSON.stringify(this.getValue()) === JSON.stringify(value)) {
|
|
19
21
|
return this;
|
|
20
22
|
}
|
|
21
|
-
|
|
23
|
+
let undoStack = this.undoStack.slice();
|
|
22
24
|
undoStack.push(value);
|
|
25
|
+
// Limit stack depth if maxDepth is set
|
|
26
|
+
if (this.maxDepth && undoStack.length > this.maxDepth) {
|
|
27
|
+
undoStack = undoStack.slice(undoStack.length - this.maxDepth);
|
|
28
|
+
}
|
|
23
29
|
const redoStack = [];
|
|
24
|
-
return new UndoStack(undoStack, redoStack);
|
|
30
|
+
return new UndoStack(undoStack, redoStack, this.maxDepth);
|
|
25
31
|
}
|
|
26
32
|
canUndo() {
|
|
27
33
|
return this.undoStack.length > 1;
|
|
@@ -34,14 +40,14 @@ class UndoStack {
|
|
|
34
40
|
const redoStack = this.redoStack.slice();
|
|
35
41
|
redoStack.push(lodash_1.default.last(this.undoStack));
|
|
36
42
|
const undoStack = lodash_1.default.initial(this.undoStack);
|
|
37
|
-
return new UndoStack(undoStack, redoStack);
|
|
43
|
+
return new UndoStack(undoStack, redoStack, this.maxDepth);
|
|
38
44
|
}
|
|
39
45
|
redo() {
|
|
40
46
|
// Put last redo on to undoStack
|
|
41
47
|
const undoStack = this.undoStack.slice();
|
|
42
48
|
undoStack.push(lodash_1.default.last(this.redoStack));
|
|
43
49
|
const redoStack = lodash_1.default.initial(this.redoStack);
|
|
44
|
-
return new UndoStack(undoStack, redoStack);
|
|
50
|
+
return new UndoStack(undoStack, redoStack, this.maxDepth);
|
|
45
51
|
}
|
|
46
52
|
// Get the current value
|
|
47
53
|
getValue() {
|
|
@@ -65,7 +65,8 @@ class DashboardComponent extends react_1.default.Component {
|
|
|
65
65
|
editing: LayoutManager_1.default.createLayoutManager(props.design.layout).isEmpty(props.design.items) &&
|
|
66
66
|
props.onDesignChange != null,
|
|
67
67
|
layoutOptionsOpen: false,
|
|
68
|
-
hideQuickfilters: layoutOptions.hideQuickfiltersWidth
|
|
68
|
+
hideQuickfilters: layoutOptions.hideQuickfiltersWidth === 0 ||
|
|
69
|
+
(layoutOptions.hideQuickfiltersWidth != null && layoutOptions.hideQuickfiltersWidth > document.body.clientWidth),
|
|
69
70
|
refreshKey: 1,
|
|
70
71
|
locale: initialLocale
|
|
71
72
|
};
|
|
@@ -201,25 +202,25 @@ class DashboardComponent extends react_1.default.Component {
|
|
|
201
202
|
: undefined,
|
|
202
203
|
react_1.default.createElement("a", { key: "print", className: "btn btn-link btn-sm", onClick: this.handlePrint },
|
|
203
204
|
react_1.default.createElement("span", { className: "fas fa-print" }),
|
|
204
|
-
react_1.default.createElement("span", { className: "hide-
|
|
205
|
+
react_1.default.createElement("span", { className: "hide-800px" },
|
|
205
206
|
" ",
|
|
206
207
|
T `Print`)),
|
|
207
208
|
react_1.default.createElement("a", { key: "refresh", className: "btn btn-link btn-sm", onClick: this.handleRefreshData },
|
|
208
209
|
react_1.default.createElement("span", { className: "fas fa-sync" }),
|
|
209
|
-
react_1.default.createElement("span", { className: "hide-
|
|
210
|
+
react_1.default.createElement("span", { className: "hide-800px" },
|
|
210
211
|
" ",
|
|
211
212
|
T `Refresh`)),
|
|
212
213
|
this.state.hideQuickfilters && this.props.design.quickfilters && this.props.design.quickfilters.length > 0
|
|
213
214
|
? react_1.default.createElement("a", { key: "showQuickfilters", className: "btn btn-link btn-sm", onClick: this.handleShowQuickfilters },
|
|
214
215
|
react_1.default.createElement("span", { className: "fa fa-filter" }),
|
|
215
|
-
react_1.default.createElement("span", { className: "hide-
|
|
216
|
+
react_1.default.createElement("span", { className: "hide-800px" },
|
|
216
217
|
" ",
|
|
217
218
|
T `Show Quickfilters`))
|
|
218
219
|
: undefined,
|
|
219
220
|
this.state.editing
|
|
220
221
|
? react_1.default.createElement("a", { key: "settings", className: "btn btn-link btn-sm", onClick: this.handleSettings },
|
|
221
222
|
react_1.default.createElement("span", { className: "fas fa-cog" }),
|
|
222
|
-
react_1.default.createElement("span", { className: "hide-
|
|
223
|
+
react_1.default.createElement("span", { className: "hide-800px" },
|
|
223
224
|
" ",
|
|
224
225
|
T `Settings`))
|
|
225
226
|
: undefined,
|
|
@@ -270,6 +271,7 @@ class DashboardComponent extends react_1.default.Component {
|
|
|
270
271
|
react_1.default.createElement("div", { style: {
|
|
271
272
|
display: "grid",
|
|
272
273
|
gridTemplateRows: this.props.hideTitleBar ? "auto 1fr" : "auto auto 1fr",
|
|
274
|
+
gridTemplateColumns: "minmax(0, 1fr)",
|
|
273
275
|
height: "100%"
|
|
274
276
|
} },
|
|
275
277
|
!this.props.hideTitleBar ? this.renderTitleBar() : undefined,
|
|
@@ -34,6 +34,6 @@ export interface DashboardDesign {
|
|
|
34
34
|
};
|
|
35
35
|
/** true to enable implicit filtering (see ImplicitFilterBuilder). Defaults to true for older dashboards. */
|
|
36
36
|
implicitFiltersEnabled?: boolean;
|
|
37
|
-
/**
|
|
37
|
+
/** Array of global filters */
|
|
38
38
|
globalFilters?: GlobalFilter[];
|
|
39
39
|
}
|
|
@@ -78,8 +78,9 @@ function LayoutOptionsComponent(props) {
|
|
|
78
78
|
react_1.default.createElement("div", { style: { backgroundColor: "#888", gridColumn: "1 / 4" } }),
|
|
79
79
|
react_1.default.createElement("div", { style: { backgroundColor: "#888" } }),
|
|
80
80
|
react_1.default.createElement("div", { style: { height: "100%", display: "grid", gridTemplateRows: "auto 1fr" } },
|
|
81
|
-
react_1.default.createElement("div", { key: "quickfilters" }, layoutOptions.hideQuickfiltersWidth
|
|
82
|
-
|
|
81
|
+
react_1.default.createElement("div", { key: "quickfilters" }, (layoutOptions.hideQuickfiltersWidth !== 0) &&
|
|
82
|
+
(layoutOptions.hideQuickfiltersWidth == null ||
|
|
83
|
+
sizeOptions[previewSize].value.width > layoutOptions.hideQuickfiltersWidth)
|
|
83
84
|
? props.quickfiltersView
|
|
84
85
|
: null),
|
|
85
86
|
props.dashboardView),
|
|
@@ -240,7 +241,7 @@ function CustomizeLayout(props) {
|
|
|
240
241
|
react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Hide Quickfilters` },
|
|
241
242
|
react_1.default.createElement(WidthSelector, { value: layoutOptions.hideQuickfiltersWidth, onChange: (hideQuickfiltersWidth) => {
|
|
242
243
|
onLayoutOptionsChange({ ...layoutOptions, hideQuickfiltersWidth });
|
|
243
|
-
}, sign: "< " })),
|
|
244
|
+
}, sign: "< ", includeAlways: true })),
|
|
244
245
|
react_1.default.createElement(bootstrap_1.FormGroup, { label: T `Minimum Width (before scrolling or scaling)` },
|
|
245
246
|
react_1.default.createElement(WidthSelector, { value: layoutOptions.minimumWidth, onChange: (minimumWidth) => {
|
|
246
247
|
onLayoutOptionsChange({ ...layoutOptions, minimumWidth });
|
|
@@ -305,12 +306,18 @@ function PixelsInput(props) {
|
|
|
305
306
|
"px")))))));
|
|
306
307
|
}
|
|
307
308
|
function WidthSelector(props) {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
309
|
+
// Create options array with conditional "Always" option
|
|
310
|
+
const options = [
|
|
311
|
+
{ value: 400, label: `${props.sign}400px (${T `Phone`})` },
|
|
312
|
+
{ value: 600, label: `${props.sign}600px (${T `Small tablet`})` },
|
|
313
|
+
{ value: 800, label: `${props.sign}800px (${T `Tablet`})` },
|
|
314
|
+
{ value: 1000, label: `${props.sign}1000px (${T `Laptop`})` },
|
|
315
|
+
{ value: 1200, label: `${props.sign}1200px (${T `Desktop`})` },
|
|
316
|
+
{ value: 1600, label: `${props.sign}1600px (${T `Wide Desktop`})` }
|
|
317
|
+
];
|
|
318
|
+
// Add "Always" option if requested
|
|
319
|
+
if (props.includeAlways) {
|
|
320
|
+
options.push({ value: 0, label: T `Always` });
|
|
321
|
+
}
|
|
322
|
+
return (react_1.default.createElement(bootstrap_1.Select, { value: props.value, onChange: props.onChange, nullLabel: T `N/A`, options: options }));
|
|
316
323
|
}
|
|
@@ -17,7 +17,7 @@ interface ServerDashboardDataSourceOptions {
|
|
|
17
17
|
/** data source that is used for determining cache expiry */
|
|
18
18
|
dataSource: DataSource;
|
|
19
19
|
/** revision to use to allow caching */
|
|
20
|
-
rev
|
|
20
|
+
rev?: number;
|
|
21
21
|
}
|
|
22
22
|
interface ServerWidgetDataSourceOptions extends ServerDashboardDataSourceOptions {
|
|
23
23
|
widgetId: string;
|
|
@@ -77,6 +77,15 @@ declare class ServerWidgetLayerDataSource implements MapLayerDataSource {
|
|
|
77
77
|
getPopupWidgetDataSource(design: any, widgetId: string): ServerWidgetLayerPopupWidgetDataSource;
|
|
78
78
|
createUrl(filters: JsonQLFilter[], extension: string): string;
|
|
79
79
|
createLegacyUrl(design: any, extension: string, filters: JsonQLFilter[]): string;
|
|
80
|
+
/** Gets hover over data for hover over items
|
|
81
|
+
* @param design The design of the layer
|
|
82
|
+
* @param data The data of the current item being hovered over. e.g. { id: 123 }
|
|
83
|
+
* @param filters The filters to apply to the layer does not include filters that narrow down to a specific item
|
|
84
|
+
* @returns A promise that resolves to the hover over data, indexed by the id of the hover over item
|
|
85
|
+
*/
|
|
86
|
+
getHoverOverData(design: any, data: any, filters: JsonQLFilter[]): Promise<{
|
|
87
|
+
[key: string]: any;
|
|
88
|
+
}>;
|
|
80
89
|
}
|
|
81
90
|
interface ServerWidgetLayerPopupDataSourceOptions extends ServerDashboardDataSourceOptions {
|
|
82
91
|
widgetId: string;
|
|
@@ -298,22 +298,12 @@ class ServerWidgetLayerDataSource {
|
|
|
298
298
|
query.cacheExpiry = cacheExpiry;
|
|
299
299
|
}
|
|
300
300
|
let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?` + querystring_1.default.stringify(query);
|
|
301
|
-
// Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
|
|
302
|
-
// Used to speed queries
|
|
303
|
-
if (url.match(/^https:\/\/api\.mwater\.co\//)) {
|
|
304
|
-
url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
|
|
305
|
-
}
|
|
306
301
|
return url;
|
|
307
302
|
}
|
|
308
303
|
// Create query string
|
|
309
304
|
createLegacyUrl(design, extension, filters) {
|
|
310
305
|
let where;
|
|
311
306
|
let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?type=${design.type}&radius=1000`;
|
|
312
|
-
// Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
|
|
313
|
-
// Used to speed queries
|
|
314
|
-
if (url.match(/^https:\/\/api\.mwater\.co\//)) {
|
|
315
|
-
url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
|
|
316
|
-
}
|
|
317
307
|
if (this.options.client) {
|
|
318
308
|
url += `&client=${this.options.client}`;
|
|
319
309
|
}
|
|
@@ -336,6 +326,35 @@ class ServerWidgetLayerDataSource {
|
|
|
336
326
|
}
|
|
337
327
|
return url;
|
|
338
328
|
}
|
|
329
|
+
/** Gets hover over data for hover over items
|
|
330
|
+
* @param design The design of the layer
|
|
331
|
+
* @param data The data of the current item being hovered over. e.g. { id: 123 }
|
|
332
|
+
* @param filters The filters to apply to the layer does not include filters that narrow down to a specific item
|
|
333
|
+
* @returns A promise that resolves to the hover over data, indexed by the id of the hover over item
|
|
334
|
+
*/
|
|
335
|
+
async getHoverOverData(design, data, filters) {
|
|
336
|
+
const query = {
|
|
337
|
+
client: this.options.client,
|
|
338
|
+
share: this.options.share,
|
|
339
|
+
filters: (0, compressJson_1.default)(filters || []),
|
|
340
|
+
data: (0, compressJson_1.default)(data),
|
|
341
|
+
rev: this.options.rev
|
|
342
|
+
};
|
|
343
|
+
const url = `${this.options.apiUrl}dashboards/${this.options.dashboardId}/widgets/${this.options.widgetId}/layers/${this.options.layerView.id}/hoverdata?` +
|
|
344
|
+
querystring_1.default.stringify(query);
|
|
345
|
+
const response = await fetch(url, {
|
|
346
|
+
method: "GET",
|
|
347
|
+
headers: {
|
|
348
|
+
Accept: "application/json"
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
if (!response.ok) {
|
|
352
|
+
const errorText = await response.text();
|
|
353
|
+
console.error(errorText);
|
|
354
|
+
throw new Error(`Error fetching hover data: ${response.statusText}`);
|
|
355
|
+
}
|
|
356
|
+
return await response.json();
|
|
357
|
+
}
|
|
339
358
|
}
|
|
340
359
|
class ServerWidgetLayerPopupWidgetDataSource {
|
|
341
360
|
options;
|
|
@@ -149,7 +149,7 @@ function LanguageTab({ design, onDesignChange, schema }) {
|
|
|
149
149
|
for (const locale of design.otherLocales || []) {
|
|
150
150
|
const translatedCount = translatableStrings.filter(str => design.translations?.[locale]?.[str] != null).length;
|
|
151
151
|
// Round down to nearest percent
|
|
152
|
-
percentages[locale] = Math.floor((translatedCount / totalStrings) * 100);
|
|
152
|
+
percentages[locale] = (totalStrings > 0) ? Math.floor((translatedCount / totalStrings) * 100) : 0;
|
|
153
153
|
}
|
|
154
154
|
return percentages;
|
|
155
155
|
}, [design.translations, design.otherLocales, translatableStrings]);
|
|
@@ -12,7 +12,11 @@ export interface BlocksLayoutOptions {
|
|
|
12
12
|
belowMinimumWidth: "scale" | "scroll";
|
|
13
13
|
/** Width above which pads */
|
|
14
14
|
maximumWidth: number | null;
|
|
15
|
-
/** Width at which to hide quickfilters.
|
|
15
|
+
/** Width at which to hide quickfilters.
|
|
16
|
+
* Null for never hide
|
|
17
|
+
* 0 for always hide
|
|
18
|
+
* Positive number for responsive hiding based on width
|
|
19
|
+
*/
|
|
16
20
|
hideQuickfiltersWidth: number | null;
|
|
17
21
|
/** The padding around the entire dashboard */
|
|
18
22
|
outerPadding: number;
|
|
@@ -276,7 +276,7 @@ exports.default = (0, react_1.forwardRef)(function DatagridComponent(props, ref)
|
|
|
276
276
|
const renderTitleBar = () => {
|
|
277
277
|
return (react_1.default.createElement("div", { style: { position: "absolute", top: 0, left: 0, right: 0, height: 40, padding: 4 } },
|
|
278
278
|
react_1.default.createElement("div", { style: { float: "right" } },
|
|
279
|
-
design.showNumRows && numRows ? react_1.default.createElement("small", { className: 'text-muted text-sm' }, `${(0, d3_format_1.format)(',')(numRows)} rows`) : undefined,
|
|
279
|
+
design.showNumRows && numRows ? react_1.default.createElement("small", { className: 'text-muted text-sm me-2' }, `${(0, d3_format_1.format)(',')(numRows)} rows`) : undefined,
|
|
280
280
|
renderDeleteRows(),
|
|
281
281
|
renderFindReplace(),
|
|
282
282
|
renderCellEdit(),
|
|
@@ -342,8 +342,28 @@ exports.default = (0, react_1.forwardRef)(function DatagridComponent(props, ref)
|
|
|
342
342
|
return (react_1.default.createElement(DatagridViewComponent_1.default, { ref: datagridViewRef, width: size.width - 1, height: size.height - 1, pageSize: 100, schema: schema, dataSource: dataSource, datagridDataSource: datagridDataSource, design: cleanedDesign, filters: activeFilters, onDesignChange: onDesignChange, onRowClick: onRowClick, onRowDoubleClick: onRowDoubleClick, selectedRows: dataEditingEnabled && props.onRowsDelete != null ? selectedRows : undefined, onSelectedRowsChange: dataEditingEnabled && props.onRowsDelete != null ? setSelectedRows : undefined, canEditExpr: dataEditingEnabled ? canEditExpr : undefined, updateExprValues: dataEditingEnabled ? updateExprValues : undefined, refreshKey: refreshKey }));
|
|
343
343
|
}
|
|
344
344
|
else if (onDesignChange) {
|
|
345
|
-
return (react_1.default.createElement("div", { style: {
|
|
346
|
-
|
|
345
|
+
return (react_1.default.createElement("div", { style: {
|
|
346
|
+
display: "flex",
|
|
347
|
+
flexDirection: "column",
|
|
348
|
+
alignItems: "center",
|
|
349
|
+
justifyContent: "center",
|
|
350
|
+
height: "100%",
|
|
351
|
+
padding: "40px"
|
|
352
|
+
} },
|
|
353
|
+
react_1.default.createElement("div", { style: {
|
|
354
|
+
textAlign: "center",
|
|
355
|
+
marginBottom: "24px"
|
|
356
|
+
} },
|
|
357
|
+
react_1.default.createElement("i", { className: "fas fa-table text-muted", style: {
|
|
358
|
+
fontSize: "48px",
|
|
359
|
+
marginBottom: "16px"
|
|
360
|
+
} }),
|
|
361
|
+
react_1.default.createElement("div", { style: {
|
|
362
|
+
fontSize: "14px"
|
|
363
|
+
}, className: "text-muted" }, T `Configure a data source and columns to get started.`)),
|
|
364
|
+
react_1.default.createElement("button", { className: "btn btn-primary", onClick: handleEdit },
|
|
365
|
+
react_1.default.createElement("i", { className: "fas fa-cog", style: { marginRight: "8px" } }),
|
|
366
|
+
T `Configure`)));
|
|
347
367
|
}
|
|
348
368
|
else {
|
|
349
369
|
return null;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { DataSource, Schema } from "@mwater/expressions";
|
|
3
|
-
import TabbedComponent from "@mwater/react-library/lib/TabbedComponent";
|
|
4
3
|
import { DatagridDesign } from "..";
|
|
5
4
|
export interface DatagridDesignerComponentProps {
|
|
6
5
|
/** schema to use */
|
|
@@ -18,6 +17,6 @@ export default class DatagridDesignerComponent extends React.Component<DatagridD
|
|
|
18
17
|
handleFilterChange: (filter: any) => void;
|
|
19
18
|
handleGlobalFiltersChange: (globalFilters: any) => void;
|
|
20
19
|
handleOrderBysChange: (orderBys: any) => void;
|
|
21
|
-
renderTabs(): React.
|
|
22
|
-
render(): React.
|
|
20
|
+
renderTabs(): React.JSX.Element;
|
|
21
|
+
render(): React.JSX.Element;
|
|
23
22
|
}
|