Info icon for problem values

This commit is contained in:
Magnus Åhall 2024-07-04 08:54:03 +02:00
parent aa368c0b0d
commit df714c750b
5 changed files with 80 additions and 25 deletions

View file

@ -7,22 +7,26 @@ import (
// Standard
"database/sql"
"encoding/json"
"fmt"
"sort"
"strings"
"time"
)
type Problem struct {// {{{
ID int
Start time.Time
End sql.NullTime
Acknowledged bool
Datapoints map[string]any
TriggerID int `json:"trigger_id"`
TriggerName string `json:"trigger_name"`
AreaName string `json:"area_name"`
SectionName string `json:"section_name"`
}// }}}
type Problem struct { // {{{
ID int
Start time.Time
End sql.NullTime
Acknowledged bool
Datapoints map[string]any
DatapointValues map[string]any `json:"datapoints"`
TriggerID int `json:"trigger_id"`
TriggerName string `json:"trigger_name"`
AreaName string `json:"area_name"`
SectionName string `json:"section_name"`
} // }}}
func ProblemsRetrieve() (problems []Problem, err error) {// {{{
func ProblemsRetrieve() (problems []Problem, err error) { // {{{
problems = []Problem{}
row := service.Db.Conn.QueryRow(`
SELECT
@ -33,6 +37,7 @@ func ProblemsRetrieve() (problems []Problem, err error) {// {{{
p.start,
p.end,
p.acknowledged,
p.datapoints,
t.id AS trigger_id,
t.name AS trigger_name,
a.name AS area_name,
@ -53,6 +58,7 @@ func ProblemsRetrieve() (problems []Problem, err error) {// {{{
null,
null,
false,
'{}',
-1 AS trigger_id,
CONCAT(
'NODATA: ',
@ -84,8 +90,8 @@ func ProblemsRetrieve() (problems []Problem, err error) {// {{{
err = we.Wrap(err)
}
return
}// }}}
func ProblemStart(trigger Trigger) (problemID int, err error) {// {{{
} // }}}
func ProblemStart(trigger Trigger) (problemID int, err error) { // {{{
row := service.Db.Conn.QueryRow(`
SELECT COUNT(id)
FROM problem
@ -113,8 +119,8 @@ func ProblemStart(trigger Trigger) (problemID int, err error) {// {{{
}
}
return
}// }}}
func ProblemClose(trigger Trigger) (problemID int, err error) {// {{{
} // }}}
func ProblemClose(trigger Trigger) (problemID int, err error) { // {{{
row := service.Db.Conn.QueryRow(`UPDATE problem SET "end"=NOW() WHERE trigger_id=$1 AND "end" IS NULL RETURNING id`, trigger.ID)
err = row.Scan(&problemID)
@ -128,12 +134,26 @@ func ProblemClose(trigger Trigger) (problemID int, err error) {// {{{
return
}
return
}// }}}
func ProblemAcknowledge(id int, state bool) (err error) {// {{{
} // }}}
func ProblemAcknowledge(id int, state bool) (err error) { // {{{
_, err = service.Db.Conn.Exec(`UPDATE problem SET "acknowledged"=$2 WHERE id=$1`, id, state)
if err != nil {
err = we.Wrap(err).WithData(id)
return
}
return
}// }}}
} // }}}
func (p Problem) FormattedValues() string {
out := []string{}
for key, val := range p.DatapointValues {
timeVal, ok := val.(time.Time)
if ok {
logger.Info("FOO", "timeVal", timeVal)
}
out = append(out, fmt.Sprintf("%s: %v", key, val))
}
sort.Strings(out)
return strings.Join(out, "\n")
}