diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e32680..9c4f5cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,24 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [0.1.31](https://github.com/eea/volto-forests-theme/compare/0.1.30...0.1.31) + +- fix content.js customization [`0f16a6a`](https://github.com/eea/volto-forests-theme/commit/0f16a6a35560c63f5d62e7786a2e84da136b0081) +- update App customizations [`30369c5`](https://github.com/eea/volto-forests-theme/commit/30369c58628047e6c2ee2d612192be046b7336a5) +- fix warning [`e881021`](https://github.com/eea/volto-forests-theme/commit/e8810211219389fffdacba55f67520e00cebc9b6) +- comment navigation [`f247d9f`](https://github.com/eea/volto-forests-theme/commit/f247d9fb5ce7565aeffcdb1ae593997318173553) +- admin/admin [`67cc9e6`](https://github.com/eea/volto-forests-theme/commit/67cc9e6e148547d5e7d78efa0c0b86e072441ff6) +- use admin/secret [`5830a61`](https://github.com/eea/volto-forests-theme/commit/5830a6128996af1eaac262b43214f29cc759e686) +- use proper container links [`7ff2bdd`](https://github.com/eea/volto-forests-theme/commit/7ff2bdd70e1ae563511f40e7fe5df156f2c2a7b7) +- remove dup componentDidMount [`8fa7055`](https://github.com/eea/volto-forests-theme/commit/8fa70553a541f65ba2fd2e069b18d7be4e62cc0c) +- rename to componentDidMount [`0efabf9`](https://github.com/eea/volto-forests-theme/commit/0efabf9176d768707247a7b62d4dd3e994c473df) +- volto 14 compatibility [`c6b6c04`](https://github.com/eea/volto-forests-theme/commit/c6b6c04269c3cba3be764ade14f3d13dd8e49fcd) + #### [0.1.30](https://github.com/eea/volto-forests-theme/compare/0.1.29...0.1.30) +> 14 December 2021 + +- Webscore fix [`#40`](https://github.com/eea/volto-forests-theme/pull/40) - fix edge case in browser detection [`e76c224`](https://github.com/eea/volto-forests-theme/commit/e76c224dac6fbe3f8acfef4c7349d15a5977c100) - [Webscore fix] Correct expresion [`98e76f9`](https://github.com/eea/volto-forests-theme/commit/98e76f91a594ccdb1180886bee14bf87937deb4e) diff --git a/Jenkinsfile b/Jenkinsfile index d6675b5..38c7e9c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -124,8 +124,8 @@ pipeline { node(label: 'docker') { script { try { - sh '''docker pull plone; docker run -d --name="$BUILD_TAG-plone" -e SITE="Plone" -e PROFILES="profile-plone.restapi:blocks" plone fg''' - 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" plone/volto-addon-ci cypress''' + sh '''docker pull plone; docker run -d --rm --name="$BUILD_TAG-plone" -e SITE="Plone" -e PROFILES="profile-plone.restapi:blocks" plone fg''' + 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 plone/volto-addon-ci cypress''' } finally { try { sh '''rm -rf cypress-reports cypress-results cypress-coverage''' @@ -142,7 +142,8 @@ pipeline { reportName: 'CypressCoverage', reportTitles: 'Integration Tests Code Coverage']) } - archiveArtifacts artifacts: 'cypress-reports/videos/*.mp4', fingerprint: true + sh '''touch empty_file; for ok_test in $(grep -E 'file=.*failures="0"' $(grep 'testsuites .*failures="0"' $(find cypress-results -name *.xml) empty_file | awk -F: '{print $1}') empty_file | sed 's/.* file="\\(.*\\)" time.*/\\1/' | sed 's#^cypress/integration/##g' | sed 's#^../../../node_modules/@eeacms/##g'); do rm -f cypress-reports/videos/$ok_test.mp4; rm -f cypress-reports/$ok_test.mp4; done''' + archiveArtifacts artifacts: 'cypress-reports/**/*.mp4', fingerprint: true, allowEmptyArchive: true stash name: "cypress-coverage", includes: "cypress-coverage/**", allowEmpty: true } finally { @@ -237,4 +238,4 @@ pipeline { } } } -} +} \ No newline at end of file diff --git a/README.md b/README.md index 3544994..dab7358 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,18 @@ # volto-forests-theme [![Releases](https://img.shields.io/github/v/release/eea/volto-forests-theme)](https://github.com/eea/volto-forests-theme/releases) + [![Pipeline](https://ci.eionet.europa.eu/buildStatus/icon?job=volto-addons%2Fvolto-forests-theme%2Fmaster&subject=master)](https://ci.eionet.europa.eu/view/Github/job/volto-addons/job/volto-forests-theme/job/master/display/redirect) +[![Lines of Code](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-master&metric=ncloc)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-master) +[![Coverage](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-master&metric=coverage)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-master) +[![Bugs](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-master&metric=bugs)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-master) +[![Duplicated Lines (%)](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-master&metric=duplicated_lines_density)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-master) + [![Pipeline](https://ci.eionet.europa.eu/buildStatus/icon?job=volto-addons%2Fvolto-forests-theme%2Fdevelop&subject=develop)](https://ci.eionet.europa.eu/view/Github/job/volto-addons/job/volto-forests-theme/job/develop/display/redirect) +[![Lines of Code](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-develop&metric=ncloc)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-develop) +[![Coverage](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-develop&metric=coverage)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-develop) +[![Bugs](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-develop&metric=bugs)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-develop) +[![Duplicated Lines (%)](https://sonarqube.eea.europa.eu/api/project_badges/measure?project=volto-forests-theme-develop&metric=duplicated_lines_density)](https://sonarqube.eea.europa.eu/dashboard?id=volto-forests-theme-develop) [Volto](https://github.com/plone/volto) add-on @@ -72,6 +82,81 @@ 1. Happy editing! +## Release + +### Automatic release using Jenkins + +* The automatic release is started by creating a [Pull Request](../../compare/master...develop) from `develop` to `master`. The pull request status checks correlated to the branch and PR Jenkins jobs need to be processed successfully. 1 review from a github user with rights is mandatory. +* It runs on every commit on `master` branch, which is protected from direct commits, only allowing pull request merge commits. +* The automatic release is done by [Jenkins](https://ci.eionet.europa.eu). The status of the release job can be seen both in the Readme.md badges and the green check/red cross/yellow circle near the last commit information. If you click on the icon, you will have the list of checks that were run. The `continuous-integration/jenkins/branch` link goes to the Jenkins job execution webpage. +* Automated release scripts are located in the `eeacms/gitflow` docker image, specifically [js-release.sh](https://github.com/eea/eea.docker.gitflow/blob/master/src/js-release.sh) script. It uses the `release-it` tool. +* As long as a PR request is open from develop to master, the PR Jenkins job will automatically re-create the CHANGELOG.md and package.json files to be production-ready. +* The version format must be MAJOR.MINOR.PATCH. By default, next release is set to next minor version (with patch 0). +* You can manually change the version in `package.json`. The new version must not be already present in the tags/releases of the repository, otherwise it will be automatically increased by the script. Any changes to the version will trigger a `CHANGELOG.md` re-generation. +* Automated commits and commits with [JENKINS] or [YARN] in the commit log are excluded from `CHANGELOG.md` file. + +### Manual release from the develop branch ( beta release ) + +#### Installation and configuration of release-it + +You need to first install the [release-it](https://github.com/release-it/release-it) client. + + ``` + npm install -g release-it + ``` + +Release-it uses the configuration written in the [`.release-it.json`](./.release-it.json) file located in the root of the repository. + +Release-it is a tool that automates 4 important steps in the release process: + +1. Version increase in `package.json` ( increased from the current version in `package.json`) +2. `CHANGELOG.md` automatic generation from commit messages ( grouped by releases ) +3. GitHub release on the commit with the changelog and package.json modification on the develop branch +4. NPM release ( by default it's disabled, but can be enabled in the configuration file ) + +To configure the authentification, you need to export GITHUB_TOKEN for [GitHub](https://github.com/settings/tokens) + + ``` + export GITHUB_TOKEN=XXX-XXXXXXXXXXXXXXXXXXXXXX + ``` + + To configure npm, you can use the `npm login` command or use a configuration file with a TOKEN : + + ``` + echo "//registry.npmjs.org/:_authToken=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY" > .npmrc + ``` + +#### Using release-it tool + +There are 3 yarn scripts that can be run to do the release + +##### yarn release-beta + +Automatically calculates and presents 3 beta versions - patch, minor and major for you to choose ( or Other for manual input). + +``` +? Select increment (next version): +❯ prepatch (0.1.1-beta.0) + preminor (0.2.0-beta.0) + premajor (1.0.0-beta.0) + Other, please specify... +``` + +##### yarn release-major-beta + +Same as `yarn release-beta`, but with premajor version pre-selected. + +##### yarn release + +Generic command, does not automatically add the `beta` to version, but you can still manually write it if you choose Other. + +#### Important notes + +> Do not use release-it tool on master branch, the commit on CHANGELOG.md file and the version increase in the package.json file can't be done without a PULL REQUEST. + +> Do not keep Pull Requests from develop to master branches open when you are doing beta releases from the develop branch. As long as a PR to master is open, an automatic script will run on every commit and will update both the version and the changelog to a production-ready state - ( MAJOR.MINOR.PATCH mandatory format for version). + + ## How to contribute See [DEVELOP.md](https://github.com/eea/volto-forests-theme/blob/master/DEVELOP.md). diff --git a/package.json b/package.json index f77f630..eedb842 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eeacms/volto-forests-theme", - "version": "0.1.30", + "version": "0.1.31", "description": "@eeacms/volto-forests-theme: Volto add-on", "main": "src/index.js", "author": "European Environment Agency: IDM2 A-Team", @@ -23,20 +23,14 @@ "@eeacms/volto-matomo" ], "dependencies": { - "@blueprintjs/core": "^3.30.0", - "@blueprintjs/icons": "^3.19.0", "@eeacms/volto-plotlycharts": "*", "@eeacms/volto-addons-forest": "*", "@eeacms/volto-datablocks": "2.0.16", "@eeacms/volto-matomo": "*", - "raven-js": "3.27.2", - "recharts": "2.1.6", "react-highlight-words": "^0.16.0", "react-image-gallery": "1.2.7", "react-lazy-load-image-component": "^1.5.0", - "react-stickynode": "^2.1.1", - "react-toastify": "^5.3.2", - "webpack-bundle-analyzer": "^3.6.0" + "react-stickynode": "^2.1.1" }, "devDependencies": { "@cypress/code-coverage": "^3.9.5", @@ -44,6 +38,8 @@ }, "scripts": { "release": "release-it", + "release-major-beta": "release-it major --preRelease=beta", + "release-beta": "release-it --preRelease=beta", "bootstrap": "npm install -g ejs; npm link ejs; node bootstrap", "stylelint": "../../../node_modules/stylelint/bin/stylelint.js --allow-empty-input 'src/**/*.{css,less}'", "stylelint:overrides": "../../../node_modules/.bin/stylelint --syntax less --allow-empty-input 'theme/**/*.overrides' 'src/**/*.overrides'", diff --git a/src/components/theme/CatalogueViews/AppHeader.jsx b/src/components/theme/CatalogueViews/AppHeader.jsx index 6d74a3d..3875a98 100644 --- a/src/components/theme/CatalogueViews/AppHeader.jsx +++ b/src/components/theme/CatalogueViews/AppHeader.jsx @@ -8,7 +8,6 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { compose } from 'redux'; import { asyncConnect } from 'redux-connect'; -import loadable from '@loadable/component'; import { Header } from '@plone/volto/components'; import { BodyClass, getBaseUrl, getView } from '@plone/volto/helpers'; @@ -25,6 +24,7 @@ import { } from '@eeacms/volto-forests-theme/actions'; import { getPortlets } from '@eeacms/volto-addons-forest/actions'; import config from '@plone/volto/registry'; +import * as Sentry from '@sentry/browser'; class App extends Component { static propTypes = { @@ -41,21 +41,6 @@ class App extends Component { errorInfo: null, }; - /** - * ComponentDidMount - * @method ComponentDidMount - * @param {string} error The error - * @param {string} info The info - * @returns {undefined} - */ - componentDidMount() { - // this.props.getDefaultHeaderImage(); - if (__CLIENT__ && process.env.SENTRY_DSN) { - const Raven = loadable(() => import('raven-js')); - - Raven.config(process.env.SENTRY_DSN).install(); - } - } // shouldComponentUpdate(nextProps, nextState) { // if (nextProps.loadingContent.loading || nextProps.search.loading) { // console.log('dont load'); @@ -89,9 +74,10 @@ class App extends Component { */ componentDidCatch(error, info) { this.setState({ hasError: true, error, errorInfo: info }); - if (__CLIENT__ && process.env.SENTRY_DSN) { - const Raven = loadable(() => import('raven-js')); - Raven.captureException(error, { extra: info }); + if (__CLIENT__) { + if (window?.env?.RAZZLE_SENTRY_DSN || __SENTRY__?.SENTRY_DSN) { + Sentry.captureException(error); + } } } diff --git a/src/components/theme/CountryPageView/CountryPageView.jsx b/src/components/theme/CountryPageView/CountryPageView.jsx deleted file mode 100644 index c7ea967..0000000 --- a/src/components/theme/CountryPageView/CountryPageView.jsx +++ /dev/null @@ -1,481 +0,0 @@ -/* eslint-disable jsx-a11y/anchor-is-valid */ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; - -import { - ResponsiveContainer, - BarChart, - Area, - AreaChart, - Bar, - XAxis, - YAxis, - CartesianGrid, - Tooltip, - // Legend, -} from 'recharts'; - -import { Container, Image } from 'semantic-ui-react'; -import { map } from 'lodash'; -import { connect } from 'react-redux'; -// import { Link } from 'react-router-dom'; - -import { - // setFolderHeader, - setFolderTabs, - getParentFolderData, -} from '@eeacms/volto-forests-theme/actions'; - -import config from '@plone/volto/registry'; - -import { - getBlocksFieldname, - getBlocksLayoutFieldname, - hasBlocksData, -} from '@plone/volto/helpers'; - -const mapDispatchToProps = { - // setFolderHeader, - setFolderTabs, - getParentFolderData, -}; - -const data = [ - { name: '01', uv: 31, Species: 9 }, - { name: '04', uv: 22, Species: 18 }, - { name: '07', uv: 2, Species: 38 }, - { name: '10', uv: 24, Species: 16 }, - { name: '18', uv: 21, Species: 19 }, -]; - -const coverage = [ - { name: '01', uv: 5, pv: 8, amt: 12 }, - { name: '04', uv: 7, pv: 13, amt: 3 }, - { name: '07', uv: 6, pv: 15, amt: 19 }, - { name: '10', uv: 3, pv: 12, amt: 8 }, - { name: '18', uv: 5, pv: 15, amt: 9 }, -]; - -class StackedBarChart extends Component { - render() { - return ( - - - - - - - - - - ); - } -} - -class AreaBarChart extends Component { - render() { - return ( - - - - - - - - - - - - ); - } -} - -class CountryPageView extends Component { - static propTypes = { - tabs: PropTypes.array, - content: PropTypes.shape({ - title: PropTypes.string, - description: PropTypes.string, - items: PropTypes.arrayOf( - PropTypes.shape({ - title: PropTypes.string, - description: PropTypes.string, - url: PropTypes.string, - image: PropTypes.object, - image_caption: PropTypes.string, - '@type': PropTypes.string, - }), - ), - }).isRequired, - }; - constructor(props) { - super(props); - this.state = {}; - } - - componentDidMount() { - // this.props.setFolderHeader({ inCountryFolder: true }); - } - - componentWillUnmount() { - // this.props.setFolderHeader({ inCountryFolder: false }); - } - - componentWillReceiveProps(nextProps) { - if ( - JSON.stringify(nextProps.parent) !== JSON.stringify(this.props.parent) - ) { - // this.props.setFolderHeader({ title, description, url, inCountryFolder }); - const pathArr = nextProps.location.pathname.split('/'); - pathArr.length = 3; - const path = pathArr.join('/'); - const tabsItems = nextProps.parent.items - .map((i) => { - return { - url: `${path}/${i.id}`, - title: i.title, - '@type': i['@type'], - }; - }) - .filter((i) => i.title !== 'folder_info'); - this.props.setFolderTabs(tabsItems); - } - } - - render() { - const content = this.props.content; - const blocksFieldname = getBlocksFieldname(content); - const blocksLayoutFieldname = getBlocksLayoutFieldname(content); - - return hasBlocksData(content) ? ( -
- {/*this.tabs && this.tabs.length ? ( -
- {this.tabs.map(tab, index => ( - - {tab.title} - - ))} -
- ) : ( - '' - )*/} - -
-
- Summary - Forest basic information - Forest biodiversity and nature - Forest and climate - Forest bioeconomy - Forest condition -
- -
-
-
-
-
-

Biodiversity and nature

-

- Forests are intimately linked to Romania's cultural, - economic, social and historical development. The country - is located in the continental temperate region, with a - varied relief ranging from seaside to mountain. -

-
-
- -
-
-
-
-
-
Tree species lost
-
-
12
-
- species threatened by extinction -
-
-
-
- Conifer - 8 species -
-
- Broadleaved - 4 species -
-
-

Integer magna nunc, scelerisque in lacinia nec.

-
- - From 2001 to 2018, Romania lost 336kha of tree cover. - -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
Species Coverage
-
- Vestibulum eget est ac lorem dapibus lacinia. - Integer magna nunc, scelerisque in lacinia nec, - laoreet non augue. Nunc quis pharetra magna, in - convallis ligula. -
-
- - From 2001 to 2018, Romania lost 336kha of tree cover. - -
-
- -
-
-
-
-
-
- -
-
-
-
Forest coverage
-
-
26%
-
- of Romania's land surface 6.2 Mha -
-
-
-
- 94% publicy owned -
-
- 6% private -
-
- 2017 tree cover extent -
-
- -
-
-
Forest deadwood volume
-
-
8
-
- m3/ha
standing deadwood volume -
-
-
-
- Conifer - 94 species -
-
Broadleaved
-
- See all countries -
-
-
-
- -
-
-