restructure ui, styling
This commit is contained in:
parent
8f03ad1373
commit
117193fbed
|
@ -21,8 +21,6 @@ class GwConfigItem: public GwConfigInterface{
|
||||||
this->initialValue=initialValue;
|
this->initialValue=initialValue;
|
||||||
this->value=initialValue;
|
this->value=initialValue;
|
||||||
}
|
}
|
||||||
GwConfigItem(const String &name, bool initalValue):
|
|
||||||
GwConfigItem(name,initalValue?String("true"):String("false")){};
|
|
||||||
virtual String asString() const{
|
virtual String asString() const{
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,6 +207,8 @@ void web_setConfig(){
|
||||||
void web_resetConfig(){
|
void web_resetConfig(){
|
||||||
config.reset(true);
|
config.reset(true);
|
||||||
logger.logString("reset config, restart");
|
logger.logString("reset config, restart");
|
||||||
|
webserver.send(200,F("application/json"),JSON_OK);
|
||||||
|
delay(100);
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
122
web/index.html
122
web/index.html
|
@ -5,31 +5,40 @@
|
||||||
<title>NMEA 2000 Gateway</title>
|
<title>NMEA 2000 Gateway</title>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function reset(){
|
let lastUpdate=(new Date()).getTime();
|
||||||
fetch('/api/reset');
|
function alertRestart(){
|
||||||
alert("Board reset triggered, reconnect WLAN if necessary");
|
alert("Board reset triggered, reconnect WLAN if necessary");
|
||||||
}
|
}
|
||||||
|
function getJson(url){
|
||||||
|
return fetch(url)
|
||||||
|
.then(function(r){return r.json()});
|
||||||
|
}
|
||||||
|
function reset(){
|
||||||
|
fetch('/api/reset');
|
||||||
|
alertRestart();
|
||||||
|
}
|
||||||
function update(){
|
function update(){
|
||||||
fetch('/api/status')
|
let now=(new Date()).getTime();
|
||||||
.then(function(resp){
|
let ce=document.getElementById('connected');
|
||||||
return resp.json()
|
if (ce){
|
||||||
})
|
if ((lastUpdate+3000) > now){
|
||||||
|
ce.classList.add('ok');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
ce.classList.remove('ok');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getJson('/api/status')
|
||||||
.then(function(jsonData){
|
.then(function(jsonData){
|
||||||
for (let k in jsonData){
|
for (let k in jsonData){
|
||||||
let el=document.getElementById(k);
|
let el=document.getElementById(k);
|
||||||
if (el) el.textContent=jsonData[k];
|
if (el) el.textContent=jsonData[k];
|
||||||
}
|
}
|
||||||
|
lastUpdate=(new Date()).getTime();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function resetForm(ev){
|
function resetForm(ev){
|
||||||
if (ev){
|
getJson("/api/config")
|
||||||
ev.preventDefault();
|
|
||||||
ev.stopPropagation();
|
|
||||||
}
|
|
||||||
fetch("/api/config")
|
|
||||||
.then(function(resp){
|
|
||||||
return resp.json();
|
|
||||||
})
|
|
||||||
.then(function(jsonData){
|
.then(function(jsonData){
|
||||||
for (let k in jsonData){
|
for (let k in jsonData){
|
||||||
let el=document.querySelector("[name='"+k+"']");
|
let el=document.querySelector("[name='"+k+"']");
|
||||||
|
@ -40,29 +49,69 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function changeConfig(){
|
||||||
|
let url="/api/setConfig?";
|
||||||
|
let values=document.querySelectorAll('.configForm select , .configForm input');
|
||||||
|
for (let i=0;i<values.length;i++){
|
||||||
|
let v=values[i];
|
||||||
|
url+=v.getAttribute('name')+"="+encodeURIComponent(v.value)+"&";
|
||||||
|
}
|
||||||
|
getJson(url)
|
||||||
|
.then(function(status){
|
||||||
|
if(status.status == 'OK'){
|
||||||
|
alertRestart();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
alert("unable to set config: "+status.status);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function factoryReset(){
|
||||||
|
getJson("/api/resetConfig")
|
||||||
|
.then(function(status){
|
||||||
|
alertRestart();
|
||||||
|
})
|
||||||
|
}
|
||||||
window.setInterval(update,1000);
|
window.setInterval(update,1000);
|
||||||
|
window.addEventListener('load',function(){
|
||||||
|
let buttons=document.querySelectorAll('button');
|
||||||
|
for (let i=0;i<buttons.length;i++){
|
||||||
|
let be=buttons[i];
|
||||||
|
be.onclick=window[be.id]; //assume a function with the button id
|
||||||
|
}
|
||||||
resetForm();
|
resetForm();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#wrap
|
.configForm {
|
||||||
{
|
margin-top: 1em;
|
||||||
text-align: center;
|
margin-bottom: 1em;
|
||||||
vertical-align: middle;
|
padding-top: 0.5em;
|
||||||
max-width: 900px;
|
padding-bottom: 0.5em;
|
||||||
margin:0 auto;
|
border: 1px solid grey;
|
||||||
background:#dcd;
|
max-width: 40em;
|
||||||
border-radius: 10px;
|
|
||||||
padding:10px; /*innen*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
span.label {
|
span.label {
|
||||||
width: 10em;
|
width: 10em;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
}
|
}
|
||||||
|
span#connected {
|
||||||
|
display: inline-block;
|
||||||
|
background-color: red;
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
span#connected.ok{
|
||||||
|
background-color: #13ac13;
|
||||||
|
}
|
||||||
.row {
|
.row {
|
||||||
margin: 0.5em;
|
margin: 0.5em;
|
||||||
}
|
}
|
||||||
|
.buttons {
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -73,6 +122,10 @@ span.label {
|
||||||
<span class="label">VERSION</span>
|
<span class="label">VERSION</span>
|
||||||
<span class="value" id="version">---</span>
|
<span class="value" id="version">---</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<span class="label">connected</span>
|
||||||
|
<span class="value" id="connected"></span>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<span class="label"># CAN messages</span>
|
<span class="label"># CAN messages</span>
|
||||||
<span class="value" id="numcan">---</span>
|
<span class="value" id="numcan">---</span>
|
||||||
|
@ -85,7 +138,15 @@ span.label {
|
||||||
<span class="label">wifi client IP</span>
|
<span class="label">wifi client IP</span>
|
||||||
<span class="value" id="clientIP">---</span>
|
<span class="value" id="clientIP">---</span>
|
||||||
</div>
|
</div>
|
||||||
<form action="/api/setConfig">
|
<button id="reset" >Reset</button>
|
||||||
|
<div class="configForm">
|
||||||
|
<div class="row">
|
||||||
|
<span class="label">NMEAtoUSB</span>
|
||||||
|
<select name="sendUsb">
|
||||||
|
<option value="true">On</option>
|
||||||
|
<option value="false" selected="selected">Off</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<span class="label">wifiClient</span>
|
<span class="label">wifiClient</span>
|
||||||
<select name="wifiClient">
|
<select name="wifiClient">
|
||||||
|
@ -101,10 +162,13 @@ span.label {
|
||||||
<span class="label">wifiClientSSID</span>
|
<span class="label">wifiClientSSID</span>
|
||||||
<input name="wifiSSID" type="text">
|
<input name="wifiSSID" type="text">
|
||||||
</div>
|
</div>
|
||||||
<button onClick="resetForm()">Reset</button>
|
<div class="buttons">
|
||||||
<button type="submit">Save&Restart</button>
|
<button id="resetForm">ReloadConfig</button>
|
||||||
</form>
|
<button id="changeConfig">Save&Restart</button>
|
||||||
<button id="reset" onclick="reset();">Reset</button>
|
<button id="factoryReset">FactoryReset</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue