changeset 3719:e82acd5c86f7

Merged revisions 5495-5496,5509,5514-5515,5521-5526 via svnmerge from file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-client/trunk ........ r5495 | ingo | 2012-09-17 14:55:09 +0200 (Mo, 17 Sep 2012) | 1 line Added missing i18n strings for minfo state description. ........ r5496 | ingo | 2012-09-17 15:47:43 +0200 (Mo, 17 Sep 2012) | 1 line Tagged 'flys-client' as 2.9.1 ........ r5509 | teichmann | 2012-09-18 17:54:37 +0200 (Di, 18 Sep 2012) | 1 line Removed trailing whitespace. ........ r5514 | bricks | 2012-09-19 09:56:42 +0200 (Mi, 19 Sep 2012) | 2 lines Add missing Changelog entry for r5472 ........ r5515 | bricks | 2012-09-19 09:59:35 +0200 (Mi, 19 Sep 2012) | 2 lines Implement a scrolling gauge info tree ........ r5521 | bricks | 2012-09-19 14:41:48 +0200 (Mi, 19 Sep 2012) | 2 lines Add station info to the gauges ........ r5522 | bricks | 2012-09-19 14:43:43 +0200 (Mi, 19 Sep 2012) | 2 lines Improve the handling of the GaugePanel in the ParameterList ........ r5523 | bricks | 2012-09-19 14:51:02 +0200 (Mi, 19 Sep 2012) | 4 lines Improve the GaugePanel Be locale aware and only load the gauge info if the river name changes. ........ r5524 | bricks | 2012-09-19 15:14:46 +0200 (Mi, 19 Sep 2012) | 5 lines Fix a NullPointerException When iterating over a list it must be checked if the reference to the list is valid. ........ r5525 | bricks | 2012-09-19 15:16:24 +0200 (Mi, 19 Sep 2012) | 2 lines Don't display the GaugePanel if no river is selected ........ r5526 | bricks | 2012-09-19 15:18:36 +0200 (Mi, 19 Sep 2012) | 2 lines Use the wstunit from the river as unit for the Pegelnullpunkt ........ flys-client/tags/2.9.1@5528 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 19 Sep 2012 14:42:48 +0000
parents 1598d324fbc2
children 4adc35aa655c
files flys-client/ChangeLog flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java flys-client/src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultArtifactDescription.java flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultGaugeInfo.java flys-client/src/main/java/de/intevation/flys/client/shared/model/GaugeInfo.java flys-client/src/main/webapp/FLYS.css
diffstat 12 files changed, 351 insertions(+), 96 deletions(-) [+]
line wrap: on
line diff
--- a/flys-client/ChangeLog	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/ChangeLog	Wed Sep 19 14:42:48 2012 +0000
@@ -1,3 +1,62 @@
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java,
+	  src/main/java/de/intevation/flys/client/shared/model/DefaultGaugeInfo.java,
+	  src/main/java/de/intevation/flys/client/shared/model/GaugeInfo.java,
+	  src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java:
+	  Use the wstunit from the river as unit for the Pegelnullpunkt.
+
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/client/ui/ParameterList.java:
+	  Don't display the GaugePanel if no river is selected.
+
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/shared/model/DefaultArtifactDescription.java:
+	  Fix NullPointerException when going back in WINFO artifact to the river
+	  selection.
+
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties,
+	  src/main/java/de/intevation/flys/client/client/FLYSConstants.java,
+	  src/main/java/de/intevation/flys/client/client/FLYSConstants.properties,
+	  src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties,
+	  src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java:
+	  Add locale aware formatting of the gauge values.
+	  Don't reload the gauges if the river doesn't change.
+	  Correctly handle kmup of the river.
+
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/client/ui/ParameterList.java:
+	  Improve handling of the GaugePanel and don't delete members of the
+	  GaugePanel.
+
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java,
+	  src/main/java/de/intevation/flys/client/shared/model/DefaultGaugeInfo.java,
+	  src/main/java/de/intevation/flys/client/shared/model/GaugeInfo.java:
+	  Add station information to the gauges.
+
+2012-09-19	Björn Ricks	<bjoern.ricks@intevation.de>
+
+	* src/main/webapp/FLYS.css,
+	  src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java:
+	  Get a working GaugeInfo solution with scrolling adjustments if gauge info
+	  elements are folded in an out.
+
+2012-09-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/flys/client/client/FLYSConstants.java:
+	  Removed trailing whitespace.
+
+2012-09-17  Ingo Weinzierl <ingo@intevation.de>
+
+	Tagged RELEASE 2.9.1
+
 2012-09-17  Ingo Weinzierl <ingo@intevation.de>
 
 	* src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties,
@@ -26,6 +85,16 @@
 
 2012-09-14	Björn Ricks	<bjoern.ricks@intevation.de>
 
+	* src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties,
+	  src/main/java/de/intevation/flys/client/client/FLYSConstants.java,
+	  src/main/java/de/intevation/flys/client/client/FLYSConstants.properties,
+	  src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties,
+	  src/main/java/de/intevation/flys/client/client/ui/ParameterList.java,
+	  src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java:
+	  Add first draft for the gauge overview info ui
+
+2012-09-14	Björn Ricks	<bjoern.ricks@intevation.de>
+
 	* src/main/java/de/intevation/flys/client/client/services/GaugeOverviewInfoService.java,
 	  src/main/java/de/intevation/flys/client/client/services/GaugeOverviewInfoServiceAsync.java,
 	  src/main/java/de/intevation/flys/client/shared/model/GaugeInfo.java,
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java	Wed Sep 19 14:42:48 2012 +0000
@@ -535,6 +535,8 @@
     
     String soundings();
 
+    String soundings();
+
     // ERRORS
 
     String error_read_minmax_values();
@@ -1008,5 +1010,9 @@
     String fix_parameters();
 
     String sq_overview();
+
+    String gauge_zero();
+
+    String gauge_q_unit();
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties	Wed Sep 19 14:42:48 2012 +0000
@@ -524,3 +524,6 @@
 fix_parameters = CSV
 
 sq_overview=Overview
+
+gauge_zero = Gauge zero ground
+gauge_q_unit = m\u00b3/s
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties	Wed Sep 19 14:42:48 2012 +0000
@@ -523,3 +523,6 @@
 fix_parameters_export = Angepasste Koeffizienten
 fix_parameters = CSV
 sq_overview=\u00dcbersicht
+
+gauge_zero = Pegelnullpunkt
+gauge_q_unit = m\u00b3/s
--- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties	Wed Sep 19 14:42:48 2012 +0000
@@ -524,3 +524,6 @@
 fix_parameters_export = Adjusted coefficient
 fix_parameters = CSV
 sq_overview=Overview
+
+gauge_zero = Gauge zero ground
+gauge_q_unit = m\u00b3/s
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java	Wed Sep 19 14:42:48 2012 +0000
@@ -1,20 +1,27 @@
 package de.intevation.flys.client.client.ui;
 
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.NumberFormat;
 import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.DecoratorPanel;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ScrollPanel;
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.DecoratorPanel;
 
+import com.smartgwt.client.types.Alignment;
 import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.widgets.events.ResizedEvent;
+import com.smartgwt.client.widgets.events.ResizedHandler;
+import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.SectionStackSection;
-import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
-import com.smartgwt.client.widgets.Label;
 
 import de.intevation.flys.client.client.FLYSConstants;
 import de.intevation.flys.client.client.services.GaugeOverviewInfoService;
@@ -27,7 +34,7 @@
  * It extends the VLayout by two methods to show and hide the
  * section stack section.
  */
-public class GaugePanel extends VLayout {
+public class GaugePanel extends VLayout implements ResizedHandler {
 
     /** SectionStackSection where this GaugePanel belongs in*/
     private SectionStackSection sectionStack;
@@ -41,22 +48,32 @@
     protected GaugeOverviewInfoServiceAsync gaugeOverviewInfoService =
         GWT.create(GaugeOverviewInfoService.class);
 
+    protected GaugeTree gaugetree = new GaugeTree();
+
+    protected RiverInfoPanel riverinfopanel;
+
     /**
      * Creates a new VLayout with a SectionStackSection
      * The GaugePanel's SectionStackSection is hidden by default.
      * @param sectionStack The section stack section to place the VLayout in.
      */
     public GaugePanel(SectionStackSection sectionStack) {
-        super();
+        setOverflow(Overflow.HIDDEN);
+        sectionStack.setHidden(true);
         sectionStack.setItems(this);
-        sectionStack.setHidden(true);
         this.sectionStack = sectionStack;
-        setStyleName("gaugeoverview");
+        setStyleName("gaugepanel");
+        addResizedHandler(this);
     }
 
+    /**
+     * Sets and loads the river data if river is not the current set river
+     */
     public void setRiver(String river) {
-        this.river = river;
-        this.refresh();
+        if (!river.equals(this.river)) {
+            this.river = river;
+            this.refresh();
+        }
     }
 
     /**
@@ -71,38 +88,39 @@
             public void onSuccess(RiverInfo riverinfo) {
                 GWT.log("Loaded river info");
                 renderGaugeOverviewInfo(riverinfo);
+                gaugetree.openAll();
             }
         });
     }
 
     public void renderGaugeOverviewInfo(RiverInfo riverinfo) {
-        setStyleName("gaugepanel");
-        sectionStack.setResizeable(true);
-
-        RiverInfoPanel riverinfopanel = new RiverInfoPanel(riverinfo);
-
-        addMember(riverinfopanel);
-
-        VLayout treewrapper = new VLayout();
-        Tree gaugetree = new Tree();
-        gaugetree.setHeight("100%");
+        removeMembers(getMembers());
 
-        treewrapper.addMember(gaugetree);
-        treewrapper.setHeight100();
-        treewrapper.setOverflow(Overflow.AUTO);
-
-        addMember(treewrapper);
+        riverinfopanel = new RiverInfoPanel(riverinfo);
+        addMember(riverinfopanel);
+        addMember(gaugetree);
 
-        List<GaugeInfo> gauges = riverinfo.getGauges();
-        if (!gauges.isEmpty()) {
+        gaugetree.setGauges(riverinfo);
+    }
 
-            for (GaugeInfo gauge : gauges) {
-                TreeItem gaugeitem = new GaugeInfoItem(gauge);
-                gaugetree.addItem(gaugeitem);
-            }
+    @Override
+    public void onResized(ResizedEvent event) {
+        /* this height calculation is only an approximation and doesn't reflect
+         * the real height of the the gaugetree. */
+        int height = getInnerContentHeight() -
+            (RiverInfoPanel.HEIGHT +
+            (2 * RiverInfoPanel.BORDER_WIDTH) +
+            (2 * RiverInfoPanel.PADDING) +
+            (2 * RiverInfoPanel.MARGIN));
+
+        if (height < 0) {
+            height = 0;
         }
+
+        gaugetree.setHeight("" + height + "px");
     }
 
+
     /**
      * Hide the section stack section.
      */
@@ -119,25 +137,84 @@
         this.sectionStack.setHidden(false);
     }
 
-    class RiverInfoPanel extends HLayout {
+    class GaugeTree extends ScrollPanel {
+
+        private Tree tree;
+
+        public GaugeTree() {
+            tree = new Tree();
+            setWidget(tree);
+        }
+
+        /**
+         * Resets the items of the tree.
+         * If the list of gauges is empty or null the tree will be empty.
+         */
+        public void setGauges(RiverInfo riverinfo) {
+            tree.clear();
+
+            List<GaugeInfo> gauges = riverinfo.getGauges();
+
+            if (gauges != null && !gauges.isEmpty()) {
+
+                ArrayList<GaugeInfo> emptygauges = new ArrayList<GaugeInfo>();
+
+                if (!riverinfo.isKmUp()) {
+                    for (GaugeInfo gauge : gauges) {
+                        addGauge(gauge, emptygauges);
+                    }
+                }
+                else {
+                    for (int i = gauges.size(); i >= 0; i--) {
+                        GaugeInfo gauge = gauges.get(i);
+                        addGauge(gauge, emptygauges);
+                    }
+                }
+
+                // put empty gauges to the end
+                for (GaugeInfo gauge : emptygauges) {
+                    addGauge(gauge);
+                }
+            }
+        }
+
+        private void addGauge(GaugeInfo gauge, List<GaugeInfo> empty) {
+            if (gauge.getKmStart() != null && gauge.getKmEnd() != null) {
+                addGauge(gauge);
+            }
+            else {
+                empty.add(gauge);
+            }
+        }
+
+        private void addGauge(GaugeInfo gauge) {
+            TreeItem gaugeitem = new GaugeInfoItem(gauge);
+            tree.addItem(gaugeitem);
+        }
+
+        public void openAll() {
+            for (Iterator<TreeItem> it = tree.treeItemIterator(); it.hasNext();) {
+                TreeItem item = it.next();
+                item.setState(true);
+            }
+        }
+    }
+
+    class RiverInfoPanel extends HorizontalPanel {
+
+        public final static int HEIGHT = 30;
+        public final static int BORDER_WIDTH = 3;
+        public final static int PADDING = 8;
+        public final static int MARGIN = 10;
 
         public RiverInfoPanel(RiverInfo riverinfo) {
-            setStyleName("riverinfo");
-            setShowEdges(true);
-            setEdgeSize(3);
-            setBackgroundColor("white");
-            setEdgeImage("");
-            setEdgeBackgroundColor("#CFE1F1");
-            setPadding(8);
-            setOverflow(Overflow.VISIBLE);
-            setAutoHeight();
-            setWidth100();
-            setMembersMargin(10);
-            setMinHeight(30);
+            setStyleName("riverinfopanel");
+            setHeight("" + HEIGHT + "px");
+            setVerticalAlignment(ALIGN_MIDDLE);
 
-            Label label = new Label(riverinfo.getName());
-            label.setWidth("*");
-            addMember(label);
+            NumberFormat nf = NumberFormat.getDecimalFormat();
+
+            addLabel(riverinfo.getName(), false);
 
             String kmtext = "";
             Double start = riverinfo.getKmStart();
@@ -149,36 +226,36 @@
                 start = tmp;
             }
             if (end != null) {
-                kmtext += end.toString();
+                kmtext += nf.format(end);
                 kmtext += " - ";
             }
             if (start != null) {
-                kmtext += start.toString();
+                kmtext += nf.format(start);
             }
             kmtext += " km";
 
-            label = new Label(kmtext);
-            label.setWidth("*");
-            label.setAlign(Alignment.CENTER);
-            addMember(label);
+            addLabel(kmtext, false);
 
             String qtext = "";
             Double qmin = riverinfo.getMinQ();
             Double qmax = riverinfo.getMaxQ();
             if (qmin != null) {
-                qtext += qmin.toString();
-                qtext += " qm/s";
+                qtext += nf.format(qmin);
+                qtext += " " + MSG.gauge_q_unit();
                 qtext += " - ";
             }
             if (qmax != null) {
-                qtext += qmax.toString();
-                qtext += " qm/s";
+                qtext += nf.format(qmax);
+                qtext += " " + MSG.gauge_q_unit();
             }
 
-            label = new Label(qtext);
-            label.setWidth("*");
-            label.setAlign(Alignment.CENTER);
-            addMember(label);
+            addLabel(qtext, false);
+        }
+
+        private void addLabel(String text, boolean wordwrap) {
+            Label label = new Label(text, wordwrap);
+            add(label);
+            setCellHeight(label, "" + HEIGHT + "px");
         }
     }
 
@@ -195,44 +272,88 @@
 
         public GaugeInfoHead(GaugeInfo gauge) {
             setStyleName("gaugeinfohead");
-            setOverflow(Overflow.VISIBLE);
             setAutoHeight();
             setAutoWidth();
 
-            Label label = new Label(gauge.getName());
+            NumberFormat nf = NumberFormat.getDecimalFormat();
+
+            Label label = new Label(gauge.getName(), true);
             addMember(label);
 
-            Double start = gauge.getKmStart();
-            Double end   = gauge.getKmEnd();
+            Double start;
+            Double end;
+
+            if (!gauge.isKmUp()) {
+                start = gauge.getKmStart();
+                end   = gauge.getKmEnd();
+            }
+            else {
+                start = gauge.getKmEnd();
+                end   = gauge.getKmStart();
+            }
+
             String kmtext = "";
             if (start != null) {
-                kmtext += start.toString();
+                kmtext += nf.format(start);
                 kmtext += " - ";
             }
             if (end != null) {
-                kmtext += end.toString();
+                kmtext += nf.format(end);
             }
-            kmtext +=" km";
+            if (start != null || end != null) {
+                kmtext += " km";
+            }
 
             label = new Label(kmtext);
 
             addMember(label);
+
+            Double station = gauge.getStation();
+            if (station != null) {
+                String stext = nf.format(station);
+                stext += " km";
+                label = new Label(stext);
+                addMember(label);
+            }
         }
     }
 
     class GaugeInfoPanel extends DecoratorPanel {
+
         public GaugeInfoPanel(GaugeInfo gauge) {
             setStyleName("gaugeinfopanel");
             Grid grid = new Grid(4, 2);
 
-            grid.setText(0, 0, "W-Bereich [cm]");
-            grid.setText(0, 1, "" + gauge.getMinW() + " - " + gauge.getMaxW());
-            grid.setText(1, 0, "Q-Bereich [m²/s]");
-            grid.setText(1, 1, "" + gauge.getMinQ() + " - " + gauge.getMaxQ());
-            grid.setText(2, 0, "AEO [km²]");
-            grid.setText(2, 1, "" + gauge.getAeo());
-            grid.setText(3, 0, "Pegelnullpunk [NN+m]");
-            grid.setText(3, 1, "" + gauge.getDatum());
+            NumberFormat nf = NumberFormat.getDecimalFormat();
+
+            Double minw = gauge.getMinW();
+            Double maxw = gauge.getMaxW();
+            if (minw != null && maxw != null) {
+                grid.setText(0, 0, MSG.wq_value_q());
+                grid.setText(0, 1, "" + nf.format(minw) +
+                        " - " + nf.format(maxw));
+            }
+
+            Double minq = gauge.getMinQ();
+            Double maxq = gauge.getMaxQ();
+            if (minq != null && maxq != null) {
+                grid.setText(1, 0, MSG.wq_value_w());
+                grid.setText(1, 1, "" + nf.format(minq) +
+                        " - " + nf.format(maxq));
+            }
+
+            Double aeo = gauge.getAeo();
+            if (aeo != null) {
+                grid.setText(2, 0, "AEO [km²]");
+                grid.setText(2, 1, "" + nf.format(aeo));
+            }
+
+            Double datum = gauge.getDatum();
+            if (datum != null) {
+                grid.setText(3, 0, MSG.gauge_zero() + " [" +
+                        gauge.getWstUnit() + "]");
+                grid.setText(3, 1, "" + nf.format(datum));
+            }
 
             setWidget(grid);
         }
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java	Wed Sep 19 14:42:48 2012 +0000
@@ -224,7 +224,7 @@
             }
         };
         gaugePanel.setWidth100();
-        gaugePanel.setHeight("20%");
+        gaugePanel.setHeight100();
 
         // This canvas is used to render helper widgets.
         final SectionStackSection helperSection = new SectionStackSection();
@@ -701,11 +701,6 @@
             helperPanel.removeMembers(c);
         }
 
-        c = gaugePanel.getMembers();
-        if (c != null && c.length > 0) {
-            gaugePanel.removeMembers(c);
-        }
-
         Artifact art             = event.getNewValue();
         ArtifactDescription desc = art.getArtifactDescription();
 
@@ -748,8 +743,13 @@
             }
         }
         if (art instanceof WINFOArtifact) {
-            renderGaugeInfo(desc.getRiver());
-            gaugePanel.show();
+            String river = desc.getRiver();
+            if (river != null) {
+                renderGaugeInfo(desc.getRiver());
+            }
+            else {
+                gaugePanel.hide();
+            }
         }
 
         addOldDatas(
--- a/flys-client/src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/GaugeOverviewInfoServiceImpl.java	Wed Sep 19 14:42:48 2012 +0000
@@ -123,12 +123,15 @@
                             ArtifactNamespaceContext.NAMESPACE_URI, "maxq");
                     String gmaxw = gaugeele.getAttributeNS(
                             ArtifactNamespaceContext.NAMESPACE_URI, "maxw");
+                    String gstation = gaugeele.getAttributeNS(
+                            ArtifactNamespaceContext.NAMESPACE_URI, "station");
 
                     logger.debug("Found gauge with name " + gname);
 
                     GaugeInfo gaugeinfo = new DefaultGaugeInfo(
                             gname,
                             kmup,
+                            parseDouble(gstation),
                             parseDouble(gstart),
                             parseDouble(gend),
                             parseDouble(gdatum),
@@ -136,7 +139,8 @@
                             parseDouble(gminq),
                             parseDouble(gmaxq),
                             parseDouble(gminw),
-                            parseDouble(gmaxw)
+                            parseDouble(gmaxw),
+                            rwstunit
                             );
 
                     gauges.add(gaugeinfo);
--- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultArtifactDescription.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultArtifactDescription.java	Wed Sep 19 14:42:48 2012 +0000
@@ -161,6 +161,9 @@
 
 
     public String getDataValueAsString(String name) {
+        if (oldData == null) {
+            return null;
+        }
         for (DataList list: oldData) {
             List<Data> dataList = list.getAll();
 
--- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultGaugeInfo.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultGaugeInfo.java	Wed Sep 19 14:42:48 2012 +0000
@@ -15,6 +15,8 @@
     private Double minw;
     private Double maxw;
     private boolean kmup;
+    private Double station;
+    private String wstunit;
 
     public DefaultGaugeInfo() {
     }
@@ -22,6 +24,7 @@
     public DefaultGaugeInfo(
             String name,
             boolean kmup,
+            Double station,
             Double start,
             Double end,
             Double datum,
@@ -29,17 +32,20 @@
             Double minq,
             Double maxq,
             Double minw,
-            Double maxw)
+            Double maxw,
+            String wstunit)
     {
-        this.name  = name;
-        this.start = start;
-        this.end   = end;
-        this.datum = datum;
-        this.aeo   = aeo;
-        this.minq  = minq;
-        this.maxq  = maxq;
-        this.minw  = minw;
-        this.maxw  = maxw;
+        this.name    = name;
+        this.station = station;
+        this.start   = start;
+        this.end     = end;
+        this.datum   = datum;
+        this.aeo     = aeo;
+        this.minq    = minq;
+        this.maxq    = maxq;
+        this.minw    = minw;
+        this.maxw    = maxw;
+        this.wstunit = wstunit;
     }
     /**
      * Returns the name of the gauge
@@ -107,4 +113,18 @@
     public boolean isKmUp() {
         return this.kmup;
     }
+
+    /**
+     * Returns the station km of the gauge or null if not available
+     */
+    public Double getStation() {
+        return this.station;
+    }
+
+    /**
+     * Returns the wst unit as a String
+     */
+    public String getWstUnit() {
+        return this.wstunit;
+    }
 }
--- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/GaugeInfo.java	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/GaugeInfo.java	Wed Sep 19 14:42:48 2012 +0000
@@ -53,4 +53,14 @@
     Double getAeo();
 
     boolean isKmUp();
+
+    /**
+     * Returns the station km of the gauge or null if not available
+     */
+    Double getStation();
+
+    /**
+     * Returns the wst unit as a String
+     */
+    String getWstUnit();
 }
--- a/flys-client/src/main/webapp/FLYS.css	Mon Sep 17 13:47:43 2012 +0000
+++ b/flys-client/src/main/webapp/FLYS.css	Wed Sep 19 14:42:48 2012 +0000
@@ -171,3 +171,16 @@
 #authentication table {
     margin-bottom: 1em;
 }
+
+.riverinfopanel {
+    border: 3px solid #CFE1F1;
+    padding: 8px;
+    margin-top: 10px;
+    margin-left: 10px;
+    margin-bottom: 10px;
+    font-size: 1.3em;
+}
+
+.riverinfopanel .gwt-Label {
+    margin-right: 10px;
+}

http://dive4elements.wald.intevation.org