cclang2009 发表于 2011-12-22 08:54

推荐一款开源的flashchart生成柱状图

<div class="entry">
                                <p>最近项目中需要生成类似excel的柱状图、饼图、趋势图等等。。。</p>
<p>网上<span class="wp_keywordlink"><a href="http://www.gosoa.com.cn/category/google" title="google" target="_blank">google</a></span>了一番,发现了 Open Flash Chart&nbsp; &nbsp;地址: &nbsp;<a href="http://teethgrinder.co.uk/open-flash-chart-2/" target="_blank">http://teethgrinder.co.uk/open-flash-chart-2/</a> 。</p>
<p>非常好用的一款开源工具。目前最新版是2.0</p>
<p>——————————————————————————–</p>
<p><a href="http://ofcgwt.googlecode.com/svn/demo/Demo.html" target="_blank">http://ofcgwt.googlecode.com/svn/demo/Demo.html</a> 这里有很多示例可供参考。</p>
<p>不过不太推荐使用 googlecode上的这个示例代码,建议采用官方的示例代码和flash chart 。</p>
<p>flash chart的使用很简单。</p>
<p>如下示例:</p>
<div class="dp-highlighter"><div class="bar"><div class="tools"><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">view plain</a><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">copy to clipboard</a><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">print</a><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">?</a></div></div><ol class="dp-c" start="1"><li class="alt"><span><span class="comment">//url形式</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">function</span><span>&nbsp;embSwfWithUrl(dataurl,divcon){&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;params&nbsp;=&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"wmode"</span><span>:&nbsp;</span><span class="string">"transparent"</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"menu"</span><span>:&nbsp;</span><span class="string">"false"</span><span>,&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"scale"</span><span>:&nbsp;</span><span class="string">"noScale"</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"allowFullscreen"</span><span>:&nbsp;</span><span class="string">"false"</span><span>,&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"allowScriptAccess"</span><span>:&nbsp;</span><span class="string">"always"</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"bgcolor"</span><span>:&nbsp;</span><span class="string">"#c0c0c0"</span><span>&nbsp;&nbsp;</span><span class="comment">//背景</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;flashvars&nbsp;=&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'data-file'</span><span>&nbsp;:&nbsp;dataurl&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;swfobject.embedSWF(<span class="string">"/swf/open-flash-chart.swf?timestamp="</span><span>&nbsp;+&nbsp;Math.random(),divcon,&nbsp;</span><span class="string">"450"</span><span>,&nbsp;</span><span class="string">"300"</span><span>,&nbsp;</span><span class="string">"10.0.0"</span><span>,&nbsp;</span><span class="string">"./swf/expressInstall.swf"</span><span>&nbsp;,flashvars,params);&nbsp;&nbsp;</span></span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span>embSwfWithUrl(<span class="string">'http://xxx.com/xxx.html'</span><span>,</span><span class="string">'swfCon'</span><span>);&nbsp;&nbsp;</span></span></li></ol></div>//url形式
function embSwfWithUrl(dataurl,divcon){
   var params = {
      "wmode": "transparent",
      "menu": "false",
      "scale": "noScale",
      "allowFullscreen": "false",
      "allowScriptAccess": "always",
      "bgcolor": "#c0c0c0"//背景
    };
    var flashvars = {
      'data-file' : dataurl
    };
    swfobject.embedSWF("/swf/open-flash-chart.swf?timestamp=" + Math.random(),divcon, "450", "300", "10.0.0", "./swf/expressInstall.swf" ,flashvars,params);
}

embSwfWithUrl('http://xxx.com/xxx.html','swfCon');
<p>这里的http://xxx.com/xxx.html返回的是相应的json格式的数据。</p>
<p>swfCon是放flash的div容器。</p>
<p>swfobject是开源的js处理flash的类。<a href="http://code.google.com/p/swfobject/" target="_blank">http://code.google.com/p/swfobject/</a></p>
<p>——————————————————————————–</p>
<p>注意下,flash chart 获得数据的方式有两种,</p>
<p>一种是 &nbsp; data-file &nbsp;一种是 get-data</p>
<p>data-file 正是如上示例,值必须是个 url地址,里面返回的是 json数据。</p>
<p>而get-data的值则是一个函数名称。 函数返回 json 数据。</p>
<p>如下示例:</p>
<div class="dp-highlighter"><div class="bar"><div class="tools"><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">view plain</a><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">copy to clipboard</a><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">print</a><a href="http://www.gosoa.com.cn/%E6%8E%A8%E8%8D%90%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E7%9A%84flashchart%E7%94%9F%E6%88%90%E6%9F%B1%E7%8A%B6%E5%9B%BE/#" target="_blank">?</a></div></div><ol class="dp-c" start="1"><li class="alt"><span><span class="comment">//get-data</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">function</span><span>&nbsp;embSwfWithData(divcon,getdataFn){&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;params&nbsp;=&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"wmode"</span><span>:&nbsp;</span><span class="string">"transparent"</span><span>,&nbsp;&nbsp;</span><span class="comment">//窗口模式</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"menu"</span><span>:&nbsp;</span><span class="string">"false"</span><span>,&nbsp;&nbsp;</span><span class="comment">//菜单显示</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"scale"</span><span>:&nbsp;</span><span class="string">"noScale"</span><span>,&nbsp;&nbsp;</span><span class="comment">//缩放</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"allowFullscreen"</span><span>:&nbsp;</span><span class="string">"false"</span><span>,&nbsp;</span><span class="comment">//允许全屏</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"allowScriptAccess"</span><span>:&nbsp;</span><span class="string">"always"</span><span>,&nbsp;&nbsp;</span><span class="comment">//允许脚本</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">"bgcolor"</span><span>:&nbsp;</span><span class="string">"#c0c0c0"</span><span>&nbsp;&nbsp;</span><span class="comment">//背景</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">var</span><span>&nbsp;flashVar&nbsp;=&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;<span class="string">"get-data"</span><span>:getdataFn&nbsp;&nbsp;</span></span></li><li class="alt"><span>};&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;swfobject.embedSWF(<span class="string">"/swf/open-flash-chart.swf?timestamp="</span><span>&nbsp;+&nbsp;Math.random(),&nbsp;divcon,&nbsp;</span><span class="string">"450"</span><span>,&nbsp;</span><span class="string">"300"</span><span>,&nbsp;</span><span class="string">"10"</span><span>,&nbsp;</span><span class="string">"/swf/expressInstall.swf"</span><span>,flashVar&nbsp;&nbsp;,params);&nbsp;&nbsp;</span></span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">function</span><span>&nbsp;getJsonData(){&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">return</span><span>&nbsp;</span><span class="string">'json&nbsp;data'</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li></ol></div>//get-data
function embSwfWithData(divcon,getdataFn){
    var params = {
      "wmode": "transparent",//窗口模式
      "menu": "false",//菜单显示
      "scale": "noScale",//缩放
      "allowFullscreen": "false", //允许全屏
      "allowScriptAccess": "always",//允许脚本
      "bgcolor": "#c0c0c0"//背景
    };
var flashVar = {
"get-data":getdataFn
};
    swfobject.embedSWF("/swf/open-flash-chart.swf?timestamp=" + Math.random(), divcon, "450", "300", "10", "/swf/expressInstall.swf",flashVar,params);
}

function getJsonData(){
return 'json data';
}
<p>这里 “get-data”:getdataFn 需要传递的就是一个函数名称。函数中返回json数据。</p>
<p>还有一点需要注意下,/swf/open-flash-chart.swf?timestamp=+Math.random() .</p>
<p>这里之所以加随机数,是因为有的浏览器在缓存flash后,使其flash参数失效了。加上随机数后,每次浏览器会重新加载flash。</p>
      
                        </div>
页: [1]
查看完整版本: 推荐一款开源的flashchart生成柱状图