/**
  * Datatable render
  * @param string $route
  */
 public function bootDatatable($route = '/datatable/{token}')
 {
     // gestion de la navifgation Ajax
     Route::get($route, function ($token) {
         try {
             $request = request();
             // chargement de l'objet
             $table = FrenchFrogs\Table\Table\Table::load($token);
             // configuration de la navigation
             $table->setItemsPerPage(Input::get('length'));
             $table->setPageFromItemsOffset(Input::get('start'));
             $table->setRenderer(new FrenchFrogs\Table\Renderer\Remote());
             // gestion des reccherches
             foreach (request()->get('columns') as $c) {
                 if ($c['searchable'] == "true" && $c['search']['value'] != '') {
                     $table->getColumn($c['name'])->getStrainer()->call($table, $c['search']['value']);
                 }
             }
             // gestion de la recherche globale
             $search = $request->get('search');
             if (!empty($search['value'])) {
                 $table->search($search['value']);
             }
             // gestion du tri
             $order = $request->get('order');
             if (!empty($order)) {
                 if ($table->isSourceQueryBuilder()) {
                     $table->getSource()->orders = [];
                 }
                 foreach ($order as $o) {
                     extract($o);
                     $table->getColumnByIndex($column)->order($dir);
                 }
             }
             // recuperation des données
             $data = [];
             foreach ($table->render() as $row) {
                 $data[] = array_values($row);
             }
             return response()->json(['data' => $data, 'draw' => Input::get('draw'), 'recordsFiltered' => $table->getItemsTotal(), 'recordsTotal' => $table->getItemsTotal()]);
         } catch (\Exception $e) {
             //Si on catch une erreur on renvoi une reponse json avec le code 500
             return response()->json(['error' => $e->getMessage()], 500);
         }
     })->name('datatable');
     /**
      * Gestion de l'export CSV
      */
     Route::get($route . '/export', function ($token) {
         $table = FrenchFrogs\Table\Table\Table::load($token);
         $table->setItemsPerPage(5000);
         $table->toCsv();
     })->name('datatable-export');
     /**
      * Gestion de l'edition en remote
      *
      */
     Route::post($route, function ($token) {
         $request = request();
         $table = FrenchFrogs\Table\Table\Table::load($token);
         return $table->getColumn($request->get('column'))->remoteProcess($request->get('id'), $request->get('value'));
     });
 }