mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-12 13:08:13 +08:00
374 lines
11 KiB
HTML
374 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html" charset="utf-8">
|
|
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport">
|
|
<title>Welcom TC1</title>
|
|
<style type="text/css">
|
|
fieldset{margin-bottom:10px;border:#000 solid 1px;}
|
|
input,select,button{padding:5px;background:white;border:#777 solid 1px;}
|
|
button{background:none;border:1px #777 solid;}
|
|
button:disabled,select:disabled,input:disabled{background:#bfbfbf;}
|
|
td{padding:5px;}
|
|
.socket input,.mode input{margin-right:-4px;}
|
|
.submit{padding:5px;margin-top:5px;}
|
|
.success{color:#58dc5c;}
|
|
.error{color:#ff2d2d;}
|
|
.info{color:#e700ea;}
|
|
.network div{padding:5px;}
|
|
.connect div{padding:5px;}
|
|
.right{text-align:right;}
|
|
.line{height:9px;border-bottom:1px solid #dedede;}
|
|
.line_0{border:none;}
|
|
#power_div{margin-top:10px;border-left:1px solid #000;border-bottom:1px solid #000;}
|
|
#power_line{height:100px;position:relative;overflow:scroll;margin-top:-100px;}
|
|
.power_pre{position:absolute;bottom:0;float:left;height:76px;width:0;border-left:1px solid #00ffff38;border-top:1px solid #000;}
|
|
.power_by{text-align:center;}
|
|
.power_by a{text-decoration:none;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<fieldset class="socket">
|
|
<legend>Power Controll</legend>
|
|
<table id="socket_tb">
|
|
<tr>
|
|
<td>
|
|
<input type="checkbox" id="socket1" name="socket">
|
|
<label for="socket1">Socket-1</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="socket2" name="socket">
|
|
<label for="socket2">Socket-2</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="socket3" name="socket">
|
|
<label for="socket3">Socket-3</label>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<input type="checkbox" id="socket4" name="socket">
|
|
<label for="socket4">Socket-4</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="socket5" name="socket">
|
|
<label for="socket5">Socket-5</label>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" id="socket6" name="socket">
|
|
<label for="socket6">Socket-6</label>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div class="submit">
|
|
<button class="submit_bt" onclick="SetSocket()">Submit</button>
|
|
<span class="status_sp success">OK</span>
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="chart">
|
|
<legend>Power Status</legend>
|
|
<div id="power_div">
|
|
<div class="line line_10"></div>
|
|
<div class="line line_9"></div>
|
|
<div class="line line_8"></div>
|
|
<div class="line line_7"></div>
|
|
<div class="line line_6"></div>
|
|
<div class="line line_5"></div>
|
|
<div class="line line_4"></div>
|
|
<div class="line line_3"></div>
|
|
<div class="line line_2"></div>
|
|
<div class="line line_1"></div>
|
|
<div class="line line_0"></div>
|
|
</div>
|
|
<div id="power_line">
|
|
<!-- <div class="power_pre" style="height:70px;left:20px;"></div> -->
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="network">
|
|
<legend>Network config</legend>
|
|
<table>
|
|
<tr>
|
|
<td class="right">SSID:</td>
|
|
<td>
|
|
<select id="wifi" onchange="SelectWifi()">
|
|
<option value="0">Manual</option>
|
|
</select>
|
|
<button id="rescan" onclick="Rescan()">Rescan</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="right">SSID:</td>
|
|
<td>
|
|
<input id="ssid" type="text" onchange="ChangeInput(1)"/>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="right">PSWD:</td>
|
|
<td>
|
|
<input id="pswd" type="password" onchange="ChangeInput(2)"/>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="right">MODE:</td>
|
|
<td class="mode">
|
|
<input type="radio" id="mode1" name="mode" onchange="ChangeMode(0)">
|
|
<label for="mode1">AP</label>
|
|
<input type="radio" id="mode2" name="mode" onchange="ChangeMode(1)">
|
|
<label for="mode2">STATION</label>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div class="submit">
|
|
<button class="submit_bt" onclick="SubmitNetwork()">Submit</button>
|
|
<span class="status_sp success">OK</span>
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="connect">
|
|
<legend>Connect Status</legend>
|
|
<table>
|
|
<tr>
|
|
<td class="right">IP:</td>
|
|
<td class="info" id="ip"></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="right">Mask:</td>
|
|
<td class="info" id="mask"></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="right">Gateway:</td>
|
|
<td class="info" id="gateway"></td>
|
|
</tr>
|
|
</table>
|
|
</fieldset>
|
|
|
|
<p class="power_by">power by <a href="https://github.com/zogodo/zTC1" target="_blank">github/zTC1</a></p>
|
|
|
|
<script type="text/javascript">
|
|
|
|
function Ajax(url, onsuccess, type, data) {
|
|
var xml_http = new XMLHttpRequest();
|
|
xml_http.open(type, url, true);
|
|
xml_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
|
xml_http.onreadystatechange = function () {
|
|
if (xml_http.readyState == 4) {
|
|
if (xml_http.status == 200) {
|
|
onsuccess(xml_http.responseText.replace(/'/g, '"'));
|
|
}
|
|
else {
|
|
alert("Ajax error: " + xml_http.status);
|
|
}
|
|
}
|
|
};
|
|
if (data != null && type == "POST") {
|
|
xml_http.send(data);
|
|
} else {
|
|
xml_http.send();
|
|
}
|
|
}
|
|
function HttpGet(url, onsuccess) {
|
|
Ajax(url, onsuccess, "GET", null);
|
|
}
|
|
function HttpPost(url, onsuccess, data) {
|
|
Ajax(url, onsuccess, "POST", data);
|
|
}
|
|
|
|
var submit_bts = document.getElementsByClassName("submit_bt");
|
|
var info_spans = document.getElementsByClassName("status_sp");
|
|
|
|
var socket_tb = document.getElementById("socket_tb");
|
|
var checkboxs = socket_tb.getElementsByTagName("input");
|
|
|
|
var power_line = document.getElementById("power_line");
|
|
|
|
var rescan_btn = document.getElementById("rescan");
|
|
var ssid_slt = document.getElementById("wifi");
|
|
var ssid_ipt = document.getElementById("ssid");
|
|
var pswd_ipt = document.getElementById("pswd");
|
|
var mode_rd1 = document.getElementById("mode1");
|
|
var mode_rd2 = document.getElementById("mode2");
|
|
|
|
var info_ip = document.getElementById("ip");
|
|
var info_mask = document.getElementById("mask");
|
|
var info_gateway = document.getElementById("gateway");
|
|
|
|
var mode = -1;
|
|
var ap_name = "";
|
|
var ap_pswd = "";
|
|
var station_name = "";
|
|
var station_pswd = "";
|
|
HttpGet("/status", function (re) {
|
|
//re = "{'sockets':'%s','mode':%d,'station_ssid':'%s','station_pwd':'%s','ap_ssid':'%s','ap_pwd':'%s'}"
|
|
var status = JSON.parse(re);
|
|
var status_arr = status.sockets.split(",");
|
|
for (var i = 0; i < status_arr.length; i++) {
|
|
checkboxs[i].checked = status_arr[i] == "1";
|
|
station_name = status.station_ssid;
|
|
station_pswd = status.station_pwd;
|
|
ap_name = status.ap_ssid;
|
|
ap_pswd = status.ap_pwd;
|
|
//mode = status.mode;
|
|
ChangeMode(status.mode);
|
|
|
|
info_ip.innerHTML = status.ip
|
|
info_mask.innerHTML = status.mask
|
|
info_gateway.innerHTML = status.gateway
|
|
}
|
|
});
|
|
|
|
var first_load_power = true;
|
|
var power_idx = 1;
|
|
var position = 0;
|
|
function GetPowerRecord() {
|
|
HttpPost("/power", function (re) {
|
|
var power = JSON.parse(re);
|
|
power_idx = power.idx + 1;
|
|
var html = "";
|
|
//2500 对数底数 1.0813826568
|
|
var b = Math.log(1.0813826568);
|
|
for (var i = 0; i < power.powers.length; i++) {
|
|
var a = Math.log(power.powers[i]);
|
|
html += "<div class='power_pre' style='height:"+(a/b)+"px;left:"+position+"px;'></div>";
|
|
position += 1;
|
|
}
|
|
if (power.powers.length != 0) {
|
|
power_line.innerHTML += html;
|
|
power_line.scrollTo(power_line.scrollWidth, 0);
|
|
}
|
|
//滑动到最后
|
|
window.setTimeout(GetPowerRecord, 3000);
|
|
}, power_idx.toString());
|
|
}
|
|
GetPowerRecord();
|
|
|
|
function SetOK(i) {
|
|
submit_bts[i].disabled = false;
|
|
info_spans[i].className = "status_sp success";
|
|
info_spans[i].innerHTML = "OK";
|
|
}
|
|
function SetIng(i) {
|
|
submit_bts[i].disabled = true;
|
|
info_spans[i].className = "status_sp info";
|
|
info_spans[i].innerHTML = "ing...";
|
|
}
|
|
|
|
function SetSocket() {
|
|
SetIng(0);
|
|
var sockets_st = "";
|
|
for (var i = 0; i < checkboxs.length; i++) {
|
|
sockets_st += (checkboxs[i].checked ? "1," : "0,");
|
|
}
|
|
HttpPost("/socket", function (re) {
|
|
SetOK(0);
|
|
}, sockets_st);
|
|
}
|
|
|
|
function SelectWifi() {
|
|
ssid_ipt.disabled = ssid_slt.value != "0";
|
|
if (ssid_slt.value == "0") {
|
|
ssid_ipt.value = station_name;
|
|
} else {
|
|
ssid_ipt.value = ssid_slt.options[ssid_slt.selectedIndex].text;
|
|
}
|
|
}
|
|
|
|
function ChangeMode(m) {
|
|
if (mode == m) return;
|
|
if (m != 1) {
|
|
//AP模式
|
|
mode_rd1.checked = true;
|
|
ssid_slt.value = "0";
|
|
ssid_slt.disabled = true;
|
|
rescan_btn.disabled = true;
|
|
ssid_ipt.disabled = false;
|
|
ssid_ipt.value = ap_name;
|
|
pswd_ipt.value = ap_pswd;
|
|
} else {
|
|
//Station模式
|
|
mode_rd2.checked = true;
|
|
ssid_slt.value = "0";
|
|
ssid_slt.disabled = false;
|
|
rescan_btn.disabled = false;
|
|
ssid_ipt.disabled = false;
|
|
ssid_ipt.value = station_name;
|
|
pswd_ipt.value = station_pswd;
|
|
}
|
|
mode = m;
|
|
}
|
|
|
|
function ChangeInput(type) {
|
|
if(mode != 1) {
|
|
ap_name = ssid_ipt.value;
|
|
ap_pswd = pswd_ipt.value;
|
|
} else {
|
|
station_name = ssid_ipt.value;
|
|
station_pswd = pswd_ipt.value;
|
|
}
|
|
}
|
|
|
|
//Quotation Marks
|
|
function ContainQM(str) {
|
|
if (str.indexOf("'") >= 0
|
|
|| str.indexOf('"') >= 0
|
|
|| str.indexOf(' ') >= 0
|
|
|| str.length > 32) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
var qm_mess = "Sorry, can't use ' or \" or space.\n\nAlso, length <= 32."
|
|
|
|
function SubmitNetwork() {
|
|
if(mode != 1) {
|
|
if (ContainQM(ap_name) || ContainQM(ap_pswd)) {
|
|
alert(qm_mess);
|
|
return;
|
|
}
|
|
} else {
|
|
if (ContainQM(station_name) || ContainQM(station_pswd)) {
|
|
alert(qm_mess);
|
|
return;
|
|
}
|
|
var params = station_name+" "+station_pswd;
|
|
HttpPost("/wifi/config", function (re) {
|
|
alert(re);
|
|
}, params);
|
|
}
|
|
}
|
|
|
|
function Rescan() {
|
|
HttpPost("/wifi/scan", function (re) {
|
|
if (re == "OK") {
|
|
rescan_btn.innerHTML = "Scanning...";
|
|
rescan_btn.disabled = true;
|
|
window.setTimeout(GetScanResult, 1000);
|
|
} else {
|
|
alert(re);
|
|
}
|
|
});
|
|
}
|
|
|
|
function GetScanResult() {
|
|
HttpGet("/wifi/scan", function (re) {
|
|
if (re != "NO") {
|
|
var ret = JSON.parse(re);
|
|
var html = "<option value='0'>Manual</option>";
|
|
for (var i = 0; i < ret.ssids.length; i++) {
|
|
html += "<option value='"+(i+1)+"'>"+ret.ssids[i]+"</option>";
|
|
}
|
|
ssid_slt.innerHTML = html;
|
|
|
|
rescan_btn.innerHTML = "Rescan";
|
|
rescan_btn.disabled = false;
|
|
return;
|
|
}
|
|
window.setTimeout(GetScanResult, 1000);
|
|
});
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|