From 75d05326d067857d22474cc91d069003d7b64b17 Mon Sep 17 00:00:00 2001 From: ngharo Date: Fri, 29 Dec 2017 00:02:05 -0600 Subject: VueJS front-end work in progress --- www/imok.js | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 www/imok.js (limited to 'www/imok.js') diff --git a/www/imok.js b/www/imok.js new file mode 100644 index 0000000..d985798 --- /dev/null +++ b/www/imok.js @@ -0,0 +1,64 @@ +function create() { + this.ready = false; + fetch('/v1/button', {method: 'PUT'}).then(response => { + if (response.ok) { + response.json().then(button => { + this.buttons.push(button); + this.ready = true; + }); + } + }); +} + +function update(index) { + var button = this.buttons[index]; + + this.ready = false; + var payload = new FormData(); + payload.append('id', button.id); + payload.append('status', button.status); + + fetch('/v1/button/', { + method: 'POST', + body: payload + }).then(response => { + this.ready = true; + }) +}; + +function remove(index) { + var button = this.buttons[index]; + + this.ready = false; + fetch('/v1/button/' + button.id, {method: 'DELETE'}).then(response => { + if (response.ok) { + response.json().then(ok => { + this.buttons.splice(index, 1); + this.ready = true; + }); + } + }); +} + +const $app = new Vue({ + el: '#container', + data: { + ready: false, + buttons: [] + }, + methods: { + create, + remove, + update + } +}); + +// GET /button +fetch('/v1/button').then(response => { + if (response.ok) { + response.json().then(buttons => { + $app.buttons = buttons; + $app.ready = true; + }) + } +}); -- cgit v1.2.3