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实现ping
Oct 09 PHP
PHP $_FILES函数详解
Mar 09 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
PHP微信分享开发详解
Jan 14 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
Laravel find in set排序实例
Oct 09 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php 求质素(素数) 的实现代码
2011/04/12 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
给Python入门者的一些编程建议
2015/06/15 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
python协程之动态添加任务的方法
2019/02/19 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
经典c++面试题六
2012/01/18 面试题
单位单身证明范本
2014/01/11 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
护士个人年度总结范文
2015/02/13 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书