|
@@ -1,14 +1,14 @@
|
|
|
// First, checks if it isn't implemented yet.
|
|
|
if (!String.prototype.format) {
|
|
|
- String.prototype.format = function() {
|
|
|
- var args = arguments;
|
|
|
- return this.replace(/{(\d+)}/g, function(match, number) {
|
|
|
- return typeof args[number] != 'undefined'
|
|
|
- ? args[number]
|
|
|
- : match
|
|
|
- ;
|
|
|
- });
|
|
|
- };
|
|
|
+ String.prototype.format = function() {
|
|
|
+ var args = arguments;
|
|
|
+ return this.replace(/{(\d+)}/g, function(match, number) {
|
|
|
+ return typeof args[number] != 'undefined'
|
|
|
+ ? args[number]
|
|
|
+ : match
|
|
|
+ ;
|
|
|
+ });
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
var releaseURL = 'https://api.github.com/repos/sle118/squeezelite-esp32/releases';
|
|
@@ -30,149 +30,149 @@ var RefreshAPIIntervalActive = false;
|
|
|
var output = '';
|
|
|
|
|
|
function stopCheckStatusInterval(){
|
|
|
- if(checkStatusInterval != null){
|
|
|
- clearTimeout(checkStatusInterval);
|
|
|
- checkStatusInterval = null;
|
|
|
- }
|
|
|
- StatusIntervalActive = false;
|
|
|
+ if(checkStatusInterval != null){
|
|
|
+ clearTimeout(checkStatusInterval);
|
|
|
+ checkStatusInterval = null;
|
|
|
+ }
|
|
|
+ StatusIntervalActive = false;
|
|
|
}
|
|
|
|
|
|
function stopRefreshAPInterval(){
|
|
|
- if(refreshAPInterval != null){
|
|
|
- clearTimeout(refreshAPInterval);
|
|
|
- refreshAPInterval = null;
|
|
|
- }
|
|
|
- RefreshAPIIntervalActive = false;
|
|
|
+ if(refreshAPInterval != null){
|
|
|
+ clearTimeout(refreshAPInterval);
|
|
|
+ refreshAPInterval = null;
|
|
|
+ }
|
|
|
+ RefreshAPIIntervalActive = false;
|
|
|
}
|
|
|
|
|
|
function startCheckStatusInterval(){
|
|
|
- StatusIntervalActive = true;
|
|
|
- checkStatusInterval = setTimeout(checkStatus, 3000);
|
|
|
+ StatusIntervalActive = true;
|
|
|
+ checkStatusInterval = setTimeout(checkStatus, 3000);
|
|
|
}
|
|
|
|
|
|
function startRefreshAPInterval(){
|
|
|
- RefreshAPIIntervalActive = true;
|
|
|
- refreshAPInterval = setTimeout(refreshAP, 2800);
|
|
|
+ RefreshAPIIntervalActive = true;
|
|
|
+ refreshAPInterval = setTimeout(refreshAP, 2800);
|
|
|
}
|
|
|
|
|
|
function RepeatCheckStatusInterval(){
|
|
|
- if(StatusIntervalActive)
|
|
|
- startCheckStatusInterval();
|
|
|
+ if(StatusIntervalActive)
|
|
|
+ startCheckStatusInterval();
|
|
|
}
|
|
|
|
|
|
function RepeatRefreshAPInterval(){
|
|
|
- if(RefreshAPIIntervalActive)
|
|
|
- startRefreshAPInterval();
|
|
|
+ if(RefreshAPIIntervalActive)
|
|
|
+ startRefreshAPInterval();
|
|
|
}
|
|
|
|
|
|
$(document).ready(function(){
|
|
|
- $("#wifi-status").on("click", ".ape", function() {
|
|
|
- $( "#wifi" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect-details" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#manual_add").on("click", ".ape", function() {
|
|
|
- selectedSSID = $(this).text();
|
|
|
- $( "#ssid-pwd" ).text(selectedSSID);
|
|
|
- $( "#wifi" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect_manual" ).slideDown( "fast", function() {});
|
|
|
- $( "#connect" ).slideUp( "fast", function() {});
|
|
|
-
|
|
|
- //update wait screen
|
|
|
- $( "#loading" ).show();
|
|
|
- $( "#connect-success" ).hide();
|
|
|
- $( "#connect-fail" ).hide();
|
|
|
- });
|
|
|
-
|
|
|
- $("#wifi-list").on("click", ".ape", function() {
|
|
|
- selectedSSID = $(this).text();
|
|
|
- $( "#ssid-pwd" ).text(selectedSSID);
|
|
|
- $( "#wifi" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect" ).slideDown( "fast", function() {});
|
|
|
-
|
|
|
- //update wait screen
|
|
|
- $( "#loading" ).show();
|
|
|
- $( "#connect-success" ).hide();
|
|
|
- $( "#connect-fail" ).hide();
|
|
|
- });
|
|
|
-
|
|
|
- $("#cancel").on("click", function() {
|
|
|
- selectedSSID = "";
|
|
|
- $( "#connect" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
- $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#manual_cancel").on("click", function() {
|
|
|
- selectedSSID = "";
|
|
|
- $( "#connect" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
- $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#join").on("click", function() {
|
|
|
- performConnect();
|
|
|
- });
|
|
|
-
|
|
|
- $("#manual_join").on("click", function() {
|
|
|
- performConnect($(this).data('connect'));
|
|
|
- });
|
|
|
-
|
|
|
- $("#ok-details").on("click", function() {
|
|
|
- $( "#connect-details" ).slideUp( "fast", function() {});
|
|
|
- $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
- $("#ok-credits").on("click", function() {
|
|
|
- $( "#credits" ).slideUp( "fast", function() {});
|
|
|
- $( "#app" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#acredits").on("click", function(event) {
|
|
|
- event.preventDefault();
|
|
|
- $( "#app" ).slideUp( "fast", function() {});
|
|
|
- $( "#credits" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#ok-connect").on("click", function() {
|
|
|
- $( "#connect-wait" ).slideUp( "fast", function() {});
|
|
|
- $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#disconnect").on("click", function() {
|
|
|
- $( "#connect-details-wrap" ).addClass('blur');
|
|
|
- $( "#diag-disconnect" ).slideDown( "fast", function() {});
|
|
|
- });
|
|
|
-
|
|
|
- $("#no-disconnect").on("click", function() {
|
|
|
- $( "#diag-disconnect" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect-details-wrap" ).removeClass('blur');
|
|
|
- });
|
|
|
-
|
|
|
- $("#yes-disconnect").on("click", function() {
|
|
|
- stopCheckStatusInterval();
|
|
|
- selectedSSID = "";
|
|
|
-
|
|
|
- $( "#diag-disconnect" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect-details-wrap" ).removeClass('blur');
|
|
|
-
|
|
|
- $.ajax({
|
|
|
- url: '/connect.json',
|
|
|
- dataType: 'json',
|
|
|
- method: 'DELETE',
|
|
|
- cache: false,
|
|
|
- data: { 'timestamp': Date.now()}
|
|
|
- });
|
|
|
-
|
|
|
- startCheckStatusInterval();
|
|
|
-
|
|
|
- $( "#connect-details" ).slideUp( "fast", function() {});
|
|
|
- $( "#wifi" ).slideDown( "fast", function() {})
|
|
|
- });
|
|
|
-
|
|
|
- $("#autoexec-cb").on("click", function() {
|
|
|
+ $("#wifi-status").on("click", ".ape", function() {
|
|
|
+ $( "#wifi" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect-details" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#manual_add").on("click", ".ape", function() {
|
|
|
+ selectedSSID = $(this).text();
|
|
|
+ $( "#ssid-pwd" ).text(selectedSSID);
|
|
|
+ $( "#wifi" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect_manual" ).slideDown( "fast", function() {});
|
|
|
+ $( "#connect" ).slideUp( "fast", function() {});
|
|
|
+
|
|
|
+ //update wait screen
|
|
|
+ $( "#loading" ).show();
|
|
|
+ $( "#connect-success" ).hide();
|
|
|
+ $( "#connect-fail" ).hide();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#wifi-list").on("click", ".ape", function() {
|
|
|
+ selectedSSID = $(this).text();
|
|
|
+ $( "#ssid-pwd" ).text(selectedSSID);
|
|
|
+ $( "#wifi" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect" ).slideDown( "fast", function() {});
|
|
|
+
|
|
|
+ //update wait screen
|
|
|
+ $( "#loading" ).show();
|
|
|
+ $( "#connect-success" ).hide();
|
|
|
+ $( "#connect-fail" ).hide();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#cancel").on("click", function() {
|
|
|
+ selectedSSID = "";
|
|
|
+ $( "#connect" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
+ $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#manual_cancel").on("click", function() {
|
|
|
+ selectedSSID = "";
|
|
|
+ $( "#connect" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
+ $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#join").on("click", function() {
|
|
|
+ performConnect();
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#manual_join").on("click", function() {
|
|
|
+ performConnect($(this).data('connect'));
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#ok-details").on("click", function() {
|
|
|
+ $( "#connect-details" ).slideUp( "fast", function() {});
|
|
|
+ $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#ok-credits").on("click", function() {
|
|
|
+ $( "#credits" ).slideUp( "fast", function() {});
|
|
|
+ $( "#app" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#acredits").on("click", function(event) {
|
|
|
+ event.preventDefault();
|
|
|
+ $( "#app" ).slideUp( "fast", function() {});
|
|
|
+ $( "#credits" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#ok-connect").on("click", function() {
|
|
|
+ $( "#connect-wait" ).slideUp( "fast", function() {});
|
|
|
+ $( "#wifi" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#disconnect").on("click", function() {
|
|
|
+ $( "#connect-details-wrap" ).addClass('blur');
|
|
|
+ $( "#diag-disconnect" ).slideDown( "fast", function() {});
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#no-disconnect").on("click", function() {
|
|
|
+ $( "#diag-disconnect" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect-details-wrap" ).removeClass('blur');
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#yes-disconnect").on("click", function() {
|
|
|
+ stopCheckStatusInterval();
|
|
|
+ selectedSSID = "";
|
|
|
+
|
|
|
+ $( "#diag-disconnect" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect-details-wrap" ).removeClass('blur');
|
|
|
+
|
|
|
+ $.ajax({
|
|
|
+ url: '/connect.json',
|
|
|
+ dataType: 'json',
|
|
|
+ method: 'DELETE',
|
|
|
+ cache: false,
|
|
|
+ data: { 'timestamp': Date.now()}
|
|
|
+ });
|
|
|
+
|
|
|
+ startCheckStatusInterval();
|
|
|
+
|
|
|
+ $( "#connect-details" ).slideUp( "fast", function() {});
|
|
|
+ $( "#wifi" ).slideDown( "fast", function() {})
|
|
|
+ });
|
|
|
+
|
|
|
+ $("#autoexec-cb").on("click", function() {
|
|
|
autoexec = (this.checked)?1:0;
|
|
|
$.ajax({
|
|
|
url: '/config.json',
|
|
@@ -193,9 +193,9 @@ $(document).ready(function(){
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- $("#save-autoexec1").on("click", function() {
|
|
|
+ $("#save-autoexec1").on("click", function() {
|
|
|
autoexec1 = $("#autoexec1").val();
|
|
|
-
|
|
|
+
|
|
|
$.ajax({
|
|
|
url: '/config.json',
|
|
|
dataType: 'json',
|
|
@@ -207,7 +207,7 @@ $(document).ready(function(){
|
|
|
console.log('sent config JSON with headers:', autoexec1);
|
|
|
});
|
|
|
|
|
|
- $("#save-gpio").on("click", function() {
|
|
|
+ $("#save-gpio").on("click", function() {
|
|
|
var headers = {};
|
|
|
$("input.gpio").each(function() {
|
|
|
var id = $(this)[0].id;
|
|
@@ -227,7 +227,7 @@ $(document).ready(function(){
|
|
|
console.log('sent config JSON with headers:', JSON.stringify(headers));
|
|
|
});
|
|
|
|
|
|
- $("#flash").on("click", function() {
|
|
|
+ $("#flash").on("click", function() {
|
|
|
var url = $("#fwurl").val();
|
|
|
$.ajax({
|
|
|
url: '/config.json',
|
|
@@ -239,7 +239,7 @@ $(document).ready(function(){
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- $("#generate-command").on("click", function() {
|
|
|
+ $("#generate-command").on("click", function() {
|
|
|
var commandLine = commandHeader + '-n ' + $("#player").val();
|
|
|
|
|
|
if (output == 'bt') {
|
|
@@ -253,7 +253,7 @@ $(document).ready(function(){
|
|
|
commandLine += ' ' + $("#optional").val();
|
|
|
}
|
|
|
$("#autoexec1").val(commandLine);
|
|
|
- });
|
|
|
+ });
|
|
|
|
|
|
$('[name=audio]').on("click", function(){
|
|
|
if (this.id == 'bt') {
|
|
@@ -266,7 +266,7 @@ $(document).ready(function(){
|
|
|
$("#btsinkdiv").hide(200);
|
|
|
output = 'i2s';
|
|
|
}
|
|
|
- });
|
|
|
+ });
|
|
|
|
|
|
$('#fwcheck').on("click", function(){
|
|
|
$("#releaseTable").html("");
|
|
@@ -280,262 +280,262 @@ $(document).ready(function(){
|
|
|
});
|
|
|
var [ver, idf, cfg, branch] = release.name.split('#');
|
|
|
var body = release.body.replace(/\\n/ig, "<br />").replace(/\'/ig, "\"");
|
|
|
- var [date, time] = release.created_at.split('T');
|
|
|
- if (ver.match(/esp-idf/)) return; //TODO delete
|
|
|
- $("#releaseTable").append(
|
|
|
- "<tr>"+
|
|
|
- "<td data-toggle='tooltip' title='"+body+"'>"+ver+"</td>"+
|
|
|
- "<td>"+idf+"</td>"+
|
|
|
- "<td>"+date+"</td>"+
|
|
|
- "<td>"+cfg+"</td>"+
|
|
|
- "<td>"+branch+"</td>"+
|
|
|
- "<td><input id='generate-command' type='button' class='btn btn-success' value='Select' data-url='"+url+"' onclick='setURL(this);' /></td>"+
|
|
|
- "</tr>"
|
|
|
- );
|
|
|
+ var [date, time] = release.created_at.split('T');
|
|
|
+ if (ver.match(/esp-idf/)) return; //TODO delete
|
|
|
+ $("#releaseTable").append(
|
|
|
+ "<tr>"+
|
|
|
+ "<td data-toggle='tooltip' title='"+body+"'>"+ver+"</td>"+
|
|
|
+ "<td>"+idf+"</td>"+
|
|
|
+ "<td>"+date+"</td>"+
|
|
|
+ "<td>"+cfg+"</td>"+
|
|
|
+ "<td>"+branch+"</td>"+
|
|
|
+ "<td><input id='generate-command' type='button' class='btn btn-success' value='Select' data-url='"+url+"' onclick='setURL(this);' /></td>"+
|
|
|
+ "</tr>"
|
|
|
+ );
|
|
|
});
|
|
|
})
|
|
|
- .fail(function() {
|
|
|
- alert("failed to fetch release history!");
|
|
|
- });
|
|
|
+ .fail(function() {
|
|
|
+ alert("failed to fetch release history!");
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
- //first time the page loads: attempt to get the connection status and start the wifi scan
|
|
|
- refreshAP();
|
|
|
- getConfig();
|
|
|
+ //first time the page loads: attempt to get the connection status and start the wifi scan
|
|
|
+ refreshAP();
|
|
|
+ getConfig();
|
|
|
|
|
|
- //start timers
|
|
|
- startCheckStatusInterval();
|
|
|
- startRefreshAPInterval();
|
|
|
+ //start timers
|
|
|
+ startCheckStatusInterval();
|
|
|
+ startRefreshAPInterval();
|
|
|
|
|
|
- $('[data-toggle="tooltip"]').tooltip({
|
|
|
- html: true,
|
|
|
- placement : 'right',
|
|
|
- });
|
|
|
+ $('[data-toggle="tooltip"]').tooltip({
|
|
|
+ html: true,
|
|
|
+ placement : 'right',
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
-function setURL(button) {
|
|
|
- var url = button.dataset.url;
|
|
|
- $("#fwurl").val(url);
|
|
|
-
|
|
|
- $('[data-url^="http"]').addClass("btn-success").removeClass("btn-danger");
|
|
|
- $('[data-url="'+url+'"]').addClass("btn-danger").removeClass("btn-success");
|
|
|
-}
|
|
|
+ function setURL(button) {
|
|
|
+ var url = button.dataset.url;
|
|
|
+ $("#fwurl").val(url);
|
|
|
+
|
|
|
+ $('[data-url^="http"]').addClass("btn-success").removeClass("btn-danger");
|
|
|
+ $('[data-url="'+url+'"]').addClass("btn-danger").removeClass("btn-success");
|
|
|
+ }
|
|
|
+
|
|
|
+ function performConnect(conntype){
|
|
|
+ //stop the status refresh. This prevents a race condition where a status
|
|
|
+ //request would be refreshed with wrong ip info from a previous connection
|
|
|
+ //and the request would automatically shows as succesful.
|
|
|
+ stopCheckStatusInterval();
|
|
|
+
|
|
|
+ //stop refreshing wifi list
|
|
|
+ stopRefreshAPInterval();
|
|
|
+
|
|
|
+ var pwd;
|
|
|
+ if (conntype == 'manual') {
|
|
|
+ //Grab the manual SSID and PWD
|
|
|
+ selectedSSID=$('#manual_ssid').val();
|
|
|
+ pwd = $("#manual_pwd").val();
|
|
|
+ }else{
|
|
|
+ pwd = $("#pwd").val();
|
|
|
+ }
|
|
|
+ //reset connection
|
|
|
+ $( "#loading" ).show();
|
|
|
+ $( "#connect-success" ).hide();
|
|
|
+ $( "#connect-fail" ).hide();
|
|
|
|
|
|
-function performConnect(conntype){
|
|
|
- //stop the status refresh. This prevents a race condition where a status
|
|
|
- //request would be refreshed with wrong ip info from a previous connection
|
|
|
- //and the request would automatically shows as succesful.
|
|
|
- stopCheckStatusInterval();
|
|
|
-
|
|
|
- //stop refreshing wifi list
|
|
|
- stopRefreshAPInterval();
|
|
|
-
|
|
|
- var pwd;
|
|
|
- if (conntype == 'manual') {
|
|
|
- //Grab the manual SSID and PWD
|
|
|
- selectedSSID=$('#manual_ssid').val();
|
|
|
- pwd = $("#manual_pwd").val();
|
|
|
- }else{
|
|
|
- pwd = $("#pwd").val();
|
|
|
- }
|
|
|
- //reset connection
|
|
|
- $( "#loading" ).show();
|
|
|
- $( "#connect-success" ).hide();
|
|
|
- $( "#connect-fail" ).hide();
|
|
|
-
|
|
|
- $( "#ok-connect" ).prop("disabled",true);
|
|
|
- $( "#ssid-wait" ).text(selectedSSID);
|
|
|
- $( "#connect" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
- $( "#connect-wait" ).slideDown( "fast", function() {});
|
|
|
-
|
|
|
-
|
|
|
- $.ajax({
|
|
|
- url: '/connect.json',
|
|
|
- dataType: 'json',
|
|
|
- method: 'POST',
|
|
|
- cache: false,
|
|
|
- headers: { 'X-Custom-ssid': selectedSSID, 'X-Custom-pwd': pwd },
|
|
|
- data: { 'timestamp': Date.now()}
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- //now we can re-set the intervals regardless of result
|
|
|
- startCheckStatusInterval();
|
|
|
- startRefreshAPInterval();
|
|
|
-}
|
|
|
+ $( "#ok-connect" ).prop("disabled",true);
|
|
|
+ $( "#ssid-wait" ).text(selectedSSID);
|
|
|
+ $( "#connect" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect_manual" ).slideUp( "fast", function() {});
|
|
|
+ $( "#connect-wait" ).slideDown( "fast", function() {});
|
|
|
|
|
|
-function rssiToIcon(rssi){
|
|
|
- if(rssi >= -60){
|
|
|
- return 'w0';
|
|
|
- }
|
|
|
- else if(rssi >= -67){
|
|
|
- return 'w1';
|
|
|
- }
|
|
|
- else if(rssi >= -75){
|
|
|
- return 'w2';
|
|
|
- }
|
|
|
- else{
|
|
|
- return 'w3';
|
|
|
- }
|
|
|
-}
|
|
|
|
|
|
-function refreshAP(){
|
|
|
- if (!enableAPTimer) return;
|
|
|
- $.getJSON( "/ap.json", function( data ) {
|
|
|
- if(data.length > 0){
|
|
|
- //sort by signal strength
|
|
|
- data.sort(function (a, b) {
|
|
|
- var x = a["rssi"]; var y = b["rssi"];
|
|
|
- return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
|
|
- });
|
|
|
- apList = data;
|
|
|
- refreshAPHTML(apList);
|
|
|
- }
|
|
|
- });
|
|
|
-}
|
|
|
+ $.ajax({
|
|
|
+ url: '/connect.json',
|
|
|
+ dataType: 'json',
|
|
|
+ method: 'POST',
|
|
|
+ cache: false,
|
|
|
+ headers: { 'X-Custom-ssid': selectedSSID, 'X-Custom-pwd': pwd },
|
|
|
+ data: { 'timestamp': Date.now()}
|
|
|
+ });
|
|
|
|
|
|
-function refreshAPHTML(data){
|
|
|
- var h = "";
|
|
|
- data.forEach(function(e, idx, array) {
|
|
|
- h += '<div class="ape{0}"><div class="{1}"><div class="{2}">{3}</div></div></div>'.format(idx === array.length - 1?'':' brdb', rssiToIcon(e.rssi), e.auth==0?'':'pw',e.ssid);
|
|
|
- h += "\n";
|
|
|
- });
|
|
|
-
|
|
|
- $( "#wifi-list" ).html(h)
|
|
|
-}
|
|
|
|
|
|
-function checkStatus(){
|
|
|
- RepeatCheckStatusInterval();
|
|
|
- if (!enableStatusTimer) return;
|
|
|
- if (blockAjax) return;
|
|
|
- blockAjax = true;
|
|
|
- $.getJSON( "/status.json", function( data ) {
|
|
|
- if(data.hasOwnProperty('ssid') && data['ssid'] != ""){
|
|
|
- if(data["ssid"] === selectedSSID){
|
|
|
- //that's a connection attempt
|
|
|
- if(data["urc"] === 0){
|
|
|
- //got connection
|
|
|
- $("#connected-to span").text(data["ssid"]);
|
|
|
- $("#connect-details h1").text(data["ssid"]);
|
|
|
- $("#ip").text(data["ip"]);
|
|
|
- $("#netmask").text(data["netmask"]);
|
|
|
- $("#gw").text(data["gw"]);
|
|
|
- $("#wifi-status").slideDown( "fast", function() {});
|
|
|
- $("span#foot-wifi").html(", SSID: "+data["ssid"]+", IP: "+data["ip"]);
|
|
|
-
|
|
|
- //unlock the wait screen if needed
|
|
|
- $( "#ok-connect" ).prop("disabled",false);
|
|
|
-
|
|
|
- //update wait screen
|
|
|
- $( "#loading" ).hide();
|
|
|
- $( "#connect-success" ).append("<p>Your IP address now is: " + text(data["ip"]) + "</p>");
|
|
|
- $( "#connect-success" ).show();
|
|
|
- $( "#connect-fail" ).hide();
|
|
|
+ //now we can re-set the intervals regardless of result
|
|
|
+ startCheckStatusInterval();
|
|
|
+ startRefreshAPInterval();
|
|
|
+ }
|
|
|
|
|
|
- enableAPTimer = false;
|
|
|
- if (!recovery) enableStatusTimer = false;
|
|
|
- }
|
|
|
- else if(data["urc"] === 1){
|
|
|
- //failed attempt
|
|
|
- $("#connected-to span").text('');
|
|
|
- $("#connect-details h1").text('');
|
|
|
- $("#ip").text('0.0.0.0');
|
|
|
- $("#netmask").text('0.0.0.0');
|
|
|
- $("#gw").text('0.0.0.0');
|
|
|
- $("span#foot-wifi").html("");
|
|
|
-
|
|
|
- //don't show any connection
|
|
|
- $("#wifi-status").slideUp( "fast", function() {});
|
|
|
-
|
|
|
- //unlock the wait screen
|
|
|
- $( "#ok-connect" ).prop("disabled",false);
|
|
|
-
|
|
|
- //update wait screen
|
|
|
- $( "#loading" ).hide();
|
|
|
- $( "#connect-fail" ).show();
|
|
|
- $( "#connect-success" ).hide();
|
|
|
-
|
|
|
- enableAPTimer = true;
|
|
|
- enableStatusTimer = true;
|
|
|
- }
|
|
|
- }
|
|
|
- else if(data.hasOwnProperty('urc') && data['urc'] === 0){
|
|
|
- //ESP32 is already connected to a wifi without having the user do anything
|
|
|
- if( !($("#wifi-status").is(":visible")) ){
|
|
|
- $("#connected-to span").text(data["ssid"]);
|
|
|
- $("#connect-details h1").text(data["ssid"]);
|
|
|
- $("#ip").text(data["ip"]);
|
|
|
- $("#netmask").text(data["netmask"]);
|
|
|
- $("#gw").text(data["gw"]);
|
|
|
- $("#wifi-status").slideDown( "fast", function() {});
|
|
|
- $("span#foot-wifi").html(", SSID: "+data["ssid"]+", IP: "+data["ip"]);
|
|
|
- }
|
|
|
- enableAPTimer = false;
|
|
|
- if (!recovery) enableStatusTimer = false;
|
|
|
- }
|
|
|
- }
|
|
|
- else if(data.hasOwnProperty('urc') && data['urc'] === 2){
|
|
|
- //that's a manual disconnect
|
|
|
- if($("#wifi-status").is(":visible")){
|
|
|
- $("#wifi-status").slideUp( "fast", function() {});
|
|
|
- $("span#foot-wifi").html("");
|
|
|
- }
|
|
|
- enableAPTimer = true;
|
|
|
- enableStatusTimer = true;
|
|
|
+ function rssiToIcon(rssi){
|
|
|
+ if(rssi >= -60){
|
|
|
+ return 'w0';
|
|
|
}
|
|
|
- if(data.hasOwnProperty('project_name') && data['project_name'] != ''){
|
|
|
- pname = data['project_name'];
|
|
|
+ else if(rssi >= -67){
|
|
|
+ return 'w1';
|
|
|
}
|
|
|
- if(data.hasOwnProperty('version') && data['version'] != ''){
|
|
|
- ver = data['version'];
|
|
|
- $("span#foot-fw").html("fw: "+ver+", mode: "+pname);
|
|
|
+ else if(rssi >= -75){
|
|
|
+ return 'w2';
|
|
|
}
|
|
|
- if(data.hasOwnProperty('ota_pct') && data['ota_pct'] != 0){
|
|
|
- otapct = data['ota_pct'];
|
|
|
- $('.progress-bar').css('width', otapct+'%').attr('aria-valuenow', otapct);
|
|
|
- $('.progress-bar').html(otapct+'%');
|
|
|
+ else{
|
|
|
+ return 'w3';
|
|
|
}
|
|
|
- blockAjax = false;
|
|
|
- })
|
|
|
- .fail(function() {
|
|
|
- //don't do anything, the server might be down while esp32 recalibrates radio
|
|
|
- });
|
|
|
-}
|
|
|
+ }
|
|
|
+
|
|
|
+ function refreshAP(){
|
|
|
+ if (!enableAPTimer) return;
|
|
|
+ $.getJSON( "/ap.json", function( data ) {
|
|
|
+ if(data.length > 0){
|
|
|
+ //sort by signal strength
|
|
|
+ data.sort(function (a, b) {
|
|
|
+ var x = a["rssi"]; var y = b["rssi"];
|
|
|
+ return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
|
|
+ });
|
|
|
+ apList = data;
|
|
|
+ refreshAPHTML(apList);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function refreshAPHTML(data){
|
|
|
+ var h = "";
|
|
|
+ data.forEach(function(e, idx, array) {
|
|
|
+ h += '<div class="ape{0}"><div class="{1}"><div class="{2}">{3}</div></div></div>'.format(idx === array.length - 1?'':' brdb', rssiToIcon(e.rssi), e.auth==0?'':'pw',e.ssid);
|
|
|
+ h += "\n";
|
|
|
+ });
|
|
|
|
|
|
-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;
|
|
|
+ $( "#wifi-list" ).html(h)
|
|
|
+ }
|
|
|
+
|
|
|
+ function checkStatus(){
|
|
|
+ RepeatCheckStatusInterval();
|
|
|
+ if (!enableStatusTimer) return;
|
|
|
+ if (blockAjax) return;
|
|
|
+ blockAjax = true;
|
|
|
+ $.getJSON( "/status.json", function( data ) {
|
|
|
+ if(data.hasOwnProperty('ssid') && data['ssid'] != ""){
|
|
|
+ if(data["ssid"] === selectedSSID){
|
|
|
+ //that's a connection attempt
|
|
|
+ if(data["urc"] === 0){
|
|
|
+ //got connection
|
|
|
+ $("#connected-to span").text(data["ssid"]);
|
|
|
+ $("#connect-details h1").text(data["ssid"]);
|
|
|
+ $("#ip").text(data["ip"]);
|
|
|
+ $("#netmask").text(data["netmask"]);
|
|
|
+ $("#gw").text(data["gw"]);
|
|
|
+ $("#wifi-status").slideDown( "fast", function() {});
|
|
|
+ $("span#foot-wifi").html(", SSID: <strong>"+data["ssid"]+"</strong>, IP: <strong>"+data["ip"]+"</strong>");
|
|
|
+
|
|
|
+ //unlock the wait screen if needed
|
|
|
+ $( "#ok-connect" ).prop("disabled",false);
|
|
|
+
|
|
|
+ //update wait screen
|
|
|
+ $( "#loading" ).hide();
|
|
|
+ $( "#connect-success" ).append("<p>Your IP address now is: " + text(data["ip"]) + "</p>");
|
|
|
+ $( "#connect-success" ).show();
|
|
|
+ $( "#connect-fail" ).hide();
|
|
|
+
|
|
|
+ enableAPTimer = false;
|
|
|
+ if (!recovery) enableStatusTimer = false;
|
|
|
+ }
|
|
|
+ else if(data["urc"] === 1){
|
|
|
+ //failed attempt
|
|
|
+ $("#connected-to span").text('');
|
|
|
+ $("#connect-details h1").text('');
|
|
|
+ $("#ip").text('0.0.0.0');
|
|
|
+ $("#netmask").text('0.0.0.0');
|
|
|
+ $("#gw").text('0.0.0.0');
|
|
|
+ $("span#foot-wifi").html("");
|
|
|
+
|
|
|
+ //don't show any connection
|
|
|
+ $("#wifi-status").slideUp( "fast", function() {});
|
|
|
+
|
|
|
+ //unlock the wait screen
|
|
|
+ $( "#ok-connect" ).prop("disabled",false);
|
|
|
+
|
|
|
+ //update wait screen
|
|
|
+ $( "#loading" ).hide();
|
|
|
+ $( "#connect-fail" ).show();
|
|
|
+ $( "#connect-success" ).hide();
|
|
|
+
|
|
|
+ enableAPTimer = true;
|
|
|
+ enableStatusTimer = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(data.hasOwnProperty('urc') && data['urc'] === 0){
|
|
|
+ //ESP32 is already connected to a wifi without having the user do anything
|
|
|
+ if( !($("#wifi-status").is(":visible")) ){
|
|
|
+ $("#connected-to span").text(data["ssid"]);
|
|
|
+ $("#connect-details h1").text(data["ssid"]);
|
|
|
+ $("#ip").text(data["ip"]);
|
|
|
+ $("#netmask").text(data["netmask"]);
|
|
|
+ $("#gw").text(data["gw"]);
|
|
|
+ $("#wifi-status").slideDown( "fast", function() {});
|
|
|
+ $("span#foot-wifi").html(", SSID: <strong>"+data["ssid"]+"</strong>, IP: <strong>"+data["ip"]+"</strong>");
|
|
|
+ }
|
|
|
+ enableAPTimer = false;
|
|
|
+ if (!recovery) enableStatusTimer = false;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- if (data.hasOwnProperty('recovery')) {
|
|
|
- if (data["recovery"] === 1) {
|
|
|
- recovery = true;
|
|
|
- $("#otadiv").show();
|
|
|
+ else if(data.hasOwnProperty('urc') && data['urc'] === 2){
|
|
|
+ //that's a manual disconnect
|
|
|
+ if($("#wifi-status").is(":visible")){
|
|
|
+ $("#wifi-status").slideUp( "fast", function() {});
|
|
|
+ $("span#foot-wifi").html("");
|
|
|
+ }
|
|
|
+ enableAPTimer = true;
|
|
|
enableStatusTimer = true;
|
|
|
- } else {
|
|
|
- recovery = false;
|
|
|
- $("#otadiv").hide();
|
|
|
}
|
|
|
- }
|
|
|
- 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);
|
|
|
+ if(data.hasOwnProperty('project_name') && data['project_name'] != ''){
|
|
|
+ pname = data['project_name'];
|
|
|
+ }
|
|
|
+ if(data.hasOwnProperty('version') && data['version'] != ''){
|
|
|
+ ver = data['version'];
|
|
|
+ $("span#foot-fw").html("fw: <strong>"+ver+"</strong>, mode: <strong>"+pname+"</strong>");
|
|
|
+ }
|
|
|
+ if(data.hasOwnProperty('ota_pct') && data['ota_pct'] != 0){
|
|
|
+ otapct = data['ota_pct'];
|
|
|
+ $('.progress-bar').css('width', otapct+'%').attr('aria-valuenow', otapct);
|
|
|
+ $('.progress-bar').html(otapct+'%');
|
|
|
+ }
|
|
|
+ blockAjax = false;
|
|
|
+ })
|
|
|
+ .fail(function() {
|
|
|
+ //don't do anything, the server might be down while esp32 recalibrates radio
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (data.hasOwnProperty('recovery')) {
|
|
|
+ if (data["recovery"] === 1) {
|
|
|
+ recovery = true;
|
|
|
+ $("#otadiv").show();
|
|
|
+ enableStatusTimer = true;
|
|
|
+ } else {
|
|
|
+ recovery = false;
|
|
|
+ $("#otadiv").hide();
|
|
|
}
|
|
|
+ }
|
|
|
+ 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() {
|
|
|
+ console.log("failed to fetch config!");
|
|
|
});
|
|
|
- }
|
|
|
- })
|
|
|
- .fail(function() {
|
|
|
- console.log("failed to fetch config!");
|
|
|
- });
|
|
|
-}
|
|
|
+ }
|