From f7a343a3acd271a62b0daf81ced4f96fcdaca182 Mon Sep 17 00:00:00 2001 From: Harsh Vitra Date: Thu, 28 Jan 2021 13:12:49 +0530 Subject: [PATCH] Tree counter widget --- package-lock.json | 26 ++ package.json | 1 + public/data/locales/de.json | 5 +- public/data/locales/en.json | 5 +- public/index.html | 15 +- rollup.config.js | 5 +- src/TreeCounter/App.svelte | 499 +++++++++++++++++++++++++++++++++ src/TreeCounter/treecounter.js | 3 + src/TreeMap/App.svelte | 56 +++- 9 files changed, 604 insertions(+), 11 deletions(-) create mode 100644 src/TreeCounter/App.svelte create mode 100644 src/TreeCounter/treecounter.js diff --git a/package-lock.json b/package-lock.json index 9279470..9a5603e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,6 +110,16 @@ "@rollup/pluginutils": "^3.0.8" } }, + "@rollup/plugin-multi-entry": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-multi-entry/-/plugin-multi-entry-4.0.0.tgz", + "integrity": "sha512-1Sw86rwFxrNS7ECY3iSZ7T940xKnruNGpmQDgSDVTp+VTa1g5cPXNzBgp+IoOer41CiVeGFLwYwvicVoJLHEDQ==", + "dev": true, + "requires": { + "@rollup/plugin-virtual": "^2.0.3", + "matched": "^5.0.0" + } + }, "@rollup/plugin-node-resolve": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", @@ -134,6 +144,12 @@ "magic-string": "^0.25.7" } }, + "@rollup/plugin-virtual": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz", + "integrity": "sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw==", + "dev": true + }, "@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -620,6 +636,16 @@ "vt-pbf": "^3.1.1" } }, + "matched": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/matched/-/matched-5.0.1.tgz", + "integrity": "sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "picomatch": "^2.2.1" + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", diff --git a/package.json b/package.json index 1e4531e..719746b 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "^16.0.0", + "@rollup/plugin-multi-entry": "^4.0.0", "@rollup/plugin-node-resolve": "^10.0.0", "@rollup/plugin-replace": "^2.3.4", "dotenv": "^8.2.0", diff --git a/public/data/locales/de.json b/public/data/locales/de.json index 46c3570..d9ec7a8 100644 --- a/public/data/locales/de.json +++ b/public/data/locales/de.json @@ -3,5 +3,8 @@ "target":"Ziel", "plantTrees":"Bäume pflanzen", "viewProfile":"Profil anzeigen", - "poweredBy":"Powered by Plant-for-the-Planet" + "poweredBy":"Powered by Plant-for-the-Planet", + "treesPlantedBy":"trees planted by", + "and":"und", + "treesPlantedByComm":"trees planted by community." } \ No newline at end of file diff --git a/public/data/locales/en.json b/public/data/locales/en.json index 5aad22b..aa41e35 100644 --- a/public/data/locales/en.json +++ b/public/data/locales/en.json @@ -3,5 +3,8 @@ "target":"Target", "plantTrees":"Plant Trees", "viewProfile":"View Profile", - "poweredBy":"Powered by Plant-for-the-Planet" + "poweredBy":"Powered by Plant-for-the-Planet", + "treesPlantedBy":"trees planted by", + "and":"and", + "treesPlantedByComm":"trees planted by community." } \ No newline at end of file diff --git a/public/index.html b/public/index.html index dbd6296..f7dd4da 100644 --- a/public/index.html +++ b/public/index.html @@ -23,8 +23,19 @@

TreeMap for Partners

TreeMap Variant 3

Partner, theme="dark", community="false", locale="de"

- - + + +

TreeMap Variant 4

+

User override - community

+ + +

Tree Counter Variant 1

+

Default

+ + +

Tree Counter Variant 2

+

Dark mode

+ diff --git a/rollup.config.js b/rollup.config.js index 54ba0b5..8f07df6 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,11 +3,11 @@ import commonjs from "@rollup/plugin-commonjs"; import resolve from "@rollup/plugin-node-resolve"; import livereload from "rollup-plugin-livereload"; import { terser } from "rollup-plugin-terser"; -import css from "rollup-plugin-css-only"; import json from "@rollup/plugin-json"; import {config} from 'dotenv'; import replace from '@rollup/plugin-replace'; import gzipPlugin from 'rollup-plugin-gzip' +import multi from '@rollup/plugin-multi-entry'; const production = !process.env.ROLLUP_WATCH; @@ -37,7 +37,7 @@ function serve() { } export default { - input: "src/TreeMap/treemap.js", + input: ["src/TreeMap/treemap.js","src/TreeCounter/treecounter.js"], output: { sourcemap: true, format: "iife", @@ -45,6 +45,7 @@ export default { file: "public/build/treemap.js", }, plugins: [ + multi(), gzipPlugin(), replace({ // stringify the object diff --git a/src/TreeCounter/App.svelte b/src/TreeCounter/App.svelte new file mode 100644 index 0000000..b67875c --- /dev/null +++ b/src/TreeCounter/App.svelte @@ -0,0 +1,499 @@ + + + + +
+ {#await fetchProfileData} + + {:then data} +
+
+
+
+

+ {community + ? getFormattedNumber( + data.score.personal + data.score.received, + locale + ) + : getFormattedNumber( + data.score.personal, + locale + )} +

+

+ {language.treesPlanted} +

+
+ {#if data.score.target != 0} +
+

+ {getFormattedNumber(data.score.target, locale)} +

+

{language.target}

+
+ {/if} +
+ + + + +
+ {language.plantTrees} + +
+ + + + {#if data.hasLogoLicense} +
+ Powered by Plant-for-the-Planet +
+ {/if} +
+ + +
+ {:catch error} +

An error occurred!

+ {/await} +
+ + + diff --git a/src/TreeCounter/treecounter.js b/src/TreeCounter/treecounter.js new file mode 100644 index 0000000..d9774c0 --- /dev/null +++ b/src/TreeCounter/treecounter.js @@ -0,0 +1,3 @@ +import App from "./App.svelte"; + +export default App; diff --git a/src/TreeMap/App.svelte b/src/TreeMap/App.svelte index 1f8768b..c2bcf5c 100644 --- a/src/TreeMap/App.svelte +++ b/src/TreeMap/App.svelte @@ -13,11 +13,12 @@ // Props that can be passed export let user; export let primaryColor = "#68b030"; - export let circleBGColor = "#23519b"; export let theme = "light"; + export let circleBGColor; export let community = false; export let locale= "en"; + let counterBGColor = circleBGColor ? circleBGColor : theme === 'light' ? "#23519b" : "#2f3336"; let language; @@ -128,7 +129,7 @@
{#await fetchProfileData} @@ -138,7 +139,7 @@
-

+

{community ? getFormattedNumber( data.score.personal + @@ -146,7 +147,7 @@ ) : getFormattedNumber(data.score.personal,locale)}

-

{language.treesPlanted}

+

{language.treesPlanted}

{#if data.score.target != 0}
@@ -201,6 +202,22 @@ href={`https://www1.plant-for-the-planet.org/`} target="_blank">| {language.poweredBy} +
+ + + +

+ + {getFormattedNumber(data.score.personal,locale)} {language.treesPlantedBy} {data.displayName} + {community + ? `${language.and} ${getFormattedNumber(data.score.received, locale)} ${language.treesPlantedByComm}` + : ""} +

+
+