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教程 基本语法
Oct 23 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
laravel实现上传图片的两种方式小结
Oct 12 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
Twig模板引擎用法入门教程
2016/01/20 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
input的focus方法使用
2010/03/13 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
浅谈js中的bind
2019/03/18 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
python实现的各种排序算法代码
2013/03/04 Python
python解析基于xml格式的日志文件
2017/02/25 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
python怎么删除缓存文件
2020/07/19 Python
css3中transition属性详解
2014/09/02 HTML / CSS
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
J2EE面试题
2016/03/14 面试题
关于运动会的广播稿
2014/09/22 职场文书
实训报告范文大全
2014/11/04 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
感谢信格式范文
2015/01/22 职场文书
心理学培训心得体会
2016/01/22 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
利用Python实现模拟登录知乎
2022/05/25 Python
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers