1
0
mirror of https://github.com/nxshock/gron.git synced 2024-11-27 03:41:00 +05:00
gron/index.htm
2022-03-28 20:50:13 +05:00

225 lines
4.3 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>gron</title>
<style>
/* Based on base16 architecture for building themes
https://github.com/chriskempson/base16 */
:root {
/* Default Background */
--base00: #282c34;
/* Lighter Background */
--base01: #353b45;
/* Selection Background */
--base02: #3e4451;
/* Comments, Invisibles, Line Highlighting */
--base03: #545862;
/* Dark Foreground (Used for status bars) */
--base04: #565c64;
/* Default Foreground, Caret, Delimiters, Operators */
--base05: #abb2bf;
/* Light Foreground (Not often used) */
--base06: #b6bdca;
/* Light Background (Not often used) */
--base07: #c8ccd4;
/* Red */
--base08: #e06c75;
/* Orange */
--base09: #d19a66;
/* Yellow */
--base0A: #e5c07b;
/* Green */
--base0B: #98c379;
/* Aqua */
--base0C: #56b6c2;
/* Blue */
--base0D: #61afef;
/* Purple */
--base0E: #c678dd;
/* Dark red */
--base0F: #be5046;
}
@font-face {
font-family: Roboto;
src: url('/font.ttf');
}
* {
font-family: Roboto;
font-size: 14px;
color: var(--base05);
margin: 0;
padding: 0;
}
html {
height: 100%
}
body {
background-color: var(--base00);
display: flex;
justify-content: space-between;
flex-wrap: nowrap;
flex-direction: column;
height: 100%;
}
h1 {
margin-top: 1em;
font-size: 150%;
margin-bottom: 0.5em;
}
main {
flex-grow: 1;
padding-left: 1em;
padding-right: 1em;
}
table {
border-collapse: collapse;
}
th {
background-color: var(--base01);
}
td,
th {
border: 1px solid var(--base03);
padding: 0.25em;
}
td:first-child {
padding: 0;
}
table button {
width: 100%;
color: #fff;
background-color: var(--base01);
border: 0;
cursor: pointer;
padding: 0.25em;
}
form {
display: none;
}
pre {
font-family: "Consolas";
}
.smaller {
font-size: 80%;
}
.nowrap {
white-space: nowrap;
}
.errorbg {
background-color: var(--base08);
}
.runningbg {
background-color: var(--base0B);
}
.dropbtn {
background-color: var(--base01);
color: var(--base05);
padding: 0.5em;
cursor: pointer;
border: 0;
}
.dropdown {
position: relative;
display: inline-block;
float: right;
}
.dropdown-content {
display: none;
position: absolute;
right: 0;
background-color: var(--base01);
z-index: 1;
}
.dropdown-content a {
color: var(--base05);
padding: 0.5em;
text-decoration: none;
display: block;
white-space: nowrap;
}
.dropdown:hover .dropdown-content {
display: block;
}
.green {
color: var(--base0B);
}
.red {
color: var(--base08);
}
</style>
</head>
<body>
<main>
<div class="dropdown">
<button class="dropbtn">☰ Menu</button>
<div class="dropdown-content">
<a href="/reloadJobs">&#x27f3; Reload jobs</a>
<a>
<hr>
</a>
<a href="/shutdown">&#x23fb; Shutdown</a>
</div>
</div>
<h1>Job list</h1>
<table>
<tr>
<th>Name</th>
<th>Description</th>
<th>Cron</th>
<th>Status</th>
<th>Start time</th>
<th>Finish time</th>
<th>Duration</th>
<th>Next launch</th>
<th>Last error</th>
</tr>
{{range .}}<tr>
<td>
<form action="/start" method="get" id="form-{{.Name}}"></form>
<button{{if gt .CurrentRunningCount 0}} class="runningbg" {{else}}{{if .LastError}} class="errorbg" {{end}}{{end}} type="submit" form="form-{{.Name}}" name="jobName" value="{{.Name}}" {{if gt .CurrentRunningCount 0}} disabled{{end}}>{{.Name}}</button>
</td>
<td class="smaller">{{.Description}}</td>
<td class="nowrap" align="right">
<pre>{{.Cron}}</pre>
</td>
<td class="nowrap">{{if gt .CurrentRunningCount 1}}<span class="red">running {{.CurrentRunningCount}} jobs</span>{{else}}{{if .CurrentRunningCount}}<span class="green">&#x25b6; running</span>{{else}}&#9632; inactive{{end}}{{end}}</td>
<td>{{.LastStartTime}}</td>
<td>{{.LastEndTime}}</td>
<td align="right">{{.LastExecutionDuration}}</td>
<td>{{.NextLaunch}}</td>
<td class="smaller red">{{.LastError}}</td>
</tr>{{end}}
</table>
</main>
</body>
</html>