package demo.heatandtree;
import org.zkoss.chart.Charts;
import org.zkoss.chart.Level;
import org.zkoss.chart.Point;
import org.zkoss.chart.Series;
import org.zkoss.chart.Tooltip;
import org.zkoss.chart.plotOptions.DataLabels;
import org.zkoss.chart.plotOptions.TreemapPlotOptions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Window;
public class TreemapLevelsComposer extends SelectorComposer<Window> {
@Wire
Charts chart;
public void doAfterCompose(Window comp) throws Exception {
super.doAfterCompose(comp);
chart.getTitle().setAlign("left");
chart.setSubtitle("Source: <a href=\"https://snl.no/Norge\" target=\"_blank\">SNL</a>");
chart.getSubtitle().setAlign("left");
Series series = chart.getSeries();
TreemapPlotOptions treemapPlotOptions = new TreemapPlotOptions();
treemapPlotOptions.setName("Norge");
treemapPlotOptions.setAllowTraversingTree(true);
treemapPlotOptions.setAlternateStartingDirection(true);
treemapPlotOptions.setBorderRadius(3);
treemapPlotOptions.getDataLabels().setFormat("{point.name}");
treemapPlotOptions.getDataLabels().setStyle("textOutline: 'none'");
treemapPlotOptions.setNodeSizeBy("leaf");
Level level = new Level();
level.setLevel(1);
level.setLayoutAlgorithm("sliceAndDice");
level.setGroupPadding(3);
DataLabels dataLabels = new DataLabels();
dataLabels.setEnabled(true);
dataLabels.setHeaders(true);
dataLabels.setStyle("fontSize: '0.6em'; fontWeight: 'normal'; textTransform: 'uppercase'; color: 'var(--highcharts-neutral-color-100, #000)'");
level.setBorderWidth(1);
level.setBorderRadius(3);
level.setColorByPoint(true);
level.setDataLabels(dataLabels);
Level level2 = new Level();
level2.setLevel(2);
DataLabels dataLabels2 = new DataLabels();
dataLabels2.setEnabled(true);
dataLabels2.setInside(false);
level2.setDataLabels(dataLabels2);
treemapPlotOptions.setLevels(level, level2);
series.setPlotOptions(treemapPlotOptions);
Tooltip tooltip = chart.getTooltip();
tooltip.setPointFormat("The area of <b>{point.name}</b> is <b>{point.value} km²</b>");
Point a = new Point();
a.setId("A");
a.setName("Nord-Norge");
a.setColor("#50FFB1");
series.addPoint(a);
Point b = new Point();
b.setId("B");
b.setName("Trøndelag");
b.setColor("#F5FBEF");
series.addPoint(b);
Point c = new Point();
c.setId("C");
c.setName("Vestlandet");
c.setColor("#A09FA8");
series.addPoint(c);
Point d = new Point();
d.setId("D");
d.setName("Østlandet");
d.setColor("#E7ECEF");
series.addPoint(d);
Point e = new Point();
e.setId("E");
e.setName("Sørlandet");
e.setColor("#A9B4C2");
series.addPoint(e);
Point f = new Point();
f.setName("Troms og Finnmark");
f.setParent("A");
f.setValue(70923);
series.addPoint(f);
Point g = new Point();
g.setName("Nordland");
g.setParent("A");
g.setValue(35759);
series.addPoint(g);
Point h = new Point();
h.setName("Trøndelag");
h.setParent("B");
h.setValue(39494);
series.addPoint(h);
Point i = new Point();
i.setName("Møre og Romsdal");
i.setParent("C");
i.setValue(13840);
series.addPoint(i);
Point j = new Point();
j.setName("Vestland");
j.setParent("C");
j.setValue(31969);
series.addPoint(j);
Point k = new Point();
k.setName("Rogaland");
k.setParent("C");
k.setValue(8576);
series.addPoint(k);
Point l = new Point();
l.setName("Viken");
l.setParent("D");
l.setValue(22768);
series.addPoint(l);
Point m = new Point();
m.setName("Innlandet");
m.setParent("D");
m.setValue(49391);
series.addPoint(m);
Point n = new Point();
n.setName("Oslo");
n.setParent("D");
n.setValue(454);
series.addPoint(n);
Point o = new Point();
o.setName("Vestfold og Telemark");
o.setParent("D");
o.setValue(15925);
series.addPoint(o);
Point p = new Point();
p.setName("Agder");
p.setParent("E");
p.setValue(14981);
series.addPoint(p);
}
}