Initial commit

This commit is contained in:
Magnus Åhall 2024-04-29 08:36:13 +02:00
commit 89f483171a
43 changed files with 2245 additions and 0 deletions

View file

@ -0,0 +1,6 @@
{{ define "fonts" }}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap" rel="stylesheet">
{{ end }}

View file

@ -0,0 +1,8 @@
{{ define "menu" }}
<div id="menu">
<a href="/"><img src="/images/{{ .VERSION }}/logo{{ if eq .MENU "index" }}_selected{{ end }}.svg"></a>
<a href="/problems"><img src="/images/{{ .VERSION }}/problems{{ if eq .MENU "problems" }}_selected{{ end }}.svg"></a>
<a href="/triggers"><img src="/images/{{ .VERSION }}/triggers{{ if eq .MENU "triggers" }}_selected{{ end }}.svg"></a>
<a href="/configuration"><img src="/images/{{ .VERSION }}/configuration{{ if eq .MENU "configuration" }}_selected{{ end }}.svg"></a>
</div>
{{ end }}

View file

@ -0,0 +1,6 @@
{{ define "page_label" }}
<div class="page-label">
<img src="/images/{{ .VERSION }}/{{ .Icon }}.svg">
<div>{{ .Label }}</div>
</div>
{{ end }}

17
views/layouts/main.gotmpl Normal file
View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
{{ template "fonts" }}
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/main.css">
</head>
<body>
<div id="layout">
{{ block "menu" . }}{{ end }}
<div id="page">
{{ block "page" . }}{{ end }}
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,3 @@
{{ define "page" }}
area new
{{ end }}

View file

@ -0,0 +1,20 @@
{{ define "page" }}
{{ block "page_label" . }}{{end}}
<h1>Areas</h1>
<div id="areas">
{{ range .Data.Areas }}
<div class="area">
<div class="name">{{ .Name }}</div>
{{ range .SortedSections }}
<div class="section">
<div class="name">{{ .Name }}</div>
</div>
{{ end }}
</div>
{{ end }}
</div>
{{ end }}

12
views/pages/index.gotmpl Normal file
View file

@ -0,0 +1,12 @@
{{ define "page" }}
<div style="float: left;">
<img src="/images/{{ .VERSION }}/logo_selected.svg" style="width: 64px; margin-right: 32px;">
</div>
<div style="float: left;">
<h1>SMon</h1>
<h2>{{ .VERSION }}</h2>
</div>
{{ end }}

View file

@ -0,0 +1,17 @@
{{ define "page" }}
{{ block "page_label" . }}{{end}}
<div id="areas">
{{ range .Data.Areas }}
<div class="area">
<div class="name">{{ .Name }}</div>
{{ range .SortedSections }}
<div class="section">
<div class="name">{{ .Name }}</div>
</div>
{{ end }}
</div>
{{ end }}
</div>
{{ end }}

View file

@ -0,0 +1,40 @@
{{ define "page" }}
<script type="module" defer>
import {UI, Trigger} from "/js/{{ .VERSION }}/trigger_edit.mjs"
window._ui = new UI()
let trigger = new Trigger(
{{ .Data.Trigger.ID }},
'{{ .Data.Trigger.Name }}',
)
_ui.setTrigger(trigger)
</script>
<link rel="stylesheet" type="text/css" href="/css/{{ .VERSION }}/trigger_edit.css">
{{ block "page_label" . }}{{end}}
<form action="/trigger/update/{{ .Data.Trigger.ID }}" method="post">
<div id="widgets" class="widgets">
<div class="label">Name</div>
<div><input type="text" name="name" value="{{ .Data.Trigger.Name }}"></div>
<div class="label">Datapoints</div>
<div class="datapoints" style="margin-top: 4px">
{{ range .Data.Datapoints }}
<div class="datapoint name">{{ .Name }}</div>
<div class="datapoint value">{{ .LastDatapointValue.Value }}</div>
{{ end }}
</div>
<div class="label">Expression</div>
<div><textarea id="expr" name="expression" rows=8>{{ .Data.Trigger.Expression }}</textarea></div>
<div></div>
<div class="action">
<button>Update</button>
<button id="button-run" onclick="window._ui.run(); return false">Test</button>
<div id="run-result"></div>
</div>
</form>
{{ end }}

View file

@ -0,0 +1,33 @@
{{ define "page" }}
{{ block "page_label" . }}{{end}}
{{ $version := .VERSION }}
<div id="areas">
{{ range .Data.Areas }}
<div class="area">
<div class="name">{{ .Name }}</div>
{{ range .SortedSections }}
<div class="section">
<div class="name">{{ .Name }}</div>
<div class="triggers">
{{ range .SortedTriggers }}
{{ if eq .Name "" }}
{{ continue }}
{{ end }}
<a href="/trigger/edit/{{ .ID }}">
<div class="trigger">
<img src="/images/{{ $version }}/triggers.svg">
<div class="label">{{ .Name }}</div>
</div>
</a>
{{ end }}
</div>
</div>
{{ end }}
</div>
{{ end }}
</div>
{{ end }}