391 lines
9.5 KiB
PHP
391 lines
9.5 KiB
PHP
<?php
|
|
/**
|
|
* PHPExcel
|
|
*
|
|
* Copyright (c) 2006 - 2015 PHPExcel
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* @category PHPExcel
|
|
* @package PHPExcel_Chart
|
|
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
|
|
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
|
* @version ##VERSION##, ##DATE##
|
|
*/
|
|
|
|
|
|
/**
|
|
* PHPExcel_Chart_DataSeries
|
|
*
|
|
* @category PHPExcel
|
|
* @package PHPExcel_Chart
|
|
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
|
|
*/
|
|
class PHPExcel_Chart_DataSeries
|
|
{
|
|
const TYPE_BARCHART = 'barChart';
|
|
const TYPE_BARCHART_3D = 'bar3DChart';
|
|
const TYPE_LINECHART = 'lineChart';
|
|
const TYPE_LINECHART_3D = 'line3DChart';
|
|
const TYPE_AREACHART = 'areaChart';
|
|
const TYPE_AREACHART_3D = 'area3DChart';
|
|
const TYPE_PIECHART = 'pieChart';
|
|
const TYPE_PIECHART_3D = 'pie3DChart';
|
|
const TYPE_DOUGHTNUTCHART = 'doughnutChart';
|
|
const TYPE_DONUTCHART = self::TYPE_DOUGHTNUTCHART; // Synonym
|
|
const TYPE_SCATTERCHART = 'scatterChart';
|
|
const TYPE_SURFACECHART = 'surfaceChart';
|
|
const TYPE_SURFACECHART_3D = 'surface3DChart';
|
|
const TYPE_RADARCHART = 'radarChart';
|
|
const TYPE_BUBBLECHART = 'bubbleChart';
|
|
const TYPE_STOCKCHART = 'stockChart';
|
|
const TYPE_CANDLECHART = self::TYPE_STOCKCHART; // Synonym
|
|
|
|
const GROUPING_CLUSTERED = 'clustered';
|
|
const GROUPING_STACKED = 'stacked';
|
|
const GROUPING_PERCENT_STACKED = 'percentStacked';
|
|
const GROUPING_STANDARD = 'standard';
|
|
|
|
const DIRECTION_BAR = 'bar';
|
|
const DIRECTION_HORIZONTAL = self::DIRECTION_BAR;
|
|
const DIRECTION_COL = 'col';
|
|
const DIRECTION_COLUMN = self::DIRECTION_COL;
|
|
const DIRECTION_VERTICAL = self::DIRECTION_COL;
|
|
|
|
const STYLE_LINEMARKER = 'lineMarker';
|
|
const STYLE_SMOOTHMARKER = 'smoothMarker';
|
|
const STYLE_MARKER = 'marker';
|
|
const STYLE_FILLED = 'filled';
|
|
|
|
|
|
/**
|
|
* Series Plot Type
|
|
*
|
|
* @var string
|
|
*/
|
|
private $plotType;
|
|
|
|
/**
|
|
* Plot Grouping Type
|
|
*
|
|
* @var boolean
|
|
*/
|
|
private $plotGrouping;
|
|
|
|
/**
|
|
* Plot Direction
|
|
*
|
|
* @var boolean
|
|
*/
|
|
private $plotDirection;
|
|
|
|
/**
|
|
* Plot Style
|
|
*
|
|
* @var string
|
|
*/
|
|
private $plotStyle;
|
|
|
|
/**
|
|
* Order of plots in Series
|
|
*
|
|
* @var array of integer
|
|
*/
|
|
private $plotOrder = array();
|
|
|
|
/**
|
|
* Plot Label
|
|
*
|
|
* @var array of PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
private $plotLabel = array();
|
|
|
|
/**
|
|
* Plot Category
|
|
*
|
|
* @var array of PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
private $plotCategory = array();
|
|
|
|
/**
|
|
* Smooth Line
|
|
*
|
|
* @var string
|
|
*/
|
|
private $smoothLine;
|
|
|
|
/**
|
|
* Plot Values
|
|
*
|
|
* @var array of PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
private $plotValues = array();
|
|
|
|
/**
|
|
* Create a new PHPExcel_Chart_DataSeries
|
|
*/
|
|
public function __construct($plotType = null, $plotGrouping = null, $plotOrder = array(), $plotLabel = array(), $plotCategory = array(), $plotValues = array(), $plotDirection = null, $smoothLine = null, $plotStyle = null)
|
|
{
|
|
$this->plotType = $plotType;
|
|
$this->plotGrouping = $plotGrouping;
|
|
$this->plotOrder = $plotOrder;
|
|
$keys = array_keys($plotValues);
|
|
$this->plotValues = $plotValues;
|
|
if ((count($plotLabel) == 0) || (is_null($plotLabel[$keys[0]]))) {
|
|
$plotLabel[$keys[0]] = new PHPExcel_Chart_DataSeriesValues();
|
|
}
|
|
|
|
$this->plotLabel = $plotLabel;
|
|
if ((count($plotCategory) == 0) || (is_null($plotCategory[$keys[0]]))) {
|
|
$plotCategory[$keys[0]] = new PHPExcel_Chart_DataSeriesValues();
|
|
}
|
|
$this->plotCategory = $plotCategory;
|
|
$this->smoothLine = $smoothLine;
|
|
$this->plotStyle = $plotStyle;
|
|
|
|
if (is_null($plotDirection)) {
|
|
$plotDirection = self::DIRECTION_COL;
|
|
}
|
|
$this->plotDirection = $plotDirection;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Type
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPlotType()
|
|
{
|
|
return $this->plotType;
|
|
}
|
|
|
|
/**
|
|
* Set Plot Type
|
|
*
|
|
* @param string $plotType
|
|
* @return PHPExcel_Chart_DataSeries
|
|
*/
|
|
public function setPlotType($plotType = '')
|
|
{
|
|
$this->plotType = $plotType;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Grouping Type
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPlotGrouping()
|
|
{
|
|
return $this->plotGrouping;
|
|
}
|
|
|
|
/**
|
|
* Set Plot Grouping Type
|
|
*
|
|
* @param string $groupingType
|
|
* @return PHPExcel_Chart_DataSeries
|
|
*/
|
|
public function setPlotGrouping($groupingType = null)
|
|
{
|
|
$this->plotGrouping = $groupingType;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Direction
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPlotDirection()
|
|
{
|
|
return $this->plotDirection;
|
|
}
|
|
|
|
/**
|
|
* Set Plot Direction
|
|
*
|
|
* @param string $plotDirection
|
|
* @return PHPExcel_Chart_DataSeries
|
|
*/
|
|
public function setPlotDirection($plotDirection = null)
|
|
{
|
|
$this->plotDirection = $plotDirection;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Order
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPlotOrder()
|
|
{
|
|
return $this->plotOrder;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Labels
|
|
*
|
|
* @return array of PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
public function getPlotLabels()
|
|
{
|
|
return $this->plotLabel;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Label by Index
|
|
*
|
|
* @return PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
public function getPlotLabelByIndex($index)
|
|
{
|
|
$keys = array_keys($this->plotLabel);
|
|
if (in_array($index, $keys)) {
|
|
return $this->plotLabel[$index];
|
|
} elseif (isset($keys[$index])) {
|
|
return $this->plotLabel[$keys[$index]];
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Categories
|
|
*
|
|
* @return array of PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
public function getPlotCategories()
|
|
{
|
|
return $this->plotCategory;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Category by Index
|
|
*
|
|
* @return PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
public function getPlotCategoryByIndex($index)
|
|
{
|
|
$keys = array_keys($this->plotCategory);
|
|
if (in_array($index, $keys)) {
|
|
return $this->plotCategory[$index];
|
|
} elseif (isset($keys[$index])) {
|
|
return $this->plotCategory[$keys[$index]];
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Style
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPlotStyle()
|
|
{
|
|
return $this->plotStyle;
|
|
}
|
|
|
|
/**
|
|
* Set Plot Style
|
|
*
|
|
* @param string $plotStyle
|
|
* @return PHPExcel_Chart_DataSeries
|
|
*/
|
|
public function setPlotStyle($plotStyle = null)
|
|
{
|
|
$this->plotStyle = $plotStyle;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Values
|
|
*
|
|
* @return array of PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
public function getPlotValues()
|
|
{
|
|
return $this->plotValues;
|
|
}
|
|
|
|
/**
|
|
* Get Plot Values by Index
|
|
*
|
|
* @return PHPExcel_Chart_DataSeriesValues
|
|
*/
|
|
public function getPlotValuesByIndex($index)
|
|
{
|
|
$keys = array_keys($this->plotValues);
|
|
if (in_array($index, $keys)) {
|
|
return $this->plotValues[$index];
|
|
} elseif (isset($keys[$index])) {
|
|
return $this->plotValues[$keys[$index]];
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get Number of Plot Series
|
|
*
|
|
* @return integer
|
|
*/
|
|
public function getPlotSeriesCount()
|
|
{
|
|
return count($this->plotValues);
|
|
}
|
|
|
|
/**
|
|
* Get Smooth Line
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function getSmoothLine()
|
|
{
|
|
return $this->smoothLine;
|
|
}
|
|
|
|
/**
|
|
* Set Smooth Line
|
|
*
|
|
* @param boolean $smoothLine
|
|
* @return PHPExcel_Chart_DataSeries
|
|
*/
|
|
public function setSmoothLine($smoothLine = true)
|
|
{
|
|
$this->smoothLine = $smoothLine;
|
|
return $this;
|
|
}
|
|
|
|
public function refresh(PHPExcel_Worksheet $worksheet)
|
|
{
|
|
foreach ($this->plotValues as $plotValues) {
|
|
if ($plotValues !== null) {
|
|
$plotValues->refresh($worksheet, true);
|
|
}
|
|
}
|
|
foreach ($this->plotLabel as $plotValues) {
|
|
if ($plotValues !== null) {
|
|
$plotValues->refresh($worksheet, true);
|
|
}
|
|
}
|
|
foreach ($this->plotCategory as $plotValues) {
|
|
if ($plotValues !== null) {
|
|
$plotValues->refresh($worksheet, false);
|
|
}
|
|
}
|
|
}
|
|
}
|