Package org.jboss.as.console.client.shared.runtime.charts

Source Code of org.jboss.as.console.client.shared.runtime.charts.ColumnChartView

package org.jboss.as.console.client.shared.runtime.charts;

import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.visualizations.corechart.AxisOptions;
import com.google.gwt.visualization.client.visualizations.corechart.ColumnChart;
import com.google.gwt.visualization.client.visualizations.corechart.CoreChart;
import com.google.gwt.visualization.client.visualizations.corechart.Options;
import org.jboss.as.console.client.shared.runtime.Metric;
import org.jboss.as.console.client.shared.runtime.Sampler;

import java.util.Date;

/**
* Needs to be {@link #recycle()}ed after is was hidden.
* Typically this happens in Presenter.onReset()
*
* @author Heiko Braun
* @date 10/25/11
*/
public class ColumnChartView extends AbstractChartView implements Sampler {

    private DataTable data;
    private ColumnChart chart;

    private VerticalPanel layout;
    private Column[] columns = null;

    private boolean timelineSeries = true;

    public ColumnChartView(int width, int height, String title) {
        super(width, height, title);
    }

    public ColumnChartView setColumns(Column... columns) {
        this.columns = columns;
        return this;
    }

    public ColumnChartView setTimelineSeries(boolean timelineSeries) {
        this.timelineSeries = timelineSeries;
        return this;
    }

    public Widget asWidget() {
        layout = new VerticalPanel();

        // chart
        chart = new ColumnChart(createTable(), createOptions()) ;
        layout.add(chart);

        return layout;

    }

    private DataTable createTable() {

        if(null==columns)
            throw new RuntimeException("Columns not specified");

        data = DataTable.create();

        // default
        data.addColumn(AbstractDataTable.ColumnType.DATE, "Time");

        for(Column c : columns)
        {
            data.addColumn(c.getType(), c.getLabel());
        }

        return data;
    }

    private Options createOptions() {
        Options options = Options.create();
        options.setWidth(width);
        options.setHeight(height);
        options.setTitle(title);
        options.setType(CoreChart.Type.COLUMNS);
        //options.setLegend(LegendPosition.BOTTOM);

        return options;
    }

    public void addSample(Metric metric) {

        if(chart==null)
        {
            throw new RuntimeException("chart is null. Did you forget to #recycle() ?");
        }

        if(data.getNumberOfRows()==0 || timelineSeries)
            data.addRow();

        int nextRow = data.getNumberOfRows()-1;

        // default
        data.setValue(nextRow, 0, new Date(System.currentTimeMillis()));


        DataTableAdapter adapter = new DataTableAdapter(data);

        for(int i=0; i<metric.getValues().size(); i++)
        {
            adapter.setValue(nextRow, i+1, columns[i].cast(metric.get(i)));
        }

        Options options = createOptions();

        AxisOptions haxis = AxisOptions.create();
        haxis.set("showTextEvery", "25.00");
        haxis.set("maxAlternation", "1");
        options.setHAxisOptions(haxis);

        chart.draw(data, options);
    }

    public void clearSamples()
    {
        data = createTable();
        chart.draw(data);
    }

    public long numSamples() {
        return data.getNumberOfRows();
    }

    @Override
    public void recycle() {
        if(chart!=null)
        {
            layout.clear();
            chart=null;

            chart = new ColumnChart(createTable(), createOptions()) ;
            chart.setTitle(title);
            layout.add(chart);
        }
    }
}
TOP

Related Classes of org.jboss.as.console.client.shared.runtime.charts.ColumnChartView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.