Mercurial > dive4elements > river
diff 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 |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/bundu/BunduWstWQPanel.java Wed Aug 15 13:22:00 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/bundu/BunduWstWQPanel.java Wed Aug 15 13:59:09 2018 +0200 @@ -9,20 +9,26 @@ package org.dive4elements.river.client.client.ui.bundu; import java.util.ArrayList; +import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import org.dive4elements.river.client.client.Config; import org.dive4elements.river.client.client.services.DynamicMainValuesService; import org.dive4elements.river.client.client.services.DynamicMainValuesServiceAsync; +import org.dive4elements.river.client.client.services.DynamicMainValuesTimeRangeDeterminationService; +import org.dive4elements.river.client.client.services.DynamicMainValuesTimeRangeDeterminationServiceAsync; import org.dive4elements.river.client.client.ui.AbstractWQAdaptedInputPanel; import org.dive4elements.river.client.client.ui.DoubleArrayPanel; import org.dive4elements.river.client.client.ui.wq.QDTable; +import org.dive4elements.river.client.shared.model.ArtifactDescription; import org.dive4elements.river.client.shared.model.Data; import org.dive4elements.river.client.shared.model.DataItem; import org.dive4elements.river.client.shared.model.DataList; import org.dive4elements.river.client.shared.model.DefaultData; import org.dive4elements.river.client.shared.model.DefaultDataItem; +import org.dive4elements.river.client.shared.model.GaugeInfoObject; import org.dive4elements.river.client.shared.model.WQDataItem; import org.dive4elements.river.client.shared.model.WQInfoObject; @@ -32,6 +38,7 @@ import com.smartgwt.client.types.TitleOrientation; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.types.Visibility; +import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; @@ -65,6 +72,7 @@ /** Service to fetch W/Q MainValues. */ private final DynamicMainValuesServiceAsync mainValueService = GWT.create(DynamicMainValuesService.class); + private final DynamicMainValuesTimeRangeDeterminationServiceAsync serviceForTime = GWT.create(DynamicMainValuesTimeRangeDeterminationService.class); private final RadioGroupItem radiogroup = new RadioGroupItem(); @@ -351,14 +359,10 @@ return vlayout; } - @Override - protected void callMainValuesService(final String locale, final String river, final double start, final double end, - final AsyncCallback<WQInfoObject[]> cb) { + protected void callMainValuesService(final String locale, final String river, final double start, final double end, final Date startDate, + final Date endDate, final AsyncCallback<WQInfoObject[]> cb) { - final int startYear = this.bezugsjahr - this.qSeriesLength + 1; - final int endYear = this.bezugsjahr; - - this.mainValueService.getWQInfo(locale, river, start, end, startYear, endYear, cb); + this.mainValueService.getWQInfo(locale, river, start, end, startDate, endDate, cb); } @Override @@ -370,4 +374,79 @@ this.tabs.selectTab(inputIndex); } } + + @Override + protected void fetchWQData() { + { + final Config config = Config.getInstance(); + final String locale = config.getLocale(); + + final ArtifactDescription adescr = this.artifact.getArtifactDescription(); + final DataList[] data = adescr.getOldData(); + + final String river = getRiverName(data); + final int startYear = this.bezugsjahr - this.qSeriesLength; + final int endYear = this.bezugsjahr; + + // Gauge ranges overlap, move start and end a bit closer + // to each other. + + final AsyncCallback<GaugeInfoObject[]> cb = new AsyncCallback<GaugeInfoObject[]>() { + @Override + public void onFailure(final Throwable caught) { + GWT.log("Could not recieve wq informations."); + final String msg = caught.getMessage(); + resetLoadingMessageOfQTable(msg); + // disable weiter-knopf + getSubmitBtn().disable(); + SC.warn(msg); + } + + @Override + public void onSuccess(final GaugeInfoObject[] result) { + // TODO Auto-generated method stub + final int num = result != null ? result.length : 0; + GWT.log("Received timeranges for gauges"); + + if (num == 0) { + return; + } + + for (int i = 0; i < result.length; i++) { + final GaugeInfoObject gauge = result[i]; + // Gauge ranges overlap, move start and end a bit closer + // to each other. + final Double[] range = getGaugeNamesRange().get(gauge.getName()); + final double rDiff = (range[1] - range[0]) / 10d; + final int fi = i; + + final AsyncCallback<WQInfoObject[]> cb = new AsyncCallback<WQInfoObject[]>() { + @Override + public void onFailure(final Throwable caught) { + GWT.log("Could not recieve wq informations."); + addWQInfo(null, fi, gauge); + } + + @Override + public void onSuccess(final WQInfoObject[] wqi) { + final int num = wqi != null ? wqi.length : 0; + GWT.log("Received " + num + " wq informations (" + fi + "."); + + addWQInfo(wqi, fi, gauge); + if (fi == (result.length - 1)) + getSubmitBtn().enable(); + } + }; + callMainValuesService(locale, river, range[0] + rDiff, range[1] - rDiff, gauge.getStartTime(), gauge.getStopTime(), cb); + } + } + + }; + + this.serviceForTime.getGaugeInfo(locale, river, getGaugeNames(), startYear, endYear, cb); + getSubmitBtn().disable(); + } + + } + } \ No newline at end of file