All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pingunaut.wicket.chartjs.core.AbstractChartPanel Maven / Gradle / Ivy

Go to download

chart.js for wicket projects. simple but nice looking charts with html5/css/js

There is a newer version: 7.0.1
Show newest version
/*******************************************************************************
 * Copyright 2013 Martin Spielmann
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.pingunaut.wicket.chartjs.core;

import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.pingunaut.wicket.chartjs.chart.IChart;
import com.pingunaut.wicket.chartjs.options.AbstractChartOptions;

/**
 * The Class AbstractChartPanel provides the base panel holding the chart
 * rendering canvas element.
 * 
 * @param 
 *            the generic type of the chart
 */
public abstract class AbstractChartPanel, O extends AbstractChartOptions> extends Panel {

	private static final long serialVersionUID = -5882448897795445250L;

	/** The container holding the canvas. */
	private final WebMarkupContainer wmc;

	/** The width. */
	private int width;

	/** The height. */
	private int height;

	/** The chart. */
	private final IModel chart;

	/**
	 * Instantiates a new abstract chart panel.
	 * 
	 * @param id
	 *            the markup id
	 * @param c
	 *            the IModel of the chart, rendered in this panel
	 */
	public AbstractChartPanel(String id, IModel c) {
		super(id, c);
		this.chart = c;
		wmc = new WebMarkupContainer("chart");
	}

	/**
	 * Instantiates a new abstract chart panel.
	 * 
	 * @param id
	 *            the markup id
	 * @param c
	 *            the IModel of the chart, rendered in this panel
	 * @param width
	 *            the width
	 * @param height
	 *            the height
	 */
	public AbstractChartPanel(String id, IModel c, final int width, final int height) {
		super(id);
		this.chart = c;
		this.width = width;
		this.height = height;
		wmc = new WebMarkupContainer("chart") {
			private static final long serialVersionUID = 3385419188467369696L;

			@Override
			protected void onComponentTag(ComponentTag tag) {
				super.onComponentTag(tag);
				tag.append("width", String.valueOf(width), " ");
				tag.append("height", String.valueOf(height), " ");
			}
		};
	}

	/**
	 * Gets the width.
	 * 
	 * @return the width
	 */
	public int getWidth() {
		return width;
	}

	/**
	 * Gets the height.
	 * 
	 * @return the height
	 */
	public int getHeight() {
		return height;
	}

	/**
	 * Gets the chart.
	 * 
	 * @return the chart
	 */
	public C getChart() {
		return chart.getObject();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.apache.wicket.Component#onInitialize()
	 */
	@Override
	protected void onInitialize() {
		super.onInitialize();
		add(wmc);
		wmc.setOutputMarkupId(true);
		wmc.add(new ChartBehavior());
	}

	/**
	 * Gets the chart canvas.
	 * 
	 * @return the chart canvas
	 */
	public WebMarkupContainer getChartCanvas() {
		return wmc;
	}

	/**
	 * Generates chart.
	 * 
	 * @return the JavaScript which generates the canvas.
	 *         {@link SimpleChartPanel} and {@link DataSetChartPanel} implement
	 *         this method and do nearly the same:
	 *         
    *
  • the charts {@link ObjectMapper} converts data to js object
  • *
  • the charts {@link ObjectMapper} converts options to js object *
  • *
  • initialize the chart canvas with the just created js objects
  • *
*/ public abstract String generateChart(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy