package demo.heatandtree;
import java.util.LinkedHashMap;
import java.util.Map;
import org.zkoss.chart.Charts;
import org.zkoss.chart.ChartsEvents;
import org.zkoss.chart.ColorAxis;
import org.zkoss.chart.Point;
import org.zkoss.chart.Series;
import org.zkoss.chart.Theme;
import org.zkoss.chart.ThemeColors;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Window;
public class TreemapComposer extends SelectorComposer<Window> {
@Wire
Charts chart;
public void doAfterCompose(Window comp) throws Exception {
super.doAfterCompose(comp);
final String[] themeColors = ThemeColors.getThemeColors(Theme.DEFAULT);
ColorAxis cAxis = chart.getColorAxis();
cAxis.setMinColor("#FFFFFF");
cAxis.setMaxColor(themeColors[0]);
chart.addEventListener(0, ChartsEvents.ON_PLOT_THEME_CHANGE, new EventListener() {
public void onEvent(Event event) throws Exception {
chart.getColorAxis().setMaxColor(themeColors[0]);
}
});
Series series = chart.getSeries();
series.setType("treemap");
series.setLayoutAlgorithm("squarified");
series.setClip(false);
series.setData(
asMapPoint("name", "A", "value", 6, "colorValue", 1),
asMapPoint("name", "B", "value", 6, "colorValue", 2),
asMapPoint("name", "C", "value", 4, "colorValue", 3),
asMapPoint("name", "D", "value", 3, "colorValue", 4),
asMapPoint("name", "E", "value", 2, "colorValue", 5),
asMapPoint("name", "F", "value", 2, "colorValue", 6),
asMapPoint("name", "G", "value", 1, "colorValue", 7));
}
private Point asMapPoint(Object... args) {
Map map = new LinkedHashMap<>();
for (int i = 0; i < args.length; i+=2) {
map.put(args[i], args[i+1]);
}
return Point.ofMap(map);
}
}