diff options
author | Gibheer <gibheer+git@zero-knowledge.org> | 2019-01-24 15:37:43 +0100 |
---|---|---|
committer | Gibheer <gibheer+git@zero-knowledge.org> | 2019-01-24 15:37:43 +0100 |
commit | aff501bebc99c405130c7414941e6f039d2fdf9d (patch) | |
tree | 1f0329e5b5937f21aa53e0461267aaf6bfc386a1 /cmd/monfront | |
parent | b1746c6626ed5593f2a3ee83df1ae11d49afb217 (diff) |
monfront - add select all
This commit adds a select all function to select all rows of a list to
mark them all.
This could be used to send a refresh to all these checks or acknowledge
them or whatever.
Also the referrer handling in checkAction() was moved to the start so
that even with an error the same thing happens.
Diffstat (limited to 'cmd/monfront')
-rw-r--r-- | cmd/monfront/main.go | 68 |
1 files changed, 46 insertions, 22 deletions
diff --git a/cmd/monfront/main.go b/cmd/monfront/main.go index ac9de17..3f71727 100644 --- a/cmd/monfront/main.go +++ b/cmd/monfront/main.go @@ -154,10 +154,15 @@ func checkAction(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "could not parse parameters: %s", err) return } + ref, found := r.Header["Referer"] + if found { + w.Header()["Location"] = ref + } else { + w.Header()["Location"] = []string{"/"} + } checks := r.PostForm["checks"] action := r.PostForm["action"] if len(action) == 0 || action[0] == "" || len(checks) == 0 { - w.Header()["Location"] = []string{"/"} w.WriteHeader(http.StatusSeeOther) return } @@ -216,7 +221,6 @@ func checkAction(w http.ResponseWriter, r *http.Request) { log.Printf("could not adjust checks %#v: %s", checks, err) return } - w.Header()["Location"] = []string{"/"} w.WriteHeader(http.StatusSeeOther) return default: @@ -236,12 +240,6 @@ func checkAction(w http.ResponseWriter, r *http.Request) { log.Printf("could not adjust checks %#v: %s", checks, err) return } - ref, found := r.Header["Referer"] - if found { - w.Header()["Location"] = ref - } else { - w.Header()["Location"] = []string{"/"} - } w.WriteHeader(http.StatusSeeOther) return } @@ -639,35 +637,61 @@ var ( </nav> {{ if .Error }}<div class="error">{{ .Error }}</div>{{ end }}`, "footer": `<script> - function select_row(event) { + function row_head_click_event(event) { + check = false; + current = event.target; + while (current != null) { + if (current.nodeName == 'TABLE') { + break; + } + if (current.nodeName == 'TR') { + check = !current.children[0].children[0].checked; + current.children[0].children[0].checked = check; + } + current = current.parentNode; + } + lines = current.children[1].children + for (i = 0; i < lines.length; i++) { + select_row(event, lines[i], lines[i].children[0].children[0], check); + } + } + function row_click_event(event) { if (event.target.nodeName == 'INPUT') { return; } current = event.target; while (current = current.parentNode) { - if (current,nodeName == 'BODY') { + if (current.nodeName == 'BODY') { break; } if (current.nodeName != 'TR') { continue; } e = current.children[0].children[0]; - if (e != event.target) { - e.checked = !e.checked; - } - if (e.checked) { - current.classList.add("selected"); - } else { - current.classList.remove("selected"); - } - e.focus(); + check = !e.checked; + select_row(event, current, e, check); break; } } + function select_row(event, row, input, check) { + if (input != event.target) { + input.checked = check; + } + if (input.checked) { + row.classList.add("selected"); + } else { + row.classList.remove("selected"); + } + input.focus(); + } - els = document.getElementsByTagName('tr'); + els = document.querySelectorAll('thead > tr'); + for (i = 0; i < els.length; i++) { + els[i].addEventListener('click', {handleEvent: row_head_click_event}); + } + els = document.querySelectorAll('tbody > tr'); for (i = 0; i < els.length; i++) { - els[i].addEventListener('click', {handleEvent: select_row}); + els[i].addEventListener('click', {handleEvent: row_click_event}); }</script></body></html>`, "checklist": `{{ template "header" . }} <form method="post" action="/action"> @@ -693,7 +717,7 @@ var ( </nav> <content> <table> - <thead><tr><th></th><th>host</th><th>status</th><th>next check</th><th>message</th></tr></thead> + <thead><tr><th><input type="checkbox" title="select all" /></th><th>host</th><th>status</th><th>next check</th><th>message</th></tr></thead> <tbody> {{ $current := "" }} {{ $mapping := .Mappings }} |