<?php
/**
* Echarts 报表类
* @author 齐福
* 2017年3月3日 上午11:44:30
* api 解释需要结合 2.0 和 3.0 因为2.0有的东西 3.0大部分不会出现例如 title 属性 3.0就没有说明
* 2.0 http://echarts.baidu.com/echarts2/doc/doc.html
* 3.0 http://echarts.baidu.com/api.html#echarts
* @version 1.0
*/
class Echarts
{
/**
* 标题
* @var array("text"=>"报表");
*/
var $title = array("text"=>"报表");//报表标题
/**
* 显示提示框
* @var array("trigger"=>"axis");
*/
var $tooltip = array("trigger"=>"axis");
/**
* 报表图例 一个图例对应个 串联 (series)
*/
var $legend = array();
/**
* grid组件 可以有多个 并且有各种控制宽高间距的属性
*/
var $grid = array();
var $xAxis = array();
/**
* y轴 设置成type value则 随着 series data 变化而变化
*/
var $yAxis = array("type"=>"value");
var $series = array();
var $toolbox = array();
function get_option(){
$vars = get_class_vars("Echarts");
$option = array();
foreach ($vars as $k=>$v){
$option[$k] = $this->$k;
}
return $option;
}
}
class Title{
/**
* 显示策略
*/
var $show = true;
/**
* 标题显示文字
*/
var $text = '';
/**
* 副标题
*/
var $subtext = '';
function set_title($v) {
foreach ($v as $k=>$v){
$this->$k = $v;
}
}
}
class Legend{
var $data = array();
function set_legend($v) {
foreach ($v as $k=>$v){
$this->$k = $v;
}
}
}
class XAxis{
var $gridIndex = 0;
/*
坐标轴类型
'value' 数值轴,适用于连续数据。
'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
'time' 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。
'log' 对数轴。适用于对数数据。
*/
var $type = 'category';
var $data = array();
//x 轴的位置。 默认 grid 中的第一个 x 轴在 grid 的下方('bottom'),第二个 x 轴视第一个 x 轴的位置放在另一侧。
var $position = 'bottom';
var $boundaryGap = false;
function set_xAxis($v) {
foreach ($v as $k=>$v){
$this->$k = $v;
}
}
}
class YAxis{
var $gridIndex = 0;
/*
坐标轴类型
'value' 数值轴,适用于连续数据。
'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
'time' 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。
'log' 对数轴。适用于对数数据。
*/
var $type = 'category';
var $data = array();
//y 轴的位置。默认 grid 中的第一个 y 轴在 grid 的左侧('left'),第二个 y 轴视第一个 y 轴的位置放在另一侧。 可选 left right
var $position = 'left';
var $boundaryGap = false;
function set_yAxis($v) {
foreach ($v as $k=>$v){
$this->$k = $v;
}
}
}
/**
* grid组件 可以有多个 并且有各种控制宽高间距的属性
*/
class Grid{
/**
* 是否显示直角坐标系网格。
*/
var $show=false,
$left=60,
$top=60,
$right='10%',
$bottom=60,
$width='auto',
$height='auto',
/**
* grid 区域是否包含坐标轴的刻度标签,在无法确定坐标轴标签的宽度,容器又比较小无法预留较多空间的时候,可以设为 true 防止标签溢出容器。
*/
$containLabel=FALSE,
/**
*网格背景色,默认透明。 比如 'rgb(128, 128, 128)' 比如 '#ccc' 注意:此配置项生效的前提 设置了 show: true。
*/
$backgroundColor='transparent';
function set_grid($v) {
foreach ($v as $k=>$v){
$this->$k = $v;
}
}
}
class Series{
var $name = '';
var $type = 'line';
var $stack = '';
var $areaStyle ='';
var $data = array();
function set_series($v) {
foreach ($v as $k=>$v){
$this->$k = $v;
}
}
}
class Toolbox{
var $feature = array();
/**
* 水平安放位置
* 可选为:'center' | 'left' | 'right' | {number}(x坐标,单位px)
*/
var $x = "right";
/**
* 垂直安放位置
* 可选为:'top' | 'bottom' | 'center' | {number}(y坐标,单位px)
*/
var $y = "top";
/**
* 工具箱内边距
* 配合 x y 使用
*/
var $padding = array(5,100);
function __construct(){
$this->feature = new Feature();
}
}
class Feature{
/**
* 辅助线标志
*/
var $mark =array("show"=>false);
/**
* 框选区域缩放
*/
var $dataZoom = array("show"=>false);
/**
* 数据视图
*/
var $dataView = array("show"=>false);
/**
* 动态类型切换
* type ['line', 'bar', 'stack', 'tiled', 'force', 'chord', 'pie', 'funnel']
* line 折线图
* bar 柱状图
* stack 堆积图
* tiled 平铺转换
* force 力导向布局图
* chord 弦图
* pie 饼图
* funnel 漏斗图
*/
var $magicType = array("show"=>false);
/**
* 还原
*/
var $restore = array("show"=>false);
/**
* 保存图片
*/
var $saveAsImage = array("show"=>false);
}
//注 报表必须具备 三个属性 xAxis yAxis 和 series
/* $c = new Echarts();
//$v = array("type"=>'1','data'=>array('周一','周二'));
//$x =new XAxis($v);
//$c->set_xAxis($x);
//$c->add_xAxis($v);
$xa = new XAxis();
$xa->position = 'top';
$xa->data = array("2010-1-2","2010-1-3");
$c->add_xAxis($xa);
//$xax = $c->xAxis;
$grid = new Grid();
$c->set_grid($grid);
$ya = new YAxis();
$ya->data = array("123","223");
$ya->type = "value";
$c->add_yAxis($ya);
$ser = new Series();
$ser->type = 'line';
$ser->data = array("123","223");
$c->set_series($ser);
echo print_r(json_encode($c->get_option()),true); */
?>
例如 title 属性 可以通过 title 类的 set_title 扩展属性
title加链接
$title = new Title();
$title->set_title(array("link"=>"url"));