Added reboot and cleaned up a bit in UI

This commit is contained in:
Gunnar Skjold
2021-01-10 22:30:55 +01:00
parent 6176d34e84
commit 88528b4099
6 changed files with 71 additions and 18 deletions

View File

@@ -16,6 +16,7 @@
#include "root/ntp_html.h"
#include "root/gpio_html.h"
#include "root/debugging_html.h"
#include "root/restart_html.h"
#include "root/restartwait_html.h"
#include "root/boot_css.h"
#include "root/gaugemeter_js.h"
@@ -50,7 +51,7 @@ void AmsWebServer::setup(AmsConfiguration* config, MQTTClient* mqtt) {
server.on("/config-mqtt", HTTP_GET, std::bind(&AmsWebServer::configMqttHtml, this));
server.on("/config-web", HTTP_GET, std::bind(&AmsWebServer::configWebHtml, this));
server.on("/config-domoticz",HTTP_GET, std::bind(&AmsWebServer::configDomoticzHtml, this));
server.on("/config-entsoe",HTTP_GET, std::bind(&AmsWebServer::configEntsoeHtml, this));
server.on("/entsoe",HTTP_GET, std::bind(&AmsWebServer::configEntsoeHtml, this));
server.on("/boot.css", HTTP_GET, std::bind(&AmsWebServer::bootCss, this));
server.on("/gaugemeter.js", HTTP_GET, std::bind(&AmsWebServer::gaugemeterJs, this));
server.on("/github.svg", HTTP_GET, std::bind(&AmsWebServer::githubSvg, this));
@@ -65,6 +66,8 @@ void AmsWebServer::setup(AmsConfiguration* config, MQTTClient* mqtt) {
server.on("/firmware", HTTP_GET, std::bind(&AmsWebServer::firmwareHtml, this));
server.on("/firmware", HTTP_POST, std::bind(&AmsWebServer::uploadPost, this), std::bind(&AmsWebServer::firmwareUpload, this));
server.on("/upgrade", HTTP_GET, std::bind(&AmsWebServer::firmwareDownload, this));
server.on("/restart", HTTP_GET, std::bind(&AmsWebServer::restartHtml, this));
server.on("/restart", HTTP_POST, std::bind(&AmsWebServer::restartPost, this));
server.on("/restart-wait", HTTP_GET, std::bind(&AmsWebServer::restartWaitHtml, this));
server.on("/is-alive", HTTP_GET, std::bind(&AmsWebServer::isAliveCheck, this));
@@ -1311,6 +1314,31 @@ void AmsWebServer::firmwareDownload() {
}
}
void AmsWebServer::restartHtml() {
printD("Serving /restart.html over http...");
if(!checkSecurity(1))
return;
server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
server.sendHeader("Pragma", "no-cache");
server.setContentLength(RESTART_HTML_LEN + HEAD_HTML_LEN + FOOT_HTML_LEN);
server.send_P(200, "text/html", HEAD_HTML);
server.sendContent_P(RESTART_HTML);
server.sendContent_P(FOOT_HTML);
}
void AmsWebServer::restartPost() {
if(!checkSecurity(1))
return;
printD("Setting restart flag and redirecting");
performRestart = true;
server.sendHeader("Location","/restart-wait");
server.send(303);
}
void AmsWebServer::restartWaitHtml() {
printD("Serving /restart-wait.html over http...");

View File

@@ -88,6 +88,8 @@ private:
void firmwareHtml();
void firmwareUpload();
void firmwareDownload();
void restartHtml();
void restartPost();
void restartWaitHtml();
void isAliveCheck();

View File

@@ -114,9 +114,7 @@ $(function() {
case '/price':
$('#config-price-link').addClass('active');
break;
case '/config-meter':
$('#config-meter-link').addClass('active');
break;
case '/config-meter':
case '/config-wifi':
case '/config-mqtt':
case '/mqtt-ca':
@@ -125,11 +123,14 @@ $(function() {
case '/config-domoticz':
case '/config-web':
case '/ntp':
case '/entsoe':
$('#config-link').addClass('active');
break;
case '/gpio':
case '/debugging':
case '/firmware':
case '/reset':
$('#config-system-link').addClass('active');
$('#system-link').addClass('active');
break;
}

View File

@@ -1,6 +1,7 @@
<form method="post" action="/save">
<input type="hidden" name="meterConfig" value="true"/>
<div class="my-3 p-3 bg-white rounded shadow">
<h6>Meter</h6>
<div class="row">
<div class="col-lg-3 col-md-4 col-sm-6">
<div class="m-2 input-group input-group-sm">

View File

@@ -59,32 +59,39 @@
<li class="nav-item">
<a id="config-price-link" class="nav-link" href="/price"><span class="d-none d-sm-inline">Energy</span> Price</a>
</li>
<li class="nav-item">
<a id="config-meter-link" class="nav-link" href="/config-meter">Meter</a>
</li>
<li class="nav-item">
<div class="dropdown">
<a class="dropdown-toggle nav-link" href="#" role="button" id="config-system-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Configure
<a class="dropdown-toggle nav-link" href="#" role="button" id="config-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Config<span class="d-none d-md-inline d-lg-none d-xl-inline">uration</span>
</a>
<div class="dropdown-menu" aria-labelledby="config-system-link">
<div class="dropdown-menu" aria-labelledby="config-link">
<a class="dropdown-item" href="/config-meter">Meter</a>
<a class="dropdown-item" href="/config-wifi">WiFi</a>
<a class="dropdown-item" href="/config-mqtt">MQTT</a>
<a class="dropdown-item" href="/config-web">Web</a>
<a class="dropdown-item" href="/ntp">NTP</a>
<a class="dropdown-item" href="/gpio">GPIO</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/config-entsoe">ENTSO-E API</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/debugging">Debugging</a>
<a class="dropdown-item" href="/firmware">Firmware</a>
<a class="dropdown-item text-danger" href="/reset">Factory reset</a>
<a class="dropdown-item" href="/entsoe">ENTSO-E API</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="https://github.com/gskjold/AmsToMqttBridge/wiki" target="_blank">Documentation</a>
</div>
</div>
</li>
<li class="nav-item">
<div class="dropdown">
<a class="dropdown-toggle nav-link" href="#" role="button" id="system-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Sys<span class="d-none d-sm-inline">tem</span>
</a>
<div class="dropdown-menu" aria-labelledby="system-link">
<a class="dropdown-item" href="/gpio">GPIO</a>
<a class="dropdown-item" href="/debugging">Debugging</a>
<a class="dropdown-item" href="/firmware">Firmware</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/restart">Restart</a>
<a class="dropdown-item text-danger" href="/reset">Factory reset</a>
</div>
</div>
</li>
</ul>
</div>
<div class="flex-row">

14
web/restart.html Normal file
View File

@@ -0,0 +1,14 @@
<form method="post">
<div class="my-3 p-3 bg-white rounded shadow">
<div class="alert alert-warning">Are you sure you want restart?</div>
</div>
<hr/>
<div class="row form-group">
<div class="col-6">
<a href="javascript:history.back();" class="btn btn-outline-secondary">Back</a>
</div>
<div class="col-6 text-right">
<button class="btn btn-success" name="perform" value="true">Restart</button>
</div>
</div>
</form>