comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/bundu/BunduWstWQPanel.java @ 9404:bc9a45d2b1fa

common time range for gauges incl. error messages
author gernotbelger
date Wed, 15 Aug 2018 13:59:09 +0200
parents 77367e8da74d
children 43c975f8ab92
comparison
equal deleted inserted replaced
9403:e2da9c8a7c57 9404:bc9a45d2b1fa
7 */ 7 */
8 8
9 package org.dive4elements.river.client.client.ui.bundu; 9 package org.dive4elements.river.client.client.ui.bundu;
10 10
11 import java.util.ArrayList; 11 import java.util.ArrayList;
12 import java.util.Date;
12 import java.util.LinkedHashMap; 13 import java.util.LinkedHashMap;
13 import java.util.List; 14 import java.util.List;
14 import java.util.Map; 15 import java.util.Map;
15 16
17 import org.dive4elements.river.client.client.Config;
16 import org.dive4elements.river.client.client.services.DynamicMainValuesService; 18 import org.dive4elements.river.client.client.services.DynamicMainValuesService;
17 import org.dive4elements.river.client.client.services.DynamicMainValuesServiceAsync; 19 import org.dive4elements.river.client.client.services.DynamicMainValuesServiceAsync;
20 import org.dive4elements.river.client.client.services.DynamicMainValuesTimeRangeDeterminationService;
21 import org.dive4elements.river.client.client.services.DynamicMainValuesTimeRangeDeterminationServiceAsync;
18 import org.dive4elements.river.client.client.ui.AbstractWQAdaptedInputPanel; 22 import org.dive4elements.river.client.client.ui.AbstractWQAdaptedInputPanel;
19 import org.dive4elements.river.client.client.ui.DoubleArrayPanel; 23 import org.dive4elements.river.client.client.ui.DoubleArrayPanel;
20 import org.dive4elements.river.client.client.ui.wq.QDTable; 24 import org.dive4elements.river.client.client.ui.wq.QDTable;
25 import org.dive4elements.river.client.shared.model.ArtifactDescription;
21 import org.dive4elements.river.client.shared.model.Data; 26 import org.dive4elements.river.client.shared.model.Data;
22 import org.dive4elements.river.client.shared.model.DataItem; 27 import org.dive4elements.river.client.shared.model.DataItem;
23 import org.dive4elements.river.client.shared.model.DataList; 28 import org.dive4elements.river.client.shared.model.DataList;
24 import org.dive4elements.river.client.shared.model.DefaultData; 29 import org.dive4elements.river.client.shared.model.DefaultData;
25 import org.dive4elements.river.client.shared.model.DefaultDataItem; 30 import org.dive4elements.river.client.shared.model.DefaultDataItem;
31 import org.dive4elements.river.client.shared.model.GaugeInfoObject;
26 import org.dive4elements.river.client.shared.model.WQDataItem; 32 import org.dive4elements.river.client.shared.model.WQDataItem;
27 import org.dive4elements.river.client.shared.model.WQInfoObject; 33 import org.dive4elements.river.client.shared.model.WQInfoObject;
28 34
29 import com.google.gwt.core.client.GWT; 35 import com.google.gwt.core.client.GWT;
30 import com.google.gwt.i18n.client.NumberFormat; 36 import com.google.gwt.i18n.client.NumberFormat;
31 import com.google.gwt.user.client.rpc.AsyncCallback; 37 import com.google.gwt.user.client.rpc.AsyncCallback;
32 import com.smartgwt.client.types.TitleOrientation; 38 import com.smartgwt.client.types.TitleOrientation;
33 import com.smartgwt.client.types.VerticalAlignment; 39 import com.smartgwt.client.types.VerticalAlignment;
34 import com.smartgwt.client.types.Visibility; 40 import com.smartgwt.client.types.Visibility;
41 import com.smartgwt.client.util.SC;
35 import com.smartgwt.client.widgets.Canvas; 42 import com.smartgwt.client.widgets.Canvas;
36 import com.smartgwt.client.widgets.Label; 43 import com.smartgwt.client.widgets.Label;
37 import com.smartgwt.client.widgets.form.DynamicForm; 44 import com.smartgwt.client.widgets.form.DynamicForm;
38 import com.smartgwt.client.widgets.form.fields.RadioGroupItem; 45 import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
39 import com.smartgwt.client.widgets.form.fields.TextItem; 46 import com.smartgwt.client.widgets.form.fields.TextItem;
63 /** The currently focussed Input element. */ 70 /** The currently focussed Input element. */
64 private DoubleArrayPanel itemWithFocus; 71 private DoubleArrayPanel itemWithFocus;
65 72
66 /** Service to fetch W/Q MainValues. */ 73 /** Service to fetch W/Q MainValues. */
67 private final DynamicMainValuesServiceAsync mainValueService = GWT.create(DynamicMainValuesService.class); 74 private final DynamicMainValuesServiceAsync mainValueService = GWT.create(DynamicMainValuesService.class);
75 private final DynamicMainValuesTimeRangeDeterminationServiceAsync serviceForTime = GWT.create(DynamicMainValuesTimeRangeDeterminationService.class);
68 76
69 private final RadioGroupItem radiogroup = new RadioGroupItem(); 77 private final RadioGroupItem radiogroup = new RadioGroupItem();
70 78
71 private int bezugsjahr = 0; 79 private int bezugsjahr = 0;
72 80
349 vlayout.addMember(modeLayout); 357 vlayout.addMember(modeLayout);
350 358
351 return vlayout; 359 return vlayout;
352 } 360 }
353 361
354 @Override 362 protected void callMainValuesService(final String locale, final String river, final double start, final double end, final Date startDate,
355 protected void callMainValuesService(final String locale, final String river, final double start, final double end, 363 final Date endDate, final AsyncCallback<WQInfoObject[]> cb) {
356 final AsyncCallback<WQInfoObject[]> cb) { 364
357 365 this.mainValueService.getWQInfo(locale, river, start, end, startDate, endDate, cb);
358 final int startYear = this.bezugsjahr - this.qSeriesLength + 1;
359 final int endYear = this.bezugsjahr;
360
361 this.mainValueService.getWQInfo(locale, river, start, end, startYear, endYear, cb);
362 } 366 }
363 367
364 @Override 368 @Override
365 public void onFocus(final FocusEvent event) { 369 public void onFocus(final FocusEvent event) {
366 this.itemWithFocus = (DoubleArrayPanel) event.getForm(); 370 this.itemWithFocus = (DoubleArrayPanel) event.getForm();
368 if (getMode().equals(mode.Q.toString())) { 372 if (getMode().equals(mode.Q.toString())) {
369 final int inputIndex = this.doubleArrayPanels.indexOf(this.itemWithFocus); 373 final int inputIndex = this.doubleArrayPanels.indexOf(this.itemWithFocus);
370 this.tabs.selectTab(inputIndex); 374 this.tabs.selectTab(inputIndex);
371 } 375 }
372 } 376 }
377
378 @Override
379 protected void fetchWQData() {
380 {
381 final Config config = Config.getInstance();
382 final String locale = config.getLocale();
383
384 final ArtifactDescription adescr = this.artifact.getArtifactDescription();
385 final DataList[] data = adescr.getOldData();
386
387 final String river = getRiverName(data);
388 final int startYear = this.bezugsjahr - this.qSeriesLength;
389 final int endYear = this.bezugsjahr;
390
391 // Gauge ranges overlap, move start and end a bit closer
392 // to each other.
393
394 final AsyncCallback<GaugeInfoObject[]> cb = new AsyncCallback<GaugeInfoObject[]>() {
395 @Override
396 public void onFailure(final Throwable caught) {
397 GWT.log("Could not recieve wq informations.");
398 final String msg = caught.getMessage();
399 resetLoadingMessageOfQTable(msg);
400 // disable weiter-knopf
401 getSubmitBtn().disable();
402 SC.warn(msg);
403 }
404
405 @Override
406 public void onSuccess(final GaugeInfoObject[] result) {
407 // TODO Auto-generated method stub
408 final int num = result != null ? result.length : 0;
409 GWT.log("Received timeranges for gauges");
410
411 if (num == 0) {
412 return;
413 }
414
415 for (int i = 0; i < result.length; i++) {
416 final GaugeInfoObject gauge = result[i];
417 // Gauge ranges overlap, move start and end a bit closer
418 // to each other.
419 final Double[] range = getGaugeNamesRange().get(gauge.getName());
420 final double rDiff = (range[1] - range[0]) / 10d;
421 final int fi = i;
422
423 final AsyncCallback<WQInfoObject[]> cb = new AsyncCallback<WQInfoObject[]>() {
424 @Override
425 public void onFailure(final Throwable caught) {
426 GWT.log("Could not recieve wq informations.");
427 addWQInfo(null, fi, gauge);
428 }
429
430 @Override
431 public void onSuccess(final WQInfoObject[] wqi) {
432 final int num = wqi != null ? wqi.length : 0;
433 GWT.log("Received " + num + " wq informations (" + fi + ".");
434
435 addWQInfo(wqi, fi, gauge);
436 if (fi == (result.length - 1))
437 getSubmitBtn().enable();
438 }
439 };
440 callMainValuesService(locale, river, range[0] + rDiff, range[1] - rDiff, gauge.getStartTime(), gauge.getStopTime(), cb);
441 }
442 }
443
444 };
445
446 this.serviceForTime.getGaugeInfo(locale, river, getGaugeNames(), startYear, endYear, cb);
447 getSubmitBtn().disable();
448 }
449
450 }
451
373 } 452 }

http://dive4elements.wald.intevation.org