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 相关文章推荐
php仿ZOL分页类代码
Oct 02 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
PHP简单实现文本计数器的方法
Apr 28 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
PHP执行linux命令6个函数代码实例
Nov 24 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
用libtemplate实现静态网页生成
2006/10/09 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP答题类应用接口实例
2015/02/09 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
js模拟实现Array的sort方法
2007/12/11 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
Python struct.unpack
2008/09/06 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
详解python中*号的用法
2019/10/21 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
我爱我家教学反思
2014/05/01 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python