Browse Source

espterm demo html

Ondřej Hruška 3 years ago
parent
commit
0086099d93
26 changed files with 6396 additions and 3 deletions
  1. 0 2
      README.md
  2. 114 0
      about.html
  3. 140 0
      cfg_network.html
  4. 139 0
      cfg_system.html
  5. 277 0
      cfg_term.html
  6. 165 0
      cfg_wifi.html
  7. 120 0
      cfg_wifi_conn.html
  8. 1810 0
      css/app.css
  9. BIN
      favicon.ico
  10. 959 0
      help.html
  11. 5 0
      img/cvut.svg
  12. BIN
      img/loader.gif
  13. BIN
      img/vt100.jpg
  14. 1 1
      index.html
  15. 2533 0
      js/app.js
  16. 1 0
      network_set.html
  17. 1 0
      reset_screen.html
  18. 1 0
      restore_defaults.html
  19. 1 0
      restore_hard.html
  20. 1 0
      system_set.html
  21. 123 0
      term.html
  22. 1 0
      term_set.html
  23. 1 0
      wifi_connstatus.html
  24. 1 0
      wifi_scan.html
  25. 1 0
      wifi_set.html
  26. 1 0
      write_defaults.html

+ 0 - 2
README.md View File

@@ -1,2 +0,0 @@
1
-# espterm.github.io
2
-ESPTerm website

+ 114 - 0
about.html View File

@@ -0,0 +1,114 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>About ESPTerm :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+					</script>
14
+</head>
15
+<body class="cfg page-about">
16
+<div id="outer">
17
+<nav id="menu">
18
+	<div id="brand" tabindex=0>ESPTerm</div>
19
+	<a href="term.html" class="icn-back">Back to Terminal</a>
20
+	<a href="cfg_term.html" class="icn-terminal ">Terminal Settings</a><a href="cfg_wifi.html" class="icn-wifi ">WiFi Settings</a><a href="cfg_network.html" class="icn-network ">Network Settings</a><a href="cfg_system.html" class="icn-configure ">System Settings</a><a href="help.html" class="icn-help ">Quick Reference</a><a href="about.html" class="icn-about selected">About ESPTerm</a></nav>
21
+
22
+<script>
23
+	function menuOpen() { $('#menu').toggleClass('expanded') }
24
+	$('#brand').on('click', menuOpen).on('keypress', cr(menuOpen));
25
+</script>
26
+
27
+<div id="content">
28
+<img src="/img/loader.gif" alt="Loading…" id="loader">
29
+<h1>About ESPTerm</h1>
30
+
31
+<div class="Box errors hidden">
32
+	<span class="lead">Validation errors for:</span>&nbsp;<span class="list"></span>
33
+</div>
34
+
35
+<div class="Box">
36
+	<img src="/img/cvut.svg" id="logo" class="mq-tablet-min">
37
+	<h2>ESP8266 Remote Terminal</h2>
38
+
39
+	<img src="/img/cvut.svg" id="logo2" class="mq-phone">
40
+
41
+	<p>
42
+		&copy; Ondřej Hruška, 2016-2017
43
+		&lt;<a href="mailto:ondra@ondrovo.com">ondra@ondrovo.com</a>&gt;
44
+	</p>
45
+
46
+	<p>
47
+		<a href="http://measure.feld.cvut.cz/" target="blank">Katedra měření, FEL ČVUT</a><br>
48
+		Department of Measurement, FEE CTU
49
+	</p>
50
+</div>
51
+
52
+<div class="Box">
53
+	<h2>Version</h2>
54
+	<table>
55
+		<tr>
56
+			<th>ESPTerm</th>
57
+			<td>v1.2.3, built 2017-09-07 at 16:17</td>
58
+		</tr>
59
+		<tr>
60
+			<th>libesphttpd</th>
61
+			<td>v4.5.6</td>
62
+		</tr>
63
+		<tr>
64
+			<th>ESP&nbsp;IoT&nbsp;SDK</th>
65
+			<td>v1.52</td>
66
+		</tr>
67
+	</table>
68
+</div>
69
+
70
+<div class="Box">
71
+	<h2>Issues</h2>
72
+	<p>
73
+		Please report any issues to the <a href="https://github.com/MightyPork/esp-vt100-firmware/issues">bugtracker</a> or send them by e-mail (see above).
74
+	</p>
75
+	<p>
76
+		Firmware updates can be downloaded from the <a href="https://github.com/MightyPork/esp-vt100-firmware/releases">releases page</a> and flashed
77
+		with <a href="https://github.com/espressif/esptool">esptool.py</a>.
78
+	</p>
79
+</div>
80
+
81
+<div class="Box">
82
+	<h2>Contributing</h2>
83
+	<p>
84
+		<i class="icn-github"></i> You're welcome to submit your improvements and ideas to our <a href="https://github.com/MightyPork/esp-vt100-firmware">GitHub repository</a>!
85
+	</p>
86
+
87
+	<p>
88
+		<i class="icn-donate"></i> If you'd like to donate, please try <a href="https://paypal.me/mightypork">PayPal</a> or
89
+		<a href="https://liberapay.com/MightyPork/">LiberaPay</a>.
90
+	</p>
91
+</div>
92
+
93
+<div class="Box">
94
+	<h2>Thanks</h2>
95
+	<p>
96
+		The webserver is based on a <a href="https://github.com/MightyPork/libesphttpd">fork</a> of the
97
+		<a href="https://github.com/Spritetm/esphttpd">esphttpd</a> library by Jeroen Domburg (Sprite_tm).
98
+	</p>
99
+	<p>
100
+		Using (modified) JS library <a href="https://github.com/kylebarrow/chibi">chibi.js</a> by
101
+		Kyle Barrow as a lightweight jQuery alternative.
102
+	</p>
103
+</div>
104
+
105
+<div class="botpad"></div>
106
+
107
+<div class="NotifyMsg hidden" id="notif"></div>
108
+
109
+</div>
110
+
111
+</div>
112
+
113
+</body>
114
+</html>

+ 140 - 0
cfg_network.html View File

@@ -0,0 +1,140 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>Network Settings :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+					</script>
14
+</head>
15
+<body class="cfg">
16
+<div id="outer">
17
+<nav id="menu">
18
+	<div id="brand" tabindex=0>ESPTerm</div>
19
+	<a href="term.html" class="icn-back">Back to Terminal</a>
20
+	<a href="cfg_term.html" class="icn-terminal ">Terminal Settings</a><a href="cfg_wifi.html" class="icn-wifi ">WiFi Settings</a><a href="cfg_network.html" class="icn-network selected">Network Settings</a><a href="cfg_system.html" class="icn-configure ">System Settings</a><a href="help.html" class="icn-help ">Quick Reference</a><a href="about.html" class="icn-about ">About ESPTerm</a></nav>
21
+
22
+<script>
23
+	function menuOpen() { $('#menu').toggleClass('expanded') }
24
+	$('#brand').on('click', menuOpen).on('keypress', cr(menuOpen));
25
+</script>
26
+
27
+<div id="content">
28
+<img src="/img/loader.gif" alt="Loading…" id="loader">
29
+<h1>Network Settings</h1>
30
+
31
+<div class="Box errors hidden">
32
+	<span class="lead">Validation errors for:</span>&nbsp;<span class="list"></span>
33
+</div>
34
+
35
+
36
+<form class="Box str mobcol" action="network_set.html" method="GET" id="form-2">
37
+	<h2 tabindex=0>DHCP Client (Station)</h2>
38
+
39
+	<div class="Row explain">
40
+		
41
+		Switch off Dynamic IP to configure the static IP address.	</div>
42
+
43
+	<div class="Row checkbox x-static-toggle" >
44
+		<label>Use dynamic IP</label><!--
45
+		--><span class="box" tabindex=0 role=checkbox></span>
46
+		<input type="hidden" id="sta_dhcp_enable" name="sta_dhcp_enable" value="1">
47
+	</div>
48
+
49
+	<div class="Row x-static">
50
+		<label for="sta_addr_ip">ESPTerm static IP</label>
51
+		<input type="text" name="sta_addr_ip" id="sta_addr_ip" value="192.168.0.33" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
52
+	</div>
53
+
54
+	<div class="Row x-static">
55
+		<label for="sta_addr_mask">Subnet mask</label>
56
+		<input type="text" name="sta_addr_mask" id="sta_addr_mask" value="255.255.255.0" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
57
+	</div>
58
+
59
+	<div class="Row x-static">
60
+		<label for="sta_addr_gw">Gateway IP</label>
61
+		<input type="text" name="sta_addr_gw" id="sta_addr_gw" value="192.168.0.1" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
62
+	</div>
63
+
64
+	<div class="Row buttons">
65
+		<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()">Apply!</a>
66
+	</div>
67
+</form>
68
+
69
+<form class="Box str mobcol" action="network_set.html" method="GET" id="form-1">
70
+	<h2 tabindex=0>DHCP Server (AP)</h2>
71
+
72
+	<div class="Row explain">
73
+		
74
+		Those settings affect the built-in DHCP server in AP mode.	</div>
75
+
76
+	<div class="Row">
77
+		<label for="ap_addr_mask">Subnet mask</label>
78
+		<input type="text" name="ap_addr_mask" id="ap_addr_mask" value="255.255.255.0" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
79
+	</div>
80
+
81
+	<div class="Row">
82
+		<label for="ap_addr_ip">Own IP address</label>
83
+		<input type="text" name="ap_addr_ip" id="ap_addr_ip" value="192.168.4.1" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
84
+	</div>
85
+
86
+	<div class="Row">
87
+		<label for="ap_dhcp_start">Pool start IP</label>
88
+		<input type="text" name="ap_dhcp_start" id="ap_dhcp_start" value="192.168.4.100" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
89
+	</div>
90
+
91
+	<div class="Row">
92
+		<label for="ap_dhcp_end">Pool end IP</label>
93
+		<input type="text" name="ap_dhcp_end" id="ap_dhcp_end" value="192.168.4.200" pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$" required>
94
+	</div>
95
+
96
+	<div class="Row">
97
+		<label for="ap_dhcp_time">Lease time<span class="mq-phone">&nbsp;(min)</span></label>
98
+		<input type="number" step=1 min=1 max=2880 name="ap_dhcp_time" id="ap_dhcp_time" value="120" required>
99
+		<span class="mq-no-phone">&nbsp;min</span>
100
+	</div>
101
+
102
+	<div class="Row buttons">
103
+		<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()">Apply!</a>
104
+	</div>
105
+</form>
106
+
107
+<div class="Box mobcol">
108
+	<h2>MAC addresses</h2>
109
+
110
+	<div class="Row">
111
+		<label>Station MAC</label><input type="text" readonly value="5c:cf:7f:02:74:51">
112
+	</div>
113
+	<div class="Row">
114
+		<label>AP MAC</label><input type="text" readonly value="5e:cf:7f:02:74:51">
115
+	</div>
116
+</div>
117
+
118
+<script>
119
+	function updateStaticDisp() {
120
+		var sttc = !parseInt($('#sta_dhcp_enable').val());
121
+		$('.x-static').toggleClass('hidden', !sttc);
122
+	}
123
+	$('.x-static-toggle').on('click', function() {
124
+		setTimeout(function() {
125
+			updateStaticDisp();
126
+		}, 0)
127
+	});
128
+	updateStaticDisp();
129
+</script>
130
+
131
+<div class="botpad"></div>
132
+
133
+<div class="NotifyMsg hidden" id="notif"></div>
134
+
135
+</div>
136
+
137
+</div>
138
+
139
+</body>
140
+</html>

+ 139 - 0
cfg_system.html View File

@@ -0,0 +1,139 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>System Settings :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+					</script>
14
+</head>
15
+<body class="cfg">
16
+<div id="outer">
17
+<nav id="menu">
18
+	<div id="brand" tabindex=0>ESPTerm</div>
19
+	<a href="term.html" class="icn-back">Back to Terminal</a>
20
+	<a href="cfg_term.html" class="icn-terminal ">Terminal Settings</a><a href="cfg_wifi.html" class="icn-wifi ">WiFi Settings</a><a href="cfg_network.html" class="icn-network ">Network Settings</a><a href="cfg_system.html" class="icn-configure selected">System Settings</a><a href="help.html" class="icn-help ">Quick Reference</a><a href="about.html" class="icn-about ">About ESPTerm</a></nav>
21
+
22
+<script>
23
+	function menuOpen() { $('#menu').toggleClass('expanded') }
24
+	$('#brand').on('click', menuOpen).on('keypress', cr(menuOpen));
25
+</script>
26
+
27
+<div id="content">
28
+<img src="/img/loader.gif" alt="Loading…" id="loader">
29
+<h1>System Settings</h1>
30
+
31
+<div class="Box errors hidden">
32
+	<span class="lead">Validation errors for:</span>&nbsp;<span class="list"></span>
33
+</div>
34
+
35
+<div class="Box str mobcol">
36
+	<h2 tabindex=0>Save & Restore</h2>
37
+
38
+	<div class="Row explain nomargintop">
39
+		
40
+		ESPTerm contains two persistent memory banks, one for default and 
41
+		one for active settings. Active settings can be stored as defaults 
42
+		by the administrator (password required).
43
+			</div>
44
+
45
+	<div class="Row buttons2">
46
+		<a class="button icn-restore"
47
+		   onclick="return confirm('Restore all settings to their default values?');"
48
+		   href="restore_defaults.html">
49
+			Reset active settings to defaults		</a>
50
+	</div>
51
+
52
+	<div class="Row buttons2">
53
+		<a onclick="writeDefaults(); return false;" href="#">Save active settings as defaults</a>
54
+	</div>
55
+
56
+	<div class="Row buttons2">
57
+		<a onclick="return confirm('Restore to firmware default settings? This will reset all active settings and switch to AP mode with the default SSID.');"
58
+		   href="restore_hard.html">
59
+			Reset active settings to firmware defaults		</a>
60
+	</div>
61
+</div>
62
+
63
+
64
+<form class="Box str mobcol" action="system_set.html" method="GET" id="form-1">
65
+	<h2 tabindex=0>Serial Port</h2>
66
+
67
+	<div class="Row explain">
68
+		
69
+		This form controls the primary, communication UART. The debug UART is fixed at 115.200 baud, one stop-bit and no parity.
70
+			</div>
71
+
72
+	<div class="Row">
73
+		<label for="uart_baud">Baud rate<span class="mq-phone">&nbsp;(bps)</span></label>
74
+		<select name="uart_baud" id="uart_baud" class="short">
75
+			<option value="300">300</option>
76
+			<option value="600">600</option>
77
+			<option value="1200">1.200</option>
78
+			<option value="2400">2.400</option>
79
+			<option value="4800">4.800</option>
80
+			<option value="9600">9.600</option>
81
+			<option value="19200">19.200</option>
82
+			<option value="38400">38.400</option>
83
+			<option value="57600">57.600</option>
84
+			<option value="74880">74.880</option>
85
+			<option value="115200">115.200</option>
86
+			<option value="230400">230.400</option>
87
+			<option value="460800">460.800</option>
88
+			<option value="921600">921.600</option>
89
+			<option value="1843200">1.843.200</option>
90
+			<option value="3686400">3.686.400</option>
91
+					</select>
92
+		<span class="mq-no-phone">&nbsp;bps</span>
93
+	</div>
94
+
95
+	<div class="Row">
96
+		<label for="uart_parity">Parity</label>
97
+		<select name="uart_parity" id="uart_parity" class="short">
98
+			<option value="2">None</option>
99
+			<option value="1">Odd</option>
100
+			<option value="0">Even</option>
101
+					</select>
102
+	</div>
103
+
104
+	<div class="Row">
105
+		<label for="uart_stopbits">Stop-bits</label>
106
+		<select name="uart_stopbits" id="uart_stopbits" class="short">
107
+			<option value="1">One</option>
108
+			<option value="2">One and half</option>
109
+			<option value="3">Two</option>
110
+					</select>
111
+	</div>
112
+
113
+	<div class="Row buttons">
114
+		<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()">Apply!</a>
115
+	</div>
116
+</form>
117
+
118
+<script>
119
+	function writeDefaults() {
120
+		var pw = prompt('Enter admin password to confirm you want to store the current settings as defaults.');
121
+		if (!pw) return;
122
+		location.href = "write_defaults.html" + '?pw=' + pw;
123
+	}
124
+
125
+	$('#uart_baud').val(115200);
126
+	$('#uart_parity').val(2);
127
+	$('#uart_stopbits').val(1);
128
+</script>
129
+
130
+<div class="botpad"></div>
131
+
132
+<div class="NotifyMsg hidden" id="notif"></div>
133
+
134
+</div>
135
+
136
+</div>
137
+
138
+</body>
139
+</html>

+ 277 - 0
cfg_term.html View File

@@ -0,0 +1,277 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>Terminal Settings :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+					</script>
14
+</head>
15
+<body class="cfg">
16
+<div id="outer">
17
+<nav id="menu">
18
+	<div id="brand" tabindex=0>ESPTerm</div>
19
+	<a href="term.html" class="icn-back">Back to Terminal</a>
20
+	<a href="cfg_term.html" class="icn-terminal selected">Terminal Settings</a><a href="cfg_wifi.html" class="icn-wifi ">WiFi Settings</a><a href="cfg_network.html" class="icn-network ">Network Settings</a><a href="cfg_system.html" class="icn-configure ">System Settings</a><a href="help.html" class="icn-help ">Quick Reference</a><a href="about.html" class="icn-about ">About ESPTerm</a></nav>
21
+
22
+<script>
23
+	function menuOpen() { $('#menu').toggleClass('expanded') }
24
+	$('#brand').on('click', menuOpen).on('keypress', cr(menuOpen));
25
+</script>
26
+
27
+<div id="content">
28
+<img src="/img/loader.gif" alt="Loading…" id="loader">
29
+<h1>Terminal Settings</h1>
30
+
31
+<div class="Box errors hidden">
32
+	<span class="lead">Validation errors for:</span>&nbsp;<span class="list"></span>
33
+</div>
34
+
35
+<div class="Box">
36
+	<a href="reset_screen.html">Reset screen & parser</a>
37
+</div>
38
+
39
+<form class="Box mobopen str" action="term_set.html" method="GET" id='form-1'>
40
+	<h2>Initial Settings</h2>
41
+
42
+	<div class="Row explain">
43
+		
44
+		Those are the initial settings used after ESPTerm powers on or when the screen
45
+		reset command is received. Some options can be changed by the application via escape sequences, 
46
+		those changes won't be saved in Flash.
47
+			</div>
48
+
49
+	<div class="Row">
50
+		<label for="theme">Color scheme</label>
51
+		<select name="theme" id="theme" class="short" onchange="showColor()">
52
+			<option value="0">Tango</option>
53
+			<option value="1">Linux</option>
54
+			<option value="2">XTerm</option>
55
+			<option value="3">Rxvt</option>
56
+			<option value="4">Ambience</option>
57
+			<option value="5">Solarized</option>
58
+		</select>
59
+	</div>
60
+
61
+	<div class="Row color-preview">
62
+		<div class="colorprev">
63
+			<span data-fg=0 class="bg0 fg0">30</span><!--
64
+			--><span data-fg=1 class="bg0 fg1">31</span><!--
65
+			--><span data-fg=2 class="bg0 fg2">32</span><!--
66
+			--><span data-fg=3 class="bg0 fg3">33</span><!--
67
+			--><span data-fg=4 class="bg0 fg4">34</span><!--
68
+			--><span data-fg=5 class="bg0 fg5">35</span><!--
69
+			--><span data-fg=6 class="bg0 fg6">36</span><!--
70
+			--><span data-fg=7 class="bg0 fg7">37</span>
71
+		</div>
72
+
73
+		<div class="colorprev">
74
+			<span data-fg=8 class="bg0 fg8">90</span><!--
75
+			--><span data-fg=9 class="bg0 fg9">91</span><!--
76
+			--><span data-fg=10 class="bg0 fg10">92</span><!--
77
+			--><span data-fg=11 class="bg0 fg11">93</span><!--
78
+			--><span data-fg=12 class="bg0 fg12">94</span><!--
79
+			--><span data-fg=13 class="bg0 fg13">95</span><!--
80
+			--><span data-fg=14 class="bg0 fg14">96</span><!--
81
+			--><span data-fg=15 class="bg0 fg15">97</span>
82
+		</div>
83
+
84
+		<div class="colorprev">
85
+			<span data-bg=0 class="bg0 fg15">40</span><!--
86
+			--><span data-bg=1 class="bg1 fg15">41</span><!--
87
+			--><span data-bg=2 class="bg2 fg15">42</span><!--
88
+			--><span data-bg=3 class="bg3 fg0">43</span><!--
89
+			--><span data-bg=4 class="bg4 fg15">44</span><!--
90
+			--><span data-bg=5 class="bg5 fg15">45</span><!--
91
+			--><span data-bg=6 class="bg6 fg15">46</span><!--
92
+			--><span data-bg=7 class="bg7 fg0">47</span>
93
+		</div>
94
+
95
+		<div class="colorprev">
96
+			<span data-bg=8 class="bg8 fg15">100</span><!--
97
+			--><span data-bg=9 class="bg9 fg0">101</span><!--
98
+			--><span data-bg=10 class="bg10 fg0">102</span><!--
99
+			--><span data-bg=11 class="bg11 fg0">103</span><!--
100
+			--><span data-bg=12 class="bg12 fg0">104</span><!--
101
+			--><span data-bg=13 class="bg13 fg0">105</span><!--
102
+			--><span data-bg=14 class="bg14 fg0">106</span><!--
103
+			--><span data-bg=15 class="bg15 fg0">107</span>
104
+		</div>
105
+	</div>
106
+
107
+	<div class="Row color-preview">
108
+		<div style="
109
+		" id="color-example">
110
+			Default colors preview		</div>
111
+	</div>
112
+
113
+	<div class="Row">
114
+		<label>Text / background</label>
115
+		<select name="default_fg" id="default_fg" class="short" onchange="showColor()">
116
+						<option value="0">Black</option>
117
+						<option value="1">Red</option>
118
+						<option value="2">Green</option>
119
+						<option value="3">Yellow</option>
120
+						<option value="4">Blue</option>
121
+						<option value="5">Purple</option>
122
+						<option value="6">Cyan</option>
123
+						<option value="7">Silver</option>
124
+						<option value="8">Gray</option>
125
+						<option value="9">Light Red</option>
126
+						<option value="10">Light Green</option>
127
+						<option value="11">Light Yellow</option>
128
+						<option value="12">Light Blue</option>
129
+						<option value="13">Light Purple</option>
130
+						<option value="14">Light Cyan</option>
131
+						<option value="15">White</option>
132
+					</select>&nbsp;<!--
133
+		--><select name="default_bg" id="default_bg" class="short" onchange="showColor()">
134
+							<option value="0">Black</option>
135
+							<option value="1">Red</option>
136
+							<option value="2">Green</option>
137
+							<option value="3">Yellow</option>
138
+							<option value="4">Blue</option>
139
+							<option value="5">Purple</option>
140
+							<option value="6">Cyan</option>
141
+							<option value="7">Silver</option>
142
+							<option value="8">Gray</option>
143
+							<option value="9">Light Red</option>
144
+							<option value="10">Light Green</option>
145
+							<option value="11">Light Yellow</option>
146
+							<option value="12">Light Blue</option>
147
+							<option value="13">Light Purple</option>
148
+							<option value="14">Light Cyan</option>
149
+							<option value="15">White</option>
150
+					</select>
151
+	</div>
152
+
153
+	<div class="Row">
154
+		<label for="term_width">Width / height</label>
155
+		<input type="number" step=1 min=1 max=255 name="term_width" id="term_width" value="80" required>&nbsp;<!--
156
+		--><input type="number" step=1 min=1 max=255 name="term_height" id="term_height" value="25" required>
157
+	</div>
158
+
159
+	<div class="Row">
160
+		<label for="term_title">Header text</label>
161
+		<input type="text" name="term_title" id="term_title" value="TESPTerm Web UI Demo" required>
162
+	</div>
163
+
164
+	<div class="Row">
165
+		<label>Button labels</label>
166
+		<input class="short" type="text" name="btn1" id="btn1" value="OK">&nbsp;
167
+		<input class="short" type="text" name="btn2" id="btn2" value="Cancel">&nbsp;
168
+		<input class="short" type="text" name="btn3" id="btn3" value="">&nbsp;
169
+		<input class="short" type="text" name="btn4" id="btn4" value="">&nbsp;
170
+		<input class="short" type="text" name="btn5" id="btn5" value="Help">
171
+	</div>
172
+
173
+	<div class="Row buttons">
174
+		<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()">Apply!</a>
175
+	</div>
176
+</form>
177
+
178
+<form class="Box fold str" action="term_set.html" method="GET" id='form-2'>
179
+	<h2>Expert Options</h2>
180
+
181
+	<div class="Row explain">
182
+		
183
+		Those are advanced config options that usually don't need to be changed.
184
+		Edit them only if you know what you're doing.	</div>
185
+
186
+	<div class="Row">
187
+		<label for="parser_tout_ms">Parser timeout<span class="mq-phone">&nbsp;(ms)</span></label>
188
+		<input type="number" step=1 min=0 name="parser_tout_ms" id="parser_tout_ms" value="10" required>
189
+		<span class="mq-no-phone">&nbsp;ms</span>
190
+	</div>
191
+
192
+	<div class="Row">
193
+		<label for="display_tout_ms">Redraw delay<span class="mq-phone">&nbsp;(ms)</span></label>
194
+		<input type="number" step=1 min=0 name="display_tout_ms" id="display_tout_ms" value="15" required>
195
+		<span class="mq-no-phone">&nbsp;ms</span>
196
+	</div>
197
+
198
+	<div class="Row">
199
+		<label for="display_cooldown_ms">Redraw cooldown<span class="mq-phone">&nbsp;(ms)</span></label>
200
+		<input type="number" step=1 min=0 name="display_cooldown_ms" id="display_cooldown_ms" value="35" required>
201
+		<span class="mq-no-phone">&nbsp;ms</span>
202
+	</div>
203
+
204
+	<div class="Row">
205
+		<label>Button codes<br>(ASCII, dec, CSV)</label>
206
+		<input class="short" type="text" name="bm1" id="bm1" value="01,121">&nbsp;
207
+		<input class="short" type="text" name="bm2" id="bm2" value="01,110">&nbsp;
208
+		<input class="short" type="text" name="bm3" id="bm3" value="">&nbsp;
209
+		<input class="short" type="text" name="bm4" id="bm4" value="">&nbsp;
210
+		<input class="short" type="text" name="bm5" id="bm5" value="05">
211
+	</div>
212
+
213
+	<div class="Row checkbox" >
214
+		<label>SS3 Fn keys</label><!--
215
+		--><span class="box" tabindex=0 role=checkbox></span>
216
+		<input type="hidden" id="fn_alt_mode" name="fn_alt_mode" value="1">
217
+	</div>
218
+
219
+	<div class="Row checkbox" >
220
+		<label>Show buttons</label><!--
221
+		--><span class="box" tabindex=0 role=checkbox></span>
222
+		<input type="hidden" id="show_buttons" name="show_buttons" value="1">
223
+	</div>
224
+
225
+	<div class="Row checkbox" >
226
+		<label>Show nav links</label><!--
227
+		--><span class="box" tabindex=0 role=checkbox></span>
228
+		<input type="hidden" id="show_config_links" name="show_config_links" value="1">
229
+	</div>
230
+
231
+	<div class="Row checkbox" >
232
+		<label>Local Echo</label><!--
233
+		--><span class="box" tabindex=0 role=checkbox></span>
234
+		<input type="hidden" id="loopback" name="loopback" value="">
235
+	</div>
236
+
237
+	<div class="Row buttons">
238
+		<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()">Apply!</a>
239
+	</div>
240
+</form>
241
+
242
+<script>
243
+	$('#default_fg').val(7);
244
+	$('#default_bg').val(0);
245
+	$('#theme').val(0);
246
+
247
+	function showColor() {
248
+		var ex = qs('#color-example');
249
+		ex.className = '';
250
+		ex.classList.add('fg'+$('#default_fg').val());
251
+		ex.classList.add('bg'+$('#default_bg').val());
252
+		var th = $('#theme').val();
253
+		$('.color-preview').forEach(function(e) {
254
+			e.className = 'Row color-preview theme-'+th;
255
+		});
256
+	}
257
+	showColor();
258
+
259
+	$('.colorprev span').on('click', function() {
260
+		var fg = this.dataset.fg;
261
+		var bg = this.dataset.bg;
262
+		if (typeof fg != 'undefined') $('#default_fg').val(fg);
263
+		if (typeof bg != 'undefined') $('#default_bg').val(bg);
264
+		showColor()
265
+	});
266
+</script>
267
+
268
+<div class="botpad"></div>
269
+
270
+<div class="NotifyMsg hidden" id="notif"></div>
271
+
272
+</div>
273
+
274
+</div>
275
+
276
+</body>
277
+</html>

+ 165 - 0
cfg_wifi.html View File

@@ -0,0 +1,165 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>WiFi Settings :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+				var _demo_aps = "{\n \"result\": {\n  \"inProgress\": 0,\n  \"APs\": [\n   {\"essid\": \"Cisco\", \"bssid\": \"88:f7:c7:52:b3:99\", \"rssi\": 205, \"rssi_perc\": 100, \"enc\": 4, \"channel\": 7},\n   {\"essid\": \"UPC Wi-Free\", \"bssid\": \"8a:f7:c7:52:b3:9b\", \"rssi\": 203, \"rssi_perc\": 100, \"enc\": 5, \"channel\": 1},\n   {\"essid\": \"UPC Wi-Free\", \"bssid\": \"0a:95:2a:0c:84:31\", \"rssi\": 166, \"rssi_perc\": 32, \"enc\": 5, \"channel\": 1},\n   {\"essid\": \"MujO2Internet_2EEB96\", \"bssid\": \"d0:60:8c:2e:eb:96\", \"rssi\": 174, \"rssi_perc\": 48, \"enc\": 4, \"channel\": 4},\n   {\"essid\": \"Internet\", \"bssid\": \"38:72:c0:32:bd:0d\", \"rssi\": 164, \"rssi_perc\": 28, \"enc\": 2, \"channel\": 10},\n   {\"essid\": \"MyO2Internet_08C850\", \"bssid\": \"78:c1:a7:08:c8:50\", \"rssi\": 186, \"rssi_perc\": 72, \"enc\": 4, \"channel\": 11},\n   {\"essid\": \"UPC Wi-Free\", \"bssid\": \"06:7c:34:9a:6f:7c\", \"rssi\": 167, \"rssi_perc\": 34, \"enc\": 0, \"channel\": 11},\n   {\"essid\": \"Internet_B0\", \"bssid\": \"5c:f4:ab:11:3b:b3\", \"rssi\": 175, \"rssi_perc\": 50, \"enc\": 3, \"channel\": 13},\n   {\"essid\": \"UPC5716805\", \"bssid\": \"08:95:2a:0c:84:3f\", \"rssi\": 165, \"rssi_perc\": 30, \"enc\": 4, \"channel\": 1}\n    ]\n }\n}";	</script>
14
+</head>
15
+<body class="cfg">
16
+<div id="outer">
17
+<nav id="menu">
18
+	<div id="brand" tabindex=0>ESPTerm</div>
19
+	<a href="term.html" class="icn-back">Back to Terminal</a>
20
+	<a href="cfg_term.html" class="icn-terminal ">Terminal Settings</a><a href="cfg_wifi.html" class="icn-wifi selected">WiFi Settings</a><a href="cfg_network.html" class="icn-network ">Network Settings</a><a href="cfg_system.html" class="icn-configure ">System Settings</a><a href="help.html" class="icn-help ">Quick Reference</a><a href="about.html" class="icn-about ">About ESPTerm</a></nav>
21
+
22
+<script>
23
+	function menuOpen() { $('#menu').toggleClass('expanded') }
24
+	$('#brand').on('click', menuOpen).on('keypress', cr(menuOpen));
25
+</script>
26
+
27
+<div id="content">
28
+<img src="/img/loader.gif" alt="Loading…" id="loader">
29
+<h1>WiFi Settings</h1>
30
+
31
+<div class="Box errors hidden">
32
+	<span class="lead">Validation errors for:</span>&nbsp;<span class="list"></span>
33
+</div>
34
+
35
+<form class="Box str mobcol" action="wifi_set.html" method="GET" id="form-1">
36
+	<h2 tabindex=0>Built-in Access Point</h2>
37
+
38
+	<div class="Row checkbox x-ap-toggle">
39
+		<label>Enabled</label><!--
40
+		--><span class="box" tabindex=0></span>
41
+		<input type="hidden" id="ap_enabled" name="ap_enable" value="1">
42
+	</div>
43
+
44
+	<div class="Row x-ap-on">
45
+		<label for="ap_ssid">AP SSID</label>
46
+		<input type="text" name="ap_ssid" id="ap_ssid" value="TERM-027451" required>
47
+	</div>
48
+
49
+	<div class="Row x-ap-on">
50
+		<label for="ap_password">Password</label>
51
+		<input type="text" name="ap_password" id="ap_password" value="">
52
+	</div>
53
+
54
+	<div class="Row x-ap-on">
55
+		<label for="ap_channel">Channel</label>
56
+		<input type="number" name="ap_channel" id="ap_channel" min=1 max=14 value="7" required>
57
+	</div>
58
+
59
+	<div class="Row range x-ap-on">
60
+		<label for="tpw">
61
+			Transmit power			<span class="display x-disp1 mq-phone"></span>
62
+		</label>
63
+		<input type="range" name="tpw" id="tpw" step=1 min=0 max=82 value="60">
64
+		<span class="display x-disp2 mq-no-phone"></span>
65
+	</div>
66
+
67
+	<div class="Row checkbox x-ap-on">
68
+		<label>Hide SSID</label><!--
69
+		--><span class="box" tabindex=0></span>
70
+		<input type="hidden" name="ap_hidden" value="0">
71
+	</div>
72
+
73
+	<div class="Row buttons">
74
+		<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()">Apply!</a>
75
+	</div>
76
+</form>
77
+
78
+<form class="Box str mobcol expanded" action="wifi_set.html" method="GET" id="form-2">
79
+	<h2 tabindex=0>Join Existing Network</h2>
80
+
81
+	<div class="Row checkbox x-sta-toggle">
82
+		<label>Enabled</label><!--
83
+		--><span class="box" tabindex=0></span>
84
+		<input type="hidden" id="sta_enabled" name="sta_enable" value="1">
85
+	</div>
86
+
87
+	<div class="Row explain nomargintop x-sta-on">
88
+		<span class="spacer"></span>
89
+		After selecting a network, press Apply to connect.	</div>
90
+
91
+	<input type="hidden" name="sta_ssid" id="sta_ssid" value="">
92
+	<input type="hidden" name="sta_password" id="sta_password" value="">
93
+
94
+	<div class="Row sta-info x-sta-on">
95
+		<label>Selected</label>
96
+		<div class="AP-preview hidden" id="sta-nw">
97
+			<div class="wrap">
98
+				<div class="inner">
99
+					<div class="essid"></div>
100
+					<div class="passwd">🔒 Password saved</div>
101
+					<div class="nopasswd">🔓 Open access</div>
102
+					<div class="ip"></div>
103
+				</div>
104
+				<a class="forget" href="#" id="forget-sta">×</a>
105
+			</div>
106
+		</div>
107
+		<div class="AP-preview-nil" id="sta-nw-nil">
108
+			None		</div>
109
+	</div>
110
+
111
+	<div id="ap-box" class="x-sta-on">
112
+		<label>Available networks:</label>
113
+		<div id="ap-scan"><a href="#" onclick="WiFi.startScanning(); return false">Click here to start scanning!</a></div>
114
+		<div id="ap-loader" class="hidden">Scanning<span class="anim-dots">.</span></div>
115
+		<div id="ap-list" class="hidden"></div>
116
+	</div>
117
+
118
+	<div class="Row buttons">
119
+		<a class="button icn-ok" href="#" onclick="qs('#form-2').submit()">Apply!</a>
120
+	</div>
121
+</form>
122
+
123
+<script>
124
+	WiFi.scan_url = '/cfg/wifi/scan';
125
+	WiFi.init({
126
+		sta_ssid: 'Cisco',
127
+		sta_password: 'Passw0rd!',
128
+		sta_active_ip: '192.168.82.66',
129
+		sta_active_ssid: 'Cisco',
130
+	});
131
+
132
+	function updateApDisp() {
133
+		var a = !!parseInt($('#ap_enabled').val());
134
+		$('.x-ap-on').toggleClass('hidden', !a);
135
+	}
136
+	$('.x-ap-toggle').on('click', function() {
137
+		setTimeout(function() {
138
+			updateApDisp();
139
+		}, 0)
140
+	});
141
+
142
+	function updateStaDisp() {
143
+		var a = !!parseInt($('#sta_enabled').val());
144
+		$('.x-sta-on').toggleClass('hidden', !a);
145
+	}
146
+	$('.x-sta-toggle').on('click', function() {
147
+		setTimeout(function() {
148
+			updateStaDisp();
149
+		}, 0)
150
+	});
151
+
152
+	updateApDisp();
153
+	updateStaDisp();
154
+</script>
155
+
156
+<div class="botpad"></div>
157
+
158
+<div class="NotifyMsg hidden" id="notif"></div>
159
+
160
+</div>
161
+
162
+</div>
163
+
164
+</body>
165
+</html>

+ 120 - 0
cfg_wifi_conn.html View File

@@ -0,0 +1,120 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>Connecting to Network :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+					</script>
14
+</head>
15
+<body class="">
16
+<div id="outer">
17
+
18
+<div id="content">
19
+<img src="/img/loader.gif" alt="Loading…" id="loader">
20
+<h1>Connecting to Network</h1>
21
+
22
+<div class="Box">
23
+	<p><b>Status:</b> <span id="status"></span><span class="anim-dots">.</span></p>
24
+	<a href="cfg_wifi.html" id="backbtn" class="button">Back to WiFi config</a>
25
+</div>
26
+
27
+<div class="Box">
28
+	<p>
29
+		If you're configuring ESPTerm via a smartphone, or were connected
30
+		from another external network, your device may lose connection and this 
31
+		progress indicator won't work. Please wait a while (~ 15 seconds), 
32
+		then check if the connection succeeded.</p>
33
+	<p>
34
+		To force enable the built-in AP, hold the BOOT 
35
+		button until the blue LED starts flashing. Hold the button longer (until the LED 
36
+		flashes rapidly) for a "factory reset".</p>
37
+</div>
38
+
39
+<script>
40
+	var xhr = new XMLHttpRequest();
41
+	var abortTmeo;
42
+	var failCounter = 0;
43
+
44
+	var messages = {"disabled":"Station mode is disabled.","idle":"Idle, not connected and has no IP.","success":"Connected! Received IP ","working":"Connecting to selected AP","fail":"Connection failed, check settings & try again. Cause: "};
45
+
46
+	function onFail() {
47
+		$("#status").html("Telemetry lost; something went wrong, or your device disconnected.");
48
+		$('.anim-dots').addClass('hidden');
49
+	}
50
+
51
+	function getStatus() {
52
+		xhr.open("GET", 'http://'+_root+'/cfg/wifi/connstatus');
53
+		xhr.onreadystatechange = function () {
54
+			if (xhr.readyState == 4) {
55
+				if (xhr.status == 200) {
56
+					clearTimeout(abortTmeo);
57
+
58
+					try {
59
+						var data = JSON.parse(xhr.responseText);
60
+						var done = false;
61
+						var msg = messages[data.status] || '...';
62
+
63
+						if (data.status == 'success') {
64
+							msg += data.ip;
65
+							done = true;
66
+						}
67
+
68
+						if (data.status == 'fail') {
69
+							msg += data.cause;
70
+							done = true;
71
+						}
72
+
73
+						$("#status").html(msg);
74
+
75
+						if (done) {
76
+//					        $('#backbtn').removeClass('hidden');
77
+							$('.anim-dots').addClass('hidden');
78
+						} else {
79
+							// ask again after a short delay
80
+							window.setTimeout(getStatus, 1000);
81
+						}
82
+					} catch(e) {
83
+						failCounter++;
84
+						console.log(e);
85
+						// repeat
86
+						if (failCounter > 5) {
87
+							onFail();
88
+						}
89
+						else {
90
+							window.setTimeout(getStatus, 1000);
91
+						}
92
+					}
93
+				} else {
94
+					onFail();
95
+				}
96
+			}
97
+		};
98
+
99
+		// XHR timeout
100
+		abortTmeo = setTimeout(function () {
101
+			xhr.abort();
102
+			onFail();
103
+		}, 4000);
104
+
105
+		xhr.send();
106
+	}
107
+
108
+	getStatus();
109
+</script>
110
+
111
+<div class="botpad"></div>
112
+
113
+<div class="NotifyMsg hidden" id="notif"></div>
114
+
115
+</div>
116
+
117
+</div>
118
+
119
+</body>
120
+</html>

File diff suppressed because it is too large
+ 1810 - 0
css/app.css


BIN
favicon.ico View File


File diff suppressed because it is too large
+ 959 - 0
help.html


File diff suppressed because it is too large
+ 5 - 0
img/cvut.svg


BIN
img/loader.gif View File


BIN
img/vt100.jpg View File


+ 1 - 1
index.html View File

@@ -1 +1 @@
1
-this is a test file
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

File diff suppressed because it is too large
+ 2533 - 0
js/app.js


+ 1 - 0
network_set.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
reset_screen.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
restore_defaults.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
restore_hard.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
system_set.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 123 - 0
term.html View File

@@ -0,0 +1,123 @@
1
+<!doctype html>
2
+<html>
3
+<head>
4
+	<meta charset="utf-8">
5
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+	<title>Terminal :: ESPTerm</title>
8
+	<link href="/css/app.css" rel="stylesheet">
9
+	<script src="/js/app.js"></script>
10
+	<script>
11
+		var _root = location.host;
12
+		var _demo = 1;
13
+		var _demo_screen = "S\u0019\u0001Q\u0001\u0017\u0001K\u0001\u0015\u0004\u0003\b\u0001 \u0002P\u0001┌ESPTerm─Demo─\u0002\u0002\u0001\u0003\u0002\u000131\u0003\u0003\u000132\u0003\u0004\u00013\u0002\u0002\u0001\u0003\u0005\u000134\u0003\u0006\u000135\u0003\u0007\u000136\u0003\b\u000137\u0003\t\u000190\u0003\n\u000191\u0003\u000b\u000192\u0003\f\u000193\u0003\r\u000194\u0003\u000e\u000195\u0003\u000f\u000196\u0003\u0010\u000197\u0003\b\u0001─\u0002\r\u0001┐ \u0002\u0015\u0001│ \u00029\u0001│ \u0002\u0004\u0001│\u0002\t\u0001 \u0002\b\u0001│\u0004\u0002\u0001Bold \u0004\u0003\u0001F\u0004\u0003\u0001a\u0004\u0003\u0001i\u0004\u0003\u0001n\u0004\u0003\u0001t\u0004\u0003\u0001 \u0004\u0005\u0001I\u0004\u0005\u0001t\u0004\u0005\u0001a\u0004\u0005\u0001l\u0004\u0005\u0001i\u0004\u0005\u0001c\u0004\u0005\u0001 \u0004\t\u0001U\u0004\t\u0001n\u0004\t\u0001d\u0004\t\u0001e\u0004\t\u0001r\u0004\t\u0001l\u0004\t\u0001i\u0004\t\u0001n\u0004\t\u0001e\u0004\u0001\u0001 \u0004\u0011\u0001B\u0004\u0011\u0001l\u0004\u0011\u0001i\u0004\u0011\u0001n\u0004\u0011\u0001k\u0004\u0011\u0001 \u0001q\u0001\u0001Inverse\u0003\b\u0001 \u0004A\u0001S\u0004A\u0001t\u0004A\u0001r\u0004A\u0001i\u0004A\u0001k\u0004A\u0001e\u0004\u0001\u0001 \u0004!\u0001F\u0004!\u0001r\u0004!\u0001a\u0004!\u0001k\u0004!\u0001t\u0004!\u0001u\u0004!\u0001r\u0004\u0001\u0001 │ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0002\t\u0001\u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0006\u0001│ \u00029\u0001│ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0003\u0002\u0002ESP826\u0002\u0002\u0001\u0003\n\u0002 \u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0006\u0001└─\u00029\u0001┤ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0002\t\u0001\u0003\b\u0001─\u0002\u0002\u0001 \u0002@\u0001│ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0003\u0002\u0002(@)#\u0002\u0004\u0001\u0003\n\u0002 \u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0007\u0001\u0003O\u0001 This is a static demo of the ESPTerm Web Interface \u0002\u0004\u0001\u0003\b\u0001 \u0002\u0002\u0001│ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0002\t\u0001\u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0007\u0001\u0003O\u0001 \u00027\u0001\u0003\b\u0001 \u0002\u0002\u0001│ \u0002\u0004\u0001│\u0002\t\u0001 \u0002\t\u0001\u0003O\u0001 Try the links beneath this scre\u0002\u0002\u0001n to browse the menu. \u0003\b\u0001 \u0002\u0002\u0001♦ \u0002\u0016\u0001\u0003O\u0001 \u00027\u0001\u0003\b\u0001 \u0002\u0019\u0001\u0003O\u0001 <°)\u0002\u0003\u0001>< ESPTerm ful\u0002\u0002\u0001y sup\u0002\u0002\u0001orts UTF-8 お は よ ー \u0002\u0002\u0001><(\u0002\u0003\u0001°> \u0003\b\u0001 \u0002\u0019\u0001\u0003O\u0001 \u00027\u0001\u0003\b\u0001 \u0002i\u0001\u0003\u000b\u0001Other interesting features:\u0003\b\u0001 \u0002\u0018\u0001↓ \u0002n\u0001\u0003\u0003\u0001- Almost ful\u0002\u0002\u0001 VT10\u0002\u0002\u0001 emulation \u0003\b\u0001 \u0003\u0006\u0001()\u0003\b\u0001 \u0003\u0006\u0001()\u0003\b\u0001 \u0002\b\u0001Funguje tu čeština! \u0002\u0011\u0001\u0003\u0005\u0001- Xterm-like mouse tracking\u0003\b\u0001 \u0002\u0003\u0001=\u0002\u0002\u0001\u0003\t\u0002°.°\u0003\b\u0001=\u0002\u0002\u0001 \u0003\u0006\u0001<-\u0002\u0003\u0001, \u0003\b\u0001 \u0002$\u0001\u0003\u0004\u0001- File upload utility\u0003\b\u0001 \u0002\n\u0001'\u0002\u0002\u0001 '\u0002\u0002\u0001 \u0002\u0002\u0001\u0003\u0006\u0001 \u0002\u0004\u0001mouse\u0003\b\u0001 \u0002!\u0001\u0003\u0002\u0001- User-friendly config interface\u0003\b\u0001 \u00020\u0001\u0003\u000e\u0001-\u0003\u0002\u0001 \u0003\u000e\u0001Advanced WiFi & network set\u0002\u0002\u0001ings\u0003\b\u0001 \u0002\u0011\u0001\u0003\f\u0001Try ESPTerm today!\u0003\b\u0001 \u0002\u000b\u0001- Built-in help page \u0002\u001a\u0001\u0003\u0007\u0001-\u0002\u0002\u0001>\u0003\b\u0001 \u0002\u0002\u0001\u0003\f\u0001Pre-built binaries\u0003\b\u0001 \u0003\f\u0001are\u0003\b\u0001 \u0002\"\u0001\u0003\u0007\u0001link on the About page \u0002\u0002\u0001\u0003\f\u0001available on GitHub! \u0003\b\u0001 \u0002U\u0001";			</script>
14
+</head>
15
+<body class="term">
16
+<div id="outer">
17
+
18
+<div id="content">
19
+<img src="/img/loader.gif" alt="Loading…" id="loader">
20
+<script>
21
+	// Workaround for badly loaded page
22
+	setTimeout(function() {
23
+		if (typeof termInit == 'undefined' || typeof $ == 'undefined') {
24
+			console.error("Page load failed, refreshing…");
25
+			location.reload(true);
26
+		}
27
+	}, 3000);
28
+</script>
29
+
30
+<div class="Modal light hidden" id="fu_modal">
31
+	<div id="fu_form" class="Dialog">
32
+		<div class="fu-content">
33
+			<h2>Text Upload</h2>
34
+			<p>
35
+				<label for="fu_file">Load a text file:</label>
36
+				<input type="file" id="fu_file" accept="text/*" /><br>
37
+				<textarea id="fu_text"></textarea>
38
+			</p>
39
+			<p>
40
+				<label for="fu_crlf">Line Endings:</label>
41
+				<select id="fu_crlf">
42
+					<option value="CR">CR (Enter key)</option>
43
+					<option value="CRLF">CR LF (Windows)</option>
44
+					<option value="LF">LF (Linux)</option>
45
+				</select>
46
+			</p>
47
+			<p>
48
+				<label for="fu_delay">Line Delay (ms):</label>
49
+				<input id="fu_delay" type="number" value=1 min=0>
50
+			</p>
51
+		</div>
52
+		<div class="fu-buttons">
53
+			<button onclick="TermUpl.start()" class="icn-ok x-fu-go">Start</button>&nbsp;
54
+			<button onclick="TermUpl.close()" class="icn-cancel x-fu-cancel">Cancel</button>&nbsp;
55
+			<i class="fu-prog-box">Upload: <span id="fu_prog"></span></i>
56
+		</div>
57
+	</div>
58
+</div>
59
+
60
+<h1><!-- Screen title gets loaded here by JS --></h1>
61
+
62
+<div id="term-wrap">
63
+	<div id="screen" class="theme-0"></div>
64
+
65
+	<div id="action-buttons">
66
+		<button data-n="1"></button><!--
67
+		--><button data-n="2"></button><!--
68
+		--><button data-n="3"></button><!--
69
+		--><button data-n="4"></button><!--
70
+		--><button data-n="5"></button>
71
+	</div>
72
+</div>
73
+
74
+<textarea id="softkb-input" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>
75
+
76
+<nav id="term-nav">
77
+	<a href="#" onclick="kbOpen(true);return false" class="mq-tablet-max"><i class="icn-keyboard"></i><span>Keyboard</span></a><!--
78
+	--><a href="#" onclick="TermUpl.open();return false"><i class="icn-download"></i><span>Upload</a><!--
79
+	--><a href="cfg_term.html" class="x-term-conf-btn"><i class="icn-configure"></i><span>Config</span></a><!--
80
+	--><a href="cfg_wifi.html" class="x-term-conf-btn"><i class="icn-wifi"></i><span>WiFi</span></a><!--
81
+	--><a href="help.html" class="x-term-conf-btn"><i class="icn-help"></i><span>Help</span></a><!--
82
+	--><a href="about.html" class="x-term-conf-btn"><i class="icn-about"></i><span>About</span></a>
83
+</nav>
84
+
85
+<script>
86
+	try {
87
+		window.noAutoShow = true;
88
+		termInit(); // the screen will be loaded via ajax
89
+		Screen.load('TESPTerm Web UI Demo\u0001OK\u0001Cancel\u0001\u0001\u0001Help');
90
+
91
+		// auto-clear the input box
92
+		$('#softkb-input').on('input', function(e) {
93
+			setTimeout(function(){
94
+				var str = $('#softkb-input').val();
95
+				$('#softkb-input').val('');
96
+				Input.sendString(str);
97
+			}, 1);
98
+		});
99
+	} catch(e) {
100
+		console.error(e);
101
+		console.error("Fail, reloading in 3s…");
102
+		setTimeout(function() {
103
+			location.reload(true);
104
+		}, 3000);
105
+	}
106
+
107
+	function kbOpen(yes) {
108
+		var i = qs('#softkb-input');
109
+		if (yes) i.focus();
110
+		else i.blur();
111
+	}
112
+</script>
113
+
114
+<div class="botpad"></div>
115
+
116
+<div class="NotifyMsg hidden" id="notif"></div>
117
+
118
+</div>
119
+
120
+</div>
121
+
122
+</body>
123
+</html>

+ 1 - 0
term_set.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
wifi_connstatus.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
wifi_scan.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
wifi_set.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">

+ 1 - 0
write_defaults.html View File

@@ -0,0 +1 @@
1
+<!DOCTYPE HTML><meta http-equiv="refresh" content="0;url=term.html">