From cbd8fe2872fb28de3dc263565bb943804ba956a7 Mon Sep 17 00:00:00 2001
From: Eugen Neuber <eugen.neuber@tugraz.at>
Date: Wed, 13 Jan 2021 10:58:00 +0100
Subject: [PATCH] Add language selector to demo

(update attribute only if value changed)
---
 packages/provider/src/dbp-provider-demo.js |  5 +++++
 packages/provider/src/provider.js          | 17 ++++++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/packages/provider/src/dbp-provider-demo.js b/packages/provider/src/dbp-provider-demo.js
index 7d337e8b..9db89214 100644
--- a/packages/provider/src/dbp-provider-demo.js
+++ b/packages/provider/src/dbp-provider-demo.js
@@ -5,6 +5,8 @@ import {AuthKeycloak, LoginButton} from '@dbp-toolkit/auth';
 import * as commonUtils from '@dbp-toolkit/common/utils';
 import * as commonStyles from '@dbp-toolkit/common/styles';
 import {Provider} from '@dbp-toolkit/provider';
+import {LanguageSelect} from '@dbp-toolkit/language-select';
+
 
 
 class ProviderDemo extends ScopedElementsMixin(LitElement) {
@@ -18,6 +20,7 @@ class ProviderDemo extends ScopedElementsMixin(LitElement) {
         return {
             'dbp-auth-keycloak': AuthKeycloak,
             'dbp-login-button': LoginButton,
+            'dbp-language-select': LanguageSelect,
             'dbp-provider': Provider,
             'dbp-consumer': DemoConsumer,
         };
@@ -51,6 +54,7 @@ class ProviderDemo extends ScopedElementsMixin(LitElement) {
             <dbp-provider id="root"
                           blah="777"
                           availability="global"
+                          lang="de"
             ><section class="section">
                 <p>Provider <em>"root"</em> is the top most in hierarchy:</p>
 <pre>
@@ -62,6 +66,7 @@ class ProviderDemo extends ScopedElementsMixin(LitElement) {
                 <div class="container">
                     <dbp-auth-keycloak lang="${this.lang}" url="https://auth-dev.tugraz.at/auth" realm="tugraz" client-id="auth-dev-mw-frontend-local" load-person try-login></dbp-auth-keycloak>
                     <dbp-login-button lang="${this.lang}" show-image></dbp-login-button>
+                    <dbp-language-select></dbp-language-select>
                 </div>
                 <dbp-provider id="demo"
                               bc="blue"
diff --git a/packages/provider/src/provider.js b/packages/provider/src/provider.js
index 342d59f3..d8d0f932 100644
--- a/packages/provider/src/provider.js
+++ b/packages/provider/src/provider.js
@@ -75,13 +75,16 @@ export class Provider extends HTMLElement {
             for(const mutation of mutationsList) {
                 if (mutation.type === 'attributes') {
                     const name = mutation.attributeName;
-                    console.log('Provider (' + that.id() + ') observed attribute "' + name + '" changed');
-                    that[name] = that.getAttribute(name);
-                    that.callbackStore.forEach(item => {
-                        if (item.name === name) {
-                            item.callback(value);
-                        }
-                    });
+                    const value = that.getAttribute(name);
+                    if (that[name] !== value) {
+                        console.log('Provider (' + that.id() + ') observed attribute "' + name + '" changed');
+                        that[name] = value;
+                        that.callbackStore.forEach(item => {
+                            if (item.name === name) {
+                                item.callback(value);
+                            }
+                        });
+                    }
                 }
             }
         };
-- 
GitLab