diff options
author | Bastien Wirtz <bastien.wirtz@gmail.com> | 2021-03-06 22:50:58 -0800 |
---|---|---|
committer | Bastien Wirtz <bastien.wirtz@gmail.com> | 2021-03-06 22:50:58 -0800 |
commit | ba07da6b1011e77c9ed42e8643e62b903c6c6d7b (patch) | |
tree | 6311707cb628e64a2787b680a9a4d517505faa51 /src/components | |
parent | 00b46a6ddebcbbe581f201bd4089c38f6d666fb9 (diff) | |
download | homer-ba07da6b1011e77c9ed42e8643e62b903c6c6d7b.tar.gz homer-ba07da6b1011e77c9ed42e8643e62b903c6c6d7b.tar.zst homer-ba07da6b1011e77c9ed42e8643e62b903c6c6d7b.zip |
Avoid full reload when swithcing page.
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/Message.vue | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/components/Message.vue b/src/components/Message.vue index 2f71f3f..7c6acdd 100644 --- a/src/components/Message.vue +++ b/src/components/Message.vue | |||
@@ -22,7 +22,6 @@ export default { | |||
22 | }, | 22 | }, |
23 | data: function () { | 23 | data: function () { |
24 | return { | 24 | return { |
25 | show: false, | ||
26 | message: {}, | 25 | message: {}, |
27 | }; | 26 | }; |
28 | }, | 27 | }, |
@@ -30,14 +29,23 @@ export default { | |||
30 | // Look for a new message if an endpoint is provided. | 29 | // Look for a new message if an endpoint is provided. |
31 | this.message = Object.assign({}, this.item); | 30 | this.message = Object.assign({}, this.item); |
32 | await this.getMessage(); | 31 | await this.getMessage(); |
33 | this.show = this.message.title || this.message.content; | ||
34 | }, | 32 | }, |
35 | 33 | computed: { | |
34 | show: function () { | ||
35 | return this.message.title || this.message.content; | ||
36 | }, | ||
37 | }, | ||
38 | watch: { | ||
39 | item: function (item) { | ||
40 | this.message = Object.assign({}, item); | ||
41 | }, | ||
42 | }, | ||
36 | methods: { | 43 | methods: { |
37 | getMessage: async function() { | 44 | getMessage: async function () { |
38 | if (this.item && this.item.url) { | 45 | if (this.item && this.item.url) { |
39 | let fetchedMessage = await this.downloadMessage(this.item.url); | 46 | let fetchedMessage = await this.downloadMessage(this.item.url); |
40 | if (this.item.mapping) fetchedMessage = this.mapRemoteMessage(fetchedMessage); | 47 | if (this.item.mapping) |
48 | fetchedMessage = this.mapRemoteMessage(fetchedMessage); | ||
41 | // keep the original config value if no value is provided by the endpoint | 49 | // keep the original config value if no value is provided by the endpoint |
42 | for (const prop of ["title", "style", "content"]) { | 50 | for (const prop of ["title", "style", "content"]) { |
43 | if (prop in fetchedMessage && fetchedMessage[prop] !== null) { | 51 | if (prop in fetchedMessage && fetchedMessage[prop] !== null) { |
@@ -45,7 +53,8 @@ export default { | |||
45 | } | 53 | } |
46 | } | 54 | } |
47 | } | 55 | } |
48 | if (this.item.refreshInterval) setTimeout(this.getMessage, this.item.refreshInterval); | 56 | if (this.item.refreshInterval) |
57 | setTimeout(this.getMessage, this.item.refreshInterval); | ||
49 | }, | 58 | }, |
50 | 59 | ||
51 | downloadMessage: function (url) { | 60 | downloadMessage: function (url) { |
@@ -60,7 +69,9 @@ export default { | |||
60 | mapRemoteMessage: function (message) { | 69 | mapRemoteMessage: function (message) { |
61 | let mapped = {}; | 70 | let mapped = {}; |
62 | // map property from message into mapped according to mapping config (only if field has a value): | 71 | // map property from message into mapped according to mapping config (only if field has a value): |
63 | for (const prop in this.item.mapping) if (message[this.item.mapping[prop]]) mapped[prop] = message[this.item.mapping[prop]]; | 72 | for (const prop in this.item.mapping) |
73 | if (message[this.item.mapping[prop]]) | ||
74 | mapped[prop] = message[this.item.mapping[prop]]; | ||
64 | return mapped; | 75 | return mapped; |
65 | }, | 76 | }, |
66 | }, | 77 | }, |