OpenXE/classes/Widgets/DataTable/Service/DataTableService.php

99 lines
2.4 KiB
PHP
Raw Normal View History

2021-05-21 08:49:41 +02:00
<?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);
}
}