openflashchart 2.0 简单案例php版


Posted in PHP onMay 21, 2012

1.openflashchart是一种比较实用的图标呈现插件,而且是开源的,网址http://teethgrinder.co.uk/open-flash-chart/

2.FlashChart类

FlashChart Class Code class FlashChart 
{ 
private $id; 
private $height; 
private $width; 
private $path; 
function __construct($path="",$width=300,$height=500,$id="myChart") 
{ 
global $flash_chart; 
$this->id=$id; 
$this->height=$height; 
$this->width=$width; 
$this->path=$path; 
if(!$flash_chart) 
{ 
echo '<script type="text/javascript" src="'.$path.'js/json/json2.js"></script>'; 
echo '<script type="text/javascript" src="'.$path.'js/swfobject.js"></script>'; 
echo '<script type="text/javascript" src="'.$path.'js/jquery-1.4.4.min.js"></script>'; 
$flash_chart=true; 
} 
} 
function __destruct() 
{ 
unset($this->id,$this->height,$this->width,$this->path); 
} 
function setID($id) 
{ 
$this->id=$id; 
} 
function setChart($file,$info) 
{ 
$tp=new TemplateData($file); 
echo '<script type="text/javascript">'; 
echo "data_{$this->id}=".$tp->changeInfo($info).';'; 
echo "function ofc_get_dataOf{$this->id}(){return JSON.stringify(data_{$this->id});}"; 
echo "swfobject.embedSWF('".$this->path."/open-flash-chart.swf', '$this->id', '$this->width','$this->height','9.0.0','expressInstall.swf',{'get-data':'ofc_get_dataOf{$this->id}'} )"; 
echo '</script>'; 
} 
}

3,TemplateData类

把一个简单的图标的配置从已经写好的txt文本里取出来加载所用的类 :例如

{ 
"title": 
{ 
"text":"(title)", 
"style":"{color:#FF0000;font-size:24px;}" 
}, 
"y_legend":{ 
"text": "iWebShop", 
"style": "{color: #736AFF;font-size:16px;}" 
}, "elements":[ 
{ 
"type": "line", 
"colour": "#736AFF", 
"text": "注册用户量(人)", 
"width": 1, 
"dot-style": { 
"type":"solid-dot", "colour":"#a44a80", "dot-size": 3, 
"tip":"#val#人<br>#x_label#" }, 
"on-show": {"type": "shrink-in", "cascade":1, "delay":0.5}, 
"values" : [(numbers)] 
} 
], 
"x_axis":{ 
"labels": { 
"labels":[(dates)] 
} 
}, 
"y_axis":{ 
"steps": (steps), 
"max": (max) 
} 
}

这是类的内容:
class TemplateData 
{ 
public $substitution; 
private $templateFile; 
function __construct($filename) 
{ 
$this->templateFile=@file_get_contents($filename) or die("not find templateFile"); 
} 
function __destruct() { 
unset ($this->templateFile,$this->substitution); 
} 
function setTemplateFile($tfile) 
{ 
$this->templateFile=$tfile; 
} 
function getTemplateFile() 
{ 
return $this->templateFile; 
} 
function replaceReal($matches) 
{ 
extract($this->substitution, EXTR_OVERWRITE); 
return isset($$matches[1])?$$matches[1]:$matches[1]; 
} 
function changeInfo($subs) 
{ 
$this->substitution=$subs; 
return preg_replace_callback("(\((\w+)\))",array(&$this, 'replaceReal'),$this->getTemplateFile()); 
} 
}

4,调用的代码
<!--//这里的myChat是显示flash的地方,所以不能为空,改动的话要在声明FlashChart类的时候定义,详细见FlashChart类--> 
<div class='content_box'><div id="myChart"></div></div> 
<?php 
include("flashchart.php"); 
include("templatedata.php"); 
$fc=new FlashChart('chart/',"100%",320); 
$infos=array( 
'numbers'=>"30000,10000,5000,6000000,700", 
'dates'=>"\"字符串1\",\"字符串2\",\"字符串3\",\"字符串4\",\"字符串5\"", 
'steps'=>600000, 
'max'=>6000000 
); 
$info=array("title"=>'用户注册统计','numbers'=>$infos['numbers'],'dates'=>$infos['dates'],'steps'=>$infos['steps'],'max'=>$infos['max']); 
$fc->setChart("chart/templatechart/user-add.txt",$info);

5,还有一个处理数据的函数,把查询出来的数据集转换成ofc用的数据
/** 
* @brief ofc数据处理 
* @params 数据库查询出关于x,y轴的数据的数据集 
* @note 后台 
*/ 
/* 
public function init_count($rs) 
{ 
$numbers =''; 
$dates = ''; 
$max = 0; 
foreach($rs as $row) 
{ 
$numbers .= $row['num'].',';//y轴数据 
$dates .='"'.$row['month'].'",';//x轴数据 
if($max<$row['num']) $max = $row['num']; 
} 
$steps=ceil($max/10); 
$result= array( 
'steps' => $steps, 
'numbers' => strlen($numbers)>1 ? substr($numbers,0,-1):null, 
'dates' => strlen($dates)>1 ? substr($dates,0,-1) : null, 
'max' => $max+$steps 
); 
return $result; 
}
PHP 相关文章推荐
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
php构造函数实例讲解
Nov 13 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
PHP实现的购物车类实例
Jun 17 PHP
Smarty实现页面静态化(生成HTML)的方法
May 23 PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
PHP中去掉字符串首尾空格的方法
May 19 #PHP
有关PHP中MVC的开发经验分享
May 17 #PHP
php的array_multisort()使用方法介绍
May 16 #PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 #PHP
php array的学习笔记
May 16 #PHP
php文件操作实例代码
May 10 #PHP
PHP图片验证码制作实现分享(全)
May 10 #PHP
You might like
第十四节--命名空间
2006/11/16 PHP
php中session与cookie的比较
2015/01/27 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
python 垃圾收集机制的实例详解
2017/08/20 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python书籍信息爬虫实例
2018/03/19 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
我的老师教学反思
2014/05/01 职场文书
幼儿园标语大全
2014/06/19 职场文书
公司员工离职证明书
2014/10/04 职场文书
优秀党员推荐材料
2014/12/18 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis