# HG changeset patch # User Bjoern Ricks # Date 1347631668 0 # Node ID 8d3e48f189d25f43259189de3503cd1d4877c2b9 # Parent 60544e37783b94e35766dd5e2029576311f0fc6a Add first draft for the gauge overview info ui flys-client/trunk@5472 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 60544e37783b -r 8d3e48f189d2 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 Fri Sep 14 14:03:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.java Fri Sep 14 14:07:48 2012 +0000 @@ -228,6 +228,8 @@ String helperPanelTitle(); + String gaugePanelTitle(); + String wqTitle(); String wqadaptedTitle(); @@ -561,6 +563,8 @@ String error_no_rivers_found(); + String error_no_gaugeoverviewinfo_found(); + String error_no_such_user(); String error_no_waterlevel_pair_selected(); diff -r 60544e37783b -r 8d3e48f189d2 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 Fri Sep 14 14:03:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants.properties Fri Sep 14 14:07:48 2012 +0000 @@ -156,6 +156,7 @@ wqHistorical = Selection of Analyse Type calcTableTitle = Calculated Output helperPanelTitle = Input Support +gaugePanelTitle = Gauge Information wqW = W at Gauge [cm] wqQ = Q [m\u00b3/s] wqWFree = W free position [m+NHN] @@ -293,6 +294,7 @@ error_not_logged_in = You need to log in before you are allowed to start your work. error_load_parameterization = Could not load the parameterization. error_wrong_date = Please enter valid dates. +error_no_gaugeoverviewinfo_found = Error while fetching the river and gauge info error_feed_no_data = No input data found. error_feed_from_out_of_range = The lower value is bigger than the upper value. diff -r 60544e37783b -r 8d3e48f189d2 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 Fri Sep 14 14:03:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_de.properties Fri Sep 14 14:07:48 2012 +0000 @@ -143,6 +143,7 @@ wqHistorical = Auswahl der Analyseart calcTableTitle = Berechnungsausgabe helperPanelTitle = Eingabeunterst\u00fctzung +gaugePanelTitle = Gew\u00e4sser/Pegel-Info wqW = W am Pegel [cm] wqQ = Q [m\u00b3/s] wqWFree = W auf freier Strecke [m+NHN] @@ -293,6 +294,7 @@ error_not_logged_in = Sie m\u00fcssen sich erst einloggen um mit der Arbeit beginnen zu k\u00f6nnen. error_load_parameterization = Fehler beim Laden der Parametrisierung. error_wrong_date = Bitte geben Sie gültige Daten ein. +error_no_gaugeoverviewinfo_found = Fehler beim Laden der Fluss- und Pegelinformationen error_feed_no_data = Keine Eingabedaten gefunden. error_feed_from_out_of_range = Der untere Wert liegt au\u00dferhalb des g\u00fcltigen Wertebereiches. diff -r 60544e37783b -r 8d3e48f189d2 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 Fri Sep 14 14:03:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSConstants_en.properties Fri Sep 14 14:07:48 2012 +0000 @@ -157,6 +157,7 @@ wqHistorical = Selection of Analyse Type calcTableTitle = Calculated Output helperPanelTitle = Input Support +gaugePanelTitle = Gauge Information wqW = W at Gauge [cm] wqQ = Q [m\u00b3/s] wqWFree = W at free position [m+NHN] @@ -294,6 +295,7 @@ error_not_logged_in = You need to log in before you are allowed to start your work. error_load_parameterization = Could not load the parameterization. error_wrong_date = Please enter valid dates. +error_no_gaugeoverviewinfo_found = Error while fetching the river and gauge info error_feed_no_data = No input data found. error_feed_from_out_of_range = The lower value is bigger than the upper value. diff -r 60544e37783b -r 8d3e48f189d2 flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugePanel.java Fri Sep 14 14:07:48 2012 +0000 @@ -0,0 +1,245 @@ +package de.intevation.flys.client.client.ui; + +import java.util.List; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; +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.smartgwt.client.types.Overflow; +import com.smartgwt.client.types.Alignment; +import com.smartgwt.client.types.LayoutPolicy; +import com.smartgwt.client.util.SC; +import com.smartgwt.client.widgets.layout.SectionStack; +import com.smartgwt.client.widgets.layout.SectionStackSection; +import com.smartgwt.client.widgets.layout.HLayout; +import com.smartgwt.client.widgets.layout.Layout; +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; +import de.intevation.flys.client.client.services.GaugeOverviewInfoServiceAsync; +import de.intevation.flys.client.shared.model.GaugeInfo; +import de.intevation.flys.client.shared.model.RiverInfo; + +/** + * The GaugePanel is intendet to be used within a SectionStackSection + * It extends the VLayout by two methods to show and hide the + * section stack section. + */ +public class GaugePanel extends VLayout { + + /** SectionStackSection where this GaugePanel belongs in*/ + private SectionStackSection sectionStack; + + /** Name of the river */ + private String river; + + /** The message class that provides i18n strings.*/ + protected FLYSConstants MSG = GWT.create(FLYSConstants.class); + + protected GaugeOverviewInfoServiceAsync gaugeOverviewInfoService = + GWT.create(GaugeOverviewInfoService.class); + + /** + * 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(); + sectionStack.setItems(this); + sectionStack.setHidden(true); + this.sectionStack = sectionStack; + setStyleName("gaugeoverview"); + } + + public void setRiver(String river) { + this.river = river; + this.refresh(); + } + + /** + * Loads the river info and renders it afterwards + */ + public void refresh() { + gaugeOverviewInfoService.getRiverInfo(this.river, new AsyncCallback() { + public void onFailure(Throwable e) { + GWT.log("Could not load the river info." + e); + } + + public void onSuccess(RiverInfo riverinfo) { + GWT.log("Loaded river info"); + renderGaugeOverviewInfo(riverinfo); + } + }); + } + + 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%"); + + treewrapper.addMember(gaugetree); + treewrapper.setHeight100(); + treewrapper.setOverflow(Overflow.AUTO); + + addMember(treewrapper); + + List gauges = riverinfo.getGauges(); + if (!gauges.isEmpty()) { + + for (GaugeInfo gauge : gauges) { + TreeItem gaugeitem = new GaugeInfoItem(gauge); + gaugetree.addItem(gaugeitem); + } + } + } + + /** + * Hide the section stack section. + */ + public void hide() { + GWT.log("GaugePanel - hide"); + this.sectionStack.setHidden(true); + } + + /** + * Show the section stack section. + */ + public void show() { + GWT.log("GaugePanel - show"); + this.sectionStack.setHidden(false); + } + + class RiverInfoPanel extends HLayout { + + 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); + + Label label = new Label(riverinfo.getName()); + label.setWidth("*"); + addMember(label); + + String kmtext = ""; + Double start = riverinfo.getKmStart(); + Double end = riverinfo.getKmEnd(); + + if (!riverinfo.isKmUp()) { + Double tmp = end; + end = start; + start = tmp; + } + if (end != null) { + kmtext += end.toString(); + kmtext += " - "; + } + if (start != null) { + kmtext += start.toString(); + } + kmtext += " km"; + + label = new Label(kmtext); + label.setWidth("*"); + label.setAlign(Alignment.CENTER); + addMember(label); + + String qtext = ""; + Double qmin = riverinfo.getMinQ(); + Double qmax = riverinfo.getMaxQ(); + if (qmin != null) { + qtext += qmin.toString(); + qtext += " qm/s"; + qtext += " - "; + } + if (qmax != null) { + qtext += qmax.toString(); + qtext += " qm/s"; + } + + label = new Label(qtext); + label.setWidth("*"); + label.setAlign(Alignment.CENTER); + addMember(label); + } + } + + class GaugeInfoItem extends TreeItem { + public GaugeInfoItem(GaugeInfo gauge) { + GaugeInfoHead gaugeinfohead = new GaugeInfoHead(gauge); + GaugeInfoPanel gaugeinfopanel = new GaugeInfoPanel(gauge); + setWidget(gaugeinfohead); + addItem(gaugeinfopanel); + } + } + + class GaugeInfoHead extends HLayout { + + public GaugeInfoHead(GaugeInfo gauge) { + setStyleName("gaugeinfohead"); + setOverflow(Overflow.VISIBLE); + setAutoHeight(); + setAutoWidth(); + + Label label = new Label(gauge.getName()); + addMember(label); + + Double start = gauge.getKmStart(); + Double end = gauge.getKmEnd(); + String kmtext = ""; + if (start != null) { + kmtext += start.toString(); + kmtext += " - "; + } + if (end != null) { + kmtext += end.toString(); + } + kmtext +=" km"; + + label = new Label(kmtext); + + 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()); + + setWidget(grid); + } + } +} diff -r 60544e37783b -r 8d3e48f189d2 flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java Fri Sep 14 14:03:12 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ParameterList.java Fri Sep 14 14:07:48 2012 +0000 @@ -13,6 +13,7 @@ import com.smartgwt.client.types.VisibilityMode; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.SectionStack; import com.smartgwt.client.widgets.layout.SectionStackSection; @@ -21,6 +22,7 @@ import com.smartgwt.client.widgets.tab.events.TabSelectedHandler; import de.intevation.flys.client.shared.model.Artifact; +import de.intevation.flys.client.shared.model.WINFOArtifact; import de.intevation.flys.client.shared.model.ArtifactDescription; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.Data; @@ -109,6 +111,7 @@ protected VLayout report; protected VLayout helperPanel; protected VLayout tablePanel; + protected GaugePanel gaugePanel; protected Canvas reportPanel; public ParameterList(FLYS flys, CollectionView cView, String title) { @@ -207,6 +210,23 @@ stack.setCanResizeSections(true); stack.setVisibilityMode(VisibilityMode.MULTIPLE); + final SectionStackSection gaugeSection = new SectionStackSection(); + gaugeSection.setExpanded(false); + gaugeSection.setTitle(MSG.gaugePanelTitle()); + gaugePanel = new GaugePanel(gaugeSection) { + public void addMember(Canvas component) { + super.addMember(component); + gaugeSection.setExpanded(true); + } + + public void removeMembers(Canvas[] components) { + super.removeMembers(components); + gaugeSection.setExpanded(false); + } + }; + gaugePanel.setWidth100(); + gaugePanel.setHeight("20%"); + // This canvas is used to render helper widgets. final SectionStackSection helperSection = new SectionStackSection(); helperSection.setExpanded(false); @@ -245,7 +265,7 @@ tablePanel.setWidth100(); tableSection.setItems(tablePanel); - stack.setSections(helperSection, tableSection); + stack.setSections(gaugeSection, helperSection, tableSection); return stack; } @@ -682,6 +702,11 @@ helperPanel.removeMembers(c); } + c = gaugePanel.getMembers(); + if (c != null && c.length > 0) { + gaugePanel.removeMembers(c); + } + Artifact art = event.getNewValue(); ArtifactDescription desc = art.getArtifactDescription(); @@ -723,6 +748,10 @@ setCurrentData(null, null); } } + if (art instanceof WINFOArtifact) { + renderGaugeInfo(desc.getRiver()); + gaugePanel.show(); + } addOldDatas( desc.getOldData(), @@ -895,5 +924,12 @@ protected void unlockUI() { cView.unlockUI(); } + + + private void renderGaugeInfo(String river) { + gaugePanel.setRiver(river); + gaugePanel.show(); + } + } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :