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) {

http://dive4elements.wald.intevation.org