* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} namespace Icinga\Chart\Graph; use Icinga\Chart\Primitive\Drawable; use Icinga\Chart\Primitive\Rect; use Icinga\Chart\Primitive\Styleable; use Icinga\Chart\Render\RenderContext; class BarGraph extends Styleable implements Drawable { private $dataSet; public $fill = 'green'; public function __construct(array $dataSet) { $this->dataSet = $dataSet; } public function toSvg(RenderContext $ctx) { $doc = $ctx->getDocument(); $group = $doc->createElement('g'); foreach($this->dataSet as $point) { $rect = new Rect($point[0]-2, $point[1], 4, 100- $point[1]); $rect->setFill($this->fill); $rect->setStrokeWidth($this->strokeWidth); $rect->setStrokeColor($this->strokeColor); $rect->setAdditionalStyle('clip-path: url(#clip);'); $group->appendChild($rect->toSvg($ctx)); } return $group; } public function setStyleFromConfig($cfg) { foreach ($cfg as $elem => $value) { if ($elem === 'color') { $this->setStrokeColor($value); } else if ($elem === 'width') { $this->setStrokeWidth($value); } else if ($elem === 'showPoints') { $this->setShowDataPoints($value); } else if ($elem == 'fill') { $this->setFill($value); } } } }