114 lines
2.1 KiB
PHP
114 lines
2.1 KiB
PHP
<?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";
|
|
}
|
|
|
|
}
|