peach-workspace/peach-web/static/js/network_add.js

58 lines
1.8 KiB
JavaScript

/*
behavioural layer for the `network_add.html.tera` template,
corresponding to the web route `/network/wifi/add`
- intercept button click for add (form submission of credentials)
- perform json api call
- update the dom
methods:
PEACH_NETWORK.add();
*/
var PEACH_NETWORK = {};
// catch click of 'Add' button and make POST request
PEACH_NETWORK.add = function() {
document.addEventListener('DOMContentLoaded', function() {
document.body.addEventListener('submit', function(e) {
// prevent redirect on button press (default behavior)
e.preventDefault();
// capture form data
var formElement = document.querySelector("form");
// create form data object from the wifiCreds form element
var formData = new FormData(formElement);
var object = {};
// assign ssid and pass from form
formData.forEach(function(value, key){
object[key] = value;
});
// perform json serialization
var jsonData = JSON.stringify(object);
// write in-progress status message to ui
PEACH.flashMsg("info", "Adding WiFi credentials...");
// send add_wifi POST request
fetch("/api/v1/network/wifi", {
method: "post",
headers: {
'Content-Type': 'application/json',
},
body: jsonData
})
.then( (response) => {
return response.json()
})
.then( (jsonData) => {
// write json response message to ui
PEACH.flashMsg(jsonData.status, jsonData.msg);
})
}, false);
});
}
var addInstance = PEACH_NETWORK;
addInstance.add();