package fr.openwide.core.wicket.more.jqplot.component; import java.util.Collection; import java.util.Locale; import java.util.Map; import org.apache.wicket.model.IModel; import fr.openwide.core.wicket.more.jqplot.config.AbstractJQPlotConfigurer; import fr.openwide.core.wicket.more.jqplot.config.JQPlotConfigurers; import fr.openwide.core.wicket.more.jqplot.data.adapter.JQPlotDataAdapters; import fr.openwide.core.wicket.more.jqplot.data.adapter.JQPlotPieChartDataAdapter; import fr.openwide.core.wicket.more.jqplot.data.provider.IJQPlotDataProvider; import fr.openwide.core.wicket.more.jqplot.data.provider.JQPlotMapDataProvider; import fr.openwide.core.wicket.more.rendering.Renderer; import nl.topicus.wqplot.components.plugins.JQPlotPieRenderer; import nl.topicus.wqplot.options.PlotOptions; import nl.topicus.wqplot.options.PlotSeries; import nl.topicus.wqplot.options.PlotTick; public class JQPlotPiePanel<K, V extends Number & Comparable<V>> extends JQPlotPanel<Object, K, V> { private static final long serialVersionUID = -5575918534912813908L; public JQPlotPiePanel(String id, IModel<Map<K, V>> mapModel, Renderer<? super K> keyRenderer) { this(id, new JQPlotMapDataProvider<>(mapModel), null, keyRenderer); } public JQPlotPiePanel(String id, IModel<Map<K, V>> mapModel, IModel<? extends Collection<? extends K>> keysModel, Renderer<? super K> keyRenderer) { this(id, new JQPlotMapDataProvider<>(mapModel), keysModel, keyRenderer); } public JQPlotPiePanel(String id, IJQPlotDataProvider<Object, K, V> dataProvider, Renderer<? super K> keyRenderer) { this(id, dataProvider, null, keyRenderer); } public JQPlotPiePanel(String id, IJQPlotDataProvider<Object, K, V> dataProvider, IModel<? extends Collection<? extends K>> keysModel, Renderer<? super K> keyRenderer) { this(id, new JQPlotPieChartDataAdapter<>(dataProvider, null, keysModel, keyRenderer)); } public JQPlotPiePanel(String id, JQPlotPieChartDataAdapter<Object, K, V> dataAdapter) { super(id, JQPlotDataAdapters.fix(dataAdapter)); add(new AbstractJQPlotConfigurer<Object, K>() { private static final long serialVersionUID = 1L; @Override public void configure(PlotOptions options, Map<? extends Object, PlotSeries> seriesMap, Map<? extends K, PlotTick> keysMap, Locale locale) { options.getSeriesDefaults() .setRenderer(JQPlotPieRenderer.get()) .setRendererOptions(getOptionsFactory().newPlotPieRendererOptions()); // jqPlot bug workaround // The PieCharts don't have any axis, and it doesn't work if this option is set to true. options.getHighlighter().setUseAxesFormatters(false); } }); add(JQPlotConfigurers.xAxisDisabled()); } }