0

使用Timeplot,每次画到第三个点时,都会提示:当前页面的某个脚本正忙

asked 2012-06-02 10:55:30 +0800

yizhengyu gravatar image yizhengyu
21

timplotModel.zul

<zk xmlns:w="http://www.zkoss.org/2005/zk/client">
	<zscript><![CDATA[
		import org.zkforge.timeplot.geometry.*; 
		import org.zkforge.timeplot.data.*;
		import org.zkforge.timeplot.operator.*;
		import org.zkforge.timeline.data.OccurEvent;
		import org.zkoss.zul.*;
		
		ValueGeometry vg = new DefaultValueGeometry();
		vg.setGridColor("#000000");
		TimeGeometry tg = new DefaultTimeGeometry();
		tg.setAxisLabelsPlacement("bottom");
		
	]]></zscript>
	<timeplot id="tp" height="300px" apply="TimeplotModelController">
		<plotinfo id="plot1" dotColor="#000000"
			showValues="true" lineColor="#008bb6"
			valueGeometry="${vg}"  timeGeometry="${tg}" >

		</plotinfo>
	</timeplot>
</zk>

TimeplotModelController.java

public class TimeplotModelController implements Composer
{
    private Timeplot tp;
    private Plotinfo plot1;
    private Desktop desktop;
    
    @Override
    public void doAfterCompose (Component comp) throws Exception
    {
        tp = (Timeplot) comp;
        desktop = (Desktop) tp.getDesktop();
        desktop.enableServerPush(true);
        plot1 = (Plotinfo) tp.getFellow("plot1");
        ListModelList<Plotinfo> model = new ListModelList<Plotinfo>();
        plot1.setDataModel(model);
        TimerTask task = new TimerTask()
        {
            @Override
            public void run ()
            {
                ListModelList<PlotData> model = 
                        (ListModelList<PlotData>) plot1.getDataModel();
                PlotData newData = new PlotData();
                newData.setFormat("HH:mm");
                newData.setTime(new Date());
                newData.setValue((float) (Math.random() * 20));
                try
                {
                    Executions.activate(desktop);
                    if (model.size() < 10)
                    {
                        model.add(newData);
                    }
                    else
                    {
                        model.remove(0);
                        model.add(newData);
                    }
                    Executions.deactivate(desktop);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        };
        Timer timer = new Timer();
        timer.schedule(task, 10 * 1000, 10 * 1000);
    }
}

delete flag offensive retag edit
Be the first one to reply this discussion!
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2012-06-02 10:55:30 +0800

Seen: 910 times

Last updated: Jun 02 '12

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More