From 175c34b96bf1cbd26091d8b8a15c82b076093604 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio.bekerle@tugraz.at>
Date: Thu, 1 Aug 2019 13:09:33 +0200
Subject: [PATCH] Implement support for value updates

---
 .../vpu-kb-wpe-view.js                        | 47 +++++++++++--------
 1 file changed, 28 insertions(+), 19 deletions(-)

diff --git a/packages/knowledge-base-web-page-element-view/vpu-kb-wpe-view.js b/packages/knowledge-base-web-page-element-view/vpu-kb-wpe-view.js
index 1c3b3fb6..ec21d8f1 100644
--- a/packages/knowledge-base-web-page-element-view/vpu-kb-wpe-view.js
+++ b/packages/knowledge-base-web-page-element-view/vpu-kb-wpe-view.js
@@ -40,30 +40,39 @@ class VPUKnowledgeBaseWebPageElementView extends VPULitElement {
         //         encodeURIComponent(commonUtils.base64EncodeUnicode(encodeURIComponent(that.value)));
         // });
 
+        window.addEventListener("vpu-auth-init", () => that.loadWebPageElement());
+    }
+
+    /**
+     * Loads the data from the web page element
+     */
+    loadWebPageElement() {
         // sadly there there is no entity url without "collectionOperations" in entity KnowledgeBaseWebPageElement!
         const apiUrl = this.apiUrl + "/web_page_elements/knowledge_base_web_page_elements/" +
-            encodeURIComponent(commonUtils.base64EncodeUnicode(encodeURIComponent(that.value))) +
-            "?lang=" + encodeURIComponent(that.lang);
+            encodeURIComponent(commonUtils.base64EncodeUnicode(encodeURIComponent(this.value))) +
+            "?lang=" + encodeURIComponent(this.lang);
 
-        window.addEventListener("vpu-auth-init", function(e)
-        {
-            fetch(apiUrl, {
-                headers: {
-                    'Content-Type': 'application/ld+json',
-                    'Authorization': 'Bearer ' + window.VPUAuthToken,
-                },
+        fetch(apiUrl, {
+            headers: {
+                'Content-Type': 'application/ld+json',
+                'Authorization': 'Bearer ' + window.VPUAuthToken,
+            },
+        })
+            .then(res => res.json())
+            .then(webPageElement => {
+                if (webPageElement !== undefined && webPageElement.text !== undefined) {
+                    this.html = webPageElement.text;
+                }
             })
-                .then(res => res.json())
-                .then(webPageElement => {
-                    if (webPageElement !== undefined && webPageElement.text !== undefined) {
-                        that.html = webPageElement.text;
-                    }
-                })
-                // catch e.g. 404 errors
-                .catch();
-        });
+            // catch e.g. 404 errors
+            .catch();
+    }
 
-        this.updateComplete.then(()=>{
+    updated(changedProperties) {
+        changedProperties.forEach((oldValue, propName) => {
+            if (propName === "value") {
+                this.loadWebPageElement();
+            }
         });
     }
 
-- 
GitLab