mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-26 22:50:29 +01:00
84 lines
1.9 KiB
PHP
84 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Widgets\Chart;
|
||
|
|
||
|
class HtmlRenderer
|
||
|
{
|
||
|
/** @var Chart $chart */
|
||
|
protected $chart;
|
||
|
|
||
|
/** @var string $title */
|
||
|
protected $title;
|
||
|
|
||
|
/** @var int $width */
|
||
|
protected $width;
|
||
|
|
||
|
/** @var int $height */
|
||
|
protected $height;
|
||
|
|
||
|
/** @var array $attributes */
|
||
|
protected $attributes;
|
||
|
|
||
|
/**
|
||
|
* @param Chart $chart
|
||
|
* @param string $title
|
||
|
* @param int $width
|
||
|
* @param int $height
|
||
|
* @param array $attributes Zusätzliche HTML-Attribute als assoziatives Array
|
||
|
*/
|
||
|
public function __construct(Chart $chart, $title = '', $width = 400, $height = 200, array $attributes = [])
|
||
|
{
|
||
|
$this->chart = $chart;
|
||
|
$this->title = $title;
|
||
|
$this->width = (int)$width;
|
||
|
$this->height = (int)$height;
|
||
|
$this->attributes = $attributes;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function render()
|
||
|
{
|
||
|
return sprintf(
|
||
|
'<div class="chart-wrapper" %s>%s' .
|
||
|
' <div class="chart-content">' .
|
||
|
' <canvas data-graph-id="%s" width="%s" height="%s"></canvas>' .
|
||
|
' <script type="application/json">%s</script>' .
|
||
|
' </div>' .
|
||
|
'</div>',
|
||
|
$this->renderAttributes(),
|
||
|
$this->renderTitle(),
|
||
|
uniqid(null, false),
|
||
|
$this->width,
|
||
|
$this->height,
|
||
|
$this->chart->toJson()
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function renderAttributes()
|
||
|
{
|
||
|
$result = '';
|
||
|
foreach ($this->attributes as $key => $value) {
|
||
|
$result .= sprintf(' %s="%s"', $key, $value);
|
||
|
}
|
||
|
|
||
|
return trim($result);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function renderTitle()
|
||
|
{
|
||
|
if (empty($this->title)) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
return sprintf('<div class="chart-title">%s</div>', $this->title);
|
||
|
}
|
||
|
}
|