* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team * */ // {{{ICINGA_LICENSE_HEADER}}} namespace Icinga\Web\Widget\Chart; use Icinga\Web\Widget\Widget; use Icinga\Web\Url; use \Zend_View_Abstract; class PieChart implements Widget { /** * The template string used for rendering this widget * * @var string */ private $template =<<<'EOD'
EOD; /** * @var \Icinga\Web\Url */ private $url; /** * The width of the rendered chart * * @var int The value in percent */ private $width = 25; /** * The height of the rendered chart * * @var int The value in perecent */ private $height = 25; public function setData($data) { $this->url->setParam('data', implode(',', $data)); } public function setLabels($labels = null) { $this->url->setParam('labels', implode(',', $labels)); } public function setColors($colors = null) { $this->url->setParam('colors', implode(',', $colors)); } public function setHeight($height) { $this->height = $height; } public function setWidth($width) { $this->width = $width; } public function __construct(array $data) { $this->url = Url::fromPath('svg/piechart.svg'); if (array_key_exists('data', $data)) { $this->data = $data['data']; if (array_key_exists('labels', $data)) { $this->labels = $data['labels']; } if (array_key_exists('colors', $data)) { $this->colors = $data['colors']; } } else { $this->setData($data); } } /** * Renders this widget via the given view and returns the * HTML as a string * * @param \Zend_View_Abstract $view * @return string */ public function render(Zend_View_Abstract $view) { $template = $this->template; $template = preg_replace('{{url}}', $this->url->getAbsoluteUrl(), $template); $template = preg_replace('{{width}}', $this->width, $template); $template = preg_replace('{{height}}', $this->height, $template); return $template; } }