140 lines
4.7 KiB
JavaScript
140 lines
4.7 KiB
JavaScript
/*
|
|
|
|
behavioural layer for the `network_usage.html.tera` template,
|
|
corresponding to the web route `/settings/network/wifi/usage`
|
|
|
|
- intercept form submissions
|
|
- perform json api calls
|
|
- update the dom
|
|
|
|
methods:
|
|
|
|
PEACH_NETWORK.updateAlerts();
|
|
PEACH_NETWORK.resetUsage();
|
|
PEACH_NETWORK.toggleWarning();
|
|
PEACH_NETWORK.toggleCutoff();
|
|
|
|
*/
|
|
|
|
var PEACH_NETWORK = {};
|
|
|
|
// catch click of 'Update' and make POST request
|
|
PEACH_NETWORK.updateAlerts = 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");
|
|
let warn = formElement.elements.warn.value;
|
|
let cut = formElement.elements.cut.value;
|
|
let warn_flag = formElement.elements.warn_flag.checked;
|
|
let cut_flag = formElement.elements.cut_flag.checked;
|
|
// perform json serialization
|
|
var jsonData = JSON.stringify({
|
|
"warn": parseFloat(warn),
|
|
"cut": parseFloat(cut),
|
|
"warn_flag": warn_flag,
|
|
"cut_flag": cut_flag,
|
|
});
|
|
// send update_alerts POST request
|
|
fetch("/api/v1/network/wifi/usage", {
|
|
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);
|
|
});
|
|
}
|
|
|
|
// catch click of 'Reset' and make POST request
|
|
PEACH_NETWORK.resetUsage = function() {
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var resetBtn = document.getElementById('resetTotal');
|
|
if (resetBtn) {
|
|
resetBtn.addEventListener('click', function(e) {
|
|
// prevent form submission (default behavior)
|
|
e.preventDefault();
|
|
// send reset_data_usage POST request
|
|
fetch("/api/v1/network/wifi/usage/reset", {
|
|
method: "post",
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
})
|
|
.then( (response) => {
|
|
return response.json()
|
|
})
|
|
.then( (jsonData) => {
|
|
console.log(jsonData.msg);
|
|
// write json response message to ui
|
|
PEACH.flashMsg(jsonData.status, jsonData.msg);
|
|
// if reset is successful, update the ui
|
|
if (jsonData.status === "success") {
|
|
console.log(jsonData.data);
|
|
PEACH_NETWORK.updateTotal(jsonData.data);
|
|
}
|
|
})
|
|
}, false);
|
|
}
|
|
});
|
|
}
|
|
|
|
// update data usage total in ui
|
|
PEACH_NETWORK.updateTotal = function(data) {
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
console.log(data);
|
|
let label = document.getElementById("dataTotal");
|
|
// take usage total as bytes, convert to MB and round to nearest integer
|
|
label.textContent = (data / 1024 / 1024).round();
|
|
});
|
|
};
|
|
|
|
// update ui for warning
|
|
PEACH_NETWORK.toggleWarning = function() {
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
let i = document.getElementById("warnIcon");
|
|
let warnCheck = document.getElementById("warnCheck");
|
|
warnCheck.addEventListener('click', function(e) {
|
|
console.log('Toggling warning icon state');
|
|
if (warnCheck.checked) {
|
|
i.className = "icon";
|
|
} else {
|
|
i.className = "icon icon-inactive";
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// update ui for cutoff
|
|
PEACH_NETWORK.toggleCutoff = function() {
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
let i = document.getElementById("cutIcon");
|
|
let cutCheck = document.getElementById("cutCheck");
|
|
cutCheck.addEventListener('click', function(e) {
|
|
console.log('Toggling cutoff icon state');
|
|
if (cutCheck.checked) {
|
|
i.className = "icon";
|
|
} else {
|
|
i.className = "icon icon-inactive";
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
var usageInstance = PEACH_NETWORK;
|
|
usageInstance.resetUsage();
|
|
usageInstance.toggleWarning();
|
|
usageInstance.toggleCutoff();
|
|
usageInstance.updateAlerts();
|