Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/GaugeListGrid.java @ 9284:486b6160962f
Fixed: filtering of gauge list did not handle cases correctly, where fromKm > toKm
author | gernotbelger |
---|---|
date | Fri, 20 Jul 2018 16:03:40 +0200 |
parents | ff9372d0cc1c |
children | 45908b79c079 |
comparison
equal
deleted
inserted
replaced
9283:55e2155ab52d | 9284:486b6160962f |
---|---|
288 this.addCollapsedRecord(gauge); | 288 this.addCollapsedRecord(gauge); |
289 } | 289 } |
290 } | 290 } |
291 } | 291 } |
292 | 292 |
293 public void openOnDistance(final Double start, final Double end, final DisappearType type) { | 293 public void openOnDistance(final double start, final Double end, final DisappearType type) { |
294 GWT.log("GaugeListGrid - openOnDistance " + start + " " + end); | 294 GWT.log("GaugeListGrid - openOnDistance " + start + " " + end); |
295 | 295 |
296 setData(new ListGridRecord[] {}); | 296 setData(new ListGridRecord[] {}); |
297 | 297 |
298 double to = end == null ? Double.MAX_VALUE: end; | |
299 | |
300 double from = Math.min(start, to); | |
301 to = Math.max(start, to); | |
302 | |
298 for (final GaugeInfo gauge : this.gauges) { | 303 for (final GaugeInfo gauge : this.gauges) { |
299 | 304 |
300 if (end == null && gauge.getKmStart() != null) { | 305 /* in earlier version, it was assumed that gaugeEnd may be null, but start not. */ |
301 if (gauge.getKmStart() >= start) { | 306 final Double gaugeStart = gauge.getKmStart(); |
302 addExpandedRecord(gauge); | 307 final Double gaugeEnd = gauge.getKmEnd() == null ? gaugeStart : gauge.getKmEnd(); |
303 } else { | 308 |
304 removeOrCollapse(gauge, type); | 309 boolean expand; |
305 } | 310 if( gaugeStart == null ) |
306 } else if (gauge.getKmStart() != null && gauge.getKmEnd() != null) { | 311 expand = false; |
307 // as getStart()/getEnd() return Double objects, | 312 else { |
308 // they can be null and | 313 |
309 // can cause NPEs when comparing with double... strange... | 314 final double gaugeFrom = Math.min(gaugeStart, gaugeEnd); |
310 GWT.log("GaugeListGrid - openOnDistance item " + gauge.getKmStart() + " " + gauge.getKmEnd()); | 315 final double gaugeTo = Math.max(gaugeStart, gaugeEnd); |
311 if ((start >= gauge.getKmStart() && start <= gauge.getKmEnd()) || (end >= gauge.getKmStart() && end <= gauge.getKmEnd()) | 316 |
312 || (start <= gauge.getKmStart() && end >= gauge.getKmEnd())) { | 317 expand = (from >= gaugeFrom && from <= gaugeTo) || (to >= gaugeFrom && to <= gaugeTo) || (from <= gaugeFrom && to >= gaugeEnd); |
313 addExpandedRecord(gauge); | 318 } |
314 } else { | 319 |
315 removeOrCollapse(gauge, type); | 320 if( expand ) |
316 } | 321 addExpandedRecord(gauge); |
317 } else { | 322 else |
318 removeOrCollapse(gauge, type); | 323 removeOrCollapse(gauge, type); |
319 } | |
320 } | 324 } |
321 } | 325 } |
322 | 326 |
323 private void removeOrCollapse(final GaugeInfo gauge, final DisappearType type) { | 327 private void removeOrCollapse(final GaugeInfo gauge, final DisappearType type) { |
324 switch (type) { | 328 switch (type) { |