<?php namespace FML\Controls; use FML\Script\Features\GraphCurve; use FML\Script\Features\GraphSettings; use FML\Script\Features\ScriptFeature; /** * Graph Control * (CMlGraph) * * @author steeffeen * @copyright FancyManiaLinks Copyright © 2017 Steffen Schröder * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ class Graph extends Control { /** * @var GraphSettings $graphSettings Graph settings */ protected $graphSettings = null; /** * @var GraphCurve[] $curves Curves */ protected $curves = array(); /** * Get the graph settings * * @api * @return GraphSettings */ public function getSettings() { if (!$this->graphSettings) { $this->createSettings(); } return $this->graphSettings; } /** * Create new graph settings * * @return GraphSettings */ protected function createSettings() { $this->graphSettings = new GraphSettings($this); $this->addScriptFeature($this->graphSettings); return $this->graphSettings; } /** * Get curves * * @api * @return GraphCurve[] */ public function getCurves() { return $this->curves; } /** * Add curve * * @api * @param GraphCurve $curve Curve * @return static */ public function addCurve(GraphCurve $curve) { $curve->setGraph($this); $this->addScriptFeature($curve); array_push($this->curves, $curve); return $this; } /** * Add curves * * @api * @param GraphCurve[] $curves Curves * @return static */ public function addCurves(array $curves) { foreach ($curves as $curve) { $this->addCurve($curve); } return $this; } /** * @see Control::getTagName() */ public function getTagName() { return "graph"; } /** * @see Control::getManiaScriptClass() */ public function getManiaScriptClass() { return "CMlGraph"; } }