diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 062927ab..11a07e52 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1,3 @@
github: hunterlong
+patreon: statping
custom: ['https://www.buymeacoffee.com/hunterlong']
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0147aadb..dbb47bb8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 0.90.26 (04-13-2020)
+- Fixed Delete Failures button/function
+- Removed timezone field from Settings (core)
+- Modified CDN asset URL
+- Fixed single Service view, more complex charts
+
# 0.90.25
- Added string response on OnTest for Notifiers
- Modified UI to show user the response for a Notifier.
diff --git a/Makefile b/Makefile
index d83fad6b..cc09f128 100644
--- a/Makefile
+++ b/Makefile
@@ -27,8 +27,8 @@ lite: clean
reup: down clean compose-build-full up
-test: clean
- go test -v -p=4 -ldflags="-X main.VERSION=testing" -coverprofile=coverage.out ./...
+test: clean compile
+ go test -v -p=1 -ldflags="-X main.VERSION=testing" -coverprofile=coverage.out ./...
# build all arch's and release Statping
release: test-deps
diff --git a/database/grouping.go b/database/grouping.go
index f81b6d5b..6c76b821 100644
--- a/database/grouping.go
+++ b/database/grouping.go
@@ -146,6 +146,45 @@ type isObject interface {
Db() Database
}
+func ParseRequest(r *http.Request) (*GroupQuery, error) {
+ fields := parseGet(r)
+ grouping := fields.Get("group")
+ startField := utils.ToInt(fields.Get("start"))
+ endField := utils.ToInt(fields.Get("end"))
+ limit := utils.ToInt(fields.Get("limit"))
+ offset := utils.ToInt(fields.Get("offset"))
+ fill, _ := strconv.ParseBool(fields.Get("fill"))
+ orderBy := fields.Get("order")
+ if limit == 0 {
+ limit = 10000
+ }
+
+ if grouping == "" {
+ grouping = "1h"
+ }
+ groupDur, err := time.ParseDuration(grouping)
+ if err != nil {
+ log.Errorln(err)
+ groupDur = 1 * time.Hour
+ }
+
+ query := &GroupQuery{
+ Start: time.Unix(startField, 0).UTC(),
+ End: time.Unix(endField, 0).UTC(),
+ Group: groupDur,
+ Order: orderBy,
+ Limit: int(limit),
+ Offset: int(offset),
+ FillEmpty: fill,
+ }
+
+ if query.Start.After(query.End) {
+ return nil, errors.New("start time is after ending time")
+ }
+
+ return query, nil
+}
+
func ParseQueries(r *http.Request, o isObject) (*GroupQuery, error) {
fields := parseGet(r)
grouping := fields.Get("group")
@@ -169,6 +208,9 @@ func ParseQueries(r *http.Request, o isObject) (*GroupQuery, error) {
log.Errorln(err)
groupDur = 1 * time.Hour
}
+ if endField == 0 {
+ endField = utils.Now().Unix()
+ }
query := &GroupQuery{
Start: time.Unix(startField, 0).UTC(),
diff --git a/frontend/public/base.gohtml b/frontend/public/base.gohtml
index 525d21e2..95564ce7 100644
--- a/frontend/public/base.gohtml
+++ b/frontend/public/base.gohtml
@@ -10,9 +10,9 @@