mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 12:37:14 +01:00
99 lines
2.4 KiB
PHP
99 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Xentral\Widgets\DataTable\Service;
|
|
|
|
use Xentral\Widgets\DataTable\DataTableBuildConfig;
|
|
use Xentral\Widgets\DataTable\DataTableInterface;
|
|
use Xentral\Widgets\DataTable\Result\DataTableDataResult;
|
|
use Xentral\Widgets\DataTable\Result\DataTableHtmlResult;
|
|
|
|
final class DataTableService
|
|
{
|
|
/** @var DataTableBuilder $builder */
|
|
private $builder;
|
|
|
|
/** @var DataTableRenderer $renderer */
|
|
private $renderer;
|
|
|
|
/** @var DataTableFetcher $fetcher */
|
|
private $fetcher;
|
|
|
|
/**
|
|
* @param DataTableBuilder $builder
|
|
* @param DataTableRenderer $renderer
|
|
* @param DataTableFetcher $fetcher
|
|
*/
|
|
public function __construct(DataTableBuilder $builder, DataTableRenderer $renderer, DataTableFetcher $fetcher)
|
|
{
|
|
$this->builder = $builder;
|
|
$this->renderer = $renderer;
|
|
$this->fetcher = $fetcher;
|
|
}
|
|
|
|
/**
|
|
* @param DataTableBuildConfig $buildConfig
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function canFetchData(DataTableBuildConfig $buildConfig)
|
|
{
|
|
return $this->fetcher->canFetchData($buildConfig);
|
|
}
|
|
|
|
/**
|
|
* @param DataTableBuildConfig $buildConfig
|
|
*
|
|
* @return DataTableDataResult
|
|
*/
|
|
public function fetchData(DataTableBuildConfig $buildConfig)
|
|
{
|
|
$dataTable = $this->buildTable($buildConfig);
|
|
|
|
return $this->fetcher->fetchData($dataTable);
|
|
}
|
|
|
|
/**
|
|
* @param DataTableBuildConfig $buildConfig
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function canExportData(DataTableBuildConfig $buildConfig)
|
|
{
|
|
return $this->fetcher->canExportData($buildConfig);
|
|
}
|
|
|
|
/**
|
|
* @param DataTableBuildConfig $buildConfig
|
|
*
|
|
* @return string Path to temporary file
|
|
*/
|
|
public function exportData(DataTableBuildConfig $buildConfig)
|
|
{
|
|
$dataTable = $this->buildTable($buildConfig);
|
|
|
|
return $this->fetcher->exportData($dataTable);
|
|
}
|
|
|
|
/**
|
|
* @param DataTableBuildConfig $buildConfig
|
|
*
|
|
* @return DataTableHtmlResult
|
|
*/
|
|
public function renderHtml(DataTableBuildConfig $buildConfig)
|
|
{
|
|
$dataTable = $this->buildTable($buildConfig);
|
|
|
|
return $this->renderer->createHtmlResult($dataTable);
|
|
}
|
|
|
|
/**
|
|
* @param DataTableBuildConfig $buildConfig
|
|
*
|
|
* @return DataTableInterface
|
|
*/
|
|
private function buildTable(DataTableBuildConfig $buildConfig)
|
|
{
|
|
return $this->builder->buildTable($buildConfig);
|
|
}
|
|
}
|