Adding datapoints to triggers
This commit is contained in:
parent
b0a0f9290e
commit
c746343dc0
15 changed files with 269 additions and 90 deletions
63
main.go
63
main.go
|
|
@ -103,13 +103,17 @@ func main() { // {{{
|
|||
|
||||
service.Register("/", false, false, staticHandler)
|
||||
service.Register("/problems", false, false, pageProblems)
|
||||
|
||||
service.Register("/datapoints", false, false, pageDatapoints)
|
||||
service.Register("/datapoint/edit/{id}", false, false, pageDatapointEdit)
|
||||
service.Register("/datapoint/update/{id}", false, false, pageDatapointUpdate)
|
||||
|
||||
service.Register("/triggers", false, false, pageTriggers)
|
||||
service.Register("/trigger/edit/{id}", false, false, pageTriggerEdit)
|
||||
service.Register("/trigger/edit/{id}/{sectionID}", false, false, pageTriggerEdit)
|
||||
service.Register("/trigger/update/{id}", false, false, pageTriggerUpdate)
|
||||
service.Register("/trigger/run/{id}", false, false, pageTriggerRun)
|
||||
|
||||
service.Register("/configuration", false, false, pageConfiguration)
|
||||
service.Register("/entry/{datapoint}", false, false, entryDatapoint)
|
||||
|
||||
|
|
@ -181,13 +185,13 @@ func entryDatapoint(w http.ResponseWriter, r *http.Request, sess *session.T) { /
|
|||
if err != nil {
|
||||
err = we.Wrap(err).Log()
|
||||
logger.Error("entry", "error", err)
|
||||
|
||||
|
||||
}
|
||||
logger.Debug("entry", "datapoint", dpoint, "value", value, "trigger", trigger, "result", out)
|
||||
|
||||
switch v := out.(type) {
|
||||
case bool:
|
||||
// Trigger returning true - a problem occured
|
||||
// Trigger returning true - a problem occurred
|
||||
if v {
|
||||
err = ProblemStart(trigger)
|
||||
if err != nil {
|
||||
|
|
@ -272,6 +276,7 @@ func pageIndex(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
|||
}
|
||||
page.Render(w)
|
||||
} // }}}
|
||||
|
||||
func pageProblems(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
||||
page := Page{
|
||||
LAYOUT: "main",
|
||||
|
|
@ -297,7 +302,8 @@ func pageProblems(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
|||
page.Render(w)
|
||||
return
|
||||
} // }}}
|
||||
func pageDatapoints(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
||||
|
||||
func pageDatapoints(w http.ResponseWriter, r *http.Request, _ *session.T) { // {{{
|
||||
page := Page{
|
||||
LAYOUT: "main",
|
||||
PAGE: "datapoints",
|
||||
|
|
@ -308,7 +314,13 @@ func pageDatapoints(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {
|
|||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
logger.Info("FOO", "dps", datapoints)
|
||||
|
||||
// The datapoint selector in trigger edit wants the raw data in JSON.
|
||||
if r.URL.Query().Get("format") == "json" {
|
||||
j, _ := json.Marshal(datapoints)
|
||||
w.Write(j)
|
||||
return
|
||||
}
|
||||
|
||||
page.Data = map[string]any{
|
||||
"Datapoints": datapoints,
|
||||
|
|
@ -371,6 +383,7 @@ func pageDatapointUpdate(w http.ResponseWriter, r *http.Request, _ *session.T) {
|
|||
w.Header().Add("Location", "/datapoints")
|
||||
w.WriteHeader(302)
|
||||
} // }}}
|
||||
|
||||
func pageTriggers(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
||||
areas, err := TriggersRetrieve()
|
||||
if err != nil {
|
||||
|
|
@ -400,11 +413,26 @@ func pageTriggerEdit(w http.ResponseWriter, r *http.Request, _ *session.T) { //
|
|||
return
|
||||
}
|
||||
|
||||
// Creating a new trigger uses the edit function.
|
||||
// ID == 0 - create a new trigger.
|
||||
// ID > 0 - edit existing trigger.
|
||||
var trigger Trigger
|
||||
trigger, err = TriggerRetrieve(id)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
if id > 0 {
|
||||
trigger, err = TriggerRetrieve(id)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// A new trigger needs to know which section it belongs to.
|
||||
sectionIDStr := r.PathValue("sectionID")
|
||||
if sectionIDStr != "" {
|
||||
trigger.SectionID, err = strconv.Atoi(sectionIDStr)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
datapoints := make(map[string]Datapoint)
|
||||
|
|
@ -414,6 +442,7 @@ func pageTriggerEdit(w http.ResponseWriter, r *http.Request, _ *session.T) { //
|
|||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
dp.LastDatapointValue.TemplateValue = dp.LastDatapointValue.Value()
|
||||
datapoints[dpname] = dp
|
||||
}
|
||||
|
||||
|
|
@ -440,14 +469,23 @@ func pageTriggerUpdate(w http.ResponseWriter, r *http.Request, _ *session.T) { /
|
|||
}
|
||||
|
||||
var trigger Trigger
|
||||
trigger, err = TriggerRetrieve(id)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
if id > 0 {
|
||||
trigger, err = TriggerRetrieve(id)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
} else {
|
||||
trigger.SectionID, err = strconv.Atoi(r.FormValue("sectionID"))
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
trigger.Name = r.FormValue("name")
|
||||
trigger.Expression = r.FormValue("expression")
|
||||
trigger.Datapoints = r.Form["datapoints[]"]
|
||||
err = trigger.Update()
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
|
|
@ -492,6 +530,7 @@ func pageTriggerRun(w http.ResponseWriter, r *http.Request, _ *session.T) { // {
|
|||
w.Header().Add("Content-Type", "application/json")
|
||||
w.Write(j)
|
||||
} // }}}
|
||||
|
||||
func pageConfiguration(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
||||
areas, err := AreaRetrieve()
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue