Mercurial > gemma
changeset 3114:c68cef0346b7
Display Available Fairway Depths: Introduced type to re-use code from Available Fairway Depths vs. LNWL.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 28 Apr 2019 15:26:14 +0200 |
parents | b7673a704b0a |
children | 524bc6545b20 |
files | pkg/controllers/bottlenecks.go |
diffstat | 1 files changed, 24 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/controllers/bottlenecks.go Fri Apr 26 11:44:05 2019 +0200 +++ b/pkg/controllers/bottlenecks.go Sun Apr 28 15:26:14 2019 +0200 @@ -91,11 +91,20 @@ depth int value int } + + availMeasurements []availMeasurement ) -func classifyAvailMeasurements( +func (measurement *availMeasurement) getDepth() float64 { + return float64(measurement.depth) +} + +func (measurement *availMeasurement) getValue() float64 { + return float64(measurement.value) +} + +func (measurements availMeasurements) classifyAvailMeasurements( from, to time.Time, - measurements []availMeasurement, classes []referenceValue, access func(*availMeasurement) float64, ) []time.Duration { @@ -108,6 +117,12 @@ //var invalid time.Duration result := make([]time.Duration, len(classes)+1) + if len(measurements) == 0 || + to.Before(measurements[0].when) || + from.After(measurements[len(measurements)-1].when) { + return result + } + cvs := make([]classValues, len(classes)) classify := func(v func(float64) (time.Time, common.ValueRangeKind)) { @@ -336,7 +351,7 @@ } } - loadDepthValues := func() ([]availMeasurement, error) { + loadDepthValues := func() (availMeasurements, error) { rows, err := conn.QueryContext( ctx, selectAvailableDepthSQL, bn, los, from, to) @@ -345,7 +360,7 @@ } defer rows.Close() - var ms []availMeasurement + var ms availMeasurements for rows.Next() { var m availMeasurement @@ -363,7 +378,7 @@ return ms, nil } - var ms []availMeasurement + var ms availMeasurements if ms, err = loadDepthValues(); err != nil { return } @@ -376,11 +391,10 @@ return } - lnwl := classifyAvailMeasurements( + lnwl := ms.classifyAvailMeasurements( from, to, - ms, lnwlRefs, - func(m *availMeasurement) float64 { return float64(m.value) }, + (*availMeasurement).getValue, ) afdRefs := []referenceValue{ @@ -389,11 +403,10 @@ {2, 250}, } - afd := classifyAvailMeasurements( + afd := ms.classifyAvailMeasurements( from, to, - ms, afdRefs, - func(m *availMeasurement) float64 { return float64(m.depth) }, + (*availMeasurement).getDepth, ) lnwlPercents := durationsToPercentage(from, to, lnwl)