blob: 5b4067dd747594262a2a485601398467d85ded0f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 2016 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Ralf Sternberg - initial API and implementation
******************************************************************************/
package org.eclipse.rap.addons.chart.basic;
import org.eclipse.rap.addons.chart.NvChart;
import org.eclipse.rap.json.JsonArray;
import org.eclipse.swt.widgets.Composite;
/**
* A basic line chart widget that supports multiple lines.
*
* <dl>
* <dt><b>Styles:</b></dt>
* <dd>none</dd>
* <dt><b>Events:</b></dt>
* <dd>Selection</dd>
* </dl>
*/
public class LineChart extends NvChart {
private String xAxisLabel;
private String yAxisLabel;
private String xAxisFormat;
private String yAxisFormat;
/**
* Creates a new empty LineChart.
*/
public LineChart( Composite parent, int style ) {
super( parent, style, "nv-line" );
requireJs( registerResource( "chart/nv/nv-line.js" ) );
}
/**
* Sets the label to display on the x-axis.
*
* @param label the label for the x-axis
*/
public void setXAxisLabel( String label ) {
checkWidget();
if( this.xAxisLabel != label ) {
xAxisLabel = label;
setOption( "xAxis.axisLabel", label );
}
}
/**
* Returns the label for the x-axis.
*
* @return the label for the x-axis
*/
public String getXAxisLabel() {
checkWidget();
return xAxisLabel != null ? xAxisLabel : "";
}
/**
* Sets the label to display on the y-axis.
*
* @param label the label for the y-axis
*/
public void setYAxisLabel( String label ) {
checkWidget();
if( this.yAxisLabel != label ) {
yAxisLabel = label;
setOption( "yAxis.axisLabel", label );
}
}
/**
* Returns the label for the y-axis.
*
* @return the label for the y-axis
*/
public String getYAxisLabel() {
checkWidget();
return xAxisLabel != null ? xAxisLabel : "";
}
/**
* Sets the format for the labels on the x-axis. The format string must be recognizable by the
* <a href="https://github.com/mbostock/d3/wiki/Formatting#d3_format">d3.format()</a> function.
*
* @see "https://github.com/mbostock/d3/wiki/Formatting#d3_format"
* @param format a d3 format string for the labels of the x-axis
*/
public void setXAxisFormat( String format ) {
checkWidget();
if( this.xAxisFormat != format ) {
xAxisFormat = format;
setOption( "xAxisFormat", format );
}
}
/**
* Returns the format used for labels on the x-axis.
*
* @return the format for the labels on the x-axis
*/
public String getXAxisFormat() {
checkWidget();
return xAxisFormat;
}
/**
* Sets the format for the labels on the y-axis. The format string must be recognizable by the
* <a href="https://github.com/mbostock/d3/wiki/Formatting#d3_format">d3.format()</a> function.
*
* @see "https://github.com/mbostock/d3/wiki/Formatting#d3_format"
* @param format a d3 format string for the labels of the y-axis
*/
public void setYAxisFormat( String format ) {
checkWidget();
if( this.yAxisFormat != format ) {
yAxisFormat = format;
setOption( "yAxisFormat", format );
}
}
/**
* Returns the format used for labels on the y-axis.
*
* @return the format for the labels on the y-axis
*/
public String getYAxisFormat() {
checkWidget();
return yAxisFormat;
}
/**
* Sets the data items to display. Every item represents a separate line. Later changes to this
* list won't be reflected. To change the chart data, call this method with a new list of items.
*
* @param items the data items to display
*/
public void setItems( LineItem... items ) {
JsonArray values = new JsonArray();
for( LineItem item : items ) {
values.add( item.toJson() );
}
setItems( values );
}
}