@eeacms/volto-eea-map 2.0.7 → 3.0.1
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/CHANGELOG.md +20 -0
- package/README.md +24 -20
- package/package.json +1 -1
- package/src/components/Blocks/EmbedEEAMap/Edit.jsx +45 -96
- package/src/components/Blocks/EmbedEEAMap/View.jsx +32 -62
- package/src/components/Blocks/EmbedEEAMap/helpers.js +12 -1
- package/src/components/ExtraViews.jsx +8 -8
- package/src/components/Webmap.jsx +4 -4
- package/src/components/visualization/VisualizationView.jsx +17 -3
- package/src/components/visualization/VisualizationViewWidget.jsx +23 -3
- package/src/index.js +0 -13
- package/src/actionTypes.js +0 -1
- package/src/actions.js +0 -12
- package/src/middlewares/index.js +0 -14
- package/src/middlewares/map_visualizations.js +0 -1
- package/src/reducers/index.js +0 -3
- package/src/reducers/map_visualizations.js +0 -48
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
+
### [3.0.1](https://github.com/eea/volto-eea-map/compare/3.0.0...3.0.1) - 24 November 2023
|
|
8
|
+
|
|
9
|
+
#### :hammer_and_wrench: Others
|
|
10
|
+
|
|
11
|
+
- fix [Miu Razvan - [`d9267ec`](https://github.com/eea/volto-eea-map/commit/d9267eca557518241ba30f5d525ebd30a606bf94)]
|
|
12
|
+
- fix [Miu Razvan - [`0ad99a6`](https://github.com/eea/volto-eea-map/commit/0ad99a60a3edfd19ad11b0023b456e82bb335dc5)]
|
|
13
|
+
- fix [Miu Razvan - [`fd0260d`](https://github.com/eea/volto-eea-map/commit/fd0260d46e356377ce388b967e78651da8cfa543)]
|
|
14
|
+
## [3.0.0](https://github.com/eea/volto-eea-map/compare/2.0.7...3.0.0) - 23 November 2023
|
|
15
|
+
|
|
16
|
+
#### :hammer_and_wrench: Others
|
|
17
|
+
|
|
18
|
+
- update [Miu Razvan - [`005b994`](https://github.com/eea/volto-eea-map/commit/005b9949a93a9101cf5b88054523e05d03deae05)]
|
|
19
|
+
- clean up [Miu Razvan - [`4144747`](https://github.com/eea/volto-eea-map/commit/4144747b84d1fb0e51614c7a963d750c9b67100d)]
|
|
20
|
+
- clean up [Miu Razvan - [`80c37f9`](https://github.com/eea/volto-eea-map/commit/80c37f9cb8b54e79caf5d147e452a5e88168a218)]
|
|
21
|
+
- bump version + remove uneeded code [Miu Razvan - [`adb8733`](https://github.com/eea/volto-eea-map/commit/adb8733fa4ce3d42a9d16cb7ad19518d49949da2)]
|
|
22
|
+
- update [Miu Razvan - [`6723242`](https://github.com/eea/volto-eea-map/commit/6723242a8507a29194cfc9650ae214d2abca74ad)]
|
|
23
|
+
- fix sonorqube [Dobricean Ioan Dorian - [`02b4406`](https://github.com/eea/volto-eea-map/commit/02b44067598c6cedcfc28c3b7667e4cb23addfc5)]
|
|
24
|
+
- fix prettier [Dobricean Ioan Dorian - [`78fc2ba`](https://github.com/eea/volto-eea-map/commit/78fc2baa2f5264ca1bba61b70bc0bdc5b2788e67)]
|
|
25
|
+
- Fix Sonorqube [dobri1408 - [`e04011a`](https://github.com/eea/volto-eea-map/commit/e04011aa811422f865d0bbb1e66af558a4310e77)]
|
|
26
|
+
- adapt embedeeamap to use serialized data [Dobricean Ioan Dorian - [`005965c`](https://github.com/eea/volto-eea-map/commit/005965c6793a9a9977fef52c08ba9a3173eec348)]
|
|
7
27
|
### [2.0.7](https://github.com/eea/volto-eea-map/compare/2.0.6...2.0.7) - 10 November 2023
|
|
8
28
|
|
|
9
29
|
#### :rocket: New Features
|
package/README.md
CHANGED
|
@@ -18,26 +18,30 @@
|
|
|
18
18
|
|
|
19
19
|
# Configuration
|
|
20
20
|
|
|
21
|
-
This addon contains the EEA Embed Map Block & EEA Map Block. It's configured to work with the map visualization content type and give more access to ArcGIS maps. See available maps here https://discomap.eea.europa.eu/
|
|
21
|
+
This addon contains the EEA Embed Map Block & EEA Map Block. It's configured to work with the map visualization content type and give more access to ArcGIS maps. See available maps here https://discomap.eea.europa.eu/
|
|
22
22
|
|
|
23
|
-
# Enable data queries auto-import
|
|
23
|
+
# Enable data queries auto-import
|
|
24
24
|
|
|
25
|
-
To enable automatic import of queries from the content-type, "Parameters for data connections" should be checked as behavior on the content-type that uses the map.
|
|
25
|
+
To enable automatic import of queries from the content-type, "Parameters for data connections" should be checked as behavior on the content-type that uses the map.
|
|
26
26
|
|
|
27
27
|
controlpanel/dexterity-types/{content-type-id}
|
|
28
28
|
|
|
29
29
|
# Enable Sources
|
|
30
30
|
|
|
31
|
-
Sources (Data provenance) should be set on the visualization. To enable this, "EEA Core Metadata" should be
|
|
31
|
+
Sources (Data provenance) should be set on the visualization. To enable this, "EEA Core Metadata" should be checked as behavior on the visualization content-type.
|
|
32
32
|
|
|
33
33
|
controlpanel/dexterity-types/map_visualization
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
After this, sources can be added from the visualization edit interface. "Data Provenance" tab => "Add source"
|
|
36
36
|
|
|
37
37
|
[EEA MAP](https://raw.githubusercontent.com/eea/volto-eea-map/master/docs/volto-eea-map.gif)
|
|
38
38
|
|
|
39
39
|
## Getting started
|
|
40
40
|
|
|
41
|
+
### Upgrade
|
|
42
|
+
|
|
43
|
+
#### 3.0.0 -> requires >= eea.api.dataconnector@7.0
|
|
44
|
+
|
|
41
45
|
### Try volto-eea-map with Docker
|
|
42
46
|
|
|
43
47
|
git clone https://github.com/eea/volto-eea-map.git
|
|
@@ -57,25 +61,25 @@ Go to http://localhost:3000
|
|
|
57
61
|
|
|
58
62
|
1. Start Volto frontend
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
- If you already have a volto project, just update `package.json`:
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
```JSON
|
|
67
|
+
"addons": [
|
|
68
|
+
"@eeacms/volto-eea-map"
|
|
69
|
+
],
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"@eeacms/volto-eea-map": "*"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
71
75
|
|
|
72
|
-
|
|
76
|
+
- If not, create one:
|
|
73
77
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
```
|
|
79
|
+
npm install -g yo @plone/generator-volto
|
|
80
|
+
yo @plone/volto my-volto-project --canary --addon @eeacms/volto-eea-map
|
|
81
|
+
cd my-volto-project
|
|
82
|
+
```
|
|
79
83
|
|
|
80
84
|
1. Install new add-ons and restart Volto:
|
|
81
85
|
|
package/package.json
CHANGED
|
@@ -1,119 +1,84 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import React, { useEffect, useMemo } from 'react';
|
|
2
|
+
import { Message } from 'semantic-ui-react';
|
|
4
3
|
import { connect } from 'react-redux';
|
|
5
4
|
import { compose } from 'redux';
|
|
6
5
|
|
|
6
|
+
import { SidebarPortal } from '@plone/volto/components';
|
|
7
|
+
import { getContent } from '@plone/volto/actions';
|
|
8
|
+
import { flattenToAppURL } from '@plone/volto/helpers';
|
|
7
9
|
import BlockDataForm from '@plone/volto/components/manage/Form/BlockDataForm';
|
|
8
10
|
import Webmap from '@eeacms/volto-eea-map/components/Webmap';
|
|
9
11
|
import ExtraViews from '@eeacms/volto-eea-map/components/ExtraViews';
|
|
10
12
|
|
|
11
|
-
import { expandToBackendURL } from '@plone/volto/helpers';
|
|
12
|
-
|
|
13
13
|
import { Schema } from './Schema';
|
|
14
14
|
import { applyQueriesToMapLayers } from '@eeacms/volto-eea-map/utils';
|
|
15
15
|
|
|
16
|
-
import {
|
|
16
|
+
import { getMapVisualizationData } from './helpers';
|
|
17
17
|
|
|
18
18
|
const Edit = (props) => {
|
|
19
|
+
const { id, block, onChangeBlock, selected, data, getContent } = props;
|
|
19
20
|
const {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
data_query_params,
|
|
22
|
+
enable_queries,
|
|
23
|
+
show_legend = true,
|
|
24
|
+
show_note = true,
|
|
25
|
+
show_sources = true,
|
|
26
|
+
show_more_info = true,
|
|
27
|
+
show_share = true,
|
|
28
|
+
dataprotection = { enabled: true },
|
|
29
|
+
height = '',
|
|
30
|
+
} = data;
|
|
26
31
|
const schema = Schema(props);
|
|
27
32
|
const [mapData, setMapData] = React.useState('');
|
|
28
|
-
const data = React.useMemo(() => props.data, [props.data]);
|
|
29
|
-
const { height = '' } = data;
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
show_legend: true,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
if (!Object.hasOwn(data, 'show_note')) {
|
|
39
|
-
onChangeBlock(block, {
|
|
40
|
-
...data,
|
|
41
|
-
show_note: true,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
if (!Object.hasOwn(data, 'show_sources')) {
|
|
45
|
-
onChangeBlock(block, {
|
|
46
|
-
...data,
|
|
47
|
-
show_sources: true,
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
if (!Object.hasOwn(data, 'show_more_info')) {
|
|
51
|
-
onChangeBlock(block, {
|
|
52
|
-
...data,
|
|
53
|
-
show_more_info: true,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
if (!Object.hasOwn(data, 'dataprotection')) {
|
|
57
|
-
onChangeBlock(block, {
|
|
58
|
-
...data,
|
|
59
|
-
dataprotection: { enabled: true },
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
if (!Object.hasOwn(data, 'show_share')) {
|
|
63
|
-
onChangeBlock(block, {
|
|
64
|
-
...data,
|
|
65
|
-
show_share: true,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
|
-
}, [
|
|
70
|
-
data.show_legend,
|
|
71
|
-
data.show_note,
|
|
72
|
-
data.show_sources,
|
|
73
|
-
data.show_more_info,
|
|
74
|
-
data.dataprotection,
|
|
75
|
-
data.show_share,
|
|
34
|
+
const vis_url = useMemo(() => flattenToAppURL(data.vis_url), [data.vis_url]);
|
|
35
|
+
|
|
36
|
+
const map_visualization_data = useMemo(() => getMapVisualizationData(props), [
|
|
37
|
+
props,
|
|
76
38
|
]);
|
|
77
39
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
const mapVisId = flattenToAppURL(map_visualization_data['@id'] || '');
|
|
42
|
+
if (vis_url && vis_url !== mapVisId) {
|
|
43
|
+
getContent(vis_url, null, id);
|
|
81
44
|
}
|
|
82
|
-
if (!
|
|
45
|
+
if (!vis_url) {
|
|
83
46
|
setMapData('');
|
|
84
47
|
}
|
|
85
|
-
|
|
86
|
-
}, [props.data.vis_url]);
|
|
48
|
+
}, [id, getContent, vis_url, map_visualization_data]);
|
|
87
49
|
|
|
88
50
|
React.useEffect(() => {
|
|
89
51
|
const updatedMapData = applyQueriesToMapLayers(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
52
|
+
map_visualization_data,
|
|
53
|
+
data_query_params,
|
|
54
|
+
enable_queries,
|
|
93
55
|
);
|
|
94
56
|
setMapData(updatedMapData);
|
|
95
|
-
|
|
96
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
97
|
-
}, [props.map_visualization, props.data]);
|
|
57
|
+
}, [map_visualization_data, data_query_params, enable_queries]);
|
|
98
58
|
|
|
99
59
|
return (
|
|
100
60
|
<>
|
|
101
|
-
{
|
|
61
|
+
{!vis_url && (
|
|
62
|
+
<Message>Please select a visualization from block editor.</Message>
|
|
63
|
+
)}
|
|
64
|
+
|
|
65
|
+
{!!vis_url && mapData && (
|
|
102
66
|
<div>
|
|
103
67
|
<Webmap data={mapData} height={height} isEdit={true} />
|
|
104
68
|
<ExtraViews
|
|
105
69
|
data={{
|
|
106
70
|
...data,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
71
|
+
show_legend,
|
|
72
|
+
show_note,
|
|
73
|
+
show_sources,
|
|
74
|
+
show_more_info,
|
|
75
|
+
show_share,
|
|
76
|
+
dataprotection,
|
|
77
|
+
map_visualization_data,
|
|
110
78
|
}}
|
|
111
79
|
/>
|
|
112
80
|
</div>
|
|
113
81
|
)}
|
|
114
|
-
{!mapData && (
|
|
115
|
-
<p>No map view to show. Set visualization in block configuration.</p>
|
|
116
|
-
)}
|
|
117
82
|
<SidebarPortal selected={selected}>
|
|
118
83
|
<BlockDataForm
|
|
119
84
|
block={block}
|
|
@@ -135,27 +100,11 @@ const Edit = (props) => {
|
|
|
135
100
|
export default compose(
|
|
136
101
|
connect(
|
|
137
102
|
(state, props) => ({
|
|
103
|
+
mapContent: state.content.subrequests?.[props.id]?.data,
|
|
138
104
|
data_query: state.content.data.data_query,
|
|
139
|
-
'@id': props.data.vis_url
|
|
140
|
-
? state.map_visualizations?.data[
|
|
141
|
-
expandToBackendURL(props.data.vis_url)
|
|
142
|
-
]?.['@id']
|
|
143
|
-
: props.content?.['@id'],
|
|
144
|
-
map_visualization: props.data.vis_url
|
|
145
|
-
? state.map_visualizations?.data[expandToBackendURL(props.data.vis_url)]
|
|
146
|
-
?.data
|
|
147
|
-
: '',
|
|
148
|
-
data_provenance: props.data.vis_url
|
|
149
|
-
? state.map_visualizations?.data[expandToBackendURL(props.data.vis_url)]
|
|
150
|
-
?.data_provenance
|
|
151
|
-
: '',
|
|
152
|
-
figure_note: props.data.vis_url
|
|
153
|
-
? state.map_visualizations?.data[expandToBackendURL(props.data.vis_url)]
|
|
154
|
-
?.figure_note
|
|
155
|
-
: '',
|
|
156
105
|
}),
|
|
157
106
|
{
|
|
158
|
-
|
|
107
|
+
getContent,
|
|
159
108
|
},
|
|
160
109
|
),
|
|
161
110
|
)(Edit);
|
|
@@ -1,47 +1,39 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import { connect } from 'react-redux';
|
|
4
|
-
import { compose } from 'redux';
|
|
5
|
-
|
|
6
|
-
import { expandToBackendURL } from '@plone/volto/helpers';
|
|
7
|
-
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
8
2
|
import { PrivacyProtection } from '@eeacms/volto-embed';
|
|
9
|
-
|
|
10
3
|
import Webmap from '@eeacms/volto-eea-map/components/Webmap';
|
|
11
4
|
import ExtraViews from '@eeacms/volto-eea-map/components/ExtraViews';
|
|
12
5
|
import { applyQueriesToMapLayers } from '@eeacms/volto-eea-map/utils';
|
|
13
|
-
|
|
6
|
+
|
|
7
|
+
import { getMapVisualizationData } from './helpers';
|
|
14
8
|
|
|
15
9
|
const View = (props) => {
|
|
16
|
-
const { data
|
|
17
|
-
const {
|
|
10
|
+
const { data } = props;
|
|
11
|
+
const {
|
|
12
|
+
data_query_params,
|
|
13
|
+
enable_queries,
|
|
14
|
+
show_legend = true,
|
|
15
|
+
show_note = true,
|
|
16
|
+
show_sources = true,
|
|
17
|
+
show_more_info = true,
|
|
18
|
+
show_share = true,
|
|
19
|
+
dataprotection = { enabled: true },
|
|
20
|
+
height = '',
|
|
21
|
+
} = data;
|
|
18
22
|
|
|
19
|
-
const
|
|
23
|
+
const map_visualization_data = useMemo(() => getMapVisualizationData(props), [
|
|
24
|
+
props,
|
|
25
|
+
]);
|
|
20
26
|
|
|
21
|
-
React.
|
|
22
|
-
if (props.data.vis_url) {
|
|
23
|
-
props.getVisualization(expandToBackendURL(props.data.vis_url));
|
|
24
|
-
}
|
|
25
|
-
if (!props.data.vis_url) {
|
|
26
|
-
setMapData('');
|
|
27
|
-
}
|
|
28
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29
|
-
}, [props.data.vis_url]);
|
|
27
|
+
const [mapData, setMapData] = React.useState('');
|
|
30
28
|
|
|
31
29
|
React.useEffect(() => {
|
|
32
30
|
const updatedMapData = applyQueriesToMapLayers(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
map_visualization_data,
|
|
32
|
+
data_query_params,
|
|
33
|
+
enable_queries,
|
|
36
34
|
);
|
|
37
|
-
|
|
38
35
|
setMapData(updatedMapData);
|
|
39
|
-
|
|
40
|
-
}, [
|
|
41
|
-
props.map_visualization,
|
|
42
|
-
props.data.data_query_params,
|
|
43
|
-
props.data.enable_queries,
|
|
44
|
-
]);
|
|
36
|
+
}, [map_visualization_data, data_query_params, enable_queries]);
|
|
45
37
|
|
|
46
38
|
return (
|
|
47
39
|
<PrivacyProtection
|
|
@@ -49,16 +41,19 @@ const View = (props) => {
|
|
|
49
41
|
className="embed-map-visualization"
|
|
50
42
|
{...props}
|
|
51
43
|
>
|
|
52
|
-
{mapData && (
|
|
44
|
+
{!!mapData && (
|
|
53
45
|
<>
|
|
54
46
|
<Webmap data={mapData} height={height} />
|
|
55
47
|
<ExtraViews
|
|
56
48
|
data={{
|
|
57
49
|
...data,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
50
|
+
show_legend,
|
|
51
|
+
show_note,
|
|
52
|
+
show_sources,
|
|
53
|
+
show_more_info,
|
|
54
|
+
show_share,
|
|
55
|
+
dataprotection,
|
|
56
|
+
map_visualization_data,
|
|
62
57
|
}}
|
|
63
58
|
/>
|
|
64
59
|
</>
|
|
@@ -70,29 +65,4 @@ const View = (props) => {
|
|
|
70
65
|
);
|
|
71
66
|
};
|
|
72
67
|
|
|
73
|
-
export default
|
|
74
|
-
connect(
|
|
75
|
-
(state, props) => ({
|
|
76
|
-
'@id': props.data.vis_url
|
|
77
|
-
? state.map_visualizations?.data[
|
|
78
|
-
expandToBackendURL(props.data.vis_url)
|
|
79
|
-
]?.['@id']
|
|
80
|
-
: props.content?.['@id'],
|
|
81
|
-
map_visualization: props.data.vis_url
|
|
82
|
-
? state.map_visualizations?.data[expandToBackendURL(props.data.vis_url)]
|
|
83
|
-
?.data
|
|
84
|
-
: '',
|
|
85
|
-
data_provenance: props.data.vis_url
|
|
86
|
-
? state.map_visualizations?.data[expandToBackendURL(props.data.vis_url)]
|
|
87
|
-
?.data_provenance
|
|
88
|
-
: '',
|
|
89
|
-
figure_note: props.data.vis_url
|
|
90
|
-
? state.map_visualizations?.data[expandToBackendURL(props.data.vis_url)]
|
|
91
|
-
?.figure_note
|
|
92
|
-
: '',
|
|
93
|
-
}),
|
|
94
|
-
{
|
|
95
|
-
getVisualization,
|
|
96
|
-
},
|
|
97
|
-
),
|
|
98
|
-
)(View);
|
|
68
|
+
export default View;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pickMetadata } from '@eeacms/volto-embed/helpers';
|
|
1
2
|
import { updateBlockQueryFromPageQuery } from '@eeacms/volto-eea-map/utils';
|
|
2
3
|
|
|
3
4
|
const deepUpdateDataQueryParams = (block, data, data_query, onChangeBlock) => {
|
|
@@ -27,4 +28,14 @@ const deepUpdateDataQueryParams = (block, data, data_query, onChangeBlock) => {
|
|
|
27
28
|
}
|
|
28
29
|
};
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
function getMapVisualizationData(props) {
|
|
32
|
+
const content = props.mapContent || {};
|
|
33
|
+
const map_visualization_data =
|
|
34
|
+
content.map_visualization_data || props.data?.map_visualization_data || {};
|
|
35
|
+
return {
|
|
36
|
+
...pickMetadata(content),
|
|
37
|
+
...map_visualization_data,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { deepUpdateDataQueryParams, getMapVisualizationData };
|
|
@@ -16,7 +16,7 @@ const ExtraViews = ({ data, screen }) => {
|
|
|
16
16
|
const toolbar = useRef();
|
|
17
17
|
const [mobile, setMobile] = useState(false);
|
|
18
18
|
const {
|
|
19
|
-
|
|
19
|
+
map_visualization_data = {},
|
|
20
20
|
description,
|
|
21
21
|
show_legend,
|
|
22
22
|
show_viewer,
|
|
@@ -24,10 +24,10 @@ const ExtraViews = ({ data, screen }) => {
|
|
|
24
24
|
show_sources = true,
|
|
25
25
|
show_more_info = true,
|
|
26
26
|
show_share = true,
|
|
27
|
-
data_provenance = {},
|
|
28
|
-
figure_note = [],
|
|
29
27
|
} = data;
|
|
30
28
|
|
|
29
|
+
const { data_provenance = {}, figure_note = [] } = map_visualization_data;
|
|
30
|
+
|
|
31
31
|
useEffect(() => {
|
|
32
32
|
if (toolbar.current) {
|
|
33
33
|
const toolbarParentWidth = toolbar.current.parentElement.offsetWidth;
|
|
@@ -42,17 +42,17 @@ const ExtraViews = ({ data, screen }) => {
|
|
|
42
42
|
|
|
43
43
|
return (
|
|
44
44
|
<>
|
|
45
|
-
{show_legend &&
|
|
46
|
-
<LegendView data={
|
|
45
|
+
{show_legend && map_visualization_data && (
|
|
46
|
+
<LegendView data={map_visualization_data} show_viewer={show_viewer} />
|
|
47
47
|
)}
|
|
48
48
|
<div className={cx('visualization-toolbar', { mobile })} ref={toolbar}>
|
|
49
49
|
<div className="left-col">
|
|
50
|
-
{show_note && <FigureNote
|
|
50
|
+
{show_note && <FigureNote notes={figure_note || []} />}
|
|
51
51
|
{show_sources && <Sources sources={data_provenance?.data} />}
|
|
52
|
-
{show_more_info && <MoreInfo href={
|
|
52
|
+
{show_more_info && <MoreInfo href={map_visualization_data['@id']} />}
|
|
53
53
|
</div>
|
|
54
54
|
<div className="right-col">
|
|
55
|
-
{show_share && <Share href={
|
|
55
|
+
{show_share && <Share href={map_visualization_data['@id']} />}
|
|
56
56
|
</div>
|
|
57
57
|
</div>
|
|
58
58
|
{description && serializeNodes(description)}
|
|
@@ -60,7 +60,7 @@ const Webmap = (props) => {
|
|
|
60
60
|
css: true,
|
|
61
61
|
}).then((modules) => {
|
|
62
62
|
const [
|
|
63
|
-
|
|
63
|
+
MapBlock,
|
|
64
64
|
MapView,
|
|
65
65
|
FeatureLayer,
|
|
66
66
|
MapImageLayer,
|
|
@@ -75,7 +75,7 @@ const Webmap = (props) => {
|
|
|
75
75
|
Fullscreen,
|
|
76
76
|
] = modules;
|
|
77
77
|
setModules({
|
|
78
|
-
|
|
78
|
+
MapBlock,
|
|
79
79
|
MapView,
|
|
80
80
|
FeatureLayer,
|
|
81
81
|
MapImageLayer,
|
|
@@ -125,7 +125,7 @@ const Webmap = (props) => {
|
|
|
125
125
|
const esri = React.useMemo(() => {
|
|
126
126
|
if (Object.keys(modules).length === 0) return {};
|
|
127
127
|
const {
|
|
128
|
-
|
|
128
|
+
MapBlock,
|
|
129
129
|
MapView,
|
|
130
130
|
FeatureLayer,
|
|
131
131
|
MapImageLayer,
|
|
@@ -257,7 +257,7 @@ const Webmap = (props) => {
|
|
|
257
257
|
return customBase;
|
|
258
258
|
};
|
|
259
259
|
|
|
260
|
-
const map = new
|
|
260
|
+
const map = new MapBlock({
|
|
261
261
|
basemap:
|
|
262
262
|
data?.base?.use_custom_base && data?.base?.custom_base_layer
|
|
263
263
|
? setCustomBasemap(data?.base?.custom_base_layer)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import Webmap from '../Webmap';
|
|
3
|
-
import LegendView from '../LegendView';
|
|
4
2
|
import { hasBlocksData } from '@plone/volto/helpers';
|
|
5
3
|
import RenderBlocks from '@plone/volto/components/theme/View/RenderBlocks';
|
|
4
|
+
import { pickMetadata } from '@eeacms/volto-embed/helpers';
|
|
5
|
+
import Webmap from '../Webmap';
|
|
6
|
+
import ExtraViews from '../ExtraViews';
|
|
6
7
|
|
|
7
8
|
const VisualizationView = (props) => {
|
|
8
9
|
const { content = {} } = props;
|
|
@@ -16,7 +17,20 @@ const VisualizationView = (props) => {
|
|
|
16
17
|
) : (
|
|
17
18
|
<>
|
|
18
19
|
<Webmap data={map_visualization_data} />
|
|
19
|
-
<
|
|
20
|
+
<ExtraViews
|
|
21
|
+
data={{
|
|
22
|
+
show_viewer: true,
|
|
23
|
+
show_legend: true,
|
|
24
|
+
show_note: false,
|
|
25
|
+
show_sources: false,
|
|
26
|
+
show_more_info: false,
|
|
27
|
+
show_share: true,
|
|
28
|
+
map_visualization_data: {
|
|
29
|
+
...map_visualization_data,
|
|
30
|
+
...pickMetadata(content),
|
|
31
|
+
},
|
|
32
|
+
}}
|
|
33
|
+
/>
|
|
20
34
|
</>
|
|
21
35
|
)}
|
|
22
36
|
</div>
|
|
@@ -1,12 +1,32 @@
|
|
|
1
|
+
import { connect } from 'react-redux';
|
|
2
|
+
import { pickMetadata } from '@eeacms/volto-embed/helpers';
|
|
1
3
|
import Webmap from '../Webmap';
|
|
2
|
-
import
|
|
4
|
+
import ExtraViews from '../ExtraViews';
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
function VisualizationViewWidget(props) {
|
|
5
7
|
const { value: map_visualization_data = {} } = props;
|
|
8
|
+
|
|
6
9
|
return (
|
|
7
10
|
<>
|
|
8
11
|
<Webmap data={map_visualization_data} />
|
|
9
|
-
<
|
|
12
|
+
<ExtraViews
|
|
13
|
+
data={{
|
|
14
|
+
show_viewer: true,
|
|
15
|
+
show_legend: true,
|
|
16
|
+
show_note: false,
|
|
17
|
+
show_sources: false,
|
|
18
|
+
show_more_info: false,
|
|
19
|
+
show_share: true,
|
|
20
|
+
map_visualization_data: {
|
|
21
|
+
...map_visualization_data,
|
|
22
|
+
...pickMetadata(props.content),
|
|
23
|
+
},
|
|
24
|
+
}}
|
|
25
|
+
/>
|
|
10
26
|
</>
|
|
11
27
|
);
|
|
12
28
|
}
|
|
29
|
+
|
|
30
|
+
export default connect((state) => ({
|
|
31
|
+
content: state.content.data,
|
|
32
|
+
}))(VisualizationViewWidget);
|
package/src/index.js
CHANGED
|
@@ -12,9 +12,6 @@ import VisualizationView from './components/visualization/VisualizationView';
|
|
|
12
12
|
|
|
13
13
|
import SimpleColorPickerWidget from './components/widgets/SimpleColorPickerWidget';
|
|
14
14
|
|
|
15
|
-
import { data_visualizations } from './middlewares';
|
|
16
|
-
import * as addonReducers from './reducers';
|
|
17
|
-
|
|
18
15
|
import './less/global.less';
|
|
19
16
|
|
|
20
17
|
export default (config) => {
|
|
@@ -67,15 +64,5 @@ export default (config) => {
|
|
|
67
64
|
//map viewer for the visualization(content-type)
|
|
68
65
|
config.views.contentTypesViews.map_visualization = VisualizationView;
|
|
69
66
|
|
|
70
|
-
config.settings.storeExtenders = [
|
|
71
|
-
...(config.settings.storeExtenders || []),
|
|
72
|
-
data_visualizations,
|
|
73
|
-
];
|
|
74
|
-
|
|
75
|
-
config.addonReducers = {
|
|
76
|
-
...config.addonReducers,
|
|
77
|
-
...addonReducers,
|
|
78
|
-
};
|
|
79
|
-
|
|
80
67
|
return config;
|
|
81
68
|
};
|
package/src/actionTypes.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const GET_MAP_VISUALIZATION = 'GET_MAP_VISUALIZATION';
|
package/src/actions.js
DELETED
package/src/middlewares/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { GET_MAP_VISUALIZATION } from '../actionTypes';
|
|
2
|
-
|
|
3
|
-
export const data_visualizations = (middlewares) => [
|
|
4
|
-
(store) => (next) => (action) => {
|
|
5
|
-
if (action.type === GET_MAP_VISUALIZATION) {
|
|
6
|
-
store.dispatch({
|
|
7
|
-
type: `${GET_MAP_VISUALIZATION}_PENDING`,
|
|
8
|
-
path: action.path,
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
return next(action);
|
|
12
|
-
},
|
|
13
|
-
...middlewares,
|
|
14
|
-
];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './map_visualizations';
|
package/src/reducers/index.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { GET_MAP_VISUALIZATION } from '../actionTypes';
|
|
2
|
-
|
|
3
|
-
const initialState = {
|
|
4
|
-
data: {},
|
|
5
|
-
error: null,
|
|
6
|
-
loaded: false,
|
|
7
|
-
loading: false,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export default function data_providers(state = initialState, action = {}) {
|
|
11
|
-
const path = action.path
|
|
12
|
-
? action.path.replace(`/@map-visualization`, '')
|
|
13
|
-
: undefined;
|
|
14
|
-
|
|
15
|
-
switch (action.type) {
|
|
16
|
-
case `${GET_MAP_VISUALIZATION}_PENDING`:
|
|
17
|
-
return {
|
|
18
|
-
...state,
|
|
19
|
-
error: null,
|
|
20
|
-
loaded: false,
|
|
21
|
-
loading: true,
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
case `${GET_MAP_VISUALIZATION}_SUCCESS`:
|
|
25
|
-
return {
|
|
26
|
-
...state,
|
|
27
|
-
error: null,
|
|
28
|
-
data: {
|
|
29
|
-
...state.data,
|
|
30
|
-
[path]: action.result.map_visualization,
|
|
31
|
-
},
|
|
32
|
-
loaded: true,
|
|
33
|
-
loading: false,
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
case `${GET_MAP_VISUALIZATION}_FAIL`:
|
|
37
|
-
return {
|
|
38
|
-
...state,
|
|
39
|
-
error: action.error,
|
|
40
|
-
data: { ...state.data },
|
|
41
|
-
loaded: false,
|
|
42
|
-
loading: false,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
default:
|
|
46
|
-
return state;
|
|
47
|
-
}
|
|
48
|
-
}
|