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 09 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
PHP多进程编程实例
Oct 15 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
PDO::query讲解
Jan 29 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
JSON辅助格式化处理方法
2013/03/26 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
js实现左右轮播图
2020/01/09 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
人力资源作业细则
2014/03/03 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
离职保密承诺书
2014/05/28 职场文书
承诺书格式
2014/06/03 职场文书
颐和园英文导游词
2015/01/30 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers