Make debug interface pretty
This commit is contained in:
parent
ac4eb3d8b2
commit
c8937b6924
@ -1,6 +1,7 @@
|
||||
<RCC>
|
||||
<qresource prefix="">
|
||||
<file>logo.svg</file>
|
||||
<file>warning.svg</file>
|
||||
<file>styles.css</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="guh-logo.svg"
|
||||
sodipodi:docname="logo.svg"
|
||||
inkscape:export-filename="/home/timon/guh/guh/guh/icons/guh-logo-512x512.png"
|
||||
inkscape:export-xdpi="92.160004"
|
||||
inkscape:export-ydpi="92.160004">
|
||||
@ -252,15 +252,15 @@
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="30.679884"
|
||||
inkscape:cx="-124.12599"
|
||||
inkscape:cy="202.52602"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2880"
|
||||
inkscape:window-height="1749"
|
||||
inkscape:window-height="1752"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="51"
|
||||
inkscape:window-y="48"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
@ -279,13 +279,6 @@
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.36215)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="rect4243"
|
||||
width="500"
|
||||
height="500"
|
||||
x="0"
|
||||
y="552.36218" />
|
||||
<g
|
||||
transform="matrix(2.2038606,0,0,2.2038606,-672.50331,283.61944)"
|
||||
id="g41">
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@ -18,40 +18,162 @@
|
||||
* *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
|
||||
table {
|
||||
display: table;
|
||||
border-collapse: colapse;
|
||||
border-spacing: 2px;
|
||||
border-color: gray;
|
||||
html,
|
||||
body {
|
||||
margin:0;
|
||||
padding:0;
|
||||
height:100%;
|
||||
}
|
||||
|
||||
p {
|
||||
color: #676767;
|
||||
font-family: "Ubuntu", Helvetica, "Helvetica Neue", Arial, sans-serif;
|
||||
font-size: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0 0 20px 0;
|
||||
font-family: "Ubuntu", Helvetica, "Helvetica Neue", Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
color: #676767;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
html {
|
||||
th, td {
|
||||
padding: 3px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
color: #676767;
|
||||
font-family: "Ubuntu", Arial, Helvetica, sans-serif;
|
||||
background: white;
|
||||
font-family: "Ubuntu", Helvetica, "Helvetica Neue", Arial, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
hr {
|
||||
color: #efefef;
|
||||
}
|
||||
|
||||
table {
|
||||
display: table;
|
||||
border-collapse: colapse;
|
||||
border-color: #efefef;
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.guh-main-logo {
|
||||
left: 0;
|
||||
height: 85px;
|
||||
min-height: 85px;
|
||||
max-height: 85px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: #ed3146;
|
||||
border-radius: 20px;
|
||||
opacity: 0.8;
|
||||
width: 80%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.warning-message {
|
||||
padding:30px;
|
||||
margin-left: 60px;
|
||||
opacity: 1;
|
||||
color: white;
|
||||
background-color: transparent;
|
||||
font-family: "Ubuntu", Helvetica, "Helvetica Neue", Arial, sans-serif;
|
||||
text-align: center;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.warning-image {
|
||||
padding:12px;
|
||||
height: 60px;
|
||||
min-height: 60px;
|
||||
max-height: 60px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.warning:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.download-row {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.download-name-column {
|
||||
float: left;
|
||||
width: 30%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.download-path-column {
|
||||
float: left;
|
||||
width: 40%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.download-button-column {
|
||||
float: left;
|
||||
width: 20%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.download-row: after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.button {
|
||||
background-color: #57baae;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 15px 30px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
|
||||
.container {
|
||||
min-height:100%;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding:10px;
|
||||
background-color: #efefef;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.body {
|
||||
padding-left: 15%;
|
||||
padding-right: 15%;
|
||||
padding-bottom:120px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
position:absolute;
|
||||
bottom:0;
|
||||
left:0;
|
||||
right:0;
|
||||
width:100%;
|
||||
height:100px;
|
||||
background-color: #efefef;
|
||||
color: #676767;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
104
data/debug-interface/warning.svg
Normal file
104
data/debug-interface/warning.svg
Normal file
@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="500"
|
||||
height="500"
|
||||
viewBox="0 0 500.00001 500.00001"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="warning.svg">
|
||||
<title
|
||||
id="title4161">warning icon</title>
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="28.015042"
|
||||
inkscape:cy="289.6268"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="2880"
|
||||
inkscape:window-height="1752"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="48"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>warning icon</dc:title>
|
||||
<dc:date>10.02.2018</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Simon Stürz</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>guh GmbH</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:description>Warning icon for the debug interface</dc:description>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by/3.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by/3.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-552.36216)">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:45.78516388;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 250,575.25149 -227.108841,454.21811 454.217681,0 z"
|
||||
id="path4136"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:298.50747681px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="208.80597"
|
||||
y="936.46436"
|
||||
id="text4138"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4140"
|
||||
x="208.80597"
|
||||
y="936.46436">!</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
@ -46,6 +46,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
||||
writer.writeStartElement("html");
|
||||
writer.writeAttribute("lang", GuhCore::instance()->configuration()->locale().name());
|
||||
|
||||
// Head
|
||||
writer.writeStartElement("head");
|
||||
|
||||
writer.writeEmptyElement("meta");
|
||||
@ -60,18 +61,46 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
||||
|
||||
writer.writeEndElement(); // head
|
||||
|
||||
writer.writeStartElement("body");
|
||||
// Container
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "container");
|
||||
|
||||
// Header
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "header");
|
||||
writer.writeStartElement("h1");
|
||||
writer.writeEmptyElement("img");
|
||||
writer.writeAttribute("src", "/debug/logo.svg");
|
||||
writer.writeAttribute("class", "guh-main-logo");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "nymea debug interface"));
|
||||
writer.writeEndElement(); // h1
|
||||
writer.writeEndElement(); // div header
|
||||
|
||||
// Body
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "body");
|
||||
|
||||
// Welcome section
|
||||
writer.writeTextElement("h1", QCoreApplication::translate("main", "nymea debug interface"));
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Welcome to the debug interface."));
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "This debug interface was designed to provide an easy possibility to get helpful information about the running nymea server."));
|
||||
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeTextElement("h3", QCoreApplication::translate("main", "Warning"));
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Be aware that this debug interface is a security breach and offers access to the system log and therefore to possibly sensible data."));
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "If you are not using this debug tools, than you should disable it."));
|
||||
// Warning
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "warning");
|
||||
// Warning image
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "warning-image-area");
|
||||
writer.writeEmptyElement("img");
|
||||
writer.writeAttribute("class", "warning-image");
|
||||
writer.writeAttribute("src", "/debug/warning.svg");
|
||||
writer.writeEndElement(); // div warning image
|
||||
// Warning message
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "warning-message");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Be aware that this debug interface is a security breach and could offer access to sensible data."));
|
||||
writer.writeEndElement(); // div warning message
|
||||
writer.writeEndElement(); // div warning
|
||||
|
||||
|
||||
writer.writeEmptyElement("hr");
|
||||
|
||||
// System information section
|
||||
@ -79,24 +108,10 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
||||
writer.writeEmptyElement("hr");
|
||||
|
||||
writer.writeStartElement("table");
|
||||
//writer.writeAttribute("width", "100%");
|
||||
writer.writeAttribute("border", "1");
|
||||
|
||||
writer.writeStartElement("col");
|
||||
writer.writeAttribute("align", "left");
|
||||
writer.writeEndElement(); // col
|
||||
|
||||
writer.writeStartElement("col");
|
||||
writer.writeAttribute("align", "left");
|
||||
writer.writeEndElement(); // col
|
||||
|
||||
QString userName = qgetenv("USER");
|
||||
if (userName.isEmpty())
|
||||
userName = qgetenv("USERNAME");
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "User"));
|
||||
writer.writeTextElement("td", userName);
|
||||
writer.writeTextElement("td", qgetenv("USER"));
|
||||
writer.writeEndElement(); // tr
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
@ -212,142 +227,244 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
||||
// Downloads section
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeTextElement("h2", QCoreApplication::translate("main", "Downloads"));
|
||||
writer.writeEmptyElement("hr");
|
||||
|
||||
// Logs download section
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeTextElement("h3", QCoreApplication::translate("main", "Logs"));
|
||||
writer.writeEmptyElement("hr");
|
||||
|
||||
writer.writeStartElement("table");
|
||||
writer.writeAttribute("border", "1");
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Log database"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "Log database"));
|
||||
writer.writeTextElement("td", GuhSettings::logPath());
|
||||
writer.writeStartElement("td");
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", GuhSettings::logPath());
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/logdb.sql");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "System logs"));
|
||||
writer.writeTextElement("td", "/var/log/syslog");
|
||||
writer.writeStartElement("td");
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "System logs"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", "/var/log/syslog");
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/syslog");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
// TODO: offer logfile download if specified in the command line options
|
||||
|
||||
writer.writeEndElement(); // table
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
|
||||
// Settings download section
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeTextElement("h3", QCoreApplication::translate("main", "Settings"));
|
||||
writer.writeEmptyElement("hr");
|
||||
|
||||
writer.writeStartElement("table");
|
||||
writer.writeAttribute("border", "1");
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "Guhd settings"));
|
||||
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleGlobal).fileName());
|
||||
writer.writeStartElement("td");
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Guhd settings"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", GuhSettings(GuhSettings::SettingsRoleGlobal).fileName());
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/settings/guhd");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "Device settings"));
|
||||
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleDevices).fileName());
|
||||
writer.writeStartElement("td");
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Device settings"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", GuhSettings(GuhSettings::SettingsRoleDevices).fileName());
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/settings/devices");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "Device state settings"));
|
||||
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleDeviceStates).fileName());
|
||||
writer.writeStartElement("td");
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Device states settings"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", GuhSettings(GuhSettings::SettingsRoleDeviceStates).fileName());
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/settings/devicestates");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "Rules settings"));
|
||||
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRoleRules).fileName());
|
||||
writer.writeStartElement("td");
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Rules settings"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", GuhSettings(GuhSettings::SettingsRoleRules).fileName());
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/settings/rules");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
writer.writeStartElement("tr");
|
||||
writer.writeTextElement("th", QCoreApplication::translate("main", "Plugins settings"));
|
||||
writer.writeTextElement("td", GuhSettings(GuhSettings::SettingsRolePlugins).fileName());
|
||||
writer.writeStartElement("td");
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
|
||||
// Download row
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-row");
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-name-column");
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Plugins settings"));
|
||||
writer.writeEndElement(); // div download-name-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-path-column");
|
||||
writer.writeTextElement("p", GuhSettings(GuhSettings::SettingsRolePlugins).fileName());
|
||||
writer.writeEndElement(); // div download-path-column
|
||||
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "download-button-column");
|
||||
writer.writeStartElement("form");
|
||||
writer.writeAttribute("class", "download-button");
|
||||
writer.writeAttribute("method", "get");
|
||||
writer.writeAttribute("action", "/debug/settings/plugins");
|
||||
writer.writeStartElement("button");
|
||||
writer.writeAttribute("class", "button");
|
||||
writer.writeAttribute("type", "submit");
|
||||
writer.writeCharacters(QCoreApplication::translate("main", "Download"));
|
||||
writer.writeEndElement(); // button
|
||||
writer.writeEndElement(); // form
|
||||
writer.writeEndElement(); // td
|
||||
writer.writeEndElement(); // tr
|
||||
writer.writeEndElement(); // div download-button-column
|
||||
|
||||
writer.writeEndElement(); // table
|
||||
writer.writeEndElement(); // div download-row
|
||||
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeEndElement(); // div body
|
||||
|
||||
writer.writeStartElement("footer");
|
||||
|
||||
// Footer
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "footer");
|
||||
writer.writeTextElement("p", QString("Copyright %1 2018 guh GmbH.").arg(QChar(0xA9)));
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Released under the GNU GENERAL PUBLIC LICENSE Version 2."));
|
||||
writer.writeEndElement(); // footer
|
||||
writer.writeEndElement(); // div footer
|
||||
|
||||
writer.writeEndElement(); // body
|
||||
writer.writeEndElement(); // div container
|
||||
|
||||
writer.writeEndElement(); // html
|
||||
|
||||
@ -364,30 +481,63 @@ QByteArray DebugServerHandler::createErrorXmlDocument(HttpReply::HttpStatusCode
|
||||
writer.writeStartElement("html");
|
||||
writer.writeAttribute("lang", GuhCore::instance()->configuration()->locale().name());
|
||||
|
||||
// Head
|
||||
writer.writeStartElement("head");
|
||||
|
||||
writer.writeEmptyElement("meta");
|
||||
writer.writeAttribute("http-equiv", "Content-Type");
|
||||
writer.writeAttribute("content", "text/html; charset=utf-8");
|
||||
|
||||
writer.writeEmptyElement("link");
|
||||
writer.writeAttribute("rel", "stylesheet");
|
||||
writer.writeAttribute("href", "/debug/styles.css");
|
||||
|
||||
writer.writeTextElement("title", QCoreApplication::translate("main", "Debug nymea"));
|
||||
|
||||
writer.writeEndElement(); // head
|
||||
|
||||
writer.writeStartElement("body");
|
||||
// Container
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "container");
|
||||
|
||||
// Header
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "header");
|
||||
writer.writeTextElement("p", " ");
|
||||
writer.writeTextElement("h1", QCoreApplication::translate("main", "Error") + QString(" %1").arg(static_cast<int>(statusCode)));
|
||||
writer.writeEmptyElement("hr");
|
||||
writer.writeEndElement(); // div header
|
||||
|
||||
writer.writeTextElement("p", errorMessage);
|
||||
// Body
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "body");
|
||||
|
||||
writer.writeEmptyElement("hr");
|
||||
// Warning
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "warning");
|
||||
// Warning image
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "warning-image-area");
|
||||
writer.writeEmptyElement("img");
|
||||
writer.writeAttribute("class", "warning-image");
|
||||
writer.writeAttribute("src", "/debug/warning.svg");
|
||||
writer.writeEndElement(); // div warning image
|
||||
// Warning message
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "warning-message");
|
||||
writer.writeCharacters(errorMessage);
|
||||
writer.writeEndElement(); // div warning message
|
||||
writer.writeEndElement(); // div warning
|
||||
|
||||
writer.writeStartElement("footer");
|
||||
writer.writeEndElement(); // div body
|
||||
|
||||
// Footer
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "footer");
|
||||
writer.writeTextElement("p", QString("Copyright %1 2018 guh GmbH.").arg(QChar(0xA9)));
|
||||
writer.writeTextElement("p", QCoreApplication::translate("main", "Released under the GNU GENERAL PUBLIC LICENSE Version 2."));
|
||||
writer.writeEndElement(); // footer
|
||||
writer.writeEndElement(); // div footer
|
||||
|
||||
writer.writeEndElement(); // body
|
||||
writer.writeEndElement(); // div container
|
||||
|
||||
writer.writeEndElement(); // html
|
||||
|
||||
|
||||
Reference in New Issue
Block a user