@eeacms/volto-tableau 6.0.0 → 6.0.2
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 +37 -4
- package/Dockerfile +1 -1
- package/Jenkinsfile +153 -135
- package/Makefile +35 -2
- package/cypress.config.js +2 -2
- package/package.json +1 -1
- package/src/Blocks/EmbedTableauVisualization/View.jsx +8 -10
- package/src/Blocks/EmbedTableauVisualization/View.test.jsx +2 -2
- package/src/Blocks/EmbedTableauVisualization/schema.js +8 -4
- package/src/Tableau/Tableau.jsx +47 -26
- package/src/Utils/{Download/Download.jsx → Download.jsx} +31 -38
- package/src/Utils/index.js +2 -0
- package/src/Views/VisualizationView.jsx +4 -0
- package/src/Widgets/VisualizationViewWidget.jsx +6 -1
- package/src/Widgets/VisualizationViewWidget.test.jsx +33 -0
- package/src/Widgets/VisualizationWidget.jsx +16 -4
- package/src/Widgets/VisualizationWidget.test.jsx +45 -0
- package/src/Widgets/schema.js +2 -1
- package/src/helpers.js +28 -47
- package/src/hooks.js +22 -6
- package/src/less/tableau.less +8 -227
- package/src/less/tableau.variables +4 -3
- package/src/Utils/Download/Download.test.jsx +0 -22
- package/src/Utils/FigureNote/FigureNote.jsx +0 -43
- package/src/Utils/FigureNote/FigureNote.test.jsx +0 -25
- package/src/Utils/MoreInfoLink/MoreInfoLink.jsx +0 -22
- package/src/Utils/MoreInfoLink/MoreInfoLink.test.jsx +0 -24
- package/src/Utils/Share/Share.jsx +0 -69
- package/src/Utils/Sources/Sources.jsx +0 -67
- /package/src/Utils/{JsonCodeSnippet/JsonCodeSnippet.jsx → JsonCodeSnippet.jsx} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,15 +4,37 @@ 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
|
-
### [6.0.
|
|
7
|
+
### [6.0.2](https://github.com/eea/volto-tableau/compare/6.0.1...6.0.2) - 10 November 2023
|
|
8
8
|
|
|
9
|
-
#### :
|
|
9
|
+
#### :rocket: New Features
|
|
10
10
|
|
|
11
|
-
-
|
|
11
|
+
- feat: fix tableau not loading on hard reload [Miu Razvan - [`f37867f`](https://github.com/eea/volto-tableau/commit/f37867f3d07c5dd05b91ea0b758eced631afd458)]
|
|
12
|
+
- feat: mobile toolbar [Miu Razvan - [`d4f0812`](https://github.com/eea/volto-tableau/commit/d4f08122a743f4787177d6d2bc3aabeebf6bf311)]
|
|
13
|
+
|
|
14
|
+
### [6.0.1](https://github.com/eea/volto-tableau/compare/6.0.0...6.0.1) - 10 November 2023
|
|
15
|
+
|
|
16
|
+
#### :house: Internal changes
|
|
17
|
+
|
|
18
|
+
- chore: [JENKINS] Refactor automated testing [valentinab25 - [`903b90a`](https://github.com/eea/volto-tableau/commit/903b90a2df0abc183aa68d99a89bb688de3a0c73)]
|
|
12
19
|
|
|
13
20
|
#### :hammer_and_wrench: Others
|
|
14
21
|
|
|
15
|
-
-
|
|
22
|
+
- tests: add missing imports [kreafox - [`68289f0`](https://github.com/eea/volto-tableau/commit/68289f0a0d95388751487635cfefbf992cd2f3ee)]
|
|
23
|
+
- tests: add missing imports [kreafox - [`fc5adc2`](https://github.com/eea/volto-tableau/commit/fc5adc2ab4d6fa56ac2b83d88a3a812dde427188)]
|
|
24
|
+
- tests: update volto version in Jenkinsfile [kreafox - [`3271a6c`](https://github.com/eea/volto-tableau/commit/3271a6c611d19511d5db67be9e29104c03b3f027)]
|
|
25
|
+
- tests: increase coverage [kreafox - [`ecb9262`](https://github.com/eea/volto-tableau/commit/ecb92625a44365faf4c39f0ff3f02ccc4ca21656)]
|
|
26
|
+
- Fix tableau height [kreafox - [`6194c24`](https://github.com/eea/volto-tableau/commit/6194c2405e2bd93aba9865caed76292cd55193d3)]
|
|
27
|
+
- Show share & download button on widget view [kreafox - [`a66e253`](https://github.com/eea/volto-tableau/commit/a66e2537d08dc7129e249c28e1daa27246c88815)]
|
|
28
|
+
- test: [JENKINS] Add cpu limit on cypress docker [valentinab25 - [`9d2189d`](https://github.com/eea/volto-tableau/commit/9d2189d4edb13dd449d75cd6dd9052bbed67304d)]
|
|
29
|
+
- test: [JENKINS] Increase shm-size to cypress docker [valentinab25 - [`f2fa3f9`](https://github.com/eea/volto-tableau/commit/f2fa3f9ccabab918586179ac16ead44e2eba8498)]
|
|
30
|
+
- test: [JENKINS] Improve cypress time [valentinab25 - [`5748183`](https://github.com/eea/volto-tableau/commit/5748183c27dae18a4ebbc067d659cbc24cad8f71)]
|
|
31
|
+
- use toolbar from volto-embed [Miu Razvan - [`1a232a1`](https://github.com/eea/volto-tableau/commit/1a232a15f2bbe05da75307800590d0a0a1c4996b)]
|
|
32
|
+
## [6.0.0](https://github.com/eea/volto-tableau/compare/5.0.2...6.0.0) - 30 October 2023
|
|
33
|
+
|
|
34
|
+
#### :house: Documentation changes
|
|
35
|
+
|
|
36
|
+
- docs: add demo gif [ana-oprea - [`a9ccb11`](https://github.com/eea/volto-tableau/commit/a9ccb1194ba6bcac99649b586113fe4f7c26a7eb)]
|
|
37
|
+
|
|
16
38
|
### [5.0.2](https://github.com/eea/volto-tableau/compare/5.0.1...5.0.2) - 24 October 2023
|
|
17
39
|
|
|
18
40
|
#### :rocket: New Features
|
|
@@ -63,6 +85,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
63
85
|
- test: change volto version in Jenkinsfile [ana-oprea - [`347aceb`](https://github.com/eea/volto-tableau/commit/347aceb07d152fddeebbf3a7e7a6ac9c55dc21ba)]
|
|
64
86
|
- test: increase cypress timeout [ana-oprea - [`bdf4408`](https://github.com/eea/volto-tableau/commit/bdf44083cd84c96b4914d3f8a3bb17c5187f191c)]
|
|
65
87
|
- test: EN locales, pre-commit fix, feature PRs checks Refs #257193 [valentinab25 - [`caff974`](https://github.com/eea/volto-tableau/commit/caff9742a703b224133a8dd2a969629e70c9fd33)]
|
|
88
|
+
- test: Fix eslint and yarn i18n [Alin Voinea - [`b8be7fb`](https://github.com/eea/volto-tableau/commit/b8be7fb9ab10faed0a1be8ce7e3d4e7c78ebe020)]
|
|
66
89
|
- i18n: Add en [Alin Voinea - [`c5e20dd`](https://github.com/eea/volto-tableau/commit/c5e20ddea25c830ac80665ee9a71e557e8cd117d)]
|
|
67
90
|
- test: Update Makefile and docker-compose to align it with Jenkinsfile [valentinab25 - [`2116ff9`](https://github.com/eea/volto-tableau/commit/2116ff95c6454e813bdca44e6c3aa81fa0a916b8)]
|
|
68
91
|
## [5.0.0](https://github.com/eea/volto-tableau/compare/4.1.1...5.0.0) - 25 July 2023
|
|
@@ -74,17 +97,21 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
74
97
|
#### :hammer_and_wrench: Others
|
|
75
98
|
|
|
76
99
|
- Release 5.0.0 [Alin Voinea - [`97c98e9`](https://github.com/eea/volto-tableau/commit/97c98e98b1295a4ad45756326dc20cd59517515f)]
|
|
100
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`2acb3a5`](https://github.com/eea/volto-tableau/commit/2acb3a5490f62ce0a95ebbd03c32874ac3a42603)]
|
|
77
101
|
### [4.1.1](https://github.com/eea/volto-tableau/compare/4.1.0...4.1.1) - 21 July 2023
|
|
78
102
|
|
|
79
103
|
#### :hammer_and_wrench: Others
|
|
80
104
|
|
|
81
105
|
- Add VisualizationViewWidget [Tiberiu Ichim - [`fa881cb`](https://github.com/eea/volto-tableau/commit/fa881cbc3643a46697fb16d1c86ada1d4121a46a)]
|
|
106
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`cbcbad2`](https://github.com/eea/volto-tableau/commit/cbcbad26f7aa3683122199c8d5cbd142903df93b)]
|
|
107
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`51abe6d`](https://github.com/eea/volto-tableau/commit/51abe6d4db80825fe2e396e04c7003c6ad79b480)]
|
|
82
108
|
### [4.1.0](https://github.com/eea/volto-tableau/compare/4.0.0...4.1.0) - 15 June 2023
|
|
83
109
|
|
|
84
110
|
## [4.0.0](https://github.com/eea/volto-tableau/compare/3.0.8...4.0.0) - 13 June 2023
|
|
85
111
|
|
|
86
112
|
#### :house: Internal changes
|
|
87
113
|
|
|
114
|
+
- chore: [JENKINS] Remove alpha testing version [valentinab25 - [`e33bb21`](https://github.com/eea/volto-tableau/commit/e33bb21eb429c33e3a15d771487a1c9af8ccb0d5)]
|
|
88
115
|
|
|
89
116
|
#### :hammer_and_wrench: Others
|
|
90
117
|
|
|
@@ -116,6 +143,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
116
143
|
|
|
117
144
|
#### :hammer_and_wrench: Others
|
|
118
145
|
|
|
146
|
+
- Add Sonarqube tag using industry-frontend addons list [EEA Jenkins - [`f5deccd`](https://github.com/eea/volto-tableau/commit/f5deccd84372752908b300c5cfd78134818e5ce4)]
|
|
119
147
|
### [3.0.6](https://github.com/eea/volto-tableau/compare/3.0.5...3.0.6) - 30 January 2023
|
|
120
148
|
|
|
121
149
|
### [3.0.5](https://github.com/eea/volto-tableau/compare/3.0.4...3.0.5) - 26 January 2023
|
|
@@ -187,6 +215,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
187
215
|
- Update commands.js [Nilesh - [`7c48437`](https://github.com/eea/volto-tableau/commit/7c4843780efb9b85a4728de73c00d831c1d8fdcf)]
|
|
188
216
|
- Update e2e.js [Nilesh - [`f67b45c`](https://github.com/eea/volto-tableau/commit/f67b45c170f58f8d0301192994226f173e4cb00a)]
|
|
189
217
|
- latest volto compatibility refs #154757 [nileshgulia1 - [`881ba48`](https://github.com/eea/volto-tableau/commit/881ba482dc9b82e7fdac16549d41e80a6d26b3de)]
|
|
218
|
+
- Add Sonarqube tag using marine-frontend addons list [EEA Jenkins - [`58e25df`](https://github.com/eea/volto-tableau/commit/58e25df2291add09670143bee54cde103ee835b9)]
|
|
190
219
|
### [1.3.0](https://github.com/eea/volto-tableau/compare/1.2.5...1.3.0) - 28 September 2022
|
|
191
220
|
|
|
192
221
|
#### :hammer_and_wrench: Others
|
|
@@ -200,11 +229,15 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
200
229
|
- Use volto 16 alpha 14 [Miu Razvan - [`93641be`](https://github.com/eea/volto-tableau/commit/93641be4c2393f49008aff789400cf7c947949fd)]
|
|
201
230
|
- Revert volto-tableau group to common [Andrei Grigore - [`9d24c6d`](https://github.com/eea/volto-tableau/commit/9d24c6d2767fed6a840cddaee55dbd5cecb544b5)]
|
|
202
231
|
- Tableaugroup typo fix [Andrei Grigore - [`b0b5378`](https://github.com/eea/volto-tableau/commit/b0b5378a437043120a96c9e5e8802584145daa22)]
|
|
232
|
+
- Add Sonarqube tag using freshwater-frontend addons list [EEA Jenkins - [`3234347`](https://github.com/eea/volto-tableau/commit/3234347e524cc0ed4918242f503fe9e7dba266b2)]
|
|
203
233
|
- Refs #142010 - Optimize Volto-addons gitflow pipelines [valentinab25 - [`d237e1c`](https://github.com/eea/volto-tableau/commit/d237e1c72817d7e68a3eb698563674d1514db24f)]
|
|
204
234
|
### [1.2.4](https://github.com/eea/volto-tableau/compare/1.2.3...1.2.4) - 25 October 2021
|
|
205
235
|
|
|
206
236
|
#### :hammer_and_wrench: Others
|
|
207
237
|
|
|
238
|
+
- Add Sonarqube tag using frontend addons list [EEA Jenkins - [`2b19679`](https://github.com/eea/volto-tableau/commit/2b19679e2c7bcdc83082d1c73a595eea8b86d14f)]
|
|
239
|
+
- Add Sonarqube tag using frontend addons list [EEA Jenkins - [`384ccae`](https://github.com/eea/volto-tableau/commit/384ccaebed8c414a5c90eb96c6ce0a2b091f249c)]
|
|
240
|
+
- Add Sonarqube tag using frontend addons list [EEA Jenkins - [`589258e`](https://github.com/eea/volto-tableau/commit/589258e9b3cbba9cee37c57bb85ca5b707bc65d7)]
|
|
208
241
|
### [1.2.3](https://github.com/eea/volto-tableau/compare/1.2.2...1.2.3) - 14 June 2021
|
|
209
242
|
|
|
210
243
|
#### :hammer_and_wrench: Others
|
package/Dockerfile
CHANGED
package/Jenkinsfile
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
pipeline {
|
|
2
|
-
agent
|
|
2
|
+
agent {
|
|
3
|
+
node { label 'docker-host' }
|
|
4
|
+
}
|
|
3
5
|
|
|
4
6
|
environment {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
GIT_NAME = "volto-tableau"
|
|
8
|
+
NAMESPACE = "@eeacms"
|
|
9
|
+
SONARQUBE_TAGS = "volto.eea.europa.eu,climate-energy.eea.europa.eu,forest.eea.europa.eu,biodiversity.europa.eu,water.europa.eu-freshwater,water.europa.eu-marine,industry.eea.europa.eu,demo-www.eea.europa.eu,www.eea.europa.eu-en"
|
|
10
|
+
DEPENDENCIES = ""
|
|
11
|
+
BACKEND_PROFILES = "eea.kitkat:testing"
|
|
12
|
+
BACKEND_ADDONS = ""
|
|
13
|
+
VOLTO = "16.24.0"
|
|
14
|
+
IMAGE_NAME = BUILD_TAG.toLowerCase()
|
|
15
|
+
}
|
|
11
16
|
|
|
12
17
|
stages {
|
|
13
|
-
|
|
14
18
|
stage('Release') {
|
|
15
19
|
when {
|
|
16
20
|
allOf {
|
|
@@ -20,52 +24,41 @@ pipeline {
|
|
|
20
24
|
}
|
|
21
25
|
steps {
|
|
22
26
|
node(label: 'docker') {
|
|
23
|
-
withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN'),string(credentialsId: 'eea-jenkins-npm-token', variable: 'NPM_TOKEN')]) {
|
|
24
|
-
sh '''docker pull eeacms/gitflow'''
|
|
25
|
-
sh '''docker run -i --rm --name="$BUILD_TAG-gitflow-master" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" -e GIT_TOKEN="$GITHUB_TOKEN" -e NPM_TOKEN="$NPM_TOKEN" -e LANGUAGE=javascript eeacms/gitflow'''
|
|
27
|
+
withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN'), string(credentialsId: 'eea-jenkins-npm-token', variable: 'NPM_TOKEN')]) {
|
|
28
|
+
sh '''docker run -i --rm --pull always --name="$IMAGE_NAME-gitflow-master" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" -e GIT_TOKEN="$GITHUB_TOKEN" -e NPM_TOKEN="$NPM_TOKEN" -e LANGUAGE=javascript eeacms/gitflow'''
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
|
|
31
|
-
stage('
|
|
34
|
+
stage('Check if testing needed') {
|
|
32
35
|
when {
|
|
33
36
|
allOf {
|
|
34
|
-
environment name: 'CHANGE_ID', value: ''
|
|
35
|
-
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
36
37
|
not { branch 'master' }
|
|
38
|
+
not { branch 'develop' }
|
|
39
|
+
environment name: 'CHANGE_ID', value: ''
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
steps {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
node(label: 'docker') {
|
|
44
|
-
sh '''docker run -i --rm --name="$BUILD_TAG-eslint" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e VOLTO=$VOLTO plone/volto-addon-ci eslint'''
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
"Style lint": {
|
|
49
|
-
node(label: 'docker') {
|
|
50
|
-
sh '''docker run -i --rm --name="$BUILD_TAG-stylelint" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e VOLTO=$VOLTO plone/volto-addon-ci stylelint'''
|
|
51
|
-
}
|
|
52
|
-
},
|
|
43
|
+
script {
|
|
44
|
+
withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
|
|
45
|
+
check_result = sh script: '''docker run --pull always -i --rm --name="$IMAGE_NAME-gitflow-check" -e GIT_TOKEN="$GITHUB_TOKEN" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_ORG="$GIT_ORG" -e GIT_NAME="$GIT_NAME" eeacms/gitflow /check_if_testing_needed.sh''', returnStatus: true
|
|
53
46
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
47
|
+
if (check_result == 0) {
|
|
48
|
+
env.SKIP_TESTS = 'yes'
|
|
49
|
+
}
|
|
57
50
|
}
|
|
58
|
-
|
|
59
|
-
)
|
|
51
|
+
}
|
|
60
52
|
}
|
|
61
53
|
}
|
|
62
54
|
|
|
63
|
-
stage('
|
|
55
|
+
stage('Testing') {
|
|
64
56
|
when {
|
|
65
57
|
anyOf {
|
|
66
58
|
allOf {
|
|
67
59
|
not { environment name: 'CHANGE_ID', value: '' }
|
|
68
60
|
environment name: 'CHANGE_TARGET', value: 'develop'
|
|
61
|
+
environment name: 'SKIP_TESTS', value: ''
|
|
69
62
|
}
|
|
70
63
|
allOf {
|
|
71
64
|
environment name: 'CHANGE_ID', value: ''
|
|
@@ -73,26 +66,76 @@ pipeline {
|
|
|
73
66
|
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
74
67
|
branch 'master'
|
|
75
68
|
}
|
|
69
|
+
environment name: 'SKIP_TESTS', value: ''
|
|
76
70
|
}
|
|
77
71
|
}
|
|
78
72
|
}
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
stages {
|
|
74
|
+
stage('Build test image') {
|
|
75
|
+
steps {
|
|
76
|
+
checkout scm
|
|
77
|
+
sh '''docker build --pull --build-arg="VOLTO_VERSION=$VOLTO" --build-arg="ADDON_NAME=$NAMESPACE/$GIT_NAME" --build-arg="ADDON_PATH=$GIT_NAME" . -t $IMAGE_NAME-frontend'''
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
stage('Fix code') {
|
|
82
|
+
when {
|
|
83
|
+
environment name: 'CHANGE_ID', value: ''
|
|
84
|
+
not { branch 'master' }
|
|
85
|
+
}
|
|
86
|
+
steps {
|
|
87
|
+
script {
|
|
88
|
+
fix_result = sh(script: '''docker run --name="$IMAGE_NAME-fix" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend ci-fix''', returnStatus: true)
|
|
89
|
+
sh '''docker cp $IMAGE_NAME-fix:/app/src/addons/$GIT_NAME/src .'''
|
|
90
|
+
sh '''docker rm -v $IMAGE_NAME-fix'''
|
|
91
|
+
FOUND_FIX = sh(script: '''git diff | wc -l''', returnStdout: true).trim()
|
|
81
92
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
if (FOUND_FIX != '0') {
|
|
94
|
+
withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
|
|
95
|
+
sh '''sed -i "s|url = .*|url = https://eea-jenkins:$GITHUB_TOKEN@github.com/eea/$GIT_NAME.git|" .git/config'''
|
|
96
|
+
}
|
|
97
|
+
sh '''git fetch origin $GIT_BRANCH:$GIT_BRANCH'''
|
|
98
|
+
sh '''git checkout $GIT_BRANCH'''
|
|
99
|
+
sh '''git add src/'''
|
|
100
|
+
sh '''git commit -m "style: Automated code fix" '''
|
|
101
|
+
sh '''git push --set-upstream origin $GIT_BRANCH'''
|
|
102
|
+
sh '''exit 1'''
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
stage('ES lint') {
|
|
109
|
+
steps {
|
|
110
|
+
sh '''docker run --rm --name="$IMAGE_NAME-eslint" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend lint'''
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
stage('Style lint') {
|
|
115
|
+
steps {
|
|
116
|
+
sh '''docker run --rm --name="$IMAGE_NAME-stylelint" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend stylelint'''
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
stage('Prettier') {
|
|
121
|
+
steps {
|
|
122
|
+
sh '''docker run --rm --name="$IMAGE_NAME-prettier" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend prettier'''
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
stage('Coverage Tests') {
|
|
127
|
+
parallel {
|
|
128
|
+
|
|
129
|
+
stage('Unit tests') {
|
|
130
|
+
steps {
|
|
131
|
+
script {
|
|
132
|
+
try {
|
|
133
|
+
sh '''docker run --name="$IMAGE_NAME-volto" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend test-ci'''
|
|
134
|
+
sh '''rm -rf xunit-reports'''
|
|
135
|
+
sh '''mkdir -p xunit-reports'''
|
|
136
|
+
sh '''docker cp $IMAGE_NAME-volto:/app/coverage xunit-reports/'''
|
|
137
|
+
sh '''docker cp $IMAGE_NAME-volto:/app/junit.xml xunit-reports/'''
|
|
138
|
+
publishHTML(target : [
|
|
96
139
|
allowMissing: false,
|
|
97
140
|
alwaysLinkToLastBuild: true,
|
|
98
141
|
keepAll: true,
|
|
@@ -105,75 +148,62 @@ pipeline {
|
|
|
105
148
|
catchError(buildResult: 'SUCCESS', stageResult: 'SUCCESS') {
|
|
106
149
|
junit testResults: 'xunit-reports/junit.xml', allowEmptyResults: true
|
|
107
150
|
}
|
|
108
|
-
|
|
151
|
+
sh script: '''docker rm -v $IMAGE_NAME-volto''', returnStatus: true
|
|
152
|
+
}
|
|
109
153
|
}
|
|
110
154
|
}
|
|
111
155
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
156
|
+
|
|
157
|
+
stage('Integration tests') {
|
|
158
|
+
steps {
|
|
159
|
+
script {
|
|
160
|
+
try {
|
|
161
|
+
sh '''docker run --pull always --rm -d --name="$IMAGE_NAME-plone" -e SITE="Plone" -e PROFILES="$BACKEND_PROFILES" -e ADDONS="$BACKEND_ADDONS" eeacms/plone-backend'''
|
|
162
|
+
sh '''timeout -s 9 3600 docker run --shm-size=2g --cpu-quota=150000 --link $IMAGE_NAME-plone:plone --entrypoint=make --name="$IMAGE_NAME-cypress" --workdir=/app/src/addons/${GIT_NAME} -e "RAZZLE_INTERNAL_API_PATH=http://plone:8080/Plone" $IMAGE_NAME-frontend cypress-ci'''
|
|
163
|
+
} finally {
|
|
164
|
+
try {
|
|
165
|
+
sh '''rm -rf cypress-videos cypress-results cypress-coverage cypress-screenshots'''
|
|
166
|
+
sh '''mkdir -p cypress-videos cypress-results cypress-coverage cypress-screenshots'''
|
|
167
|
+
videos = sh script: '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/cypress/videos cypress-videos/''', returnStatus: true
|
|
168
|
+
sh '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/cypress/reports cypress-results/'''
|
|
169
|
+
screenshots = sh script: '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/cypress/screenshots cypress-screenshots''', returnStatus: true
|
|
116
170
|
|
|
117
|
-
|
|
118
|
-
when {
|
|
119
|
-
anyOf {
|
|
120
|
-
allOf {
|
|
121
|
-
not { environment name: 'CHANGE_ID', value: '' }
|
|
122
|
-
environment name: 'CHANGE_TARGET', value: 'develop'
|
|
123
|
-
}
|
|
124
|
-
allOf {
|
|
125
|
-
environment name: 'CHANGE_ID', value: ''
|
|
126
|
-
anyOf {
|
|
127
|
-
not { changelog '.*^Automated release [0-9\\.]+$' }
|
|
128
|
-
branch 'master'
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
steps {
|
|
134
|
-
parallel(
|
|
171
|
+
archiveArtifacts artifacts: 'cypress-screenshots/**', fingerprint: true, allowEmptyArchive: true
|
|
135
172
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
sh '''docker pull eeacms/plone-backend; docker run --rm -d --name="$BUILD_TAG-plone" -e SITE="Plone" -e PROFILES="eea.kitkat:testing" eeacms/plone-backend'''
|
|
141
|
-
sh '''docker pull plone/volto-addon-ci; docker run -i --name="$BUILD_TAG-cypress" --link $BUILD_TAG-plone:plone -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e DEPENDENCIES="$DEPENDENCIES" -e NODE_ENV=development -e VOLTO=$VOLTO plone/volto-addon-ci cypress'''
|
|
142
|
-
} finally {
|
|
143
|
-
try {
|
|
144
|
-
sh '''rm -rf cypress-reports cypress-results cypress-coverage'''
|
|
145
|
-
sh '''mkdir -p cypress-reports cypress-results cypress-coverage'''
|
|
146
|
-
sh '''docker cp $BUILD_TAG-cypress:/opt/frontend/my-volto-project/src/addons/$GIT_NAME/cypress/videos cypress-reports/'''
|
|
147
|
-
sh '''docker cp $BUILD_TAG-cypress:/opt/frontend/my-volto-project/src/addons/$GIT_NAME/cypress/reports cypress-results/'''
|
|
148
|
-
coverage = sh script: '''docker cp $BUILD_TAG-cypress:/opt/frontend/my-volto-project/src/addons/$GIT_NAME/coverage cypress-coverage/''', returnStatus: true
|
|
149
|
-
if ( coverage == 0 ) {
|
|
150
|
-
publishHTML (target : [allowMissing: false,
|
|
173
|
+
coverage = sh script: '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/coverage cypress-coverage''', returnStatus: true
|
|
174
|
+
|
|
175
|
+
if ( coverage == 0 ) {
|
|
176
|
+
publishHTML(target : [allowMissing: false,
|
|
151
177
|
alwaysLinkToLastBuild: true,
|
|
152
178
|
keepAll: true,
|
|
153
179
|
reportDir: 'cypress-coverage/coverage/lcov-report',
|
|
154
180
|
reportFiles: 'index.html',
|
|
155
181
|
reportName: 'CypressCoverage',
|
|
156
182
|
reportTitles: 'Integration Tests Code Coverage'])
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
183
|
+
}
|
|
184
|
+
if ( videos == 0 ) {
|
|
185
|
+
sh '''for file in $(find cypress-results -name *.xml); do if [ $(grep -E 'failures="[1-9].*"' $file | wc -l) -eq 0 ]; then testname=$(grep -E 'file=.*failures="0"' $file | sed 's#.* file=".*\\/\\(.*\\.[jsxt]\\+\\)" time.*#\\1#' ); rm -f cypress-videos/videos/$testname.mp4; fi; done'''
|
|
186
|
+
archiveArtifacts artifacts: 'cypress-videos/**/*.mp4', fingerprint: true, allowEmptyArchive: true
|
|
187
|
+
}
|
|
188
|
+
} finally {
|
|
189
|
+
catchError(buildResult: 'SUCCESS', stageResult: 'SUCCESS') {
|
|
164
190
|
junit testResults: 'cypress-results/**/*.xml', allowEmptyResults: true
|
|
191
|
+
}
|
|
192
|
+
sh script: "docker stop $IMAGE_NAME-plone", returnStatus: true
|
|
193
|
+
sh script: "docker rm -v $IMAGE_NAME-plone", returnStatus: true
|
|
194
|
+
sh script: "docker rm -v $IMAGE_NAME-cypress", returnStatus: true
|
|
165
195
|
}
|
|
166
|
-
sh script: "docker stop $BUILD_TAG-plone", returnStatus: true
|
|
167
|
-
sh script: "docker rm -v $BUILD_TAG-plone", returnStatus: true
|
|
168
|
-
sh script: "docker rm -v $BUILD_TAG-cypress", returnStatus: true
|
|
169
|
-
|
|
170
196
|
}
|
|
171
197
|
}
|
|
172
198
|
}
|
|
173
199
|
}
|
|
174
200
|
}
|
|
175
|
-
|
|
176
|
-
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
post {
|
|
204
|
+
always {
|
|
205
|
+
sh script: "docker rmi $IMAGE_NAME-frontend", returnStatus: true
|
|
206
|
+
}
|
|
177
207
|
}
|
|
178
208
|
}
|
|
179
209
|
|
|
@@ -197,19 +227,14 @@ pipeline {
|
|
|
197
227
|
}
|
|
198
228
|
}
|
|
199
229
|
steps {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
sh '''sed -i "s#/opt/frontend/my-volto-project/src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
|
|
209
|
-
sh '''sed -i "s#src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
|
|
210
|
-
sh "export PATH=${scannerHome}/bin:${nodeJS}/bin:$PATH; sonar-scanner -Dsonar.javascript.lcov.reportPaths=./xunit-reports/coverage/lcov.info,./cypress-coverage/coverage/lcov.info -Dsonar.sources=./src -Dsonar.projectKey=$GIT_NAME-$BRANCH_NAME -Dsonar.projectVersion=$BRANCH_NAME-$BUILD_NUMBER"
|
|
211
|
-
sh '''try=2; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}-${BRANCH_NAME}&tags=${SONARQUBE_TAGS},${BRANCH_NAME}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 60; try=\$(( \$try - 1 )); fi; done'''
|
|
212
|
-
}
|
|
230
|
+
script {
|
|
231
|
+
def scannerHome = tool 'SonarQubeScanner'
|
|
232
|
+
def nodeJS = tool 'NodeJS'
|
|
233
|
+
withSonarQubeEnv('Sonarqube') {
|
|
234
|
+
sh '''sed -i "s#/app/src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
|
|
235
|
+
sh '''sed -i "s#src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
|
|
236
|
+
sh "export PATH=${scannerHome}/bin:${nodeJS}/bin:$PATH; sonar-scanner -Dsonar.javascript.lcov.reportPaths=./xunit-reports/coverage/lcov.info,./cypress-coverage/coverage/lcov.info -Dsonar.sources=./src -Dsonar.projectKey=$GIT_NAME-$BRANCH_NAME -Dsonar.projectVersion=$BRANCH_NAME-$BUILD_NUMBER"
|
|
237
|
+
sh '''try=5; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}-${BRANCH_NAME}&tags=${SONARQUBE_TAGS},${BRANCH_NAME}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 15; try=\$(( \$try - 1 )); fi; done'''
|
|
213
238
|
}
|
|
214
239
|
}
|
|
215
240
|
}
|
|
@@ -230,18 +255,15 @@ pipeline {
|
|
|
230
255
|
}
|
|
231
256
|
}
|
|
232
257
|
steps {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
sh '''
|
|
237
|
-
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
|
238
|
-
sh '''set -o pipefail; docker run -i --rm --name="$BUILD_TAG-gitflow-sn" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" eeacms/gitflow /checkSonarqubemaster.sh | grep -v "Found script" | tee checkresult.txt'''
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
publishChecks name: 'SonarQube', title: 'Sonarqube Code Quality Check', summary: "Quality check on the SonarQube metrics from branch develop, comparing it with the ones from master branch. No bugs are allowed",
|
|
242
|
-
text: readFile(file: 'checkresult.txt'), conclusion: "${currentBuild.currentResult}",
|
|
243
|
-
detailsURL: "${env.BUILD_URL}display/redirect"
|
|
258
|
+
script {
|
|
259
|
+
sh '''echo "Error" > checkresult.txt'''
|
|
260
|
+
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
|
261
|
+
sh '''set -o pipefail; docker run -i --rm --pull always --name="$IMAGE_NAME-gitflow-sn" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" eeacms/gitflow /checkSonarqubemaster.sh | grep -v "Found script" | tee checkresult.txt'''
|
|
244
262
|
}
|
|
263
|
+
|
|
264
|
+
publishChecks name: 'SonarQube', title: 'Sonarqube Code Quality Check', summary: 'Quality check on the SonarQube metrics from branch develop, comparing it with the ones from master branch. No bugs are allowed',
|
|
265
|
+
text: readFile(file: 'checkresult.txt'), conclusion: "${currentBuild.currentResult}",
|
|
266
|
+
detailsURL: "${env.BUILD_URL}display/redirect"
|
|
245
267
|
}
|
|
246
268
|
}
|
|
247
269
|
}
|
|
@@ -254,20 +276,16 @@ pipeline {
|
|
|
254
276
|
environment name: 'CHANGE_TARGET', value: 'master'
|
|
255
277
|
}
|
|
256
278
|
steps {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
sh '''docker pull eeacms/gitflow'''
|
|
264
|
-
sh '''docker run -i --rm --name="$BUILD_TAG-gitflow-pr" -e GIT_CHANGE_TARGET="$CHANGE_TARGET" -e GIT_CHANGE_BRANCH="$CHANGE_BRANCH" -e GIT_CHANGE_AUTHOR="$CHANGE_AUTHOR" -e GIT_CHANGE_TITLE="$CHANGE_TITLE" -e GIT_TOKEN="$GITHUB_TOKEN" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e GIT_ORG="$GIT_ORG" -e GIT_NAME="$GIT_NAME" -e LANGUAGE=javascript eeacms/gitflow'''
|
|
265
|
-
}
|
|
279
|
+
script {
|
|
280
|
+
if (env.CHANGE_BRANCH != 'develop') {
|
|
281
|
+
error 'Pipeline aborted due to PR not made from develop branch'
|
|
282
|
+
}
|
|
283
|
+
withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
|
|
284
|
+
sh '''docker run --pull always -i --rm --name="$IMAGE_NAME-gitflow-pr" -e GIT_CHANGE_TARGET="$CHANGE_TARGET" -e GIT_CHANGE_BRANCH="$CHANGE_BRANCH" -e GIT_CHANGE_AUTHOR="$CHANGE_AUTHOR" -e GIT_CHANGE_TITLE="$CHANGE_TITLE" -e GIT_TOKEN="$GITHUB_TOKEN" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e GIT_ORG="$GIT_ORG" -e GIT_NAME="$GIT_NAME" -e LANGUAGE=javascript eeacms/gitflow'''
|
|
266
285
|
}
|
|
267
286
|
}
|
|
268
287
|
}
|
|
269
288
|
}
|
|
270
|
-
|
|
271
289
|
}
|
|
272
290
|
|
|
273
291
|
post {
|
|
@@ -289,4 +307,4 @@ pipeline {
|
|
|
289
307
|
}
|
|
290
308
|
}
|
|
291
309
|
}
|
|
292
|
-
}
|
|
310
|
+
}
|
package/Makefile
CHANGED
|
@@ -50,6 +50,11 @@ VOLTO_VERSION?=16
|
|
|
50
50
|
ADDON_PATH="${DIR}"
|
|
51
51
|
ADDON_NAME="@eeacms/${ADDON_PATH}"
|
|
52
52
|
DOCKER_COMPOSE=PLONE_VERSION=${PLONE_VERSION} VOLTO_VERSION=${VOLTO_VERSION} ADDON_NAME=${ADDON_NAME} ADDON_PATH=${ADDON_PATH} docker compose
|
|
53
|
+
RAZZLE_INTERNAL_API_PATH?="http://localhost:8080/Plone"
|
|
54
|
+
RAZZLE_DEV_PROXY_API_PATH?="${RAZZLE_INTERNAL_API_PATH}"
|
|
55
|
+
CYPRESS_API_PATH="${RAZZLE_DEV_PROXY_API_PATH}"
|
|
56
|
+
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
# Top-level targets
|
|
55
60
|
.PHONY: all
|
|
@@ -77,11 +82,11 @@ shell: ## Start a shell in the frontend container
|
|
|
77
82
|
|
|
78
83
|
.PHONY: cypress-open
|
|
79
84
|
cypress-open: ## Open cypress integration tests
|
|
80
|
-
NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress open
|
|
85
|
+
CYPRESS_API_PATH="${RAZZLE_DEV_PROXY_API_PATH}" NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress open
|
|
81
86
|
|
|
82
87
|
.PHONY: cypress-run
|
|
83
88
|
cypress-run: ## Run cypress integration tests
|
|
84
|
-
NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress run
|
|
89
|
+
CYPRESS_API_PATH="${RAZZLE_DEV_PROXY_API_PATH}" NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress run --browser chromium
|
|
85
90
|
|
|
86
91
|
.PHONY: test
|
|
87
92
|
test: ## Run jest tests
|
|
@@ -129,3 +134,31 @@ i18n: ## i18n
|
|
|
129
134
|
help: ## Show this help.
|
|
130
135
|
@echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)"
|
|
131
136
|
head -n 14 Makefile
|
|
137
|
+
|
|
138
|
+
.PHONY: ci-fix
|
|
139
|
+
ci-fix:
|
|
140
|
+
echo "Running lint-fix"
|
|
141
|
+
make lint-fix
|
|
142
|
+
echo "Running prettier-fix"
|
|
143
|
+
make prettier-fix
|
|
144
|
+
echo "Running stylelint-fix"
|
|
145
|
+
make stylelint-fix
|
|
146
|
+
|
|
147
|
+
.PHONY: test-ci
|
|
148
|
+
test-ci:
|
|
149
|
+
cd /app
|
|
150
|
+
RAZZLE_JEST_CONFIG=src/addons/${ADDON_PATH}/jest-addon.config.js CI=true yarn test src/addons/${ADDON_PATH}/src --watchAll=false --reporters=default --reporters=jest-junit --collectCoverage --coverageReporters lcov cobertura text
|
|
151
|
+
|
|
152
|
+
.PHONY: start-ci
|
|
153
|
+
start-ci:
|
|
154
|
+
cd ../..
|
|
155
|
+
yarn start &
|
|
156
|
+
|
|
157
|
+
.PHONY: cypress-ci
|
|
158
|
+
cypress-ci:
|
|
159
|
+
cp .coverage.babel.config.js /app/babel.config.js
|
|
160
|
+
make start-ci
|
|
161
|
+
$(NODE_MODULES)/.bin/wait-on -t 240000 http://localhost:3000
|
|
162
|
+
NODE_ENV=development make cypress-run
|
|
163
|
+
|
|
164
|
+
|
package/cypress.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { PrivacyProtection } from '@eeacms/volto-embed';
|
|
3
|
-
import Tableau from '@eeacms/volto-tableau/Tableau/Tableau';
|
|
4
|
-
|
|
5
|
-
import { flattenToAppURL } from '@plone/volto/helpers';
|
|
6
|
-
import { getContent } from '@plone/volto/actions';
|
|
7
|
-
|
|
8
2
|
import { connect } from 'react-redux';
|
|
9
3
|
import { compose } from 'redux';
|
|
4
|
+
import { flattenToAppURL } from '@plone/volto/helpers';
|
|
5
|
+
import { getContent } from '@plone/volto/actions';
|
|
6
|
+
import { PrivacyProtection } from '@eeacms/volto-embed';
|
|
7
|
+
import Tableau from '@eeacms/volto-tableau/Tableau/Tableau';
|
|
10
8
|
|
|
11
9
|
const View = (props) => {
|
|
12
10
|
const data = props.data;
|
|
13
11
|
const {
|
|
14
|
-
|
|
12
|
+
with_notes = true,
|
|
15
13
|
with_sources = true,
|
|
16
14
|
with_more_info = true,
|
|
17
15
|
with_download = true,
|
|
18
16
|
with_share = true,
|
|
19
|
-
tableau_height
|
|
17
|
+
tableau_height,
|
|
20
18
|
} = data;
|
|
21
19
|
const { figure_note = [], data_provenance = {}, tableau_visualization } =
|
|
22
20
|
props.tableau_visualization_data || {};
|
|
@@ -31,7 +29,7 @@ const View = (props) => {
|
|
|
31
29
|
}, [tableau_vis_url]);
|
|
32
30
|
|
|
33
31
|
return (
|
|
34
|
-
<div className="embed-
|
|
32
|
+
<div className="embed-tableau">
|
|
35
33
|
<PrivacyProtection
|
|
36
34
|
{...props}
|
|
37
35
|
data={{ ...data, url: tableau_visualization?.url }}
|
|
@@ -48,7 +46,7 @@ const View = (props) => {
|
|
|
48
46
|
<Tableau
|
|
49
47
|
data={{
|
|
50
48
|
...tableau_visualization,
|
|
51
|
-
|
|
49
|
+
with_notes,
|
|
52
50
|
with_sources,
|
|
53
51
|
with_more_info,
|
|
54
52
|
with_download,
|