1.openflashchart是一种比较实用的图标呈现插件,而且是开源的,网址http://teethgrinder.co.uk/open-flash-chart/ 2.FlashChart类 <div class="codetitle"><a style="CURSOR: pointer" data="7000" class="copybut" id="copybut7000" onclick="doCopy('code7000')"> 代码如下:<div class="codebody" id="code7000"> 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">'; echo '<script type="text/javascript" src="'.$path.'js/swfobject.js">'; echo '<script type="text/javascript" src="'.$path.'js/jquery-1.4.4.min.js">'; $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_getdataOf{$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 ''; } } 3,TemplateData类 把一个简单的图标的配置从已经写好的txt文本里取出来加载所用的类 :例如 <div class="codetitle"><a style="CURSOR: pointer" data="98714" class="copybut" id="copybut98714" onclick="doCopy('code98714')"> 代码如下:<div class="codebody" id="code98714"> { "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#人 #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) } } 这是类的内容: <div class="codetitle"><a style="CURSOR: pointer" data="76688" class="copybut" id="copybut76688" onclick="doCopy('code76688')"> 代码如下:<div class="codebody" id="code76688"> 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,调用的代码 <div class="codetitle"><a style="CURSOR: pointer" data="16209" class="copybut" id="copybut16209" onclick="doCopy('code16209')"> 代码如下:<div class="codebody" id="code16209">
<div id="myChart"> <?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用的数据 <div class="codetitle"><a style="CURSOR: pointer" data="97646" class="copybut" id="copybut97646" onclick="doCopy('code97646')"> 代码如下:<div class="codebody" id="code97646"> /* @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,-1):null, 'dates' => strlen($dates)>1 ? substr($dates,-1) : null, 'max' => $max+$steps ); return $result; }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|