57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\v\bs3\vc;
 | 
						|
 | 
						|
use nur\A;
 | 
						|
use nur\b\params\Tparametrable;
 | 
						|
use nur\data\types\Metadata;
 | 
						|
use nur\v\js;
 | 
						|
 | 
						|
class CDatatable extends CTable {
 | 
						|
  use Tparametrable;
 | 
						|
 | 
						|
  const CSS = [
 | 
						|
    "nur-v-bs3/datatables/datatables.css",
 | 
						|
    "nur-v-bs3/datatables.css",
 | 
						|
  ];
 | 
						|
  const JS = "nur-v-bs3/datatables/datatables.js";
 | 
						|
 | 
						|
  const PARAMETRABLE_PARAMS_SCHEMA = [
 | 
						|
    "dtclass" => ["string", "datatable", "classe des tables mises en forme par Datatable"],
 | 
						|
    "dtconfig" => ["?array", ["order" => []], "configuration de l'objet"],
 | 
						|
    "dtauto" => ["?bool", "configurer la table pour que sa taille soit automatique"],
 | 
						|
  ];
 | 
						|
 | 
						|
  protected $ppDtclass;
 | 
						|
 | 
						|
  protected $ppDtconfig;
 | 
						|
 | 
						|
  protected $ppDtauto;
 | 
						|
 | 
						|
  protected function afterSetParametrableParams(array $modifiedKeys, ?Metadata $md=null): void {
 | 
						|
    parent::afterSetParametrableParams($modifiedKeys, $md);
 | 
						|
    if (self::was_parametrable_param_modified($modifiedKeys, "dtauto")) {
 | 
						|
      A::merge($this->ppDtconfig, [
 | 
						|
        "dom" => "<'row'<'col-sm-12 dt-autodiv'lfi>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 dt-autodiv'p>>",
 | 
						|
        "bAutoWidth" => false,
 | 
						|
      ]);
 | 
						|
      A::append($this->ppTableClass, "table-auto");
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  protected function getTableClass(): array {
 | 
						|
    return [$this->ppTableClass, $this->ppDtclass];
 | 
						|
  }
 | 
						|
 | 
						|
  const HAVE_JQUERY = true;
 | 
						|
 | 
						|
  function printJquery(): void {
 | 
						|
    ?>
 | 
						|
<script type="text/javascript">
 | 
						|
jQuery.noConflict()(function($) {
 | 
						|
  $(<?=js::qclass($this->ppDtclass)?>).DataTable(<?=js::qo($this->ppDtconfig)?>);
 | 
						|
});
 | 
						|
</script>
 | 
						|
<?php
 | 
						|
  }
 | 
						|
}
 |