ingo@4218: package de.intevation.flys.client.client.widgets; ingo@4218: ingo@4218: import com.google.gwt.core.client.GWT; ingo@4218: import com.smartgwt.client.widgets.Canvas; ingo@4218: import com.smartgwt.client.widgets.Img; ingo@4218: import com.smartgwt.client.widgets.events.ResizedEvent; ingo@4218: import com.smartgwt.client.widgets.events.ResizedHandler; ingo@4218: ingo@4218: import de.intevation.flys.client.shared.model.Artifact; ingo@4218: import de.intevation.flys.client.shared.model.ArtifactDescription; ingo@4218: ingo@4218: ingo@4218: public class DischargeTablesChart extends Canvas implements ResizedHandler { ingo@4218: ingo@4218: protected Artifact artifact; ingo@4218: ingo@4218: protected Img img; ingo@4218: ingo@4218: public DischargeTablesChart() { ingo@4218: super(); ingo@4218: } ingo@4218: ingo@4218: public DischargeTablesChart(Artifact artifact) { ingo@4218: super(); ingo@4218: this.artifact = artifact; ingo@4218: init(); ingo@4218: } ingo@4218: ingo@4218: private void init() { ingo@4218: addChild(createImage()); ingo@4218: addResizedHandler(this); ingo@4218: setSize("100%", "100%"); ingo@4218: } ingo@4218: ingo@4218: protected Img createImage() { ingo@4218: img = new Img(getUrl()); ingo@4218: img.setSize("100%", "100%"); ingo@4218: ingo@4218: return img; ingo@4218: } ingo@4218: ingo@4218: protected String getUrl() { ingo@4218: String url = GWT.getModuleBaseURL(); ingo@4218: url += "dischargetablesoverview"; ingo@4218: url += "?gauge=" + getGauge(); ingo@4218: url += "&format=png"; ingo@4218: ingo@4218: String[] timerange = getTimerange(); ingo@4218: url += "&lower=" + timerange[0]; ingo@4218: url += "&upper=" + timerange[1]; ingo@4218: ingo@4218: int width = 600; ingo@4218: int height = 400; ingo@4218: if (img != null) { ingo@4218: width = img.getWidth(); ingo@4218: height = img.getHeight(); ingo@4218: } ingo@4218: ingo@4218: url += "&width=" + String.valueOf(width); ingo@4218: url += "&height=" + String.valueOf(height); ingo@4218: ingo@4218: // add time millis to 'deactivate' caching ingo@4218: url += "&timemillis" + System.currentTimeMillis(); ingo@4218: ingo@4218: GWT.log("DischargeTablesService URL = '" + url + "'"); ingo@4218: return url; ingo@4218: } ingo@4218: ingo@4218: protected String getGauge() { ingo@4218: ArtifactDescription desc = artifact.getArtifactDescription(); ingo@4218: return desc.getReferenceGauge(); ingo@4218: } ingo@4218: ingo@4218: protected String[] getTimerange() { ingo@4218: ArtifactDescription desc = artifact.getArtifactDescription(); ingo@4218: String yearStr = desc.getDataValueAsString("year_range"); ingo@4218: ingo@4218: if (yearStr != null && yearStr.length() > 0) { ingo@4218: return yearStr.split(";"); ingo@4218: } ingo@4218: ingo@4218: return new String[2]; ingo@4218: } ingo@4218: ingo@4218: @Override ingo@4218: public void onResized(ResizedEvent event) { ingo@4218: GWT.log("resized discharge tables overview chart"); ingo@4218: img.setSrc(getUrl()); ingo@4218: } ingo@4218: }