From 176e373d6c7ce6e78ebf7dea58b9a04a96faafa0 Mon Sep 17 00:00:00 2001 From: Molkobain Date: Tue, 7 Mar 2023 22:03:20 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B05530=20-=20Fix=20list=20of=20impacted=20?= =?UTF-8?q?elements=20(Impact=20Analysis)=20not=20display=20correctly=20du?= =?UTF-8?q?e=20to=20mixup=20in=20async=20JS=20files=20loading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/dataTables.settings.js | 4 +- .../backoffice/ajaxpage/layout.html.twig | 134 ++++++++++++------ .../pages/backoffice/webpage/layout.html.twig | 32 ++++- 3 files changed, 116 insertions(+), 54 deletions(-) diff --git a/js/dataTables.settings.js b/js/dataTables.settings.js index 52754a972..d2e7f5253 100644 --- a/js/dataTables.settings.js +++ b/js/dataTables.settings.js @@ -89,11 +89,11 @@ $(function () { aOptions = $.extend(aOptions, JSON.parse(data)); if (aOptions.js_files) { $.each(aOptions.js_files, function (i, item) { - if ($.inArray(item, aListJsFiles) === -1) + if ($.inArray(item, aLoadedJsFilesRegister) === -1) { sFileUrl = CombodoGlobalToolbox.AddParameterToUrl(item, aOptions.js_files_param, aOptions.js_files_value); $.ajax({url:sFileUrl, dataType: 'script', cache: true }); - aListJsFiles.push(item); + aLoadedJsFilesRegister.push(item); } }); } diff --git a/templates/pages/backoffice/ajaxpage/layout.html.twig b/templates/pages/backoffice/ajaxpage/layout.html.twig index ecd001a2a..74dbc7ba1 100644 --- a/templates/pages/backoffice/ajaxpage/layout.html.twig +++ b/templates/pages/backoffice/ajaxpage/layout.html.twig @@ -35,55 +35,99 @@ {% set sId = oLayout.GetId() | sanitize(constant('utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME')) %} {% block iboPageJsFiles %} {% endblock %} {% else %} diff --git a/templates/pages/backoffice/webpage/layout.html.twig b/templates/pages/backoffice/webpage/layout.html.twig index 457075bf1..2dd8483b7 100644 --- a/templates/pages/backoffice/webpage/layout.html.twig +++ b/templates/pages/backoffice/webpage/layout.html.twig @@ -64,14 +64,32 @@ {{ render_block(oBlock, {aPage: aPage}) }} {% endfor %} {% endblock %} -{% if aPage.aJsFiles is not empty %} - -{% endif %} + aLoadedJsFilesRegister.set("{{ sJsFile|raw }}", new Promise(function(resolve) { + aLoadedJsFilesResolveCallbacks.set("{{ sJsFile|raw }}", resolve); + // Resolve promise right away as these files are loaded immediately before any inline JS is executed + aLoadedJsFilesResolveCallbacks.get("{{ sJsFile|raw }}")(); + })); + {% endfor %} + + {% block iboPageJsFiles %} {% for sJsFile in aPage.aJsFiles %}