@evergis/react 3.1.23 → 3.1.24

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.
@@ -1,5 +1,6 @@
1
1
  import { WidgetType } from '../types';
2
2
  export declare const useWidgetContext: (type?: WidgetType) => {
3
+ config: import('../types').ConfigContainer;
3
4
  projectInfo: import('@evergis/api').ExtendedProjectInfoDc;
4
5
  layerInfos: import('../../..').LayerInfo[];
5
6
  updateProject: (projectInfo: import('@evergis/api').ExtendedProjectInfoDc) => void;
@@ -13,10 +14,10 @@ export declare const useWidgetContext: (type?: WidgetType) => {
13
14
  feature: import('../../..').SelectedFeature;
14
15
  closeFeatureCard: VoidFunction;
15
16
  components: {
16
- LayerItem: import('react').FC<import('../..').LayerItemProps>;
17
- ProjectCatalogMenu: import('react').FC;
18
- ProjectPanelMenu: import('react').FC;
19
- ProjectPagesMenu: import('react').FC;
17
+ LayerItem?: import('react').FC<import('../..').LayerItemProps>;
18
+ ProjectCatalogMenu?: import('react').FC;
19
+ ProjectPanelMenu?: import('react').FC;
20
+ ProjectPagesMenu?: import('react').FC;
20
21
  };
21
22
  isLoading: boolean;
22
23
  pageIndex: number;
@@ -0,0 +1,8 @@
1
+ import { ProxyServiceInfoDc, ServiceInfoDc } from '@evergis/api';
2
+ import { LayerInfo, ProxyServiceInfo } from '../../../types';
3
+ export declare const isCompositeLayerConfiguration: (value?: unknown) => value is ServiceInfoDc;
4
+ export declare const isProxyService: (value?: unknown) => value is ProxyServiceInfoDc;
5
+ export declare const getProxyService: (layer?: ServiceInfoDc) => ProxyServiceInfo;
6
+ export declare function getLayerInfo(layer?: ServiceInfoDc & {
7
+ type?: string;
8
+ }): LayerInfo;
@@ -32,6 +32,7 @@ export * from './getFilterSelectedItems';
32
32
  export * from './getFilterValue';
33
33
  export * from './getFormattedAttributes';
34
34
  export * from './getLayerDefinition';
35
+ export * from './getLayerInfo';
35
36
  export * from './getLayerInfoFromDataSources';
36
37
  export * from './getPagesFromConfig';
37
38
  export * from './getPagesFromProjectInfo';
@@ -1,30 +1,31 @@
1
1
  import { FC, PropsWithChildren } from 'react';
2
2
  import { ExtendedProjectInfoDc } from '@evergis/api';
3
- import { DashboardLayerPayload, DashboardState, LayerItemProps, SelectedFilters, WidgetDataSource } from '../../components';
3
+ import { ConfigContainer, DashboardLayerPayload, DashboardState, LayerItemProps, SelectedFilters, WidgetDataSource } from '../../components';
4
4
  import { LayerInfo } from '../../types';
5
5
  export type DashboardContextProps = PropsWithChildren<{
6
- projectInfo: ExtendedProjectInfoDc;
7
- updateProject: (projectInfo: ExtendedProjectInfoDc) => void;
8
- pageIndex: number;
9
- layerInfos: LayerInfo[];
10
- dataSources: WidgetDataSource[];
11
- geometryFilter: boolean;
12
- loading: boolean;
13
- filters: SelectedFilters;
14
- dashboardLayers: DashboardState["layers"];
15
- setDashboardLayer: (props: DashboardLayerPayload) => void;
16
- selectedTabId: string;
17
- components: {
18
- LayerItem: FC<LayerItemProps>;
19
- ProjectCatalogMenu: FC;
20
- ProjectPanelMenu: FC;
21
- ProjectPagesMenu: FC;
6
+ config?: ConfigContainer;
7
+ projectInfo?: ExtendedProjectInfoDc;
8
+ updateProject?: (projectInfo: ExtendedProjectInfoDc) => void;
9
+ pageIndex?: number;
10
+ layerInfos?: LayerInfo[];
11
+ dataSources?: WidgetDataSource[];
12
+ geometryFilter?: boolean;
13
+ loading?: boolean;
14
+ filters?: SelectedFilters;
15
+ dashboardLayers?: DashboardState["layers"];
16
+ setDashboardLayer?: (props: DashboardLayerPayload) => void;
17
+ selectedTabId?: string;
18
+ components?: {
19
+ LayerItem?: FC<LayerItemProps>;
20
+ ProjectCatalogMenu?: FC;
21
+ ProjectPanelMenu?: FC;
22
+ ProjectPagesMenu?: FC;
22
23
  };
23
- changeFilters: (filters: SelectedFilters, resetFilters?: string[]) => void;
24
- expandedContainers: Record<string, boolean>;
25
- expandContainer: (id: string, expanded?: boolean) => void;
26
- setSelectedTabId: (tab: string) => void;
27
- nextPage: (total: number) => void;
28
- prevPage: (total: number) => void;
29
- changePage: (pageIndex: number) => void;
24
+ changeFilters?: (filters: SelectedFilters, resetFilters?: string[]) => void;
25
+ expandedContainers?: Record<string, boolean>;
26
+ expandContainer?: (id: string, expanded?: boolean) => void;
27
+ setSelectedTabId?: (tab: string) => void;
28
+ nextPage?: (total: number) => void;
29
+ prevPage?: (total: number) => void;
30
+ changePage?: (pageIndex: number) => void;
30
31
  }>;
@@ -2,9 +2,9 @@ import { PropsWithChildren } from 'react';
2
2
  import { i18n } from 'i18next';
3
3
  import { Api } from '@evergis/api';
4
4
  export type GlobalContextProps = PropsWithChildren<{
5
- t: i18n["t"];
6
- language: string;
7
- ewktGeometry: string;
8
- themeName: string;
9
- api: Api;
5
+ t?: i18n["t"];
6
+ language?: string;
7
+ ewktGeometry?: string;
8
+ themeName?: string;
9
+ api?: Api;
10
10
  }>;
@@ -1,4 +1,3 @@
1
- export * from './ConfigContext';
2
1
  export * from './DashboardContext';
3
2
  export * from './FeatureCardContext';
4
3
  export * from './GlobalContext';
package/dist/index.js CHANGED
@@ -3798,11 +3798,6 @@ const isLayerService = (value) => isObject(value) && "name" in value;
3798
3798
 
3799
3799
  const isNumeric = (number) => !isNaN(parseFloat(number)) && isFinite(number);
3800
3800
 
3801
- const ConfigContext = React.createContext({});
3802
- const ConfigProvider = React.memo(({ children, config }) => {
3803
- return jsxRuntime.jsx(ConfigContext.Provider, { value: { config }, children: children });
3804
- });
3805
-
3806
3801
  const DashboardContext = React.createContext({});
3807
3802
  const DashboardProvider = React.memo(({ children, ...props }) => {
3808
3803
  return jsxRuntime.jsx(DashboardContext.Provider, { value: props, children: children });
@@ -3916,9 +3911,10 @@ const ServerNotificationsProvider = ({ url, initialized, children }) => {
3916
3911
  };
3917
3912
 
3918
3913
  const useWidgetContext = (type = exports.WidgetType.Dashboard) => {
3919
- const { projectInfo, updateProject, layerInfos, geometryFilter, dashboardLayers, setDashboardLayer, components: dashboardComponents, pageIndex: projectPageIndex, selectedTabId: projectSelectedTabId, setSelectedTabId: setProjectSelectedTabId, dataSources: projectDataSources, loading: projectLoading, filters: projectFilters, changeFilters: projectChangeFilters, expandContainer: projectExpandContainer, expandedContainers: projectExpandedContainers, nextPage: projectNextPage, prevPage: projectPrevPage, changePage: projectChangePage, } = React.useContext(DashboardContext) || {};
3914
+ const { config, projectInfo, updateProject, layerInfos, geometryFilter, dashboardLayers, setDashboardLayer, components: dashboardComponents, pageIndex: projectPageIndex, selectedTabId: projectSelectedTabId, setSelectedTabId: setProjectSelectedTabId, dataSources: projectDataSources, loading: projectLoading, filters: projectFilters, changeFilters: projectChangeFilters, expandContainer: projectExpandContainer, expandedContainers: projectExpandedContainers, nextPage: projectNextPage, prevPage: projectPrevPage, changePage: projectChangePage, } = React.useContext(DashboardContext) || {};
3920
3915
  const { layerInfo, attributes, feature, closeFeatureCard, pageIndex: featurePageIndex, selectedTabId: featureSelectedTabId, setSelectedTabId: setFeatureSelectedTabId, dataSources: featureDataSources, loading: featureLoading, filters: featureFilters, changeFilters: featureChangeFilters, expandContainer: featureExpandContainer, expandedContainers: featureExpandedContainers, nextPage: featureNextPage, prevPage: featurePrevPage, changePage: featureChangePage, } = React.useContext(FeatureCardContext) || {};
3921
3916
  return {
3917
+ config,
3922
3918
  projectInfo,
3923
3919
  layerInfos,
3924
3920
  updateProject,
@@ -3931,7 +3927,7 @@ const useWidgetContext = (type = exports.WidgetType.Dashboard) => {
3931
3927
  closeFeatureCard,
3932
3928
  components: dashboardComponents,
3933
3929
  isLoading: type === exports.WidgetType.Dashboard ? projectLoading : featureLoading,
3934
- pageIndex: type === exports.WidgetType.Dashboard ? projectPageIndex : featurePageIndex,
3930
+ pageIndex: type === exports.WidgetType.Dashboard ? projectPageIndex || 1 : featurePageIndex || 1,
3935
3931
  filters: type === exports.WidgetType.Dashboard ? projectFilters : featureFilters,
3936
3932
  changeFilters: type === exports.WidgetType.Dashboard ? projectChangeFilters : featureChangeFilters,
3937
3933
  dataSources: type === exports.WidgetType.Dashboard ? projectDataSources : featureDataSources,
@@ -5957,7 +5953,7 @@ const ChartContainer = React.memo(({ elementConfig, isVisible, type, renderEleme
5957
5953
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsxs(Container, { isColumn: true, children: [aliasElement && jsxRuntime.jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsxRuntime.jsx(ContainerValue, { column: !twoColumns, alignItems: "center", children: hasItems ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ContainerChart, { children: renderElement({ id: "chart" }) }), jsxRuntime.jsx(ContainerLegend, { children: renderElement({ id: "legend" }) })] })) : (jsxRuntime.jsx(jsxRuntime.Fragment, { children: "\u2014" })) })] }))] }));
5958
5954
  });
5959
5955
 
5960
- const PagesContainer = React.memo(({ type }) => {
5956
+ const PagesContainer = React.memo(({ type = exports.WidgetType.Dashboard }) => {
5961
5957
  const { config } = useWidgetConfig(type);
5962
5958
  const { pageIndex, currentPage } = useWidgetPage(type);
5963
5959
  const { selectedTabId, setSelectedTabId, expandedContainers, attributes } = useWidgetContext(type);
@@ -8427,6 +8423,56 @@ const getFormattedAttributes = (t, data, attributes, config) => {
8427
8423
  : attributes;
8428
8424
  };
8429
8425
 
8426
+ const isCompositeLayerConfiguration = (value) => isObject(value) && "name" in value;
8427
+ const isProxyService = (value) => isLayerService(value) && ("sourceType" in value || value.type === "RemoteTileService");
8428
+ const getProxyService = (layer) => {
8429
+ if (!isProxyService(layer))
8430
+ return {
8431
+ layers: [],
8432
+ sourceType: "",
8433
+ sourceUrl: "",
8434
+ copyrightText: "",
8435
+ legend: {
8436
+ layers: [],
8437
+ },
8438
+ };
8439
+ const { layers, sourceType, sourceUrl, legend, copyrightText } = layer;
8440
+ return {
8441
+ layers: layers || [],
8442
+ copyrightText: copyrightText || "",
8443
+ sourceUrl: sourceUrl || "",
8444
+ sourceType: sourceType || "",
8445
+ legend: {
8446
+ layers: (legend && legend.layers) || [],
8447
+ },
8448
+ };
8449
+ };
8450
+ function getLayerInfo(layer) {
8451
+ const configuration = layer?.configuration ?? {};
8452
+ const attributesConfiguration = getAttributesConfiguration(layer);
8453
+ const layerDefinition = getLayerDefinition(layer);
8454
+ const configLayers = ("layers" in configuration && configuration.layers) || [];
8455
+ return {
8456
+ type: layer?.type,
8457
+ ...(layer || {}),
8458
+ name: layer?.name || "",
8459
+ configuration: {
8460
+ ...configuration,
8461
+ layers: configLayers.filter(isCompositeLayerConfiguration),
8462
+ attributesConfiguration,
8463
+ },
8464
+ acl: configuration.acl,
8465
+ condition: ("condition" in configuration && configuration.condition) || undefined,
8466
+ tableName: attributesConfiguration.tableName,
8467
+ idAttribute: attributesConfiguration.idAttribute,
8468
+ titleAttribute: layerDefinition.titleAttribute || attributesConfiguration.titleAttribute,
8469
+ geometryAttribute: attributesConfiguration.geometryAttribute,
8470
+ layerAttributes: attributesConfiguration.attributes,
8471
+ srId: layerDefinition.srId,
8472
+ proxy: getProxyService(layer),
8473
+ };
8474
+ }
8475
+
8430
8476
  const getLayerInfoFromDataSources = (layerInfos, dataSources, relatedDataSource) => layerInfos?.find(({ name }) => name === dataSources?.find(item => item.name === relatedDataSource)?.layerName);
8431
8477
 
8432
8478
  const getPagesFromConfig = (config) => config?.children?.[0]?.children;
@@ -8612,8 +8658,7 @@ const tooltipValueFromRelatedFeatures = (t, value, relatedAttributes, layerInfo)
8612
8658
  };
8613
8659
 
8614
8660
  const useWidgetConfig = (type = exports.WidgetType.Dashboard) => {
8615
- const { config: configProp } = React.useContext(ConfigContext);
8616
- const { projectInfo, layerInfo } = useWidgetContext(type);
8661
+ const { config: configProp, projectInfo, layerInfo } = useWidgetContext(type);
8617
8662
  const config = React.useMemo(() => {
8618
8663
  if (configProp) {
8619
8664
  return configProp;
@@ -9367,13 +9412,13 @@ const DashboardLoading = React.memo(() => {
9367
9412
 
9368
9413
  const Dashboard = React.memo(({ type = exports.WidgetType.Dashboard, config }) => {
9369
9414
  const { dataSources, isLoading } = useWidgetContext(type);
9370
- const { currentPage } = useWidgetPage();
9415
+ const { currentPage } = useWidgetPage(type);
9371
9416
  const isDiffPage = useDiffPage(type);
9372
- const dataSourceLoading = React.useMemo(() => currentPage?.dataSources?.length && !dataSources?.length && isLoading, [currentPage?.dataSources?.length, dataSources?.length, isLoading]);
9417
+ const dataSourceLoading = React.useMemo(() => !!currentPage?.dataSources?.length && !dataSources?.length && isLoading, [currentPage?.dataSources?.length, dataSources?.length, isLoading]);
9373
9418
  if (dataSourceLoading || isDiffPage) {
9374
9419
  return (jsxRuntime.jsx(DashboardLoading, {}));
9375
9420
  }
9376
- return (jsxRuntime.jsx(ConfigProvider, { config: config, children: jsxRuntime.jsx(PagesContainer, { type: type }) }));
9421
+ return (jsxRuntime.jsx(PagesContainer, { type: type }));
9377
9422
  });
9378
9423
 
9379
9424
  const CardCheckbox = styled(uilibGl.Checkbox) `
@@ -9856,8 +9901,6 @@ exports.Chart = Chart;
9856
9901
  exports.ChartContainer = ChartContainer;
9857
9902
  exports.ChartLegend = ChartLegend;
9858
9903
  exports.ChartLoading = ChartLoading;
9859
- exports.ConfigContext = ConfigContext;
9860
- exports.ConfigProvider = ConfigProvider;
9861
9904
  exports.ContainerChildren = ContainerChildren;
9862
9905
  exports.ContainerLoading = ContainerLoading;
9863
9906
  exports.ContainerWrapper = ContainerWrapper;
@@ -10040,9 +10083,11 @@ exports.getFilterValue = getFilterValue;
10040
10083
  exports.getFormattedAttributes = getFormattedAttributes;
10041
10084
  exports.getGradientColors = getGradientColors;
10042
10085
  exports.getLayerDefinition = getLayerDefinition;
10086
+ exports.getLayerInfo = getLayerInfo;
10043
10087
  exports.getLayerInfoFromDataSources = getLayerInfoFromDataSources;
10044
10088
  exports.getPagesFromConfig = getPagesFromConfig;
10045
10089
  exports.getPagesFromProjectInfo = getPagesFromProjectInfo;
10090
+ exports.getProxyService = getProxyService;
10046
10091
  exports.getRelatedAttribute = getRelatedAttribute;
10047
10092
  exports.getRenderElement = getRenderElement;
10048
10093
  exports.getResourceUrl = getResourceUrl;
@@ -10052,6 +10097,7 @@ exports.getSvgUrl = getSvgUrl;
10052
10097
  exports.getTotalFromAttributes = getTotalFromAttributes;
10053
10098
  exports.getTotalFromRelatedFeatures = getTotalFromRelatedFeatures;
10054
10099
  exports.hexToRgba = hexToRgba;
10100
+ exports.isCompositeLayerConfiguration = isCompositeLayerConfiguration;
10055
10101
  exports.isEmptyElementValue = isEmptyElementValue;
10056
10102
  exports.isEmptyValue = isEmptyValue;
10057
10103
  exports.isHiddenEmptyValue = isHiddenEmptyValue;
@@ -10059,6 +10105,7 @@ exports.isLayerService = isLayerService;
10059
10105
  exports.isNotValidSelectedTab = isNotValidSelectedTab;
10060
10106
  exports.isNumeric = isNumeric;
10061
10107
  exports.isObject = isObject;
10108
+ exports.isProxyService = isProxyService;
10062
10109
  exports.isVisibleContainer = isVisibleContainer;
10063
10110
  exports.numberOptions = numberOptions;
10064
10111
  exports.parseClientStyle = parseClientStyle;