From 503817e572dad38958c97bc178c33812a4c8d040 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 12 Jan 2021 16:17:33 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B02737=20-=20Migrate=20WebPage::table()=20?= =?UTF-8?q?to=20UIBlocks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/ui.linkswidget.class.inc.php | 10 +--------- pages/run_query.php | 4 ++-- .../UI/Base/Component/DataTable/DataTableFactory.php | 8 +++++++- .../DataTable/StaticTable/FormTable/FormTable.php | 2 +- .../Component/DataTable/StaticTable/StaticTable.php | 2 +- sources/application/WebPage/WebPage.php | 8 +++++++- .../formtable/{layout.js.twig => layout.ready.js.twig} | 0 .../static/{layout.js.twig => layout.ready.js.twig} | 0 8 files changed, 19 insertions(+), 15 deletions(-) rename templates/base/components/datatable/static/formtable/{layout.js.twig => layout.ready.js.twig} (100%) rename templates/base/components/datatable/static/{layout.js.twig => layout.ready.js.twig} (100%) 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