diff --git a/html_orig/_debug_replacements.php b/html_orig/_debug_replacements.php index d9c7dbd..dbd22a9 100644 --- a/html_orig/_debug_replacements.php +++ b/html_orig/_debug_replacements.php @@ -1,5 +1,10 @@ 'ESP8266 Wireless Terminal', @@ -28,4 +33,10 @@ return [ '%sta_enable%' => '1', '%opmode%' => '3', + '%vers_fw%' => '1.2.3', + '%date%' => date('Y-m-d'), + '%time%' => date('G:i'), + '%vers_httpd%' => '4.5.6', + '%vers_sdk%' => '1.52', + '%githubrepo%' => 'https://github.com/MightyPork/esp-vt100-firmware', ]; diff --git a/html_orig/_pages.php b/html_orig/_pages.php index 37e0ee7..d72a90e 100644 --- a/html_orig/_pages.php +++ b/html_orig/_pages.php @@ -13,14 +13,16 @@ function pg($key, $bc, $path) { } pg('cfg_wifi', 'cfg', '/cfg/wifi'); +pg('cfg_wifi_conn', '', '/wifi/connecting'); // page without menu that tries to show the connection progress pg('cfg_network', 'cfg', '/cfg/network'); pg('cfg_term', 'cfg', '/cfg/term'); -pg('about', 'cfg', '/about'); -pg('help', 'cfg', '/help'); +pg('about', 'cfg page-about', '/about'); +pg('help', 'cfg page-help', '/help'); pg('term', 'term', '/'); -// technical +// ajax API pg('wifi_set', '', '/wifi/set');//'/cfg/wifi/set'); pg('wifi_scan', '', '/wifi/scan');//'/cfg/wifi/scan'); +pg('wifi_connstatus', '', '/wifi/connstatus'); return $pages; diff --git a/html_orig/css/app.css b/html_orig/css/app.css index 1e206f9..a326c3e 100644 --- a/html_orig/css/app.css +++ b/html_orig/css/app.css @@ -343,6 +343,10 @@ a:hover { [onclick] { cursor: pointer; } +ul > * { + padding-top: .2em; + padding-bottom: .2em; } + /* Main outer container */ #outer { display: flex; diff --git a/html_orig/index.php b/html_orig/index.php index ddb1499..c779c8d 100644 --- a/html_orig/index.php +++ b/html_orig/index.php @@ -1,15 +1,19 @@ _env.php.example to _env.php and check the settings inside!"); +} require '_env.php'; + $prod = defined('STDIN'); define ('DEBUG', !$prod); -$root = DEBUG ? ESP_IP : ''; -define ('LIVE_ROOT', $root); +$root = DEBUG ? json_encode(ESP_IP) : 'window.location.href'; +define ('JS_WEB_ROOT', $root); define('CUR_PAGE', $_GET['page'] ?: 'term'); define('LOCALE', $_GET['locale'] ?: 'en'); -$_messages = require(__DIR__ . '/messages/' . LOCALE . '.php'); +$_messages = require(__DIR__ . '/lang/' . LOCALE . '.php'); $_pages = require('_pages.php'); define('APP_NAME', 'ESPTerm'); @@ -17,9 +21,9 @@ define('PAGE_TITLE', $_pages[CUR_PAGE]->label . ' :: ' . APP_NAME); define('BODYCLASS', $_pages[CUR_PAGE]->bodyclass); /** URL (dev or production) */ -function url($name, $root=false) { +function url($name, $relative=false) { global $_pages; - if ($root) return $_pages[$name]->path; + if ($relative) return $_pages[$name]->path; if (DEBUG) return "/index.php?page=$name"; else return $_pages[$name]->path; diff --git a/html_orig/js/app.js b/html_orig/js/app.js index 055c41f..fc1db8c 100644 --- a/html_orig/js/app.js +++ b/html_orig/js/app.js @@ -705,20 +705,16 @@ function mk(e) {return document.createElement(e)} /** Find one by query */ -function qq(s) {return document.querySelector(s)} +function qs(s) {return document.querySelector(s)} /** Find all by query */ -function qa(s) {return document.querySelectorAll(s)} +function qsa(s) {return document.querySelectorAll(s)} /** Convert any to bool safely */ function bool(x) { return (x === 1 || x === '1' || x === true || x === 'true'); } -function intval(x) { - return parseInt(x); -} - /** Extend an objects with options */ function extend(defaults, options) { var target = {}; @@ -739,23 +735,23 @@ function rgxe(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } +/** Format number to N decimal places, output as string */ function numfmt(x, places) { var pow = Math.pow(10, places); return Math.round(x*pow) / pow; } -function estimateLoadTime(fs, n) { - return (1000/fs)*n+1500; -} - +/** Get millisecond timestamp */ function msNow() { return +(new Date); } +/** Get ms elapsed since msNow() */ function msElapsed(start) { return msNow() - start; } +/** Shim for log base 10 */ Math.log10 = Math.log10 || function(x) { return Math.log(x) / Math.LN10; }; @@ -796,18 +792,25 @@ String.prototype.format = function () { return out; }; +/** HTML escape */ function e(str) { - return String(str) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); + return $.htmlEscape(str); } +/** Check for undefined */ function undef(x) { return typeof x == 'undefined'; } + +/** Safe json parse */ +function jsp() { + try { + return JSON.parse(e); + } catch(e) { + console.error(e); + return null; + } +} /** Module for toggling a modal overlay */ (function () { var modal = {}; @@ -851,6 +854,27 @@ function undef(x) { })(); /** Global generic init */ $.ready(function () { + // Checkbox UI (checkbox CSS and hidden input with int value) + $('.Row.checkbox').forEach(function(x) { + var inp = x.querySelector('input'); + var box = x.querySelector('.box'); + + $(box).toggleClass('checked', inp.value); + + $(x).on('click', function() { + inp.value = 1 - inp.value; + $(box).toggleClass('checked', inp.value) + }); + }); + + // Expanding boxes on mobile + $('.Box.mobcol').forEach(function(x) { + var h = x.querySelector('h2'); + $(h).on('click', function() { + $(x).toggleClass('expanded'); + }); + }); + // loader dots... setInterval(function () { $('.anim-dots').each(function (x) { @@ -863,12 +887,13 @@ $.ready(function () { // flipping number boxes with the mouse wheel $('input[type=number]').on('mousewheel', function(e) { - var val = +$(this).val(); + var $this = $(this); + var val = +$this.val(); if (isNaN(val)) val = 1; - var step = +($(this).attr('step') || 1); - var min = +$(this).attr('min'); - var max = +$(this).attr('max'); + var step = +($this.attr('step') || 1); + var min = +$this.attr('min'); + var max = +$this.attr('max'); if(e.wheelDelta > 0) { val += step; } else { @@ -877,14 +902,14 @@ $.ready(function () { if (typeof min != 'undefined') val = Math.max(val, +min); if (typeof max != 'undefined') val = Math.min(val, +max); - $(this).val(val); + $this.val(val); if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); - $(this)[0].dispatchEvent(evt); + $this[0].dispatchEvent(evt); } else { - $(this)[0].fireEvent("onchange"); + $this[0].fireEvent("onchange"); } e.preventDefault(); @@ -894,10 +919,7 @@ $.ready(function () { }); $._loader = function(vis) { - if(vis) - $('#loader').addClass('show'); - else - $('#loader').removeClass('show'); + $('#loader').toggleClass('show', vis); }; (function() { /** @@ -1036,7 +1058,7 @@ $._loader = function(vis) { H = obj.h; /* Build screen & show */ - var e, cell, scr = qq('#screen'); + var e, cell, scr = qs('#screen'); // Empty the screen node while (scr.firstChild) scr.removeChild(scr.firstChild); @@ -1182,7 +1204,7 @@ $._loader = function(vis) { } }); - qa('#buttons button').forEach(function(s) { + qsa('#buttons button').forEach(function(s) { s.addEventListener('click', function() { sendBtnMsg(+this.dataset['n']); }); @@ -1202,181 +1224,3 @@ $._loader = function(vis) { Input.init(); } })(); -/** Wifi page */ -(function () { - var authStr = ['Open', 'WEP', 'WPA', 'WPA2', 'WPA/WPA2']; - var curSSID; - - /** Update display for received response */ - function onScan(resp, status) { - if (status != 200) { - // bad response - rescan(5000); // wait 5sm then retry - return; - } - - resp = JSON.parse(resp); - - var done = !bool(resp.result.inProgress) && (resp.result.APs.length > 0); - rescan(done ? 15000 : 1000); - if (!done) return; // no redraw yet - - // clear the AP list - var $list = $('#ap-list'); - // remove old APs - $('#ap-list .AP').remove(); - - $list.toggle(done); - $('#ap-loader').toggle(!done); - - // scan done - resp.result.APs.sort(function (a, b) { - return b.rssi - a.rssi; - }).forEach(function (ap) { - ap.enc = intval(ap.enc); - - if (ap.enc > 4) return; // hide unsupported auths - - var item = document.createElement('div'); - - var $item = $(item) - .data('ssid', ap.essid) - .data('pwd', ap.enc != 0) - .addClass('AP'); - - // mark current SSID - if (ap.essid == curSSID) { - $item.addClass('selected'); - } - - var inner = document.createElement('div'); - $(inner).addClass('inner') - .htmlAppend('
{0}
'.format(ap.rssi_perc)) - .htmlAppend('
{0}
'.format($.htmlEscape(ap.essid))) - .htmlAppend('
{0}
'.format(authStr[ap.enc])); - - $item.on('click', function () { - var $th = $(this); - - // populate the form - $('#conn-essid').val($th.data('ssid')); - $('#conn-passwd').val(''); // clear - - if ($th.data('pwd')) { - // this AP needs a password - Modal.show('#psk-modal'); - } else { - Modal.show('#reset-modal'); - $('#conn-form').submit(); - } - }); - - - item.appendChild(inner); - $list[0].appendChild(item); - }); - } - - /** Ask the CGI what APs are visible (async) */ - function scanAPs() { - $.get('http://'+_root+'/wifi/scan', onScan); - } - - function rescan(time) { - setTimeout(scanAPs, time); - } - - /** Set up the WiFi page */ - window.wifiInit = function (obj) { - //var ap_json = { - // "result": { - // "inProgress": "0", - // "APs": [ - // {"essid": "Chlivek", "bssid": "88:f7:c7:52:b3:99", "rssi": "204", "enc": "4", "channel": "1"}, - // {"essid": "TyNikdy", "bssid": "5c:f4:ab:0d:f1:1b", "rssi": "164", "enc": "3", "channel": "1"}, - // ] - // } - //}; - - // Hide what should be hidden in this mode - $('.x-hide-'+obj.mode).addClass('hidden'); - obj.mode = +obj.mode; - - // Channel writable only in AP mode - if (obj.mode != 2) $('#channel').attr('readonly', 1); - - curSSID = obj.staSSID; - - // add SSID to the opmode field - if (curSSID) { - var box = $('#opmodebox'); - box.html(box.html() + ' (' + curSSID + ')'); - } - - // hide IP if IP not received - if (!obj.staIP) $('.x-hide-noip').addClass('hidden'); - - // scan if not AP - if (obj.mode != 2) { - scanAPs(); - } - - $('#modeswitch').html([ - 'Client+AP AP only', - 'Client+AP', - 'Client only AP only' - ][obj.mode-1]); - }; - - window.wifiConn = function () { - var xhr = new XMLHttpRequest(); - var abortTmeo; - - function getStatus() { - xhr.open("GET", 'http://'+_root+"/wifi/connstatus"); - xhr.onreadystatechange = function () { - if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 300) { - clearTimeout(abortTmeo); - var data = JSON.parse(xhr.responseText); - var done = false; - var msg = '...'; - - if (data.status == "idle") { - msg = "Preparing to connect"; - } - else if (data.status == "success") { - msg = "Connected! Received IP " + data.ip + "."; - done = true; - } - else if (data.status == "working") { - msg = "Connecting to selected AP"; - } - else if (data.status == "fail") { - msg = "Connection failed, check your password and try again."; - done = true; - } - - $("#status").html(msg); - - if (done) { - $('#backbtn').removeClass('hidden'); - $('.anim-dots').addClass('hidden'); - } else { - window.setTimeout(getStatus, 1000); - } - } - }; - - abortTmeo = setTimeout(function () { - xhr.abort(); - $("#status").html("Telemetry lost, try reconnecting to the AP."); - $('#backbtn').removeClass('hidden'); - $('.anim-dots').addClass('hidden'); - }, 4000); - - xhr.send(); - } - - getStatus(); - }; -})(); diff --git a/html_orig/jssrc/appcommon.js b/html_orig/jssrc/appcommon.js index 09fd0b1..a40faa6 100644 --- a/html_orig/jssrc/appcommon.js +++ b/html_orig/jssrc/appcommon.js @@ -1,5 +1,26 @@ /** Global generic init */ $.ready(function () { + // Checkbox UI (checkbox CSS and hidden input with int value) + $('.Row.checkbox').forEach(function(x) { + var inp = x.querySelector('input'); + var box = x.querySelector('.box'); + + $(box).toggleClass('checked', inp.value); + + $(x).on('click', function() { + inp.value = 1 - inp.value; + $(box).toggleClass('checked', inp.value) + }); + }); + + // Expanding boxes on mobile + $('.Box.mobcol').forEach(function(x) { + var h = x.querySelector('h2'); + $(h).on('click', function() { + $(x).toggleClass('expanded'); + }); + }); + // loader dots... setInterval(function () { $('.anim-dots').each(function (x) { @@ -12,12 +33,13 @@ $.ready(function () { // flipping number boxes with the mouse wheel $('input[type=number]').on('mousewheel', function(e) { - var val = +$(this).val(); + var $this = $(this); + var val = +$this.val(); if (isNaN(val)) val = 1; - var step = +($(this).attr('step') || 1); - var min = +$(this).attr('min'); - var max = +$(this).attr('max'); + var step = +($this.attr('step') || 1); + var min = +$this.attr('min'); + var max = +$this.attr('max'); if(e.wheelDelta > 0) { val += step; } else { @@ -26,14 +48,14 @@ $.ready(function () { if (typeof min != 'undefined') val = Math.max(val, +min); if (typeof max != 'undefined') val = Math.min(val, +max); - $(this).val(val); + $this.val(val); if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); - $(this)[0].dispatchEvent(evt); + $this[0].dispatchEvent(evt); } else { - $(this)[0].fireEvent("onchange"); + $this[0].fireEvent("onchange"); } e.preventDefault(); @@ -43,8 +65,5 @@ $.ready(function () { }); $._loader = function(vis) { - if(vis) - $('#loader').addClass('show'); - else - $('#loader').removeClass('show'); + $('#loader').toggleClass('show', vis); }; diff --git a/html_orig/jssrc/notif.js b/html_orig/jssrc/notif.js new file mode 100644 index 0000000..ad08e51 --- /dev/null +++ b/html_orig/jssrc/notif.js @@ -0,0 +1,32 @@ +(function (nt) { + var sel = '#notif'; + + var hideTmeo1; // timeout to start hiding (transition) + var hideTmeo2; // timeout to add the hidden class + + nt.show = function (message, timeout) { + $(sel).html(message); + Modal.show(sel); + + clearTimeout(hideTmeo1); + clearTimeout(hideTmeo2); + + if (undef(timeout)) timeout = 2500; + + hideTmeo1 = setTimeout(nt.hide, timeout); + }; + + nt.hide = function () { + var $m = $(sel); + $m.removeClass('visible'); + hideTmeo2 = setTimeout(function () { + $m.addClass('hidden'); + }, 250); // transition time + }; + + nt.init = function() { + $(sel).on('click', function() { + nt.hide(this); + }); + }; +})(window.Notify = {}); diff --git a/html_orig/jssrc/term.js b/html_orig/jssrc/term.js index b9253d6..0965105 100644 --- a/html_orig/jssrc/term.js +++ b/html_orig/jssrc/term.js @@ -135,7 +135,7 @@ H = obj.h; /* Build screen & show */ - var e, cell, scr = qq('#screen'); + var e, cell, scr = qs('#screen'); // Empty the screen node while (scr.firstChild) scr.removeChild(scr.firstChild); @@ -281,7 +281,7 @@ } }); - qa('#buttons button').forEach(function(s) { + qsa('#buttons button').forEach(function(s) { s.addEventListener('click', function() { sendBtnMsg(+this.dataset['n']); }); diff --git a/html_orig/jssrc/utils.js b/html_orig/jssrc/utils.js index 9bec8c7..bf6d114 100755 --- a/html_orig/jssrc/utils.js +++ b/html_orig/jssrc/utils.js @@ -2,20 +2,16 @@ function mk(e) {return document.createElement(e)} /** Find one by query */ -function qq(s) {return document.querySelector(s)} +function qs(s) {return document.querySelector(s)} /** Find all by query */ -function qa(s) {return document.querySelectorAll(s)} +function qsa(s) {return document.querySelectorAll(s)} /** Convert any to bool safely */ function bool(x) { return (x === 1 || x === '1' || x === true || x === 'true'); } -function intval(x) { - return parseInt(x); -} - /** Extend an objects with options */ function extend(defaults, options) { var target = {}; @@ -36,23 +32,23 @@ function rgxe(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } +/** Format number to N decimal places, output as string */ function numfmt(x, places) { var pow = Math.pow(10, places); return Math.round(x*pow) / pow; } -function estimateLoadTime(fs, n) { - return (1000/fs)*n+1500; -} - +/** Get millisecond timestamp */ function msNow() { return +(new Date); } +/** Get ms elapsed since msNow() */ function msElapsed(start) { return msNow() - start; } +/** Shim for log base 10 */ Math.log10 = Math.log10 || function(x) { return Math.log(x) / Math.LN10; }; @@ -93,15 +89,22 @@ String.prototype.format = function () { return out; }; +/** HTML escape */ function e(str) { - return String(str) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); + return $.htmlEscape(str); } +/** Check for undefined */ function undef(x) { return typeof x == 'undefined'; } + +/** Safe json parse */ +function jsp() { + try { + return JSON.parse(e); + } catch(e) { + console.error(e); + return null; + } +} diff --git a/html_orig/jssrc/wifi.js b/html_orig/jssrc/wifi.js index 27f9924..5e442dd 100644 --- a/html_orig/jssrc/wifi.js +++ b/html_orig/jssrc/wifi.js @@ -11,9 +11,9 @@ return; } - resp = JSON.parse(resp); + resp = jsp(resp); - var done = !bool(resp.result.inProgress) && (resp.result.APs.length > 0); + var done = resp && !bool(resp.result.inProgress) && (resp.result.APs.length > 0); rescan(done ? 15000 : 1000); if (!done) return; // no redraw yet @@ -29,7 +29,7 @@ resp.result.APs.sort(function (a, b) { return b.rssi - a.rssi; }).forEach(function (ap) { - ap.enc = intval(ap.enc); + ap.enc = parseInt(ap.enc); if (ap.enc > 4) return; // hide unsupported auths @@ -124,55 +124,5 @@ ][obj.mode-1]); }; - window.wifiConn = function () { - var xhr = new XMLHttpRequest(); - var abortTmeo; - - function getStatus() { - xhr.open("GET", 'http://'+_root+"/wifi/connstatus"); - xhr.onreadystatechange = function () { - if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 300) { - clearTimeout(abortTmeo); - var data = JSON.parse(xhr.responseText); - var done = false; - var msg = '...'; - - if (data.status == "idle") { - msg = "Preparing to connect"; - } - else if (data.status == "success") { - msg = "Connected! Received IP " + data.ip + "."; - done = true; - } - else if (data.status == "working") { - msg = "Connecting to selected AP"; - } - else if (data.status == "fail") { - msg = "Connection failed, check your password and try again."; - done = true; - } - $("#status").html(msg); - - if (done) { - $('#backbtn').removeClass('hidden'); - $('.anim-dots').addClass('hidden'); - } else { - window.setTimeout(getStatus, 1000); - } - } - }; - - abortTmeo = setTimeout(function () { - xhr.abort(); - $("#status").html("Telemetry lost, try reconnecting to the AP."); - $('#backbtn').removeClass('hidden'); - $('.anim-dots').addClass('hidden'); - }, 4000); - - xhr.send(); - } - - getStatus(); - }; })(); diff --git a/html_orig/messages/en.php b/html_orig/lang/en.php similarity index 67% rename from html_orig/messages/en.php rename to html_orig/lang/en.php index 1fdd2b3..64c16ff 100644 --- a/html_orig/messages/en.php +++ b/html_orig/lang/en.php @@ -7,8 +7,9 @@ return [ 'menu.cfg_network' => 'Network Configuration', 'menu.cfg_term' => 'Terminal Settings', 'menu.about' => 'About ESPTerm', - 'menu.help' => 'Help', + 'menu.help' => 'Terminal Help', 'menu.term' => 'Back to Terminal', + 'menu.cfg_wifi_conn' => 'Connecting to External Network', 'box.ap' => 'Built-in Access Point', 'box.sta' => 'Connect to External Network', @@ -32,6 +33,15 @@ return [ 'wifi.cant_scan_no_sta' => 'Can\'t scan with Client mode disabled.', 'wifi.select_ssid' => 'Available networks:', + 'wifi.conn.status' => 'Status:', + 'wifi.conn.back_to_config' => 'Back to WiFi config', + 'wifi.conn.telemetry_lost' => 'Telemetry lost, something went wrong. Try again...', + + 'wifi.conn.idle' =>"Preparing to connect", + 'wifi.conn.success' => "Connected! Received IP ", + 'wifi.conn.working' => "Connecting to selected AP", + 'wifi.conn.fail' => "Connection failed, check your password and try again.", + 'enabled' => 'Enabled', 'disabled' => 'Disabled', 'yes' => 'Yes', diff --git a/html_orig/packjs.sh b/html_orig/packjs.sh index 37c976c..53c9e69 100755 --- a/html_orig/packjs.sh +++ b/html_orig/packjs.sh @@ -6,5 +6,4 @@ cat jssrc/chibi.js \ jssrc/utils.js \ jssrc/modal.js \ jssrc/appcommon.js \ - jssrc/term.js \ - jssrc/wifi.js > js/app.js + jssrc/term.js > js/app.js diff --git a/html_orig/pages/_cfg_menu.php b/html_orig/pages/_cfg_menu.php index 69b7fe7..2a020ac 100644 --- a/html_orig/pages/_cfg_menu.php +++ b/html_orig/pages/_cfg_menu.php @@ -4,7 +4,8 @@ $page) { - if ($page->bodyclass !== 'cfg') continue; + if (strpos($page->bodyclass, 'cfg') === false) continue; + $sel = (CUR_PAGE == $k) ? ' class="selected"' : ''; $text = $page->label; $url = e(url($k)); diff --git a/html_orig/pages/_head.php b/html_orig/pages/_head.php index f1b3c2e..ff5b31d 100644 --- a/html_orig/pages/_head.php +++ b/html_orig/pages/_head.php @@ -7,13 +7,13 @@ <?= PAGE_TITLE ?> - +
bodyclass == 'cfg') { +if (strpos($_pages[CUR_PAGE]->bodyclass, 'cfg') !== false) { $cfg = true; require __DIR__ . '/_cfg_menu.php'; } diff --git a/html_orig/about.html b/html_orig/pages/about.php similarity index 51% rename from html_orig/about.html rename to html_orig/pages/about.php index d83f202..57a4c71 100644 --- a/html_orig/about.html +++ b/html_orig/pages/about.php @@ -1,34 +1,26 @@ - - - - - About - ESP8266 Remote Terminal - - - - - - - -

About

-

ESP8266 Remote Terminal

-

© Ondřej Hruška, 2017 <ondra@ondrovo.com>

+

+ © Ondřej Hruška, 2016-2017 + <ondra@ondrovo.com> +

-

Katedra měření, FEL ČVUT
Department of Measurement, FEE CTU

+

+ Katedra měření, FEL ČVUT
+ Department of Measurement, FEE CTU +

-

Firmware

+

Version

- - + + @@ -55,7 +47,14 @@

Contributing

- Submit your improvements and ideas to the project on GitHub.
+ Submit your improvements and ideas to the project on + GitHub. +

+ +

+ You can donate on PayPal or + LiberaPay to help keep + the project going.

@@ -66,15 +65,7 @@ esphttpd library by Jeroen Domburg (Sprite_tm).

- Using (modified) JS library chibi.js by Kyle Barrow as a lightweight jQuery alternative. + Using (modified) JS library chibi.js by + Kyle Barrow as a lightweight jQuery alternative.

- - - - - diff --git a/html_orig/pages/cfg_wifi.php b/html_orig/pages/cfg_wifi.php index 4c6613c..e040fe9 100644 --- a/html_orig/pages/cfg_wifi.php +++ b/html_orig/pages/cfg_wifi.php @@ -1,4 +1,4 @@ - +

@@ -46,7 +46,7 @@
- +

@@ -103,27 +103,6 @@
diff --git a/html_orig/help.html b/html_orig/pages/help.php similarity index 86% rename from html_orig/help.html rename to html_orig/pages/help.php index 9cece09..6f6314b 100644 --- a/html_orig/help.html +++ b/html_orig/pages/help.php @@ -1,29 +1,15 @@ - - - - - Help - ESP8266 Remote Terminal - - - - - - - -

Quick Reference

-

Wiring

    -
  • Communication UART on pins Rx, Tx at 115200-8-1-N
  • -
  • Debug log on pin GPIO2 at 115200-8-1-N
  • -
  • Use 3.3V logic, or 5V with protection resistors (470R or more)
  • -
  • If the "LVD" LED on the ESP Term board lights up, the module doesn't get enough power. Check your connections.
  • +
  • Communication UART is on pins Rx, Tx at 115200-8-1-N. The baud rate can be changed in Terminal Settings. +
  • Debug log is on pin GPIO2 (P2) at 115200-8-1-N. This baud rate is fixed. +
  • Compatible with 3.3 V and 5 V logic. For 5 V, 470 R protection resistors are recommended. +
  • If the "LVD" LED on the ESPTerm module lights up, it doesn't get enough power to run correctly. Check your connections.
  • Connect Rx and Tx with a piece of wire to test the terminal alone, you should see what you type in the browser. - NOTE: This won't work if your ESP8266 board has a built-in USB-serial (like NodeMCU).
  • -
  • For best performance, use the module in the Client mode. In AP mode, check that the channel used is clear; - interference may cause lag in the terminal.
  • + NOTE: This won't work if your ESP8266 board has a built-in USB-serial converter (like NodeMCU). +
  • For best performance, use the module in Client mode (connected to external network). +
  • In AP mode, check that the channel used is clear; interference may cause a flaky connection.
@@ -328,12 +314,3 @@
Firmwarev%vers_fw%, build %date% at %time%ESPTermv%vers_fw%, build %date% at %time%
libesphttpd
- - - - - diff --git a/html_orig/sass/layout/_base.scss b/html_orig/sass/layout/_base.scss index 4527f14..eda4c7e 100755 --- a/html_orig/sass/layout/_base.scss +++ b/html_orig/sass/layout/_base.scss @@ -29,3 +29,8 @@ a:hover { [onclick] { cursor: pointer; } + +ul > * { + padding-top: .2em; + padding-bottom: .2em; +} diff --git a/html_orig/sass/layout/_espterm_specific_old.scss b/html_orig/sass/layout/_espterm_specific_old.scss deleted file mode 100644 index f2263bd..0000000 --- a/html_orig/sass/layout/_espterm_specific_old.scss +++ /dev/null @@ -1,76 +0,0 @@ - -ul > * { - padding-top: .1em; - padding-bottom: .1em; -} - -h1,h2 { - @include noselect(); -} - -h1 { - text-align: center; - font-size: fsize(6); - margin-top: 0; - margin-bottom: dist(0); - - @include media($phone) { - font-size: fsize(3); - margin-bottom: dist(-1); - } - - @include media($tablet) { - font-size: fsize(5); - } -} - -h2 { - font-size: fsize(2); - margin-bottom: dist(-1); - //&:first-child{margin-top:0} -} - -td, th { - padding: dist(-2); - white-space: nowrap; - - @include media($phone) { - padding: dist(-3); - } -} - -tbody th { - text-align: right; - width: $form-label-w; - color: $c-form-label-fg; - - @include media($phone) { - width: auto; - } -} - -tbody td { - input[type="text"], input[type="number"] { - width: 10em; - - @include media($phone) { - width: 8em; - } - } -} - -body { - position: relative; - - padding: dist(0); - @include media($phone) { - padding: dist(-1); - } - - overflow-y: auto; - - & > * { - margin-left: auto; - margin-right: auto; - } -} diff --git a/html_orig/term.html b/html_orig/term.html deleted file mode 100644 index c0d5106..0000000 --- a/html_orig/term.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - ESP8266 Remote Terminal - - - - - - - - - -

ESP8266 Remote Terminal

- -
-
- -
- -
-
- - - - - - - diff --git a/html_orig/term_test.php b/html_orig/term_test.php deleted file mode 100644 index efa507a..0000000 --- a/html_orig/term_test.php +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - WiFi Settings - ESP8266 Remote Terminal - - - - - - -Loading… - -

WiFi settings

- -
- - - - - - - - - - - - - - - - - - - - - - -
WiFi mode%WiFiMode%
IP%StaIP%
Switch to
- - - -
-
- -
-
-

Some changes require a reboot, dropping connection. It can take a while to re-connect.

-

- If you lose access, hold the BOOT button for 2 seconds (the Tx LED starts blinking) to re-enable AP mode. - If that fails, hold the BOOT button for over 5 seconds (rapid Tx LED flashing) to perform a factory reset. -

-

-
- -
-

Select AP to join

-
Scanning.
-
Can't scan in AP-only mode.
- -
- - - - - - - - diff --git a/html_orig/wifi_conn.html b/html_orig/wifi_conn.html deleted file mode 100755 index a9448dc..0000000 --- a/html_orig/wifi_conn.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - Connecting… - - - - - - -

Connecting to network

- -
-

Status:
.

- -
- - - - diff --git a/html_orig/wifi_test.php b/html_orig/wifi_test.php deleted file mode 100644 index b1863e7..0000000 --- a/html_orig/wifi_test.php +++ /dev/null @@ -1,15 +0,0 @@ -