open flash chart

无意中看到business preview这个应用的图标是用open flash chart做的,遂上网了解了下该开源图表工具。平时自己想搞个快速的数据报表出来还是蛮方便的。

 

http://teethgrinder.co.uk/open-flash-chart-2/

 

open flash chart现在是2的大版本号,之前1的版本的数据文件格式不太通用,2的版本之后支持json的数据格式,可以将显示的报表的数据(包含格式),以json的格式进行解析。

 

 

1,download 相应的zip包。

 

2,将压缩包解压缩后放到web server的对应的目录下。

 

3,简单的理解就是,解析数据的open-flash-chart.swf程序,然后数据可以是一个存在服务器上的文本文件

比如:localhost:8080/flashChart/indexChart.htm?ofc=data.json

data.json就是一个数据文件,里面的数据以json格式存储。

{
  "title":{
    "text":  "Many data lines",
    "style": "{font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;}"
  },
 
  "y_legend":{
    "text": "Open Flash Chart",
    "style": "{color: #736AFF; font-size: 12px;}"
  },
 
  "elements":[
    {
      "type":      "bar",
      "alpha":     0.5,
      "colour":    "#9933CC",
      "text":      "Page views",
      "font-size": 10,
      "values" :   [9,6,7,9,5,7,6,9,7]
    },
    {
      "type":      "bar",
      "alpha":     0.5,
      "colour":    "#CC9933",
      "text":      "Page views 2",
      "font-size": 10,
      "values" :   [6,7,9,5,7,6,9,7,3]
    }
  ],
 
  "x_axis":{
    "stroke":1,
    "tick_height":10,
    "colour":"#d000d0",
    "grid_colour":"#00ff00",
    "labels": {
        "labels": ["January","February","March","April","May","June","July","August","Spetember"]
    }
   },
 
  "y_axis":{
    "stroke":      4,
    "tick_length": 3,
    "colour":      "#d000d0",
    "grid_colour": "#00ff00",
    "offset":      0,
    "max":         20
  }
}

 

indexChart.htm的内容为:

<html>
<head>
</head>
<body>
 
<p>Hello World</p>
 
 
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
        codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="500" height="250" id="graph-2" align="middle">
 <param name="allowScriptAccess" value="sameDomain" />
	<param name="movie" value="open-flash-chart.swf" />
	<param name="quality" value="high" />
	<embed src="open-flash-chart.swf"
		   quality="high"
		   bgcolor="#FFFFFF"
		   width="500"
		   height="250"
		   name="open-flash-chart"
		   align="middle"
		   allowScriptAccess="sameDomain"
		   type="application/x-shockwave-flash"
		   pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>

 

也可以是程序(PHP,java等)及时产生的。这样请求的对象就是相应的page。

比如:localhost:8080/flashChart/indexChart.htm?ofc=data.jsp

data.jsp页面输出相关的数据字符串。

 

4,indexChart.htm页面的内容可以精简下,有人写了一些js做了精简工作,swfobject.js文件已经包含在下载的压缩包里了。所以indexChart.htm的内容可以精简为:

<html>
<head>
 <script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("open-flash-chart.swf", "my_chart", "250", "200", "9.0.0");
</script>
</head>
<body>
<p>Hello World</p>
<div id="my_chart"></div>
</body>
</html>

 

发送的请求连接依然不变。

 

5,上面获取图形展示所需要的数据都是通过URL的方式,传了一个ofc的参数,这个还可以再精简。

<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF(
  "open-flash-chart.swf", "my_chart", "550", "200",
  "9.0.0", "expressInstall.swf",
  {"data-file":"chart-3.php"}
  );
</script>
 

 

对indexChart的一段js脚本做些改变,传入了data-file的文件,这里德chart-3.php就是产生数据的程序页面。

这样就可以去掉URL中的ofc参数.如果有多个数据文件,用URL的方式也是无法满足的。所以该方案用的比较多。

 

6,data-file的数据其实未必需要在另外一个页面来处理产生,就是在当前页就可以处理,然后传个那个函数即可。

 

The sequence of steps goes like this:

  1. Your browser requests js.php
  2. js.php is run on the server
  3. js.php creates a PHP open_flash_chart() object
  4. open_flash_chart writes the chart JSON data into the <script type="text/javascript"> section of the page
  5. The browser downloads the page
  6. The browser runs the Javascript (which creates the JSON object)

 看到以下内容应该很容易就理解了。

<?php
//
// This is the MODEL section:
//

include '../php-ofc-library/open-flash-chart.php';

$title = new title( date("D M d Y") );

$bar = new bar();
$bar->set_values( array(9,8,7,6,5,4,3,2,1) );

$chart = new open_flash_chart();
$chart->set_title( $title );
$chart->add_element( $bar );

//
// This is the VIEW section:
//

?>
<html>
<head>
<script type="text/javascript" src="../js/json/json2.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("open-flash-chart.swf", "my_chart", "350", "200", "9.0.0");
</script>

<script type="text/javascript">

function ofc_ready()
{
    alert('ofc_ready');
}

function open_flash_chart_data()
{
    alert( 'reading data' );
    return JSON.stringify(data);
}

function findSWF(movieName) {
  if (navigator.appName.indexOf("Microsoft")!= -1) {
    return window[movieName];
  } else {
    return document[movieName];
  }
}   
var data = <?php echo $chart->toPrettyString(); ?>;
</script>
</head>
<body>
<p>Hello World</p>
<div id="my_chart"></div>    
</body>
</html> 

 

 7,具体数据的格式到底如何定义,以及调整样式的配置等,参考文档即可。当然了,json的产生也是有工具类库可以快速搞定的。图形的展示效果还是蛮不错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值