@eeacms/volto-cca-policy 0.1.88 → 0.1.89
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 +42 -8
- package/package.json +4 -3
- package/src/components/manage/Blocks/CountryMapHeatIndex/Filter.jsx +23 -14
- package/src/components/manage/Blocks/CountryMapHeatIndex/Interactions.jsx +124 -0
- package/src/components/manage/Blocks/CountryMapHeatIndex/View.js +153 -132
- package/src/components/manage/Blocks/CountryMapHeatIndex/mapstyle.js +84 -0
- package/src/components/manage/Blocks/CountryMapHeatIndex/styles.less +30 -2
- package/src/components/manage/Blocks/CountryMapObservatory/CountryMapObservatoryOLView.jsx +6 -27
- package/src/components/manage/Blocks/CountryMapProfile/Filter.jsx +10 -1
- package/src/components/manage/Blocks/CountryMapProfile/Interactions.jsx +20 -90
- package/src/components/manage/Blocks/CountryMapProfile/OLView.jsx +12 -40
- package/src/components/manage/Blocks/CountryMapProfile/styles.less +5 -0
- package/src/components/manage/Blocks/Listing/OrganisationCardsListingView.jsx +1 -1
- package/src/components/theme/Views/AdaptationOptionView.jsx +87 -69
- package/src/components/theme/Views/C3SIndicatorView.jsx +40 -24
- package/src/components/theme/Views/CaseStudyView.jsx +85 -64
- package/src/components/theme/Views/GuidanceView.jsx +63 -36
- package/src/components/theme/Views/IndicatorView.jsx +86 -38
- package/src/components/theme/Views/InformationPortalView.jsx +52 -30
- package/src/components/theme/Views/OrganisationView.jsx +70 -55
- package/src/components/theme/Views/ProjectView.jsx +52 -37
- package/src/components/theme/Views/PublicationReportView.jsx +45 -24
- package/src/components/theme/Views/ToolView.jsx +39 -20
- package/src/components/theme/Views/VideoView.jsx +94 -80
- package/src/helpers/ContentMetadata.jsx +39 -354
- package/src/helpers/Utils.jsx +3 -0
- package/src/helpers/country_map/countryMap.js +109 -34
- package/src/helpers/index.js +1 -0
- package/src/index.js +4 -5
- package/theme/globals/mission.less +5 -0
- package/theme/globals/observatory.less +7 -0
- package/theme/globals/site.overrides +0 -9
- package/theme/globals/views.less +52 -47
- package/src/components/manage/Blocks/CountryMapHeatIndex/map-utils.js +0 -542
- package/src/components/manage/Blocks/CountryMapProfile/hocs.jsx +0 -28
- /package/src/{components/manage/Blocks/CountryMapObservatory → helpers/country_map}/hocs.jsx +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,48 @@ 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
|
+
### [0.1.89](https://github.com/eea/volto-cca-policy/compare/0.1.88...0.1.89) - 4 March 2024
|
|
8
|
+
|
|
9
|
+
#### :bug: Bug Fixes
|
|
10
|
+
|
|
11
|
+
- fix: warning messages [kreafox - [`95644f3`](https://github.com/eea/volto-cca-policy/commit/95644f36fe848f52bea700b5a5d0bc3844b7be12)]
|
|
12
|
+
- fix(tests): more cleanup [kreafox - [`93d75db`](https://github.com/eea/volto-cca-policy/commit/93d75dbd30a12e7107dfa3894e69cae7328cfaea)]
|
|
13
|
+
- fix(test): duplicated code issue [kreafox - [`41d511a`](https://github.com/eea/volto-cca-policy/commit/41d511a36905385092c8eb810566732cf4dd31b8)]
|
|
14
|
+
- fix(test): cleanup [kreafox - [`cba73a4`](https://github.com/eea/volto-cca-policy/commit/cba73a483cb2fca461fdb90f7a80258818534ddb)]
|
|
15
|
+
- fix(views): don't show image on db items [kreafox - [`c533e74`](https://github.com/eea/volto-cca-policy/commit/c533e74d705b79e1d36f84d4bf268040a8f21174)]
|
|
16
|
+
- fix: add volto-datablocks to addons [kreafox - [`a4c39fe`](https://github.com/eea/volto-cca-policy/commit/a4c39fe782e4cd717eee19128befb5fc19ecba05)]
|
|
17
|
+
|
|
18
|
+
#### :nail_care: Enhancements
|
|
19
|
+
|
|
20
|
+
- change(views): update db items view layout [kreafox - [`278937f`](https://github.com/eea/volto-cca-policy/commit/278937f28626addb4c4a86ba58fddd237ace296d)]
|
|
21
|
+
|
|
22
|
+
#### :house: Internal changes
|
|
23
|
+
|
|
24
|
+
- style: gallery improvements [kreafox - [`e85af09`](https://github.com/eea/volto-cca-policy/commit/e85af09b2aa52abfc07086b0720df469820d3d55)]
|
|
25
|
+
- style: Automated code fix [eea-jenkins - [`ee38bed`](https://github.com/eea/volto-cca-policy/commit/ee38bedc3da9f40ae66ec62d162d4967008cf909)]
|
|
26
|
+
- style(subsite): CSS fixes [kreafox - [`f6ebc71`](https://github.com/eea/volto-cca-policy/commit/f6ebc711d76cdaf34643ca6ccc80a04046dda892)]
|
|
27
|
+
|
|
28
|
+
#### :hammer_and_wrench: Others
|
|
29
|
+
|
|
30
|
+
- add d3-array to dependencies [kreafox - [`3d234f3`](https://github.com/eea/volto-cca-policy/commit/3d234f304beefe3118a284ae251fade8e1173e34)]
|
|
31
|
+
- Remove unneded import [Tiberiu Ichim - [`8f12b73`](https://github.com/eea/volto-cca-policy/commit/8f12b7358b91015071c0e01578625c8305160eca)]
|
|
32
|
+
- Remove dependency on d3 [Tiberiu Ichim - [`084d437`](https://github.com/eea/volto-cca-policy/commit/084d437e096a8ef0c16083a153d6110f9c16946b)]
|
|
33
|
+
- Remove unneded code [Tiberiu Ichim - [`fbc31b2`](https://github.com/eea/volto-cca-policy/commit/fbc31b2451d3aba0e911be91e90d22ab66be19d3)]
|
|
34
|
+
- Refs #266329 - IndicatorView: render map_graphs - fix null case. [GhitaB - [`5323df0`](https://github.com/eea/volto-cca-policy/commit/5323df0914a3427fe69d5fbf739e2ce20ab881b1)]
|
|
35
|
+
- Refs #266329 - IndicatorView: render map_graphs as iframe (flourish). [GhitaB - [`eda69ea`](https://github.com/eea/volto-cca-policy/commit/eda69eaadbd0c6d7f6815ddb4076c0b166f764ad)]
|
|
36
|
+
- Add volto-datablocks as dependency [Tiberiu Ichim - [`7353625`](https://github.com/eea/volto-cca-policy/commit/7353625729f1c42cde75084d3d58e817cf239537)]
|
|
37
|
+
- country map ol duplicated lines [Tripon Eugen - [`ec68c9c`](https://github.com/eea/volto-cca-policy/commit/ec68c9cbf5bff501312dcbbb2ddaebc4a9efccbb)]
|
|
38
|
+
- country map ol duplicated lines [Tripon Eugen - [`60bee59`](https://github.com/eea/volto-cca-policy/commit/60bee5915254e0453535847d32b54087440bfd60)]
|
|
39
|
+
- country map ol eslint [Tripon Eugen - [`00fb638`](https://github.com/eea/volto-cca-policy/commit/00fb63898eae057aa0898ea2291270335fccca0d)]
|
|
40
|
+
- country map ol duplicated lines [Tripon Eugen - [`de83ae3`](https://github.com/eea/volto-cca-policy/commit/de83ae3f777b5560514c81920c693bb2ede6d0fb)]
|
|
41
|
+
- country map ol duplicated lines [Tripon Eugen - [`1b6f1fd`](https://github.com/eea/volto-cca-policy/commit/1b6f1fd2d6f2b270b94ed8965ac924f75294d722)]
|
|
42
|
+
- country map ol duplicated lines [Tripon Eugen - [`ce47840`](https://github.com/eea/volto-cca-policy/commit/ce47840a8359fa222ef5b5d2cd59edf1faa78af0)]
|
|
43
|
+
- country map ol popup hide [Tripon Eugen - [`39e4800`](https://github.com/eea/volto-cca-policy/commit/39e4800df2adc2cc0753be1dd66bce093c1a2c77)]
|
|
44
|
+
- country map ol withVisibility, popup hide [Tripon Eugen - [`565d55e`](https://github.com/eea/volto-cca-policy/commit/565d55eb11936a86366f7bfd2939239ade86ce70)]
|
|
45
|
+
- country map profile filter title [Tripon Eugen - [`2a4b1cf`](https://github.com/eea/volto-cca-policy/commit/2a4b1cfda934b398e4407f52e5f0de2664c181ec)]
|
|
46
|
+
- country map heat index eslint [Tripon Eugen - [`1fd7829`](https://github.com/eea/volto-cca-policy/commit/1fd782943ee8564bddc13bea9df47af425045bde)]
|
|
47
|
+
- country map heat index eslint [Tripon Eugen - [`b229b69`](https://github.com/eea/volto-cca-policy/commit/b229b690413c4573110bab1063ac3171945b22ca)]
|
|
48
|
+
- country map heat index ol [Tripon Eugen - [`30a3ec1`](https://github.com/eea/volto-cca-policy/commit/30a3ec15e2ca4eee9ba4170eada8e2660d1a9ea6)]
|
|
7
49
|
### [0.1.88](https://github.com/eea/volto-cca-policy/compare/0.1.87...0.1.88) - 1 March 2024
|
|
8
50
|
|
|
9
51
|
#### :bug: Bug Fixes
|
|
@@ -521,13 +563,10 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
521
563
|
- Refs #260715 rast-block wip [Tripon Eugen - [`f19d54e`](https://github.com/eea/volto-cca-policy/commit/f19d54e0b9a6a86bf344eb85b6a1cda7f3de91bf)]
|
|
522
564
|
- Refs #260715 rast-block wip [Tripon Eugen - [`2828537`](https://github.com/eea/volto-cca-policy/commit/2828537b6c084cd1a82162d552fb4ef025b71f9f)]
|
|
523
565
|
- Refs #260715 rast-block updates [Tripon Eugen - [`1e803e5`](https://github.com/eea/volto-cca-policy/commit/1e803e5bd3d3fb7558f261c76c68866be7beb8b5)]
|
|
524
|
-
- test: [JENKINS] Use java17 for sonarqube scanner [valentinab25 - [`0a15e1b`](https://github.com/eea/volto-cca-policy/commit/0a15e1b2ad081233685e80d5b3c60a8663f6b896)]
|
|
525
|
-
- test: [JENKINS] Run cypress in started frontend container [valentinab25 - [`9554e44`](https://github.com/eea/volto-cca-policy/commit/9554e44c92a621a52b2adb5a4830fb084ee5734b)]
|
|
526
566
|
### [0.1.49](https://github.com/eea/volto-cca-policy/compare/0.1.48...0.1.49) - 15 November 2023
|
|
527
567
|
|
|
528
568
|
#### :house: Internal changes
|
|
529
569
|
|
|
530
|
-
- chore: [JENKINS] Refactor automated testing [valentinab25 - [`7b820a6`](https://github.com/eea/volto-cca-policy/commit/7b820a6369c2ddd5203b1a4abe352cb4bb43db7a)]
|
|
531
570
|
- chore: husky, lint-staged use fixed versions [valentinab25 - [`f0a8061`](https://github.com/eea/volto-cca-policy/commit/f0a8061c275c236deb00087c23fac9860a073106)]
|
|
532
571
|
|
|
533
572
|
#### :hammer_and_wrench: Others
|
|
@@ -544,9 +583,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
544
583
|
- Refs #259267 - jenkins test [Tripon Eugen - [`cacd31e`](https://github.com/eea/volto-cca-policy/commit/cacd31e7b1afe0983674ed5c7632d2e1d7fa752e)]
|
|
545
584
|
- Refs #259267 - jenkins [Tripon Eugen - [`5b3affe`](https://github.com/eea/volto-cca-policy/commit/5b3affee8401239de10097884c1b7f2349d15ec0)]
|
|
546
585
|
- Refs #259267 - add When, lead image and title to files [Tripon Eugen - [`2cedb23`](https://github.com/eea/volto-cca-policy/commit/2cedb237f898af9057e13fba94b615ef71077204)]
|
|
547
|
-
- test: [JENKINS] Add cpu limit on cypress docker [valentinab25 - [`4d607a5`](https://github.com/eea/volto-cca-policy/commit/4d607a576e9d0a5c34e48c41b409e7df616ee3d6)]
|
|
548
|
-
- test: [JENKINS] Increase shm-size to cypress docker [valentinab25 - [`b7f74d5`](https://github.com/eea/volto-cca-policy/commit/b7f74d53513a6edbfbca5cb6d19687929bb1e5db)]
|
|
549
|
-
- test: [JENKINS] Improve cypress time [valentinab25 - [`db65617`](https://github.com/eea/volto-cca-policy/commit/db656173391f65157098d95d388c25f6429753d8)]
|
|
550
586
|
- Refs #259267 - cca event blocks attachments and check not mandatoty fields [Tripon Eugen - [`3138e5a`](https://github.com/eea/volto-cca-policy/commit/3138e5afb5bfbdbed14e27ed457b16867b7fa414)]
|
|
551
587
|
- Refs #256681 - Fix error in CCA Event view menu. ([React Intl] An id must be provided to format a message.) [GhitaB - [`517eeb8`](https://github.com/eea/volto-cca-policy/commit/517eeb817264a47bbfd6b9b7d22aaf22d44ed224)]
|
|
552
588
|
- Refs #161485 - Fix ECDE name conflict. [GhitaB - [`8bfd99f`](https://github.com/eea/volto-cca-policy/commit/8bfd99ff68bb82a04d1c0ed625fa514fcf46289e)]
|
|
@@ -763,7 +799,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
763
799
|
|
|
764
800
|
#### :house: Internal changes
|
|
765
801
|
|
|
766
|
-
- chore: [JENKINS] Remove alpha testing version [valentinab25 - [`ad1ced0`](https://github.com/eea/volto-cca-policy/commit/ad1ced0971ba116c13a3b5fcc039172cc915c919)]
|
|
767
802
|
|
|
768
803
|
#### :hammer_and_wrench: Others
|
|
769
804
|
|
|
@@ -1244,7 +1279,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
1244
1279
|
#### :hammer_and_wrench: Others
|
|
1245
1280
|
|
|
1246
1281
|
- Refs #158294 - Update supported languages list. [GhitaB - [`0a4f91f`](https://github.com/eea/volto-cca-policy/commit/0a4f91f39b7edc367bd4c127d6a8f273c7788361)]
|
|
1247
|
-
- Add Sonarqube tag using cca-frontend addons list [EEA Jenkins - [`8f1f9ce`](https://github.com/eea/volto-cca-policy/commit/8f1f9ce6c22805670cc0800d3c779b6d619d0f31)]
|
|
1248
1282
|
### [0.1.1](https://github.com/eea/volto-cca-policy/compare/0.1.0...0.1.1) - 13 December 2022
|
|
1249
1283
|
|
|
1250
1284
|
#### :hammer_and_wrench: Others
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eeacms/volto-cca-policy",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.89",
|
|
4
4
|
"description": "@eeacms/volto-cca-policy: Volto add-on",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"author": "European Environment Agency: IDM2 A-Team",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"@eeacms/volto-widget-dataprovenance",
|
|
24
24
|
"@eeacms/volto-accordion-block",
|
|
25
25
|
"@eeacms/volto-slate-label",
|
|
26
|
+
"@eeacms/volto-datablocks",
|
|
26
27
|
"@eeacms/volto-eea-design-system",
|
|
27
28
|
"@eeacms/volto-eea-website-theme",
|
|
28
29
|
"@eeacms/volto-globalsearch"
|
|
@@ -30,6 +31,7 @@
|
|
|
30
31
|
"dependencies": {
|
|
31
32
|
"@eeacms/volto-accordion-block": "*",
|
|
32
33
|
"@eeacms/volto-block-style": "*",
|
|
34
|
+
"@eeacms/volto-datablocks": "*",
|
|
33
35
|
"@eeacms/volto-eea-design-system": "*",
|
|
34
36
|
"@eeacms/volto-eea-website-theme": "*",
|
|
35
37
|
"@eeacms/volto-globalsearch": "*",
|
|
@@ -39,9 +41,8 @@
|
|
|
39
41
|
"@eeacms/volto-widget-dataprovenance": "*",
|
|
40
42
|
"@eeacms/volto-widget-geolocation": "*",
|
|
41
43
|
"@eeacms/volto-widget-temporal-coverage": "*",
|
|
42
|
-
"d3": "4",
|
|
43
|
-
"d3-geo": "3",
|
|
44
44
|
"query-string": "7.1.0",
|
|
45
|
+
"d3-array": "^2.12.1",
|
|
45
46
|
"react-visibility-sensor": "5.1.1"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
@@ -1,29 +1,38 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Radio } from 'semantic-ui-react';
|
|
3
|
+
|
|
4
|
+
function hidePopup() {
|
|
5
|
+
const collections = document.getElementsByClassName('map-tooltip');
|
|
6
|
+
for (let i = 0; i < collections.length; i++) {
|
|
7
|
+
collections[i].style.visibility = 'hidden';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
1
11
|
export default function Filter(props) {
|
|
2
12
|
const { thematicMapMode, setThematicMapMode } = props;
|
|
3
13
|
return (
|
|
4
14
|
<>
|
|
5
|
-
<
|
|
15
|
+
<p className="title">Choose thematic map:</p>
|
|
6
16
|
<div id="sections-selector">
|
|
7
|
-
<
|
|
8
|
-
|
|
17
|
+
<Radio
|
|
18
|
+
label="Heat health action plans (HHAP)"
|
|
9
19
|
name="country-map-section"
|
|
10
20
|
value="hhap"
|
|
11
|
-
checked=
|
|
12
|
-
onChange={(
|
|
13
|
-
setThematicMapMode(
|
|
21
|
+
checked={thematicMapMode === 'hhap'}
|
|
22
|
+
onChange={(_e, { value }) => {
|
|
23
|
+
setThematicMapMode(value);
|
|
24
|
+
hidePopup();
|
|
14
25
|
}}
|
|
15
26
|
/>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<input
|
|
19
|
-
type="radio"
|
|
27
|
+
<Radio
|
|
28
|
+
label="Heat health warning systems (HHWS)"
|
|
20
29
|
name="country-map-section"
|
|
21
30
|
value="hhws"
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
checked={thematicMapMode === 'hhws'}
|
|
32
|
+
onChange={(_e, { value }) => {
|
|
33
|
+
setThematicMapMode(value);
|
|
24
34
|
}}
|
|
25
35
|
/>
|
|
26
|
-
Heat health warning systems (HHWS)
|
|
27
36
|
</div>
|
|
28
37
|
|
|
29
38
|
{thematicMapMode === 'hhap' && (
|
|
@@ -41,7 +50,7 @@ export default function Filter(props) {
|
|
|
41
50
|
<p className="legend-text">No HHAP</p>
|
|
42
51
|
</div>
|
|
43
52
|
<div className="legend-el">
|
|
44
|
-
<span className="country-
|
|
53
|
+
<span className="country-none legend-box"></span>
|
|
45
54
|
<p className="legend-text">No information</p>
|
|
46
55
|
</div>
|
|
47
56
|
</div>
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
euCountryNames,
|
|
5
|
+
setTooltipVisibility,
|
|
6
|
+
getClosestFeatureToCoordinate,
|
|
7
|
+
} from '@eeacms/volto-cca-policy/helpers/country_map/countryMap';
|
|
8
|
+
import { useMapContext } from '@eeacms/volto-openlayers-map/api';
|
|
9
|
+
|
|
10
|
+
export const Interactions = ({
|
|
11
|
+
tooltipRef,
|
|
12
|
+
// onFeatureClick,
|
|
13
|
+
countries_metadata,
|
|
14
|
+
// baseUrl,
|
|
15
|
+
highlight,
|
|
16
|
+
setStateHighlight,
|
|
17
|
+
euCountryFeatures,
|
|
18
|
+
thematicMapMode,
|
|
19
|
+
}) => {
|
|
20
|
+
const map = useMapContext().map;
|
|
21
|
+
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
if (!map) return;
|
|
24
|
+
|
|
25
|
+
map.on('pointermove', function (evt) {
|
|
26
|
+
if (evt.dragging) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const feature = getClosestFeatureToCoordinate(
|
|
31
|
+
evt.coordinate,
|
|
32
|
+
euCountryFeatures.current,
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
highlight.current = feature && feature.get('na');
|
|
36
|
+
setStateHighlight(highlight.current);
|
|
37
|
+
|
|
38
|
+
// const domEvt = evt.originalEvent;
|
|
39
|
+
// const pixel = map.getEventPixel(evt.originalEvent);
|
|
40
|
+
// const feature = map.forEachFeatureAtPixel(pixel, function (feature) {
|
|
41
|
+
// return feature;
|
|
42
|
+
// });
|
|
43
|
+
// console.log('current feature', feature.get('na'));
|
|
44
|
+
// console.log('FEATURE:', feature?.get('na') || 'NA');
|
|
45
|
+
// console.log('HIGHLIGHT:', highlight?.get('na') || 'NA');
|
|
46
|
+
// if (feature && euCountryNames.includes(feature.get('na'))) {
|
|
47
|
+
// console.log('FEATURE IS EUROPE COUNTRY');
|
|
48
|
+
// }
|
|
49
|
+
// if (feature !== highlight) {
|
|
50
|
+
// if (highlight) {
|
|
51
|
+
// try {
|
|
52
|
+
// map.getTargetElement().style.cursor = '';
|
|
53
|
+
// // overlaySource.removeFeature(highlight);
|
|
54
|
+
// } catch {}
|
|
55
|
+
// }
|
|
56
|
+
// if (feature && euCountryNames.includes(feature.get('na'))) {
|
|
57
|
+
// // overlaySource.addFeature(feature);
|
|
58
|
+
// map.getTargetElement().style.cursor = 'pointer';
|
|
59
|
+
// const node = tooltipRef.current;
|
|
60
|
+
// setTooltipVisibility(node, feature.get('na'), domEvt, true);
|
|
61
|
+
// highlight.current = feature.get('na');
|
|
62
|
+
// }
|
|
63
|
+
// } else {
|
|
64
|
+
// // setTooltipVisibility(tooltipRef.current, null, domEvt, false);
|
|
65
|
+
// }
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
map.on('click', function (evt) {
|
|
69
|
+
if (evt.dragging) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const domEvt = evt.originalEvent;
|
|
73
|
+
// const pixel = map.getEventPixel(evt.originalEvent);
|
|
74
|
+
|
|
75
|
+
const feature = getClosestFeatureToCoordinate(
|
|
76
|
+
evt.coordinate,
|
|
77
|
+
euCountryFeatures.current,
|
|
78
|
+
);
|
|
79
|
+
let countryName = feature.get('na');
|
|
80
|
+
if (
|
|
81
|
+
Object.hasOwn(countries_metadata, countryName) &&
|
|
82
|
+
thematicMapMode === 'hhws' &&
|
|
83
|
+
euCountryNames.includes(countryName) &&
|
|
84
|
+
countries_metadata[countryName].hhws === 'HWWS exists'
|
|
85
|
+
) {
|
|
86
|
+
let metadata = countries_metadata[countryName];
|
|
87
|
+
if (metadata === undefined) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
let tooltipContent = '<strong>Heat index of HHWS:</strong> ';
|
|
91
|
+
map.getTargetElement().style.cursor = 'pointer';
|
|
92
|
+
const node = tooltipRef.current;
|
|
93
|
+
let tooltipContentDiv =
|
|
94
|
+
`<div id="country-name">
|
|
95
|
+
<h3>` +
|
|
96
|
+
countryName +
|
|
97
|
+
`</h3>
|
|
98
|
+
</div><div class="tooltip-content"><span>` +
|
|
99
|
+
tooltipContent +
|
|
100
|
+
countries_metadata[countryName].heat_index_description +
|
|
101
|
+
`</span><br/><br/><span><a href="` +
|
|
102
|
+
countries_metadata[countryName].website +
|
|
103
|
+
`">HHWS website</a></span></div>`;
|
|
104
|
+
setTooltipVisibility(
|
|
105
|
+
node,
|
|
106
|
+
'<div class="country-tooltip">' + tooltipContentDiv + '</div>',
|
|
107
|
+
domEvt,
|
|
108
|
+
true,
|
|
109
|
+
);
|
|
110
|
+
} else {
|
|
111
|
+
const collections = document.getElementsByClassName('map-tooltip');
|
|
112
|
+
for (let i = 0; i < collections.length; i++) {
|
|
113
|
+
collections[i].style.visibility = 'hidden';
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// if (feature) {
|
|
118
|
+
// onFeatureClick(feature);
|
|
119
|
+
// }
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
// }, [map, tooltipRef, onFeatureClick]);
|
|
123
|
+
return null;
|
|
124
|
+
};
|
|
@@ -1,153 +1,179 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
|
|
3
|
-
import { Grid } from 'semantic-ui-react';
|
|
1
|
+
import React from 'react';
|
|
4
2
|
import { compose } from 'redux';
|
|
5
3
|
import { clientOnly } from '@eeacms/volto-cca-policy/helpers';
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
|
|
5
|
+
import { Map, Layer, Layers, Controls } from '@eeacms/volto-openlayers-map/api';
|
|
6
|
+
import { openlayers as ol } from '@eeacms/volto-openlayers-map';
|
|
7
|
+
import {
|
|
8
|
+
euCountryNames as euCountryNamesRaw,
|
|
9
|
+
tooltipStyle,
|
|
10
|
+
getImageUrl,
|
|
11
|
+
adjustEuCountryNames,
|
|
12
|
+
} from '@eeacms/volto-cca-policy/helpers/country_map/countryMap';
|
|
13
|
+
import { withGeoJsonData } from '@eeacms/volto-cca-policy/helpers/country_map/hocs';
|
|
14
|
+
|
|
15
|
+
import withResponsiveContainer from '../withResponsiveContainer';
|
|
16
|
+
import withVisibilitySensor from '../withVisibilitySensor';
|
|
17
|
+
import { makeStyles } from './mapstyle';
|
|
18
|
+
import { Interactions } from './Interactions';
|
|
10
19
|
|
|
11
20
|
import Filter from './Filter';
|
|
21
|
+
import { Grid } from 'semantic-ui-react';
|
|
22
|
+
import { useCountriesMetadata } from './hooks';
|
|
23
|
+
import { addAppURL } from '@plone/volto/helpers';
|
|
12
24
|
|
|
13
|
-
import flags from './flags.js';
|
|
14
25
|
import './styles.less';
|
|
15
26
|
|
|
16
|
-
|
|
27
|
+
// const url =
|
|
28
|
+
// 'https://raw.githubusercontent.com/eurostat/Nuts2json/master/pub/v2/2021/4326/20M/cntrg.json';
|
|
17
29
|
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const withCountriesData = (WrappedComponent) => {
|
|
21
|
-
function WithCountriesDataWrapped(props) {
|
|
22
|
-
let [cpath, setCpath] = React.useState();
|
|
23
|
-
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
if (!cpath) {
|
|
26
|
-
import('./euro-countries-simplified.js').then((mod) => {
|
|
27
|
-
const _cpath = mod.default;
|
|
28
|
-
_cpath.features = _cpath.features.map(function (c) {
|
|
29
|
-
//console.log(c);
|
|
30
|
-
var name = c.properties.SHRT_ENGL;
|
|
31
|
-
if (!name) {
|
|
32
|
-
// console.log('No flag for', c.properties);
|
|
33
|
-
return c;
|
|
34
|
-
} else if (name === 'Czechia') {
|
|
35
|
-
name = 'Czech Republic';
|
|
36
|
-
}
|
|
37
|
-
var cname = name.replace(' ', '_');
|
|
38
|
-
flags.forEach(function (f) {
|
|
39
|
-
if (f.indexOf(cname) > -1) {
|
|
40
|
-
c.url = f;
|
|
41
|
-
//console.log(c.url);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return c;
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
setCpath(_cpath);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}, [cpath]);
|
|
30
|
+
const View = (props) => {
|
|
31
|
+
const { geofeatures, projection } = props;
|
|
51
32
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return WithCountriesDataWrapped;
|
|
55
|
-
};
|
|
33
|
+
const highlight = React.useRef();
|
|
34
|
+
const [stateHighlight, setStateHighlight] = React.useState();
|
|
56
35
|
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const
|
|
36
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37
|
+
const styles = React.useMemo(() => makeStyles(highlight), [stateHighlight]);
|
|
38
|
+
const tooltipRef = React.useRef();
|
|
39
|
+
const [tileWMSSources, setTileWMSSources] = React.useState();
|
|
40
|
+
const [euCountriesSource, setEuCountriessource] = React.useState();
|
|
61
41
|
const [thematicMapMode, setThematicMapMode] = React.useState('hhap');
|
|
62
|
-
|
|
42
|
+
const countries_metadata_url = '/en/@@countries-heat-index-json?langflag=1';
|
|
63
43
|
const countries_metadata = useCountriesMetadata(
|
|
64
44
|
addAppURL(countries_metadata_url),
|
|
65
45
|
);
|
|
46
|
+
const euCountryNames = adjustEuCountryNames(euCountryNamesRaw);
|
|
47
|
+
|
|
48
|
+
const euCountryFeatures = React.useRef();
|
|
49
|
+
|
|
50
|
+
React.useEffect(() => {
|
|
51
|
+
const features = new ol.format.GeoJSON().readFeatures(geofeatures);
|
|
52
|
+
const filtered = features.filter((f) =>
|
|
53
|
+
euCountryNames.includes(f.get('na')),
|
|
54
|
+
);
|
|
55
|
+
//Update name for Bosnia and Herzegovina
|
|
56
|
+
for (let i in features) {
|
|
57
|
+
if (features[i].get('na').includes('Bosnia and Herzegovina')) {
|
|
58
|
+
features[i].set('na', 'Bosnia-Herzegovina');
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
height,
|
|
133
|
-
cpath,
|
|
134
|
-
d3Geo,
|
|
135
|
-
thematicMapMode,
|
|
136
|
-
countries_metadata,
|
|
137
|
-
]); // redraw chart if data changes
|
|
63
|
+
euCountryFeatures.current = filtered;
|
|
64
|
+
|
|
65
|
+
filtered.forEach((feature) => {
|
|
66
|
+
let countryName = feature.get('na');
|
|
67
|
+
if (countryName === 'Türkiye') {
|
|
68
|
+
countryName = 'Turkey';
|
|
69
|
+
}
|
|
70
|
+
if (Object.hasOwn(countries_metadata, countryName)) {
|
|
71
|
+
let metadata = countries_metadata[countryName];
|
|
72
|
+
if (metadata !== undefined) {
|
|
73
|
+
if (thematicMapMode === 'hhap') {
|
|
74
|
+
switch (metadata.hhap) {
|
|
75
|
+
case 'National HHAP':
|
|
76
|
+
feature.set('fillColor', 'blue1');
|
|
77
|
+
break;
|
|
78
|
+
case 'Subnational or local HHAP':
|
|
79
|
+
feature.set('fillColor', 'blue2');
|
|
80
|
+
break;
|
|
81
|
+
case 'No HHAP':
|
|
82
|
+
feature.set('fillColor', 'gray1');
|
|
83
|
+
break;
|
|
84
|
+
case 'No information':
|
|
85
|
+
feature.set('fillColor', 'gray2');
|
|
86
|
+
break;
|
|
87
|
+
default:
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
switch (metadata.hhws) {
|
|
91
|
+
case 'HWWS exists':
|
|
92
|
+
feature.set('fillColor', 'blue1');
|
|
93
|
+
break;
|
|
94
|
+
case 'No information':
|
|
95
|
+
feature.set('fillColor', 'gray2');
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
setTileWMSSources([
|
|
105
|
+
new ol.source.TileWMS({
|
|
106
|
+
url: 'https://gisco-services.ec.europa.eu/maps/service',
|
|
107
|
+
params: {
|
|
108
|
+
// LAYERS: 'OSMBlossomComposite', OSMCartoComposite, OSMPositronComposite
|
|
109
|
+
LAYERS: 'OSMBrightBackground',
|
|
110
|
+
TILED: true,
|
|
111
|
+
},
|
|
112
|
+
serverType: 'geoserver',
|
|
113
|
+
transition: 0,
|
|
114
|
+
}),
|
|
115
|
+
]);
|
|
116
|
+
|
|
117
|
+
filtered.forEach((feature) => {
|
|
118
|
+
const img = new Image();
|
|
119
|
+
img.onload = function () {
|
|
120
|
+
feature.set('flag', img);
|
|
121
|
+
};
|
|
122
|
+
img.src = getImageUrl(feature);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const euSource = new ol.source.Vector({ features: filtered });
|
|
126
|
+
setEuCountriessource(euSource);
|
|
127
|
+
}, [geofeatures, countries_metadata, thematicMapMode, euCountryNames]);
|
|
138
128
|
|
|
139
129
|
return (
|
|
140
130
|
<div>
|
|
141
131
|
<Grid columns="12">
|
|
142
132
|
<Grid.Column mobile={9} tablet={9} computer={10} className="col-left">
|
|
143
|
-
|
|
133
|
+
{tileWMSSources ? (
|
|
134
|
+
<Map
|
|
135
|
+
view={{
|
|
136
|
+
center: ol.proj.fromLonLat([10, 50], projection),
|
|
137
|
+
projection,
|
|
138
|
+
showFullExtent: true,
|
|
139
|
+
zoom: 4,
|
|
140
|
+
}}
|
|
141
|
+
pixelRatio={1}
|
|
142
|
+
>
|
|
143
|
+
<div
|
|
144
|
+
ref={tooltipRef}
|
|
145
|
+
style={tooltipStyle}
|
|
146
|
+
className="map-tooltip"
|
|
147
|
+
></div>
|
|
148
|
+
<Controls attribution={false} />
|
|
149
|
+
<Layers>
|
|
150
|
+
{props.mode !== 'edit' && (
|
|
151
|
+
<Interactions
|
|
152
|
+
tooltipRef={tooltipRef}
|
|
153
|
+
// onFeatureClick={onFeatureClick}
|
|
154
|
+
countries_metadata={countries_metadata}
|
|
155
|
+
thematicMapMode={thematicMapMode}
|
|
156
|
+
euCountryFeatures={euCountryFeatures}
|
|
157
|
+
highlight={highlight}
|
|
158
|
+
setStateHighlight={setStateHighlight}
|
|
159
|
+
/>
|
|
160
|
+
)}
|
|
161
|
+
<Layer.Vector
|
|
162
|
+
source={euCountriesSource}
|
|
163
|
+
zIndex={7}
|
|
164
|
+
style={styles.eucountriesStyle}
|
|
165
|
+
/>
|
|
166
|
+
<Layer.Tile source={tileWMSSources[0]} zIndex={0} />
|
|
167
|
+
</Layers>
|
|
168
|
+
</Map>
|
|
169
|
+
) : null}
|
|
144
170
|
</Grid.Column>
|
|
145
171
|
<Grid.Column
|
|
146
172
|
mobile={3}
|
|
147
173
|
tablet={3}
|
|
148
174
|
computer={2}
|
|
149
175
|
className="col-left"
|
|
150
|
-
id="
|
|
176
|
+
id="country-map-filter"
|
|
151
177
|
>
|
|
152
178
|
<Filter
|
|
153
179
|
thematicMapMode={thematicMapMode}
|
|
@@ -160,13 +186,8 @@ const CountryMapObservatoryView = (props) => {
|
|
|
160
186
|
};
|
|
161
187
|
|
|
162
188
|
export default compose(
|
|
189
|
+
withGeoJsonData,
|
|
163
190
|
clientOnly,
|
|
164
|
-
injectLazyLibs(['d3', 'd3Geo']),
|
|
165
191
|
withResponsiveContainer('countryMapHeatIndex'),
|
|
166
|
-
|
|
167
|
-
)(
|
|
168
|
-
|
|
169
|
-
// import loadable from '@loadable/component';
|
|
170
|
-
//import * as d3 from 'd3';
|
|
171
|
-
// import cpath from './euro-countries-simplified';
|
|
172
|
-
//
|
|
192
|
+
withVisibilitySensor(),
|
|
193
|
+
)(View);
|