changeset 3201:d5294f1a4ad4

First fix for waterlevel classifications.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 08 May 2019 16:00:24 +0200
parents f7d7fdc58cad
children 7c59955fbcca
files pkg/controllers/bottlenecks.go
diffstat 1 files changed, 24 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/bottlenecks.go	Wed May 08 15:58:37 2019 +0200
+++ b/pkg/controllers/bottlenecks.go	Wed May 08 16:00:24 2019 +0200
@@ -139,6 +139,7 @@
 	if len(measurements) == 0 ||
 		to.Before(measurements[0].when) ||
 		from.After(measurements[len(measurements)-1].when) {
+		log.Println("empty")
 		return result
 	}
 
@@ -162,18 +163,21 @@
 		var start, end time.Time
 
 		switch {
-		case !p2.when.After(p2.when):
+		case !p2.when.After(p1.when):
 			// Segment invalid
+			// log.Println("invalid")
 			continue pairs
 
 		case p1.when.After(to) || p2.when.Before(from):
 			// Segment complete outside.
+			// log.Println("complete outside")
 			continue pairs
 
 		case p1.when.After(from) && p2.when.Before(to):
 			// (from-to) is complete inside segment.
 			// invalid += p1.when.Sub(from)
 			// invalid += to.Sub(p2.when)
+			// log.Println("complete inside")
 			v := vbt(p1, p2)
 			f, _ := v(from)
 			t, _ := v(to)
@@ -183,6 +187,7 @@
 		case p1.when.After(from):
 			// from is inside segment
 			// invalid += p1.when.Sub(from)
+			// log.Println("from is inside")
 			f, _ := vbt(p1, p2)(from)
 			classify(common.InterpolateTimeByValue(
 				from, f,
@@ -193,6 +198,7 @@
 		case p2.when.Before(to):
 			// to is inside segment
 			// invalid += to.Sub(p2.when)
+			// log.Println("to is inside")
 			t, _ := vbt(p1, p2)(to)
 			classify(common.InterpolateTimeByValue(
 				p1.when, access(p1),
@@ -202,6 +208,7 @@
 
 		case !p1.when.Before(from) && !to.After(p2.when):
 			// Segment complete inside.
+			// log.Println("is complete inside")
 			classify(common.InterpolateTimeByValue(
 				p1.when, access(p1),
 				p2.when, access(p2),
@@ -551,8 +558,9 @@
 			return
 		}
 	} else {
-		from = time.Now().AddDate(-1, 0, 0).UTC()
+		from = time.Now().AddDate(-1, 0, 0)
 	}
+	from = from.UTC()
 
 	if t := req.FormValue("to"); t != "" {
 		var err error
@@ -563,8 +571,9 @@
 			return
 		}
 	} else {
-		to = from.AddDate(1, 0, 0).UTC()
+		to = from.AddDate(1, 0, 0)
 	}
+	to = to.UTC()
 
 	if to.Before(from) {
 		to, from = from, to
@@ -630,14 +639,25 @@
 		return
 	}
 
+	// log.Println(len(ms))
+	//for i := range ms {
+	//	log.Println(ms[i].when, ms[i].depth)
+	//}
+
 	interval := intervals[mode](from, to)
 
+	//log.Printf("first: %v\n", ms[0].when)
+	//log.Printf("last: %v\n", ms[len(ms)-1].when)
+
 	for pfrom, pto, label := interval(); label != ""; pfrom, pto, label = interval() {
 
+		//log.Printf("pfrom: %v\n", pfrom)
+
 		// Find good starting point
 		idx := sort.Search(len(ms), func(i int) bool {
-			return !ms[i].when.After(pfrom)
+			return !ms[i].when.Before(pfrom)
 		})
+		//log.Printf("%d\n", idx)
 		if idx > 0 {
 			idx--
 		}