Icinga/Chart: Fixes typo, doc, interfaces, inspection warnings

refs #4614
This commit is contained in:
Marius Hein 2013-09-25 16:32:28 +02:00
parent 7690b0ec7f
commit c6838f67a1
28 changed files with 572 additions and 434 deletions

View File

@ -6,7 +6,7 @@ Icinga Web comes with an SVG based graphing library that supports the basic grap
data. These include: data. These include:
* **Pie Charts**, which display a set of data in a typical pie diagram. * **Pie Charts**, which display a set of data in a typical pie diagram.
* **Stacked Pie Charts**, which render one or multiple pies nested in anothe pie chart * **Stacked Pie Charts**, which render one or multiple pies nested in another pie chart
* **Line Charts**, which display a set of datapoints as a line graph * **Line Charts**, which display a set of datapoints as a line graph
* **Stacked Line Charts**, which display multiple line charts on top of each other, providing a cumulative view over * **Stacked Line Charts**, which display multiple line charts on top of each other, providing a cumulative view over
a set of datapoints a set of datapoints
@ -18,7 +18,7 @@ data. These include:
### Base Api Synopsis ### Base Api Synopsis
The `Icinga/Chart/GridChart` class provides the calls required for setting up Grid Charts. A GridChart draws three The `Icinga/Chart/GridChart` class provides the calls required for setting up Grid Charts. A GridChart draws three
seperate parts: Axis, Legend and the Gridarea. separate parts: Axis, Legend and the Gridarea.
To create a new Grid, simply create a `GridChart` object (the constructor takes no parameters): To create a new Grid, simply create a `GridChart` object (the constructor takes no parameters):
@ -146,7 +146,7 @@ are:
'Dataset %nr%' will be displayed, with %nr% meaning a number starting at 1 and incrementing for every 'Dataset %nr%' will be displayed, with %nr% meaning a number starting at 1 and incrementing for every
line without a label line without a label
* **stack** If provided, this graph will be shown on top of each other graph in the same stack and causes all * **stack** If provided, this graph will be shown on top of each other graph in the same stack and causes all
graphs in the same stack to be rendered culmulative graphs in the same stack to be rendered cumulative
* **discrete** Set to display the line in a discrete manner, i.e. using hard steps between values instead of drawing * **discrete** Set to display the line in a discrete manner, i.e. using hard steps between values instead of drawing
a interpolated line between points a interpolated line between points
* **color** The color to use for the line or fill, either in Hex form or as a string supported in the SVG style tag * **color** The color to use for the line or fill, either in Hex form or as a string supported in the SVG style tag
@ -203,7 +203,7 @@ while '...' means 'as many definitions as you want'. Possible configuration opti
'Dataset %nr%' will be displayed, with %nr% meaning a number starting at 1 and incrementing for every 'Dataset %nr%' will be displayed, with %nr% meaning a number starting at 1 and incrementing for every
line without a label line without a label
* **stack** If provided, this graph will be shown on top of each other graph in the same stack and causes all * **stack** If provided, this graph will be shown on top of each other graph in the same stack and causes all
graphs in the same stack to be rendered culmulative graphs in the same stack to be rendered cumulative
* **color** The color to use for filling the bar, either in Hex form or as a string supported in the SVG style tag * **color** The color to use for filling the bar, either in Hex form or as a string supported in the SVG style tag
* **palette** (Ignored if 'color' is set) The color palette to use for determining the fill color * **palette** (Ignored if 'color' is set) The color palette to use for determining the fill color
* **width** Set the thickness of the line stroke in px (default: 1) * **width** Set the thickness of the line stroke in px (default: 1)

View File

@ -1,18 +1,41 @@
<?php <?php
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga 2 Web.
*
* Icinga 2 Web - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*/
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
namespace Icinga\Chart; namespace Icinga\Chart;
use Icinga\Chart\Primitive\Drawable; use \DOMElement;
use Icinga\Chart\Primitive\Line; use \Icinga\Chart\Primitive\Drawable;
use Icinga\Chart\Primitive\Text; use \Icinga\Chart\Primitive\Line;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Primitive\Text;
use Icinga\Chart\Unit\AxisUnit; use \Icinga\Chart\Render\RenderContext;
use Icinga\Chart\Unit\CalendarUnit; use \Icinga\Chart\Unit\AxisUnit;
use Icinga\Chart\Unit\LinearUnit; use \Icinga\Chart\Unit\CalendarUnit;
use \Icinga\Chart\Unit\LinearUnit;
use DOMElement;
/** /**
* Axis class for the GridChart class. * Axis class for the GridChart class.
@ -228,9 +251,9 @@ class Axis implements Drawable
} }
/** /**
* Set the label for the x axis. * Set the label for the x axis
* *
* An empty string means 'no label' * An empty string means 'no label'.
* *
* @param string $label The label to use for the x axis * @param string $label The label to use for the x axis
* *
@ -243,13 +266,13 @@ class Axis implements Drawable
} }
/** /**
* Set the label for the y axis. * Set the label for the y axis
* *
* An empty string means 'no label' * An empty string means 'no label'.
* *
* @param string $label The label to use for the y axis * @param string $label The label to use for the y axis
* *
* @return $this Fluid interface * @return self Fluid interface
*/ */
public function setYLabel($label) public function setYLabel($label)
{ {
@ -262,9 +285,9 @@ class Axis implements Drawable
* *
* Setting the value to null let's the axis unit decide which value to use for the minimum * Setting the value to null let's the axis unit decide which value to use for the minimum
* *
* @param mixed $label The minimum value to use for the x axis * @param int $xMin The minimum value to use for the x axis
* *
* @return $this Fluid interface * @return self Fluid interface
*/ */
public function setXMin($xMin) public function setXMin($xMin)
{ {
@ -277,9 +300,9 @@ class Axis implements Drawable
* *
* Setting the value to null let's the axis unit decide which value to use for the minimum * Setting the value to null let's the axis unit decide which value to use for the minimum
* *
* @param mixed $label The minimum value to use for the x axis * @param int $yMin The minimum value to use for the x axis
* *
* @return $this Fluid interface * @return self Fluid interface
*/ */
public function setYMin($yMin) public function setYMin($yMin)
{ {
@ -292,9 +315,9 @@ class Axis implements Drawable
* *
* Setting the value to null let's the axis unit decide which value to use for the maximum * Setting the value to null let's the axis unit decide which value to use for the maximum
* *
* @param mixed $label The minimum value to use for the x axis * @param int $xMax The minimum value to use for the x axis
* *
* @return $this Fluid interface * @return self Fluid interface
*/ */
public function setXMax($xMax) public function setXMax($xMax)
{ {
@ -307,9 +330,9 @@ class Axis implements Drawable
* *
* Setting the value to null let's the axis unit decide which value to use for the maximum * Setting the value to null let's the axis unit decide which value to use for the maximum
* *
* @param mixed $label The minimum value to use for the y axis * @param int $yMax The minimum value to use for the y axis
* *
* @return $this Fluid interface * @return self Fluid interface
*/ */
public function setYMax($yMax) public function setYMax($yMax)
{ {
@ -364,7 +387,6 @@ class Axis implements Drawable
* @param RenderContext $ctx The context to use for calculations * @param RenderContext $ctx The context to use for calculations
* *
* @return DOMElement * @return DOMElement
*
* @see Drawable::toSvg * @see Drawable::toSvg
*/ */
public function toSvg(RenderContext $ctx) public function toSvg(RenderContext $ctx)

View File

@ -28,11 +28,11 @@
namespace Icinga\Chart; namespace Icinga\Chart;
use Exception; use \Exception;
use Icinga\Chart\Legend; use \Icinga\Chart\Legend;
use Icinga\Chart\Palette; use \Icinga\Chart\Palette;
use Icinga\Chart\Primitive\Drawable; use \Icinga\Chart\Primitive\Drawable;
use Icinga\Chart\SVGRenderer; use \Icinga\Chart\SVGRenderer;
/** /**
* Base class for charts, extended by all other Chart classes. * Base class for charts, extended by all other Chart classes.
@ -76,7 +76,6 @@ abstract class Chart implements Drawable
/** /**
* Extension point for subclasses, called on __construct * Extension point for subclasses, called on __construct
*
*/ */
protected function init() protected function init()
{ {

View File

@ -28,13 +28,12 @@
namespace Icinga\Chart\Graph; namespace Icinga\Chart\Graph;
use DOMElement; use \DOMElement;
use \Icinga\Chart\Primitive\Animation;
use Icinga\Chart\Primitive\Animation; use \Icinga\Chart\Primitive\Drawable;
use Icinga\Chart\Primitive\Drawable; use \Icinga\Chart\Primitive\Rect;
use Icinga\Chart\Primitive\Rect; use \Icinga\Chart\Primitive\Styleable;
use Icinga\Chart\Primitive\Styleable; use \Icinga\Chart\Render\RenderContext;
use Icinga\Chart\Render\RenderContext;
/** /**
* Bar graph implementation * Bar graph implementation
@ -43,6 +42,7 @@ class BarGraph extends Styleable implements Drawable
{ {
/** /**
* The dataset to use for this bar graph * The dataset to use for this bar graph
*
* @var array * @var array
*/ */
private $dataSet; private $dataSet;

View File

@ -29,11 +29,12 @@
namespace Icinga\Chart\Graph; namespace Icinga\Chart\Graph;
use Icinga\Chart\Primitive\Drawable; use \DOMElement;
use Icinga\Chart\Primitive\Path; use \Icinga\Chart\Primitive\Drawable;
use Icinga\Chart\Primitive\Circle; use \Icinga\Chart\Primitive\Path;
use Icinga\Chart\Primitive\Styleable; use \Icinga\Chart\Primitive\Circle;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Primitive\Styleable;
use \Icinga\Chart\Render\RenderContext;
/** /**
* LineGraph implementation for drawing a set of datapoints as * LineGraph implementation for drawing a set of datapoints as
@ -43,18 +44,21 @@ class LineGraph extends Styleable implements Drawable
{ {
/** /**
* The dataset to use * The dataset to use
*
* @var array * @var array
*/ */
private $dataset; private $dataset;
/** /**
* True to show dots for each datapoint * True to show dots for each datapoint
*
* @var bool * @var bool
*/ */
private $showDataPoints = false; private $showDataPoints = false;
/** /**
* When true, the path will be discrete, i.e. showing hard steps instead of a direct line * When true, the path will be discrete, i.e. showing hard steps instead of a direct line
*
* @var bool * @var bool
*/ */
private $isDiscrete = false; private $isDiscrete = false;
@ -79,7 +83,7 @@ class LineGraph extends Styleable implements Drawable
/** /**
* Set datapoints to be emphased via dots * Set datapoints to be emphased via dots
* *
* @param $bool True to enable datapoints, otherwise false * @param bool $bool True to enable datapoints, otherwise false
*/ */
public function setShowDataPoints($bool) public function setShowDataPoints($bool)
{ {

View File

@ -28,8 +28,9 @@
namespace Icinga\Chart\Graph; namespace Icinga\Chart\Graph;
use Icinga\Chart\Primitive\Drawable; use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Primitive\Drawable;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Graph implementation that stacks several graphs and displays them in a cumulative way * Graph implementation that stacks several graphs and displays them in a cumulative way

View File

@ -28,19 +28,18 @@
namespace Icinga\Chart; namespace Icinga\Chart;
use DOMElement; use \DOMElement;
use \Icinga\Chart\Chart;
use Icinga\Chart\Chart; use \Icinga\Chart\Axis;
use Icinga\Chart\Axis; use \Icinga\Chart\Graph\BarGraph;
use Icinga\Chart\Graph\BarGraph; use \Icinga\Chart\Graph\LineGraph;
use Icinga\Chart\Graph\LineGraph; use \Icinga\Chart\Graph\StackedGraph;
use Icinga\Chart\Graph\StackedGraph; use \Icinga\Chart\Primitive\Canvas;
use Icinga\Chart\Primitive\Canvas; use \Icinga\Chart\Primitive\Rect;
use Icinga\Chart\Primitive\Rect; use \Icinga\Chart\Primitive\Path;
use Icinga\Chart\Primitive\Path; use \Icinga\Chart\Render\LayoutBox;
use Icinga\Chart\Render\LayoutBox; use \Icinga\Chart\Render\RenderContext;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Unit\AxisUnit;
use Icinga\Chart\Unit\AxisUnit;
/** /**
* Base class for grid based charts. * Base class for grid based charts.
@ -120,6 +119,8 @@ class GridChart extends Chart
/** /**
* Calls Axis::addDataset for every graph added to this GridChart * Calls Axis::addDataset for every graph added to this GridChart
*
* @see Axis::addDataset
*/ */
private function configureAxisFromDatasets() private function configureAxisFromDatasets()
{ {
@ -132,30 +133,29 @@ class GridChart extends Chart
} }
/** /**
* Add an arbitary number of lines to be drawn * Add an arbitrary number of lines to be drawn
* *
* Refer to the graphs.md for a detailed list of allowed attributes * Refer to the graphs.md for a detailed list of allowed attributes
* *
* @param array $axix The line definitions to draw * @param array $axis,... The line definitions to draw
* @param array ...
* *
* @return self Fluid interface * @return self Fluid interface
*/ */
public function drawLines($axis /*,...*/) public function drawLines(array $axis)
{ {
$this->draw(self::TYPE_LINE, func_get_args()); $this->draw(self::TYPE_LINE, func_get_args());
return $this; return $this;
} }
/** /**
* Add arbitary number of bars to be drawn * Add arbitrary number of bars to be drawn
* *
* Refer to the graphs.md for a detailed list of allowed attributes * Refer to the graphs.md for a detailed list of allowed attributes
* *
* @param $axis * @param array $axis
* @return $this * @return self
*/ */
public function drawBars($axis) public function drawBars(array $axis)
{ {
$this->draw(self::TYPE_BAR, func_get_args()); $this->draw(self::TYPE_BAR, func_get_args());
return $this; return $this;
@ -164,7 +164,7 @@ class GridChart extends Chart
/** /**
* Generic method for adding elements to the drawing stack * Generic method for adding elements to the drawing stack
* *
* @param Srring $type The type of the element to draw (see TYPE_ constants in this class) * @param string $type The type of the element to draw (see TYPE_ constants in this class)
* @param array $data The data given to the draw call * @param array $data The data given to the draw call
*/ */
private function draw($type, $data) private function draw($type, $data)
@ -290,8 +290,8 @@ class GridChart extends Chart
* *
* Setting null to an axis means this will use a value determined by the dataset * Setting null to an axis means this will use a value determined by the dataset
* *
* @param int|null $xMin The minimum value for the x axis or null to use a dynamic value * @param int $xMin The minimum value for the x axis or null to use a dynamic value
* @param int|null $yMin The minimum value for the y axis or null to use a dynamic value * @param int $yMin The minimum value for the y axis or null to use a dynamic value
* @param string $axisName The name of the axis to set the minimum, currently only 'default' * @param string $axisName The name of the axis to set the minimum, currently only 'default'
* *
* @return self Fluid interface * @return self Fluid interface
@ -307,8 +307,8 @@ class GridChart extends Chart
* *
* Setting null to an axis means this will use a value determined by the dataset * Setting null to an axis means this will use a value determined by the dataset
* *
* @param int|null $xMax The maximum value for the x axis or null to use a dynamic value * @param int $xMax The maximum value for the x axis or null to use a dynamic value
* @param int|null $yMax The maximum value for the y axis or null to use a dynamic value * @param int $yMax The maximum value for the y axis or null to use a dynamic value
* @param string $axisName The name of the axis to set the maximum, currently only 'default' * @param string $axisName The name of the axis to set the maximum, currently only 'default'
* *
* @return self Fluid interface * @return self Fluid interface
@ -376,6 +376,7 @@ class GridChart extends Chart
{ {
foreach ($this->graphs as $axisName => $graphs) { foreach ($this->graphs as $axisName => $graphs) {
$axis = $this->axis[$axisName]; $axis = $this->axis[$axisName];
$graphObj = null;
foreach ($graphs as $graph) { foreach ($graphs as $graph) {
// determine the type and create a graph object for it // determine the type and create a graph object for it
switch ($graph['graphType']) { switch ($graph['graphType']) {
@ -402,7 +403,7 @@ class GridChart extends Chart
* @param mixed $graphObject The graph class, needs the setStyleFromConfig method * @param mixed $graphObject The graph class, needs the setStyleFromConfig method
* @param array $graphConfig The configration array of the graph * @param array $graphConfig The configration array of the graph
* *
* @return null|mixed Either the graph to be added or null if the graph is not directly added * @return mixed Either the graph to be added or null if the graph is not directly added
* to the document (e.g. stacked graphs are added by * to the document (e.g. stacked graphs are added by
* the StackedGraph Composite object) * the StackedGraph Composite object)
*/ */
@ -415,7 +416,7 @@ class GridChart extends Chart
if (!$graphConfig['stack']->stackEmpty()) { if (!$graphConfig['stack']->stackEmpty()) {
return $graphConfig['stack']; return $graphConfig['stack'];
} }
// return no object when the graph shouldn be rendered // return no object when the graph should not be rendered
return null; return null;
} }
return $graphObject; return $graphObject;

View File

@ -28,15 +28,14 @@
namespace Icinga\Chart; namespace Icinga\Chart;
use DOMElement; use \DOMElement;
use \Icinga\Chart\Palette;
use Icinga\Chart\Palette; use \Icinga\Chart\Primitive\Canvas;
use Icinga\Chart\Primitive\Canvas; use \Icinga\Chart\Primitive\Drawable;
use Icinga\Chart\Primitive\Drawable; use \Icinga\Chart\Primitive\Rect;
use Icinga\Chart\Primitive\Rect; use \Icinga\Chart\Primitive\Text;
use Icinga\Chart\Primitive\Text; use \Icinga\Chart\Render\LayoutBox;
use Icinga\Chart\Render\LayoutBox; use \Icinga\Chart\Render\RenderContext;
use Icinga\Chart\Render\RenderContext;
/** /**
* Drawable for creating a Graph Legend on the bottom of a graph. * Drawable for creating a Graph Legend on the bottom of a graph.
@ -109,7 +108,8 @@ class Legend implements Drawable
} }
$colorBox = new Rect($left, $top, 2, 2); $colorBox = new Rect($left, $top, 2, 2);
$colorBox->setFill($color)->setStrokeWidth(2)->keepRatio(); $colorBox->setFill($color)->setStrokeWidth(2);
$colorBox->keepRatio();
$outer->addElement($colorBox); $outer->addElement($colorBox);
$textBox = new Text($left+5, $top+2, $text); $textBox = new Text($left+5, $top+2, $text);

View File

@ -1,5 +1,29 @@
<?php <?php
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga 2 Web.
*
* Icinga 2 Web - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*/
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
namespace Icinga\Chart; namespace Icinga\Chart;

View File

@ -1,18 +1,41 @@
<?php <?php
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga 2 Web.
*
* Icinga 2 Web - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*/
// {{{ICINGA_LICENSE_HEADER}}} // {{{ICINGA_LICENSE_HEADER}}}
namespace Icinga\Chart; namespace Icinga\Chart;
use DOMElement; use \DOMElement;
use \Icinga\Chart\Chart;
use Icinga\Chart\Chart; use \Icinga\Chart\Primitive\Canvas;
use Icinga\Chart\Primitive\Canvas; use \Icinga\Chart\Primitive\PieSlice;
use Icinga\Chart\Primitive\PieSlice; use \Icinga\Chart\Primitive\RawElement;
use Icinga\Chart\Primitive\RawElement; use \Icinga\Chart\Primitive\Rect;
use Icinga\Chart\Primitive\Rect; use \Icinga\Chart\Render\RenderContext;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Render\LayoutBox;
use Icinga\Chart\Render\LayoutBox;
/** /**
* Graphing component for rendering Pie Charts. * Graphing component for rendering Pie Charts.
@ -95,14 +118,13 @@ class PieChart extends Chart
} }
/** /**
* Draw an arbitary number of pies in this chart * Draw an arbitrary number of pies in this chart
* *
* @param $dataSet The pie definition, see graphs.md for further details concerning the format * @param array $dataSet,... The pie definition, see graphs.md for further details concerning the format
* @param ...
* *
* @return self Fluent interface * @return self Fluent interface
*/ */
public function drawPie($dataSet) public function drawPie(array $dataSet)
{ {
$dataSets = func_get_args(); $dataSets = func_get_args();
$this->pies += $dataSets; $this->pies += $dataSets;

View File

@ -28,11 +28,11 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use DOMElement; use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Render\RenderContext;
/** /**
* Base interace for animatable objects * Base interface for animatable objects
*/ */
abstract class Animatable extends Styleable abstract class Animatable extends Styleable
{ {
@ -56,7 +56,7 @@ abstract class Animatable extends Styleable
/** /**
* Append the animation to the given element * Append the animation to the given element
* *
* @param DOMElement $dom The element to append the animstion to * @param DOMElement $dom The element to append the animation to
* @param RenderContext $ctx The context to use for rendering the animation object * @param RenderContext $ctx The context to use for rendering the animation object
*/ */
protected function appendAnimation(DOMElement $dom, RenderContext $ctx) protected function appendAnimation(DOMElement $dom, RenderContext $ctx)

View File

@ -28,8 +28,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use DOMElement; use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Render\RenderContext;
/** /**
* Drawable for the SVG animate tag * Drawable for the SVG animate tag
@ -38,6 +38,7 @@ class Animation implements Drawable
{ {
/** /**
* The attribute to animate * The attribute to animate
*
* @var string * @var string
*/ */
private $attribute; private $attribute;
@ -79,7 +80,7 @@ class Animation implements Drawable
* @param float $duration The duration of the duration * @param float $duration The duration of the duration
* @param float $begin The begin of the duration * @param float $begin The begin of the duration
*/ */
public function __construct($attribute, $from, $to, $duration = 0.5, $begin = 0) public function __construct($attribute, $from, $to, $duration = 0.5, $begin = 0.0)
{ {
$this->attribute = $attribute; $this->attribute = $attribute;
$this->from = $from; $this->from = $from;

View File

@ -29,8 +29,9 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use Icinga\Chart\Render\LayoutBox; use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Render\LayoutBox;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Canvas SVG component that encapsulates grouping and padding and allows rendering * Canvas SVG component that encapsulates grouping and padding and allows rendering
@ -41,24 +42,28 @@ class Canvas implements Drawable
{ {
/** /**
* The name of the canvas, will be used as the id * The name of the canvas, will be used as the id
*
* @var string * @var string
*/ */
private $name; private $name;
/** /**
* An array of child elements of this Canvas * An array of child elements of this Canvas
*
* @var array * @var array
*/ */
private $children = array(); private $children = array();
/** /**
* When true, this canvas is encapsulated in a clipPath tag and not drawn * When true, this canvas is encapsulated in a clipPath tag and not drawn
*
* @var bool * @var bool
*/ */
private $isClipPath = false; private $isClipPath = false;
/** /**
* The LayoutBox of this Canvas * The LayoutBox of this Canvas
*
* @var LayoutBox * @var LayoutBox
*/ */
private $rect; private $rect;

View File

@ -29,7 +29,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use Icinga\Chart\Render\RenderContext; use \DOMElement;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Drawable for svg circles * Drawable for svg circles
@ -38,18 +39,21 @@ class Circle extends Styleable implements Drawable
{ {
/** /**
* The circles x position * The circles x position
*
* @var int * @var int
*/ */
private $x; private $x;
/** /**
* The circles y position * The circles y position
*
* @var int * @var int
*/ */
private $y; private $y;
/** /**
* The circles radius * The circles radius
*
* @var int * @var int
*/ */
private $radius; private $radius;

View File

@ -28,7 +28,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use Icinga\Chart\Render\RenderContext; use \DOMElement;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Drawable element for creating svg out of components * Drawable element for creating svg out of components

View File

@ -28,7 +28,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use Icinga\Chart\Render\RenderContext; use \DOMElement;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Drawable for the svg line element * Drawable for the svg line element
@ -45,24 +46,28 @@ class Line extends Styleable implements Drawable
/** /**
* The line's start x coordinate * The line's start x coordinate
*
* @var int * @var int
*/ */
private $xStart = 0; private $xStart = 0;
/** /**
* The line's end x coordinate * The line's end x coordinate
*
* @var int * @var int
*/ */
private $xEnd = 0; private $xEnd = 0;
/** /**
* The line's start y coordinate * The line's start y coordinate
*
* @var int * @var int
*/ */
private $yStart = 0; private $yStart = 0;
/** /**
* The line's end y coordinate * The line's end y coordinate
*
* @var int * @var int
*/ */
private $yEnd = 0; private $yEnd = 0;

View File

@ -28,26 +28,46 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use Icinga\Chart\Render\RenderContext;
use \DOMElement;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Drawable for creating a svg path element * Drawable for creating a svg path element
*/ */
class Path extends Styleable implements Drawable class Path extends Styleable implements Drawable
{ {
/**
* Syntax template for moving
*
* @see http://www.w3.org/TR/SVG/paths.html#PathDataMovetoCommands
*/
const TPL_MOVE = 'M %s %s ';
const TPL_MOVE = "M %s %s "; /**
const TPL_BEZIER = "S %s %s "; * Syntax template for bezier curve
const TPL_STRAIGHT = "L %s %s "; *
* @see http://www.w3.org/TR/SVG/paths.html#PathDataCubicBezierCommands
*/
const TPL_BEZIER = 'S %s %s ';
/**
* Syntax template for straight lines
*
* @see http://www.w3.org/TR/SVG/paths.html#PathDataLinetoCommands
*/
const TPL_STRAIGHT = 'L %s %s ';
/** /**
* The default stroke width * The default stroke width
*
* @var int * @var int
*/ */
public $strokeWidth = 1; public $strokeWidth = 1;
/** /**
* True to treat coordinates as absolute values * True to treat coordinates as absolute values
*
* @var bool * @var bool
*/ */
protected $isAbsolute = false; protected $isAbsolute = false;

View File

@ -28,8 +28,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use DOMElement; use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Render\RenderContext;
/** /**
* Component for drawing a pie slice * Component for drawing a pie slice
@ -38,36 +38,42 @@ class PieSlice extends Animatable implements Drawable
{ {
/** /**
* The radius of this pieslice relative to the canvas * The radius of this pieslice relative to the canvas
*
* @var int * @var int
*/ */
private $radius = 50; private $radius = 50;
/** /**
* The start radian of the pie slice * The start radian of the pie slice
*
* @var float * @var float
*/ */
private $startRadian = 0; private $startRadian = 0;
/** /**
* The end radian of the pie slice * The end radian of the pie slice
*
* @var float * @var float
*/ */
private $endRadian= 0; private $endRadian= 0;
/** /**
* The x position of the pie slice's center * The x position of the pie slice's center
*
* @var int * @var int
*/ */
private $x; private $x;
/** /**
* The y position of the pie slice's center * The y position of the pie slice's center
*
* @var int * @var int
*/ */
private $y; private $y;
/** /**
* The caption of the pie slice, empty string means no caption * The caption of the pie slice, empty string means no caption
*
* @var string * @var string
*/ */
private $caption = ""; private $caption = "";
@ -75,19 +81,22 @@ class PieSlice extends Animatable implements Drawable
/** /**
* The offset of the caption, shifting the indicator from the center of the pie slice * The offset of the caption, shifting the indicator from the center of the pie slice
* *
* This is required for nested pie slices * This is required for nested pie slices.
*
* @var int * @var int
*/ */
private $captionOffset = 0; private $captionOffset = 0;
/** /**
* The minimum radius the label must respect * The minimum radius the label must respect
*
* @var int * @var int
*/ */
private $outerCaptionBound = 0; private $outerCaptionBound = 0;
/** /**
* An optional group element to add labels to when rendering * An optional group element to add labels to when rendering
*
* @var DOMElement * @var DOMElement
*/ */
private $labelGroup; private $labelGroup;

View File

@ -28,8 +28,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use DOMElement; use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Render\RenderContext;
/** /**
* Wrapper for raw elements to be added as Drawable's * Wrapper for raw elements to be added as Drawable's

View File

@ -28,7 +28,8 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use Icinga\Chart\Render\RenderContext; use \DomElement;
use \Icinga\Chart\Render\RenderContext;
/** /**
* Drawable representing the SVG rect element * Drawable representing the SVG rect element
@ -37,30 +38,35 @@ class Rect extends Animatable implements Drawable
{ {
/** /**
* The x position * The x position
*
* @var int * @var int
*/ */
private $x; private $x;
/** /**
* The y position * The y position
*
* @var int * @var int
*/ */
private $y; private $y;
/** /**
* The width of this rect * The width of this rect
*
* @var int * @var int
*/ */
private $width; private $width;
/** /**
* The height of this rect * The height of this rect
*
* @var int * @var int
*/ */
private $height; private $height;
/** /**
* Whether to keep the ratio * Whether to keep the ratio
*
* @var bool * @var bool
*/ */
private $keepRatio = false; private $keepRatio = false;

View File

@ -29,7 +29,7 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use DOMElement; use \DOMElement;
/** /**
* Base class for stylable drawables * Base class for stylable drawables
@ -39,30 +39,35 @@ class Styleable
/** /**
* The stroke width to use * The stroke width to use
*
* @var int * @var int
*/ */
public $strokeWidth = 0; public $strokeWidth = 0;
/** /**
* The stroke color to use * The stroke color to use
*
* @var string * @var string
*/ */
public $strokeColor = '#000'; public $strokeColor = '#000';
/** /**
* The fill color to use * The fill color to use
*
* @var string * @var string
*/ */
public $fill = 'none'; public $fill = 'none';
/** /**
* Additional styles to be appended to the style attribute * Additional styles to be appended to the style attribute
*
* @var string * @var string
*/ */
public $additionalStyle = ''; public $additionalStyle = '';
/** /**
* The id of this element * The id of this element
*
* @var string * @var string
*/ */
public $id = null; public $id = null;
@ -77,7 +82,7 @@ class Styleable
/** /**
* Set the stroke width for this drawable * Set the stroke width for this drawable
* *
* @param string $stroke The stroke with with unit * @param string $width The stroke with with unit
* *
* @return self Fluid interface * @return self Fluid interface
*/ */
@ -143,7 +148,7 @@ class Styleable
/** /**
* Return the content of the style attribute as a string * Return the content of the style attribute as a string
* *
* @return string T * @return string A string containing styles
*/ */
public function getStyle() public function getStyle()
{ {
@ -153,13 +158,18 @@ class Styleable
} }
/** /**
* Add an additional attribte to this element * Add an additional attribute to this element
*/ */
public function setAttribute($key, $value) public function setAttribute($key, $value)
{ {
$this->attributes[$key] = $value; $this->attributes[$key] = $value;
} }
/**
* Apply attribute to a DOMElement
*
* @param DOMElement $el Element to apply attributes
*/
protected function applyAttributes(DOMElement $el) protected function applyAttributes(DOMElement $el)
{ {
foreach ($this->attributes as $name => $value) { foreach ($this->attributes as $name => $value) {

View File

@ -29,9 +29,9 @@
namespace Icinga\Chart\Primitive; namespace Icinga\Chart\Primitive;
use \DOMElement;
use Icinga\Chart\Render\RenderContext; use \DOMText;
use DOMText; use \Icinga\Chart\Render\RenderContext;
/** /**
* Wrapper for the SVG text element * Wrapper for the SVG text element
@ -65,36 +65,42 @@ class Text extends Styleable implements Drawable
/** /**
* The x position of the Text * The x position of the Text
*
* @var int * @var int
*/ */
private $x; private $x;
/** /**
* The y position of the Text * The y position of the Text
*
* @var int * @var int
*/ */
private $y; private $y;
/** /**
* The text content * The text content
*
* @var string * @var string
*/ */
private $text; private $text;
/** /**
* The size of the font * The size of the font
*
* @var string * @var string
*/ */
private $fontSize = '1.5em'; private $fontSize = '1.5em';
/** /**
* The default fill color * The default fill color
*
* @var string * @var string
*/ */
public $fill = '#000'; public $fill = '#000';
/** /**
* The alignment of the text * The alignment of the text
*
* @var string * @var string
*/ */
private $alignment = self::ALIGN_START; private $alignment = self::ALIGN_START;
@ -131,9 +137,9 @@ class Text extends Styleable implements Drawable
/** /**
* Set the the text alignment with one of the ALIGN_* constants * Set the the text alignment with one of the ALIGN_* constants
* *
* @param String $align * @param String $align Value how to align
* *
* @return self * @return self Fluid interface
*/ */
public function setAlignment($align) public function setAlignment($align)
{ {

View File

@ -29,8 +29,8 @@
namespace Icinga\Chart\Render; namespace Icinga\Chart\Render;
use Icinga\Util\Dimension; use \DOMDocument;
use DOMDocument; use \Icinga\Util\Dimension;
/** /**
* Context for rendering, handles ratio based coordinate calculations. * Context for rendering, handles ratio based coordinate calculations.
@ -63,20 +63,6 @@ class RenderContext
*/ */
private $respectRatio = false; private $respectRatio = false;
/**
* The current padding (scale) factor on the X axis
*
* @var int
*/
private $paddingFacX = 1;
/**
* The current padding (scale) factor on the Y Axis
*
* @var int
*/
private $paddingFacY = 1;
/** /**
* The ratio on the x side. A x ration of 2 means that the width of the SVG is divided in 2000 * The ratio on the x side. A x ration of 2 means that the width of the SVG is divided in 2000
* units (see $viewBox) * units (see $viewBox)
@ -123,9 +109,9 @@ class RenderContext
} }
/** /**
* Let successive toAbsolute operations ignore ratio correction. * Let successive toAbsolute operations ignore ratio correction
* *
* This can be called to avoid distortion on certain elements like rectangles * This can be called to avoid distortion on certain elements like rectangles.
*/ */
public function keepRatio() public function keepRatio()
{ {
@ -135,7 +121,7 @@ class RenderContext
/** /**
* Let successive toAbsolute operations perform ratio correction * Let successive toAbsolute operations perform ratio correction
* *
* This will cause distortion on certain elements like rectangles * This will cause distortion on certain elements like rectangles.
*/ */
public function ignoreRatio() public function ignoreRatio()
{ {
@ -220,7 +206,7 @@ class RenderContext
* *
* @param int $x A relative x coordinate * @param int $x A relative x coordinate
* *
* @return int $y An absolute x coordinate * @return int An absolute x coordinate
**/ **/
public function xToAbsolute($x) public function xToAbsolute($x)
{ {
@ -232,7 +218,7 @@ class RenderContext
* *
* @param int $y A relative y coordinate * @param int $y A relative y coordinate
* *
* @return int $y An absolute y coordinate * @return int An absolute y coordinate
*/ */
public function yToAbsolute($y) public function yToAbsolute($y)
{ {
@ -244,7 +230,7 @@ class RenderContext
* *
* @param int $x An absolute x coordinate * @param int $x An absolute x coordinate
* *
* @return int $x A relative x coordinate * @return int A relative x coordinate
*/ */
public function xToRelative($x) public function xToRelative($x)
{ {
@ -256,7 +242,7 @@ class RenderContext
* *
* @param int $y An absolute x coordinate * @param int $y An absolute x coordinate
* *
* @return int $y A relative x coordinate * @return int A relative x coordinate
*/ */
public function yToRelative($y) public function yToRelative($y)
{ {

View File

@ -28,21 +28,19 @@
namespace Icinga\Chart; namespace Icinga\Chart;
use DOMNode; use \DOMNode;
use DOMElement; use \DOMElement;
use DOMDocument; use \DOMDocument;
use DOMImplementation; use \DOMImplementation;
use Exception; use \Icinga\Util\Dimension;
use Icinga\Util\Dimension; use \Icinga\Chart\Render\LayoutBox;
use Icinga\Chart\Render\LayoutBox; use \Icinga\Chart\Render\RenderContext;
use Icinga\Chart\Render\RenderContext; use \Icinga\Chart\Primitive\Canvas;
use Icinga\Chart\Primitive\Canvas;
/** /**
* SVG Renderer component. * SVG Renderer component.
* *
* Creates the basic DOM tree of the SVG to use * Creates the basic DOM tree of the SVG to use
*
*/ */
class SVGRenderer class SVGRenderer
{ {

View File

@ -28,7 +28,7 @@
namespace Icinga\Chart\Unit; namespace Icinga\Chart\Unit;
use Iterator; use \Iterator;
/** /**
* Base class for Axis Units * Base class for Axis Units
@ -51,9 +51,23 @@ interface AxisUnit extends Iterator
/** /**
* Transform the given absolute value in an axis relative value * Transform the given absolute value in an axis relative value
* *
* @param int $value The absolute, dataset dependend value * @param int $value The absolute, dataset dependent value
* *
* @return int An axis relative value * @return int An axis relative value
*/ */
public function transform($value); public function transform($value);
/**
* Set the axis minimum value to a fixed value
*
* @param int $min The new minimum value
*/
public function setMin($min);
/**
* Set the axis maximum value to a fixed value
*
* @param int $max The new maximum value
*/
public function setMax($max);
} }

View File

@ -29,10 +29,10 @@
namespace Icinga\Chart\Unit; namespace Icinga\Chart\Unit;
use Icinga\Application\Icinga; use \Zend_Config;
use Zend_Config; use \Icinga\Application\Icinga;
use Icinga\Application\Config as IcingaConfig; use \Icinga\Application\Config as IcingaConfig;
use Icinga\Util\DateTimeFactory; use \Icinga\Util\DateTimeFactory;
/** /**
* Calendar Axis Unit that transforms timestamps into user-readable values * Calendar Axis Unit that transforms timestamps into user-readable values
@ -138,7 +138,7 @@ class CalendarUnit extends LinearUnit
* @param array $dataset The dataset to update * @param array $dataset The dataset to update
* @param int $idx The index to use for determining the data * @param int $idx The index to use for determining the data
* *
* @return self * @return self Fluid interface
*/ */
public function addValues(array $dataset, $idx = 0) public function addValues(array $dataset, $idx = 0)
{ {