From f920c7da0618fd9f4181c2c78ef054e324185355 Mon Sep 17 00:00:00 2001 From: ngharo Date: Sun, 31 Dec 2017 22:16:32 -0600 Subject: Makefile: compile Babel and Sass source files to index.* --- www/lib/app.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 www/lib/app.js (limited to 'www/lib') diff --git a/www/lib/app.js b/www/lib/app.js new file mode 100644 index 0000000..2ec1af2 --- /dev/null +++ b/www/lib/app.js @@ -0,0 +1,64 @@ +function create() { + this.ready = false; + fetch('/v1/button', {method: 'POST'}).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: 'PUT', + 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