mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 20:47:15 +01:00
77 lines
2.3 KiB
PHP
77 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Widgets\DataTable\Service;
|
||
|
|
||
|
use Xentral\Widgets\DataTable\Column\Column;
|
||
|
use Xentral\Widgets\DataTable\DataTableInterface;
|
||
|
use Xentral\Widgets\DataTable\Result\DataTableHtmlResult;
|
||
|
|
||
|
final class DataTableRenderer
|
||
|
{
|
||
|
/**
|
||
|
* @param DataTableInterface $table
|
||
|
*
|
||
|
* @return DataTableHtmlResult
|
||
|
*/
|
||
|
public function createHtmlResult(DataTableInterface $table)
|
||
|
{
|
||
|
return new DataTableHtmlResult($this->getHtmlTable($table), $this->getDataTableOptions($table));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DataTableInterface $table
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
private function getDataTableOptions(DataTableInterface $table)
|
||
|
{
|
||
|
$options = $table->getOptions()->toArray();
|
||
|
|
||
|
$options['ajax'] = [
|
||
|
'url' => $table->getConfig()->getAjaxUrl(),
|
||
|
'type' => $table->getConfig()->getAjaxMethod(),
|
||
|
'data' => $table->getConfig()->getAjaxParams(),
|
||
|
];
|
||
|
$options['columns'] = $table->getColumns()->toArray();
|
||
|
|
||
|
return $options;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DataTableInterface $table
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
private function getHtmlTable(DataTableInterface $table)
|
||
|
{
|
||
|
$columns = $table->getColumns();
|
||
|
$headerHtml1 = '';
|
||
|
$footerHtml = '';
|
||
|
|
||
|
/** @var Column $column */
|
||
|
foreach ($columns as $column) {
|
||
|
$headerHtml1 .= sprintf('<th data-name="%s">%s</th>', $column->getName(), $column->getTitle());
|
||
|
if ($column->has('footerHtml')) {
|
||
|
$footerHtml .= sprintf('<th data-name="%s">%s</th>', $column->getName(), $column->get('footerHtml'));
|
||
|
} else {
|
||
|
$footerHtml .= sprintf('<th data-name="%s">%s</th>', $column->getName(), $column->getTitle());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$html = "\n";
|
||
|
$html .= sprintf(
|
||
|
'<table id="%s" class="%s" width="100%%" data-autoinit="%s">',
|
||
|
$table->getConfig()->getTableName(),
|
||
|
$table->getConfig()->getCssClassesString(),
|
||
|
$table->getConfig()->isAutoInit() ? 'true' : 'false'
|
||
|
) . "\n";
|
||
|
$html .= '<thead>';
|
||
|
$html .= '<tr>' . $headerHtml1 . '</tr>';
|
||
|
$html .= '</thead>' . "\n";
|
||
|
$html .= '<tfoot><tr>' . $footerHtml . '</tr></tfoot>' . "\n";
|
||
|
$html .= '</table>' . "\n";
|
||
|
|
||
|
return $html;
|
||
|
}
|
||
|
}
|