src/Datatables/AbsenceCounterDatatable.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Datatables;
  3. use App\Datatables\Filter\TextFilter;
  4. use App\Datatables\Filter\SelectFilter;
  5. use App\Datatables\Column\ActionColumn;
  6. use Sg\DatatablesBundle\Datatable\Style;
  7. use Sg\DatatablesBundle\Datatable\Column\Column;
  8. use Sg\DatatablesBundle\Datatable\Column\BooleanColumn;
  9. use Sg\DatatablesBundle\Datatable\Column\MultiselectColumn;
  10. use Sg\DatatablesBundle\Datatable\Column\VirtualColumn;
  11. use Sg\DatatablesBundle\Datatable\Column\DateTimeColumn;
  12. use Sg\DatatablesBundle\Datatable\Column\ImageColumn;
  13. use Sg\DatatablesBundle\Datatable\Filter\NumberFilter;
  14. use Sg\DatatablesBundle\Datatable\Filter\Select2Filter;
  15. use Sg\DatatablesBundle\Datatable\Filter\DateRangeFilter;
  16. use Sg\DatatablesBundle\Datatable\Editable\CombodateEditable;
  17. use Sg\DatatablesBundle\Datatable\Editable\SelectEditable;
  18. use Sg\DatatablesBundle\Datatable\Editable\TextareaEditable;
  19. use Sg\DatatablesBundle\Datatable\Editable\TextEditable;
  20. class AbsenceCounterDatatable extends CommonDatatable
  21. {
  22.     public function getLineFormatter()
  23.     {
  24.         $formatter = function($row)  {
  25.             return $row;
  26.         };
  27.         return $formatter;
  28.     }
  29.     /**
  30.     * {@inheritdoc}
  31.     */
  32.     public function buildDatatable(array $options = array())
  33.     {
  34.         parent::buildDatatable($options);
  35.         $this->predefinedOptions['order']=array(0'desc');
  36.         $this->options->set($this->predefinedOptions);
  37.         $others_route_parameters=[];// à completer si besoin
  38.         $this->ajax->setUrl($this->router->generate('app_absence_config',['type'=>'counter']));
  39.         $this->columnBuilder
  40.              ->add('id'Column::class, array(
  41.                 'visible' => false,
  42.                 'searchable' => false,
  43.                 'class_name'=>'no_colvis',
  44.                 'title' => $this->translator->trans('globals.label.id'),
  45.                 'default_content'=>'',
  46.              ))
  47.              ->add('name'Column::class, array(
  48.                 'title' => $this->translator->trans('absence_counter.label.name'),
  49.                 'default_content'=>'',
  50.              ))
  51.              ->add('qty'Column::class, array(
  52.                 'title' => $this->translator->trans('absence_counter.label.qty'),
  53.                 'default_content'=>'',
  54.              ))
  55.              ->add('resetDate'DateTimeColumn::class, array(
  56.                  'date_format'=>'dd/MM' ,
  57.                  'filter' => array(DateRangeFilter::class,[]),
  58.                  'title' => $this->translator->trans('absence_counter.label.resetDate'),
  59.                  'default_content'=>'',
  60.              ))
  61.             ->add('absenceReasons.name'Column::class, array(
  62.                 'data'=>'absenceReasons[, ].name',
  63.                 'title' => $this->translator->trans('absence_counter.label.absenceReasons'),
  64.                 'default_content'=>'',
  65.             ))
  66.              ->add('enabled'BooleanColumn::class, array(
  67.                 'title' => $this->translator->trans('globals.label.enabled'),
  68.                 'default_content'=>'',
  69.                 'true_icon' => 'fa fa-check',
  70.                 'false_icon' => 'fa fa-ban',
  71.                 'true_label' => $this->translator->trans('datatable.enabled_label'),
  72.                 'false_label' => $this->translator->trans('datatable.disabled_label'),
  73.                 'filter' => array(SelectFilter::class, array(
  74.                     'initial_search'=>"1",
  75.                     'search_type' => 'eq',
  76.                     'select_options' =>$this->getEnabledFilterChoice(),
  77.                 )),
  78.              ))
  79.             ->add(nullActionColumn::class, [
  80.                 'title' => $this->translator->trans('datatable.actions.title'),
  81.                 'start_html' => '<div class="btn-burger-menu"><i class="fas fa-ellipsis-v fa-2x" aria-hidden="true"></i><div class="actions_dt">',
  82.                 'end_html' => '</div></div>',
  83.                 'width'=>"50px",
  84.                 'actions' => [
  85.                     [
  86.                         'route' => 'app_absence_counter_edit',
  87.                         'route_parameters' => [
  88.                             'id' => 'id'
  89.                         ]+$others_route_parameters,
  90.                         'label' => $this->translator->trans('datatable.actions.edit'),
  91.                         'icon' => 'fa fa-edit',
  92.                         'attributes' => [
  93.                             'rel' => 'tooltip',
  94.                             'title' => $this->translator->trans('datatable.actions.edit'),
  95.                             'class' => 'd-block',
  96.                             'role' => 'button'
  97.                         ],
  98.                         'render_if' => function($row) {
  99.                             return (
  100.                                 $this->authorizationChecker->isGranted('ROLE_USER')
  101.                             );
  102.                         },
  103.                     ],
  104.                     [
  105.                         'route' => 'app_absence_counter_enable',
  106.                         'route_parameters' => [
  107.                             'id' => 'id'
  108.                         ]+$others_route_parameters,
  109.                         'label' =>$this->translator->trans('datatable.actions.enable'),
  110.                         'icon' => 'fa fa-check',
  111.                         'attributes' => [
  112.                             'rel'   => 'tooltip',
  113.                             'class' => 'd-block',
  114.                             'role'  => 'button',
  115.                             'title' => $this->translator->trans('datatable.actions.enable'),
  116.                         ],
  117.                         'render_if' => function($row) {
  118.                             return (
  119.                                 $this->authorizationChecker->isGranted('ROLE_USER') and trim(strip_tags($row['enabled'])) ==  $this->translator->trans('datatable.disabled_label')
  120.                             );
  121.                         },
  122.                     ],
  123.                     [
  124.                         'route' => 'app_absence_counter_disable',
  125.                         'route_parameters' => [
  126.                             'id' => 'id'
  127.                         ]+$others_route_parameters,
  128.                         'label' =>$this->translator->trans('datatable.actions.disable'),
  129.                         'icon' => 'fa fa-ban',
  130.                         'attributes' => [
  131.                             'rel'   => 'tooltip',
  132.                             'class' => 'd-block',
  133.                             'role'  => 'button',
  134.                             'title' => $this->translator->trans('datatable.actions.disable'),
  135.                         ],
  136.                         'render_if' => function($row) {
  137.                             return (
  138.                                 $this->authorizationChecker->isGranted('ROLE_USER') and trim(strip_tags($row['enabled'])) ==  $this->translator->trans('datatable.enabled_label')
  139.                             );
  140.                         },
  141.                     ],
  142.                 ]
  143.             ])
  144.         ;
  145.     }
  146.     /**
  147.     * {@inheritdoc}
  148.     */
  149.     public function getEntity()
  150.     {
  151.     return 'App\Entity\AbsenceCounter';
  152.     }
  153.     /**
  154.     * {@inheritdoc}
  155.     */
  156.     public function getName()
  157.     {
  158.     return 'absence_counter';
  159.     }
  160. }