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 ;
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 ;
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" ),
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" ),
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 = () => {
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>
0 commit comments