monfront - fix actions on checks
This is related to #6. The muting, enable and disable were not working properly, because the date was not set when the check was updated. With this comes also the first icon to represent the muted status.
This commit is contained in:
parent
db3a7cdda9
commit
7c541189fe
@ -48,6 +48,7 @@ type (
|
|||||||
MappingId int
|
MappingId int
|
||||||
State int
|
State int
|
||||||
Enabled bool
|
Enabled bool
|
||||||
|
Notify bool
|
||||||
Notice sql.NullString
|
Notice sql.NullString
|
||||||
NextTime time.Time
|
NextTime time.Time
|
||||||
Msg string
|
Msg string
|
||||||
@ -126,9 +127,9 @@ func checkAction(w http.ResponseWriter, r *http.Request) {
|
|||||||
setTable = "checks_notify"
|
setTable = "checks_notify"
|
||||||
setClause = "enabled = true"
|
setClause = "enabled = true"
|
||||||
case "enable":
|
case "enable":
|
||||||
setClause = "enabled = true"
|
setClause = "enabled = true, updated = now()"
|
||||||
case "disable":
|
case "disable":
|
||||||
setClause = "enabled = false"
|
setClause = "enabled = false, updated = now()"
|
||||||
case "reschedule":
|
case "reschedule":
|
||||||
setClause = "next_time = now()"
|
setClause = "next_time = now()"
|
||||||
setTable = "active_checks"
|
setTable = "active_checks"
|
||||||
@ -184,14 +185,16 @@ func checkAction(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
func showChecks(w http.ResponseWriter, r *http.Request) {
|
func showChecks(w http.ResponseWriter, r *http.Request) {
|
||||||
query := `select c.id, n.id, n.name, co.name, ac.mapping_id, ac.states[1] as state,
|
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
|
ac.enabled, ac.notice, ac.next_time, ac.msg,
|
||||||
|
case when cn.check_id is null then false else true end as notify_enabled
|
||||||
from active_checks ac
|
from active_checks ac
|
||||||
join checks c on ac.check_id = c.id
|
join checks c on ac.check_id = c.id
|
||||||
join nodes n on c.node_id = n.id
|
join nodes n on c.node_id = n.id
|
||||||
join commands co on c.command_id = co.id`
|
join commands co on c.command_id = co.id
|
||||||
|
left join ( select distinct check_id from checks_notify where enabled = true) cn on c.id = cn.check_id`
|
||||||
where := []string{}
|
where := []string{}
|
||||||
if strings.HasPrefix(r.URL.Path, "/unhandled") {
|
if strings.HasPrefix(r.URL.Path, "/unhandled") {
|
||||||
where = append(where, `ac.states[1] > 0`)
|
where = append(where, `ac.states[1] > 0 and ac.acknowledged = false`)
|
||||||
}
|
}
|
||||||
idx := 0
|
idx := 0
|
||||||
params := []interface{}{}
|
params := []interface{}{}
|
||||||
@ -236,7 +239,7 @@ func showChecks(w http.ResponseWriter, r *http.Request) {
|
|||||||
checks := []check{}
|
checks := []check{}
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
c := check{}
|
c := check{}
|
||||||
err := rows.Scan(&c.CheckID, &c.NodeId, &c.NodeName, &c.CommandName, &c.MappingId, &c.State, &c.Enabled, &c.Notice, &c.NextTime, &c.Msg)
|
err := rows.Scan(&c.CheckID, &c.NodeId, &c.NodeName, &c.CommandName, &c.MappingId, &c.State, &c.Enabled, &c.Notice, &c.NextTime, &c.Msg, &c.Notify)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
w.Write([]byte("problems with the database"))
|
w.Write([]byte("problems with the database"))
|
||||||
@ -407,6 +410,8 @@ var (
|
|||||||
table th { background: #cccccc; color: #3a5f78; }
|
table th { background: #cccccc; color: #3a5f78; }
|
||||||
table td, table th { text-align: center; }
|
table td, table th { text-align: center; }
|
||||||
table pre { font-size: 75%; }
|
table pre { font-size: 75%; }
|
||||||
|
table td.disabled { text-decoration: line-through; }
|
||||||
|
.icon { height: 1em; margin: 0; width: 1em; vertical-align: bottom; margin-right: 0.5em;}
|
||||||
{{ range $mapId, $mapping := .Mappings }}
|
{{ range $mapId, $mapping := .Mappings }}
|
||||||
{{ range $target, $val := $mapping }}
|
{{ range $target, $val := $mapping }}
|
||||||
td.state-{{ $mapId }}-{{ $target }} { background: {{ $val.Color }}; }
|
td.state-{{ $mapId }}-{{ $target }} { background: {{ $val.Color }}; }
|
||||||
@ -414,7 +419,7 @@ var (
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
setTimeout(function() { location.reload(true) }, 30000)
|
setTimeout(function() { if (document.activeElement.tagName == "BODY") { location.reload(true) } }, 30000)
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@ -441,6 +446,7 @@ var (
|
|||||||
<button type="submit">search</button>
|
<button type="submit">search</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="submenu"><span class="header">{{ now.Format "2006.01.02 15:04:05" }}</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>`,
|
</nav>`,
|
||||||
"footer": `</body></html>`,
|
"footer": `</body></html>`,
|
||||||
@ -476,8 +482,8 @@ var (
|
|||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox" name="checks" value="{{ .CheckID }}" /></td>
|
<td><input type="checkbox" name="checks" value="{{ .CheckID }}" /></td>
|
||||||
<td>{{ if ne $current .NodeName }}{{ $current = .NodeName }}<a href="/checks?node_id={{ .NodeId }}">{{ .NodeName }}</a>{{ end }}</td>
|
<td>{{ if ne $current .NodeName }}{{ $current = .NodeName }}<a href="/checks?node_id={{ .NodeId }}">{{ .NodeName }}</a>{{ end }}</td>
|
||||||
<td class="state-{{ .MappingId }}-{{ .State }}">{{ .CommandName }} - {{ (index $mapping .MappingId .State).Title }}</td>
|
<td class="state-{{ .MappingId }}-{{ .State }}">{{ if ne .Notify true }}{{ template "icon-mute" . }}{{ end }}{{ .CommandName }} - {{ (index $mapping .MappingId .State).Title }}</td>
|
||||||
<td>{{ .NextTime.Format "2006.01.02 15:04:05" }}</td>
|
<td {{ if ne .Enabled true }}title="This check is disabled." class="disabled"{{ end }}>{{ .NextTime.Format "2006.01.02 15:04:05" }} - in {{ in .NextTime }}</td>
|
||||||
<td><pre>{{ .Msg }}</pre></td>
|
<td><pre>{{ .Msg }}</pre></td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@ -527,9 +533,12 @@ var (
|
|||||||
</content>
|
</content>
|
||||||
</form>
|
</form>
|
||||||
{{ template "footer" . }}`,
|
{{ template "footer" . }}`,
|
||||||
|
"icon-mute": `<svg class="icon" width="100" height="100" viewBox="0 0 35.3 35.3" version="1.1"><title>Check is muted</title><style>.s0{fill:#191919;}</style><g transform="translate(0,-261.72223)"><path d="m17.6 261.7v35.3L5.3 284.7H0v-10.6l5.3 0zM30.2 273.1l-3.7 3.7-3.7-3.7-2.5 2.5 3.7 3.7-3.7 3.7 2.5 2.5 3.7-3.7 3.7 3.7 2.5-2.5-3.7-3.7 3.7-3.7z" fill="#191919"/></g></svg>`,
|
||||||
}
|
}
|
||||||
TmplUnhandledGroups = `TODO`
|
TmplUnhandledGroups = `TODO`
|
||||||
Funcs = template.FuncMap{
|
Funcs = template.FuncMap{
|
||||||
"sub": func(base, amount int) int { return base - amount },
|
"sub": func(base, amount int) int { return base - amount },
|
||||||
|
"in": func(t time.Time) time.Duration { return t.Sub(time.Now()).Round(1 * time.Second) },
|
||||||
|
"now": func() time.Time { return time.Now() },
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user