# HG changeset patch # User Bjoern Ricks # Date 1348059062 0 # Node ID 9cbc8311e820ef45c12f48de5f37b65cae06bb87 # Parent ed978af1f0890f145bcaadd3399675484fc10d3c Improve the GaugePanel Be locale aware and only load the gauge info if the river name changes. flys-client/trunk@5523 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r ed978af1f089 -r 9cbc8311e820 flys-client/ChangeLog --- a/flys-client/ChangeLog Wed Sep 19 12:43:43 2012 +0000 +++ b/flys-client/ChangeLog Wed Sep 19 12:51:02 2012 +0000 @@ -1,3 +1,14 @@ +2012-09-19 Björn Ricks + + * 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 * src/main/java/de/intevation/flys/client/client/ui/ParameterList.java: diff -r ed978af1f089 -r 9cbc8311e820 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Wed Sep 19 12:43:43 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Wed Sep 19 12:51:02 2012 +0000 @@ -1008,5 +1008,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 : diff -r ed978af1f089 -r 9cbc8311e820 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Wed Sep 19 12:43:43 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Wed Sep 19 12:51:02 2012 +0000 @@ -524,3 +524,6 @@ fix_parameters = CSV sq_overview=Overview + +gauge_zero = Gauge zero ground +gauge_q_unit = m\u00b3/s diff -r ed978af1f089 -r 9cbc8311e820 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Wed Sep 19 12:43:43 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Wed Sep 19 12:51:02 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 diff -r ed978af1f089 -r 9cbc8311e820 flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Wed Sep 19 12:43:43 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Wed Sep 19 12:51:02 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 diff -r ed978af1f089 -r 9cbc8311e820 flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java Wed Sep 19 12:43:43 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java Wed Sep 19 12:51:02 2012 +0000 @@ -1,24 +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.google.gwt.user.client.ui.ScrollPanel; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.HorizontalPanel; +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.events.ResizedHandler; -import com.smartgwt.client.widgets.events.ResizedEvent; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.services.GaugeOverviewInfoService; @@ -56,15 +59,21 @@ */ public GaugePanel(SectionStackSection sectionStack) { setOverflow(Overflow.HIDDEN); + sectionStack.setHidden(true); sectionStack.setItems(this); this.sectionStack = sectionStack; 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(); + } } /** @@ -79,6 +88,7 @@ public void onSuccess(RiverInfo riverinfo) { GWT.log("Loaded river info"); renderGaugeOverviewInfo(riverinfo); + gaugetree.openAll(); } }); } @@ -90,7 +100,7 @@ addMember(riverinfopanel); addMember(gaugetree); - gaugetree.setGauges(riverinfo.getGauges()); + gaugetree.setGauges(riverinfo); } @Override @@ -140,15 +150,52 @@ * Resets the items of the tree. * If the list of gauges is empty or null the tree will be empty. */ - public void setGauges(List gauges) { + public void setGauges(RiverInfo riverinfo) { tree.clear(); + List gauges = riverinfo.getGauges(); + if (gauges != null && !gauges.isEmpty()) { - for (GaugeInfo gauge : gauges) { - TreeItem gaugeitem = new GaugeInfoItem(gauge); - tree.addItem(gaugeitem); + ArrayList emptygauges = new ArrayList(); + + 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 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 it = tree.treeItemIterator(); it.hasNext();) { + TreeItem item = it.next(); + item.setState(true); } } } @@ -165,6 +212,8 @@ setHeight("" + HEIGHT + "px"); setVerticalAlignment(ALIGN_MIDDLE); + NumberFormat nf = NumberFormat.getDecimalFormat(); + addLabel(riverinfo.getName(), false); String kmtext = ""; @@ -177,11 +226,11 @@ 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"; @@ -191,13 +240,13 @@ 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(); } addLabel(qtext, false); @@ -226,40 +275,84 @@ setAutoHeight(); setAutoWidth(); + 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() + " [NN+m]"); + grid.setText(3, 1, "" + nf.format(datum)); + } setWidget(grid); }