package demo.pie;
import java.util.List;
import java.util.Map;
import org.zkoss.chart.Charts;
import org.zkoss.chart.Color;
import org.zkoss.chart.Point;
import org.zkoss.chart.Series;
import org.zkoss.chart.plotOptions.DataLabels;
import org.zkoss.chart.plotOptions.PiePlotOptions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Window;
public class PieDonutComposer extends SelectorComposer<Window> {
@Wire
Charts chart;
public void doAfterCompose(Window comp) throws Exception {
super.doAfterCompose(comp);
chart.getYAxis().setTitle("Total percent market share");
chart.getPlotOptions().getPie().setShadow(false);
chart.getPlotOptions().getPie().setCenter("50%", "50%");
chart.getTooltip().setValueSuffix("%");
initSeries();
}
private void initSeries() {
Series browser = chart.getSeries();
Series version = chart.getSeries(1);
browser.setName("Browsers");
List<Color> colors = chart.getColors();
int i = 0;
for (Map.Entry<String, Double> browserEntry: PieDonutData.getBrowsers().entrySet()) {
String key = browserEntry.getKey();
double browserValue = browserEntry.getValue();
Point browserPoint = new Point(key, browserValue);
browserPoint.setColor(colors.get(i));
if (browserValue < 5)
browserPoint.getDataLabels().setEnabled(false);
browser.addPoint(browserPoint);
for (Map.Entry<String, Double> versionEntry: PieDonutData.getVersions(key).entrySet()) {
double versionValue = versionEntry.getValue();
Point versionPoint = new Point(versionEntry.getKey(), versionValue);
versionPoint.setColor(colors.get(i));
if (versionValue < 1) {
versionPoint.getDataLabels().setEnabled(false);
}
version.addPoint(versionPoint);
}
i += 1;
}
PiePlotOptions browserPlotOptions = new PiePlotOptions();
browserPlotOptions.setSize("60%");
browser.setPlotOptions(browserPlotOptions);
DataLabels browserLabels = browser.getDataLabels();
browserLabels.setFormat("{point.name}");
browserLabels.setColor("white");
browserLabels.setDistance(-30);
PiePlotOptions versionPlotOptions = new PiePlotOptions();
versionPlotOptions.setSize("80%");
versionPlotOptions.setInnerSize("60%");
version.setPlotOptions(versionPlotOptions);
version.getDataLabels().setFormat("<b>{point.name}:</b> {point.y}%");
}
}
package demo.pie;
import java.util.LinkedHashMap;
import java.util.Map;
public class PieDonutData {
private static final Map<String, Double> browsers;
private static final Map<String, Map<String, Double>> versions;
static {
browsers = new LinkedHashMap<String, Double>();
versions = new LinkedHashMap<String, Map<String, Double>>();
browsers.put("MSIE", 55.11);
Map<String, Double> msie = new LinkedHashMap<String, Double>();
msie.put("MSIE 6.0", 10.85);
msie.put("MSIE 7.0", 7.35);
msie.put("MSIE 8.0", 33.06);
msie.put("MSIE 9.0", 2.81);
versions.put("MSIE", msie);
browsers.put("Firefox", 21.63);
Map<String, Double> firefox = new LinkedHashMap<String, Double>();
firefox.put("Firefox 2.0", 0.20);
firefox.put("Firefox 3.0", 0.83);
firefox.put("Firefox 3.5", 1.58);
firefox.put("Firefox 3.6", 13.12);
firefox.put("Firefox 4.0", 5.43);
versions.put("Firefox", firefox);
browsers.put("Chrome", 11.94);
Map<String, Double> chrome = new LinkedHashMap<String, Double>();
chrome.put("Chrome 5.0", 0.12);
chrome.put("Chrome 6.0", 0.19);
chrome.put("Chrome 7.5", 0.12);
chrome.put("Chrome 8.6", 0.36);
chrome.put("Chrome 9.0", 0.32);
chrome.put("Chrome 10.0", 9.91);
chrome.put("Chrome 11.0", 0.50);
chrome.put("Chrome 12.0", 0.22);
versions.put("Chrome", chrome);
browsers.put("Safari", 7.15);
Map<String, Double> safari = new LinkedHashMap<String, Double>();
safari.put("Safari 5.0", 4.55);
safari.put("Safari 4.0", 1.42);
safari.put("Safari Win 5.0", 0.23);
safari.put("Safari 4.1", 0.21);
safari.put("Safari/Maxthon", 0.20);
safari.put("Safari 3.1", 0.19);
safari.put("Safari 4.1", 0.14);
versions.put("Safari", safari);
browsers.put("Opera", 2.14);
Map<String, Double> opera = new LinkedHashMap<String, Double>();
opera.put("Opera 9.x", 0.12);
opera.put("Opera 10.x", 0.37);
opera.put("Opera 11.x", 1.65);
versions.put("Opera", opera);
}
public static Map<String, Double> getBrowsers() {
return browsers;
}
public static Map<String, Double> getVersions(String browser) {
return versions.get(browser);
}
}