Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
<?php

namespace PhpOffice\PhpSpreadsheet\Chart;

use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

class 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_DOUGHNUTCHART = 'doughnutChart';
    const TYPE_DONUTCHART = self::TYPE_DOUGHNUTCHART; // 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';

> const EMPTY_AS_GAP = 'gap'; /** > const EMPTY_AS_ZERO = 'zero'; * Series Plot Type. > const EMPTY_AS_SPAN = 'span'; * >
* @var string */ private $plotType; /** * Plot Grouping Type. * * @var string */ private $plotGrouping; /** * Plot Direction. * * @var string */ private $plotDirection; /** * Plot Style. * * @var null|string */ private $plotStyle; /** * Order of plots in Series. *
< * @var array of integer
> * @var int[]
*/ private $plotOrder = []; /** * Plot Label. *
< * @var array of DataSeriesValues
> * @var DataSeriesValues[]
*/ private $plotLabel = []; /** * Plot Category. *
< * @var array of DataSeriesValues
> * @var DataSeriesValues[]
*/ private $plotCategory = []; /**
< * Smooth Line.
> * Smooth Line. Must be specified for both DataSeries and DataSeriesValues.
* * @var bool */ private $smoothLine; /** * Plot Values. *
< * @var array of DataSeriesValues
> * @var DataSeriesValues[]
*/ private $plotValues = []; /**
> * Plot Bubble Sizes. * Create a new DataSeries. > * * > * @var DataSeriesValues[] * @param null|mixed $plotType > */ * @param null|mixed $plotGrouping > private $plotBubbleSizes = []; * @param int[] $plotOrder > * @param DataSeriesValues[] $plotLabel > /**
* @param DataSeriesValues[] $plotCategory * @param DataSeriesValues[] $plotValues * @param null|string $plotDirection * @param bool $smoothLine * @param null|string $plotStyle */ public function __construct($plotType = null, $plotGrouping = null, array $plotOrder = [], array $plotLabel = [], array $plotCategory = [], array $plotValues = [], $plotDirection = null, $smoothLine = false, $plotStyle = null) { $this->plotType = $plotType; $this->plotGrouping = $plotGrouping; $this->plotOrder = $plotOrder; $keys = array_keys($plotValues); $this->plotValues = $plotValues;
< if ((count($plotLabel) == 0) || ($plotLabel[$keys[0]] === null)) {
> if (!isset($plotLabel[$keys[0]])) {
$plotLabel[$keys[0]] = new DataSeriesValues(); } $this->plotLabel = $plotLabel;
< if ((count($plotCategory) == 0) || ($plotCategory[$keys[0]] === null)) {
> if (!isset($plotCategory[$keys[0]])) {
$plotCategory[$keys[0]] = new DataSeriesValues(); } $this->plotCategory = $plotCategory; $this->smoothLine = $smoothLine; $this->plotStyle = $plotStyle; if ($plotDirection === null) { $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 DataSeries
> * @return $this
*/ 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 DataSeries
> * @return $this
*/ public function setPlotGrouping($groupingType) { $this->plotGrouping = $groupingType; return $this; } /** * Get Plot Direction. * * @return string */ public function getPlotDirection() { return $this->plotDirection; } /** * Set Plot Direction. * * @param string $plotDirection *
< * @return DataSeries
> * @return $this
*/ public function setPlotDirection($plotDirection) { $this->plotDirection = $plotDirection; return $this; } /** * Get Plot Order. * * @return int[] */ public function getPlotOrder() { return $this->plotOrder; } /** * Get Plot Labels. *
< * @return array of DataSeriesValues
> * @return DataSeriesValues[]
*/ public function getPlotLabels() { return $this->plotLabel; } /** * Get Plot Label by Index. * * @param mixed $index *
< * @return DataSeriesValues
> * @return DataSeriesValues|false
*/ 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 DataSeriesValues
> * @return DataSeriesValues[]
*/ public function getPlotCategories() { return $this->plotCategory; } /** * Get Plot Category by Index. * * @param mixed $index *
< * @return DataSeriesValues
> * @return DataSeriesValues|false
*/ 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 null|string */ public function getPlotStyle() { return $this->plotStyle; } /** * Set Plot Style. * * @param null|string $plotStyle *
< * @return DataSeries
> * @return $this
*/ public function setPlotStyle($plotStyle) { $this->plotStyle = $plotStyle; return $this; } /** * Get Plot Values. *
< * @return array of DataSeriesValues
> * @return DataSeriesValues[]
*/ public function getPlotValues() { return $this->plotValues; } /** * Get Plot Values by Index. * * @param mixed $index *
< * @return DataSeriesValues
> * @return DataSeriesValues|false
*/ 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 Plot Bubble Sizes. * Get Number of Plot Series. > * * > * @return DataSeriesValues[] * @return int > */ */ > public function getPlotBubbleSizes(): array public function getPlotSeriesCount() > { { > return $this->plotBubbleSizes; return count($this->plotValues); > } } > > /** /** > * Set Plot Bubble Sizes. * Get Smooth Line. > * * > * @param DataSeriesValues[] $plotBubbleSizes * @return bool > */ */ > public function setPlotBubbleSizes(array $plotBubbleSizes): self public function getSmoothLine() > { { > $this->plotBubbleSizes = $plotBubbleSizes; return $this->smoothLine; > } > return $this; > } /** > * Set Smooth Line. > /**
* * @param bool $smoothLine *
< * @return DataSeries
> * @return $this
*/ public function setSmoothLine($smoothLine) { $this->smoothLine = $smoothLine; return $this; }
< public function refresh(Worksheet $worksheet)
> public function refresh(Worksheet $worksheet): void
{ 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); } } } }