# HG changeset patch # User Andre Heinecke # Date 1415117344 -3600 # Node ID 2772a0fc740082c648dfe9929fca98052f0a82fe # Parent 5dd6cc9fec1e764e36a0227c57be7983553ae459 (issue1767) Fix closet next value selection. This simplyfies the code and thus fixes the overly complicated old version. diff -r 5dd6cc9fec1e -r 2772a0fc7400 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/chart/CrossSectionChartThemePanel.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/chart/CrossSectionChartThemePanel.java Tue Nov 04 15:32:56 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/chart/CrossSectionChartThemePanel.java Tue Nov 04 17:09:04 2014 +0100 @@ -44,6 +44,7 @@ import org.dive4elements.river.client.shared.model.ThemeList; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -284,30 +285,25 @@ if (in == null || in.length == 0) { return -1; } - if (in[0] == to) { - return to; - } - for (int i = 0; i < in.length; i++) { - GWT.log ("Close? " + in[i]); - } - - double minDiff = Math.abs(to - in[0]); - double bestMatch = in[0]; - for (int i = 1; i < in.length; i++) { - if (in[i] == to) { - return to; + Arrays.sort(in); + GWT.log ("Closest match for " + (up ? "next" : "previous") + " value to: " + + to + " candidates: " + Arrays.toString(in)); + if (up) { + // take the first one that is larger + for (int i = 0; i < in.length; i++) { + if (in[i] > to) { + return in[i]; + } } - if ((in[i] < to && up) - || (in[i] > to && !up)) { - continue; - } - double diff = Math.abs(to - in[i]); - if (diff <= minDiff) { - minDiff = diff; - bestMatch = in[i]; + } else { + for (int i = in.length - 1; i >= 0; i--) { + if (in[i] < to) { + return in[i]; + } } } - return bestMatch; + GWT.log("Failed to find closest match"); + return 0; }