Skip to content

Commit 097df11

Browse files
authored
feat(docs): add linking and output messages (containrrr#1831)
1 parent 48539c4 commit 097df11

File tree

2 files changed

+46
-14
lines changed

2 files changed

+46
-14
lines changed

docs/template-preview.md

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
}
4141
#tplprev button {
4242
border-radius: 0.1rem;
43-
color: var(--md-typeset-color);
43+
color: var(--md-primary-bg-color);
4444
background-color: var(--md-primary-fg-color);
4545
flex:1;
4646
min-width: 12ch;
@@ -78,6 +78,8 @@
7878
flex:1;
7979
width:100%
8080
}
81+
#result b {color: var(--md-code-hl-special-color)}
82+
#result i {color: var(--md-code-hl-keyword-color)}
8183
#tplprev .loading {
8284
position: absolute;
8385
inset: 0;
@@ -90,12 +92,14 @@
9092
</style>
9193
<script src="../assets/wasm_exec.js"></script>
9294
<script>
95+
let wasmLoaded = false;
9396
const updatePreview = () => {
97+
if (!wasmLoaded) return;
9498
const form = document.querySelector('#tplprev');
9599
const input = form.template.value;
96100
console.log('Input: %o', input);
97101
const arrFromCount = (key) => Array.from(Array(form[key]?.valueAsNumber ?? 0), () => key);
98-
const states = form.enablereport.checked ? [
102+
const states = form.report.value === "yes" ? [
99103
...arrFromCount("skipped"),
100104
...arrFromCount("scanned"),
101105
...arrFromCount("updated"),
@@ -104,7 +108,7 @@
104108
...arrFromCount("stale" ),
105109
] : [];
106110
console.log("States: %o", states);
107-
const levels = form.enablelog.checked ? [
111+
const levels = form.log.value === "yes" ? [
108112
...arrFromCount("error"),
109113
...arrFromCount("warning"),
110114
...arrFromCount("info"),
@@ -113,15 +117,17 @@
113117
console.log("Levels: %o", levels);
114118
const output = WATCHTOWER.tplprev(input, states, levels);
115119
console.log('Output: \n%o', output);
116-
if (output.length) {
120+
if (output.startsWith('Error: ')) {
121+
document.querySelector('#result').innerHTML = `<b>Error</b>: ${output.substring(7)}`;
122+
} else if (output.length) {
117123
document.querySelector('#result').innerText = output;
118124
} else {
119125
document.querySelector('#result').innerHTML = '<i>empty (would not be sent as a notification)</i>';
120126
}
121127
}
122128
const formSubmitted = (e) => {
123-
e.preventDefault();
124-
updatePreview();
129+
//e.preventDefault();
130+
//updatePreview();
125131
}
126132
let debounce;
127133
const inputUpdated = () => {
@@ -130,18 +136,24 @@
130136
}
131137
const formChanged = (e) => {
132138
console.log('form changed: %o', e);
139+
const targetToggle = e.target.dataset['toggle'];
140+
if (targetToggle) {
141+
e.target.form[targetToggle].value = e.target.checked ? "yes" : "no";
142+
}
143+
updatePreview()
133144
}
134145
const go = new Go();
135146
WebAssembly.instantiateStreaming(fetch("../assets/tplprev.wasm"), go.importObject).then((result) => {
136-
document.querySelector('#tplprev .loading').style.display = "none";
137147
go.run(result.instance);
148+
document.querySelector('#tplprev .loading').style.display = "none";
149+
wasmLoaded = true;
138150
updatePreview();
139151
});
140152
</script>
141-
<form id="tplprev" onchange="updatePreview()" onsubmit="formSubmitted(event)">
153+
<form id="tplprev" onchange="formChanged(event)" onsubmit="formSubmitted(event)">
142154
<pre class="loading">loading wasm...</pre>
143155
<div class="template-wrapper">
144-
<textarea name="template" type="text" style="flex: 1" onkeyup="inputUpdated()">{{- with .Report -}}
156+
<textarea name="template" type="text" onkeyup="inputUpdated()">{{- with .Report -}}
145157
{{- if ( or .Updated .Failed ) -}}
146158
{{len .Scanned}} Scanned, {{len .Updated}} Updated, {{len .Failed}} Failed
147159
{{- range .Updated}}
@@ -166,7 +178,8 @@ Logs:
166178
</div>
167179
<div class="controls">
168180
<fieldset>
169-
<legend><label><input type="checkbox" name="enablereport" checked /> Container report</label></legend>
181+
<input type="hidden" name="report" value="yes" />
182+
<legend><label><input type="checkbox" data-toggle="report" checked /> Container report</label></legend>
170183
<label class="numfield">
171184
Skipped:
172185
<input type="number" name="skipped" value="3" />
@@ -193,7 +206,8 @@ Logs:
193206
</label>
194207
</fieldset>
195208
<fieldset>
196-
<legend><label><input type="checkbox" name="enablelog" checked /> Log entries</label></legend>
209+
<input type="hidden" name="log" value="yes" />
210+
<legend><label><input type="checkbox" data-toggle="log" checked /> Log entries</label></legend>
197211
<label class="numfield">
198212
Error:
199213
<input type="number" name="error" value="1" />
@@ -216,4 +230,22 @@ Logs:
216230
<div style="result-wrapper">
217231
<pre id="result"></pre>
218232
</div>
219-
</form>
233+
</form>
234+
<script>
235+
const loadQueryVals = () => {
236+
const form = document.querySelector('#tplprev');
237+
const params = new URLSearchParams(location.search);
238+
for(const [key, value] of params){
239+
form[key].value = value;
240+
const toggleInput = form.querySelector(`[data-toggle="${key}"]`);
241+
if (toggleInput) {
242+
toggleInput.checked = value === "yes";
243+
}
244+
}
245+
}
246+
if (document.readyState === "loading") {
247+
document.addEventListener("DOMContentLoaded", loadQueryVals());
248+
} else {
249+
loadQueryVals();
250+
}
251+
</script>

pkg/notifications/preview/tplprev.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func Render(input string, states []data.State, loglevels []data.LogLevel) (strin
1515

1616
tpl, err := template.New("").Funcs(templates.Funcs).Parse(input)
1717
if err != nil {
18-
return "", fmt.Errorf("failed to parse template: %e", err)
18+
return "", fmt.Errorf("failed to parse %v", err)
1919
}
2020

2121
for _, state := range states {
@@ -29,7 +29,7 @@ func Render(input string, states []data.State, loglevels []data.LogLevel) (strin
2929
var buf strings.Builder
3030
err = tpl.Execute(&buf, data)
3131
if err != nil {
32-
return "", fmt.Errorf("failed to execute template: %e", err)
32+
return "", fmt.Errorf("failed to execute template: %v", err)
3333
}
3434

3535
return buf.String(), nil

0 commit comments

Comments
 (0)