Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/bundu/CustomFixationChoiceRadioPanel.java @ 9454:4cccbd32b680
Bundu.wst.UD -> Q-Values are set on Client side now
author | gernotbelger |
---|---|
date | Thu, 23 Aug 2018 16:32:28 +0200 |
parents | 1a4d2ce77423 |
children |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.client.client.ui.bundu; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import org.dive4elements.river.client.client.ui.RadioPanel; import org.dive4elements.river.client.client.ui.fixation.FixEventSelect; import org.dive4elements.river.client.client.ui.fixation.FixGaugeSelectPanel; 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.IntDataItem; import org.dive4elements.river.client.shared.model.IntegerArrayData; import com.google.gwt.i18n.client.DateTimeFormat; 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.VLayout; public class CustomFixationChoiceRadioPanel extends RadioPanel { private static final long serialVersionUID = 3357071563224461043L; private String events[]; private int bezugsjahr = 0; public CustomFixationChoiceRadioPanel() { super("fix_choice"); } @Override public Canvas createOld(final DataList dataList) { // wild überschrieben :-( final List<Data> list = dataList.getAll(); final VLayout root = new VLayout(); final HLayout layoutChoice = new HLayout(); layoutChoice.setHeight(35); layoutChoice.setWidth(400); for (final Data item : list) { if (getDatakey().equals(item.getLabel())) { final Label labelLabel = new Label(this.MSG.bundu_bezugswst_fix_choice_title()); final Label valueLabel = new Label(item.getItems()[0].getLabel()); labelLabel.setWidth(200); valueLabel.setWidth(180); layoutChoice.addMember(labelLabel); layoutChoice.addMember(valueLabel); final Canvas back = getBackButton(dataList.getState()); layoutChoice.addMember(back); root.addMember(layoutChoice); } } final Data data = getData(list, "events"); if (data != null) { final VLayout dataLayout = FixEventSelect.getEventDataLayout(data); final HLayout layout = new HLayout(); layout.setWidth("400px"); final Label label = new Label(this.MSG.bundu_bezugswst_auto_event_choice()); label.setWidth("200px"); layout.addMember(label); layout.addMember(dataLayout); root.addMember(layout); } return root; } @Override public Canvas create(final DataList dataList) { // wild überschrieben :-( final Data data = dataList.get(0); final DataItem[] items = data.getItems(); for (final DataItem item : items) { if (item.getLabel().equals("ignore_events_temp")) { if (!item.getStringValue().equals("")) this.events = (item.getStringValue().split(";")); } else if (item.getLabel().equals("ignore_singleyear")) { this.bezugsjahr = Integer.valueOf(item.getStringValue()); } } return super.create(dataList); } @Override protected Data[] getData() { final String value = this.form.getValueAsString("selection"); final List<Data> data = new ArrayList<Data>(); // Default-values for data. they have to be reset, if user switches from auto to manual IntegerArrayData iad = new IntegerArrayData("events", "events", new IntDataItem[] {}); DataItem firstItem = new DefaultDataItem(null, null, ""); DataItem secItem = new DefaultDataItem(null, null, ""); DataItem startItem = new DefaultDataItem(null, null, ""); DataItem endItem = new DefaultDataItem(null, null, ""); final DataItem item = new DefaultDataItem(getDatakey(), getDatakey(), value); data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { item })); if (value.equals("state.bundu.wst.fix.auto")) { // set gauges: (do not appear in create old, but need to be set for calculation purpose final LinkedHashMap<String, String> map = FixGaugeSelectPanel.getMapValues(this.MSG); final String mnq = this.MSG.gauge_mnq(); final String hq5 = this.MSG.gauge_hq5(); String firstKey = "-1"; String secondKey = "-1"; // irgendwie hässlich, aber sicher (man kann die Map ändern und kriegt hier den richtigen Index) final Iterator<String> iterator = map.keySet().iterator(); while (iterator.hasNext()) { final String key = iterator.next(); final String mapValue = map.get(key); if (mnq.equals(mapValue)) { firstKey = key; } if (hq5.equals(mapValue)) { secondKey = key; } } firstItem = new DefaultDataItem("q1", "q1", firstKey); secItem = new DefaultDataItem("q2", "q2", secondKey); // make start, end final DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy"); /// EVENT SELECTION... have to appear in selectOld somehow... startItem = new DefaultDataItem("start", "start", String.valueOf(df.parse("01.01." + (this.bezugsjahr - 5)).getTime())); endItem = new DefaultDataItem("end", "end", String.valueOf(df.parse("31.12." + (this.bezugsjahr + 5)).getTime())); /// MAKE EVENTS (muss glaube ich zum schluss erst erscheinen... if (this.events != null) { final IntDataItem[] arr = new IntDataItem[this.events.length]; for (int i = 0; i < this.events.length; i++) { try { final String s = this.events[i]; final Integer v = new Integer(s); arr[i] = new IntDataItem("id", "id", v.intValue()); } catch (final NumberFormatException nfe) { continue; } } iad = new IntegerArrayData("events", "events", arr); // overrides "real" events with events_temp from previous state... } } data.add(iad); data.add(new DefaultData("q1", null, null, new DataItem[] { firstItem })); data.add(new DefaultData("q2", null, null, new DataItem[] { secItem })); data.add(new DefaultData("start", null, null, new DataItem[] { startItem })); data.add(new DefaultData("end", null, null, new DataItem[] { endItem })); return data.toArray(new Data[data.size()]); } }