openflashchart 2.0 简单案例

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文本里取出来加载所用的类 :例如       

View Code
{

"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)

  }

}

这是类的内容:

View Code
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,调用的代码

View Code
<!--//这里的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用的数据

View Code
/**

 * @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;

}

 把附件也传上来算了http://115.com/file/dpnrwpyg

  

 

 

你可能感兴趣的:(Flash)