diff --git a/application/ui.linkswidget.class.inc.php b/application/ui.linkswidget.class.inc.php index 078db1ecb..b7d86c199 100644 --- a/application/ui.linkswidget.class.inc.php +++ b/application/ui.linkswidget.class.inc.php @@ -351,15 +351,7 @@ JS */ protected function GetFormTableBlock($aConfig, $aData) { - $oTable = DataTableFactory::MakeForForm("{$this->m_sAttCode}{$this->m_sNameSuffix}", $aConfig); - - foreach ($aData as $iRowId => $aRow) - { - $oRow = new FormTableRow("{$this->m_sAttCode}{$this->m_sNameSuffix}", $aConfig, $aRow, $iRowId); - $oTable->AddRow($oRow); - } - - return $oTable; + return DataTableFactory::MakeForForm("{$this->m_sAttCode}{$this->m_sNameSuffix}", $aConfig, $aData); } diff --git a/pages/run_query.php b/pages/run_query.php index be97399d6..7ae99d893 100644 --- a/pages/run_query.php +++ b/pages/run_query.php @@ -98,8 +98,8 @@ function ShowExamples($oP, $sExpression) foreach ($aDisplayData as $sTopic => $aQueriesDisplayData) { $bShowOpened = $bUsingExample; - $sTopicHtml = $oP->GetTable($aDisplayConfig, $aQueriesDisplayData); - $oTopicSection = new CollapsibleSection($sTopic, [new Html($sTopicHtml)]); + $oTopic = $oP->GetTableBlock($aDisplayConfig, $aQueriesDisplayData); + $oTopicSection = new CollapsibleSection($sTopic, [$oTopic]); $oTopicSection->SetOpenedByDefault($bShowOpened); $oP->AddUiBlock($oTopicSection); } diff --git a/sources/application/UI/Base/Component/DataTable/DataTableFactory.php b/sources/application/UI/Base/Component/DataTable/DataTableFactory.php index 343af77a7..42ff7f89d 100644 --- a/sources/application/UI/Base/Component/DataTable/DataTableFactory.php +++ b/sources/application/UI/Base/Component/DataTable/DataTableFactory.php @@ -11,6 +11,7 @@ use appUserPreferences; use AttributeLinkedSet; use cmdbAbstractObject; use Combodo\iTop\Application\UI\Base\Component\DataTable\StaticTable\FormTable\FormTable; +use Combodo\iTop\Application\UI\Base\Component\DataTable\StaticTable\FormTableRow\FormTableRow; use Combodo\iTop\Application\UI\Base\Component\DataTable\StaticTable\StaticTable; use Combodo\iTop\Application\UI\Base\Component\Panel\PanelFactory; use Combodo\iTop\Application\UI\Base\Component\Title\TitleFactory; @@ -759,12 +760,17 @@ class DataTableFactory return $oBlock; } - public Static function MakeForForm(string $sRef, array $aColumns): FormTable + public static function MakeForForm(string $sRef, array $aColumns, array $aData = []): FormTable { $oTable = new FormTable("datatable_".$sRef); $oTable->SetRef($sRef); $oTable->SetColumns($aColumns); + foreach ($aData as $iRowId => $aRow) { + $oRow = new FormTableRow($sRef, $aColumns, $aRow, $iRowId); + $oTable->AddRow($oRow); + } + return $oTable; } diff --git a/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php b/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php index ebb8ec694..0509f29bd 100644 --- a/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php +++ b/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php @@ -21,7 +21,7 @@ class FormTable extends StaticTable // Overloaded constants public const BLOCK_CODE = 'ibo-formtable'; public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/datatable/static/formtable/layout'; - public const DEFAULT_JS_TEMPLATE_REL_PATH = 'base/components/datatable/static/formtable/layout'; + public const DEFAULT_JS_ON_READY_TEMPLATE_REL_PATH = 'base/components/datatable/static/formtable/layout'; /** @var string */ private $sRef; diff --git a/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php b/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php index 71880e953..fe1b2c4ec 100644 --- a/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php +++ b/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php @@ -18,7 +18,7 @@ class StaticTable extends UIContentBlock // Overloaded constants public const BLOCK_CODE = 'ibo-datatable'; public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/datatable/static/layout'; - public const DEFAULT_JS_TEMPLATE_REL_PATH = 'base/components/datatable/static/layout'; + public const DEFAULT_JS_ON_READY_TEMPLATE_REL_PATH = 'base/components/datatable/static/layout'; public const DEFAULT_JS_FILES_REL_PATH = [ 'lib/datatables/js/jquery.dataTables.min.js', 'lib/datatables/js/dataTables.bootstrap.min.js', diff --git a/sources/application/WebPage/WebPage.php b/sources/application/WebPage/WebPage.php index e0fbc20ae..cd32edf11 100644 --- a/sources/application/WebPage/WebPage.php +++ b/sources/application/WebPage/WebPage.php @@ -18,6 +18,7 @@ */ use Combodo\iTop\Application\TwigBase\Twig\TwigHelper; +use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableFactory; use Combodo\iTop\Application\UI\Base\Component\Html\Html; use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenu; use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenuFactory; @@ -233,7 +234,12 @@ class WebPage implements Page */ public function table($aConfig, $aData, $aParams = array()) { - $this->add($this->GetTable($aConfig, $aData, $aParams)); + $this->AddUiBlock($this->GetTableBlock($aConfig, $aData)); + } + + public function GetTableBlock($aColumns, $aData) + { + return DataTableFactory::MakeForForm(uniqid('form_', true), $aColumns, $aData); } /** diff --git a/templates/base/components/datatable/static/formtable/layout.js.twig b/templates/base/components/datatable/static/formtable/layout.ready.js.twig similarity index 100% rename from templates/base/components/datatable/static/formtable/layout.js.twig rename to templates/base/components/datatable/static/formtable/layout.ready.js.twig diff --git a/templates/base/components/datatable/static/layout.js.twig b/templates/base/components/datatable/static/layout.ready.js.twig similarity index 100% rename from templates/base/components/datatable/static/layout.js.twig rename to templates/base/components/datatable/static/layout.ready.js.twig