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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
PHP 命令行参数详解及应用
May 18 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php中使用GD库做验证码
Mar 31 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
PHP7 新特性详细介绍
Sep 06 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 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
解析php如何将日志写进syslog
2013/06/28 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
脚本收藏iframe
2006/07/21 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
在Django中创建动态视图的教程
2015/07/15 Python
利用python获取Ping结果示例代码
2017/07/06 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
2014年煤矿安全工作总结
2014/12/04 职场文书
婚礼新人答谢词
2015/01/04 职场文书
承诺保证书格式
2015/02/28 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
导游词之南京中山陵
2019/11/27 职场文书