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\Settings;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

class Chart
{
    /**
     * Chart Name.
     *
     * @var string
     */
    private $name = '';

    /**
     * Worksheet.
     *
< * @var Worksheet
> * @var ?Worksheet
*/ private $worksheet; /** * Chart Title. *
< * @var Title
> * @var ?Title
*/ private $title; /** * Chart Legend. *
< * @var Legend
> * @var ?Legend
*/ private $legend; /** * X-Axis Label. *
< * @var Title
> * @var ?Title
*/ private $xAxisLabel; /** * Y-Axis Label. *
< * @var Title
> * @var ?Title
*/ private $yAxisLabel; /** * Chart Plot Area. *
< * @var PlotArea
> * @var ?PlotArea
*/ private $plotArea; /** * Plot Visible Only. * * @var bool */ private $plotVisibleOnly = true; /** * Display Blanks as. * * @var string */
< private $displayBlanksAs = '0';
> private $displayBlanksAs = DataSeries::EMPTY_AS_GAP;
/** * Chart Asix Y as. * * @var Axis */ private $yAxis; /** * Chart Asix X as. * * @var Axis */ private $xAxis; /**
< * Chart Major Gridlines as. < * < * @var GridLines < */ < private $majorGridlines; < < /** < * Chart Minor Gridlines as. < * < * @var GridLines < */ < private $minorGridlines; < < /**
* Top-Left Cell Position. * * @var string */ private $topLeftCellRef = 'A1'; /** * Top-Left X-Offset. * * @var int */ private $topLeftXOffset = 0; /** * Top-Left Y-Offset. * * @var int */ private $topLeftYOffset = 0; /** * Bottom-Right Cell Position. * * @var string */
< private $bottomRightCellRef = 'A1';
> private $bottomRightCellRef = '';
/** * Bottom-Right X-Offset. * * @var int */ private $bottomRightXOffset = 10; /** * Bottom-Right Y-Offset. * * @var int */ private $bottomRightYOffset = 10;
> /** @var ?int */ /** > private $rotX; * Create a new Chart. > * > /** @var ?int */ * @param mixed $name > private $rotY; * @param null|Title $title > * @param null|Legend $legend > /** @var ?int */ * @param null|PlotArea $plotArea > private $rAngAx; * @param mixed $plotVisibleOnly > * @param mixed $displayBlanksAs > /** @var ?int */ * @param null|Title $xAxisLabel > private $perspective; * @param null|Title $yAxisLabel > * @param null|Axis $xAxis > /** @var bool */ * @param null|Axis $yAxis > private $oneCellAnchor = false; * @param null|GridLines $majorGridlines > * @param null|GridLines $minorGridlines > /** @var bool */ */ > private $autoTitleDeleted = false; public function __construct($name, Title $title = null, Legend $legend = null, PlotArea $plotArea = null, $plotVisibleOnly = true, $displayBlanksAs = 'gap', Title $xAxisLabel = null, Title $yAxisLabel = null, Axis $xAxis = null, Axis $yAxis = null, GridLines $majorGridlines = null, GridLines $minorGridlines = null) > { > /** @var bool */ $this->name = $name; > private $noFill = false; $this->title = $title; > $this->legend = $legend; > /** @var bool */ $this->xAxisLabel = $xAxisLabel; > private $roundedCorners = false; $this->yAxisLabel = $yAxisLabel; > $this->plotArea = $plotArea; > /** @var GridLines */ $this->plotVisibleOnly = $plotVisibleOnly; > private $borderLines; $this->displayBlanksAs = $displayBlanksAs; > $this->xAxis = $xAxis; > /** @var ChartColor */ $this->yAxis = $yAxis; > private $fillColor; $this->majorGridlines = $majorGridlines; >
$this->minorGridlines = $minorGridlines;
> * majorGridlines and minorGridlines are deprecated, moved to Axis.
< * @param null|Title $title < * @param null|Legend $legend < * @param null|PlotArea $plotArea
< * @param mixed $displayBlanksAs < * @param null|Title $xAxisLabel < * @param null|Title $yAxisLabel < * @param null|Axis $xAxis < * @param null|Axis $yAxis < * @param null|GridLines $majorGridlines < * @param null|GridLines $minorGridlines
> * @param string $displayBlanksAs
< public function __construct($name, Title $title = null, Legend $legend = null, PlotArea $plotArea = null, $plotVisibleOnly = true, $displayBlanksAs = 'gap', Title $xAxisLabel = null, Title $yAxisLabel = null, Axis $xAxis = null, Axis $yAxis = null, GridLines $majorGridlines = null, GridLines $minorGridlines = null)
> public function __construct($name, ?Title $title = null, ?Legend $legend = null, ?PlotArea $plotArea = null, $plotVisibleOnly = true, $displayBlanksAs = DataSeries::EMPTY_AS_GAP, ?Title $xAxisLabel = null, ?Title $yAxisLabel = null, ?Axis $xAxis = null, ?Axis $yAxis = null, ?GridLines $majorGridlines = null, ?GridLines $minorGridlines = null)
< $this->xAxis = $xAxis; < $this->yAxis = $yAxis; < $this->majorGridlines = $majorGridlines; < $this->minorGridlines = $minorGridlines;
> $this->xAxis = $xAxis ?? new Axis(); > $this->yAxis = $yAxis ?? new Axis(); > if ($majorGridlines !== null) { > $this->yAxis->setMajorGridlines($majorGridlines); > } > if ($minorGridlines !== null) { > $this->yAxis->setMinorGridlines($minorGridlines); > } > $this->fillColor = new ChartColor(); > $this->borderLines = new GridLines();
* @return Worksheet
> public function setName(string $name): self */ > { public function getWorksheet() > $this->name = $name; { > return $this->worksheet; > return $this; } > } >
< * < * @return Worksheet
< public function getWorksheet()
> public function getWorksheet(): ?Worksheet
< * @param Worksheet $pValue < * < * @return Chart
> * @return $this
*/
< public function setWorksheet(Worksheet $pValue = null)
> public function setWorksheet(?Worksheet $worksheet = null)
{
< $this->worksheet = $pValue;
> $this->worksheet = $worksheet;
return $this; }
< /** < * Get Title. < * < * @return Title < */ < public function getTitle()
> public function getTitle(): ?Title
{ return $this->title; } /** * Set Title. *
< * @param Title $title < * < * @return Chart
> * @return $this
*/ public function setTitle(Title $title) { $this->title = $title; return $this; }
< /** < * Get Legend. < * < * @return Legend < */ < public function getLegend()
> public function getLegend(): ?Legend
{ return $this->legend; } /** * Set Legend. *
< * @param Legend $legend < * < * @return Chart
> * @return $this
*/ public function setLegend(Legend $legend) { $this->legend = $legend; return $this; }
< /** < * Get X-Axis Label. < * < * @return Title < */ < public function getXAxisLabel()
> public function getXAxisLabel(): ?Title
{ return $this->xAxisLabel; } /** * Set X-Axis Label. *
< * @param Title $label < * < * @return Chart
> * @return $this
*/ public function setXAxisLabel(Title $label) { $this->xAxisLabel = $label; return $this; }
< /** < * Get Y-Axis Label. < * < * @return Title < */ < public function getYAxisLabel()
> public function getYAxisLabel(): ?Title
{ return $this->yAxisLabel; } /** * Set Y-Axis Label. *
< * @param Title $label < * < * @return Chart
> * @return $this
*/ public function setYAxisLabel(Title $label) { $this->yAxisLabel = $label; return $this; }
> public function getPlotArea(): ?PlotArea /** > { * Get Plot Area. > return $this->plotArea; * > } * @return PlotArea >
< * Get Plot Area. < * < * @return PlotArea
> * Set Plot Area.
< public function getPlotArea()
> public function setPlotArea(PlotArea $plotArea): self
< return $this->plotArea;
> $this->plotArea = $plotArea; > > return $this;
/** * Get Plot Visible Only. * * @return bool */ public function getPlotVisibleOnly() { return $this->plotVisibleOnly; } /** * Set Plot Visible Only. * * @param bool $plotVisibleOnly *
< * @return Chart
> * @return $this
*/ public function setPlotVisibleOnly($plotVisibleOnly) { $this->plotVisibleOnly = $plotVisibleOnly; return $this; } /** * Get Display Blanks as. * * @return string */ public function getDisplayBlanksAs() { return $this->displayBlanksAs; } /** * Set Display Blanks as. * * @param string $displayBlanksAs *
< * @return Chart
> * @return $this
*/ public function setDisplayBlanksAs($displayBlanksAs) { $this->displayBlanksAs = $displayBlanksAs; return $this; }
> public function getChartAxisY(): Axis /** > { * Get yAxis. > return $this->yAxis; * > } * @return Axis >
< * Get yAxis. < * < * @return Axis
> * Set yAxis.
< public function getChartAxisY()
> public function setChartAxisY(?Axis $axis): self
< if ($this->yAxis !== null) { < return $this->yAxis;
> $this->yAxis = $axis ?? new Axis(); > > return $this;
< return new Axis();
> public function getChartAxisX(): Axis > { > return $this->xAxis;
} /**
< * Get xAxis. < * < * @return Axis
> * Set xAxis.
*/
< public function getChartAxisX()
> public function setChartAxisX(?Axis $axis): self
{
< if ($this->xAxis !== null) { < return $this->xAxis; < }
> $this->xAxis = $axis ?? new Axis();
< return new Axis();
> return $this;
} /** * Get Major Gridlines. *
< * @return GridLines
> * @deprecated 1.24.0 Use Axis->getMajorGridlines() > * @see Axis::getMajorGridlines() > * > * @codeCoverageIgnore
*/
< public function getMajorGridlines()
> public function getMajorGridlines(): ?GridLines
{
< if ($this->majorGridlines !== null) { < return $this->majorGridlines; < } < < return new GridLines();
> return $this->yAxis->getMajorGridLines();
} /** * Get Minor Gridlines. *
< * @return GridLines
> * @deprecated 1.24.0 Use Axis->getMinorGridlines() > * @see Axis::getMinorGridlines() > * > * @codeCoverageIgnore
*/
< public function getMinorGridlines()
> public function getMinorGridlines(): ?GridLines
{
< if ($this->minorGridlines !== null) { < return $this->minorGridlines; < } < < return new GridLines();
> return $this->yAxis->getMinorGridLines();
} /** * Set the Top Left position for the chart. *
< * @param string $cell
> * @param string $cellAddress
* @param int $xOffset * @param int $yOffset *
< * @return Chart
> * @return $this
*/
< public function setTopLeftPosition($cell, $xOffset = null, $yOffset = null)
> public function setTopLeftPosition($cellAddress, $xOffset = null, $yOffset = null)
{
< $this->topLeftCellRef = $cell;
> $this->topLeftCellRef = $cellAddress;
if ($xOffset !== null) { $this->setTopLeftXOffset($xOffset); } if ($yOffset !== null) { $this->setTopLeftYOffset($yOffset); } return $this; } /** * Get the top left position of the chart. *
< * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell
> * Returns ['cell' => string cell address, 'xOffset' => int, 'yOffset' => int]. > * > * @return array{cell: string, xOffset: int, yOffset: int} an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell
*/
< public function getTopLeftPosition()
> public function getTopLeftPosition(): array
{ return [ 'cell' => $this->topLeftCellRef, 'xOffset' => $this->topLeftXOffset, 'yOffset' => $this->topLeftYOffset, ]; } /** * Get the cell address where the top left of the chart is fixed. * * @return string */ public function getTopLeftCell() { return $this->topLeftCellRef; } /** * Set the Top Left cell position for the chart. *
< * @param string $cell
> * @param string $cellAddress
*
< * @return Chart
> * @return $this
*/
< public function setTopLeftCell($cell)
> public function setTopLeftCell($cellAddress)
{
< $this->topLeftCellRef = $cell;
> $this->topLeftCellRef = $cellAddress;
return $this; } /** * Set the offset position within the Top Left cell for the chart. *
< * @param int $xOffset < * @param int $yOffset
> * @param ?int $xOffset > * @param ?int $yOffset
*
< * @return Chart
> * @return $this
*/ public function setTopLeftOffset($xOffset, $yOffset) { if ($xOffset !== null) { $this->setTopLeftXOffset($xOffset); } if ($yOffset !== null) { $this->setTopLeftYOffset($yOffset); } return $this; } /** * Get the offset position within the Top Left cell for the chart. * * @return int[] */ public function getTopLeftOffset() { return [ 'X' => $this->topLeftXOffset, 'Y' => $this->topLeftYOffset, ]; }
> /** public function setTopLeftXOffset($xOffset) > * @param int $xOffset { > * $this->topLeftXOffset = $xOffset; > * @return $this > */
return $this; }
< public function getTopLeftXOffset()
> public function getTopLeftXOffset(): int
{ return $this->topLeftXOffset; }
> /** public function setTopLeftYOffset($yOffset) > * @param int $yOffset { > * $this->topLeftYOffset = $yOffset; > * @return $this > */
return $this; }
< public function getTopLeftYOffset()
> public function getTopLeftYOffset(): int
{ return $this->topLeftYOffset; } /** * Set the Bottom Right position of the chart. *
< * @param string $cell
> * @param string $cellAddress
* @param int $xOffset * @param int $yOffset *
< * @return Chart
> * @return $this
*/
< public function setBottomRightPosition($cell, $xOffset = null, $yOffset = null)
> public function setBottomRightPosition($cellAddress = '', $xOffset = null, $yOffset = null)
{
< $this->bottomRightCellRef = $cell;
> $this->bottomRightCellRef = $cellAddress;
if ($xOffset !== null) { $this->setBottomRightXOffset($xOffset); } if ($yOffset !== null) { $this->setBottomRightYOffset($yOffset); } return $this; } /** * Get the bottom right position of the chart. * * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell */ public function getBottomRightPosition() { return [ 'cell' => $this->bottomRightCellRef, 'xOffset' => $this->bottomRightXOffset, 'yOffset' => $this->bottomRightYOffset, ]; }
< public function setBottomRightCell($cell)
> /** > * Set the Bottom Right cell for the chart. > * > * @return $this > */ > public function setBottomRightCell(string $cellAddress = '')
{
< $this->bottomRightCellRef = $cell;
> $this->bottomRightCellRef = $cellAddress;
return $this; } /** * Get the cell address where the bottom right of the chart is fixed.
< * < * @return string
*/
< public function getBottomRightCell()
> public function getBottomRightCell(): string
{ return $this->bottomRightCellRef; } /** * Set the offset position within the Bottom Right cell for the chart. *
< * @param int $xOffset < * @param int $yOffset
> * @param ?int $xOffset > * @param ?int $yOffset
*
< * @return Chart
> * @return $this
*/ public function setBottomRightOffset($xOffset, $yOffset) { if ($xOffset !== null) { $this->setBottomRightXOffset($xOffset); } if ($yOffset !== null) { $this->setBottomRightYOffset($yOffset); } return $this; } /** * Get the offset position within the Bottom Right cell for the chart. * * @return int[] */ public function getBottomRightOffset() { return [ 'X' => $this->bottomRightXOffset, 'Y' => $this->bottomRightYOffset, ]; }
> /** public function setBottomRightXOffset($xOffset) > * @param int $xOffset { > * $this->bottomRightXOffset = $xOffset; > * @return $this > */
return $this; }
< public function getBottomRightXOffset()
> public function getBottomRightXOffset(): int
{ return $this->bottomRightXOffset; }
> /** public function setBottomRightYOffset($yOffset) > * @param int $yOffset { > * $this->bottomRightYOffset = $yOffset; > * @return $this > */
return $this; }
< public function getBottomRightYOffset()
> public function getBottomRightYOffset(): int
{ return $this->bottomRightYOffset; }
< public function refresh()
> public function refresh(): void
{
< if ($this->worksheet !== null) {
> if ($this->worksheet !== null && $this->plotArea !== null) {
$this->plotArea->refresh($this->worksheet); } } /** * Render the chart to given file (or stream). * * @param string $outputDestination Name of the file render to * * @return bool true on success */ public function render($outputDestination = null) { if ($outputDestination == 'php://output') { $outputDestination = null; } $libraryName = Settings::getChartRenderer(); if ($libraryName === null) { return false; } // Ensure that data series values are up-to-date before we render $this->refresh(); $renderer = new $libraryName($this);
< return $renderer->render($outputDestination);
> return $renderer->render($outputDestination); // @phpstan-ignore-line > } > > public function getRotX(): ?int > { > return $this->rotX; > } > > public function setRotX(?int $rotX): self > { > $this->rotX = $rotX; > > return $this; > } > > public function getRotY(): ?int > { > return $this->rotY; > } > > public function setRotY(?int $rotY): self > { > $this->rotY = $rotY; > > return $this; > } > > public function getRAngAx(): ?int > { > return $this->rAngAx; > } > > public function setRAngAx(?int $rAngAx): self > { > $this->rAngAx = $rAngAx; > > return $this; > } > > public function getPerspective(): ?int > { > return $this->perspective; > } > > public function setPerspective(?int $perspective): self > { > $this->perspective = $perspective; > > return $this; > } > > public function getOneCellAnchor(): bool > { > return $this->oneCellAnchor; > } > > public function setOneCellAnchor(bool $oneCellAnchor): self > { > $this->oneCellAnchor = $oneCellAnchor; > > return $this; > } > > public function getAutoTitleDeleted(): bool > { > return $this->autoTitleDeleted; > } > > public function setAutoTitleDeleted(bool $autoTitleDeleted): self > { > $this->autoTitleDeleted = $autoTitleDeleted; > > return $this; > } > > public function getNoFill(): bool > { > return $this->noFill; > } > > public function setNoFill(bool $noFill): self > { > $this->noFill = $noFill; > > return $this; > } > > public function getRoundedCorners(): bool > { > return $this->roundedCorners; > } > > public function setRoundedCorners(?bool $roundedCorners): self > { > if ($roundedCorners !== null) { > $this->roundedCorners = $roundedCorners; > } > > return $this; > } > > public function getBorderLines(): GridLines > { > return $this->borderLines; > } > > public function setBorderLines(GridLines $borderLines): self > { > $this->borderLines = $borderLines; > > return $this; > } > > public function getFillColor(): ChartColor > { > return $this->fillColor;
} }