mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 23:20:28 +01:00
120 lines
2.4 KiB
PHP
120 lines
2.4 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Widgets\DataTable\Feature;
|
||
|
|
||
|
use Closure;
|
||
|
use Xentral\Widgets\DataTable\DataTableInterface;
|
||
|
|
||
|
final class RowClassesFeature implements DataTableFeatureInterface
|
||
|
{
|
||
|
/** @var array $colors */
|
||
|
private static $availableColors = [
|
||
|
'lightgray',
|
||
|
'lightgreen',
|
||
|
'lightteal',
|
||
|
'lightcyan',
|
||
|
'lightblue',
|
||
|
'lightindigo',
|
||
|
'lightviolet',
|
||
|
'lightfuchsia',
|
||
|
'lightpink',
|
||
|
'lightred',
|
||
|
'lightorange',
|
||
|
'lightyellow',
|
||
|
'lightlime',
|
||
|
];
|
||
|
|
||
|
/** @var array|string[] $classes */
|
||
|
private $classes;
|
||
|
|
||
|
/** @var array|Closure[] $customFormatter */
|
||
|
private $customFormatter = [];
|
||
|
|
||
|
/**
|
||
|
* @param array|string[] $classes
|
||
|
* @param array|Closure $customFormatter
|
||
|
*/
|
||
|
public function __construct(array $classes = [], array $customFormatter = [])
|
||
|
{
|
||
|
foreach ($classes as $class) {
|
||
|
$this->addClass($class);
|
||
|
}
|
||
|
foreach ($customFormatter as $formatter) {
|
||
|
$this->addCustomFormatter($formatter);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $className
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function addClass($className)
|
||
|
{
|
||
|
$this->classes[] = trim($className);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array|string[]
|
||
|
*/
|
||
|
public function getClasses()
|
||
|
{
|
||
|
return $this->classes;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getClassesString()
|
||
|
{
|
||
|
return implode(' ', $this->classes);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function hasCustomFormatter()
|
||
|
{
|
||
|
return !empty($this->customFormatter);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array|Closure[]
|
||
|
*/
|
||
|
public function getCustomFormatter()
|
||
|
{
|
||
|
return $this->customFormatter;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param Closure $closure
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function addCustomFormatter(Closure $closure)
|
||
|
{
|
||
|
$this->customFormatter[] = $closure;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DataTableInterface $table
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function modifyTable(DataTableInterface $table)
|
||
|
{
|
||
|
// @todo Logik steckt momentan in DataTableRenderer; muss aber hier rein
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getRandomColor()
|
||
|
{
|
||
|
$count = count(self::$availableColors);
|
||
|
$index = mt_rand() % $count;
|
||
|
|
||
|
return self::$availableColors[$index];
|
||
|
}
|
||
|
}
|