diff options
Diffstat (limited to 'cmd/monfront/main.go')
-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 }} |