Refactored time filter.
This commit is contained in:
parent
4c908f4891
commit
9700bc9d3c
16 changed files with 252 additions and 296 deletions
41
timefilter.go
Normal file
41
timefilter.go
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
// External
|
||||
werr "git.gibonuddevalla.se/go/wrappederror"
|
||||
|
||||
// Standard
|
||||
"time"
|
||||
)
|
||||
|
||||
func timefilterParse(timeFromStr, timeToStr, offset, preset string) (timeFrom, timeTo time.Time, err error) {
|
||||
if preset != "" {
|
||||
presetTimeInterval(time.Hour, preset, &timeFrom, &timeTo)
|
||||
return
|
||||
}
|
||||
|
||||
yesterday := time.Now().Add(time.Duration(-24 * time.Hour))
|
||||
timeFrom, err = parseHTMLDateTime(timeFromStr, yesterday)
|
||||
if err != nil {
|
||||
err = werr.Wrap(err).WithData(timeFromStr)
|
||||
return
|
||||
}
|
||||
|
||||
timeTo, err = parseHTMLDateTime(timeToStr, time.Now())
|
||||
if err != nil {
|
||||
err = werr.Wrap(err).WithData(timeToStr)
|
||||
return
|
||||
}
|
||||
|
||||
// Protect the user from switching from/to dates, leading to
|
||||
// zero matching values from the database.
|
||||
if timeFrom.After(timeTo) {
|
||||
timeFrom, timeTo = timeTo, timeFrom
|
||||
}
|
||||
|
||||
// Apply an optionally set offset (in seconds).
|
||||
timeFrom = applyTimeOffset(timeFrom, time.Second, offset)
|
||||
timeTo = applyTimeOffset(timeTo, time.Second, offset)
|
||||
|
||||
return
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue