# HG changeset patch # User Sascha L. Teichmann # Date 1556457974 -7200 # Node ID c68cef0346b7d4d585761532920c20493761a0bf # Parent b7673a704b0a1c971b187636c218df057ce783af Display Available Fairway Depths: Introduced type to re-use code from Available Fairway Depths vs. LNWL. diff -r b7673a704b0a -r c68cef0346b7 pkg/controllers/bottlenecks.go --- 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)