diff --git a/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php b/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php index 154b85de5..f40e1367a 100644 --- a/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php +++ b/sources/application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php @@ -799,7 +799,7 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory return $aOptions; } - public static function MakeForStaticData(string $sTitle, array $aColumns, array $aData, ?string $sId = null, array $aExtraParams = [], string $sFilter = "") + public static function MakeForStaticData(string $sTitle, array $aColumns, array $aData, ?string $sId = null, array $aExtraParams = [], string $sFilter = "", array $aOptions = []) { $oBlock = new UIContentBlock(); $oTitle = TitleUIBlockFactory::MakeNeutral($sTitle, 3); @@ -808,6 +808,7 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory $oTable->SetColumns($aColumns); $oTable->SetData($aData); $oTable->SetFilter($sFilter); + $oTable->SetOptions($aOptions); $oBlock->AddSubBlock($oTable); diff --git a/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php b/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php index f4ab52672..905a18b7e 100644 --- a/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php +++ b/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php @@ -58,6 +58,10 @@ class StaticTable extends UIContentBlock private $aExtraParams; /*@var string $sUrlForRefresh*/ private $sFilter; + /** @var array $aOptions + * List of specific options for display datatable + */ + private $aOptions; public function __construct(string $sId = null, array $aContainerCSSClasses = [], array $aExtraParams = []) { @@ -65,6 +69,7 @@ class StaticTable extends UIContentBlock $this->aColumns = []; $this->aData = []; $this->aExtraParams = $aExtraParams; + $this->aOptions = []; } /** @@ -122,4 +127,34 @@ class StaticTable extends UIContentBlock $('#".$this->sId."').dataTable().fnAddData(data); });"; } + + /** + * @return mixed + */ + public function GetOption(string $sOption) + { + if (isset($this->aOptions[$sOption])) { + return $this->aOptions[$sOption]; + } + return null; + } + + /** + * @return array + */ + public function GetOptions(): array + { + return $this->aOptions; + } + + /** + * @param array $aOptions + * + * @return $this + */ + public function SetOptions($aOptions) + { + $this->aOptions = $aOptions; + return $this; + } } \ No newline at end of file diff --git a/templates/base/components/datatable/static/layout.ready.js.twig b/templates/base/components/datatable/static/layout.ready.js.twig index a2b12b012..883754b3a 100644 --- a/templates/base/components/datatable/static/layout.ready.js.twig +++ b/templates/base/components/datatable/static/layout.ready.js.twig @@ -1,10 +1,10 @@ {# @copyright Copyright (C) 2010-2020 Combodo SARL #} {# @license http://opensource.org/licenses/AGPL-3.0 #} -{% if oUIBlock.GetOptions() is not empty %} -{% set iPageSize = oUIBlock.GetOptions()["iPageSize"] %} +{% if oUIBlock.GetOption("iPageSize") is not empty %} + {% set iPageSize = oUIBlock.GetOption("iPageSize") %} {% else %} -{% set iPageSize = 10 %} + {% set iPageSize = 10 %} {% endif %} $('#{{ oUIBlock.GetId() }}').DataTable({ @@ -34,6 +34,9 @@ $('#{{ oUIBlock.GetId() }}').DataTable({ autoWidth: false, rowId: "id", filter: false, + {% if oUIBlock.GetOption("pageLength") is not empty %} + pageLength: {{ oUIBlock.GetOptions()["pageLength"] }}, + {% endif %} {% if oUIBlock.GetData()|length <= iPageSize %} paging: false, {% endif %}