<?php
namespace App\Datatables;
use App\Datatables\Filter\TextFilter;
use App\Datatables\Filter\SelectFilter;
use App\Datatables\Column\ActionColumn;
use Sg\DatatablesBundle\Datatable\Style;
use Sg\DatatablesBundle\Datatable\Column\Column;
use Sg\DatatablesBundle\Datatable\Column\BooleanColumn;
use Sg\DatatablesBundle\Datatable\Column\MultiselectColumn;
use Sg\DatatablesBundle\Datatable\Column\VirtualColumn;
use Sg\DatatablesBundle\Datatable\Column\DateTimeColumn;
use Sg\DatatablesBundle\Datatable\Column\ImageColumn;
use Sg\DatatablesBundle\Datatable\Filter\NumberFilter;
use Sg\DatatablesBundle\Datatable\Filter\Select2Filter;
use Sg\DatatablesBundle\Datatable\Filter\DateRangeFilter;
use Sg\DatatablesBundle\Datatable\Editable\CombodateEditable;
use Sg\DatatablesBundle\Datatable\Editable\SelectEditable;
use Sg\DatatablesBundle\Datatable\Editable\TextareaEditable;
use Sg\DatatablesBundle\Datatable\Editable\TextEditable;
class AbsenceCounterDatatable extends CommonDatatable
{
public function getLineFormatter()
{
$formatter = function($row) {
return $row;
};
return $formatter;
}
/**
* {@inheritdoc}
*/
public function buildDatatable(array $options = array())
{
parent::buildDatatable($options);
$this->predefinedOptions['order']=array(0, 'desc');
$this->options->set($this->predefinedOptions);
$others_route_parameters=[];// à completer si besoin
$this->ajax->setUrl($this->router->generate('app_absence_config',['type'=>'counter']));
$this->columnBuilder
->add('id', Column::class, array(
'visible' => false,
'searchable' => false,
'class_name'=>'no_colvis',
'title' => $this->translator->trans('globals.label.id'),
'default_content'=>'',
))
->add('name', Column::class, array(
'title' => $this->translator->trans('absence_counter.label.name'),
'default_content'=>'',
))
->add('qty', Column::class, array(
'title' => $this->translator->trans('absence_counter.label.qty'),
'default_content'=>'',
))
->add('resetDate', DateTimeColumn::class, array(
'date_format'=>'dd/MM' ,
'filter' => array(DateRangeFilter::class,[]),
'title' => $this->translator->trans('absence_counter.label.resetDate'),
'default_content'=>'',
))
->add('absenceReasons.name', Column::class, array(
'data'=>'absenceReasons[, ].name',
'title' => $this->translator->trans('absence_counter.label.absenceReasons'),
'default_content'=>'',
))
->add('enabled', BooleanColumn::class, array(
'title' => $this->translator->trans('globals.label.enabled'),
'default_content'=>'',
'true_icon' => 'fa fa-check',
'false_icon' => 'fa fa-ban',
'true_label' => $this->translator->trans('datatable.enabled_label'),
'false_label' => $this->translator->trans('datatable.disabled_label'),
'filter' => array(SelectFilter::class, array(
'initial_search'=>"1",
'search_type' => 'eq',
'select_options' =>$this->getEnabledFilterChoice(),
)),
))
->add(null, ActionColumn::class, [
'title' => $this->translator->trans('datatable.actions.title'),
'start_html' => '<div class="btn-burger-menu"><i class="fas fa-ellipsis-v fa-2x" aria-hidden="true"></i><div class="actions_dt">',
'end_html' => '</div></div>',
'width'=>"50px",
'actions' => [
[
'route' => 'app_absence_counter_edit',
'route_parameters' => [
'id' => 'id'
]+$others_route_parameters,
'label' => $this->translator->trans('datatable.actions.edit'),
'icon' => 'fa fa-edit',
'attributes' => [
'rel' => 'tooltip',
'title' => $this->translator->trans('datatable.actions.edit'),
'class' => 'd-block',
'role' => 'button'
],
'render_if' => function($row) {
return (
$this->authorizationChecker->isGranted('ROLE_USER')
);
},
],
[
'route' => 'app_absence_counter_enable',
'route_parameters' => [
'id' => 'id'
]+$others_route_parameters,
'label' =>$this->translator->trans('datatable.actions.enable'),
'icon' => 'fa fa-check',
'attributes' => [
'rel' => 'tooltip',
'class' => 'd-block',
'role' => 'button',
'title' => $this->translator->trans('datatable.actions.enable'),
],
'render_if' => function($row) {
return (
$this->authorizationChecker->isGranted('ROLE_USER') and trim(strip_tags($row['enabled'])) == $this->translator->trans('datatable.disabled_label')
);
},
],
[
'route' => 'app_absence_counter_disable',
'route_parameters' => [
'id' => 'id'
]+$others_route_parameters,
'label' =>$this->translator->trans('datatable.actions.disable'),
'icon' => 'fa fa-ban',
'attributes' => [
'rel' => 'tooltip',
'class' => 'd-block',
'role' => 'button',
'title' => $this->translator->trans('datatable.actions.disable'),
],
'render_if' => function($row) {
return (
$this->authorizationChecker->isGranted('ROLE_USER') and trim(strip_tags($row['enabled'])) == $this->translator->trans('datatable.enabled_label')
);
},
],
]
])
;
}
/**
* {@inheritdoc}
*/
public function getEntity()
{
return 'App\Entity\AbsenceCounter';
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'absence_counter';
}
}