From 3dfe974815df7a4310896288e1a050407fad7e73 Mon Sep 17 00:00:00 2001 From: clampr Date: Thu, 14 Oct 2021 11:19:12 +0200 Subject: [PATCH] V0.2.0 --- functions/props/About.ts | 15 + functions/props/PlaceClimate.ts | 1 + functions/props/PlaceHistory.ts | 1 + functions/props/Support.ts | 15 + package-lock.json | 224 +- package.json | 4 +- src/components/Donation.vue | 3 + src/components/Footer.vue | 15 +- src/components/climate/Climate.vue | 10 +- src/components/history/Maps.vue | 10 +- src/components/history/dashboards/Daily.vue | 13 +- src/components/history/dashboards/Hourly.vue | 16 +- src/components/history/tables/Daily.vue | 5 + src/components/history/tables/Hourly.vue | 5 + src/i18n/translations/de.json | 2 +- src/style/default.scss | 2 - .../css/weather-icons-meteostat.css | 215 ++ .../css/weather-icons-wind-meteostat.css | 2537 +++++++++++++++++ src/views/About.vue | 1 + src/views/Home.vue | 1 + src/views/Patrons.vue | 45 +- src/views/Place.vue | 10 + worker-site/worker/script.js | 4 +- 23 files changed, 2915 insertions(+), 239 deletions(-) create mode 100644 functions/props/About.ts create mode 100644 functions/props/Support.ts create mode 100644 src/style/weather-icons/css/weather-icons-meteostat.css create mode 100644 src/style/weather-icons/css/weather-icons-wind-meteostat.css diff --git a/functions/props/About.ts b/functions/props/About.ts new file mode 100644 index 0000000..d038aef --- /dev/null +++ b/functions/props/About.ts @@ -0,0 +1,15 @@ +import type { EdgeProps } from 'vitedge' + +export default { + async handler() { + return { + data: {}, + } + }, + options: { + cache: { + api: 60*60*24*14, + html: 60*60*24*14 + }, + }, +} diff --git a/functions/props/PlaceClimate.ts b/functions/props/PlaceClimate.ts index 738feec..f5d5363 100644 --- a/functions/props/PlaceClimate.ts +++ b/functions/props/PlaceClimate.ts @@ -8,6 +8,7 @@ export default { .then(data => { place = data.data }) + .catch(() => console.log('Place Not Found')) return { data: { status: place === null ? 404 : 200, diff --git a/functions/props/PlaceHistory.ts b/functions/props/PlaceHistory.ts index ef15478..e904182 100644 --- a/functions/props/PlaceHistory.ts +++ b/functions/props/PlaceHistory.ts @@ -8,6 +8,7 @@ export default { .then(data => { place = data.data }) + .catch(() => console.log('Place Not Found')) return { data: { status: place === null ? 404 : 200, diff --git a/functions/props/Support.ts b/functions/props/Support.ts new file mode 100644 index 0000000..d038aef --- /dev/null +++ b/functions/props/Support.ts @@ -0,0 +1,15 @@ +import type { EdgeProps } from 'vitedge' + +export default { + async handler() { + return { + data: {}, + } + }, + options: { + cache: { + api: 60*60*24*14, + html: 60*60*24*14 + }, + }, +} diff --git a/package-lock.json b/package-lock.json index f4b3df2..9354f70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1164,90 +1164,6 @@ "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", "dev": true }, - "esbuild-android-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.4.tgz", - "integrity": "sha512-elDJt+jNyoHFId0/dKsuVYUPke3EcquIyUwzJCH17a3ERglN3A9aMBI5zbz+xNZ+FbaDNdpn0RaJHCFLbZX+fA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.4.tgz", - "integrity": "sha512-zJQGyHRAdZUXlRzbN7W+7ykmEiGC+bq3Gc4GxKYjjWTgDRSEly98ym+vRNkDjXwXYD3gGzSwvH35+MiHAtWvLA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.4.tgz", - "integrity": "sha512-r8oYvAtqSGq8HNTZCAx4TdLE7jZiGhX9ooGi5AQAey37MA6XNaP8ZNlw9OCpcgpx3ryU2WctXwIqPzkHO7a8dg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.4.tgz", - "integrity": "sha512-u9DRGkn09EN8+lCh6z7FKle7awi17PJRBuAKdRNgSo5ZrH/3m+mYaJK2PR2URHMpAfXiwJX341z231tSdVe3Yw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.4.tgz", - "integrity": "sha512-q3B2k68Uf6gfjATjcK16DqxvjqRQkHL8aPoOfj4op+lSqegdXvBacB1d8jw8PxbWJ8JHpdTLdAVUYU80kotQXA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.4.tgz", - "integrity": "sha512-UUYJPHSiKAO8KoN3Ls/iZtgDLZvK5HarES96aolDPWZnq9FLx4dIHM/x2z4Rxv9IYqQ/DxlPoE2Co1UPBIYYeA==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.4.tgz", - "integrity": "sha512-+RnohAKiiUW4UHLGRkNR1AnENW1gCuDWuygEtd4jxTNPIoeC7lbXGor7rtgjj9AdUzFgOEvAXyNNX01kJ8NueQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.4.tgz", - "integrity": "sha512-BH5gKve4jglS7UPSsfwHSX79I5agC/lm4eKoRUEyo8lwQs89frQSRp2Xup+6SFQnxt3md5EsKcd2Dbkqeb3gPA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.4.tgz", - "integrity": "sha512-+A188cAdd6QuSRxMIwRrWLjgphQA0LDAQ/ECVlrPVJwnx+1i64NjDZivoqPYLOTkSPIKntiWwMhhf0U5/RrPHQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.4.tgz", - "integrity": "sha512-0xkwtPaUkG5xMTFGaQPe1AadSe5QAiQuD4Gix1O9k5Xo/U8xGIkw9UFUTvfEUeu71vFb6ZgsIacfP1NLoFjWNw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.4.tgz", - "integrity": "sha512-E1+oJPP7A+j23GPo3CEpBhGwG1bni4B8IbTA3/3rvzjURwUMZdcN3Fhrz24rnjzdLSHmULtOE4VsbT42h1Om4Q==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.4.tgz", - "integrity": "sha512-xEkI1o5HYxDzbv9jSox0EsDxpwraG09SRiKKv0W8pH6O3bt+zPSlnoK7+I7Q69tkvONkpIq5n2o+c55uq0X7cw==", - "dev": true, - "optional": true - }, "esbuild-plugin-alias": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.1.2.tgz", @@ -1258,34 +1174,6 @@ "resolved": "https://registry.npmjs.org/esbuild-plugin-globals/-/esbuild-plugin-globals-0.1.1.tgz", "integrity": "sha512-BK0OJ02paAPJp4tGyFBum/YHerGYeRvonCRuRpkIbJemQrFHw3uWy6MEXcKgOwecAyXo3fOY5opl8ude2kHVrw==" }, - "esbuild-sunos-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.4.tgz", - "integrity": "sha512-bjXUMcODMnB6hQicLBBmmnBl7OMDyVpFahKvHGXJfDChIi5udiIRKCmFUFIRn+AUAKVlfrofRKdyPC7kBsbvGQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.4.tgz", - "integrity": "sha512-z4CH07pfyVY0XF98TCsGmLxKCl0kyvshKDbdpTekW9f2d+dJqn5mmoUyWhpSVJ0SfYWJg86FoD9nMbbaMVyGdg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.4.tgz", - "integrity": "sha512-uVL11vORRPjocGLYam67rwFLd0LvkrHEs+JG+1oJN4UD9MQmNGZPa4gBHo6hDpF+kqRJ9kXgQSeDqUyRy0tj/Q==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.4.tgz", - "integrity": "sha512-vA6GLvptgftRcDcWngD5cMlL4f4LbL8JjU2UMT9yJ0MT5ra6hdZNFWnOeOoEtY4GtJ6OjZ0i+81sTqhAB0fMkg==", - "dev": true, - "optional": true - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2624,48 +2512,30 @@ "dev": true }, "vite": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.5.tgz", - "integrity": "sha512-vavXMChDUb4Oh4YunrK9BrH5Ox74cu0eOp0VuyI/iqFz1FqbWD72So2c9I87lLL2n0+6tFPV5ijow60KrtxuZg==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.10.tgz", + "integrity": "sha512-0ObiHTi5AHyXdJcvZ67HMsDgVpjT5RehvVKv6+Q0jFZ7zDI28PF5zK9mYz2avxdA+4iJMdwCz6wnGNnn4WX5Gg==", "dev": true, "requires": { - "esbuild": "^0.13.2", + "esbuild": "^0.12.17", "fsevents": "~2.3.2", - "postcss": "^8.3.8", + "postcss": "^8.3.6", "resolve": "^1.20.0", - "rollup": "^2.57.0" + "rollup": "^2.38.5" }, "dependencies": { "esbuild": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz", - "integrity": "sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.13.4", - "esbuild-darwin-64": "0.13.4", - "esbuild-darwin-arm64": "0.13.4", - "esbuild-freebsd-64": "0.13.4", - "esbuild-freebsd-arm64": "0.13.4", - "esbuild-linux-32": "0.13.4", - "esbuild-linux-64": "0.13.4", - "esbuild-linux-arm": "0.13.4", - "esbuild-linux-arm64": "0.13.4", - "esbuild-linux-mips64le": "0.13.4", - "esbuild-linux-ppc64le": "0.13.4", - "esbuild-openbsd-64": "0.13.4", - "esbuild-sunos-64": "0.13.4", - "esbuild-windows-32": "0.13.4", - "esbuild-windows-64": "0.13.4", - "esbuild-windows-arm64": "0.13.4" - } + "version": "0.12.29", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", + "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", + "dev": true } } }, "vite-ssr": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/vite-ssr/-/vite-ssr-0.13.2.tgz", - "integrity": "sha512-FAcKSM+YcyV8FYMuM6XTRkkq9F8cKn8pep2gQaOT3WWHtbHT5uPZUK+aipGvaGc7vWhgDG564FRL9UCWocV4Vg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/vite-ssr/-/vite-ssr-0.14.0.tgz", + "integrity": "sha512-uR6RJe6b72mTEkSY4YXQryKjzs4SOkm7QToLsEiG4vLuZX0Q2T9Dz/QltmmJHat7gCclZD8kniJye2nFzIg9xg==", "requires": { "@rollup/plugin-replace": "^3.0.0", "@vue/server-renderer": "^3.2.0", @@ -2676,54 +2546,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" - }, - "@vue/compiler-core": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.19.tgz", - "integrity": "sha512-8dOPX0YOtaXol0Zf2cfLQ4NU/yHYl2H7DCKsLEZ7gdvPK6ZSEwGLJ7IdghhY2YEshEpC5RB9QKdC5I07z8Dtjg==", - "requires": { - "@babel/parser": "^7.15.0", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-dom": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.19.tgz", - "integrity": "sha512-WzQoE8rfkFjPtIioc7SSgTsnz9g2oG61DU8KHnzPrRS7fW/lji6H2uCYJfp4Z6kZE8GjnHc1Ljwl3/gxDes0cw==", - "requires": { - "@vue/compiler-core": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/compiler-ssr": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.19.tgz", - "integrity": "sha512-oLon0Cn3O7WEYzzmzZavGoqXH+199LT+smdjBT3Uf3UX4HwDNuBFCmvL0TsqV9SQnIgKvBRbQ7lhbpnd4lqM3w==", - "requires": { - "@vue/compiler-dom": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/server-renderer": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.19.tgz", - "integrity": "sha512-A9FNT7fgQJXItwdzWREntAgWKVtKYuXHBKGev/H4+ByTu8vB7gQXGcim01QxaJshdNg4dYuH2tEBZXCNCNx+/w==", - "requires": { - "@vue/compiler-ssr": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/shared": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.19.tgz", - "integrity": "sha512-Knqhx7WieLdVgwCAZgTVrDCXZ50uItuecLh9JdLC8O+a5ayaSyIQYveUK3hCRNC7ws5zalHmZwfdLMGaS8r4Ew==" - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2770,9 +2592,9 @@ } }, "vitedge": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/vitedge/-/vitedge-0.16.4.tgz", - "integrity": "sha512-pEWaANf84lmM90WTbB3VAilAeXXhT06FPIO5aFVOAaUVNy1XQGbFKSbLkVpZRdVdviVv/j6ukDXD3SsAk46XHA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/vitedge/-/vitedge-0.17.0.tgz", + "integrity": "sha512-9vEyeDNzzWojtP74C3gUuXafRzuUyONGQqMusVmMmRRLiDmKAub/PH7usfTPeHve5q3OZMPInswpOEKflLHE/g==", "requires": { "@cloudflare/kv-asset-handler": "^0.1.3", "@rollup/plugin-node-resolve": "^13.0.2", @@ -2784,25 +2606,13 @@ "node-fetch": "^2.6.1", "regexparam": "^1.3.0", "route-sort": "^1.0.0", - "vite-ssr": "0.13.2" + "vite-ssr": "0.14.0" }, "dependencies": { "esbuild": { "version": "0.12.29", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==" - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } } } }, diff --git a/package.json b/package.json index 57b05b9..7e0647c 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "pinia": "^2.0.0-rc.12", "prismjs": "^1.25.0", "v-calendar": "^3.0.0-alpha.6", - "vitedge": "^0.16.4", + "vitedge": "^0.17.0", "vue": "^3.2.20", "vue-i18n": "^9.1.9", "vue-router": "^4.0.11" @@ -63,7 +63,7 @@ "sass-loader": "^10.0.0", "ts-node": "^9.1.1", "typescript": "^4.4.3", - "vite": "^2.6.5", + "vite": "2.5.x", "vue-tsc": "^0.0.24" } } diff --git a/src/components/Donation.vue b/src/components/Donation.vue index 71f374c..4b23eef 100644 --- a/src/components/Donation.vue +++ b/src/components/Donation.vue @@ -27,6 +27,7 @@ class="icon-link mb-2" href="https://www.patreon.com/meteostat" target="_blank" + rel="noreferrer" > @@ -37,6 +38,7 @@ class="icon-link mb-2" href="https://www.paypal.com/donate?hosted_button_id=MQ67WRDC8EW38" target="_blank" + rel="noreferrer" > @@ -47,6 +49,7 @@ class="icon-link mb-4" href="https://github.com/sponsors/clampr" target="_blank" + rel="noreferrer" > diff --git a/src/components/Footer.vue b/src/components/Footer.vue index 62d0860..c5d1436 100644 --- a/src/components/Footer.vue +++ b/src/components/Footer.vue @@ -121,19 +121,28 @@ NOAA + rel="noreferrer nofollow" + > + NOAA + - @@ -222,12 +222,11 @@ import { Store } from 'pinia' import { useSettingsStore } from '~/stores/settings' import { ChartDefinitionInterface } from '~/utils/interfaces' import DataMixin from '../Location.mixin' -import Sections from '../Sections.vue' -import Chart from '../charts/Chart.vue' import { tsTooltips } from '~/components/charts/timeseries.config' -import NoData from './NoData.vue' +import Sections from '../Sections.vue' import Guide from '~/components/Guide.vue' import Ad from '~/components/Ad.vue' +import Chart from '../charts/Chart.vue' /** * Async Components @@ -235,6 +234,9 @@ import Ad from '~/components/Ad.vue' const InterpolationAlert = defineAsyncComponent(() => import('~/components/alerts/Interpolation.vue') ) +const NoData = defineAsyncComponent(() => + import('./NoData.vue') +) export default defineComponent({ name: 'Climate', diff --git a/src/components/history/Maps.vue b/src/components/history/Maps.vue index 35edd01..405732b 100644 --- a/src/components/history/Maps.vue +++ b/src/components/history/Maps.vue @@ -138,13 +138,19 @@ OpenStreetMap, + > + OpenStreetMap + , CARTO + > + CARTO +
diff --git a/src/components/history/dashboards/Daily.vue b/src/components/history/dashboards/Daily.vue index 1d57c5a..9c1090c 100644 --- a/src/components/history/dashboards/Daily.vue +++ b/src/components/history/dashboards/Daily.vue @@ -79,7 +79,7 @@
@@ -266,10 +266,15 @@ - -
@@ -272,7 +294,12 @@ export default defineComponent({ } ], generousBackers: [], - backers: [], + backers: [ + { + name: 'Benjamin Gutzmann', + link: 'https://github.com/gutzbenj' + } + ], donors: [ 'Birgit Becherer', 'Yan Nusinovich', @@ -335,7 +362,7 @@ export default defineComponent({ }, "de": { "$meta": { - "title": "Unterstützer", + "title": "Förderer", "description": "Lernen Sie die Menschen kennen, die Meteostat unterstützen und fördern." }, "meetChristian": "Liebe Nutzer,", @@ -344,8 +371,8 @@ export default defineComponent({ "sponsorsAndPartners": "Förderer & Partner", "these": "diesen", "otherOptions": "dieser Optionen", - "backers": "Förderer", - "$backersText": "Unsere großartigen Förderer, die Meteostat mit wiederkehrender finanzieller Unterstützung am Laufen halten.", + "backers": "Unterstützer", + "$backersText": "Unsere großartigen Unterstützer, die Meteostat mit wiederkehrenden finanziellen Beiträgen am Laufen halten.", "$backersAction": "Werden Sie Unterstützer auf {patreon} oder {github}. Alternativ können Sie auch mit {donation} Optionen regelmäßige Förderbeiträge einrichten.", "donors": "Spender", "$donorsText": "Einige der großzügigen Menschen und Unternehmen, die in der Vergangenheit Geld an Meteostat gespendet haben.", diff --git a/src/views/Place.vue b/src/views/Place.vue index 07e9f52..9a53538 100644 --- a/src/views/Place.vue +++ b/src/views/Place.vue @@ -52,6 +52,7 @@