diff --git a/main.go b/main.go index cc67c04..ad13df4 100644 --- a/main.go +++ b/main.go @@ -535,7 +535,15 @@ func pageProblems(w http.ResponseWriter, r *http.Request, _ *session.T) { // {{{ return } - problems, err := ProblemsRetrieve(true, timeFrom, timeTo) + // GET parameters for this page + var selection string + if r.URL.Query().Get("selection") == "all" { + selection = "ALL" + } else { + selection = "CURRENT" + } + + problems, err := ProblemsRetrieve(selection == "ALL", timeFrom, timeTo) if err != nil { httpError(w, werr.Wrap(err).Log()) return @@ -560,7 +568,9 @@ func pageProblems(w http.ResponseWriter, r *http.Request, _ *session.T) { // {{{ page.Data = map[string]any{ "Problems": problems, "ProblemsGrouped": problemsGrouped, + "Selection": selection, + "TimeHidden": selection == "CURRENT", "TimeSubmit": "/problems", "TimeFrom": timeFrom.Format("2006-01-02T15:04:05"), "TimeTo": timeTo.Format("2006-01-02T15:04:05"), diff --git a/problem.go b/problem.go index 24f8151..2992704 100644 --- a/problem.go +++ b/problem.go @@ -26,7 +26,7 @@ type Problem struct { // {{{ SectionName string `json:"section_name"` } // }}} -func ProblemsRetrieve(archived bool, from, to time.Time) (problems []Problem, err error) { // {{{ +func ProblemsRetrieve(showCurrent bool, from, to time.Time) (problems []Problem, err error) { // {{{ problems = []Problem{} row := service.Db.Conn.QueryRow(` SELECT @@ -48,11 +48,14 @@ func ProblemsRetrieve(archived bool, from, to time.Time) (problems []Problem, er INNER JOIN area a ON s.area_id = a.id WHERE CASE - WHEN $1 THEN true - WHEN NOT $1 THEN p.end IS NULL - END AND - p.start >= $2 AND - p.end <= $3 + WHEN NOT $1 THEN p.end IS NULL + WHEN $1 THEN + p.start >= $2 AND + ( + p.end IS NULL OR + p.end <= $3 + ) + END ORDER BY p.start DESC) @@ -61,7 +64,7 @@ func ProblemsRetrieve(archived bool, from, to time.Time) (problems []Problem, er (SELECT -1 AS id, - null, + dp.last_value, null, false, '{}', @@ -78,7 +81,7 @@ func ProblemsRetrieve(archived bool, from, to time.Time) (problems []Problem, er ORDER BY dp.name ASC) ) AS problems`, - archived, + showCurrent, from, to, ) diff --git a/static/css/default_light/gruvbox.css b/static/css/default_light/gruvbox.css index d0860ec..f2b59e8 100644 --- a/static/css/default_light/gruvbox.css +++ b/static/css/default_light/gruvbox.css @@ -13,3 +13,12 @@ body { background-color: #a00; text-align: center; } +span.error { + color: #f66; +} +input[type="datetime-local"] { + background-color: #1b4e78; + color: #ccc; + border: 1px solid #535353; + padding: 6px; +} diff --git a/static/css/default_light/main.css b/static/css/default_light/main.css index 4bae369..9189a40 100644 --- a/static/css/default_light/main.css +++ b/static/css/default_light/main.css @@ -213,6 +213,12 @@ span.time { span.seconds { display: none; } +span.ok { + color: #0a0; +} +span.error { + color: #a00; +} label { user-select: none; } @@ -233,6 +239,9 @@ label { width: min-content; border-radius: 6px; } +#time-selector.hidden { + display: none; +} #time-selector button { width: 100px; margin-top: 12px; diff --git a/static/css/default_light/notifications.css b/static/css/default_light/notifications.css index 9dee5c0..f294e27 100644 --- a/static/css/default_light/notifications.css +++ b/static/css/default_light/notifications.css @@ -21,9 +21,3 @@ input[type="datetime-local"] { font-weight: 800; color: #7bb8eb; } -#notifications .ok { - color: #0a0; -} -#notifications .error { - color: #a00; -} diff --git a/static/css/default_light/problems.css b/static/css/default_light/problems.css index b8d440b..85cb0b5 100644 --- a/static/css/default_light/problems.css +++ b/static/css/default_light/problems.css @@ -45,7 +45,7 @@ } #areas .area .section { display: grid; - grid-template-columns: repeat(3, min-content); + grid-template-columns: repeat(4, min-content); grid-gap: 8px 12px; } #areas .area .section .name { diff --git a/static/css/gruvbox/gruvbox.css b/static/css/gruvbox/gruvbox.css index d0860ec..400e861 100644 --- a/static/css/gruvbox/gruvbox.css +++ b/static/css/gruvbox/gruvbox.css @@ -13,3 +13,12 @@ body { background-color: #a00; text-align: center; } +span.error { + color: #f66; +} +input[type="datetime-local"] { + background-color: #202020; + color: #ccc; + border: 1px solid #535353; + padding: 6px; +} diff --git a/static/css/gruvbox/main.css b/static/css/gruvbox/main.css index 727b671..6d2377f 100644 --- a/static/css/gruvbox/main.css +++ b/static/css/gruvbox/main.css @@ -213,6 +213,12 @@ span.time { span.seconds { display: none; } +span.ok { + color: #0a0; +} +span.error { + color: #a00; +} label { user-select: none; } @@ -233,6 +239,9 @@ label { width: min-content; border-radius: 6px; } +#time-selector.hidden { + display: none; +} #time-selector button { width: 100px; margin-top: 12px; diff --git a/static/css/gruvbox/notifications.css b/static/css/gruvbox/notifications.css index 1cc900e..601d899 100644 --- a/static/css/gruvbox/notifications.css +++ b/static/css/gruvbox/notifications.css @@ -21,9 +21,3 @@ input[type="datetime-local"] { font-weight: 800; color: #777; } -#notifications .ok { - color: #0a0; -} -#notifications .error { - color: #a00; -} diff --git a/static/css/gruvbox/problems.css b/static/css/gruvbox/problems.css index 0e69462..7670ba8 100644 --- a/static/css/gruvbox/problems.css +++ b/static/css/gruvbox/problems.css @@ -45,7 +45,7 @@ } #areas .area .section { display: grid; - grid-template-columns: repeat(3, min-content); + grid-template-columns: repeat(4, min-content); grid-gap: 8px 12px; } #areas .area .section .name { diff --git a/static/js/problems.mjs b/static/js/problems.mjs index 1e2361f..8f45b3e 100644 --- a/static/js/problems.mjs +++ b/static/js/problems.mjs @@ -34,6 +34,14 @@ export class UI { } } + selectCurrent() { + location.href = '/problems?selection=current' + } + + selectAll() { + location.href = '/problems?selection=all' + } + displayList() { document.querySelector('.display-list').classList.remove('hidden') document.querySelector('.display-areas').classList.add('hidden') diff --git a/static/less/gruvbox.less b/static/less/gruvbox.less index 04e8977..7fa24ef 100644 --- a/static/less/gruvbox.less +++ b/static/less/gruvbox.less @@ -20,3 +20,14 @@ body { background-color: #a00; text-align: center; } + +span.error { + color: #f66; +} + +input[type="datetime-local"] { + background-color: @bg2; + color: #ccc; + border: 1px solid #535353; + padding: 6px; +} diff --git a/static/less/main.less b/static/less/main.less index 689ca8f..dc4e7d5 100644 --- a/static/less/main.less +++ b/static/less/main.less @@ -266,6 +266,14 @@ span.seconds { display: none; } +span.ok { + color: #0a0; +} + +span.error { + color: #a00; +} + label { user-select: none; } @@ -289,6 +297,10 @@ label { width: min-content; border-radius: 6px; + &.hidden { + display: none; + } + button { width: 100px; margin-top: 12px; diff --git a/static/less/notifications.less b/static/less/notifications.less index 48a9614..6c9ee4e 100644 --- a/static/less/notifications.less +++ b/static/less/notifications.less @@ -25,12 +25,4 @@ input[type="datetime-local"] { font-weight: @bold; color: @text3; } - - .ok { - color: #0a0; - } - - .error { - color: #a00; - } } diff --git a/static/less/problems.less b/static/less/problems.less index 79f711f..92d3723 100644 --- a/static/less/problems.less +++ b/static/less/problems.less @@ -51,7 +51,7 @@ .area { .section { display: grid; - grid-template-columns: repeat(3, min-content); + grid-template-columns: repeat(4, min-content); grid-gap: 8px 12px; .name { diff --git a/views/components/timefilter.gotmpl b/views/components/timefilter.gotmpl index 8742015..0944254 100644 --- a/views/components/timefilter.gotmpl +++ b/views/components/timefilter.gotmpl @@ -14,7 +14,7 @@ -
+ diff --git a/views/pages/datapoint_values.gotmpl b/views/pages/datapoint_values.gotmpl index 40895ae..3aa49e0 100644 --- a/views/pages/datapoint_values.gotmpl +++ b/views/pages/datapoint_values.gotmpl @@ -7,19 +7,22 @@ {{ block "page_label" . }}{{end}} -
+ {{ block "timefilter" . }}{{ end }} + + {{ if eq .Data.Datapoint.Datatype "INT" }} +
- - {{ block "timefilter" . }}{{ end }} + {{ end }} {{ if $graph }} diff --git a/views/pages/problems.gotmpl b/views/pages/problems.gotmpl index a258601..39fc1ee 100644 --- a/views/pages/problems.gotmpl +++ b/views/pages/problems.gotmpl @@ -11,12 +11,19 @@ {{ block "page_label" . }}{{ end }}
+ + +
+ +
+ + {{ block "timefilter" . }}{{ end }} + +
- {{ block "timefilter" . }}{{ end }} - + + {{ end }}