From 9be01d75e499a374c3f83a17e3fec330321df9d6 Mon Sep 17 00:00:00 2001 From: Friedjoff Trautwein Date: Fri, 11 Sep 2020 14:36:20 +0200 Subject: [PATCH 1/3] chore: upgrade dependencies --- lib/package.json | 2 +- lib/yarn.lock | 17 ++++++--- package.json | 8 ++--- yarn.lock | 90 ++++++++++++++++++++++++------------------------ 4 files changed, 63 insertions(+), 54 deletions(-) diff --git a/lib/package.json b/lib/package.json index 2b9ed99f..14a3ac2c 100644 --- a/lib/package.json +++ b/lib/package.json @@ -19,7 +19,7 @@ "husky": "4.3.0", "jest": "26.4.2", "lint-staged": "10.3.0", - "netlify-cli": "2.61.2", + "netlify-cli": "2.62.0", "neutrino": "9.4.0", "prettier": "2.1.1", "semantic-release": "17.1.1", diff --git a/lib/yarn.lock b/lib/yarn.lock index e4697713..7a433e25 100644 --- a/lib/yarn.lock +++ b/lib/yarn.lock @@ -8824,6 +8824,14 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -11662,10 +11670,10 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== -netlify-cli@2.61.2: - version "2.61.2" - resolved "https://registry.yarnpkg.com/netlify-cli/-/netlify-cli-2.61.2.tgz#85a1918905668db233a663a30538da35dd498a39" - integrity sha512-9eXSzYtDOr6Bp0hRR7uK2Ow0un62opFhYx6MuntlTmEQRM7rKSO2+GoEpTs72wT9m3DfmOdY0qzYRAmGRgjLFg== +netlify-cli@2.62.0: + version "2.62.0" + resolved "https://registry.yarnpkg.com/netlify-cli/-/netlify-cli-2.62.0.tgz#5bb01110b3b332b2b7075f48df0137c0e8461e2a" + integrity sha512-fjMziW+anU8VUQCZmNJAb+yN6n9O+gTqKXgHRT7lVYCpSyBzQP9dCVNBu8x+kwAR1rfPuQE15h/BfG5O1WuU/w== dependencies: "@netlify/build" "^3.1.10" "@netlify/config" "^2.0.9" @@ -11709,6 +11717,7 @@ netlify-cli@2.61.2: gitconfiglocal "^2.1.0" http-proxy "^1.18.0" http-proxy-middleware "^1.0.0" + https-proxy-agent "^5.0.0" inquirer "^6.5.1" inquirer-autocomplete-prompt "^1.0.1" is-docker "^2.0.0" diff --git a/package.json b/package.json index 7b62060b..7b01521d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@geops/tree-app", "description": "Web app for tree recommendations.", "license": "MIT", - "version": "1.2.0-beta.2", + "version": "1.2.0-beta.3", "private": true, "dependencies": { "history": "4.10.1", @@ -30,8 +30,8 @@ "semantic-ui-react": "1.2.1" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "4.0.1", - "@typescript-eslint/parser": "4.0.1", + "@typescript-eslint/eslint-plugin": "4.1.0", + "@typescript-eslint/parser": "4.1.0", "babel-eslint": "10.1.0", "cra-append-sw": "2.7.0", "csv-parse": "4.12.0", @@ -46,7 +46,7 @@ "eslint-plugin-jsx-a11y": "6.3.1", "eslint-plugin-prettier": "3.1.4", "eslint-plugin-react": "7.20.6", - "eslint-plugin-react-hooks": "4.1.0", + "eslint-plugin-react-hooks": "4.1.2", "husky": "4.3.0", "lint-staged": "10.3.0", "lodash.set": "4.3.2", diff --git a/yarn.lock b/yarn.lock index de26b352..127abee3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1850,13 +1850,13 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.0.1.tgz#88bde9239e29d688315718552cf80a3490491017" - integrity sha512-pQZtXupCn11O4AwpYVUX4PDFfmIJl90ZgrEBg0CEcqlwvPiG0uY81fimr1oMFblZnpKAq6prrT9a59pj1x58rw== +"@typescript-eslint/eslint-plugin@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.1.0.tgz#7d309f60815ff35e9627ad85e41928d7b7fd443f" + integrity sha512-U+nRJx8XDUqJxYF0FCXbpmD9nWt/xHDDG0zsw1vrVYAmEAuD/r49iowfurjSL2uTA2JsgtpsyG7mjO7PHf2dYw== dependencies: - "@typescript-eslint/experimental-utils" "4.0.1" - "@typescript-eslint/scope-manager" "4.0.1" + "@typescript-eslint/experimental-utils" "4.1.0" + "@typescript-eslint/scope-manager" "4.1.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" @@ -1883,26 +1883,26 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.0.1.tgz#7d9a3ab6821ad5274dad2186c1aa0d93afd696eb" - integrity sha512-gAqOjLiHoED79iYTt3F4uSHrYmg/GPz/zGezdB0jAdr6S6gwNiR/j7cTZ8nREKVzMVKLd9G3xbg1sV9GClW3sw== +"@typescript-eslint/experimental-utils@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.1.0.tgz#263d7225645c09a411c8735eeffd417f50f49026" + integrity sha512-paEYLA37iqRIDPeQwAmoYSiZ3PiHsaAc3igFeBTeqRHgPnHjHLJ9OGdmP6nwAkF65p2QzEsEBtpjNUBWByNWzA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.0.1" - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/typescript-estree" "4.0.1" + "@typescript-eslint/scope-manager" "4.1.0" + "@typescript-eslint/types" "4.1.0" + "@typescript-eslint/typescript-estree" "4.1.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.0.1.tgz#73772080db7a7a4534a35d719e006f503e664dc3" - integrity sha512-1+qLmXHNAWSQ7RB6fdSQszAiA7JTwzakj5cNYjBTUmpH2cqilxMZEIV+DRKjVZs8NzP3ALmKexB0w/ExjcK9Iw== +"@typescript-eslint/parser@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.1.0.tgz#9b0409411725f14cd7faa81a664e5051225961db" + integrity sha512-hM/WNCQTzDHgS0Ke3cR9zPndL3OTKr9OoN9CL3UqulsAjYDrglSwIIgswSmHBcSbOzLmgaMARwrQEbIumIglvQ== dependencies: - "@typescript-eslint/scope-manager" "4.0.1" - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/typescript-estree" "4.0.1" + "@typescript-eslint/scope-manager" "4.1.0" + "@typescript-eslint/types" "4.1.0" + "@typescript-eslint/typescript-estree" "4.1.0" debug "^4.1.1" "@typescript-eslint/parser@^2.10.0": @@ -1915,18 +1915,18 @@ "@typescript-eslint/typescript-estree" "2.27.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/scope-manager@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.0.1.tgz#24d93c3000bdfcc5a157dc4d32b742405a8631b5" - integrity sha512-u3YEXVJ8jsj7QCJk3om0Y457fy2euEOkkzxIB/LKU3MdyI+FJ2gI0M4aKEaXzwCSfNDiZ13a3lDo5DVozc+XLQ== +"@typescript-eslint/scope-manager@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.1.0.tgz#9e389745ee9cfe12252ed1e9958808abd6b3a683" + integrity sha512-HD1/u8vFNnxwiHqlWKC/Pigdn0Mvxi84Y6GzbZ5f5sbLrFKu0al02573Er+D63Sw67IffVUXR0uR8rpdfdk+vA== dependencies: - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/visitor-keys" "4.0.1" + "@typescript-eslint/types" "4.1.0" + "@typescript-eslint/visitor-keys" "4.1.0" -"@typescript-eslint/types@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.0.1.tgz#1cf72582f764931f085cb8230ff215980fe467b2" - integrity sha512-S+gD3fgbkZYW2rnbjugNMqibm9HpEjqZBZkTiI3PwbbNGWmAcxolWIUwZ0SKeG4Dy2ktpKKaI/6+HGYVH8Qrlg== +"@typescript-eslint/types@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.1.0.tgz#edbd3fec346f34e13ce7aa176b03b497a32c496a" + integrity sha512-rkBqWsO7m01XckP9R2YHVN8mySOKKY2cophGM8K5uDK89ArCgahItQYdbg/3n8xMxzu2elss+an1TphlUpDuJw== "@typescript-eslint/typescript-estree@2.27.0": version "2.27.0" @@ -1941,13 +1941,13 @@ semver "^6.3.0" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.0.1.tgz#29a43c7060641ec51c902d9f50ac7c5866ec479f" - integrity sha512-zGzleORFXrRWRJAMLTB2iJD1IZbCPkg4hsI8mGdpYlKaqzvKYSEWVAYh14eauaR+qIoZVWrXgYSXqLtTlxotiw== +"@typescript-eslint/typescript-estree@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.1.0.tgz#394046ead25164494218c0e3d6b960695ea967f6" + integrity sha512-r6et57qqKAWU173nWyw31x7OfgmKfMEcjJl9vlJEzS+kf9uKNRr4AVTRXfTCwebr7bdiVEkfRY5xGnpPaNPe4Q== dependencies: - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/visitor-keys" "4.0.1" + "@typescript-eslint/types" "4.1.0" + "@typescript-eslint/visitor-keys" "4.1.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -1955,12 +1955,12 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.0.1.tgz#d4e8de62775f2a6db71c7e8539633680039fdd6c" - integrity sha512-yBSqd6FjnTzbg5RUy9J+9kJEyQjTI34JdGMJz+9ttlJzLCnGkBikxw+N5n2VDcc3CesbIEJ0MnZc5uRYnrEnCw== +"@typescript-eslint/visitor-keys@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.1.0.tgz#b2d528c9484e7eda1aa4f86ccf0432fb16e4d545" + integrity sha512-+taO0IZGCtCEsuNTTF2Q/5o8+fHrlml8i9YsZt2AiDCdYEJzYlsmRY991l/6f3jNXFyAWepdQj7n8Na6URiDRQ== dependencies: - "@typescript-eslint/types" "4.0.1" + "@typescript-eslint/types" "4.1.0" eslint-visitor-keys "^2.0.0" "@ungap/url-search-params@^0.1.2": @@ -5023,10 +5023,10 @@ eslint-plugin-prettier@3.1.4: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react-hooks@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.1.0.tgz#6323fbd5e650e84b2987ba76370523a60f4e7925" - integrity sha512-36zilUcDwDReiORXmcmTc6rRumu9JIM3WjSvV0nclHoUQ0CNrX866EwONvLR/UqaeqFutbAnVu8PEmctdo2SRQ== +eslint-plugin-react-hooks@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.1.2.tgz#2eb53731d11c95826ef7a7272303eabb5c9a271e" + integrity sha512-ykUeqkGyUGgwTtk78C0o8UG2fzwmgJ0qxBGPp2WqRKsTwcLuVf01kTDRAtOsd4u6whX2XOC8749n2vPydP82fg== eslint-plugin-react-hooks@^1.6.1: version "1.7.0" From da3670bb17309ba1842b8805308a849e6019494c Mon Sep 17 00:00:00 2001 From: Friedjoff Trautwein Date: Fri, 11 Sep 2020 14:38:38 +0200 Subject: [PATCH 2/3] feat: improve forest type description --- .../AltitudinalZoneForestEcoregion.js | 885 +++++++++++++----- .../ForestTypeDescription/Diagram.module.css | 31 + .../ForestTypeDescription/Graininess.js | 171 ++-- src/components/ForestTypeDescription/Grid.js | 2 +- src/components/ForestTypeDescription/Humus.js | 34 +- .../ForestTypeDescription/Legend.js | 50 + .../ForestTypeDescription/SoilDiagram.js | 2 +- .../ForestTypeDescription/SoilTab.js | 18 +- .../ForestTypeDescription/TerrainTab.js | 2 + src/i18n/resources/de/translation.json | 3 +- 10 files changed, 860 insertions(+), 338 deletions(-) create mode 100644 src/components/ForestTypeDescription/Legend.js diff --git a/src/components/ForestTypeDescription/AltitudinalZoneForestEcoregion.js b/src/components/ForestTypeDescription/AltitudinalZoneForestEcoregion.js index 93fc3d5c..4360d429 100644 --- a/src/components/ForestTypeDescription/AltitudinalZoneForestEcoregion.js +++ b/src/components/ForestTypeDescription/AltitudinalZoneForestEcoregion.js @@ -11,422 +11,861 @@ function AltitudinalZoneForestEcoregion({ data }) { const { i18n, t } = useTranslation(); return ( + + {t('forestTypeDiagram.altitudinalZoneAbbr.100')} + + + {t('forestTypeDiagram.altitudinalZoneAbbr.90')} + + + {t('forestTypeDiagram.altitudinalZoneAbbr.80')} + + + {t('forestTypeDiagram.altitudinalZoneAbbr.60')} + + + {t('forestTypeDiagram.altitudinalZoneAbbr.50')} + + + {t('forestTypeDiagram.altitudinalZoneAbbr.40')} + + + {t('forestTypeDiagram.altitudinalZoneAbbr.20')} + + + {info('altitudinalZone', '100')[i18n.language]} + + + {info('altitudinalZone', '90')[i18n.language]} + + + {info('altitudinalZone', '80')[i18n.language]} + + + {info('altitudinalZone', '60')[i18n.language]} + + + {info('altitudinalZone', '50')[i18n.language]} + + + {info('altitudinalZone', '40')[i18n.language]} + + + {info('altitudinalZone', '20')[i18n.language]} + + + + + + + - - + + + - - {t('forestTypeDiagram.altitudinalZoneForestEcoregion')} - - - {t('forestTypeDiagram.meter')} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2500 - - {t('forestTypeDiagram.aboveSeaLevel')} + + 500 - - 2000 + + 1000 - - 1600 + + 1500 - - 800 + + 2000 - + J - + M - + 1 - + 2 - + 3 - + 4 - + 5 - + 2a - + 2b - + 5a - + 5b - + {info('forestEcoregion', 'J')[i18n.language]} - + {info('forestEcoregion', 'M')[i18n.language]} - + - Northern - + Northern + Pre-Alps - + - Northern - + Northern + intermediate - + Alps - + - Continental - + Continental + Alps - + - Southern - + Southern + intermediate - + Alps - + - Southern - + Southern + Pre-Alps - - {t('forestTypeDiagram.altitudinalZoneAbbr.100')} + + m - - {t('forestTypeDiagram.altitudinalZoneAbbr.90')} - - - {t('forestTypeDiagram.altitudinalZoneAbbr.80')} - - - {t('forestTypeDiagram.altitudinalZoneAbbr.60')} - - - {t('forestTypeDiagram.altitudinalZoneAbbr.50')} - - - {t('forestTypeDiagram.altitudinalZoneAbbr.40')} - - - {t('forestTypeDiagram.altitudinalZoneAbbr.20')} - - - {info('altitudinalZone', '100')[i18n.language]} - - - {info('altitudinalZone', '90')[i18n.language]} - - - {info('altitudinalZone', '80')[i18n.language]} - - - {info('altitudinalZone', '60')[i18n.language]} - - - {info('altitudinalZone', '50')[i18n.language]} - - - {info('altitudinalZone', '40')[i18n.language]} + + {t('forestTypeDiagram.aboveSeaLevel')} - - {info('altitudinalZone', '20')[i18n.language]} + + Me - - {t('forestTypeDiagram.altitudinalZoneAbbr.100')} + + + Mendris- + + iotto + + - - {t('forestTypeDiagram.altitudinalZoneAbbr.90')} + + C - - {t('forestTypeDiagram.altitudinalZoneAbbr.90')} + + C - - {t('forestTypeDiagram.altitudinalZoneAbbr.80')} + + CB - - {t('forestTypeDiagram.altitudinalZoneAbbr.80')} + + HY - - {t('forestTypeDiagram.altitudinalZoneAbbr.80')} + + OSA - - {t('forestTypeDiagram.altitudinalZoneAbbr.60')} + + SA - - {t('forestTypeDiagram.altitudinalZoneAbbr.60')} / + + HM - - {t('forestTypeDiagram.altitudinalZoneAbbr.60')} + + HM - - {t('forestTypeDiagram.altitudinalZoneAbbr.50')} + + OM / - - {t('forestTypeDiagram.altitudinalZoneAbbr.50')} + + UM - - {t('forestTypeDiagram.altitudinalZoneAbbr.50')} + + HM - - {t('forestTypeDiagram.altitudinalZoneAbbr.40')} + + OM - - {t('forestTypeDiagram.altitudinalZoneAbbr.40')} + + UM - - {t('forestTypeDiagram.altitudinalZoneAbbr.20')} + + SM - - {t('forestTypeDiagram.altitudinalZoneAbbr.20')} + + OM - - {t('forestTypeDiagram.altitudinalZoneAbbr.20')} + + UM - - {t('forestTypeDiagram.altitudinalZoneAbbr.20')} + + SN - - - - - - - - - - - - - - - - - - - - - - - - - - ); } diff --git a/src/components/ForestTypeDescription/Diagram.module.css b/src/components/ForestTypeDescription/Diagram.module.css index 2ac13ede..4d072a58 100644 --- a/src/components/ForestTypeDescription/Diagram.module.css +++ b/src/components/ForestTypeDescription/Diagram.module.css @@ -8,6 +8,21 @@ fill: none; stroke-width: 0.5; } +.dashedLine { + fill: none; + stroke-dasharray: 10, 10; +} +.greyLine { + fill: none; + stroke: #999; +} +.bgLine { + fill: none; + fill-rule: nonzero; + stroke: #fff; + stroke-width: 8.52px; + stroke-miterlimit: 4; +} .header { font-size: 20px; @@ -22,6 +37,12 @@ text-anchor: middle; } +.labelMiddleBold { + font-size: 16px; + font-weight: bold; + text-anchor: middle; +} + .rare { fill: #eee; } @@ -31,3 +52,13 @@ .often { fill: #74bd70; } + +.svg { + display: block; + margin-bottom: 30px; +} + +.group { + column-count: 2; + column-gap: 20px; +} diff --git a/src/components/ForestTypeDescription/Graininess.js b/src/components/ForestTypeDescription/Graininess.js index 605e6c45..2e0ec7eb 100644 --- a/src/components/ForestTypeDescription/Graininess.js +++ b/src/components/ForestTypeDescription/Graininess.js @@ -8,160 +8,149 @@ import { getStyle } from './utils'; function Graininess({ graininess, rawMaterial }) { const { t } = useTranslation(); return ( - + - - - - {t('forestTypeDiagram.legend.label')} - - - {t('forestTypeDiagram.legend.distribution')} - - - {t('forestTypeDiagram.legend.often')} - - - {t('forestTypeDiagram.legend.medium')} - - - {t('forestTypeDiagram.legend.rare')} - - - + {t('forestTypeDiagram.graininess.clay')} [%] - + {t('forestTypeDiagram.graininess.silt')} [%] - + {t('forestTypeDiagram.graininess.label')} - + d="M58.282,55.295l0,297.261l295.959,-0l-296.625,-297.261" + className={styles.line} + /> + + + + + + + + + 50 - + 100 - + 5 - + 30 - + 50 - + 100 - + {t('forestTypeDiagram.rawMaterial.label')} - + {t('forestTypeDiagram.rawMaterial.acid')} - + {t('forestTypeDiagram.rawMaterial.alkaline')} - + {t('forestTypeDiagram.rawMaterial.unkown')} - + + ); } diff --git a/src/components/ForestTypeDescription/Grid.js b/src/components/ForestTypeDescription/Grid.js index e909f35b..7e80d0e9 100644 --- a/src/components/ForestTypeDescription/Grid.js +++ b/src/components/ForestTypeDescription/Grid.js @@ -6,7 +6,7 @@ import { getStyle } from './utils'; function Grid({ data, header, headerX, headerY, labelX, labelY }) { return ( - + {header} diff --git a/src/components/ForestTypeDescription/Humus.js b/src/components/ForestTypeDescription/Humus.js index 16e2074f..3f284811 100644 --- a/src/components/ForestTypeDescription/Humus.js +++ b/src/components/ForestTypeDescription/Humus.js @@ -8,7 +8,7 @@ import { getStyle } from './utils'; function Humus({ humus, humusVariants }) { const { t } = useTranslation(); return ( - + - + {t('forestTypeDiagram.humus.mor')} - + {t('forestTypeDiagram.humus.moder')} - + {t('forestTypeDiagram.humus.mull')} @@ -230,52 +230,52 @@ function Humus({ humus, humusVariants }) { - + {t('forestTypeDiagram.humus.fmull')} - + {t('forestTypeDiagram.humus.lmull')} - + {t('forestTypeDiagram.humus.dry')} - + {t('forestTypeDiagram.humus.xero')} - + {t('forestTypeDiagram.humus.wet')} - + {t('forestTypeDiagram.humus.hydro')} - + {t('forestTypeDiagram.humus.tangel')} - + {t('forestTypeDiagram.humus.eroded')} - + {t('forestTypeDiagram.humus.variants')} - + {t('forestTypeDiagram.humus.limeMull')} - + {t('forestTypeDiagram.humus.limeModer')} - + {t('forestTypeDiagram.humus.halfBog')} - + {t('forestTypeDiagram.humus.turf')} + + + {t('forestTypeDiagram.legend.often')} + + + + {t('forestTypeDiagram.legend.medium')} + + + + {t('forestTypeDiagram.legend.rare')} + + + {t('forestTypeDiagram.legend.label')} + + + {t('forestTypeDiagram.legend.distribution')} + + + ); +} + +export default Legend; diff --git a/src/components/ForestTypeDescription/SoilDiagram.js b/src/components/ForestTypeDescription/SoilDiagram.js index 7f34e882..05130f81 100644 --- a/src/components/ForestTypeDescription/SoilDiagram.js +++ b/src/components/ForestTypeDescription/SoilDiagram.js @@ -8,7 +8,7 @@ import { getStyle } from './utils'; function SoilDiagram({ soil, soilVariants }) { const { t } = useTranslation(); return ( - + + - - - - +
+ + +
+
+ + +
); } diff --git a/src/components/ForestTypeDescription/TerrainTab.js b/src/components/ForestTypeDescription/TerrainTab.js index 338fe2bd..fc0833c5 100644 --- a/src/components/ForestTypeDescription/TerrainTab.js +++ b/src/components/ForestTypeDescription/TerrainTab.js @@ -4,6 +4,7 @@ import { useTranslation } from 'react-i18next'; import { Table } from 'semantic-ui-react'; import AltitudinalZone from './AltitudinalZoneForestEcoregion'; +import Legend from './Legend'; import Site from './Site'; function TerrainTab({ data }) { @@ -11,6 +12,7 @@ function TerrainTab({ data }) { return ( <> + diff --git a/src/i18n/resources/de/translation.json b/src/i18n/resources/de/translation.json index 0a8d6a2f..d0a6dd9a 100644 --- a/src/i18n/resources/de/translation.json +++ b/src/i18n/resources/de/translation.json @@ -53,7 +53,8 @@ "2": "<0>Nördl.<1>Zwischen-<2>alpen", "3": "<0>Kontinent.<1>Hochalpen", "4": "<0>Südl.<1>Zwischen-<2>alpen", - "5": "<0>Südl.<1>Randalpen" + "5": "<0>Südl.<1>Randalpen", + "Me": "<0>Mendris-<1>iotto" }, "graininess": { "label": "Körnung", From 1ddd513ee77132b5e044d413d8adc280718c5e12 Mon Sep 17 00:00:00 2001 From: Friedjoff Trautwein Date: Fri, 11 Sep 2020 14:39:06 +0200 Subject: [PATCH 3/3] feat: add contact info --- src/components/InfoContact.js | 16 ++++++++++++++++ src/components/InfoPage.js | 6 ++++++ src/i18n/resources/de/translation.json | 3 +++ 3 files changed, 25 insertions(+) create mode 100644 src/components/InfoContact.js diff --git a/src/components/InfoContact.js b/src/components/InfoContact.js new file mode 100644 index 00000000..d58196b7 --- /dev/null +++ b/src/components/InfoContact.js @@ -0,0 +1,16 @@ +import React from 'react'; +import { Trans, useTranslation } from 'react-i18next'; + +function InfoContact() { + const { t } = useTranslation(); + const { href } = document.location; + const body = encodeURIComponent(t('info.contactBody', { url: href })); + return ( + + contact{' '} + info@tree-app.ch + + ); +} + +export default InfoContact; diff --git a/src/components/InfoPage.js b/src/components/InfoPage.js index 59ddc03b..fd9322f9 100644 --- a/src/components/InfoPage.js +++ b/src/components/InfoPage.js @@ -4,6 +4,7 @@ import { Accordion } from 'semantic-ui-react'; import InfoAbout from './InfoAbout'; import InfoBugs from './InfoBugs'; +import InfoContact from './InfoContact'; import InfoGlossary from './InfoGlossary'; import InfoLocation from './InfoLocation'; import InfoParticipants from './InfoParticipants'; @@ -72,6 +73,11 @@ function InfoPage() { title: { content: t('info.disclaimerTitle') }, content: { content: t('info.disclaimer') }, }, + { + key: 'info.contact', + title: { content: t('info.contactTitle') }, + content: { content: }, + }, ]; return (
diff --git a/src/i18n/resources/de/translation.json b/src/i18n/resources/de/translation.json index d0a6dd9a..74d46768 100644 --- a/src/i18n/resources/de/translation.json +++ b/src/i18n/resources/de/translation.json @@ -298,6 +298,9 @@ "aboutTitle": "Über die Anwendung", "bugs": "

In der aktuellen Version sind folgende Fehler bekannt oder Features noch nicht implementiert:

1) Die App funktioniert mit den Browsern Firefox, Edge, Chrome, Samsung Internet und Safari. Bei anderen Browsern können Fehlfunktionen auftreten.

2) Wenn die Tree App in einer früheren Version geladen wurde, kann es sein, dass sie nicht aktualisiert wird. Um dies zu erreichen, muss der Cache manuell geleert werden (s. Browser-spezifische Anleitungen im Internet).

3) In den Standortsregionen 2b und 4 können Buchen in der Oberschicht vorkommen. Dann müssen die Ökogramme der Standortsregionen 2a bzw. 5 verwendet werden. Dies ist sowohl in der Ansicht „Standort“ als auch in der Ansicht „Empfehlung“ im manuellen Modus möglich.

4) Im Tannenreliktareal können Tannen in der Oberschicht vorkommen. Dann müssen die Ökogramme des Tannenhaupt- und Nebenareals verwendet werden. Dies ist bei der Ansicht „Standort“ nicht implementiert, und in der Ansicht „Empfehlung“ nur im manuellen Modus möglich.

5) Es ist geplant, kantonale Kartierungen der Waldstandorte so einzubinden, dass der Standortstyp direkt aus der Standortskarte übernommen wird.

6) Die gemäss Tree App empfohlenen Baumarten können von den in den kantonalen Fachgrundlagen empfohlenen Baumarten abweichen, denn sie wurden aus mehreren kantonalen Grundlagenwerken zusammengestellt.

7) Die Hintergrundkarten sind nicht offline-fähig. Man kann sie aber, bevor die Verbindung abbricht, in den Browser laden. ", "bugsTitle": "Bekannte Bugs und geplante Erweiterungen", + "contact": "Bei Problemen oder Verbesserungsvorschlägen wenden Sie sich bitte an: <2>info@tree-app.ch", + "contactBody": "Aktuelle URL: {{ url }}", + "contactTitle": "Kontakt", "glossary": "

Auenwälder (Standortsgruppe)

Standortstypen im Einflussbereich von Gewässern.

Gebüschwälder (Standortsgruppe)

Bei den NaiS-Standortstypen wird normalerweise die späte Optimalphase beschrieben. Bei niederliegender Wuchsform infolge Einwirkung von Lawinen oder Überschwemmung werden sie als Gebüschvariante mit dem angehängten Code «G» bezeichnet. Dieser Code kann an alle beschriebenen NaiS-Standortstypen angehängt werden (vgl. → Pionierstandorte).

Hauptwaldstandort

Zonaler Standortstyp, der für die entsprechende → Vegetationshöhenstufe durch die Standortsfaktoren Bodensäure bzw. Nährstoffverfügbarkeit und die durchschnittliche Bodenfeuchte genügend charakterisiert werden kann.

Höhenstufe s. → Vegetationshöhenstufe

«Mässiger» Klimawandel (Periode 2070-2099)

Das Klima ist im Schweizer Mittel von April bis September im Vergleich zur Periode 1981-2010 3,1 °C wärmer und der Niederschlag ist 2% geringer.

Ökogramm

Diagramm mit den Achsen «sauer-basisch» und «nass-trocken». In diesem sind → Hauptwaldstandorte als Kästchen, die das Zentrum des Vorkommens der entsprechenden → Standortstypen charakterisieren, modellhaft dargestellt. Über dem oberen Rand des Ökogramms ist es zu trocken für das Baumwachstum, unter dem unteren Rand ist es zu nass. Ökogramme gelten für bestimmte → Standortsregionen und → Vegetationshöhenstufen.

Pionierstandorte (Standortsgruppe)

Bei den NaiS-Standortstypen wird normalerweise die späte Optimalphase beschrieben. Wenn im Gelände Pionierphasen angetroffen werden und sich diese Bestände in den nächsten 100 Jahren weiterentwickeln können, wird der gleiche Standortstyp angesprochen wie beim ausgewachsenen Bestand. In Ausnahmefällen entwickeln sich die Pionierphasen nicht oder nur sehr langsam weiter (Dauerstadien). In diesen Fällen werden Pionierstandorte beschrieben, falls die Bäume aufrecht wachsen (vgl. → Gebüschwälder).

Sonderwaldstandort

→ Standortstyp, der hauptsächlich durch andere Standortfaktoren als Allgemeinklima, Bodensäure bzw. Nährstoffverfügbarkeit und durchschnittliche Bodenfeuchte bestimmt ist. Standortfaktoren, die einen Sonderwaldstandort bestimmen, sind bewegter Schutt oder Blockschutt. Vgl. → Hauptwaldstandort.

Standort

Gesamtheit aller Einflüsse, die auf die Bäume des Waldbestandes wirken (z.B. Klima, Eigenarten des Bodens, Lawinen, Steinschlag etc.).

Standortstyp

Aus der Betrachtung realer Standorte abgeleitete idealisierte Beschreibung eines → Standortes. In dieser Beschreibung kann ein ähnlicher realer Standort erkannt werden. Der Standortstyp wird durch floristische, standörtliche und strukturelle Merkmale charakterisiert.

Standortsregion

Die Standortsregionen sind biogeografische Regionen mit ähnlichem Klimacharakter. Unterschieden werden die Standortsregionen Jura, Mittelland, Nördliche Randalpen, Nördliche Zwischenalpen mit Buche, Nördliche Zwischenalpen ohne Buche, Kontinentale Hochalpen, Südliche Zwischenalpen, Südliche Randalpen und Mendrisiotto.

Stark wechselnde Feuchtigkeit (Standortsgruppe)

Zonale Standortstypen, die ähnlich wie Hauptwaldstandorte für die entsprechende Höhenstufe durch die Standortsfaktoren Bodensäure bzw. Nährstoffverfügbarkeit und Bodenfeuchte charakterisiert sind. Die Bodenfeuchte ist jedoch nicht konstant, sondern wechselt stark.

«Starker» Klimawandel (Periode 2070-2099)

Das Klima ist im Schweizer Mittel von April bis September im Vergleich zur Periode 1981-2010 4,3 °C wärmer und der Niederschlag ist 19% geringer.

Tannenareal

Region mit einem in bestimmter Weise ausgeprägten Vorkommen der Weisstanne. Im Hauptareal sind Tannen in der obermontanen und hochmontanen Stufe natürlicherweise in einem erheblichen Masse am Bestandesaufbau beteiligt. Im Nebenareal, das in den nördlichen und südlichen Zwischenalpen liegt, sind Tannenvorkommen meist auf die hochmontane Stufe in Tälern mit Talsohle unterhalb von rund 1000 m ü.M. und hier auf nord- und ostexponierte Hänge beschränkt. Im Reliktareal der Zwischenalpen und kontinentalen Hochalpen kommen Tannen in Form kleinerer isolierter Bestände vor.

Vegetationshöhenstufe (Kurzform: Höhenstufe)

Höhenbereich mit ähnlichem ökologischen Verhalten der Baumarten und ähnlicher Bestandesstruktur. Die Höhenstufen sind stark durch die Lufttemperatur geprägt. Einige Höhenstufen kommen nur in bestimmten → Standortsregionen vor.

Waldstandort s. → Standort

", "glossaryTitle": "Glossar", "impressum": "Die Tree App ist ein Umsetzungsprodukt des Forschungsprogramms „Wald und Klimawandel“ von BAFU und WSL.",