@mwater/visualization 5.5.0 → 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/MWaterGlobalFiltersComponent.d.ts +2 -2
- package/lib/MWaterGlobalFiltersComponent.js +11 -20
- package/lib/MWaterLoaderComponent.d.ts +4 -13
- package/lib/MWaterLoaderComponent.js +2 -11
- package/lib/UndoStack.d.ts +2 -1
- package/lib/UndoStack.js +12 -6
- package/lib/dashboards/DashboardComponent.js +5 -4
- package/lib/dashboards/DashboardDesign.d.ts +1 -1
- package/lib/dashboards/ServerDashboardDataSource.js +0 -10
- package/lib/dashboards/SettingsModalComponent.js +1 -1
- package/lib/datagrids/DatagridComponent.js +22 -2
- 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/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.js +12 -0
- package/lib/maps/BufferLayerDesign.d.ts +1 -1
- package/lib/maps/BufferLayerDesignerComponent.js +2 -2
- package/lib/maps/ChoroplethLayer.js +12 -0
- package/lib/maps/ChoroplethLayerDesign.d.ts +5 -2
- package/lib/maps/ChoroplethLayerDesigner.d.ts +10 -32
- package/lib/maps/ChoroplethLayerDesigner.js +58 -89
- package/lib/maps/DirectMapDataSource.js +0 -10
- package/lib/maps/EditHoverOver.d.ts +4 -3
- package/lib/maps/EditHoverOver.js +3 -3
- package/lib/maps/HoverContent.js +1 -1
- package/lib/maps/LeafletMapComponent.js +10 -19
- package/lib/maps/MapComponent.js +0 -1
- package/lib/maps/MapUtils.js +10 -1
- package/lib/maps/MarkersLayer.js +18 -2
- package/lib/maps/MarkersLayerDesign.d.ts +1 -1
- package/lib/maps/MarkersLayerDesignerComponent.d.ts +12 -41
- package/lib/maps/MarkersLayerDesignerComponent.js +81 -111
- package/lib/maps/ServerMapDataSource.js +0 -10
- package/lib/maps/VectorMapViewComponent.js +1 -9
- 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/IndicatorsListComponent.d.ts +4 -2
- package/lib/mwater_table_selection/IndicatorsListComponent.js +103 -34
- 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 +26 -0
- package/lib/mwater_table_selection/MWaterCompleteTableSelectComponent.js +237 -51
- package/lib/mwater_table_selection/MWaterTableSelectComponent.d.ts +2 -2
- package/lib/mwater_table_selection/MWaterTableSelectComponent.js +9 -4
- 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/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 +2 -3
- package/src/MWaterContextComponent.tsx +1 -1
- package/src/{MWaterGlobalFiltersComponent.ts → MWaterGlobalFiltersComponent.tsx} +32 -33
- package/src/{MWaterLoaderComponent.ts → MWaterLoaderComponent.tsx} +17 -18
- package/src/UndoStack.ts +14 -6
- package/src/dashboards/DashboardComponent.tsx +5 -4
- package/src/dashboards/DashboardDesign.ts +1 -1
- package/src/dashboards/ServerDashboardDataSource.ts +0 -12
- package/src/dashboards/SettingsModalComponent.tsx +1 -1
- package/src/datagrids/DatagridComponent.tsx +30 -2
- package/src/datagrids/DatagridDesignerComponent.tsx +241 -229
- package/src/datagrids/DatagridViewComponent.tsx +3 -2
- 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 +14 -1
- package/src/maps/BufferLayerDesign.ts +1 -1
- package/src/maps/BufferLayerDesignerComponent.tsx +2 -1
- package/src/maps/ChoroplethLayer.ts +20 -7
- package/src/maps/ChoroplethLayerDesign.ts +5 -2
- package/src/maps/ChoroplethLayerDesigner.tsx +169 -165
- package/src/maps/DirectMapDataSource.ts +0 -12
- package/src/maps/EditHoverOver.tsx +9 -5
- package/src/maps/HoverContent.tsx +1 -1
- package/src/maps/LeafletMapComponent.tsx +10 -19
- package/src/maps/MapComponent.ts +0 -1
- package/src/maps/MapUtils.ts +13 -1
- package/src/maps/MarkersLayer.ts +22 -5
- package/src/maps/MarkersLayerDesign.ts +1 -1
- package/src/maps/MarkersLayerDesignerComponent.tsx +360 -0
- package/src/maps/ServerMapDataSource.ts +0 -12
- package/src/maps/VectorMapViewComponent.tsx +2 -13
- 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/IndicatorsListComponent.tsx +165 -37
- package/src/mwater_table_selection/MWaterCalculatedDataSourcesListComponent.tsx +111 -0
- package/src/mwater_table_selection/MWaterCompleteTableSelectComponent.tsx +373 -37
- package/src/mwater_table_selection/MWaterTableSelectComponent.tsx +12 -8
- 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/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 -3
- package/.storybook/webpack.config.js +0 -15
- package/src/maps/BingLayer.ts +0 -146
- package/src/maps/MarkersLayerDesignerComponent.ts +0 -374
- package/src/quickfilter/TextLiteralComponent.ts +0 -165
- package/stories/UpdateableComponent.js +0 -29
- package/stories/consoles.js +0 -202
- package/stories/dashboards.js +0 -217
- package/stories/datagridDesign.js +0 -114
- package/stories/datagrids.js +0 -69
- package/stories/dates.js +0 -80
- package/stories/exprcomponent.js +0 -43
- package/stories/index.js +0 -18
- package/stories/leaflet.js +0 -59
- package/stories/maps.js +0 -24
- package/stories/pivotChart.js +0 -235
package/lib/maps/MapUtils.js
CHANGED
|
@@ -164,20 +164,29 @@ function getTranslatableStrings(design, schema) {
|
|
|
164
164
|
*/
|
|
165
165
|
async function getSimpleHoverOverData(options) {
|
|
166
166
|
const { id, table, filters, schema, dataSource, hoverOverItems } = options;
|
|
167
|
+
const exprUtils = new expressions_1.ExprUtils(schema);
|
|
167
168
|
const exprCompiler = new expressions_1.ExprCompiler(schema);
|
|
168
169
|
const query = {
|
|
169
170
|
type: "query",
|
|
170
171
|
selects: [],
|
|
171
172
|
from: exprCompiler.compileTable(table, "main"),
|
|
173
|
+
groupBy: [],
|
|
172
174
|
limit: 1
|
|
173
175
|
};
|
|
174
|
-
|
|
176
|
+
// Check if any items are aggregate
|
|
177
|
+
const isAggregate = hoverOverItems.some(item => exprUtils.getExprAggrStatus(item.value ?? null) === "aggregate");
|
|
178
|
+
for (let i = 0; i < hoverOverItems.length; i++) {
|
|
179
|
+
const item = hoverOverItems[i];
|
|
175
180
|
if (item.value) {
|
|
176
181
|
query.selects.push({
|
|
177
182
|
type: "select",
|
|
178
183
|
expr: exprCompiler.compileExpr({ expr: item.value, tableAlias: "main" }),
|
|
179
184
|
alias: item.id
|
|
180
185
|
});
|
|
186
|
+
// Group by if there are aggregate items and this is not aggregate
|
|
187
|
+
if (isAggregate && exprUtils.getExprAggrStatus(item.value) !== "aggregate") {
|
|
188
|
+
query.groupBy.push(i + 1);
|
|
189
|
+
}
|
|
181
190
|
}
|
|
182
191
|
}
|
|
183
192
|
if (filters) {
|
package/lib/maps/MarkersLayer.js
CHANGED
|
@@ -121,6 +121,8 @@ class MarkersLayer extends Layer_1.default {
|
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
else {
|
|
124
|
+
// For some reason, scales down from 20 to 14. No idea why
|
|
125
|
+
const iconSize = (design.markerSize || 10) / 14;
|
|
124
126
|
mapLayers.push({
|
|
125
127
|
id: `${sourceId}:points`,
|
|
126
128
|
type: "symbol",
|
|
@@ -129,11 +131,13 @@ class MarkersLayer extends Layer_1.default {
|
|
|
129
131
|
layout: {
|
|
130
132
|
"icon-image": design.symbol,
|
|
131
133
|
"icon-allow-overlap": true,
|
|
132
|
-
"icon-size":
|
|
134
|
+
"icon-size": iconSize,
|
|
133
135
|
},
|
|
134
136
|
paint: {
|
|
135
137
|
"icon-color": color,
|
|
136
|
-
"icon-opacity": opacity
|
|
138
|
+
"icon-opacity": opacity,
|
|
139
|
+
"icon-halo-color": (0, mapboxUtils_1.compileColorToMapbox)("#FFFFFFCC", design.axes.color?.excludedValues),
|
|
140
|
+
"icon-halo-width": iconSize * 5,
|
|
137
141
|
},
|
|
138
142
|
filter: addFilter(["==", ["geometry-type"], "Point"])
|
|
139
143
|
});
|
|
@@ -662,6 +666,18 @@ ${design.polygonBorderColor ? "line-color: " + design.polygonBorderColor + ";" :
|
|
|
662
666
|
aggrNeed: "none"
|
|
663
667
|
});
|
|
664
668
|
draft.filter = exprCleaner.cleanExpr(design.filter || null, { table: draft.table });
|
|
669
|
+
// Clean hover over expressions
|
|
670
|
+
if (design.table && design.hoverOver && design.hoverOver.items) {
|
|
671
|
+
for (let i = 0; i < design.hoverOver.items.length; i++) {
|
|
672
|
+
const item = design.hoverOver.items[i];
|
|
673
|
+
if (item.value) {
|
|
674
|
+
draft.hoverOver.items[i].value = exprCleaner.cleanExpr(item.value || null, {
|
|
675
|
+
table: design.table,
|
|
676
|
+
aggrStatuses: ["individual", "literal"]
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
665
681
|
});
|
|
666
682
|
return design;
|
|
667
683
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { DataSource, Schema } from "@mwater/expressions";
|
|
3
|
-
import EditPopupComponent from "./EditPopupComponent";
|
|
4
|
-
import MarkerSymbolSelectComponent from "./MarkerSymbolSelectComponent";
|
|
5
3
|
import { MarkersLayerDesign } from "./MarkersLayerDesign";
|
|
6
4
|
export interface MarkersLayerDesignerComponentProps {
|
|
7
5
|
/** Schema to use */
|
|
@@ -27,43 +25,16 @@ export default class MarkersLayerDesignerComponent extends React.Component<Marke
|
|
|
27
25
|
handleNameChange: (e: any) => any;
|
|
28
26
|
handleMarkerSizeChange: (markerSize: any) => any;
|
|
29
27
|
handleLineWidthChange: (lineWidth: any) => any;
|
|
30
|
-
renderTable(): React.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
className: string;
|
|
43
|
-
}, HTMLElement> | undefined;
|
|
44
|
-
renderPolygonBorderColor(): React.DetailedReactHTMLElement<{
|
|
45
|
-
className: string;
|
|
46
|
-
}, HTMLElement> | undefined;
|
|
47
|
-
renderPolygonFillOpacity(): React.DetailedReactHTMLElement<{
|
|
48
|
-
className: string;
|
|
49
|
-
}, HTMLElement> | undefined;
|
|
50
|
-
renderFilter(): React.DetailedReactHTMLElement<{
|
|
51
|
-
className: string;
|
|
52
|
-
}, HTMLElement> | null;
|
|
53
|
-
renderPopup(): React.CElement<any, EditPopupComponent> | null;
|
|
54
|
-
renderHoverOver(): React.FunctionComponentElement<{
|
|
55
|
-
design: MarkersLayerDesign;
|
|
56
|
-
onDesignChange: any;
|
|
57
|
-
schema: Schema;
|
|
58
|
-
dataSource: DataSource;
|
|
59
|
-
table: string;
|
|
60
|
-
idTable: string;
|
|
61
|
-
defaultPopupFilterJoins: {
|
|
62
|
-
[x: number]: {
|
|
63
|
-
table: any;
|
|
64
|
-
type: string;
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
}> | null;
|
|
68
|
-
render(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
28
|
+
renderTable(): React.JSX.Element;
|
|
29
|
+
renderGeometryAxis(): React.JSX.Element | undefined;
|
|
30
|
+
renderColor(): React.JSX.Element | undefined;
|
|
31
|
+
renderSymbol(): React.JSX.Element | undefined;
|
|
32
|
+
renderMarkerSize(): React.JSX.Element | undefined;
|
|
33
|
+
renderLineWidth(): React.JSX.Element | undefined;
|
|
34
|
+
renderPolygonBorderColor(): React.JSX.Element | undefined;
|
|
35
|
+
renderPolygonFillOpacity(): React.JSX.Element | undefined;
|
|
36
|
+
renderFilter(): React.JSX.Element | null;
|
|
37
|
+
renderPopup(): React.JSX.Element | null;
|
|
38
|
+
renderHoverOver(): React.JSX.Element | null;
|
|
39
|
+
render(): React.JSX.Element;
|
|
69
40
|
}
|
|
@@ -28,10 +28,9 @@ 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 expressions_ui_1 = require("@mwater/expressions-ui");
|
|
33
32
|
const expressions_1 = require("@mwater/expressions");
|
|
34
|
-
const AxisComponent_1 = __importDefault(require("
|
|
33
|
+
const AxisComponent_1 = __importDefault(require("../axes/AxisComponent"));
|
|
35
34
|
const ColorComponent_1 = __importDefault(require("../ColorComponent"));
|
|
36
35
|
const expressions_ui_2 = require("@mwater/expressions-ui");
|
|
37
36
|
const EditPopupComponent_1 = __importDefault(require("./EditPopupComponent"));
|
|
@@ -39,7 +38,7 @@ const ZoomLevelsComponent_1 = __importDefault(require("./ZoomLevelsComponent"));
|
|
|
39
38
|
const MarkerSymbolSelectComponent_1 = __importDefault(require("./MarkerSymbolSelectComponent"));
|
|
40
39
|
const PopupFilterJoinsUtils = __importStar(require("./PopupFilterJoinsUtils"));
|
|
41
40
|
const ui = __importStar(require("@mwater/react-library/lib/bootstrap"));
|
|
42
|
-
const EditHoverOver_1 =
|
|
41
|
+
const EditHoverOver_1 = require("./EditHoverOver");
|
|
43
42
|
const rc_slider_1 = __importDefault(require("rc-slider"));
|
|
44
43
|
// Designer for a markers layer
|
|
45
44
|
class MarkersLayerDesignerComponent extends react_1.default.Component {
|
|
@@ -86,19 +85,22 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
|
|
|
86
85
|
return this.update({ lineWidth });
|
|
87
86
|
};
|
|
88
87
|
renderTable() {
|
|
89
|
-
return
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
88
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
89
|
+
react_1.default.createElement("label", { className: "text-muted" },
|
|
90
|
+
react_1.default.createElement("i", { className: "fa fa-database" }),
|
|
91
|
+
" ",
|
|
92
|
+
T `Data Source`),
|
|
93
|
+
react_1.default.createElement("div", { style: { marginLeft: 10 } },
|
|
94
|
+
react_1.default.createElement(expressions_ui_2.TableSelectComponent, { schema: this.props.schema, value: this.props.design.table, onChange: this.handleTableChange, filter: this.props.design.filter, onFilterChange: this.handleFilterChange }))));
|
|
96
95
|
}
|
|
97
96
|
renderGeometryAxis() {
|
|
98
97
|
if (!this.props.design.table) {
|
|
99
98
|
return;
|
|
100
99
|
}
|
|
101
|
-
const title =
|
|
100
|
+
const title = react_1.default.createElement("span", null,
|
|
101
|
+
react_1.default.createElement("span", { className: "fas fa-map-marker-alt" }),
|
|
102
|
+
" ",
|
|
103
|
+
T `Location`);
|
|
102
104
|
const filters = lodash_1.default.clone(this.props.filters) || [];
|
|
103
105
|
if (this.props.design.filter != null) {
|
|
104
106
|
const exprCompiler = new expressions_1.ExprCompiler(this.props.schema);
|
|
@@ -107,16 +109,10 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
|
|
|
107
109
|
filters.push({ table: this.props.design.filter.table, jsonql });
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
|
-
return
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
types: ["geometry"],
|
|
115
|
-
aggrNeed: "none",
|
|
116
|
-
value: this.props.design.axes.geometry,
|
|
117
|
-
onChange: this.handleGeometryAxisChange,
|
|
118
|
-
filters
|
|
119
|
-
})));
|
|
112
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
113
|
+
react_1.default.createElement("label", { className: "text-muted" }, title),
|
|
114
|
+
react_1.default.createElement("div", { style: { marginLeft: 10 } },
|
|
115
|
+
react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["geometry"], aggrNeed: "none", value: this.props.design.axes.geometry, onChange: this.handleGeometryAxisChange, filters: filters }))));
|
|
120
116
|
}
|
|
121
117
|
renderColor() {
|
|
122
118
|
if (!this.props.design.axes.geometry) {
|
|
@@ -130,140 +126,114 @@ class MarkersLayerDesignerComponent extends react_1.default.Component {
|
|
|
130
126
|
filters.push({ table: this.props.design.filter.table, jsonql });
|
|
131
127
|
}
|
|
132
128
|
}
|
|
133
|
-
return
|
|
134
|
-
?
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
defaultColor: this.props.design.color,
|
|
146
|
-
showColorMap: true,
|
|
147
|
-
onChange: this.handleColorAxisChange,
|
|
148
|
-
allowExcludedValues: true,
|
|
149
|
-
filters
|
|
150
|
-
})));
|
|
129
|
+
return (react_1.default.createElement("div", null,
|
|
130
|
+
!this.props.design.axes.color ? (react_1.default.createElement("div", { className: "mb-3" },
|
|
131
|
+
react_1.default.createElement("label", { className: "text-muted" },
|
|
132
|
+
react_1.default.createElement("span", { className: "fas fa-tint" }),
|
|
133
|
+
T `Color`),
|
|
134
|
+
react_1.default.createElement("div", null,
|
|
135
|
+
react_1.default.createElement(ColorComponent_1.default, { color: this.props.design.color, onChange: this.handleColorChange })))) : undefined,
|
|
136
|
+
react_1.default.createElement("div", { className: "mb-3" },
|
|
137
|
+
react_1.default.createElement("label", { className: "text-muted" },
|
|
138
|
+
react_1.default.createElement("span", { className: "fas fa-tint" }),
|
|
139
|
+
T `Color By Data`),
|
|
140
|
+
react_1.default.createElement(AxisComponent_1.default, { schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, types: ["text", "enum", "boolean", "date"], aggrNeed: "none", value: this.props.design.axes.color, defaultColor: this.props.design.color, showColorMap: true, onChange: this.handleColorAxisChange, allowExcludedValues: true, filters: filters }))));
|
|
151
141
|
}
|
|
152
142
|
renderSymbol() {
|
|
153
143
|
if (!this.props.design.axes.geometry) {
|
|
154
144
|
return;
|
|
155
145
|
}
|
|
156
|
-
return
|
|
146
|
+
return react_1.default.createElement(MarkerSymbolSelectComponent_1.default, { symbol: this.props.design.symbol, onChange: this.handleSymbolChange });
|
|
157
147
|
}
|
|
158
148
|
renderMarkerSize() {
|
|
159
149
|
if (!this.props.design.axes.geometry) {
|
|
160
150
|
return;
|
|
161
151
|
}
|
|
162
|
-
return
|
|
163
|
-
|
|
164
|
-
options: [
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
onChange: this.handleMarkerSizeChange
|
|
172
|
-
}));
|
|
152
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
153
|
+
react_1.default.createElement("label", { className: "text-muted" }, T `Marker Size`),
|
|
154
|
+
react_1.default.createElement(ui.Select, { value: this.props.design.markerSize || 10, options: [
|
|
155
|
+
{ value: 5, label: T `Extra small` },
|
|
156
|
+
{ value: 8, label: T `Small` },
|
|
157
|
+
{ value: 10, label: T `Normal` },
|
|
158
|
+
{ value: 13, label: T `Large` },
|
|
159
|
+
{ value: 16, label: T `Extra large` }
|
|
160
|
+
], onChange: this.handleMarkerSizeChange })));
|
|
173
161
|
}
|
|
174
162
|
renderLineWidth() {
|
|
175
163
|
if (!this.props.design.axes.geometry) {
|
|
176
164
|
return;
|
|
177
165
|
}
|
|
178
|
-
return
|
|
179
|
-
|
|
180
|
-
options: [
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
onChange: this.handleLineWidthChange
|
|
190
|
-
}));
|
|
166
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
167
|
+
react_1.default.createElement("label", { className: "text-muted" }, T `Line Width (for shapes)`),
|
|
168
|
+
react_1.default.createElement(ui.Select, { value: this.props.design.lineWidth != null ? this.props.design.lineWidth : 3, options: [
|
|
169
|
+
{ value: 0, label: T `None` },
|
|
170
|
+
{ value: 1, label: T `1 pixel` },
|
|
171
|
+
{ value: 2, label: T `2 pixels` },
|
|
172
|
+
{ value: 3, label: T `3 pixels` },
|
|
173
|
+
{ value: 4, label: T `4 pixels` },
|
|
174
|
+
{ value: 5, label: T `5 pixels` },
|
|
175
|
+
{ value: 6, label: T `6 pixels` }
|
|
176
|
+
], onChange: this.handleLineWidthChange })));
|
|
191
177
|
}
|
|
192
178
|
renderPolygonBorderColor() {
|
|
193
179
|
if (!this.props.design.axes.geometry) {
|
|
194
180
|
return;
|
|
195
181
|
}
|
|
196
|
-
return
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
182
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
183
|
+
react_1.default.createElement("label", { className: "text-muted" }, T `Polygon border color (blank for same as fill color)`),
|
|
184
|
+
react_1.default.createElement("div", null,
|
|
185
|
+
react_1.default.createElement(ColorComponent_1.default, { color: this.props.design.polygonBorderColor, onChange: this.handlePolygonBorderColorChange }))));
|
|
200
186
|
}
|
|
201
187
|
renderPolygonFillOpacity() {
|
|
202
188
|
if (!this.props.design.axes.geometry) {
|
|
203
189
|
return;
|
|
204
190
|
}
|
|
205
191
|
const opacity = this.props.design.polygonFillOpacity != null ? this.props.design.polygonFillOpacity : 0.25;
|
|
206
|
-
return
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
value: opacity * 100,
|
|
212
|
-
onChange: this.handlePolygonFillOpacityChange
|
|
213
|
-
})));
|
|
192
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
193
|
+
react_1.default.createElement("label", { className: "text-muted" },
|
|
194
|
+
react_1.default.createElement("span", null, T `Polygon Fill Opacity: ${Math.round(opacity * 100)}%`)),
|
|
195
|
+
react_1.default.createElement("div", { style: { padding: "10px" } },
|
|
196
|
+
react_1.default.createElement(rc_slider_1.default, { min: 0, max: 100, step: 1, tipTransitionName: "rc-slider-tooltip-zoom-down", value: opacity * 100, onChange: this.handlePolygonFillOpacityChange }))));
|
|
214
197
|
}
|
|
215
198
|
renderFilter() {
|
|
216
199
|
// If no data, hide
|
|
217
200
|
if (!this.props.design.axes.geometry) {
|
|
218
201
|
return null;
|
|
219
202
|
}
|
|
220
|
-
return
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
})));
|
|
203
|
+
return (react_1.default.createElement("div", { className: "mb-3" },
|
|
204
|
+
react_1.default.createElement("label", { className: "text-muted" },
|
|
205
|
+
react_1.default.createElement("span", { className: "fas fa-filter" }),
|
|
206
|
+
T `Filters`),
|
|
207
|
+
react_1.default.createElement("div", { style: { marginLeft: 8 } },
|
|
208
|
+
react_1.default.createElement(expressions_ui_1.FilterExprComponent, { schema: this.props.schema, dataSource: this.props.dataSource, onChange: this.handleFilterChange, table: this.props.design.table, value: this.props.design.filter }))));
|
|
227
209
|
}
|
|
228
210
|
renderPopup() {
|
|
229
211
|
if (!this.props.design.table) {
|
|
230
212
|
return null;
|
|
231
213
|
}
|
|
232
|
-
return
|
|
233
|
-
design: this.props.design,
|
|
234
|
-
onDesignChange: this.props.onDesignChange,
|
|
235
|
-
schema: this.props.schema,
|
|
236
|
-
dataSource: this.props.dataSource,
|
|
237
|
-
table: this.props.design.table,
|
|
238
|
-
idTable: this.props.design.table,
|
|
239
|
-
defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table)
|
|
240
|
-
});
|
|
214
|
+
return (react_1.default.createElement(EditPopupComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table) }));
|
|
241
215
|
}
|
|
242
216
|
renderHoverOver() {
|
|
243
217
|
if (!this.props.design.table) {
|
|
244
218
|
return null;
|
|
245
219
|
}
|
|
246
|
-
return
|
|
247
|
-
design: this.props.design,
|
|
248
|
-
onDesignChange: this.props.onDesignChange,
|
|
249
|
-
schema: this.props.schema,
|
|
250
|
-
dataSource: this.props.dataSource,
|
|
251
|
-
table: this.props.design.table,
|
|
252
|
-
idTable: this.props.design.table,
|
|
253
|
-
defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table)
|
|
254
|
-
});
|
|
220
|
+
return (react_1.default.createElement(EditHoverOver_1.EditHoverOver, { design: this.props.design, onDesignChange: this.props.onDesignChange, schema: this.props.schema, dataSource: this.props.dataSource, table: this.props.design.table, idTable: this.props.design.table, defaultPopupFilterJoins: PopupFilterJoinsUtils.createDefaultPopupFilterJoins(this.props.design.table), aggrStatuses: ["individual", "literal"] }));
|
|
255
221
|
}
|
|
256
222
|
render() {
|
|
257
|
-
return
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
this.
|
|
262
|
-
this.
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
223
|
+
return (react_1.default.createElement("div", null,
|
|
224
|
+
this.renderTable(),
|
|
225
|
+
this.renderGeometryAxis(),
|
|
226
|
+
this.renderColor(),
|
|
227
|
+
this.renderSymbol(),
|
|
228
|
+
this.renderMarkerSize(),
|
|
229
|
+
react_1.default.createElement(ui.CollapsibleSection, { label: T `Shape Options`, labelMuted: true },
|
|
230
|
+
this.renderLineWidth(),
|
|
231
|
+
this.renderPolygonBorderColor(),
|
|
232
|
+
this.renderPolygonFillOpacity()),
|
|
233
|
+
this.renderFilter(),
|
|
234
|
+
this.renderPopup(),
|
|
235
|
+
this.renderHoverOver(),
|
|
236
|
+
this.props.design.table ? (react_1.default.createElement(ZoomLevelsComponent_1.default, { design: this.props.design, onDesignChange: this.props.onDesignChange })) : undefined));
|
|
267
237
|
}
|
|
268
238
|
}
|
|
269
239
|
exports.default = MarkersLayerDesignerComponent;
|
|
@@ -144,22 +144,12 @@ class ServerLayerDataSource {
|
|
|
144
144
|
rev: this.options.rev
|
|
145
145
|
};
|
|
146
146
|
let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?` + querystring_1.default.stringify(query);
|
|
147
|
-
// Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
|
|
148
|
-
// Used to speed queries
|
|
149
|
-
if (url.match(/^https:\/\/api\.mwater\.co\//)) {
|
|
150
|
-
url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
|
|
151
|
-
}
|
|
152
147
|
return url;
|
|
153
148
|
}
|
|
154
149
|
// Create query string
|
|
155
150
|
createLegacyUrl(design, extension, filters) {
|
|
156
151
|
let where;
|
|
157
152
|
let url = `${this.options.apiUrl}maps/tiles/{z}/{x}/{y}.${extension}?type=${design.type}&radius=1000`;
|
|
158
|
-
// Add subdomains: {s} will be substituted with "a", "b" or "c" in leaflet for api.mwater.co only.
|
|
159
|
-
// Used to speed queries
|
|
160
|
-
if (url.match(/^https:\/\/api\.mwater\.co\//)) {
|
|
161
|
-
url = url.replace(/^https:\/\/api\.mwater\.co\//, "https://{s}-api.mwater.co/");
|
|
162
|
-
}
|
|
163
153
|
if (this.options.client) {
|
|
164
154
|
url += `&client=${this.options.client}`;
|
|
165
155
|
}
|
|
@@ -230,17 +230,9 @@ function VectorMapViewComponent(props) {
|
|
|
230
230
|
else {
|
|
231
231
|
const tileUrl = props.mapDataSource.getLayerDataSource(layerView.id).getTileUrl(design, []);
|
|
232
232
|
if (tileUrl) {
|
|
233
|
-
// Replace "{s}" with "a", "b", "c"
|
|
234
|
-
let tiles = [];
|
|
235
|
-
if (tileUrl.includes("{s}")) {
|
|
236
|
-
tiles = [tileUrl.replace("{s}", "a"), tileUrl.replace("{s}", "b"), tileUrl.replace("{s}", "c")];
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
tiles = [tileUrl];
|
|
240
|
-
}
|
|
241
233
|
newSources[layerView.id] = {
|
|
242
234
|
type: "raster",
|
|
243
|
-
tiles,
|
|
235
|
+
tiles: [tileUrl],
|
|
244
236
|
tileSize: 256
|
|
245
237
|
};
|
|
246
238
|
newLayers.push({
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|