diff --git a/README.md b/README.md index c87048c9..46f460b8 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ 2. Displaying Selection Screens & Tables [(SCN - 23.02.2023)](https://blogs.sap.com/2023/02/22/abap2ui5-output-of-lists-and-tables-toolbar-and-editable-2-3/)
3. Popups, F4-Help, Messages & Controller Logic [(SCN - 30.03.2023)](https://blogs.sap.com/2023/03/30/abap2ui5-3-4-flow-logic-pop-ups-f4-help/)
4. Advanced Functionality & Demonstrations [(SCN - 02.04.2023)](https://blogs.sap.com/2023/04/02/abap2ui5-4-5-additional-features-demos/)
-5. Extensions with XML Views, HTML, JS & CC [(SCN - 12.04.2023)](https://blogs.sap.com/2023/04/12/abap2ui5-5-6-extensions-with-xml-views-html-js-custom-controls/)
+5. Creating UIs with XML Views, HTML, CSS & JavaScript [(SCN - 12.04.2023)](https://blogs.sap.com/2023/04/12/abap2ui5-5-6-extensions-with-xml-views-html-js-custom-controls/)
6. Installation, Configuration & Debugging [(SCN - 14.04.2023)](https://blogs.sap.com/2023/04/14/abap2ui5-6-7-installation-configuration-debugging/)
7. Technical Background: Under the Hood of abap2UI5 [(SCN - 26.04.2023)](https://blogs.sap.com/2023/04/26/abap2ui5-7-7-technical-background-under-the-hood-of-abap2ui5/)
8. Repository Organization: Working with abapGit, abaplint & open-abap [(SCN - 21.08.2023)](https://blogs.sap.com/2023/08/21/abap2ui5-a1-repository-setup-with-abapgit-abaplint-open-abap/)
diff --git a/src/01/01/z2ui5_cl_fw_http_handler.clas.abap b/src/01/01/z2ui5_cl_fw_http_handler.clas.abap index d70231f2..cee73a26 100644 --- a/src/01/01/z2ui5_cl_fw_http_handler.clas.abap +++ b/src/01/01/z2ui5_cl_fw_http_handler.clas.abap @@ -437,6 +437,7 @@ CLASS Z2UI5_CL_FW_HTTP_HANDLER IMPLEMENTATION. DATA(lt_config) = t_config. IF lt_config IS INITIAL. lt_config = VALUE #( +* ( n = `src` v = `https://sdk.openui5.org/nightly/2/resources/sap-ui-core.js` ) ( n = `src` v = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js` ) ( n = `data-sap-ui-theme` v = `sap_horizon` ) ( n = `data-sap-ui-async` v = `true` ) @@ -489,7 +490,7 @@ CLASS Z2UI5_CL_FW_HTTP_HANDLER IMPLEMENTATION. r_result = r_result && `` && z2ui5_cl_fw_cc_debugging_tools=>get_js( ) && ` sap.ui.require(["z2ui5/DebuggingTools","z2ui5/Controller"], (DebuggingTools) => { sap.z2ui5.DebuggingTools = new DebuggingTools(); ` && |\n| && - ` sap.z2ui5.DebuggingTools.activateLogging(` && z2ui5_cl_util_func=>boolean_abap_2_json( check_debugging ) && ` );` && |\n| && +* ` sap.z2ui5.DebuggingTools.activateLogging(` && z2ui5_cl_util_func=>boolean_abap_2_json( check_debugging ) && ` );` && |\n| && ` });`. ENDIF. r_result = r_result && ` ` && |\n| && diff --git a/src/01/03/z2ui5_cl_fw_cc_debugging_tools.clas.abap b/src/01/03/z2ui5_cl_fw_cc_debugging_tools.clas.abap index 713ad33c..0d5aa277 100644 --- a/src/01/03/z2ui5_cl_fw_cc_debugging_tools.clas.abap +++ b/src/01/03/z2ui5_cl_fw_cc_debugging_tools.clas.abap @@ -22,64 +22,32 @@ CLASS Z2UI5_CL_FW_CC_DEBUGGING_TOOLS IMPLEMENTATION. result = `` && |\n| && `sap.ui.define( "z2ui5/DebuggingTools" ,[` && |\n| && - ` "sap/ui/core/Control",` && |\n| && - ` "z2ui5/Controller",` && |\n| && - ` "sap/ui/core/Fragment",` && |\n| && - ` "sap/ui/model/json/JSONModel"` && |\n| && - `], (Control, Controller, Fragment, JSONModel) => {` && |\n| && - ` "use strict";` && |\n| && - |\n| && - ` return Control.extend("z2ui5.DebuggingTools", {` && |\n| && - ` metadata: {` && |\n| && - ` properties: {` && |\n| && - ` checkLoggingActive: {` && |\n| && - ` type: "boolean",` && |\n| && - ` defaultValue: ""` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - ` events: {` && |\n| && - ` "finished": {` && |\n| && - ` allowPreventDefault: true,` && |\n| && - ` parameters: {},` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - |\n| && - ` async show() {` && |\n| && - |\n| && - ` var oFragmentController = {` && |\n| && - ` onItemSelect:function(oEvent){` && |\n| && - ` let selItem = oEvent.getSource().getSelectedItem();` && |\n| && - ` ` && |\n| && - ` if (selItem == 'MODEL'){` && |\n| && - ` oEvent.getSource().getModel().oData.value = JSON.stringify( sap.z2ui5.oResponse.OVIEWMODEL, null, 3);` && |\n| && - ` oEvent.getSource().getModel().oData.type = 'json';` && |\n| && - ` oEvent.getSource().getModel().refresh();` && |\n| && - ` return;` && |\n| && - ` } ` && |\n| && - ` if (selItem == 'VIEW'){` && |\n| && - ` var XML = this.prettifyXml( sap.z2ui5.oResponse.PARAMS.S_VIEW.XML );` && |\n| && - ` oEvent.getSource().getModel().oData.value = XML;` && |\n| && - ` oEvent.getSource().getModel().oData.type = 'xml';` && |\n| && - ` oEvent.getSource().getModel().refresh();` && |\n| && - ` return;` && |\n| && - ` } ` && |\n| && - ` if (selItem == 'PLAIN'){` && |\n| && - ` oEvent.getSource().getModel().oData.value = JSON.stringify( sap.z2ui5.oResponse, null, 3 );` && |\n| && - ` oEvent.getSource().getModel().oData.type = 'json';` && |\n| && - ` oEvent.getSource().getModel().refresh();` && |\n| && - ` return;` && |\n| && - ` } ` && |\n| && - ` if (selItem == 'REQUEST'){` && |\n| && - ` oEvent.getSource().getModel().oData.value = JSON.stringify( sap.z2ui5.oBody , null, 3 );` && |\n| && - ` oEvent.getSource().getModel().oData.type = 'json';` && |\n| && - ` oEvent.getSource().getModel().refresh();` && |\n| && - ` return;` && |\n| && - ` } ` && |\n| && - ` },` && |\n| && - |\n| && - ` prettifyXml (sourceXml) ` && |\n| && - ` {` && |\n| && + ` "sap/ui/core/Control",` && |\n| && + ` "sap/ui/core/Fragment",` && |\n| && + ` "sap/ui/model/json/JSONModel"` && |\n| && + `], (Control, Fragment, JSONModel) => {` && |\n| && + ` "use strict";` && |\n| && + |\n| && + ` return Control.extend("project1.control.DebuggingTools", {` && |\n| && + ` metadata: {` && |\n| && + ` properties: {` && |\n| && + ` checkLoggingActive: {` && |\n| && + ` type: "boolean",` && |\n| && + ` defaultValue: ""` && |\n| && + ` }` && |\n| && + ` },` && |\n| && + ` events: {` && |\n| && + ` "finished": {` && |\n| && + ` allowPreventDefault: true,` && |\n| && + ` parameters: {},` && |\n| && + ` }` && |\n| && + ` }` && |\n| && + ` },` && |\n| && + |\n| && + ` async show() {` && |\n| && + |\n| && + ` var oFragmentController = {` && |\n| && + ` prettifyXml: function (sourceXml) { ` && |\n| && ` var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');` && |\n| && ` // describes how we want to modify the XML - indent everything` && |\n| && ` var sParse = unescape( '%3Cxsl%3Astylesheet%20xmlns%3Axsl%3D%22http%3A//www.w3.org/1999/XSL/Transform%22%3E%0A%20%20%3Cxsl%3Astrip-space%20elements%3D%22*%22/%3E%0A%20%20%3Cxsl%3Atemplate%20match%3D%22para%5Bconten` && @@ -94,130 +62,165 @@ CLASS Z2UI5_CL_FW_CC_DEBUGGING_TOOLS IMPLEMENTATION. ` var resultXml = new XMLSerializer().serializeToString(resultDoc);` && |\n| && ` return resultXml;` && |\n| && ` },` && |\n| && - |\n| && - ` onClose: function(){` && |\n| && - ` this.oDialog.close();` && |\n| && - |\n| && - ` }` && |\n| && - ` };` && |\n| && - |\n| && -* ` let XMLDef = ` && escape( val = ```` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* ` ` && |\n| && -* `
` && |\n| && -* `
` && |\n| && -* ` `` ` && - `;` && |\n| && -* format = cl_abap_format=>e_xml_text ) && `;` && |\n| && - |\n| && - ` if ( this.oFragment ){` && |\n| && - ` this.oFragment.close();` && |\n| && - ` this.oFragment.destroy();` && |\n| && - ` }` && |\n| && - ` this.oFragment = await Fragment.load({` && |\n| && - ` definition : XMLDef,` && |\n| && - ` // name: "project1.control.DevTool",` && |\n| && - ` controller: oFragmentController,` && |\n| && - ` });` && |\n| && - |\n| && - ` oFragmentController.oDialog = this.oFragment ;` && |\n| && - ` ` && |\n| && - ` let value = JSON.stringify( sap.z2ui5.oResponse, null, 3 );` && |\n| && - ` let oData = { type : 'json' , value : value };` && |\n| && - ` var oModel = new JSONModel(oData);` && |\n| && - ` this.oFragment.setModel(oModel);` && |\n| && - ` this.oFragment.open();` && |\n| && - |\n| && - ` },` && |\n| && - |\n| && - ` activateLogging(checkActive) {` && |\n| && - ` document.addEventListener ("keydown", function (zEvent) {` && |\n| && - ` if (zEvent.ctrlKey ) { if ( zEvent.key === "a") { // case sensitive` && |\n| && - ` sap.z2ui5.DebuggingTools.show();` && |\n| && - ` } }` && |\n| && - ` } );` && |\n| && - ` },` && |\n| && -* ` if (!checkActive) {` && |\n| && -* ` return;` && |\n| && -* ` }` && |\n| && -* ` ` && |\n| && -* ` sap.z2ui5.onBeforeRoundtrip.push(() => {` && |\n| && -* ` console.log('Request Object:');` && |\n| && -* ` console.log(sap.z2ui5.oBody);` && |\n| && -* ` });` && |\n| && -* |\n| && -* ` sap.z2ui5.onAfterRoundtrip.push(() => {` && |\n| && -* |\n| && -* ` console.log('Response Object:', sap.z2ui5.oResponse);` && |\n| && -* |\n| && -* ` // Destructure for easier access` && |\n| && -* ` const { S_VIEW, S_POPUP, S_POPOVER, S_VIEW_NEST, S_VIEW_NEST2 } = sap.z2ui5.oResponse.PARAMS;` && |\n| && -* |\n| && -* ` // Helper function to log XML` && |\n| && -* ` const logXML = (label, xml) => {` && |\n| && -* ` if (xml !== '') {` && |\n| && -* ` console.log(``${label}:``, xml);` && |\n| && -* ` }` && |\n| && -* ` };` && |\n| && -* |\n| && -* ` // Log different XML responses` && |\n| && -* ` logXML('UI5-XML-View', S_VIEW.XML);` && |\n| && -* ` logXML('UI5-XML-Popup', S_POPUP.XML);` && |\n| && -* ` logXML('UI5-XML-Popover', S_POPOVER.XML);` && |\n| && -* ` logXML('UI5-XML-Nest', S_VIEW_NEST.XML);` && |\n| && -* ` logXML('UI5-XML-Nest2', S_VIEW_NEST2.XML);` && |\n| && -* |\n| && -* ` });` && |\n| && -* |\n| && -* ` },` && |\n| && -* |\n| && -* ` async init() {` && |\n| && -* |\n| && -* |\n| && -* ` },` && |\n| && -* |\n| && -* ` exit() {` && |\n| && -* ` },` && |\n| && -* |\n| && -* ` onAfterRendering() {` && |\n| && -* ` },` && |\n| && - |\n| && - ` renderer(oRm, oControl) {` && |\n| && - ` }` && |\n| && + ` onItemSelect: function (oEvent) {` && |\n| && + ` let selItem = oEvent.getSource().getSelectedItem();` && |\n| && + |\n| && + ` if (selItem == 'MODEL') {` && |\n| && + ` debugger; this.displayEditor( oEvent, JSON.stringify( sap?.z2ui5?.oView?.getModel()?.getData(), null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'VIEW') {` && |\n| && + ` debugger; this.displayEditor( oEvent, this.prettifyXml( sap?.z2ui5?.oView?.mProperties?.viewContent ) , 'xml' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'PLAIN') {` && |\n| && + ` this.displayEditor( oEvent, JSON.stringify(sap.z2ui5.oResponse, null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'REQUEST') {` && |\n| && + ` this.displayEditor( oEvent, JSON.stringify(sap.z2ui5.oBody, null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'POPUP') {` && |\n| && + ` this.displayEditor( oEvent, this.prettifyXml( sap?.z2ui5?.oResponse?.PARAMS?.S_POPUP?.XML ) , 'xml' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'POPUP_MODEL') {` && |\n| && + ` this.displayEditor( oEvent, JSON.stringify( sap.z2ui5.oViewPopup.getModel().getData(), null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'POPOVER') {` && |\n| && + ` this.displayEditor( oEvent, sap?.z2ui5?.oResponse?.PARAMS?.S_POPOVER?.XML , 'xml' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'POPOVER_MODEL') {` && |\n| && + ` this.displayEditor( oEvent, JSON.stringify( sap?.z2ui5?.oViewPopover?.getModel( )?.getData( ) , null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'NEST1') {` && |\n| && + ` this.displayEditor( oEvent, sap?.z2ui5?.oViewNest?.mProperties?.viewContent , 'xml' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'NEST1_MODEL') {` && |\n| && + ` this.displayEditor( oEvent, JSON.stringify( sap?.z2ui5?.oViewNest?.getModel( )?.getData( ) , null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'NEST2') {` && |\n| && + ` this.displayEditor( oEvent, sap?.z2ui5?.oViewNest2?.mProperties?.viewContent , 'xml' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + ` if (selItem == 'NEST2_MODEL') {` && |\n| && + ` this.displayEditor( oEvent, JSON.stringify( sap?.z2ui5?.oViewNest2?.getModel( )?.getData( ) , null, 3) , 'json' );` && |\n| && + ` return;` && |\n| && + ` }` && |\n| && + |\n| && + ` },` && |\n| && + |\n| && + ` displayEditor (oEvent, content, type) {` && |\n| && + ` oEvent.getSource().getModel().oData.value = content;` && |\n| && + ` oEvent.getSource().getModel().oData.type = type;` && |\n| && + ` oEvent.getSource().getModel().refresh();` && |\n| && + ` },` && |\n| && + |\n| && + ` ` && |\n| && + |\n| && + ` onClose: function () {` && |\n| && + ` this.oDialog.close();` && |\n| && + |\n| && + ` }` && |\n| && + ` };` && |\n| && + |\n| && +* ` let XMLDef = ``` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ` && |\n| && +* ` ``;` && |\n| && + ` let XMLDef = ``PGNvcmU6RnJhZ21lbnREZWZpbml0aW9uCiAgICAgICAgICAgIHhtbG5zPSJzYXAubSIKICAgICAgICAgICAgICAgIHhtbG5zOm12Yz0ic2FwLnVpLmNvcmUubXZjIgogICAgICAgICAgICAgICAgeG1sbnM6Y29yZT0ic2FwLnVpLmNvcmUiCiAgICAgICAgICAgICAgICB4bWxuczp` +&& +`0bnQ9InNhcC50bnQiCiAgICAgICAgICAgICAgICB4bWxuczplZGl0b3I9InNhcC51aS5jb2RlZWRpdG9yIj4KICAgICAgICAgICAgICAgICAgPERpYWxvZyB0aXRsZT0iYWJhcDJVSTUgLSBEZWJ1Z2dpbmcgVG9vbHMiIHN0cmV0Y2g9InRydWUiPgogICAgICAgICAgICAgICAgICA8SEJveD4KICAgICAgICAgICAgICAgIDx0bnQ` && +`6U2lkZU5hdmlnYXRpb24gaWQ9InNpZGVOYXZpZ2F0aW9uIiBzZWxlY3RlZEtleT0iUExBSU4iIGl0ZW1TZWxlY3Q9Im9uSXRlbVNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPHRudDpOYXZpZ2F0aW9uTGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRudDpOYXZpZ2F0aW9uTGlzdEl0ZW0gdGV4dD0iQ29tbXVuaWN` && +`hdGlvbiIgaWNvbj0ic2FwLWljb246Ly9lbXBsb3llZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG50Ok5hdmlnYXRpb25MaXN0SXRlbSB0ZXh0PSJQcmV2aW91cyBSZXF1ZXN0IiBpZD0iUkVRVUVTVCIga2V5PSJSRVFVRVNUIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRudDpOYXZpZ2F0aW9uTGl` && +`zdEl0ZW0gdGV4dD0iUmVzcG9uc2UiICAgICAgICAgICAgICAgIGlkPSJQTEFJTiIgICAgICAgICBrZXk9IlBMQUlOIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdG50Ok5hdmlnYXRpb25MaXN0SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRudDpOYXZpZ2F0aW9uTGlzdEl0ZW0gdGV4dD0iVmlldyIgaWNvbj0` && +`ic2FwLWljb246Ly9lbXBsb3llZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG50Ok5hdmlnYXRpb25MaXN0SXRlbSB0ZXh0PSJWaWV3IChYTUwpIiAgICAgICAgICAgaWQ9IlZJRVciICAgICAgICAgIGtleT0iVklFVyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRudDpOYXZpZ2F0aW9uTGlzdEl0ZW0` && +`gdGV4dD0iVmlldyBNb2RlbCAoSlNPTikiICAgIGlkPSJNT0RFTCIgICAgICAgICBrZXk9Ik1PREVMIiAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0bnQ6TmF2aWdhdGlvbkxpc3RJdGVtIHRleHQ9IlBvcHVwIChYTUwpIiAgICAgICAgICBpZD0iUE9QVVAiICAgICAgICAga2V5PSJQT1BVUCIgICAgICAgICAgZW5` && +`hYmxlZD0iey9hY3RpdmVQb3B1cH0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0bnQ6TmF2aWdhdGlvbkxpc3RJdGVtIHRleHQ9IlBvcHVwIE1vZGVsIChKU09OKSIgICBpZD0iUE9QVVBfTU9ERUwiICAga2V5PSJQT1BVUF9NT0RFTCIgICAgZW5hYmxlZD0iey9hY3RpdmVQb3B1cH0iLz4KICAgICAgICAgICAgICA` && +`gICAgICAgICAgICAgIDx0bnQ6TmF2aWdhdGlvbkxpc3RJdGVtIHRleHQ9IlBvcG92ZXIgKFhNTCkiICAgICAgICBpZD0iUE9QT1ZFUiIgICAgICAga2V5PSJQT1BPVkVSIiAgICAgICAgZW5hYmxlZD0iey9hY3RpdmVQb3BvdmVyfSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRudDpOYXZpZ2F0aW9uTGlzdEl0ZW0` && +`gdGV4dD0iUG9wb3ZlciBNb2RlbCAoSlNPTikiIGlkPSJQT1BPVkVSX01PREVMIiBrZXk9IlBPUE9WRVJfTU9ERUwiICBlbmFibGVkPSJ7L2FjdGl2ZVBvcG92ZXJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG50Ok5hdmlnYXRpb25MaXN0SXRlbSB0ZXh0PSJOZXN0MSAoWE1MKSIgICAgICAgICAgaWQ9Ik5FU1Q` && +`xIiAgICAgICAgIGtleT0iTkVTVDEiICAgICAgICAgIGVuYWJsZWQ9InsvYWN0aXZlTmVzdDF9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG50Ok5hdmlnYXRpb25MaXN0SXRlbSB0ZXh0PSJOZXN0MSBNb2RlbCAoSlNPTikiICAgaWQ9Ik5FU1QxX01PREVMIiAgIGtleT0iTkVTVDFfTU9ERUwiICAgIGVuYWJsZWQ` && +`9InsvYWN0aXZlTmVzdDF9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG50Ok5hdmlnYXRpb25MaXN0SXRlbSB0ZXh0PSJOZXN0MiAoWE1MKSIgICAgICAgICAgaWQ9Ik5FU1QyIiAgICAgICAgIGtleT0iTkVTVDIiICAgICAgICAgIGVuYWJsZWQ9InsvYWN0aXZlTmVzdDJ9Ii8+CiAgICAgICAgICAgICAgICAgICA` && +`gICAgICAgICA8dG50Ok5hdmlnYXRpb25MaXN0SXRlbSB0ZXh0PSJOZXN0MiBNb2RlbCAoSlNPTikiICAgaWQ9Ik5FU1QyX01PREVMIiAgIGtleT0iTkVTVDJfTU9ERUwiICAgIGVuYWJsZWQ9InsvYWN0aXZlTmVzdDJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdG50Ok5hdmlnYXRpb25MaXN0SXRlbT4KICAgICAgICA` && +`gICAgICAgICAgICA8L3RudDpOYXZpZ2F0aW9uTGlzdD4KICAgICAgICAgICAgICAgIDwvdG50OlNpZGVOYXZpZ2F0aW9uPgogICAgICAgICAgICAgICAgICAgIDxlZGl0b3I6Q29kZUVkaXRvcgogICAgICAgICAgICAgICAgICAgIHR5cGU9InsvdHlwZX0iCiAgICAgICAgICAgICAgICAgICAgdmFsdWU9J3svdmFsdWV9JwogICA` && +`gICAgICAgICAgICAgaGVpZ2h0PSI4MDBweCIgd2lkdGg9IjEyMDBweCIvPiA8L0hCb3g+CiAgICAgICAgICAgICAgIDxmb290ZXI+PFRvb2xiYXI+PFRvb2xiYXJTcGFjZXIvPjxCdXR0b24gdGV4dD0iQ2xvc2UiIHByZXNzPSJvbkNsb3NlIi8+PC9Ub29sYmFyPjwvZm9vdGVyPgogICAgICAgICAgICAgICA8L0RpYWxvZz4KICA` && +`gICAgICAgICAgPC9jb3JlOkZyYWdtZW50RGVmaW5pdGlvbj4=``;` && |\n| && + ` XMLDef = atob( XMLDef );` && |\n| && + ` if (this.oFragment) {` && |\n| && + ` this.oFragment.close();` && |\n| && + ` this.oFragment.destroy();` && |\n| && + ` }` && |\n| && + ` this.oFragment = await Fragment.load({` && |\n| && + ` definition: XMLDef,` && |\n| && + ` controller: oFragmentController,` && |\n| && + ` });` && |\n| && + |\n| && + ` oFragmentController.oDialog = this.oFragment;` && |\n| && + |\n| && + ` let value = JSON.stringify(sap.z2ui5.oResponse, null, 3);` && |\n| && + ` debugger; let oData = { ` && |\n| && + ` type: 'json', ` && |\n| && + ` value: value,` && |\n| && + ` activeNest1 : sap?.z2ui5?.oViewNest?.mProperties?.viewContent !== undefined,` && |\n| && + ` activeNest2 : sap?.z2ui5?.oViewNest2?.mProperties?.viewContent !== undefined,` && |\n| && + ` activePopup : sap?.z2ui5?.oResponse?.PARAMS?.S_POPUP?.XML !== undefined,` && |\n| && + ` activePopover : sap?.z2ui5?.oResponse?.PARAMS?.S_POPOVER?.XML !== undefined,` && |\n| && + ` };` && |\n| && + ` var oModel = new JSONModel(oData);` && |\n| && + ` this.oFragment.setModel(oModel);` && |\n| && + ` this.oFragment.open();` && |\n| && + |\n| && + ` },` && |\n| && + |\n| && + ` async init() {` && |\n| && + |\n| && + ` document.addEventListener("keydown", function (zEvent) {` && |\n| && + ` if (zEvent.ctrlKey ) { if ( zEvent.key === "a") { // case sensitive` && |\n| && + ` sap.z2ui5.DebuggingTools.show();` && |\n| && + ` } }` && |\n| && + ` });` && |\n| && + |\n| && + ` },` && |\n| && + |\n| && + ` renderer(oRm, oControl) {` && |\n| && + ` }, ` && |\n| && ` });` && |\n| && `});`.