diff options
Diffstat (limited to '')
-rw-r--r-- | pkg/webui/html/base.html | 58 | ||||
-rw-r--r-- | pkg/webui/html/error.html | 6 | ||||
-rw-r--r-- | pkg/webui/html/login.html | 27 | ||||
-rw-r--r-- | pkg/webui/html/logout.html | 5 | ||||
-rw-r--r-- | pkg/webui/html/settings.html | 25 | ||||
-rw-r--r-- | pkg/webui/html/state.html | 30 | ||||
-rw-r--r-- | pkg/webui/html/states.html | 38 | ||||
-rw-r--r-- | pkg/webui/html/states_new.html | 33 | ||||
-rw-r--r-- | pkg/webui/html/version.html | 10 |
9 files changed, 232 insertions, 0 deletions
diff --git a/pkg/webui/html/base.html b/pkg/webui/html/base.html new file mode 100644 index 0000000..4ec6565 --- /dev/null +++ b/pkg/webui/html/base.html @@ -0,0 +1,58 @@ +{{ define "nav" }} +<header> + <nav> + <a href="/"> + <h6>TFSTATED</h6> + </a> + </nav> +</header> +{{ if eq .Page.Section "login" }} +<a href="/login" class="active"> + <i>login</i> + <span>Login</span> +</a> +{{ else }} +<a href="/states"{{ if eq .Page.Section "states" }} class="fill"{{ end}}> + <i>home_storage</i> + <span>States</span> +</a> +<a href="/settings"{{ if eq .Page.Section "settings" }} class="fill"{{ end}}> + <i>settings</i> + <span>Settings</span> +</a> +<a href="/logout"> + <i>logout</i> + <span>Logout</span> +</a> +{{ end }} +{{ end }} +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="icon" href="/static/favicon.svg"> + <link href="/static/main.css" rel="stylesheet"> + <link href="https://cdn.jsdelivr.net/npm/beercss@3.8.0/dist/cdn/beer.min.css" rel="stylesheet"> + <title>TFSTATED - {{ .Page.Title }}</title> + </head> + <body class="{{ if .Page.LightMode }}light{{ else }}dark{{ end }}"> + <nav class="left drawer l">{{ template "nav" . }}</nav> + <nav class="left m">{{ template "nav" . }}</nav> + <nav class="bottom s">{{ template "nav" . }}</nav> + <header> + <nav> + {{ if ne .Page.Precedent "" }} + <a href="{{ .Page.Precedent }}" class="button circle chip"> + <i>arrow_back</i> + </a> + {{ end }} + <h5 class="max center-align">{{ .Page.Title }}</h5> + </nav> + </header> + {{ template "main" . }} + <footer> + </footer> + <script type="module" src="https://cdn.jsdelivr.net/npm/beercss@3.8.0/dist/cdn/beer.min.js"></script> + </body> +</html> diff --git a/pkg/webui/html/error.html b/pkg/webui/html/error.html new file mode 100644 index 0000000..cda21f6 --- /dev/null +++ b/pkg/webui/html/error.html @@ -0,0 +1,6 @@ +{{ define "main" }} +<main class="responsive"> +<h5>{{ .Status }} - {{ .StatusText }}</h5> +<p>{{ .Err }}</p> +</main> +{{ end }} diff --git a/pkg/webui/html/login.html b/pkg/webui/html/login.html new file mode 100644 index 0000000..deb6d4a --- /dev/null +++ b/pkg/webui/html/login.html @@ -0,0 +1,27 @@ +{{ define "main" }} +<main class="responsive"> + <form action="/login" method="post"> + <fieldset> + <div class="field border label{{ if .Forbidden }} invalid{{ end}}"> + <input autofocus + id="username" + name="username" + type="text" + value="{{ .Username }}" + required> + <label for="username">Username</label> + {{ if .Forbidden }}<span class="error">Invalid username or password</span>{{ end }} + </div> + <div class="field border label{{ if .Forbidden }} invalid{{ end}}"> + <input id="password" + name="password" + type="password" + required> + <label for="password">Password</label> + {{ if .Forbidden }}<span class="error">Invalid username or password</span>{{ end }} + </div> + <button class="small-round" type="submit" value="login">Login</button> + </fieldset> + </form> +</main> +{{ end }} diff --git a/pkg/webui/html/logout.html b/pkg/webui/html/logout.html new file mode 100644 index 0000000..e9203d4 --- /dev/null +++ b/pkg/webui/html/logout.html @@ -0,0 +1,5 @@ +{{ define "main" }} +<main class="responsive"> + <h5>Logout successful</h5> +</main> +{{ end }} diff --git a/pkg/webui/html/settings.html b/pkg/webui/html/settings.html new file mode 100644 index 0000000..4040b9b --- /dev/null +++ b/pkg/webui/html/settings.html @@ -0,0 +1,25 @@ +{{ define "main" }} +<main class="responsive"> + <form action="/settings" method="post"> + <fieldset> + <div class="field middle-align"> + <nav> + <div class="max"> + <h6>Dark Mode</h6> + </div> + <label class="switch icon"> + <input {{ if not .Settings.LightMode }} checked{{ end }} + name="dark-mode" + type="checkbox" + value="1" /> + <span> + <i>dark_mode</i> + </span> + </label> + </nav> + </div> + <button class="small-round" type="submit" value="login">Save</button> + </fieldset> + </form> +</main> +{{ end }} diff --git a/pkg/webui/html/state.html b/pkg/webui/html/state.html new file mode 100644 index 0000000..4439d9e --- /dev/null +++ b/pkg/webui/html/state.html @@ -0,0 +1,30 @@ +{{ define "main" }} +<main class="responsive" id="main"> + <p> + Locked: + {{ if eq .State.Lock nil }}no{{ else }} + <span>yes</span> + <div class="tooltip left max"> + <b>Lock</b> + <p>{{ .State.Lock }}</p> + </div> + {{ end }} + </p> + <table class="clickable-rows no-space"> + <thead> + <tr> + <th>By</th> + <th>Created</th> + </tr> + </thead> + <tbody> + {{ range .Versions }} + <tr> + <td><a href="/version/{{ .Id }}">{{ index $.Usernames .AccountId }}</a></td> + <td><a href="/version/{{ .Id }}">{{ .Created }}</a></td> + </tr> + {{ end }} + </tbody> + </table> +</main> +{{ end }} diff --git a/pkg/webui/html/states.html b/pkg/webui/html/states.html new file mode 100644 index 0000000..37d80cf --- /dev/null +++ b/pkg/webui/html/states.html @@ -0,0 +1,38 @@ +{{ define "main" }} +<main class="responsive" id="main"> + <a href="/states/new"> + <button class="small-round"> + <i>add</i> + <span>New</span> + </button> + </a> + <table class="clickable-rows no-space"> + <thead> + <tr> + <th>Path</th> + <th>Updated</th> + <th>Locked</th> + </tr> + </thead> + <tbody> + {{ range .States }} + <tr> + <td><a href="/state/{{ .Id }}">{{ .Path }}</a></td> + <td><a href="/state/{{ .Id }}">{{ .Updated }}</a></td> + <td> + <a href="/state/{{ .Id }}"> + {{ if eq .Lock nil }}no{{ else }} + <span>yes</span> + <div class="tooltip left max"> + <b>Lock</b> + <p>{{ .Lock }}</p> + </div> + {{ end }} + </a> + </td> + </tr> + {{ end }} + </tbody> + </table> +</main> +{{ end }} diff --git a/pkg/webui/html/states_new.html b/pkg/webui/html/states_new.html new file mode 100644 index 0000000..68facc7 --- /dev/null +++ b/pkg/webui/html/states_new.html @@ -0,0 +1,33 @@ +{{ define "main" }} +<main class="responsive"> + <form action="/states/new" enctype="multipart/form-data" method="post"> + <fieldset> + <div class="field border label{{ if .PathError }} invalid{{ end }}"> + <input autofocus + id="path" + name="path" + required + type="text" + value="{{ .Path }}"> + <label for="path">Path</label> + {{ if .PathDuplicate }} + <span class="error">This path already exist</span> + {{ else if .PathError }} + <span class="error">Invalid path</span> + {{ else }} + <span class="helper">Valid URL path beginning with a /</span> + {{ end }} + </div> + <div class="field label border"> + <input name="file" + required + type="file"> + <input type="text"> + <label>File</label> + <span class="helper">JSON state file</span> + </div> + <button class="small-round" type="submit" value="submit">New</button> + </fieldset> + </form> +</main> +{{ end }} diff --git a/pkg/webui/html/version.html b/pkg/webui/html/version.html new file mode 100644 index 0000000..b849783 --- /dev/null +++ b/pkg/webui/html/version.html @@ -0,0 +1,10 @@ +{{ define "main" }} +<main class="responsive" id="main"> + <p> + Created by + <a href="/users/{{ .Account.Id }}">{{ .Account.Username }}</a> + at {{ .Version.Created }} + </p> + <pre>{{ .VersionData }}</pre> +</main> +{{ end }} |