Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Widgets\DataTable\Column;
|
||||
|
||||
use Closure;
|
||||
use DateTime;
|
||||
use Exception;
|
||||
|
||||
class ColumnFormatter
|
||||
{
|
||||
/**
|
||||
* @param mixed $ifEmpty
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function ifEmpty($ifEmpty)
|
||||
{
|
||||
return static function ($value) use ($ifEmpty) {
|
||||
if (empty($value)) {
|
||||
return $ifEmpty;
|
||||
}
|
||||
|
||||
return $value;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @example Format::sprintf('row_id_%s') %s will be replaced with the current value
|
||||
*
|
||||
* @param mixed $sprintf
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function sprintf($sprintf)
|
||||
{
|
||||
return static function ($value) use ($sprintf) {
|
||||
return sprintf($sprintf, $value);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $template
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function template($template)
|
||||
{
|
||||
return static function ($value, $rowAssoc) use ($template) {
|
||||
$templateVars = [];
|
||||
foreach ($rowAssoc as $assocKey => $assocValue) {
|
||||
$templateVar = '{' . strtoupper($assocKey) . '}';
|
||||
$templateVar = str_replace('-', '_', $templateVar);
|
||||
$templateVars[$templateVar] = $assocValue;
|
||||
}
|
||||
|
||||
return strtr($template, $templateVars);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $decimals
|
||||
* @param string $decimalSeperator
|
||||
* @param string $thousandsSeperator
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function number($decimals = 2, $decimalSeperator = ',', $thousandsSeperator = '.')
|
||||
{
|
||||
return static function ($value) use ($decimals, $decimalSeperator, $thousandsSeperator) {
|
||||
return number_format($value, $decimals, $decimalSeperator, $thousandsSeperator);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $decimals
|
||||
* @param string $decimalSeperator
|
||||
* @param string $thousandsSeperator
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function bytes($decimals = 1, $decimalSeperator = ',', $thousandsSeperator = '.')
|
||||
{
|
||||
return static function ($bytes) use ($decimals, $decimalSeperator, $thousandsSeperator) {
|
||||
$bytes = (float)$bytes;
|
||||
$base = log($bytes, 1024);
|
||||
$suffixes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
||||
$suffixIndex = (int)floor($base);
|
||||
$suffix = $suffixes[$suffixIndex];
|
||||
$number = pow(1024, $base - floor($base));
|
||||
|
||||
return number_format($number, $decimals, $decimalSeperator, $thousandsSeperator) . ' ' . $suffix;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $dateFormat https://www.php.net/manual/de/function.date.php
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function date($dateFormat)
|
||||
{
|
||||
return static function ($dateString) use ($dateFormat) {
|
||||
try {
|
||||
$date = new DateTime($dateString);
|
||||
|
||||
return $date->format($dateFormat);
|
||||
} catch (Exception $exception) {
|
||||
return $exception->getMessage();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Closure
|
||||
*/
|
||||
public static function htmlEscape()
|
||||
{
|
||||
return static function ($value) {
|
||||
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo Fixen
|
||||
*
|
||||
* @return Closure
|
||||
*/
|
||||
public static function dump()
|
||||
{
|
||||
return static function ($value, $row) {
|
||||
$data = [
|
||||
'value' => $value,
|
||||
'row' => $row,
|
||||
];
|
||||
|
||||
return sprintf(
|
||||
'<pre class="dump">%s</pre>',
|
||||
htmlspecialchars(var_export($data, true))
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user