Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
<?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];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user