-
Bug
-
Resolution: Fixed
-
Major
-
None
-
2.0.0
-
None
As the code below, try change data fields' position then you will see this issue.
TestComposer.java
package test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import org.zkoss.pivot.PivotField; import org.zkoss.pivot.PivotHeaderNode; import org.zkoss.pivot.Pivottable; import org.zkoss.pivot.impl.TabularPivotModel; import org.zkoss.pivot.ui.PivotFieldControl; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Wire; /** * Tested with ZK 6.0.1 CE and ZK Pivottable 2.0.0 * */ @SuppressWarnings("rawtypes") public class TestComposer extends SelectorComposer { /** * generated serial version UID */ private static final long serialVersionUID = -2897873399288955635L; private TabularPivotModel _pivotModel; @Wire("#pivottable") private Pivottable pivottable; @Wire("#pfc") PivotFieldControl pfc; public void doAfterCompose (Component comp) throws Exception { super.doAfterCompose(comp); pfc.setModel(getPivotModel()); } /** * Get pivottable's model * @return TabularPivotModel the pivottable's model * @throws Exception */ public TabularPivotModel getPivotModel () throws Exception { if (_pivotModel == null) { _pivotModel = new TabularPivotModel(getData(), getColumns()); // assign rows, the order matches to the level of row node field _pivotModel.setFieldType("Row_Level_001", PivotField.Type.ROW); // assign datas, the order matches to the order of data field _pivotModel.setFieldType("Data_Field_001", PivotField.Type.DATA); _pivotModel.setFieldType("Data_Field_002", PivotField.Type.DATA); } return _pivotModel; } /** * prepare the data for pivottable's model * The order of object put into data list matches * the order of column name's order * @return * @throws Exception */ public List<List<Object>> getData() throws Exception { List<List<Object>> result = new ArrayList<List<Object>>(); Random r = new Random(); for (int i = 0; i < 10000; i++) { List<Object> data = new ArrayList<Object>(); data.add("Row_Level_001 - " + (r.nextInt(10) + 1)); data.add(r.nextInt(10000)); data.add(r.nextDouble() * 10000.0); result.add(data); } return result; } /** * prepare columns name for pivottable's model * @return */ public List<String> getColumns() { return Arrays.asList(new String[]{ "Row_Level_001", "Data_Field_001", "Data_Field_002" }); } }
test.zul
<zk> <!-- Tested with ZK 6.0.2 CE and ZK Pivottable 2.0.0 --> <vlayout> <!-- window, apply a SelectorComposer --> <window id="win" xmlns:w="client" apply="test.TestComposer"> <!-- pivottable, get model from window's composer --> <pivottable id="pivottable" model="${win$composer.pivotModel}" /> <pivot-field-control id="pfc" height="300px" /> </window> </vlayout> </zk>