From 530204c1a52d7db2d5ee03a93da2cb755b003e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20=C3=85hall?= Date: Thu, 27 Jun 2024 13:45:01 +0200 Subject: [PATCH] Refactored timeparsing from HTML input --- helper.go | 18 +++++++++++++++ main.go | 30 +++++++++---------------- static/css/default_light/datapoints.css | 3 +++ static/css/gruvbox/datapoints.css | 3 +++ static/less/datapoints.less | 4 ++++ views/pages/datapoint_values.gotmpl | 9 +++++--- 6 files changed, 45 insertions(+), 22 deletions(-) diff --git a/helper.go b/helper.go index 0dab728..0d9731d 100644 --- a/helper.go +++ b/helper.go @@ -1,6 +1,9 @@ package main import ( + // External + werr "git.gibonuddevalla.se/go/wrappederror" + // Standard "time" ) @@ -9,3 +12,18 @@ func stringToTime(strTime string) (t time.Time, err error) {// {{{ t, err = time.Parse(time.RFC3339, strTime) return }// }}} +func parseHTMLDateTime(str string, dflt time.Time) (t time.Time, err error) { + // Browser sending 2024-06-27T10:43 (16 characters) when seconds is 00. + if len(str) == 16 { + str += ":00" + } + if str == "" { + return dflt, nil + } else { + t, err = time.ParseInLocation("2006-01-02T15:04:05", str, smonConfig.Timezone()) + if err != nil { + err = werr.Wrap(err) + } + } + return +} diff --git a/main.go b/main.go index 2e6b594..98a57bc 100644 --- a/main.go +++ b/main.go @@ -369,7 +369,7 @@ func getPage(layout, page string) (tmpl *template.Template, err error) { // {{{ funcMap := template.FuncMap{ "format_time": func(t time.Time) template.HTML { return template.HTML( - t.In(smonConfig.Timezone()).Format(`2006-01-02 15:04:05`), + t.In(smonConfig.Timezone()).Format(`2006-01-02 15:04:05:05`), ) }, } @@ -709,26 +709,18 @@ func pageDatapointValues(w http.ResponseWriter, r *http.Request, _ *session.T) { } var timeFrom, timeTo time.Time - timeFromParam := r.URL.Query().Get("f") - if timeFromParam == "" { - timeFrom = time.Now().Add(time.Duration(-(24 * 7) * time.Hour)) - } else { - timeFrom, err = time.Parse("2006-01-02T15:04:05", timeFromParam) - if err != nil { - httpError(w, werr.Wrap(err).Log()) - return - } + yesterday := time.Now().Add(time.Duration(-24 * time.Hour)) + + timeFrom, err = parseHTMLDateTime(r.URL.Query().Get("f"), yesterday) + if err != nil { + httpError(w, werr.Wrap(err).Log()) + return } - timeToParam := r.URL.Query().Get("t") - if timeToParam == "" { - timeTo = time.Now() - } else { - timeTo, err = time.Parse("2006-01-02T15:04:05", timeToParam) - if err != nil { - httpError(w, werr.Wrap(err).Log()) - return - } + timeTo, err = parseHTMLDateTime(r.URL.Query().Get("t"), time.Now()) + if err != nil { + httpError(w, werr.Wrap(err).Log()) + return } // Fetch data point values according to the times. diff --git a/static/css/default_light/datapoints.css b/static/css/default_light/datapoints.css index 76710e1..3bf9009 100644 --- a/static/css/default_light/datapoints.css +++ b/static/css/default_light/datapoints.css @@ -42,6 +42,9 @@ gap: 16px; white-space: nowrap; } +#values .header { + font-weight: bold; +} .widgets { display: grid; grid-template-columns: min-content 1fr; diff --git a/static/css/gruvbox/datapoints.css b/static/css/gruvbox/datapoints.css index f22e663..c497d4d 100644 --- a/static/css/gruvbox/datapoints.css +++ b/static/css/gruvbox/datapoints.css @@ -42,6 +42,9 @@ gap: 16px; white-space: nowrap; } +#values .header { + font-weight: bold; +} .widgets { display: grid; grid-template-columns: min-content 1fr; diff --git a/static/less/datapoints.less b/static/less/datapoints.less index 1d2accd..dba6fd8 100644 --- a/static/less/datapoints.less +++ b/static/less/datapoints.less @@ -51,6 +51,10 @@ grid-template-columns: repeat(2, min-content); gap: 16px; white-space: nowrap; + + .header { + font-weight: bold; + } } .widgets { diff --git a/views/pages/datapoint_values.gotmpl b/views/pages/datapoint_values.gotmpl index 0a987cb..8d49b7b 100644 --- a/views/pages/datapoint_values.gotmpl +++ b/views/pages/datapoint_values.gotmpl @@ -14,8 +14,8 @@ {{ end }} - - + +

@@ -43,9 +43,12 @@ {{ else }}
+
Value added
+
Value
+
{{ range .Data.Values }}
{{ format_time .Ts }}
-
{{ .Value }}
+
{{ format_time .Value }}
{{ end }}
{{ end }}