ITPUB??ì3
ITPUB论坛 » WEB 2.0技术 » AJAX + SVG 实现实时监控图表

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: [参考文档] AJAX + SVG 实现实时监控图表
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:52 
你可以点击 Excute 来测试一下效果,这样网页就能够直接调用 java 端的程序了。接着我们看看 JSP 文件。

首先导入 js,这样才能:


1.<script type='text/javascript' src='/ ajaxSVG
/dwr/engine.js'></script>
2.<script type='text/javascript' src='/ ajaxSVG
/dwr/util.js'></script>
3.<script type='text/javascript'src='/ ajaxSVG
/dwr/interface/MeterRemote.js'></script>


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:53 
1,2行是DWR引擎所需要的两个js文件。第3行是导入DWR引擎调用POJO java所需要的js文件。


        function getValue()
{
    MeterRemote.getDegree(loadinfo);
   
}
     


上面的方法从服务器端取得仪表盘的指针的数据。


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:53 
重点是以下代码:
PHP code:


function loadinfo(data)

{

DWRUtil.setValue(&quot;reply1&quot;, data);

    
curr_degree=data;

    var 
svgDocument window.sample.getSVGDocument();

chart=svgDocument.getElementById(&quot;line2&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;

chart.setAttribute( &quot;from&quot;, last_degree+&quot;,250,250&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;

    
chart.setAttribute( &quot;to&quot;, curr_degree+&quot;,250,250&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;

    
chart.beginElement();

    
last_degree=curr_degree;

}

 ........

上面的代码根据远程调用得到的仪表盘的指针数据来动态的改变SVG图中指针的位置。


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:54 
其中:
PHP code:


var svgDocument window.sample.getSVGDocument();

得到SVG对象。
PHP code:


chart
=svgDocument.getElementById(&quot;line2&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;

得到指针对象。


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:54 
PHP code:


chart
.setAttribute( &quot;from&quot;, last_degree+&quot;,250,250&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;

    
chart.setAttribute( &quot;to&quot;, curr_degree+&quot;,250,250&quot<img src="images/smilies/23.gif" smilieid="206" border="0" alt="" />;

chart.beginElement();

 

........

远程调用得到的仪表盘的指针数据来动态的改变SVG图中指针的位置。


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:55 
最后我们看看SVG文件,下面是值得关注的代码部分
PHP code:


<circle cx=&quot;250&quotcy=&quot;250&quotr=&quot;150.0&quotfill=&quot;#ffffff&quot;/>

<path d=&quot;M143.93398282201787 356.0660171779821 A150.0 150.0 00,

1,101.84674891072936 226.53483024396536 L250 250Z&quot; class=&quot;fill1&quot;/>

<
path d=&quot;M101.84674891072936 226.53483024396536 A150.0 150.0 00,

1,181.90142503906804 116.34902137174478 L250 250Z&quot; class=&quot;fill2&quot;/>

<
path d=&quot;M181.90142503906804 116.34902137174478 A150.0 150.0 00,

1,318.098574960932 116.34902137174484 L250 250Z&quot; class=&quot;fill3&quot;/>

<
path d=&quot;M318.098574960932 116.34902137174484 A150.0 150.0 00,

1,398.1532510892706 226.53483024396536 L250 250Z&quot; class=&quot;fill4&quot;/>

<
path d=&quot;M398.1532510892706 226.53483024396536 A150.0 150.0 00,

1,356.06601717798213 356.06601717798213 L250 250Z&quot; class=&quot;fill5&quot;/>

<
circle cx=&quot;250&quotcy=&quot;250&quotr=&quot;3&quotstyle=&quot;fill#00C&quot;/>

<line x1=&quot;129.7918471982869&quoty1=&quot;370.208152801713&quotx2=&quot;250&quoty2=&quot;250&quot;

style=&quot;stroke#F00;stroke-width: 2px&quot; id=&quot;finger&quot;>

<animateTransform attributeName=&quot;transform&quotattributeType=&quot;XML&quot

type=&quot;rotate&quotfrom=&quot;0,250,250&quotbegin=&quot;run()&quot;  to=&quot;20,250,250&quotdur=&quot;2&quot;

fill=&quot;freeze&quotstyle=&quot;stroke#F00;stroke-width: 2px&quot; id=&quot;line2&quot;/>

</line>

 

............

实际上上面的 SVG 代码定义了一个静态的指针指向 0 度的仪表盘。它由 <path> 标签定义的。它往往是通过软件来生产的,因为能生成 SVG 图表的软件非常多,例如 jfreechart 等,和文章篇幅限制就不详细结束 SVG 图表了。


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:55 
结束语

使用本例子的原理我们已经在数个实际项目中应用了,从用户使用的实际效果来说,性能和效果都非常满意。替代了以往用户使用 CS 软件才能实现的实时监控图表的功能,现在 AJAX 替代传统的各种 MVC(例如Struts,JSF)框架并不能显示出它的威力,特别是在开发 AJAX 工具奇缺,开发测试效率低下。但是它与其他技术的融合例如 SVG,往往能发挥意想不到的效果。AJAX 和各种新兴的 Web 2.0 技术的出现大大的丰富了 Web 程序员的技术力量,把以往只有 CS 软件才能实现的功能,不仅实现了,而且更加完美和高效。

拥抱 AJAX 拥抱 Web 2.0 你能做得更好!


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:56 
下载
描述 Sample application
名字 ajaxSVG.rar
大小 11KB
下载方法 HTTP





关于下载方法的信息

Get Adobe® Reader®


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:56 
参考资料






关于作者


皮振华 毕业于武汉大学,现就职与北京能博文公司,从事 EAI/EIP 工作。自由撰稿人,对各种开源产品、技术非常感兴趣。你可以在 IBM developerWorks 和其它媒体杂志看到他的技术文章。Email:pi_zh@emarkets.cn


__________________
只看该作者    顶部
在线/呼叫 lastwinner
路边野花不要,踩!
世本冇谱,靠者多便有


精华贴数 18
个人空间 826
技术积分 40517 (19)
社区积分 28888 (35)
注册日期 2002-11-27
论坛徽章:188
现任管理团队成员生肖徽章2007版:虎生肖徽章2007版:虎2008年新春纪念徽章  
      

发表于 2006-7-12 19:56 

__________________
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问