update url params and http call (#356)

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* url params update

* update

* update

* update

* update url params

* update params

* update url parameter

* new param logic

* upadte

* downport readiness
This commit is contained in:
oblomov 2023-07-09 10:11:37 +02:00 committed by GitHub
parent d63badf035
commit 3ad1ef4a0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 1476 additions and 1317 deletions

View File

@ -51,14 +51,9 @@ Install with [abapGit](https://abapgit.org) ![abapGit](https://docs.abapgit.org/
```abap ```abap
METHOD if_http_extension~handle_request. METHOD if_http_extension~handle_request.
DATA lt_header TYPE tihttpnvp.
server->request->get_header_fields( CHANGING fields = lt_header ).
DATA(lv_resp) = SWITCH #( server->request->get_method( ) DATA(lv_resp) = SWITCH #( server->request->get_method( )
WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( ) WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( )
WHEN 'POST' THEN z2ui5_cl_http_handler=>http_post( WHEN 'POST' THEN z2ui5_cl_http_handler=>http_post( server->request->get_cdata( ) ).
body = server->request->get_cdata( )
path_info = lt_header[ name = `~path_info` ]-value ) ).
server->response->set_header_field( name = `cache-control` value = `no-cache` ). server->response->set_header_field( name = `cache-control` value = `no-cache` ).
server->response->set_cdata( lv_resp ). server->response->set_cdata( lv_resp ).
@ -70,21 +65,16 @@ ENDMETHOD.
```abap ```abap
METHOD if_http_service_extension~handle_request. METHOD if_http_service_extension~handle_request.
DATA(lt_header) = request->get_header_fields( ).
DATA(lv_resp) = SWITCH #( request->get_method( ) DATA(lv_resp) = SWITCH #( request->get_method( )
WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( ) WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( )
WHEN 'POST' THEN z2ui5_cl_http_handler=>http_post( WHEN 'POST' THEN z2ui5_cl_http_handler=>http_post( request->get_text( ) ).
body = request->get_text( )
path_info = lt_header[ name = `~path_info` ]-value ) ).
response->set_header_field( i_name = `cache-control` i_value = `no-cache` ). response->set_status( 200 )->set_text( lv_resp
response->set_status( 200 )->set_text( lv_resp ). )->set_header_field( i_name = `cache-control` i_value = `no-cache` ).
ENDMETHOD. ENDMETHOD.
``` ```
#### FAQ #### FAQ
* check out this [documentation](https://blogs.sap.com/2023/04/14/abap2ui5-6-7-installation-configuration-debugging/) for detailed installation guidelines<br> * check out this [documentation](https://blogs.sap.com/2023/04/14/abap2ui5-6-7-installation-configuration-debugging/) for detailed installation guidelines<br>
* read these [instructions](https://blogs.sap.com/2023/02/22/abap2ui5-development-of-ui5-apps-in-pure-abap-1-3/) when you develop your first app<br>
* want to configure the theme, bootstrapping, language and title? see [configuration & debugging](https://blogs.sap.com/2023/04/14/abap2ui5-6-7-installation-configuration-debugging/) * want to configure the theme, bootstrapping, language and title? see [configuration & debugging](https://blogs.sap.com/2023/04/14/abap2ui5-6-7-installation-configuration-debugging/)
* as always - your comments, questions, wishes and bugs are welcome, please create an [issue](https://github.com/abap2UI5/abap2UI5/issues) * as always - your comments, questions, wishes and bugs are welcome, please create an [issue](https://github.com/abap2UI5/abap2UI5/issues)

View File

@ -16,7 +16,6 @@ CLASS z2ui5_cl_http_handler DEFINITION
CLASS-METHODS http_post CLASS-METHODS http_post
IMPORTING IMPORTING
body TYPE string body TYPE string
path_info TYPE string OPTIONAL
RETURNING RETURNING
VALUE(result) TYPE string. VALUE(result) TYPE string.
@ -27,7 +26,7 @@ ENDCLASS.
CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. CLASS z2ui5_cl_http_handler IMPLEMENTATION.
METHOD http_get. METHOD http_get.
@ -52,6 +51,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
ENDIF. ENDIF.
z2ui5_lcl_fw_db=>cleanup( ). z2ui5_lcl_fw_db=>cleanup( ).
r_result = `<html>` && |\n| && r_result = `<html>` && |\n| &&
`<head>` && |\n| && `<head>` && |\n| &&
lv_sec_policy && |\n| && lv_sec_policy && |\n| &&
@ -75,7 +75,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
`<body class="sapUiBody sapUiSizeCompact" >` && |\n| && `<body class="sapUiBody sapUiSizeCompact" >` && |\n| &&
` <div id="content" data-handle-validation="true" ></div>` && |\n| && ` <div id="content" data-handle-validation="true" ></div>` && |\n| &&
`</body>` && |\n| && `</body>` && |\n| &&
`</html>` && |\n|. `</html><abc/>` && |\n|.
r_result = r_result && `<script>` && |\n| && r_result = r_result && `<script>` && |\n| &&
` sap.ui.getCore().attachInit(function () {` && |\n| && ` sap.ui.getCore().attachInit(function () {` && |\n| &&
` "use strict";` && |\n| && ` "use strict";` && |\n| &&
@ -93,7 +93,8 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
` if (sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TEXT !== '') {` && |\n| && ` if (sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TEXT !== '') {` && |\n| &&
` sap.m.MessageBox[sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TYPE](sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TEXT);` && |\n| && ` sap.m.MessageBox[sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TYPE](sap.z2ui5.oResponse.PARAMS.S_MSG_BOX.TEXT);` && |\n| &&
` }` && |\n| && ` }` && |\n| &&
` if (sap.z2ui5.oResponse.PARAMS.PATH != "") {` && |\n| && ` if (sap.z2ui5.oResponse.SEARCH != "") {` && |\n| &&
` history.replaceState(null, null, sap.z2ui5.oResponse.SEARCH );` && |\n| &&
` // window.history.replaceState("", "", window.location.origin + sap.z2ui5.oResponse.PARAMS.PATH + window.location.search);` && |\n| && ` // window.history.replaceState("", "", window.location.origin + sap.z2ui5.oResponse.PARAMS.PATH + window.location.search);` && |\n| &&
` }` && |\n| && ` }` && |\n| &&
` if (sap.z2ui5.oResponse.PARAMS.S_CURSOR.ID !== '') {` && |\n| && ` if (sap.z2ui5.oResponse.PARAMS.S_CURSOR.ID !== '') {` && |\n| &&
@ -202,7 +203,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
` }` && |\n| && ` }` && |\n| &&
` sap.z2ui5.oView.destroy();` && |\n| && ` sap.z2ui5.oView.destroy();` && |\n| &&
` },` && |\n| && ` },` && |\n| &&
` onEventFrontend: oEvent => {` && |\n| && ` onEventFrontend: function( oEvent ) {` && |\n| &&
|\n| && |\n| &&
` switch (oEvent.EVENT) {` && |\n| && ` switch (oEvent.EVENT) {` && |\n| &&
` case 'LOCATION_RELOAD':` && |\n| && ` case 'LOCATION_RELOAD':` && |\n| &&
@ -257,7 +258,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
` });` && |\n| && ` });` && |\n| &&
` }` && |\n| && ` }` && |\n| &&
` sap.z2ui5.oBody.ID = sap.z2ui5.oResponse.ID;` && |\n| && ` sap.z2ui5.oBody.ID = sap.z2ui5.oResponse.ID;` && |\n| &&
` sap.z2ui5.oBody.CHECKLAUNCHPADACTIVE = sap.z2ui5.checkLaunchpadActive;` && |\n| && ` // sap.z2ui5.oBody.CHECKLAUNCHPADACTIVE = sap.z2ui5.checkLaunchpadActive;` && |\n| &&
` sap.z2ui5.oBody.ARGUMENTS = arguments;` && |\n| && ` sap.z2ui5.oBody.ARGUMENTS = arguments;` && |\n| &&
` try { sap.z2ui5.oBody.OCURSOR = sap.ui.getCore().byId(sap.ui.getCore().getCurrentFocusedControlId()).getFocusInfo(); } catch (e) { }` && |\n| && ` try { sap.z2ui5.oBody.OCURSOR = sap.ui.getCore().byId(sap.ui.getCore().getCurrentFocusedControlId()).getFocusInfo(); } catch (e) { }` && |\n| &&
|\n| && |\n| &&
@ -351,13 +352,14 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
` if (!sap.z2ui5) {` && |\n| && ` if (!sap.z2ui5) {` && |\n| &&
` sap.z2ui5 = {};` && |\n| && ` sap.z2ui5 = {};` && |\n| &&
` }` && |\n| && ` }` && |\n| &&
` if (!sap.z2ui5.pathname) {` && |\n| && ` // if (!sap.z2ui5.pathname) {` && |\n| &&
` sap.z2ui5.pathname = window.location.pathname;` && |\n| && ` sap.z2ui5.pathname = window.location.pathname;` && |\n| &&
` // sap.z2ui5.pathname = "/sap/bc/http/sap/y2ui5_http_handler/";` && |\n| && ` debugger;` && |\n| &&
` }` && |\n| && ` // sap.z2ui5.pathname = "/sap/bc/http/sap/y2ui5_http_handler/";` && |\n| &&
` if (!sap.z2ui5.checkLaunchpadActive) {` && |\n| && ` // }` && |\n| &&
` sap.z2ui5.checkLaunchpadActive = false;` && |\n| && ` // if (!sap.z2ui5.checkLaunchpadActive) {` && |\n| &&
` }` && |\n| && ` // sap.z2ui5.checkLaunchpadActive = false;` && |\n| &&
` // }` && |\n| &&
|\n| && |\n| &&
` sap.z2ui5.checkNestAfter = false;` && |\n| && ` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|\n| && |\n| &&
@ -369,25 +371,21 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
` var xml = atob('PA==') + 'mvc:View controllerName="z2ui5_controller" xmlns:mvc="sap.ui.core.mvc" /' + atob('Pg==');` && |\n| && ` var xml = atob('PA==') + 'mvc:View controllerName="z2ui5_controller" xmlns:mvc="sap.ui.core.mvc" /' + atob('Pg==');` && |\n| &&
` var oView = sap.ui.xmlview({ viewContent: xml });` && |\n| && ` var oView = sap.ui.xmlview({ viewContent: xml });` && |\n| &&
` sap.z2ui5.oController = oView.getController();` && |\n| && ` sap.z2ui5.oController = oView.getController();` && |\n| &&
` sap.z2ui5.checkLogActive = ` && z2ui5_lcl_utility=>get_json_boolean( check_logging ) && `;` && |\n| && | sap.z2ui5.checkLogActive = { z2ui5_lcl_utility=>get_json_boolean( check_logging ) };| && |\n| &&
` sap.z2ui5.oBody = {};` && |\n| && ` sap.z2ui5.oBody = {};` && |\n| &&
` sap.z2ui5.oController.Roundtrip();` && |\n| && ` sap.z2ui5.oController.Roundtrip();` && |\n| &&
` });` && |\n| && ` });` && |\n| &&
`</script>` && |\n| && `</script>` && |\n| &&
`</html>`. `<abc/></html>`.
* sap.z2ui5.checkLogActive = { z2ui5_lcl_utility=>get_json_boolean( check_logging ) };`| && |\n| &&
* ` sap.z2ui5.checkLogActive = ` && z2ui5_lcl_utility=>get_json_boolean( check_logging ) && `;` && |\n| &&
ENDMETHOD. ENDMETHOD.
METHOD http_post. METHOD http_post.
z2ui5_lcl_fw_handler=>ss_config = VALUE #( DATA(lo_handler) = z2ui5_lcl_fw_handler=>request_begin( body ).
controller_name = `z2ui5_controller`
path_info = path_info
body = body ).
DATA(lo_handler) = z2ui5_lcl_fw_handler=>request_begin( ).
DO. DO.
TRY. TRY.
@ -408,7 +406,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
result = lo_handler->request_end( ). result = lo_handler->request_end( ).
CATCH cx_root INTO DATA(x). CATCH cx_root INTO DATA(x).
lo_handler = lo_handler->set_app_system( x ). lo_handler = z2ui5_lcl_fw_handler=>set_app_system( x ).
CONTINUE. CONTINUE.
ENDTRY. ENDTRY.

View File

@ -29,6 +29,10 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
METHODS get_text REDEFINITION. METHODS get_text REDEFINITION.
CLASS-METHODS get_classname_by_ref
IMPORTING in TYPE REF TO object
RETURNING VALUE(result) TYPE string.
CLASS-METHODS raise CLASS-METHODS raise
IMPORTING IMPORTING
v TYPE clike DEFAULT `CX_SY_SUBRC` v TYPE clike DEFAULT `CX_SY_SUBRC`
@ -45,9 +49,6 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
CLASS-METHODS get_user_tech CLASS-METHODS get_user_tech
RETURNING VALUE(result) TYPE string. RETURNING VALUE(result) TYPE string.
CLASS-METHODS get_timestampl
RETURNING VALUE(result) TYPE timestampl.
CLASS-METHODS trans_any_2_json CLASS-METHODS trans_any_2_json
IMPORTING any TYPE any IMPORTING any TYPE any
RETURNING VALUE(result) TYPE string. RETURNING VALUE(result) TYPE string.
@ -104,11 +105,241 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
EXPORTING EXPORTING
e_data TYPE REF TO data. e_data TYPE REF TO data.
CLASS-METHODS get_timestampl
RETURNING
VALUE(result) TYPE timestampl.
CLASS-METHODS get_param
IMPORTING
val TYPE string
RETURNING
VALUE(r_result) TYPE string.
PROTECTED SECTION. PROTECTED SECTION.
CLASS-DATA mv_counter TYPE i. CLASS-DATA mv_counter TYPE i.
ENDCLASS. ENDCLASS.
CLASS z2ui5_lcl_utility_tree_json DEFINITION.
PUBLIC SECTION.
DATA mo_root TYPE REF TO z2ui5_lcl_utility_tree_json.
DATA mo_parent TYPE REF TO z2ui5_lcl_utility_tree_json.
DATA mv_name TYPE string.
DATA mv_value TYPE string.
DATA mt_values TYPE STANDARD TABLE OF REF TO z2ui5_lcl_utility_tree_json WITH EMPTY KEY.
DATA mv_check_list TYPE abap_bool.
DATA mr_actual TYPE REF TO data.
DATA mv_apost_active TYPE abap_bool.
CLASS-METHODS new
IMPORTING io_root TYPE REF TO z2ui5_lcl_utility_tree_json
iv_name TYPE simple
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
CLASS-METHODS factory
IMPORTING iv_json TYPE clike OPTIONAL
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS constructor.
METHODS get_root
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS get_attribute
IMPORTING name TYPE string
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS get_val
RETURNING VALUE(result) TYPE string.
METHODS add_attribute
IMPORTING n TYPE clike
v TYPE clike
apos_active TYPE abap_bool DEFAULT abap_true
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_object
IMPORTING name TYPE clike
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_struc
IMPORTING val TYPE data
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_instance
IMPORTING val TYPE REF TO z2ui5_lcl_utility_tree_json
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS stringify
RETURNING VALUE(result) TYPE string.
PROTECTED SECTION.
METHODS wrap_json
IMPORTING iv_text TYPE string
RETURNING VALUE(result) TYPE string.
METHODS quote_json
IMPORTING iv_text TYPE string
iv_cond TYPE abap_bool
RETURNING VALUE(result) TYPE string.
ENDCLASS.
CLASS z2ui5_lcl_fw_handler DEFINITION.
PUBLIC SECTION.
CONSTANTS:
BEGIN OF cs_bind_type,
one_way TYPE string VALUE 'ONE_WAY',
two_way TYPE string VALUE 'TWO_WAY',
one_time TYPE string VALUE 'ONE_TIME',
END OF cs_bind_type.
TYPES:
BEGIN OF ty_S_next2,
t_scroll TYPE z2ui5_if_client=>ty_t_name_value,
title TYPE string,
* path TYPE string,
search TYPE string,
BEGIN OF s_view,
xml TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_view,
BEGIN OF s_view_nest,
xml TYPE string,
id TYPE string,
method_insert TYPE string,
method_destroy TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_view_nest,
BEGIN OF s_popup,
xml TYPE string,
id TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_popup,
BEGIN OF s_popover,
xml TYPE string,
id TYPE string,
open_by_id TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_popover,
BEGIN OF s_cursor,
id TYPE string,
cursorpos TYPE string,
selectionstart TYPE string,
selectionend TYPE string,
END OF s_cursor,
BEGIN OF s_timer,
interval_ms TYPE string,
event_finished TYPE string,
END OF s_timer,
BEGIN OF s_msg_box,
type TYPE string,
text TYPE string,
END OF s_msg_box,
BEGIN OF s_msg_toast,
text TYPE string,
END OF s_msg_toast,
_viewmodel TYPE string,
END OF ty_s_next2.
TYPES:
BEGIN OF ty_s_db,
id TYPE string,
id_prev TYPE string,
id_prev_app TYPE string,
id_prev_app_stack TYPE string,
t_attri TYPE z2ui5_lcl_utility=>ty_t_attri,
o_app TYPE REF TO z2ui5_if_app,
END OF ty_s_db.
CLASS-DATA ss_config TYPE z2ui5_if_client=>ty_s_config.
DATA ms_db TYPE ty_s_db.
TYPES:
BEGIN OF ty_s_next,
o_app_call TYPE REF TO z2ui5_if_app,
o_app_leave TYPE REF TO z2ui5_if_app,
s_set TYPE ty_S_next2,
END OF ty_s_next.
DATA ms_actual TYPE z2ui5_if_client=>ty_s_get.
DATA ms_next TYPE ty_s_next.
CLASS-DATA so_body TYPE REF TO z2ui5_lcl_utility_tree_json.
CLASS-METHODS request_begin
IMPORTING
body TYPE string
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS request_end
RETURNING VALUE(result) TYPE string.
METHODS _create_binding
IMPORTING value TYPE data
type TYPE string DEFAULT cs_bind_type-two_way
RETURNING VALUE(result) TYPE string.
CLASS-METHODS set_app_start
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
CLASS-METHODS set_app_client
IMPORTING
id_prev TYPE clike
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS set_app_leave
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS set_app_call
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
CLASS-METHODS set_app_system
IMPORTING VALUE(ix) TYPE REF TO cx_root OPTIONAL
error_text TYPE string OPTIONAL
PREFERRED PARAMETER ix
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
CLASS-METHODS model_set_backend
IMPORTING
model TYPE REF TO data
app TYPE REF TO object
t_attri TYPE z2ui5_lcl_utility=>ty_t_attri.
CLASS-METHODS model_set_frontend
IMPORTING
app TYPE REF TO object
t_attri TYPE z2ui5_lcl_utility=>ty_t_attri
RETURNING
VALUE(result) TYPE string.
METHODS app_set_next
IMPORTING
app TYPE REF TO z2ui5_if_app
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_lcl_fw_handler.
ENDCLASS.
CLASS z2ui5_lcl_utility IMPLEMENTATION. CLASS z2ui5_lcl_utility IMPLEMENTATION.
@ -165,6 +396,7 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
GET TIME STAMP FIELD result. GET TIME STAMP FIELD result.
ENDMETHOD. ENDMETHOD.
METHOD get_user_tech. METHOD get_user_tech.
result = sy-uname. result = sy-uname.
ENDMETHOD. ENDMETHOD.
@ -333,6 +565,11 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_classname_by_ref.
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
result = substring_after( val = lv_classname sub = `\CLASS=` ).
ENDMETHOD.
METHOD trans_object_2_xml. METHOD trans_object_2_xml.
FIELD-SYMBOLS <object> TYPE any. FIELD-SYMBOLS <object> TYPE any.
@ -421,77 +658,42 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
ENDIF. ENDIF.
RAISE EXCEPTION TYPE z2ui5_lcl_utility EXPORTING val = v. RAISE EXCEPTION TYPE z2ui5_lcl_utility EXPORTING val = v.
ENDMETHOD. ENDMETHOD.
ENDCLASS.
METHOD get_param.
CLASS z2ui5_lcl_utility_tree_json DEFINITION. DATA(lt_params) = VALUE z2ui5_if_client=>ty_t_name_value( ).
PUBLIC SECTION. DATA(lv_search) = z2ui5_lcl_fw_handler=>so_body->get_attribute( `OLOCATION` )->get_attribute( `SEARCH` )->get_val( ).
DATA mo_root TYPE REF TO z2ui5_lcl_utility_tree_json. REPLACE `%3D` IN lv_search WITH `=`.
DATA mo_parent TYPE REF TO z2ui5_lcl_utility_tree_json. SPLIT lv_search AT `&sap-startup-params=` INTO DATA(lv_search1) DATA(lv_search2).
DATA mv_name TYPE string. IF lv_search2 IS NOT INITIAL.
DATA mv_value TYPE string. lv_search = lv_search2.
DATA mt_values TYPE STANDARD TABLE OF REF TO z2ui5_lcl_utility_tree_json WITH EMPTY KEY. ELSE.
DATA mv_check_list TYPE abap_bool. lv_search = lv_search1.
DATA mr_actual TYPE REF TO data. ENDIF.
DATA mv_apost_active TYPE abap_bool.
CLASS-METHODS new lv_search = get_trim_upper( lv_search ).
IMPORTING io_root TYPE REF TO z2ui5_lcl_utility_tree_json SHIFT lv_search LEFT DELETING LEADING `?`.
iv_name TYPE simple
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
CLASS-METHODS factory SPLIT lv_search AT `&` INTO TABLE DATA(lt_param).
IMPORTING iv_json TYPE clike OPTIONAL
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS constructor. LOOP AT lt_param REFERENCE INTO DATA(lr_param).
METHODS get_root SPLIT lr_param->* AT `=` INTO DATA(lv_name) DATA(lv_value).
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS get_attribute INSERT VALUE #( n = lv_name v = lv_value ) INTO TABLE lt_params.
IMPORTING name TYPE string ENDLOOP.
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS get_val DATA(lv_val) = get_trim_upper( val ).
RETURNING VALUE(result) TYPE string. r_result = VALUE #( lt_params[ n = lv_val ]-v OPTIONAL ).
METHODS add_attribute ENDMETHOD.
IMPORTING n TYPE clike
v TYPE clike
apos_active TYPE abap_bool DEFAULT abap_true
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_object
IMPORTING name TYPE clike
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_struc
IMPORTING val TYPE data
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS add_attribute_instance
IMPORTING val TYPE REF TO z2ui5_lcl_utility_tree_json
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_utility_tree_json.
METHODS stringify
RETURNING VALUE(result) TYPE string.
PROTECTED SECTION.
METHODS wrap_json
IMPORTING iv_text TYPE string
RETURNING VALUE(result) TYPE string.
METHODS quote_json
IMPORTING iv_text TYPE string
iv_cond TYPE abap_bool
RETURNING VALUE(result) TYPE string.
ENDCLASS. ENDCLASS.
CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION. CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
METHOD add_attribute. METHOD add_attribute.
@ -634,157 +836,6 @@ CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.
CLASS z2ui5_lcl_fw_handler DEFINITION DEFERRED.
CLASS z2ui5_lcl_fw_handler DEFINITION.
PUBLIC SECTION.
CONSTANTS:
BEGIN OF cs_bind_type,
one_way TYPE string VALUE 'ONE_WAY',
two_way TYPE string VALUE 'TWO_WAY',
one_time TYPE string VALUE 'ONE_TIME',
END OF cs_bind_type.
TYPES:
BEGIN OF ty_S_next2,
t_scroll TYPE z2ui5_if_client=>ty_t_name_value,
title TYPE string,
path TYPE string,
url TYPE string,
BEGIN OF s_view,
xml TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_view,
BEGIN OF s_view_nest,
xml TYPE string,
id TYPE string,
method_insert TYPE string,
method_destroy TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_view_nest,
BEGIN OF s_popup,
xml TYPE string,
id TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_popup,
BEGIN OF s_popover,
xml TYPE string,
id TYPE string,
open_by_id TYPE string,
check_destroy TYPE abap_bool,
check_update_model TYPE abap_bool,
END OF s_popover,
BEGIN OF s_cursor,
id TYPE string,
cursorpos TYPE string,
selectionstart TYPE string,
selectionend TYPE string,
END OF s_cursor,
BEGIN OF s_timer,
interval_ms TYPE string,
event_finished TYPE string,
END OF s_timer,
BEGIN OF s_msg_box,
type TYPE string,
text TYPE string,
END OF s_msg_box,
BEGIN OF s_msg_toast,
text TYPE string,
END OF s_msg_toast,
_viewmodel TYPE string,
END OF ty_s_next2.
TYPES:
BEGIN OF ty_s_db,
id TYPE string,
id_prev TYPE string,
id_prev_app TYPE string,
id_prev_app_stack TYPE string,
t_attri TYPE z2ui5_lcl_utility=>ty_t_attri,
o_app TYPE REF TO z2ui5_if_app,
END OF ty_s_db.
CLASS-DATA ss_config TYPE z2ui5_if_client=>ty_s_config.
DATA ms_db TYPE ty_s_db.
TYPES:
BEGIN OF ty_s_next,
o_app_call TYPE REF TO z2ui5_if_app,
o_app_leave TYPE REF TO z2ui5_if_app,
s_set TYPE ty_S_next2,
END OF ty_s_next.
DATA ms_actual TYPE z2ui5_if_client=>ty_s_get.
DATA ms_next TYPE ty_s_next.
CLASS-DATA so_body TYPE REF TO z2ui5_lcl_utility_tree_json.
CLASS-METHODS request_begin
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS request_end
RETURNING VALUE(result) TYPE string.
METHODS _create_binding
IMPORTING value TYPE data
type TYPE string DEFAULT cs_bind_type-two_way
RETURNING VALUE(result) TYPE string.
CLASS-METHODS set_app_start
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
CLASS-METHODS set_app_client
IMPORTING
id_prev TYPE clike
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS set_app_leave
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS set_app_call
IMPORTING
check_no_db_save TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
METHODS set_app_system
IMPORTING VALUE(ix) TYPE REF TO cx_root OPTIONAL
error_text TYPE string OPTIONAL
PREFERRED PARAMETER ix
RETURNING VALUE(result) TYPE REF TO z2ui5_lcl_fw_handler.
CLASS-METHODS model_set_backend
IMPORTING
model TYPE REF TO data
app TYPE REF TO object
t_attri TYPE z2ui5_lcl_utility=>ty_t_attri.
CLASS-METHODS model_set_frontend
IMPORTING
app TYPE REF TO object
t_attri TYPE z2ui5_lcl_utility=>ty_t_attri
RETURNING
VALUE(result) TYPE string.
METHODS app_set_next
IMPORTING
app TYPE REF TO z2ui5_if_app
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_lcl_fw_handler.
ENDCLASS.
CLASS z2ui5_lcl_fw_db DEFINITION. CLASS z2ui5_lcl_fw_db DEFINITION.
PUBLIC SECTION. PUBLIC SECTION.
@ -927,6 +978,7 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION.
DATA li_app TYPE REF TO z2ui5_if_app. DATA li_app TYPE REF TO z2ui5_if_app.
TRY. TRY.
CREATE OBJECT li_app TYPE (`Z2UI5_CL_APP_DEMO_00`). CREATE OBJECT li_app TYPE (`Z2UI5_CL_APP_DEMO_00`).
* CREATE OBJECT li_app TYPE (`Z2UI5_CL_APP_DEMO_00`).
lv_check_demo = abap_true. lv_check_demo = abap_true.
client->nav_app_call( li_app ). client->nav_app_call( li_app ).
CATCH cx_root. CATCH cx_root.
@ -956,9 +1008,12 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION.
DATA(ls_get) = client->get( ). DATA(ls_get) = client->get( ).
DATA(lv_url_app) = ls_get-s_config-origin && ls_get-s_config-pathname. DATA(lv_url_app) = ls_get-s_config-origin && ls_get-s_config-pathname.
DATA(lv_url) = lv_url_app. DATA(lv_url) = lv_url_app.
SHIFT lv_url RIGHT DELETING TRAILING ls_get-s_config-path_info. * SHIFT lv_url RIGHT DELETING TRAILING ls_get-s_config-path_info.
SHIFT lv_url LEFT DELETING LEADING ` `. SHIFT lv_url LEFT DELETING LEADING ` `.
* client->get( )-s_config-ms_db-
* DATA(lv_url_app_act) = ls_get-s_config-origin && ls_get-s_config-pathname.
DATA(lv_xml) = `<mvc:View ` && |\n| && DATA(lv_xml) = `<mvc:View ` && |\n| &&
` xmlns="sap.m" ` && |\n| && ` xmlns="sap.m" ` && |\n| &&
` xmlns:z2ui5="z2ui5" ` && |\n| && ` xmlns:z2ui5="z2ui5" ` && |\n| &&
@ -1007,15 +1062,25 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION.
TRY. TRY.
DATA(lv_url) = to_lower( z2ui5_lcl_fw_handler=>ss_config-origin && z2ui5_lcl_fw_handler=>ss_config-pathname ). DATA(lv_url) = to_lower( z2ui5_lcl_fw_handler=>ss_config-origin && z2ui5_lcl_fw_handler=>ss_config-pathname ).
DATA(lv_path_info) = to_lower( z2ui5_lcl_fw_handler=>ss_config-path_info ).
REPLACE lv_path_info IN lv_url WITH ``. DATA(lv_search) = client->get( )-s_config-search.
SPLIT lv_url AT '?' INTO lv_url DATA(lv_params). SPLIT lv_search AT `&` INTO TABLE DATA(lt_param).
SHIFT lv_url RIGHT DELETING TRAILING `/`. LOOP AT lt_param INTO DATA(ls_param).
DATA(lv_link) = lv_url && `/` && to_lower( ms_home-classname ). TRY.
IF lv_params IS NOT INITIAL. IF ls_param(9) = `app_start`.
lv_link = lv_link && `?` && lv_params. DELETE lt_param.
ENDIF.
CATCH cx_root.
ENDTRY.
ENDLOOP.
IF lv_search IS INITIAL.
lv_url = lv_url && `?`.
ELSE.
lv_url = lv_url && lv_search && `&`.
ENDIF. ENDIF.
DATA(lv_link) = lv_url && `app_start=` && to_lower( ms_home-classname ).
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
@ -1233,17 +1298,16 @@ CLASS z2ui5_lcl_fw_db IMPLEMENTATION.
METHOD cleanup. METHOD cleanup.
DATA lv_ts_now TYPE timestampl. data(lv_timestampl) = z2ui5_lcl_utility=>get_timestampl( ).
DATA(lv_ts_four_hours_ago) = cl_abap_tstmp=>subtractsecs( tstmp = lv_timestampl
GET TIME STAMP FIELD lv_ts_now.
DATA(lv_ts_four_hours_ago) = cl_abap_tstmp=>subtractsecs( tstmp = lv_ts_now
secs = 60 * 60 * 4 ). secs = 60 * 60 * 4 ).
DELETE FROM z2ui5_t_draft WHERE timestampl < @lv_ts_four_hours_ago. DELETE FROM z2ui5_t_draft WHERE timestampl < @lv_ts_four_hours_ago.
COMMIT WORK. COMMIT WORK.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.
@ -1265,7 +1329,10 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
METHOD request_begin. METHOD request_begin.
so_body = z2ui5_lcl_utility_tree_json=>factory( ss_config-body ). ss_config = VALUE #(
controller_name = `z2ui5_controller`
body = body ).
so_body = z2ui5_lcl_utility_tree_json=>factory( body ).
TRY. TRY.
DATA(lv_id_prev) = so_body->get_attribute( `ID` )->get_val( ). DATA(lv_id_prev) = so_body->get_attribute( `ID` )->get_val( ).
@ -1274,13 +1341,6 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
result = set_app_start( ). result = set_app_start( ).
result->ms_actual-check_on_navigated = abap_true. result->ms_actual-check_on_navigated = abap_true.
* RETURN.
ENDTRY.
TRY.
result->ms_actual-check_launchpad_active = so_body->get_attribute( `CHECKLAUNCHPADACTIVE` )->get_val( ).
CATCH cx_root.
ENDTRY. ENDTRY.
TRY. TRY.
@ -1309,6 +1369,7 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
TRY. TRY.
DATA(lo_location) = so_body->get_attribute( `OLOCATION` ). DATA(lo_location) = so_body->get_attribute( `OLOCATION` ).
ss_config-origin = lo_location->get_attribute( `ORIGIN` )->get_val( ). ss_config-origin = lo_location->get_attribute( `ORIGIN` )->get_val( ).
@ -1319,6 +1380,16 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
* TRY.
* result->ms_actual-check_launchpad_active = so_body->get_attribute( `CHECKLAUNCHPADACTIVE` )->get_val( ).
* CATCH cx_root.
* ENDTRY.
* IF result->ms_actual-check_launchpad_active = abap_false.
IF ss_config-search CS `scenario=LAUNCHPAD`.
result->ms_actual-check_launchpad_active = abap_true.
ENDIF.
* ENDIF.
ENDMETHOD. ENDMETHOD.
@ -1334,7 +1405,15 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
lo_resp->add_attribute( n = `PARAMS` v = z2ui5_lcl_utility=>trans_any_2_json( ms_next-s_set ) apos_active = abap_false ). lo_resp->add_attribute( n = `PARAMS` v = z2ui5_lcl_utility=>trans_any_2_json( ms_next-s_set ) apos_active = abap_false ).
lo_resp->add_attribute( n = `ID` v = ms_db-id ). lo_resp->add_attribute( n = `ID` v = ms_db-id ).
ms_next-s_set-path = ss_config-path_info. * DATA(lv_app_start) = to_lower( z2ui5_lcl_utility=>get_param( `app_start` ) ).
* DATA(lv_q) = z2ui5_lcl_utility=>get_param( `q` ).
* DATA(lv_app) = to_lower( z2ui5_lcl_utility=>get_classname_by_ref( ms_db-o_app ) ).
IF ms_next-S_set-search IS INITIAL.
lo_resp->add_attribute( n = `SEARCH` v = ms_actual-s_config-search ).
ELSE.
lo_resp->add_attribute( n = `SEARCH` v = ms_next-S_set-search ).
ENDIF.
result = lo_resp->get_root( )->stringify( ). result = lo_resp->get_root( )->stringify( ).
z2ui5_lcl_fw_db=>create( id = ms_db-id db = ms_db ). z2ui5_lcl_fw_db=>create( id = ms_db-id db = ms_db ).
@ -1469,38 +1548,25 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
METHOD set_app_start. METHOD set_app_start.
result = NEW #( ).
result->ms_db-id = z2ui5_lcl_utility=>get_uuid( ).
" TODO: variable is assigned but never used (ABAP cleaner)
SPLIT ss_config-path_info AT `?` INTO DATA(lv_path_info) DATA(lv_dummy).
DATA(lv_classname) = z2ui5_lcl_utility=>get_trim_upper( lv_path_info ).
SHIFT lv_classname LEFT DELETING LEADING `/`.
DATA(lv_classname) = z2ui5_lcl_utility=>get_param( `app_start` ).
IF lv_classname IS INITIAL. IF lv_classname IS INITIAL.
result = result->set_app_system( ). result = set_app_system( ).
RETURN. RETURN.
ENDIF. ENDIF.
TRY. TRY.
TRY. result = NEW #( ).
CREATE OBJECT result->ms_db-o_app TYPE (lv_classname). result->ms_db-id = z2ui5_lcl_utility=>get_uuid( ).
CATCH cx_root.
SPLIT lv_classname AT `/` INTO lv_classname lv_dummy. CREATE OBJECT result->ms_db-o_app TYPE (lv_classname).
CREATE OBJECT result->ms_db-o_app TYPE (lv_classname).
ENDTRY.
result->ms_db-o_app->id = result->ms_db-id. result->ms_db-o_app->id = result->ms_db-id.
result->ms_db-t_attri = z2ui5_lcl_utility=>get_t_attri_by_ref( result->ms_db-o_app ). result->ms_db-t_attri = z2ui5_lcl_utility=>get_t_attri_by_ref( result->ms_db-o_app ).
* result->ms_actual-check_on_navigated = abap_true.
RETURN.
CATCH cx_root. CATCH cx_root.
result = result->set_app_system( error_text = `App with name ` && lv_classname && ` not found...` ). result = set_app_system( error_text = `App with name ` && lv_classname && ` not found...` ).
RETURN.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD set_app_leave. METHOD set_app_leave.
@ -1608,9 +1674,9 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
ENDIF. ENDIF.
IF ix IS BOUND. IF ix IS BOUND.
ms_next-o_app_call = z2ui5_lcl_fw_app=>factory_error( error = ix ). result->ms_next-o_app_call = z2ui5_lcl_fw_app=>factory_error( error = ix ).
result = set_app_call( check_no_db_save = abap_true ). result = result->set_app_call( check_no_db_save = abap_true ).
RETURN. RETURN.
ELSE. ELSE.
@ -1638,7 +1704,6 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
r_result->ms_db-t_attri = z2ui5_lcl_utility=>get_t_attri_by_ref( app ). r_result->ms_db-t_attri = z2ui5_lcl_utility=>get_t_attri_by_ref( app ).
r_result->ms_actual-check_launchpad_active = ms_actual-check_launchpad_active. r_result->ms_actual-check_launchpad_active = ms_actual-check_launchpad_active.
r_result->ms_actual-s_config = ms_actual-s_config.
r_result->ms_actual-check_on_navigated = abap_true. r_result->ms_actual-check_on_navigated = abap_true.
r_result->ms_next-s_Set = ms_next-s_set. r_result->ms_next-s_Set = ms_next-s_set.
@ -1675,9 +1740,10 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
check_launchpad_active = mo_handler->ms_actual-check_launchpad_active check_launchpad_active = mo_handler->ms_actual-check_launchpad_active
t_event_arg = mo_handler->ms_actual-t_event_arg t_event_arg = mo_handler->ms_actual-t_event_arg
t_scroll_pos = mo_handler->ms_actual-t_scroll_pos t_scroll_pos = mo_handler->ms_actual-t_scroll_pos
s_DRAFT = CORRESPONDING #( mo_handler->ms_db )
check_on_navigated = mo_handler->ms_actual-check_on_navigated check_on_navigated = mo_handler->ms_actual-check_on_navigated
s_config = z2ui5_lcl_fw_handler=>ss_config ). s_config = z2ui5_lcl_fw_handler=>ss_config ).
result-s_config-app = mo_handler->ms_db-o_app. result-s_draft-app = mo_handler->ms_db-o_app.
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_client~nav_app_call. METHOD z2ui5_if_client~nav_app_call.
@ -1731,6 +1797,7 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
METHOD z2ui5_if_client~_bind. METHOD z2ui5_if_client~_bind.
result = mo_handler->_create_binding( value = val type = z2ui5_lcl_fw_handler=>cs_bind_type-one_way ). result = mo_handler->_create_binding( value = val type = z2ui5_lcl_fw_handler=>cs_bind_type-one_way ).
IF path = abap_false. IF path = abap_false.
result = `{` && result && `}`. result = `{` && result && `}`.
ENDIF. ENDIF.
@ -1739,8 +1806,8 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
METHOD z2ui5_if_client~_bind_edit. METHOD z2ui5_if_client~_bind_edit.
result = mo_handler->_create_binding( value = val result = mo_handler->_create_binding( value = val type = z2ui5_lcl_fw_handler=>cs_bind_type-two_way ).
type = z2ui5_lcl_fw_handler=>cs_bind_type-two_way ).
IF path = abap_false. IF path = abap_false.
result = `{` && result && `}`. result = `{` && result && `}`.
ENDIF. ENDIF.
@ -1835,7 +1902,14 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION.
METHOD z2ui5_if_client~popup_model_update. METHOD z2ui5_if_client~popup_model_update.
mo_handler->ms_next-s_set-s_popup-check_update_model = abap_true. mo_handler->ms_next-s_set-s_popup-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~url_param_set.
mo_handler->ms_next-s_set-search = val.
mo_handler->ms_actual-s_config-search = val.
ENDMETHOD. ENDMETHOD.

File diff suppressed because it is too large Load Diff

View File

@ -26,6 +26,17 @@ CLASS z2ui5_cl_xml_view DEFINITION
RETURNING RETURNING
VALUE(result) TYPE string. VALUE(result) TYPE string.
METHODS hlp_get_url_param
IMPORTING
!val TYPE string
RETURNING
VALUE(result) TYPE string.
METHODS hlp_set_url_param
IMPORTING
!n TYPE clike
!v TYPE clike.
METHODS hlp_replace_controller_name METHODS hlp_replace_controller_name
IMPORTING IMPORTING
!xml TYPE string !xml TYPE string
@ -579,6 +590,7 @@ CLASS z2ui5_cl_xml_view DEFINITION
!title TYPE clike OPTIONAL !title TYPE clike OPTIONAL
!navbuttonpress TYPE clike OPTIONAL !navbuttonpress TYPE clike OPTIONAL
!shownavbutton TYPE clike OPTIONAL !shownavbutton TYPE clike OPTIONAL
!showHeader TYPE clike OPTIONAL
!id TYPE clike OPTIONAL !id TYPE clike OPTIONAL
!class TYPE clike OPTIONAL !class TYPE clike OPTIONAL
!ns TYPE clike OPTIONAL !ns TYPE clike OPTIONAL
@ -1068,39 +1080,39 @@ CLASS z2ui5_cl_xml_view DEFINITION
VALUE(result) TYPE REF TO z2ui5_cl_xml_view . VALUE(result) TYPE REF TO z2ui5_cl_xml_view .
METHODS ui_row_action_item METHODS ui_row_action_item
IMPORTING IMPORTING
!icon TYPE clike OPTIONAL !icon TYPE clike OPTIONAL
!text TYPE clike OPTIONAL !text TYPE clike OPTIONAL
!type TYPE clike OPTIONAL !type TYPE clike OPTIONAL
!press TYPE clike OPTIONAL !press TYPE clike OPTIONAL
RETURNING RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_xml_view . VALUE(result) TYPE REF TO z2ui5_cl_xml_view .
METHODS radio_button METHODS radio_button
IMPORTING IMPORTING
!activeHandling TYPE clike OPTIONAL !activeHandling TYPE clike OPTIONAL
!editable TYPE clike OPTIONAL !editable TYPE clike OPTIONAL
!enabled TYPE clike OPTIONAL !enabled TYPE clike OPTIONAL
!groupName TYPE clike OPTIONAL !groupName TYPE clike OPTIONAL
!selected TYPE clike OPTIONAL !selected TYPE clike OPTIONAL
!text TYPE clike OPTIONAL !text TYPE clike OPTIONAL
!textAlign TYPE clike OPTIONAL !textAlign TYPE clike OPTIONAL
!textDirection TYPE clike OPTIONAL !textDirection TYPE clike OPTIONAL
!useEntireWidth TYPE clike OPTIONAL !useEntireWidth TYPE clike OPTIONAL
!valueState TYPE clike OPTIONAL !valueState TYPE clike OPTIONAL
!width TYPE clike OPTIONAL !width TYPE clike OPTIONAL
RETURNING RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_xml_view . VALUE(result) TYPE REF TO z2ui5_cl_xml_view .
METHODS radio_button_group METHODS radio_button_group
IMPORTING IMPORTING
!id TYPE clike OPTIONAL !id TYPE clike OPTIONAL
!columns TYPE clike OPTIONAL !columns TYPE clike OPTIONAL
!editable TYPE clike OPTIONAL !editable TYPE clike OPTIONAL
!enabled TYPE clike OPTIONAL !enabled TYPE clike OPTIONAL
!selectedIndex TYPE clike OPTIONAL !selectedIndex TYPE clike OPTIONAL
!textDirection TYPE clike OPTIONAL !textDirection TYPE clike OPTIONAL
!valueState TYPE clike OPTIONAL !valueState TYPE clike OPTIONAL
!width TYPE clike OPTIONAL !width TYPE clike OPTIONAL
RETURNING RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_xml_view . VALUE(result) TYPE REF TO z2ui5_cl_xml_view .
PROTECTED SECTION. PROTECTED SECTION.
DATA mv_name TYPE string. DATA mv_name TYPE string.
@ -1119,7 +1131,7 @@ ENDCLASS.
CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION. CLASS z2ui5_cl_xml_view IMPLEMENTATION.
METHOD actions. METHOD actions.
@ -1745,10 +1757,11 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
METHOD hlp_get_source_code_url. METHOD hlp_get_source_code_url.
DATA(ls_draft) = mo_root->mi_client->get( )-s_draft.
DATA(ls_config) = mo_root->mi_client->get( )-s_config. DATA(ls_config) = mo_root->mi_client->get( )-s_config.
result = ls_config-origin && result = ls_config-origin &&
`/sap/bc/adt/oo/classes/` && lcl_utility=>get_classname_by_ref( ls_config-app ) && `/sap/bc/adt/oo/classes/` && lcl_utility=>get_classname_by_ref( ls_draft-app ) &&
`/source/main`. `/source/main`.
ENDMETHOD. ENDMETHOD.
@ -2149,6 +2162,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
t_prop = VALUE #( ( n = `title` v = title ) t_prop = VALUE #( ( n = `title` v = title )
( n = `showNavButton` v = lcl_utility=>get_json_boolean( shownavbutton ) ) ( n = `showNavButton` v = lcl_utility=>get_json_boolean( shownavbutton ) )
( n = `navButtonPress` v = navbuttonpress ) ( n = `navButtonPress` v = navbuttonpress )
( n = `showHeader` v = lcl_utility=>get_json_boolean( showHeader ) )
( n = `class` v = class ) ( n = `class` v = class )
( n = `id` v = id ) ) ). ( n = `id` v = id ) ) ).
ENDMETHOD. ENDMETHOD.
@ -2201,33 +2215,33 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
METHOD radio_button. METHOD radio_button.
result = _generic( name = `RadioButton` result = _generic( name = `RadioButton`
t_prop = VALUE #( ( n = `activeHandling` v = lcl_utility=>get_json_boolean( activeHandling ) ) t_prop = VALUE #( ( n = `activeHandling` v = lcl_utility=>get_json_boolean( activeHandling ) )
( n = `editable` v = lcl_utility=>get_json_boolean( editable ) ) ( n = `editable` v = lcl_utility=>get_json_boolean( editable ) )
( n = `enabled` v = lcl_utility=>get_json_boolean( enabled ) ) ( n = `enabled` v = lcl_utility=>get_json_boolean( enabled ) )
( n = `selected` v = lcl_utility=>get_json_boolean( selected ) ) ( n = `selected` v = lcl_utility=>get_json_boolean( selected ) )
( n = `useEntireWidth` v = lcl_utility=>get_json_boolean( useEntireWidth ) ) ( n = `useEntireWidth` v = lcl_utility=>get_json_boolean( useEntireWidth ) )
( n = `text` v = text ) ( n = `text` v = text )
( n = `textDirection` v = textDirection ) ( n = `textDirection` v = textDirection )
( n = `textAlign` v = textAlign ) ( n = `textAlign` v = textAlign )
( n = `groupName` v = groupName ) ( n = `groupName` v = groupName )
( n = `valueState` v = valueState ) ( n = `valueState` v = valueState )
( n = `width` v = width ) ( n = `width` v = width )
) ). ) ).
ENDMETHOD. ENDMETHOD.
METHOD radio_button_group. METHOD radio_button_group.
result = _generic( name = `RadioButtonGroup` result = _generic( name = `RadioButtonGroup`
t_prop = VALUE #( ( n = `id` v = id ) t_prop = VALUE #( ( n = `id` v = id )
( n = `columns` v = columns ) ( n = `columns` v = columns )
( n = `editable` v = lcl_utility=>get_json_boolean( editable ) ) ( n = `editable` v = lcl_utility=>get_json_boolean( editable ) )
( n = `enabled` v = lcl_utility=>get_json_boolean( enabled ) ) ( n = `enabled` v = lcl_utility=>get_json_boolean( enabled ) )
( n = `selectedIndex` v = selectedIndex ) ( n = `selectedIndex` v = selectedIndex )
( n = `textDirection` v = textDirection ) ( n = `textDirection` v = textDirection )
( n = `valueState` v = valueState ) ( n = `valueState` v = valueState )
( n = `width` v = width ) ( n = `width` v = width )
) ). ) ).
ENDMETHOD. ENDMETHOD.
@ -2745,4 +2759,64 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
result = result2. result = result2.
ENDMETHOD. ENDMETHOD.
METHOD hlp_get_url_param.
DATA(lt_params) = VALUE z2ui5_if_client=>ty_t_name_value( ).
DATA(lv_search) = mi_client->get( )-s_config-search.
lv_search = lcl_utility=>get_trim_lower( lv_search ).
SHIFT lv_search LEFT DELETING LEADING `?`.
SPLIT lv_search AT `&` INTO TABLE DATA(lt_param).
LOOP AT lt_param REFERENCE INTO DATA(lr_param).
SPLIT lr_param->* AT `=` INTO DATA(lv_name) DATA(lv_value).
INSERT VALUE #( n = lv_name v = lv_value ) INTO TABLE lt_params.
ENDLOOP.
DATA(lv_val) = lcl_utility=>get_trim_lower( val ).
result = VALUE #( lt_params[ n = lv_val ]-v OPTIONAL ).
ENDMETHOD.
METHOD hlp_set_url_param.
DATA(lt_params) = VALUE z2ui5_if_client=>ty_t_name_value( ).
DATA(lv_search) = mi_client->get( )-s_config-search.
lv_search = lcl_utility=>get_trim_lower( lv_search ).
SHIFT lv_search LEFT DELETING LEADING `?`.
SPLIT lv_search AT `&` INTO TABLE DATA(lt_param).
LOOP AT lt_param REFERENCE INTO DATA(lr_param).
SPLIT lr_param->* AT `=` INTO DATA(lv_name) DATA(lv_value).
INSERT VALUE #( n = lv_name v = lv_value ) INTO TABLE lt_params.
ENDLOOP.
DATA(lv_n) = lcl_utility=>get_trim_lower( n ).
LOOP AT lt_params REFERENCE INTO DATA(lr_params)
WHERE n = lv_n.
lr_params->v = lcl_utility=>get_trim_lower( v ).
ENDLOOP.
IF sy-subrc <> 0.
INSERT VALUE #( n = lv_n v = lcl_utility=>get_trim_lower( v ) ) INTO TABLE lt_params.
ENDIF.
DATA(lv_result) = `?` && lt_params[ 1 ]-n && `=` && lt_params[ 1 ]-v.
LOOP AT lt_params REFERENCE INTO lr_params FROM 2.
lv_result = lv_result && `&` && lr_params->n && `=` && lr_params->v.
ENDLOOP.
mi_client->url_param_set( lv_result ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -20,6 +20,10 @@ CLASS lcl_utility DEFINITION INHERITING FROM cx_no_check.
iv_replace TYPE clike DEFAULT '' iv_replace TYPE clike DEFAULT ''
RETURNING VALUE(result) TYPE string. RETURNING VALUE(result) TYPE string.
CLASS-METHODS get_trim_lower
IMPORTING val TYPE any
RETURNING VALUE(result) TYPE string.
ENDCLASS. ENDCLASS.
@ -56,4 +60,12 @@ CLASS lcl_utility IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD get_trim_lower.
result = CONV #( val ).
result = to_lower( shift_left( shift_right( result ) ) ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -8,18 +8,6 @@ INTERFACE z2ui5_if_client
location_reload TYPE string VALUE `LOCATION_RELOAD`, location_reload TYPE string VALUE `LOCATION_RELOAD`,
END OF cs_event. END OF cs_event.
TYPES:
BEGIN OF ty_s_config,
controller_name TYPE string,
version TYPE string,
pathname TYPE string,
origin TYPE string,
search TYPE string,
path_info TYPE string,
body TYPE string,
app TYPE REF TO z2ui5_if_app,
END OF ty_S_config.
TYPES: TYPES:
BEGIN OF ty_s_name_value, BEGIN OF ty_s_name_value,
n TYPE string, n TYPE string,
@ -27,23 +15,42 @@ INTERFACE z2ui5_if_client
END OF ty_s_name_value. END OF ty_s_name_value.
TYPES ty_t_name_value TYPE STANDARD TABLE OF ty_s_name_value WITH EMPTY KEY. TYPES ty_t_name_value TYPE STANDARD TABLE OF ty_s_name_value WITH EMPTY KEY.
TYPES:
BEGIN OF ty_s_config,
controller_name TYPE string,
version TYPE string,
origin TYPE string,
pathname TYPE string,
search TYPE string,
body TYPE string,
END OF ty_S_config.
TYPES:
BEGIN OF ty_s_draft,
id TYPE string,
id_prev TYPE string,
id_prev_app TYPE string,
id_prev_app_stack TYPE string,
app TYPE REF TO z2ui5_if_app,
END OF ty_S_draft.
TYPES:
BEGIN OF ty_s_cursor,
id TYPE string,
cursorpos TYPE string,
selectionstart TYPE string,
selectionend TYPE string,
END OF ty_s_cursor.
TYPES: TYPES:
BEGIN OF ty_s_get, BEGIN OF ty_s_get,
event TYPE string, event TYPE string,
t_event_arg TYPE string_table, t_event_arg TYPE string_table,
t_scroll_pos TYPE ty_t_name_value, t_scroll_pos TYPE ty_t_name_value,
id TYPE string,
id_prev TYPE string,
id_prev_app TYPE string,
id_prev_app_stack TYPE string,
check_launchpad_active TYPE abap_bool, check_launchpad_active TYPE abap_bool,
check_on_navigated TYPE abap_bool, check_on_navigated TYPE abap_bool,
BEGIN OF s_cursor, s_draft TYPE ty_S_draft,
id TYPE string, s_cursor TYPE ty_S_cursor,
cursorpos TYPE string,
selectionstart TYPE string,
selectionend TYPE string,
END OF s_cursor,
s_config TYPE ty_S_config, s_config TYPE ty_S_config,
END OF ty_s_get. END OF ty_s_get.
@ -117,6 +124,10 @@ INTERFACE z2ui5_if_client
text TYPE clike text TYPE clike
type TYPE clike DEFAULT 'information'. type TYPE clike DEFAULT 'information'.
METHODS url_param_set
IMPORTING
val type clike.
METHODS timer_set METHODS timer_set
IMPORTING IMPORTING
interval_ms TYPE clike interval_ms TYPE clike