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

http://dive4elements.wald.intevation.org