@evergis/react 3.1.124 → 3.1.126-alpha.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/dist/components/Dashboard/components/AddFeatureButton/index.d.ts +2 -2
- package/dist/components/Dashboard/hooks/useDataSources.d.ts +2 -2
- package/dist/components/Dashboard/hooks/useEditControl.d.ts +6 -0
- package/dist/components/Dashboard/types.d.ts +7 -11
- package/dist/components/Dashboard/utils/getControlTemplateName.d.ts +2 -2
- package/dist/components/Layer/types.d.ts +2 -2
- package/dist/components/Layer/utils/getClientStyleItemPrefixSuffix.d.ts +2 -2
- package/dist/core/index.d.ts +0 -1
- package/dist/hooks/map/useLayerParams.d.ts +1 -2
- package/dist/index.js +172 -166
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +175 -168
- package/dist/react.esm.js.map +1 -1
- package/dist/types/layer.d.ts +2 -2
- package/package.json +4 -4
- package/dist/components/Dashboard/hooks/useEditAttribute.d.ts +0 -6
- package/dist/core/feature/convertSpToTurfFeature.d.ts +0 -3
- package/dist/core/feature/index.d.ts +0 -1
package/dist/react.esm.js
CHANGED
|
@@ -3,7 +3,7 @@ import { IconButton, Flex, transition, Chip, Icon, Description, FlexSpan, IconTo
|
|
|
3
3
|
import { createContext, memo, useRef, useState, useCallback, useEffect, useContext, useMemo, Fragment } from 'react';
|
|
4
4
|
import styled, { createGlobalStyle, css, useTheme } from 'styled-components';
|
|
5
5
|
import { lineChartClassNames, BarChart as BarChart$1, barChartClassNames, LineChart, PieChart } from '@evergis/charts';
|
|
6
|
-
import { AttributeType, generateId, STORAGE_TOKEN_KEY,
|
|
6
|
+
import { AttributeType, generateId, STORAGE_TOKEN_KEY, OgcGeometryType, RemoteTaskStatus } from '@evergis/api';
|
|
7
7
|
import Gradient from 'javascript-color-gradient';
|
|
8
8
|
import { Color as Color$1 } from '@evergis/color';
|
|
9
9
|
import { isValid, format, parseJSON, parseISO, toDate } from 'date-fns';
|
|
@@ -15,7 +15,7 @@ import { changeProps, returnFound } from 'find-and';
|
|
|
15
15
|
import { jsPDF } from 'jspdf';
|
|
16
16
|
import html2canvas from 'html2canvas';
|
|
17
17
|
import MapboxDraw from '@mapbox/mapbox-gl-draw';
|
|
18
|
-
import {
|
|
18
|
+
import { bbox } from '@turf/turf';
|
|
19
19
|
import MapGL, { Source, Layer as Layer$1 } from 'react-map-gl/maplibre';
|
|
20
20
|
import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
|
|
21
21
|
import 'mapbox-gl/dist/mapbox-gl.css';
|
|
@@ -4262,11 +4262,11 @@ const getDataSource = (dataSourceName, dataSources) => dataSources?.find(({ name
|
|
|
4262
4262
|
const getDataSourceFilterValue = ({ filterName, filterProp, attributeAlias, dataSource, selectedFilters, }) => {
|
|
4263
4263
|
if (isNil(selectedFilters[filterName]))
|
|
4264
4264
|
return null;
|
|
4265
|
-
const feature = dataSource?.features?.find(({
|
|
4265
|
+
const feature = dataSource?.features?.find(({ properties }) => properties[attributeAlias] ===
|
|
4266
4266
|
(Array.isArray(selectedFilters[filterName].value)
|
|
4267
4267
|
? selectedFilters[filterName].value[0]
|
|
4268
4268
|
: selectedFilters[filterName].value));
|
|
4269
|
-
return feature?.
|
|
4269
|
+
return feature?.properties?.[filterProp];
|
|
4270
4270
|
};
|
|
4271
4271
|
|
|
4272
4272
|
const getSelectedFilterValue = (filterName, selectedFilters, defaultValue) => {
|
|
@@ -4384,9 +4384,12 @@ const createConfigPage = (props) => {
|
|
|
4384
4384
|
};
|
|
4385
4385
|
|
|
4386
4386
|
const getAttributesConfiguration = (layer) => {
|
|
4387
|
-
const configuration = layer?.configuration ??
|
|
4387
|
+
const configuration = layer?.configuration ??
|
|
4388
|
+
{};
|
|
4388
4389
|
const emptyAttributesConfiguration = {
|
|
4389
|
-
geometryAttribute: layer?.geometryType ===
|
|
4390
|
+
geometryAttribute: layer?.geometryType === OgcGeometryType.Unknown
|
|
4391
|
+
? undefined
|
|
4392
|
+
: GEOMETRY_ATTRIBUTE,
|
|
4390
4393
|
idAttribute: DEFAULT_ID_ATTRIBUTE_NAME,
|
|
4391
4394
|
tableName: "",
|
|
4392
4395
|
};
|
|
@@ -4395,7 +4398,8 @@ const getAttributesConfiguration = (layer) => {
|
|
|
4395
4398
|
}
|
|
4396
4399
|
return {
|
|
4397
4400
|
...emptyAttributesConfiguration,
|
|
4398
|
-
...(configuration
|
|
4401
|
+
...(configuration
|
|
4402
|
+
.attributesConfiguration || {}),
|
|
4399
4403
|
};
|
|
4400
4404
|
};
|
|
4401
4405
|
|
|
@@ -4405,7 +4409,7 @@ const getLayerDefinition = (layer) => {
|
|
|
4405
4409
|
attributes: {},
|
|
4406
4410
|
geometryAttribute,
|
|
4407
4411
|
idAttribute,
|
|
4408
|
-
geometryType:
|
|
4412
|
+
geometryType: OgcGeometryType.Unknown,
|
|
4409
4413
|
titleAttribute: "",
|
|
4410
4414
|
};
|
|
4411
4415
|
if (!isLayerService(layer) || !("layerDefinition" in layer)) {
|
|
@@ -5183,73 +5187,6 @@ const useRedrawLayer = () => {
|
|
|
5183
5187
|
}, [map]);
|
|
5184
5188
|
};
|
|
5185
5189
|
|
|
5186
|
-
const findAttributeInExpression = (expression) => {
|
|
5187
|
-
if (Array.isArray(expression) && expression.length === 2 && expression[0] === "get") {
|
|
5188
|
-
return [expression[1]];
|
|
5189
|
-
}
|
|
5190
|
-
return expression.reduce((acc, curr) => {
|
|
5191
|
-
if (!Array.isArray(curr)) {
|
|
5192
|
-
return acc;
|
|
5193
|
-
}
|
|
5194
|
-
if (curr[0] === "get") {
|
|
5195
|
-
return [...new Set([...acc, curr[1]])];
|
|
5196
|
-
}
|
|
5197
|
-
return [...new Set([...acc, ...findAttributeInExpression(curr)])];
|
|
5198
|
-
}, []);
|
|
5199
|
-
};
|
|
5200
|
-
|
|
5201
|
-
const getActualExtrusionHeight = (paint) => {
|
|
5202
|
-
return Array.isArray(paint?.["fill-extrusion-height"]) && paint?.["fill-extrusion-height"][0] === "+"
|
|
5203
|
-
? paint?.["fill-extrusion-height"][1]
|
|
5204
|
-
: paint?.["fill-extrusion-height"];
|
|
5205
|
-
};
|
|
5206
|
-
|
|
5207
|
-
const extractAttributesFromObject = (obj) => {
|
|
5208
|
-
if (!obj || isEmpty(obj)) {
|
|
5209
|
-
return [];
|
|
5210
|
-
}
|
|
5211
|
-
return Object.entries(obj).reduce((acc, [, value]) => {
|
|
5212
|
-
if (!Array.isArray(value)) {
|
|
5213
|
-
return acc;
|
|
5214
|
-
}
|
|
5215
|
-
return [...new Set([...acc, ...findAttributeInExpression(value)])];
|
|
5216
|
-
}, []);
|
|
5217
|
-
};
|
|
5218
|
-
const parseClientStyle = (style) => {
|
|
5219
|
-
if (!style) {
|
|
5220
|
-
return [];
|
|
5221
|
-
}
|
|
5222
|
-
return style?.items?.reduce((acc, curr) => {
|
|
5223
|
-
const paintAttributes = extractAttributesFromObject(curr.paint);
|
|
5224
|
-
const layoutAttributes = extractAttributesFromObject(curr.layout);
|
|
5225
|
-
const filterAttributes = curr.filter
|
|
5226
|
-
? findAttributeInExpression(curr.filter)
|
|
5227
|
-
: [];
|
|
5228
|
-
return [...new Set([...acc, ...paintAttributes, ...layoutAttributes, ...filterAttributes])];
|
|
5229
|
-
}, []);
|
|
5230
|
-
};
|
|
5231
|
-
|
|
5232
|
-
const convertSpToTurfFeature = (geometry) => {
|
|
5233
|
-
if (!geometry) {
|
|
5234
|
-
return;
|
|
5235
|
-
}
|
|
5236
|
-
switch (geometry.type) {
|
|
5237
|
-
case GeometryType.Point:
|
|
5238
|
-
return point$1(geometry.coordinates);
|
|
5239
|
-
case GeometryType.Multipoint:
|
|
5240
|
-
return multiPoint(geometry.coordinates);
|
|
5241
|
-
case GeometryType.Polyline:
|
|
5242
|
-
return multiLineString(geometry.coordinates);
|
|
5243
|
-
case GeometryType.Polygon:
|
|
5244
|
-
case GeometryType.Envelope:
|
|
5245
|
-
return polygon(geometry.coordinates);
|
|
5246
|
-
case GeometryType.MultiPolygon:
|
|
5247
|
-
return multiPolygon(geometry.coordinates);
|
|
5248
|
-
case GeometryType.GeometryCollection:
|
|
5249
|
-
return geometryCollection(geometry.geometries);
|
|
5250
|
-
}
|
|
5251
|
-
};
|
|
5252
|
-
|
|
5253
5190
|
const useZoomToFeatures = () => {
|
|
5254
5191
|
const { map } = useMapContext();
|
|
5255
5192
|
return useCallback((features, padding) => {
|
|
@@ -5258,7 +5195,7 @@ const useZoomToFeatures = () => {
|
|
|
5258
5195
|
}
|
|
5259
5196
|
const currentFeatureCenter = bbox({
|
|
5260
5197
|
type: "FeatureCollection",
|
|
5261
|
-
features: features
|
|
5198
|
+
features: features,
|
|
5262
5199
|
});
|
|
5263
5200
|
map.current.fitBounds(currentFeatureCenter, { padding: padding ?? 150 });
|
|
5264
5201
|
}, [map]);
|
|
@@ -5916,9 +5853,9 @@ function getValueIndex(items, attributes) {
|
|
|
5916
5853
|
const getChartMarkers = (items, markers, dataSources) => {
|
|
5917
5854
|
if (typeof markers === "string") {
|
|
5918
5855
|
const dataSource = getDataSource(markers, dataSources);
|
|
5919
|
-
return dataSource?.features?.map(({
|
|
5920
|
-
...
|
|
5921
|
-
value: getValueIndex(items,
|
|
5856
|
+
return dataSource?.features?.map(({ properties }) => ({
|
|
5857
|
+
...properties,
|
|
5858
|
+
value: getValueIndex(items, properties),
|
|
5922
5859
|
})) || [];
|
|
5923
5860
|
}
|
|
5924
5861
|
return (markers?.map(marker => ({
|
|
@@ -6085,8 +6022,8 @@ const useRenderContainerItem = (type, renderElement) => {
|
|
|
6085
6022
|
return useCallback((elementConfig, attribute) => {
|
|
6086
6023
|
const { id, options, style, children } = elementConfig || {};
|
|
6087
6024
|
const { hideEmpty, innerTemplateStyle } = options || {};
|
|
6088
|
-
const hasUnits = children?.some(
|
|
6089
|
-
const iconIndex = children?.findIndex(
|
|
6025
|
+
const hasUnits = children?.some(item => item.id === "units");
|
|
6026
|
+
const iconIndex = children?.findIndex(item => item.id === "icon");
|
|
6090
6027
|
const icon = children?.[iconIndex];
|
|
6091
6028
|
const hasIcon = !!icon;
|
|
6092
6029
|
const elementChildren = elementConfig?.children?.map(child => ({
|
|
@@ -6355,19 +6292,19 @@ const DataSourceProgressContainer = memo(({ config, elementConfig, type, innerCo
|
|
|
6355
6292
|
const totalUnits = useMemo(() => unitsElement?.type === "attributeUnits"
|
|
6356
6293
|
? attributes?.find(({ attributeName }) => attributeName === unitsElement.attributeName)?.stringFormat
|
|
6357
6294
|
?.unitsLabel
|
|
6358
|
-
: dataSource?.features?.[0]?.
|
|
6295
|
+
: dataSource?.features?.[0]?.properties[unitsElement?.attributeName], [attributes, dataSource?.features, unitsElement?.attributeName, unitsElement?.type]);
|
|
6359
6296
|
const totalValue = useMemo(() => {
|
|
6360
6297
|
const attribute = attributes?.find(({ attributeName }) => attributeName === valueElement?.attributeName);
|
|
6361
6298
|
const { type: attributeType, stringFormat } = attribute || {};
|
|
6362
|
-
const result = dataSource?.features?.reduce((total, feature) => total + feature.
|
|
6299
|
+
const result = dataSource?.features?.reduce((total, feature) => total + feature.properties[valueElement?.attributeName], 0);
|
|
6363
6300
|
return formatAttributeValue({ t, type: attributeType, value: result, stringFormat, noUnits: !!unitsElement?.type });
|
|
6364
6301
|
}, [attributes, dataSource?.features, unitsElement?.type, valueElement?.attributeName]);
|
|
6365
6302
|
const currentMaxValue = useMemo(() => {
|
|
6366
6303
|
if (typeof maxValue === "string") {
|
|
6367
|
-
return dataSource?.features?.[0]?.
|
|
6304
|
+
return dataSource?.features?.[0]?.properties[maxValue];
|
|
6368
6305
|
}
|
|
6369
6306
|
return (maxValue ||
|
|
6370
|
-
dataSource?.features?.reduce((result, item) => Math.max(result, item.
|
|
6307
|
+
dataSource?.features?.reduce((result, item) => Math.max(result, item.properties[valueElement?.attributeName]), 0));
|
|
6371
6308
|
}, [dataSource?.features, maxValue, valueElement?.attributeName]);
|
|
6372
6309
|
if (!relatedDataSource)
|
|
6373
6310
|
return null;
|
|
@@ -7389,24 +7326,28 @@ const EditContainer = ({ type, elementConfig, renderElement }) => {
|
|
|
7389
7326
|
const getControlTemplateName = (type) => {
|
|
7390
7327
|
switch (type) {
|
|
7391
7328
|
case "dropdown":
|
|
7392
|
-
default:
|
|
7329
|
+
default:
|
|
7330
|
+
return ContainerTemplate.EditDropdown;
|
|
7393
7331
|
}
|
|
7394
7332
|
};
|
|
7395
7333
|
|
|
7396
7334
|
const EditGroupContainer = memo(({ type, elementConfig, renderElement }) => {
|
|
7397
7335
|
const { config, attributes, layerInfo, expandedContainers } = useWidgetContext(type);
|
|
7398
7336
|
const getRenderContainerItem = useRenderContainerItem(type, renderElement);
|
|
7399
|
-
const {
|
|
7400
|
-
const {
|
|
7337
|
+
const { options } = elementConfig || {};
|
|
7338
|
+
const { controls } = options || {};
|
|
7401
7339
|
const renderContainer = useCallback((attribute) => {
|
|
7402
|
-
const
|
|
7340
|
+
const control = controls?.find(({ targetAttributeName }) => targetAttributeName === attribute);
|
|
7403
7341
|
const itemAttribute = attributes.find(({ name }) => name === attribute);
|
|
7404
|
-
const templateName =
|
|
7405
|
-
? getControlTemplateName(
|
|
7342
|
+
const templateName = control?.type
|
|
7343
|
+
? getControlTemplateName(control.type)
|
|
7406
7344
|
: getTemplateNameFromAttribute(itemAttribute);
|
|
7407
7345
|
const itemConfig = {
|
|
7408
7346
|
...elementConfig,
|
|
7409
|
-
children: elementConfig.children.map(child => ({
|
|
7347
|
+
children: elementConfig.children.map(child => ({
|
|
7348
|
+
...child,
|
|
7349
|
+
attributeName: attribute,
|
|
7350
|
+
})),
|
|
7410
7351
|
templateName,
|
|
7411
7352
|
};
|
|
7412
7353
|
const { expandable, expanded } = elementConfig.options;
|
|
@@ -7416,72 +7357,84 @@ const EditGroupContainer = memo(({ type, elementConfig, renderElement }) => {
|
|
|
7416
7357
|
return null;
|
|
7417
7358
|
}
|
|
7418
7359
|
return (jsx(ContainerTemplateValue, { id: attribute, type: type, config: config, elementConfig: itemConfig, layerInfo: layerInfo, attributes: attributes, innerComponent: getContainerComponent(templateName), isVisible: isVisibleContainer(id, expandable, expanded, expandedContainers), renderElement: render }, attribute));
|
|
7419
|
-
}, [
|
|
7420
|
-
|
|
7360
|
+
}, [
|
|
7361
|
+
controls,
|
|
7362
|
+
attributes,
|
|
7363
|
+
elementConfig,
|
|
7364
|
+
getRenderContainerItem,
|
|
7365
|
+
type,
|
|
7366
|
+
config,
|
|
7367
|
+
layerInfo,
|
|
7368
|
+
expandedContainers,
|
|
7369
|
+
]);
|
|
7370
|
+
return controls?.length ? (jsx(Fragment$1, { children: controls.map(({ targetAttributeName }) => renderContainer(targetAttributeName)) })) : (renderContainer());
|
|
7421
7371
|
});
|
|
7422
7372
|
|
|
7423
|
-
const
|
|
7373
|
+
const useEditControl = (type, elementConfig) => {
|
|
7424
7374
|
const { attributes, controls, dataSources } = useWidgetContext(type);
|
|
7425
7375
|
const { children, options } = elementConfig || {};
|
|
7426
|
-
const {
|
|
7427
|
-
const
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7376
|
+
const { controls: controlsOption } = options || {};
|
|
7377
|
+
const valueElement = useMemo(() => children.find(({ id }) => id === "value"), [children]);
|
|
7378
|
+
const control = useMemo(() => controlsOption?.find(item => item.targetAttributeName === valueElement.attributeName), [controlsOption, valueElement.attributeName]);
|
|
7379
|
+
const value = useMemo(() => {
|
|
7380
|
+
const currentValue = controls[control?.targetAttributeName] === undefined
|
|
7381
|
+
? attributes.find(({ name }) => name === control.targetAttributeName)
|
|
7382
|
+
?.value
|
|
7383
|
+
: controls[control?.targetAttributeName];
|
|
7384
|
+
return currentValue ?? control?.defaultValue;
|
|
7385
|
+
}, [
|
|
7386
|
+
controls,
|
|
7387
|
+
control.targetAttributeName,
|
|
7388
|
+
control?.defaultValue,
|
|
7389
|
+
attributes,
|
|
7390
|
+
]);
|
|
7391
|
+
const dataSource = useMemo(() => dataSources?.find(({ name }) => name === control.relatedDataSource), [control.relatedDataSource, dataSources]);
|
|
7392
|
+
return useMemo(() => ({ control, value, dataSource }), [control, value, dataSource]);
|
|
7440
7393
|
};
|
|
7441
7394
|
|
|
7442
7395
|
const BASE_STYLE$2 = {
|
|
7443
7396
|
marginBottom: "1rem",
|
|
7444
7397
|
};
|
|
7445
|
-
const EditBooleanContainer = ({ type, elementConfig, renderElement }) => {
|
|
7398
|
+
const EditBooleanContainer = ({ type, elementConfig, renderElement, }) => {
|
|
7446
7399
|
const { changeControls } = useWidgetContext(type);
|
|
7447
|
-
const {
|
|
7400
|
+
const { control, value } = useEditControl(type, elementConfig);
|
|
7448
7401
|
const { id, style } = elementConfig || {};
|
|
7449
|
-
return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$2, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsxs(ContainerValue, { children: [jsx(Checkbox, { label: "\u0414\u0430", checked: !!
|
|
7450
|
-
changeControls({ [
|
|
7451
|
-
} }), jsx(Checkbox, { label: "\u041D\u0435\u0442", checked: !
|
|
7452
|
-
changeControls({ [
|
|
7402
|
+
return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$2, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsxs(ContainerValue, { children: [jsx(Checkbox, { label: "\u0414\u0430", checked: !!value, onChange: () => {
|
|
7403
|
+
changeControls({ [control.targetAttributeName]: true });
|
|
7404
|
+
} }), jsx(Checkbox, { label: "\u041D\u0435\u0442", checked: !value, onChange: () => {
|
|
7405
|
+
changeControls({ [control.targetAttributeName]: false });
|
|
7453
7406
|
} })] })] }));
|
|
7454
7407
|
};
|
|
7455
7408
|
|
|
7456
7409
|
const BASE_STYLE$1 = {
|
|
7457
7410
|
marginBottom: "1rem",
|
|
7458
7411
|
};
|
|
7459
|
-
const EditStringContainer = ({ type, elementConfig, renderElement }) => {
|
|
7412
|
+
const EditStringContainer = ({ type, elementConfig, renderElement, }) => {
|
|
7460
7413
|
const { changeControls } = useWidgetContext(type);
|
|
7461
|
-
const {
|
|
7414
|
+
const { control, value } = useEditControl(type, elementConfig);
|
|
7462
7415
|
const { id, style } = elementConfig || {};
|
|
7463
7416
|
const onChange = useCallback((e) => {
|
|
7464
|
-
changeControls({ [
|
|
7465
|
-
}, [changeControls,
|
|
7466
|
-
return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$1, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Input, { value:
|
|
7417
|
+
changeControls({ [control?.targetAttributeName]: e.target.value });
|
|
7418
|
+
}, [changeControls, control?.targetAttributeName]);
|
|
7419
|
+
return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$1, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Input, { value: value, width: "100%", onChange: onChange }) })] }));
|
|
7467
7420
|
};
|
|
7468
7421
|
|
|
7469
7422
|
const BASE_STYLE = {
|
|
7470
7423
|
marginBottom: "1rem",
|
|
7471
7424
|
};
|
|
7472
|
-
const EditDropdownContainer = ({ type, elementConfig, renderElement }) => {
|
|
7425
|
+
const EditDropdownContainer = ({ type, elementConfig, renderElement, }) => {
|
|
7473
7426
|
const { changeControls } = useWidgetContext(type);
|
|
7474
|
-
const {
|
|
7427
|
+
const { value, control, dataSource } = useEditControl(type, elementConfig);
|
|
7475
7428
|
const { id, style, options } = elementConfig || {};
|
|
7476
7429
|
const { placeholder, label, width } = options || {};
|
|
7477
7430
|
const optionsList = useMemo(() => dataSource?.features.map(item => {
|
|
7478
|
-
const
|
|
7479
|
-
return { text:
|
|
7480
|
-
}), [dataSource?.features,
|
|
7431
|
+
const currentValue = item.properties[control?.attributeName] || null;
|
|
7432
|
+
return { text: currentValue, value: currentValue };
|
|
7433
|
+
}), [dataSource?.features, control?.attributeName]);
|
|
7481
7434
|
const onChange = useCallback(([option]) => {
|
|
7482
|
-
changeControls({ [
|
|
7483
|
-
}, [
|
|
7484
|
-
return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Dropdown, { zIndex: 1000, label: label, placeholder: placeholder, options: optionsList, value:
|
|
7435
|
+
changeControls({ [control?.targetAttributeName]: option.value });
|
|
7436
|
+
}, [control?.targetAttributeName, changeControls]);
|
|
7437
|
+
return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Dropdown, { zIndex: 1000, label: label, placeholder: placeholder, options: optionsList, value: value, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, onChange: onChange }) })] }));
|
|
7485
7438
|
};
|
|
7486
7439
|
|
|
7487
7440
|
const ContainerDivider = styled(Divider) `
|
|
@@ -7818,12 +7771,12 @@ const LayerIcon = ({ layerInfo, error }) => {
|
|
|
7818
7771
|
return (jsx(AlertIconContainer, { children: jsx(Icon, { kind: "warning" }) }));
|
|
7819
7772
|
}
|
|
7820
7773
|
switch (layerInfo.geometryType) {
|
|
7821
|
-
case
|
|
7774
|
+
case OgcGeometryType.MultiLineString:
|
|
7822
7775
|
return jsx("img", { src: img$1, alt: "" });
|
|
7823
|
-
case
|
|
7824
|
-
case
|
|
7776
|
+
case OgcGeometryType.Polygon:
|
|
7777
|
+
case OgcGeometryType.MultiPolygon:
|
|
7825
7778
|
return jsx("img", { src: img, alt: "" });
|
|
7826
|
-
case
|
|
7779
|
+
case OgcGeometryType.Point:
|
|
7827
7780
|
default:
|
|
7828
7781
|
return jsx("img", { src: img$2, alt: "" });
|
|
7829
7782
|
}
|
|
@@ -8360,7 +8313,10 @@ const ElementControl = ({ elementConfig }) => {
|
|
|
8360
8313
|
const { t } = useGlobalContext();
|
|
8361
8314
|
const { attributes, layerInfo, dataSources, controls, changeControls } = useWidgetContext(WidgetType.FeatureCard);
|
|
8362
8315
|
const { options, attributeName, defaultValue } = elementConfig || {};
|
|
8363
|
-
const { relatedDataSource, label, width, control, placeholder = t("selectValue", {
|
|
8316
|
+
const { relatedDataSource, label, width, control, placeholder = t("selectValue", {
|
|
8317
|
+
ns: "dashboard",
|
|
8318
|
+
defaultValue: "Выберите значение",
|
|
8319
|
+
}), } = options || {};
|
|
8364
8320
|
const attribute = useMemo(() => attributes?.find(({ name }) => name === control?.targetAttributeName), [attributes, control?.targetAttributeName]);
|
|
8365
8321
|
const dataSource = useMemo(() => getDataSource(relatedDataSource, dataSources), [relatedDataSource, dataSources]);
|
|
8366
8322
|
const items = useMemo(() => {
|
|
@@ -8368,14 +8324,17 @@ const ElementControl = ({ elementConfig }) => {
|
|
|
8368
8324
|
return [];
|
|
8369
8325
|
}
|
|
8370
8326
|
return dataSource.features.map(item => ({
|
|
8371
|
-
value: item.
|
|
8372
|
-
text: item.
|
|
8327
|
+
value: item.properties?.[attributeName] || "",
|
|
8328
|
+
text: item.properties?.[control?.attributeName || attributeName] || "",
|
|
8373
8329
|
}));
|
|
8374
|
-
}, [control?.
|
|
8330
|
+
}, [control?.attributeName, dataSource?.features, attributeName]);
|
|
8375
8331
|
const isDisabled = useMemo(() => {
|
|
8376
8332
|
const attr = layerInfo?.configuration?.attributesConfiguration?.attributes?.find(item => item.attributeName === control?.targetAttributeName);
|
|
8377
8333
|
return !attr?.isEditable;
|
|
8378
|
-
}, [
|
|
8334
|
+
}, [
|
|
8335
|
+
control?.targetAttributeName,
|
|
8336
|
+
layerInfo?.configuration?.attributesConfiguration?.attributes,
|
|
8337
|
+
]);
|
|
8379
8338
|
const handleChange = useCallback(([option]) => {
|
|
8380
8339
|
if (control?.targetAttributeName && changeControls) {
|
|
8381
8340
|
changeControls({
|
|
@@ -8383,7 +8342,9 @@ const ElementControl = ({ elementConfig }) => {
|
|
|
8383
8342
|
});
|
|
8384
8343
|
}
|
|
8385
8344
|
}, [changeControls, control?.targetAttributeName]);
|
|
8386
|
-
return (jsx(Dropdown, { zIndex: 1000, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, label: label, options: items, value: controls?.[control?.targetAttributeName] ??
|
|
8345
|
+
return (jsx(Dropdown, { zIndex: 1000, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, label: label, options: items, value: controls?.[control?.targetAttributeName] ??
|
|
8346
|
+
attribute?.value ??
|
|
8347
|
+
defaultValue, placeholder: placeholder, disabled: isDisabled, onChange: handleChange }));
|
|
8387
8348
|
};
|
|
8388
8349
|
|
|
8389
8350
|
const StyledIconFontSizeMixin = css `
|
|
@@ -8697,7 +8658,7 @@ const ElementSlideshow = ({ elementConfig, type, renderElement }) => {
|
|
|
8697
8658
|
const images = useMemo(() => {
|
|
8698
8659
|
const dataSource = relatedDataSource ? dataSources?.find(({ name }) => name === relatedDataSource) : null;
|
|
8699
8660
|
const array = dataSource
|
|
8700
|
-
? dataSource.features.map(feature => feature.
|
|
8661
|
+
? dataSource.features.map(feature => feature.properties[attributeName])
|
|
8701
8662
|
: getSlideshowImages({
|
|
8702
8663
|
element: elementConfig,
|
|
8703
8664
|
attribute: attributes?.find(({ name }) => name === attributeName),
|
|
@@ -8880,20 +8841,20 @@ const getDataFromRelatedFeatures = ({ t, config, filters, relatedConfig, dataSou
|
|
|
8880
8841
|
}
|
|
8881
8842
|
const { colors } = config.options;
|
|
8882
8843
|
const layerDefinition = getLayerDefinition(layerInfo);
|
|
8883
|
-
let data =
|
|
8844
|
+
let data = [...dataSource?.features];
|
|
8884
8845
|
const sortAttribute = config?.options?.orderByValue
|
|
8885
8846
|
? relatedConfig.attributeName
|
|
8886
8847
|
: config?.options?.orderByTitle
|
|
8887
8848
|
? relatedConfig.attributeTitle
|
|
8888
8849
|
: null;
|
|
8889
8850
|
if (sortAttribute) {
|
|
8890
|
-
data.sort((a, b) => b.
|
|
8851
|
+
data.sort((a, b) => b.properties[sortAttribute] - a.properties[sortAttribute]);
|
|
8891
8852
|
}
|
|
8892
8853
|
const isOtherSliced = config?.options?.otherItems && config.options.otherItems < data.length;
|
|
8893
8854
|
const otherValue = isOtherSliced
|
|
8894
8855
|
? data
|
|
8895
8856
|
.slice(config.options.otherItems)
|
|
8896
|
-
.reduce((prev, {
|
|
8857
|
+
.reduce((prev, { properties }) => prev + properties[relatedConfig.attributeName], 0)
|
|
8897
8858
|
: null;
|
|
8898
8859
|
if (isOtherSliced) {
|
|
8899
8860
|
data = data.slice(0, config?.options?.otherItems);
|
|
@@ -8909,9 +8870,9 @@ const getDataFromRelatedFeatures = ({ t, config, filters, relatedConfig, dataSou
|
|
|
8909
8870
|
if (relatedConfig?.filterName && !filter) {
|
|
8910
8871
|
return acc;
|
|
8911
8872
|
}
|
|
8912
|
-
const attributeName = feature.
|
|
8913
|
-
const attributeTitle = feature.
|
|
8914
|
-
const attributeColor = feature.
|
|
8873
|
+
const attributeName = feature.properties[relatedConfig.attributeName];
|
|
8874
|
+
const attributeTitle = feature.properties[relatedConfig.attributeTitle];
|
|
8875
|
+
const attributeColor = feature.properties[relatedConfig.attributeColor];
|
|
8915
8876
|
return [
|
|
8916
8877
|
...acc,
|
|
8917
8878
|
{
|
|
@@ -8923,8 +8884,8 @@ const getDataFromRelatedFeatures = ({ t, config, filters, relatedConfig, dataSou
|
|
|
8923
8884
|
}),
|
|
8924
8885
|
value: attributeName === null ? null : Number(attributeName),
|
|
8925
8886
|
color: attributeColor || gradientArray?.[index] || FEATURE_CARD_OTHER_COLOR,
|
|
8926
|
-
min: filter?.attributeMin ? feature.
|
|
8927
|
-
max: filter?.attributeMin ? feature.
|
|
8887
|
+
min: filter?.attributeMin ? feature.properties[filter.attributeMin] : null,
|
|
8888
|
+
max: filter?.attributeMin ? feature.properties[filter.attributeMax] : null
|
|
8928
8889
|
}
|
|
8929
8890
|
];
|
|
8930
8891
|
}, []);
|
|
@@ -9090,7 +9051,7 @@ function getFeatureAttributes(feature = {}, layer, dataSource) {
|
|
|
9090
9051
|
if (!layerDefinition) {
|
|
9091
9052
|
return [];
|
|
9092
9053
|
}
|
|
9093
|
-
const currentAttributes = !feature && dataSource ? dataSource.features[0].
|
|
9054
|
+
const currentAttributes = !feature && dataSource ? dataSource.features[0].properties : feature?.properties;
|
|
9094
9055
|
const { id: idValue } = feature || {};
|
|
9095
9056
|
const { idAttribute, attributes } = layerDefinition || {};
|
|
9096
9057
|
const layerAttributes = idAttribute
|
|
@@ -9107,7 +9068,7 @@ function getFeatureAttributes(feature = {}, layer, dataSource) {
|
|
|
9107
9068
|
readOnly: true,
|
|
9108
9069
|
}
|
|
9109
9070
|
: {
|
|
9110
|
-
value: currentAttributes?.[attributeName] || dataSource?.features?.[0]?.
|
|
9071
|
+
value: currentAttributes?.[attributeName] || dataSource?.features?.[0]?.properties?.[attributeName],
|
|
9111
9072
|
readOnly: isCalculated || !isEditable,
|
|
9112
9073
|
};
|
|
9113
9074
|
const clientData = layer.layerAttributes?.find(layerAttribute => layerAttribute.attributeName === attributeName)?.clientData;
|
|
@@ -9279,10 +9240,10 @@ const getListOptions = (items, filterName, configFilters) => {
|
|
|
9279
9240
|
if (!filter)
|
|
9280
9241
|
return [];
|
|
9281
9242
|
return (items?.map(item => ({
|
|
9282
|
-
text: item.
|
|
9283
|
-
value: item.
|
|
9284
|
-
min: filter.attributeMin ? item.
|
|
9285
|
-
max: filter.attributeMax ? item.
|
|
9243
|
+
text: item.properties[filter.attributeAlias || DEFAULT_ATTRIBUTE_NAME],
|
|
9244
|
+
value: item.properties[filter.attributeValue || DEFAULT_ATTRIBUTE_NAME],
|
|
9245
|
+
min: filter.attributeMin ? item.properties[filter.attributeMin] : null,
|
|
9246
|
+
max: filter.attributeMax ? item.properties[filter.attributeMax] : null,
|
|
9286
9247
|
})) || []);
|
|
9287
9248
|
};
|
|
9288
9249
|
|
|
@@ -9594,8 +9555,8 @@ const RangeDateFilter = ({ type, filter }) => {
|
|
|
9594
9555
|
const { filterName, label, minValue, maxValue, withTime } = filter.options;
|
|
9595
9556
|
const configFilter = useMemo(() => getConfigFilter(filterName, configFilters), [configFilters, filterName]);
|
|
9596
9557
|
const dataSource = useMemo(() => getDataSource(configFilter?.relatedDataSource, dataSources), [configFilter?.relatedDataSource, dataSources]);
|
|
9597
|
-
const { minFromData, maxFromData } = useMemo(() => dataSource?.features?.reduce((prev, {
|
|
9598
|
-
const date = getDate(
|
|
9558
|
+
const { minFromData, maxFromData } = useMemo(() => dataSource?.features?.reduce((prev, { properties }) => {
|
|
9559
|
+
const date = getDate(properties[configFilter?.attributeValue]);
|
|
9599
9560
|
return {
|
|
9600
9561
|
minFromData: !prev.minFromData ? date : date < prev.minFromData ? date : prev.minFromData,
|
|
9601
9562
|
maxFromData: !prev.maxFromData ? date : date > prev.maxFromData ? date : prev.maxFromData
|
|
@@ -9816,7 +9777,7 @@ const ChipsFilter = ({ type, filter, elementConfig, }) => {
|
|
|
9816
9777
|
return [];
|
|
9817
9778
|
const features = dataSource.features;
|
|
9818
9779
|
return features.map(feature => {
|
|
9819
|
-
const attrs = feature.
|
|
9780
|
+
const attrs = feature.properties;
|
|
9820
9781
|
const text = attrs[configFilter.attributeAlias || DEFAULT_ATTRIBUTE_NAME];
|
|
9821
9782
|
const value = attrs[configFilter.attributeValue || DEFAULT_ATTRIBUTE_NAME];
|
|
9822
9783
|
const chipIcon = iconAttribute
|
|
@@ -10521,7 +10482,7 @@ const useDataSources = ({ type: widgetType, config, attributes, filters, layerPa
|
|
|
10521
10482
|
const queryResponse = await api.eql.getPagedQueryResult({ saveInHistory: false }, getProps);
|
|
10522
10483
|
const descriptionResponse = await api.eql.getQueryDescription(getProps);
|
|
10523
10484
|
return {
|
|
10524
|
-
items: queryResponse.
|
|
10485
|
+
items: queryResponse.features,
|
|
10525
10486
|
attributeDefinition: descriptionResponse,
|
|
10526
10487
|
};
|
|
10527
10488
|
}
|
|
@@ -10569,7 +10530,7 @@ const useDataSources = ({ type: widgetType, config, attributes, filters, layerPa
|
|
|
10569
10530
|
!!currentDataSources[index].url ||
|
|
10570
10531
|
!!currentDataSources[index].resourceId;
|
|
10571
10532
|
newDataSources[index].layerName = currentDataSources[index].layerName;
|
|
10572
|
-
const items = response.status === "rejected" ? null : response.value?.
|
|
10533
|
+
const items = response.status === "rejected" ? null : response.value?.features || response.items;
|
|
10573
10534
|
newDataSources[index].features =
|
|
10574
10535
|
response.status === "rejected"
|
|
10575
10536
|
? null
|
|
@@ -11000,7 +10961,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
11000
10961
|
const attribute = layerInfo?.layerDefinition.attributes[attributeName];
|
|
11001
10962
|
const dataSource = getDataSource(dataSourceName, dataSources);
|
|
11002
10963
|
const units = attributeUnits
|
|
11003
|
-
? dataSource?.features?.[0]?.
|
|
10964
|
+
? dataSource?.features?.[0]?.properties?.[attributeUnits]
|
|
11004
10965
|
: attribute?.stringFormat?.unitsLabel;
|
|
11005
10966
|
const formatValue = attribute
|
|
11006
10967
|
? formatAttributeValue({ t, type: attribute.type, value, stringFormat: attribute.stringFormat, noUnits: true })
|
|
@@ -11568,22 +11529,22 @@ const RasterLayer = ({ layer, tileUrl, visible, beforeId, filterVersion, }) => {
|
|
|
11568
11529
|
|
|
11569
11530
|
const getClientStyleItemPrefixSuffix = (geometryType, itemType) => {
|
|
11570
11531
|
switch (geometryType) {
|
|
11571
|
-
case
|
|
11532
|
+
case OgcGeometryType.Point:
|
|
11572
11533
|
switch (itemType) {
|
|
11573
11534
|
case "symbol":
|
|
11574
11535
|
return ["point-label-layer-", "-label"];
|
|
11575
11536
|
default:
|
|
11576
11537
|
return ["point-layer-", ""];
|
|
11577
11538
|
}
|
|
11578
|
-
case
|
|
11539
|
+
case OgcGeometryType.MultiLineString:
|
|
11579
11540
|
switch (itemType) {
|
|
11580
11541
|
case "symbol":
|
|
11581
11542
|
return ["polyline-label-layer-", "-label"];
|
|
11582
11543
|
default:
|
|
11583
11544
|
return ["polyline-layer-", ""];
|
|
11584
11545
|
}
|
|
11585
|
-
case
|
|
11586
|
-
case
|
|
11546
|
+
case OgcGeometryType.Polygon:
|
|
11547
|
+
case OgcGeometryType.MultiPolygon:
|
|
11587
11548
|
switch (itemType) {
|
|
11588
11549
|
case "line":
|
|
11589
11550
|
return ["polygon-stroke-layer-", "-stroke"];
|
|
@@ -11599,6 +11560,52 @@ const getClientStyleItemPrefixSuffix = (geometryType, itemType) => {
|
|
|
11599
11560
|
}
|
|
11600
11561
|
};
|
|
11601
11562
|
|
|
11563
|
+
const findAttributeInExpression = (expression) => {
|
|
11564
|
+
if (Array.isArray(expression) && expression.length === 2 && expression[0] === "get") {
|
|
11565
|
+
return [expression[1]];
|
|
11566
|
+
}
|
|
11567
|
+
return expression.reduce((acc, curr) => {
|
|
11568
|
+
if (!Array.isArray(curr)) {
|
|
11569
|
+
return acc;
|
|
11570
|
+
}
|
|
11571
|
+
if (curr[0] === "get") {
|
|
11572
|
+
return [...new Set([...acc, curr[1]])];
|
|
11573
|
+
}
|
|
11574
|
+
return [...new Set([...acc, ...findAttributeInExpression(curr)])];
|
|
11575
|
+
}, []);
|
|
11576
|
+
};
|
|
11577
|
+
|
|
11578
|
+
const getActualExtrusionHeight = (paint) => {
|
|
11579
|
+
return Array.isArray(paint?.["fill-extrusion-height"]) && paint?.["fill-extrusion-height"][0] === "+"
|
|
11580
|
+
? paint?.["fill-extrusion-height"][1]
|
|
11581
|
+
: paint?.["fill-extrusion-height"];
|
|
11582
|
+
};
|
|
11583
|
+
|
|
11584
|
+
const extractAttributesFromObject = (obj) => {
|
|
11585
|
+
if (!obj || isEmpty(obj)) {
|
|
11586
|
+
return [];
|
|
11587
|
+
}
|
|
11588
|
+
return Object.entries(obj).reduce((acc, [, value]) => {
|
|
11589
|
+
if (!Array.isArray(value)) {
|
|
11590
|
+
return acc;
|
|
11591
|
+
}
|
|
11592
|
+
return [...new Set([...acc, ...findAttributeInExpression(value)])];
|
|
11593
|
+
}, []);
|
|
11594
|
+
};
|
|
11595
|
+
const parseClientStyle = (style) => {
|
|
11596
|
+
if (!style) {
|
|
11597
|
+
return [];
|
|
11598
|
+
}
|
|
11599
|
+
return style?.items?.reduce((acc, curr) => {
|
|
11600
|
+
const paintAttributes = extractAttributesFromObject(curr.paint);
|
|
11601
|
+
const layoutAttributes = extractAttributesFromObject(curr.layout);
|
|
11602
|
+
const filterAttributes = curr.filter
|
|
11603
|
+
? findAttributeInExpression(curr.filter)
|
|
11604
|
+
: [];
|
|
11605
|
+
return [...new Set([...acc, ...paintAttributes, ...layoutAttributes, ...filterAttributes])];
|
|
11606
|
+
}, []);
|
|
11607
|
+
};
|
|
11608
|
+
|
|
11602
11609
|
const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, filterVersion, }) => {
|
|
11603
11610
|
const clientStyle = layer?.configuration?.clientStyle;
|
|
11604
11611
|
const { idAttribute, geometryType } = layer.layerDefinition || {};
|
|
@@ -11630,7 +11637,7 @@ const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, fil
|
|
|
11630
11637
|
const renderLayerByGeometryType = useCallback(() => {
|
|
11631
11638
|
const visibility = visible ? "visible" : "none";
|
|
11632
11639
|
switch (geometryType) {
|
|
11633
|
-
case
|
|
11640
|
+
case OgcGeometryType.Point:
|
|
11634
11641
|
return (jsx(Layer$1, { id: layer.name, type: "circle", "source-layer": "default", beforeId: beforeId, layout: {
|
|
11635
11642
|
...getLayerTempStyle?.(layer.name, "circle")?.layout,
|
|
11636
11643
|
visibility,
|
|
@@ -11638,8 +11645,8 @@ const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, fil
|
|
|
11638
11645
|
...DEFAULT_CIRCLE_PAINT,
|
|
11639
11646
|
...getLayerTempStyle?.(layer.name, "circle")?.paint,
|
|
11640
11647
|
} }));
|
|
11641
|
-
case
|
|
11642
|
-
case
|
|
11648
|
+
case OgcGeometryType.Polygon:
|
|
11649
|
+
case OgcGeometryType.MultiPolygon:
|
|
11643
11650
|
return [
|
|
11644
11651
|
jsx(Layer$1, { id: layer.name, type: "fill", "source-layer": "default", beforeId: beforeId, layout: {
|
|
11645
11652
|
...getLayerTempStyle?.(layer.name, "fill")?.layout,
|
|
@@ -11677,7 +11684,7 @@ const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, fil
|
|
|
11677
11684
|
...getLayerTempStyle?.(layer.name, "fill-extrusion")?.paint,
|
|
11678
11685
|
} }, `polygon-extrusion-layer-${layer.name}`),
|
|
11679
11686
|
];
|
|
11680
|
-
case
|
|
11687
|
+
case OgcGeometryType.MultiLineString:
|
|
11681
11688
|
return (jsx(Layer$1, { id: layer.name, type: "line", "source-layer": "default", beforeId: beforeId, layout: {
|
|
11682
11689
|
...getLayerTempStyle?.(layer.name, "line")?.layout,
|
|
11683
11690
|
visibility,
|
|
@@ -11786,5 +11793,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
|
|
|
11786
11793
|
}, children: children }), upperSiblings] }));
|
|
11787
11794
|
};
|
|
11788
11795
|
|
|
11789
|
-
export { AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardGradientHeader, FeatureCardHeader, FeatureCardIconHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, RoundedBackgroundContainer, SERVER_NOTIFICATION_EVENT, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TmsType, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, WidgetType, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading,
|
|
11796
|
+
export { AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardGradientHeader, FeatureCardHeader, FeatureCardIconHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, RoundedBackgroundContainer, SERVER_NOTIFICATION_EVENT, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TmsType, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, WidgetType, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading, createConfigLayer, createConfigPage, createNewPageId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, getActualExtrusionHeight, getAttributeByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDate, getDefaultConfig, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerDefinition, getLayerInfo, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getSvgUrl, getTemplateNameFromAttribute, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sliceShownOtherItems, timeOptions, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, useAppHeight, useChartChange, useChartData, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useExpandableContainers, useExportPdf, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useIconsFromLayers, useLayerParams, useMapContext, useMapDraw, useMapImages, useProjectDashboardInit, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
|
|
11790
11797
|
//# sourceMappingURL=react.esm.js.map
|