From 169ce8ec2805db340ab1a39ecd818c3a5ff50933 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Thu, 9 Apr 2020 10:08:13 +0200
Subject: [PATCH] Implement generic welcome activity (#3)

---
 assets/vpu-signature.topic.metadata.json      | 10 +++---
 ...etadata.json => vpu-welcome.metadata.json} |  4 +--
 rollup.config.js                              |  2 +-
 src/app/index.js                              | 14 ++++++--
 src/i18n/de/translation.json                  |  2 +-
 src/i18n/en/translation.json                  |  2 +-
 ...pu-signature-welcome.js => vpu-welcome.js} | 34 ++++++++++++++++---
 7 files changed, 50 insertions(+), 18 deletions(-)
 rename assets/{vpu-signature-welcome.metadata.json => vpu-welcome.metadata.json} (71%)
 rename src/{vpu-signature-welcome.js => vpu-welcome.js} (50%)

diff --git a/assets/vpu-signature.topic.metadata.json b/assets/vpu-signature.topic.metadata.json
index 0efbf96..10ce724 100644
--- a/assets/vpu-signature.topic.metadata.json
+++ b/assets/vpu-signature.topic.metadata.json
@@ -1,11 +1,11 @@
 {
   "name": {
-    "de": "Amtssignatur",
-    "en": "Offical Signature"
+    "de": "Signaturservice",
+    "en": "Signatureservice"
   },
   "short_name": {
-    "de": "Amtssignatur",
-    "en": "Offical Signature"
+    "de": "Signaturservice",
+    "en": "Signatureservice"
   },
   "description": {
     "de": "",
@@ -13,7 +13,7 @@
   },
   "routing_name": "signature",
   "activities": [
-    {"path": "vpu-signature-welcome.metadata.json"},
+    {"path": "vpu-welcome.metadata.json"},
     {"path": "vpu-signature-pdf-upload.metadata.json"},
     {"path": "vpu-signature-profile.metadata.json",
      "visible": false}
diff --git a/assets/vpu-signature-welcome.metadata.json b/assets/vpu-welcome.metadata.json
similarity index 71%
rename from assets/vpu-signature-welcome.metadata.json
rename to assets/vpu-welcome.metadata.json
index 89bcc75..da6fff8 100644
--- a/assets/vpu-signature-welcome.metadata.json
+++ b/assets/vpu-welcome.metadata.json
@@ -1,6 +1,6 @@
 {
-  "element": "vpu-signature-welcome",
-  "module_src": "vpu-signature-welcome.js",
+  "element": "vpu-welcome",
+  "module_src": "vpu-welcome.js",
   "routing_name": "welcome",
   "name": {
     "de": "Willkommen",
diff --git a/rollup.config.js b/rollup.config.js
index 3cf84de..1c560a0 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -144,7 +144,7 @@ export default {
       'src/vpu-signature.js',
       'src/vpu-signature-pdf-upload.js',
       'src/vpu-signature-profile.js',
-      'src/vpu-signature-welcome.js',
+      'src/vpu-welcome.js',
     ] : glob.sync('test/**/*.js'),
     output: {
       dir: 'dist',
diff --git a/src/app/index.js b/src/app/index.js
index a17d334..5b2f9ee 100644
--- a/src/app/index.js
+++ b/src/app/index.js
@@ -1,5 +1,6 @@
 import {createI18nInstance} from '../i18n.js';
-import {html, css, LitElement} from 'lit-element';
+import {html, css} from 'lit-element';
+import VPULitElement from 'vpu-common/vpu-lit-element'
 import 'vpu-language-select';
 import 'vpu-common/vpu-button.js';
 import 'vpu-auth';
@@ -44,7 +45,7 @@ const importNotify = async (promise) => {
 };
 
 
-class VPUApp extends LitElement {
+class VPUApp extends VPULitElement {
     constructor() {
         super();
         this.lang = i18n.language;
@@ -629,8 +630,15 @@ class VPUApp extends LitElement {
         if (!appHidden) {
             this.updateComplete.then(() => {
                 const slot = this.shadowRoot.querySelector("slot");
-                if (slot)
+                if (slot) {
                     slot.remove();
+                }
+
+                const welcomeActivity = this._("vpu-welcome");
+
+                if (welcomeActivity) {
+                    welcomeActivity.setMetaData(this.metadata, i18n.t('welcome.headline'), i18n.t('welcome.description'));
+                }
             });
         }
 
diff --git a/src/i18n/de/translation.json b/src/i18n/de/translation.json
index 3be3753..aa88e15 100644
--- a/src/i18n/de/translation.json
+++ b/src/i18n/de/translation.json
@@ -19,7 +19,7 @@
     "re-upload-all-button-title": "Alle fehlgeschlagen Uploads erneut hochladen"
   },
   "welcome": {
-    "headline": "Willkommen beim Amtssignaturservice der TU Graz",
+    "headline": "Willkommen beim Signaturservice der TU Graz",
     "description": "Mit dieser Applikation können Sie, sofern Sie dazu berechtigt sind, PDF Dateien im Namen der TU Graz signieren"
   },
   "error-summary": "Ein Fehler ist aufgetreten",
diff --git a/src/i18n/en/translation.json b/src/i18n/en/translation.json
index cc9ee36..cbced03 100644
--- a/src/i18n/en/translation.json
+++ b/src/i18n/en/translation.json
@@ -19,7 +19,7 @@
     "re-upload-all-button-title": "Upload all failed uploads again"
   },
   "welcome": {
-    "headline": "Welcome to the official signature service of the TU Graz",
+    "headline": "Welcome to the signature service of the TU Graz",
     "description": "With this application you can, provided you are authorized to do so, sign PDF files in the name of the TU Graz"
   },
   "error-summary": "An error occurred",
diff --git a/src/vpu-signature-welcome.js b/src/vpu-welcome.js
similarity index 50%
rename from src/vpu-signature-welcome.js
rename to src/vpu-welcome.js
index eb32301..da9ef8e 100644
--- a/src/vpu-signature-welcome.js
+++ b/src/vpu-welcome.js
@@ -11,15 +11,22 @@ class SignatureWelcome extends LitElement {
     constructor() {
         super();
         this.lang = i18n.language;
-
+        this.metadata = {};
     }
 
     static get properties() {
         return {
             lang: { type: String },
+            metadata: { type: Object, attribute: false },
         };
     }
 
+    setMetaData(metaData, headline, subHeadline) {
+        this.headline = headline || "Welcome";
+        this.subHeadline = subHeadline || "";
+        this.metadata = metaData;
+    }
+
     update(changedProperties) {
         changedProperties.forEach((oldValue, propName) => {
             if (propName === "lang") {
@@ -35,16 +42,33 @@ class SignatureWelcome extends LitElement {
         return css`
             ${commonStyles.getThemeCSS()}
             ${commonStyles.getGeneralCSS()}
+
+            h2 { margin: inherit; }
+            p { margin: 0 0 10px 0; }
+            div.item { margin: 30px 0; }
         `;
     }
 
     render() {
+        let itemTemplates = [];
+
+        for (let [key, data] of Object.entries(this.metadata)) {
+
+            if (data['visible'] && (key !== "welcome")) {
+                itemTemplates.push(html`
+                    <div class="item">
+                        <h2>${data.name[this.lang]}</h2>
+                        ${data.description[this.lang]}
+                    </div>`);
+            }
+        }
+
         return html`
-            <p>${i18n.t('welcome.headline')}</p>
-            <br>
-            <p>${i18n.t('welcome.description')}</p>
+            <p>${this.headline}</p>
+            <p>${this.subHeadline}</p>
+            ${itemTemplates}
         `;
     }
 }
 
-commonUtils.defineCustomElement('vpu-signature-welcome', SignatureWelcome);
+commonUtils.defineCustomElement('vpu-welcome', SignatureWelcome);
-- 
GitLab