autoexec config settings working (#10)

* autoexec config settings working

* small fixes

* working autoexec* saving
This commit is contained in:
Christian Herzog
2019-09-01 22:45:28 +02:00
committed by sle118
parent daeb4dcd11
commit 5e34f65e5e
6 changed files with 200 additions and 130 deletions

View File

@@ -15,7 +15,6 @@ var apList = null;
var selectedSSID = "";
var refreshAPInterval = null;
var checkStatusInterval = null;
var checkConfigInterval = null;
var StatusIntervalActive = false;
var ConfigIntervalActive = false;
@@ -29,13 +28,6 @@ function stopCheckStatusInterval(){
}
StatusIntervalActive = false;
}
function stopCheckConfigInterval(){
if(checkConfigInterval != null){
clearTimeout(checkConfigInterval);
checkConfigInterval = null;
}
ConfigIntervalActive=false;
}
function stopRefreshAPInterval(){
@@ -51,10 +43,6 @@ function startCheckStatusInterval(){
StatusIntervalActive = true;
checkStatusInterval = setTimeout(checkStatus, 950);
}
function startCheckConfigInterval(){
ConfigIntervalActive = true;
checkConfigInterval = setTimeout(checkConfig, 950);
}
function startRefreshAPInterval(){
RefreshAPIIntervalActive = true;
@@ -78,8 +66,6 @@ function RepeatRefreshAPInterval(){
}
$(document).ready(function(){
$("#wifi-status").on("click", ".ape", function() {
$( "#wifi" ).slideUp( "fast", function() {});
$( "#connect-details" ).slideDown( "fast", function() {});
@@ -138,19 +124,10 @@ $(document).ready(function(){
$( "#wifi" ).slideDown( "fast", function() {});
});
$("#update").on("click", function() {
performUpdate();
});
$("#factory").on("click", function() {
performFactory();
});
$("#ok-credits").on("click", function() {
$( "#credits" ).slideUp( "fast", function() {});
$( "#app" ).slideDown( "fast", function() {});
});
$("#acredits").on("click", function(event) {
@@ -196,48 +173,18 @@ $(document).ready(function(){
$( "#wifi" ).slideDown( "fast", function() {})
});
$("#update-command").on("click", function() {
updateAutoexec();
});
//first time the page loads: attempt get the connection status and start the wifi scan
refreshAP();
startCheckStatusInterval();
startRefreshAPInterval();
startCheckConfigInterval();
getConfig();
});
function performUpdate(){
autoexec1 = $("#autoexec1").val();
//reset connection
//
// $( "#ok-connect" ).prop("disabled",true);
// $( "#ssid-wait" ).text(selectedSSID);
// $( "#connect" ).slideUp( "fast", function() {});
// $( "#connect_manual" ).slideUp( "fast", function() {});
// $( "#connect-wait" ).slideDown( "fast", function() {});
// // todo: should we update the UI here?
$.ajax({
url: '/config.json',
dataType: 'json',
method: 'POST',
cache: false,
headers: { 'X-Custom-autoexec1': autoexec1 },
data: { 'timestamp': Date.now()}
});
}
function performFactory(){
// $( "#ok-connect" ).prop("disabled",true);
@@ -258,7 +205,6 @@ function performFactory(){
}
function performConnect(conntype){
//stop the status refresh. This prevents a race condition where a status
@@ -302,7 +248,6 @@ function performConnect(conntype){
//now we can re-set the intervals regardless of result
startCheckStatusInterval();
startRefreshAPInterval();
}
@@ -322,7 +267,6 @@ function rssiToIcon(rssi){
}
}
function refreshAP(){
$.getJSON( "/ap.json", function( data ) {
if(data.length > 0){
@@ -337,7 +281,6 @@ function refreshAP(){
}
});
RepeatRefreshAPInterval();
}
function refreshAPHTML(data){
@@ -350,9 +293,6 @@ function refreshAPHTML(data){
$( "#wifi-list" ).html(h)
}
function checkStatus(){
$.getJSON( "/status.json", function( data ) {
if(data.hasOwnProperty('autoexec1') && data['autoexec1'] != ""){
@@ -424,31 +364,46 @@ function checkStatus(){
RepeatCheckStatusInterval();
}
function checkConfig(){
var h = "";
//{ "autoexec" : 0, "list" : [{ 'autoexec1' : 'squeezelite -o "I2S" -b 500:2000 -d all=info -M esp32' }]}
$.getJSON( "/config.json", function( data ) {
if(data.hasOwnProperty('autoexec')) {
h+= '<div id="autoexec">Autoexec: {0}</div>'.format(data["autoexec"]===1?"Active":"Inactive");
}
if(data.hasOwnProperty('list')) {
data["list"].forEach(function(e, idx, array) {
for (const [key, value] of Object.entries(e)) {
h+= '<input id="{0}" type="text" maxlength="201" value="{1}"><br>'.format(key,value);
}
}
);
h += "\n";
$( "#command-list" ).html(h);
}
function getConfig() {
$.getJSON("/config.json", function(data) {
if (data.hasOwnProperty('autoexec')) {
if (data["autoexec"] === 1) {
console.log('turn on autoexec');
$("#autoexec-cb")[0].checked=true;
} else {
console.log('turn off autoexec');
$("#autoexec-cb")[0].checked=false;
$("#autoexec-command").hide(200);
}
}
if (data.hasOwnProperty('list')) {
data.list.forEach(function(line) {
let key = Object.keys(line)[0];
let val = Object.values(line)[0];
console.log(key, val);
if (key == 'autoexec1') {
$("#autoexec1").val(val);
}
});
}
})
.fail(function() {
//don't do anything, the server might be down while esp32 recalibrates radio
console.log("failed to fetch config!");
});
RepeatCheckConfigInterval();
}
function updateAutoexec(){
autoexec = ($("#autoexec-cb")[0].checked)?1:0;
autoexec1 = $("#autoexec1").val();
$.ajax({
url: '/config.json',
dataType: 'json',
method: 'POST',
cache: false,
headers: { "X-Custom-autoexec": autoexec, "X-Custom-autoexec1": autoexec1 },
data: { 'timestamp': Date.now() }
});
console.log('sent config JSON with headers:', autoexec, autoexec1);
}