openflashchart 2.0 simple case php edition

  • 2020-05-16 06:38:00
  • OfStack

1. openflashchart is 1 kind of practical icon presents the plug-in, and it is open source, site http: / / teethgrinder co. uk/open - flash - chart /

2. FlashChart class
 
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 class

Take the configuration of a simple icon out of the txt text you have written to load the class you are using: for example
 
{ 
"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": " Number of registered users ( people )", 
"width": 1, 
"dot-style": { 
"type":"solid-dot", "colour":"#a44a80", "dot-size": 3, 
"tip":"#val# people <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) 
} 
} 

This is the content of the class:
 


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. The calling code
 

<!--// Here, myChat Is to show flash So can not be empty, change the word to declare in FlashChart Class when defined, see details FlashChart class --> 
<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'=>"\" string 1\",\" string 2\",\" string 3\",\" string 4\",\" string 5\"", 
'steps'=>600000, 
'max'=>6000000 
); 
$info=array("title"=>' User registration statistics ','numbers'=>$infos['numbers'],'dates'=>$infos['dates'],'steps'=>$infos['steps'],'max'=>$infos['max']); 
$fc->setChart("chart/templatechart/user-add.txt",$info); 

5. There is also a data processing function, which converts the queried data set into the data used by ofc

 


/** 
* @brief ofc The data processing  
* @params  The database queries out about x . y The data set of the axis data  
* @note  The background  
*/ 
/* 
public function init_count($rs) 
{ 

$numbers =''; 
$dates = ''; 
$max = 0; 
foreach($rs as $row) 
{ 

$numbers .= $row['num'].',';//y Axis data  
$dates .='"'.$row['month'].'",';//x Axis data  
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; 
} 

Related articles: