|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/paras.theinteractive.in/vendor/arcanedev/log-viewer/src/Tables/ |
Upload File : |
<?php
declare(strict_types=1);
namespace Arcanedev\LogViewer\Tables;
use Arcanedev\LogViewer\Contracts\Table as TableContract;
use Arcanedev\LogViewer\Contracts\Utilities\LogLevels as LogLevelsContract;
/**
* Class AbstractTable
*
* @author ARCANEDEV <arcanedev.maroc@gmail.com>
*/
abstract class AbstractTable implements TableContract
{
/* -----------------------------------------------------------------
| Properties
| -----------------------------------------------------------------
*/
/** @var array */
private $header = [];
/** @var array */
private $rows = [];
/** @var array */
private $footer = [];
/** @var \Arcanedev\LogViewer\Contracts\Utilities\LogLevels */
protected $levels;
/** @var string|null */
protected $locale;
/** @var array */
private $data = [];
/* -----------------------------------------------------------------
| Constructor
| -----------------------------------------------------------------
*/
/**
* Create a table instance.
*
* @param array $data
* @param \Arcanedev\LogViewer\Contracts\Utilities\LogLevels $levels
* @param string|null $locale
*/
public function __construct(array $data, LogLevelsContract $levels, $locale = null)
{
$this->setLevels($levels);
$this->setLocale(is_null($locale) ? config('log-viewer.locale') : $locale);
$this->setData($data);
$this->init();
}
/* -----------------------------------------------------------------
| Getters & Setters
| -----------------------------------------------------------------
*/
/**
* Set LogLevels instance.
*
* @param \Arcanedev\LogViewer\Contracts\Utilities\LogLevels $levels
*
* @return $this
*/
protected function setLevels(LogLevelsContract $levels)
{
$this->levels = $levels;
return $this;
}
/**
* Set table locale.
*
* @param string|null $locale
*
* @return $this
*/
protected function setLocale($locale)
{
if (is_null($locale) || $locale === 'auto') {
$locale = app()->getLocale();
}
$this->locale = $locale;
return $this;
}
/**
* Get table header.
*
* @return array
*/
public function header()
{
return $this->header;
}
/**
* Get table rows.
*
* @return array
*/
public function rows()
{
return $this->rows;
}
/**
* Get table footer.
*
* @return array
*/
public function footer()
{
return $this->footer;
}
/**
* Get raw data.
*
* @return array
*/
public function data()
{
return $this->data;
}
/**
* Set table data.
*
* @param array $data
*
* @return $this
*/
private function setData(array $data)
{
$this->data = $data;
return $this;
}
/* -----------------------------------------------------------------
| Main Methods
| -----------------------------------------------------------------
*/
/**
* Prepare the table.
*/
private function init()
{
$this->header = $this->prepareHeader($this->data);
$this->rows = $this->prepareRows($this->data);
$this->footer = $this->prepareFooter($this->data);
}
/**
* Prepare table header.
*
* @param array $data
*
* @return array
*/
abstract protected function prepareHeader(array $data);
/**
* Prepare table rows.
*
* @param array $data
*
* @return array
*/
abstract protected function prepareRows(array $data);
/**
* Prepare table footer.
*
* @param array $data
*
* @return array
*/
abstract protected function prepareFooter(array $data);
/* -----------------------------------------------------------------
| Other Methods
| -----------------------------------------------------------------
*/
/**
* Get log level color.
*
* @param string $level
*
* @return string
*/
protected function color($level)
{
return log_styler()->color($level);
}
}