summaryrefslogtreecommitdiff
path: root/pkg/webui/html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--pkg/webui/html/base.html58
-rw-r--r--pkg/webui/html/error.html6
-rw-r--r--pkg/webui/html/login.html27
-rw-r--r--pkg/webui/html/logout.html5
-rw-r--r--pkg/webui/html/settings.html25
-rw-r--r--pkg/webui/html/state.html30
-rw-r--r--pkg/webui/html/states.html38
-rw-r--r--pkg/webui/html/states_new.html33
-rw-r--r--pkg/webui/html/version.html10
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 }}