From ffc3b52533585aa9d1d26ee0bfc5733e8947b18d Mon Sep 17 00:00:00 2001 From: oblomov <102328295+oblomov-dev@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:09:43 +0200 Subject: [PATCH] update utility functions (#499) * update nav container and frontend method * update date functions * update * update client event handling * update constants * update * update utility functions * update --- src/00/z2ui5_cl_fw_app.clas.abap | 8 ++- src/z2ui5_cl_http_handler.clas.abap | 20 ++++-- src/z2ui5_cl_xml_view.clas.abap | 99 +++++++++++++++++++---------- 3 files changed, 87 insertions(+), 40 deletions(-) diff --git a/src/00/z2ui5_cl_fw_app.clas.abap b/src/00/z2ui5_cl_fw_app.clas.abap index 84fd355e..5eb352ef 100644 --- a/src/00/z2ui5_cl_fw_app.clas.abap +++ b/src/00/z2ui5_cl_fw_app.clas.abap @@ -158,11 +158,13 @@ CLASS Z2UI5_CL_FW_APP IMPLEMENTATION. href = `https://github.com/oblomov-dev/abap2UI5-demos` ). ENDIF. - form->content( `form` )->label( )->button( + data(cont) = form->content( `form` ). + cont->label( ). + cont->button( text = 'Continue...' press = client->_event( val = `DEMOS` check_view_destroy = abap_true ) - enabled = xsdbool( mv_check_demo = abap_true ) - )->button( visible = abap_false )->link( text = 'More on GitHub...' + enabled = xsdbool( mv_check_demo = abap_true ) )->get( ). + cont->button( visible = abap_false )->link( text = 'More on GitHub...' target = '_blank' href = 'https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md' ). diff --git a/src/z2ui5_cl_http_handler.clas.abap b/src/z2ui5_cl_http_handler.clas.abap index 3c0e81a5..f069af32 100644 --- a/src/z2ui5_cl_http_handler.clas.abap +++ b/src/z2ui5_cl_http_handler.clas.abap @@ -161,10 +161,11 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` setTimeout(() => {` && |\n| && ` if (sap.z2ui5.checkTimerActive) {` && |\n| && ` let method = sap.z2ui5.oResponse.PARAMS.S_TIMER.EVENT_FINISHED.split( '(' )[ 0 ];` && |\n| && - ` // let oEvent = JSON.parse( sap.z2ui5.oResponse.PARAMS.S_TIMER.EVENT_FINISHED.split( '(' )[ 1 ].split( ')' )[ 0 ].replaceAll( "'" , '"' ) );` && |\n| && - ` let oArgs = sap.z2ui5.oResponse.PARAMS.S_TIMER.EVENT_FINISHED.split( '(' )[ 1 ].split( ')' )[ 0 ].split( ',' );` && |\n| && - ` oArgs[ 0 ] = JSON.parse( oArgs[ 0 ].replaceAll( "'" , '"' ) );` && |\n| && - ` oArgs[ 1 ] = oArgs[1].trim().replaceAll( '"' , '' ); ` && |\n| && + ` let oArgs = [];` && |\n| && + ` oArgs.push( JSON.parse( (sap.z2ui5.oResponse.PARAMS.S_TIMER.EVENT_FINISHED.split( '(' )[ 1 ].split( ')' )[ 0 ].split( '}' )[ 0 ] + '}').replaceAll( "'" , '"' ) ) );` && |\n| && + ` let oArgsPara = sap.z2ui5.oResponse.PARAMS.S_TIMER.EVENT_FINISHED.split( '(' )[ 1 ].split( ')' )[ 0 ].split( '}' )[ 1 ].split( ',' ).slice(1);` && |\n| && + ` oArgsPara.forEach( ( item, index, arr ) => { arr[index] = item.replace( '"' , '' ); } );;` && |\n| && + ` oArgs = oArgs.concat( oArgsPara );` && |\n| && ` if (method == 'onEvent'){ sap.z2ui5.oController.onEvent(...oArgs); }else{ sap.z2ui5.oController.onEventFrontend(...oArgs); }` && |\n| && ` }` && |\n| && ` }, sap.z2ui5.oResponse.PARAMS.S_TIMER.INTERVAL_MS, oEvent);` && |\n| && @@ -412,7 +413,16 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` sap.z2ui5.oBody.APP_START = sap.z2ui5.APP_START;` && |\n| && ` sap.z2ui5.oController.Roundtrip();` && |\n| && ` sap.z2ui5.log = () => { console.log(sap.z2ui5.oResponse.OVIEWMODEL ); };` && |\n| && - ` });` && |\n| && + ` sap.z2ui5.oController.oUtil = {}; ` && |\n| && + ` sap.z2ui5.oController.oUtil.oDate = {}; ` && |\n| && + ` sap.z2ui5.oController.oUtil.oDate.createObject = (s) => { debugger; return new Date(s); }` && |\n| && + ` jQuery.sap.declare("z2ui5.Helper");` && |\n| && + `z2ui5.Helper = {};` && |\n| && + `z2ui5.Helper.DateCreateObject = (s => new Date(s));` && |\n| && + `z2ui5.Helper.DateAbapTimestampToDate = (sTimestamp => new sap.gantt.misc.Format.abapTimestampToDate(sTimestamp));` && |\n| && + `z2ui5.Helper.DateAbapDateToDateObject = (d => new Date(d.slice(0,4), (d[4]+d[5])-1, d[6]+d[7]));` && |\n| && + `z2ui5.Helper.DateAbapDateTimeToDateObject = ((d,t = '000000') => new Date(d.slice(0,4), (d[4]+d[5])-1, d[6]+d[7],t.slice(0,2),t.slice(2,4),t.slice(4,6)));` && |\n| && + ` });` && |\n| && `` && |\n| && ``. diff --git a/src/z2ui5_cl_xml_view.clas.abap b/src/z2ui5_cl_xml_view.clas.abap index 720c5353..5cd462e2 100644 --- a/src/z2ui5_cl_xml_view.clas.abap +++ b/src/z2ui5_cl_xml_view.clas.abap @@ -410,14 +410,20 @@ CLASS z2ui5_cl_xml_view DEFINITION METHODS get_parent RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + METHODS get + IMPORTING + name TYPE string OPTIONAL RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + METHODS get_child IMPORTING !index TYPE i DEFAULT 1 RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + + METHODS columns RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view . @@ -758,8 +764,8 @@ CLASS z2ui5_cl_xml_view DEFINITION METHODS image IMPORTING !src TYPE clike OPTIONAL - !class TYPE clike OPTIONAL - !height TYPE clike OPTIONAL + !class TYPE clike OPTIONAL + !height TYPE clike OPTIONAL RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view . METHODS date_picker @@ -991,14 +997,22 @@ CLASS z2ui5_cl_xml_view DEFINITION IMPORTING !htmltext TYPE clike OPTIONAL RETURNING - VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + METHODS _generic IMPORTING !name TYPE clike !ns TYPE clike OPTIONAL !t_prop TYPE z2ui5_if_client=>ty_t_name_value OPTIONAL RETURNING - VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + + METHODS _generic_property + IMPORTING + !val TYPE z2ui5_if_client=>ty_s_name_value OPTIONAL + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + METHODS cc_file_uploader IMPORTING !value TYPE clike OPTIONAL @@ -1388,7 +1402,7 @@ CLASS z2ui5_cl_xml_view DEFINITION METHODS icon_tab_filter IMPORTING - !items TYPE clike OPTIONAL + !items TYPE clike OPTIONAL !showall TYPE abap_bool OPTIONAL !icon TYPE clike OPTIONAL !iconcolor TYPE clike OPTIONAL @@ -1570,13 +1584,13 @@ CLASS z2ui5_cl_xml_view DEFINITION RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view. - METHODS Nav_Container + METHODS Nav_Container IMPORTING !initialPage TYPE clike OPTIONAL !id TYPE clike OPTIONAL !defaultTransitionName TYPE clike OPTIONAL RETURNING - VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. METHODS pages RETURNING @@ -1611,7 +1625,7 @@ CLASS z2ui5_cl_xml_view DEFINITION !confirm TYPE clike OPTIONAL !selectionChange TYPE clike OPTIONAL RETURNING - VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. PROTECTED SECTION. @@ -1638,7 +1652,7 @@ ENDCLASS. -CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. +CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD actions. @@ -1769,6 +1783,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. METHOD button. + result = me. _generic( name = `Button` ns = ns @@ -2484,7 +2499,18 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. METHOD get. - result = mo_root->mo_previous. + + IF name IS INITIAL. + result = mo_root->mo_previous. + RETURN. + ENDIF. + + IF mo_parent->mv_name = name. + result = mo_parent. + ELSE. + result = mo_parent->get( name ). + ENDIF. + ENDMETHOD. @@ -3561,28 +3587,28 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. METHOD Table_Select_Dialog. - result = _generic( name = `TableSelectDialog` - t_prop = VALUE #( ( n = `confirmButtonText` v = confirmButtonText ) - ( n = `contentHeight` v = contentHeight ) - ( n = `contentWidth` v = contentWidth ) - ( n = `draggable` v = z2ui5_cl_fw_utility=>get_json_boolean( draggable ) ) - ( n = `growing` v = z2ui5_cl_fw_utility=>get_json_boolean( growing ) ) - ( n = `growingThreshold` v = growingThreshold ) - ( n = `multiSelect` v = z2ui5_cl_fw_utility=>get_json_boolean( multiSelect ) ) - ( n = `noDataText` v = noDataText ) - ( n = `rememberSelections` v = z2ui5_cl_fw_utility=>get_json_boolean( rememberSelections ) ) - ( n = `resizable` v = z2ui5_cl_fw_utility=>get_json_boolean( resizable ) ) - ( n = `searchPlaceholder` v = searchPlaceholder ) - ( n = `showClearButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showClearButton ) ) - ( n = `title` v = title ) - ( n = `titleAlignment` v = titleAlignment ) - ( n = `items` v = items ) - ( n = `search` v = search ) - ( n = `confirm` v = confirm ) - ( n = `cancel` v = cancel ) - ( n = `liveChange` v = liveChange ) - ( n = `selectionChange` v = selectionChange ) - ( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) ) ) ). + result = _generic( name = `TableSelectDialog` + t_prop = VALUE #( ( n = `confirmButtonText` v = confirmButtonText ) + ( n = `contentHeight` v = contentHeight ) + ( n = `contentWidth` v = contentWidth ) + ( n = `draggable` v = z2ui5_cl_fw_utility=>get_json_boolean( draggable ) ) + ( n = `growing` v = z2ui5_cl_fw_utility=>get_json_boolean( growing ) ) + ( n = `growingThreshold` v = growingThreshold ) + ( n = `multiSelect` v = z2ui5_cl_fw_utility=>get_json_boolean( multiSelect ) ) + ( n = `noDataText` v = noDataText ) + ( n = `rememberSelections` v = z2ui5_cl_fw_utility=>get_json_boolean( rememberSelections ) ) + ( n = `resizable` v = z2ui5_cl_fw_utility=>get_json_boolean( resizable ) ) + ( n = `searchPlaceholder` v = searchPlaceholder ) + ( n = `showClearButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showClearButton ) ) + ( n = `title` v = title ) + ( n = `titleAlignment` v = titleAlignment ) + ( n = `items` v = items ) + ( n = `search` v = search ) + ( n = `confirm` v = confirm ) + ( n = `cancel` v = cancel ) + ( n = `liveChange` v = liveChange ) + ( n = `selectionChange` v = selectionChange ) + ( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) ) ) ). ENDMETHOD. @@ -3972,4 +3998,13 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. result = result2. ENDMETHOD. + + METHOD _generic_property. + + INSERT val INTO TABLE mt_prop. + result = me. + + ENDMETHOD. + + ENDCLASS.