monfront - enable jumping from groups to checks

This allows to view all the important checks for a group much easier.
This commit is contained in:
Gibheer 2019-03-08 15:18:12 +01:00
parent bb48d9387b
commit bef2cfa349

View File

@ -37,6 +37,7 @@ type (
Checks []check
CheckDetails *checkDetails
Groups []group
Unhandled bool // set this flag when unhandled was called
}
MapEntry struct {
@ -250,6 +251,7 @@ func checkAction(w http.ResponseWriter, r *http.Request) {
}
func showChecks(w http.ResponseWriter, r *http.Request) {
con := Context{}
query := `select c.id, n.id, n.name, co.name, ac.mapping_id, ac.states[1] as state,
ac.enabled, ac.notice, ac.next_time, ac.msg,
case when cn.check_id is null then false else true end as notify_enabled
@ -269,6 +271,7 @@ func showChecks(w http.ResponseWriter, r *http.Request) {
}
if strings.HasPrefix(r.URL.Path, "/unhandled") {
where = append(where, `ac.states[1] > 0 and ac.acknowledged = false and ac.enabled = true`)
con.Unhandled = true
}
if search, found := r.URL.Query()["search"]; found {
idx += 1
@ -324,9 +327,7 @@ func showChecks(w http.ResponseWriter, r *http.Request) {
}
checks = append(checks, c)
}
con := Context{
Checks: checks,
}
con.Checks = checks
if err := loadMappings(&con); err != nil {
con.Error = "could not load mapping data"
w.WriteHeader(http.StatusInternalServerError)
@ -345,6 +346,7 @@ func showChecks(w http.ResponseWriter, r *http.Request) {
}
func showGroups(w http.ResponseWriter, r *http.Request) {
con := Context{}
query := `select groupid, groupname, nodeid, nodename, mapping_id, state
from (
select g.id groupid, g.name groupname, n.id nodeid, n.name nodename, ac.mapping_id,
@ -359,6 +361,7 @@ func showGroups(w http.ResponseWriter, r *http.Request) {
where state = maxstate`
if strings.HasPrefix(r.URL.Path, "/unhandled") {
query += ` and state > 0`
con.Unhandled = true
}
if strings.HasPrefix(r.URL.Path, "/unhandled") {
@ -387,9 +390,7 @@ func showGroups(w http.ResponseWriter, r *http.Request) {
}
groups = append(groups, g)
}
con := Context{
Groups: groups,
}
con.Groups = groups
if err := loadMappings(&con); err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("problem with the mappings"))
@ -790,7 +791,7 @@ var (
{{ range .Groups }}
<tr>
<td><input type="checkbox" name="nodes" value="{{ .NodeId }}" /></td>
<td>{{ if ne $current .Name }}{{ $current = .Name }}<a href="/checks?group_id={{ .NodeId }}">{{ .Name }}</a>{{ end }}</td>
<td>{{ if ne $current .Name }}{{ $current = .Name }}<a href="{{ if $.Unhandled }}/unhandled{{ end }}/checks?group_id={{ .GroupId }}">{{ .Name }}</a>{{ end }}</td>
<td><a href="/checks?node_id={{ .NodeId }}">{{ .NodeName }}</a></td>
<td class="state-{{ .MappingId }}-{{ .State }}">{{ (index $mapping .MappingId .State).Title }}</td>
</tr>