127 lines
3.7 KiB
PHP
127 lines
3.7 KiB
PHP
<?php
|
||
/**
|
||
* Zeed Platform Project
|
||
* Based on Zeed Framework & Zend Framework.
|
||
*
|
||
* BTS - Billing Transaction Service
|
||
* CAS - Central Authentication Service
|
||
*
|
||
* LICENSE
|
||
* http://www.zeed.com.cn/license/
|
||
*
|
||
* @category Zeed
|
||
* @package Zeed_PChart
|
||
* @subpackage Zeed_PChart_Data
|
||
* @copyright Copyright (c) 2010 Zeed Technologies PRC Inc. (http://www.zeed.com.cn)
|
||
* @author Zeed Team (http://blog.zeed.com.cn)
|
||
* @since 2010-6-30
|
||
* @version SVN: $Id$
|
||
*/
|
||
|
||
require_once ZEED_PATH_3rd . 'pChart/pData.php';
|
||
|
||
/**
|
||
* pChart 数据源设置
|
||
*
|
||
* @author Nroe
|
||
*/
|
||
class Zeed_PChart_Data extends pData
|
||
{
|
||
/**
|
||
* 设置 pChart 数据源
|
||
*
|
||
* 设置 a,b,c 为数据源,d 不选择,1 作为 X 轴的注释
|
||
* <code>
|
||
* Zeed_PChart_Data::addData('1,a,b,c,d', array(1,2,3));
|
||
* </code>
|
||
*
|
||
* @param string $data pChart 数据,格式为 CSV 格式, 1,a,b,c
|
||
* @param string $delimiter 数据分隔符
|
||
* @param array $dataColumns 数据选择,可以传递一个数组来指定指定数据所在位置
|
||
*/
|
||
public function addData($data, array $dataColumns, $delimiter = ',')
|
||
{
|
||
$serieName = '';
|
||
$values = explode($delimiter, $data);
|
||
|
||
if (! empty($values[0])) {
|
||
$serieName = $values[0];
|
||
}
|
||
|
||
foreach ($dataColumns as $key) {
|
||
if (isset($values[$key])) {
|
||
$this->AddPoint($values[$key], "Serie" . $key, $serieName);
|
||
}
|
||
}
|
||
}
|
||
|
||
function AddPoint($Value, $Serie = "Serie1", $Description = "")
|
||
{
|
||
if (is_array($Value) && count($Value) == 1)
|
||
$Value = $Value[0];
|
||
|
||
$ID = 0;
|
||
for ($i = 0; $i <= count($this->Data); $i ++) {
|
||
if (isset($this->Data[$i]) && isset($this->Data[$i][$Serie])) {
|
||
$ID = $i + 1;
|
||
}
|
||
}
|
||
|
||
if (count($Value) == 1) {
|
||
$this->Data[$ID][$Serie] = $Value;
|
||
if ($Description != "")
|
||
$this->Data[$ID]["Name"] = $Description;
|
||
elseif (! isset($this->Data[$ID]["Name"]))
|
||
$this->Data[$ID]["Name"] = $ID;
|
||
} else {
|
||
foreach ($Value as $key => $Val) {
|
||
$this->Data[$ID][$Serie] = $Val;
|
||
if (! isset($this->Data[$ID]["Name"]))
|
||
$this->Data[$ID]["Name"] = $ID;
|
||
$ID ++;
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取表格模式的数据,用于储存表格
|
||
*
|
||
* @return array 一维数据,坐标对应相应的数据
|
||
*/
|
||
public function getTableData()
|
||
{
|
||
$data = $this->GetData();
|
||
$dataDesc = $this->GetDataDescription();
|
||
$divisions = count($dataDesc['Values']);
|
||
|
||
$result = array();
|
||
if (is_array($dataDesc['Values']) && ! empty($dataDesc['Values'])) {
|
||
foreach ($data as $line) {
|
||
$lineName = $line[$dataDesc['Position']];
|
||
$tableYValuePostion = $divisions;
|
||
|
||
/**
|
||
* 如果数据中出现 0 那么认定该数据为结束标记
|
||
*/
|
||
foreach ($dataDesc['Values'] as $serie) {
|
||
$rowName = Zeed_PChart::$tableYNAMES[$tableYValuePostion];
|
||
$tableYValuePostion --;
|
||
|
||
$key = $lineName . $rowName;
|
||
|
||
if (strlen($line[$serie]) == 1 && $line[$serie] == 0) {
|
||
break;
|
||
}
|
||
|
||
$result[$key] = $line[$serie];
|
||
}
|
||
}
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
}
|
||
|
||
// End ^ Native EOL ^ encoding
|