nur-sery/nur_src/v/bs3/vc/CDatatable.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
}
}