binding update (#518)

* update

* update

* update binding

* update xml view

* title_set method

* update binding
This commit is contained in:
oblomov 2023-08-30 21:55:43 +02:00 committed by GitHub
parent d4afaffed4
commit 6951a7fe5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 204 additions and 60 deletions

View File

@ -248,7 +248,7 @@ CLASS Z2UI5_CL_FW_APP IMPLEMENTATION.
ms_home-btn_event_id = `BUTTON_CHECK`.
ms_home-class_editable = abap_true.
ms_home-btn_icon = `sap-icon://validate`.
ms_home-classname = `z2ui5_cl_app_hello_world`.
ms_home-classname = `Z2UI5_CL_APP_HELLO_WORLD`.
ENDIF.
mv_check_demo = abap_true.

View File

@ -17,15 +17,15 @@ CLASS z2ui5_cl_fw_binding DEFINITION
TYPES:
BEGIN OF ty_s_attri,
name TYPE string,
name_front TYPE string,
type_kind TYPE string,
type TYPE string,
bind_type TYPE string,
data_stringify TYPE string,
data_rtti TYPE string,
check_tested TYPE abap_bool,
check_ready TYPE abap_bool,
check_dissolved TYPE abap_bool,
name_front TYPE string,
check_temp TYPE abap_bool,
END OF ty_s_attri.
TYPES ty_t_attri TYPE SORTED TABLE OF ty_s_attri WITH UNIQUE KEY name.
@ -35,6 +35,7 @@ CLASS z2ui5_cl_fw_binding DEFINITION
attri TYPE ty_t_attri OPTIONAL
type TYPE string OPTIONAL
data TYPE data OPTIONAL
check_attri TYPE data OPTIONAL
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_binding.
@ -46,6 +47,7 @@ CLASS z2ui5_cl_fw_binding DEFINITION
DATA mt_attri TYPE ty_t_attri.
DATA mv_type TYPE string.
DATA mr_data TYPE REF TO data.
DATA mv_check_attri TYPE abap_bool.
CLASS-METHODS update_attri
IMPORTING
@ -115,7 +117,7 @@ ENDCLASS.
CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
METHOD bind.
@ -124,7 +126,8 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
DATA(lv_name) = `MO_APP->` && bind->name.
ASSIGN (lv_name) TO <attri>.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_fw_error.
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
exporting val = `BINDING_ERROR_ATTRIBUTE_NOT_FOUND_WITH_NAME__` && bind->name.
ENDIF.
DATA lr_ref TYPE REF TO data.
@ -183,10 +186,8 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
ENDLOOP.
IF lt_dissolve IS INITIAL.
RETURN.
ENDIF.
set_attri_ready( REF #( lt_dissolve ) ).
* set_attri_ready( REF #( lt_dissolve ) ).
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
ENDMETHOD.
@ -195,14 +196,7 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
METHOD dissolve_init.
IF mt_attri IS INITIAL.
mt_attri = get_t_attri_by_oref( ).
set_attri_ready( REF #( mt_attri ) ).
ELSE.
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri).
lr_attri->check_tested = abap_false.
ENDLOOP.
ENDIF.
ENDMETHOD.
@ -224,10 +218,8 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
ENDLOOP.
IF lt_dissolve IS INITIAL.
RETURN.
ENDIF.
set_attri_ready( REF #( lt_dissolve ) ).
* set_attri_ready( REF #( lt_dissolve ) ).
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
ENDMETHOD.
@ -247,7 +239,7 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
ENDLOOP.
set_attri_ready( REF #( lt_dissolve ) ).
* set_attri_ready( REF #( lt_dissolve ) ).
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
ENDMETHOD.
@ -259,6 +251,7 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
r_result->mo_app = app.
r_result->mt_attri = attri.
r_result->mv_type = type.
r_result->mv_check_attri = check_attri.
IF z2ui5_cl_fw_utility=>rtti_check_type_kind_dref( data ).
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
@ -286,6 +279,7 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
type_kind = lo_descr->type_kind
type = lo_descr->get_relative_name( )
check_ready = abap_true
check_temp = abap_true
).
INSERT ls_new_bind INTO TABLE result.
@ -310,6 +304,7 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
DATA(ls_attri) = CORRESPONDING ty_s_attri( ls_attri2 ).
IF val IS NOT INITIAL.
ls_attri-name = val && `->` && ls_attri-name.
ls_attri-check_temp = abap_true.
ENDIF.
INSERT ls_attri INTO TABLE result.
ENDLOOP.
@ -351,14 +346,14 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
METHOD main.
"step 0 / MO_APP->MV_VAL
dissolve_init( ).
IF mv_type = cs_bind_type-one_time.
result = bind_local( ).
RETURN.
ENDIF.
"step 0 / MO_APP->MV_VAL
dissolve_init( ).
result = search_binding( ).
IF result IS NOT INITIAL.
RETURN.
@ -402,12 +397,12 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
METHOD search_binding.
LOOP AT mt_attri REFERENCE INTO DATA(lr_bind)
WHERE ( bind_type = `` OR bind_type = mv_type )
AND check_ready = abap_true
AND check_tested = abap_false.
set_attri_ready( REF #( mt_attri ) ).
LOOP AT mt_attri REFERENCE INTO DATA(lr_bind)
* WHERE ( bind_type = `` OR bind_type = mv_type )
where check_ready = abap_true.
lr_bind->check_tested = abap_true.
result = bind( lr_bind ).
IF result IS NOT INITIAL.
RETURN.
@ -420,7 +415,8 @@ CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
METHOD set_attri_ready.
LOOP AT t_attri->* REFERENCE INTO result
WHERE check_ready = abap_false.
WHERE check_ready = abap_false and
bind_type <> cs_bind_type-one_time.
CASE result->type_kind.
WHEN cl_abap_classdescr=>typekind_iref

View File

@ -174,6 +174,13 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_client~title_set.
mo_handler->ms_next-s_set-title = val.
ENDMETHOD.
METHOD z2ui5_if_client~url_param_set.
mo_handler->ms_next-s_set-search = val.
@ -208,12 +215,14 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
app = mo_handler->ms_db-app
attri = mo_handler->ms_db-t_attri
check_attri = mo_handler->ms_db-check_attri
type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
data = val
).
result = lo_binder->main( ).
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
mo_handler->ms_db-check_attri = lo_binder->mv_check_attri.
IF path = abap_false.
result = `{` && result && `}`.
@ -227,12 +236,14 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
app = mo_handler->ms_db-app
attri = mo_handler->ms_db-t_attri
check_attri = mo_handler->ms_db-check_attri
type = z2ui5_cl_fw_binding=>cs_bind_type-one_time
data = val
).
result = lo_binder->main( ).
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
mo_handler->ms_db-check_attri = lo_binder->mv_check_attri.
IF path = abap_false.
result = `{` && result && `}`.
@ -246,12 +257,14 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
app = mo_handler->ms_db-app
attri = mo_handler->ms_db-t_attri
check_attri = mo_handler->ms_db-check_attri
type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
data = val
).
result = lo_binder->main( ).
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
mo_handler->ms_db-check_attri = lo_binder->mv_check_attri.
IF path = abap_false.
result = `{` && result && `}`.

View File

@ -12,6 +12,7 @@ CLASS z2ui5_cl_fw_db DEFINITION
id_prev_app TYPE string,
id_prev_app_stack TYPE string,
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri,
check_attri type abap_bool,
app TYPE REF TO z2ui5_if_app,
END OF ty_s_db .

View File

@ -116,7 +116,6 @@ CLASS z2ui5_cl_fw_handler DEFINITION
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_handler.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -167,6 +166,8 @@ CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
result->ms_actual-check_on_navigated = abap_false.
ENDIF.
result->ms_db-check_attri = abap_false.
TRY.
FIELD-SYMBOLS <any> TYPE any.
@ -264,8 +265,7 @@ CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
ENDIF.
result = lo_resp->mo_root->stringify( ).
z2ui5_cl_fw_db=>create( id = ms_db-id
db = ms_db ).
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
ENDMETHOD.
@ -277,10 +277,11 @@ CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
CLEAR ms_next.
IF check_no_db_save = abap_false.
z2ui5_cl_fw_db=>create( id = ms_db-id
db = ms_db ).
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
ENDIF.
CLEAR result->ms_db-t_attri.
ENDMETHOD.
@ -302,8 +303,6 @@ CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
CATCH cx_root.
ENDTRY.
CLEAR result->ms_db-t_attri.
ENDMETHOD.
@ -323,6 +322,8 @@ CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
ENDIF.
CLEAR result->ms_db-t_attri.
ENDMETHOD.

View File

@ -40,6 +40,140 @@ CLASS z2ui5_cl_fw_model IMPLEMENTATION.
METHOD main_set_backend.
* DATA(lv_name_bind) = `MODEL->OBINDS`.
* FIELD-SYMBOLS <binds> TYPE any.
* UNASSIGN <binds>.
* ASSIGN (lv_name_bind) TO <binds>.
*
*
* DATA(lt_binds) = VALUE z2ui5_if_client=>ty_t_name_value( ).
*
* z2ui5_cl_fw_utility=>trans_ref_tab_2_tab(
* EXPORTING
* ir_tab_from = <binds>
* IMPORTING
* t_result = lt_binds ).
*
* LOOP AT lt_binds REFERENCE INTO DATA(lr_comp).
*
* DATA(lv_name_back) = `MO_APP->` && lr_comp->v.
*
* FIELD-SYMBOLS <backend> TYPE any.
* UNASSIGN <backend>.
* ASSIGN (lv_name_back) TO <backend>.
* IF sy-subrc <> 0.
* RAISE EXCEPTION TYPE z2ui5_cx_fw_error
* EXPORTING
* val = `NO_BACKEND_VALUE_FOUND_WITH_NAME__` && lv_name_back.
* ENDIF.
*
* DATA(lv_name_front) = `MODEL->` && lr_comp->n.
* FIELD-SYMBOLS <frontend> TYPE any.
* UNASSIGN <frontend>.
* ASSIGN (lv_name_front) TO <frontend>.
* IF sy-subrc <> 0.
* RAISE EXCEPTION TYPE z2ui5_cx_fw_error
* EXPORTING
* val = `NO_FRONTEND_VALUE_FOUND_WITH_NAME__` && lv_name_front.
* ENDIF.
*
* DATA(lv_type_kind) = z2ui5_cl_fw_utility=>rtti_get_type_kind( <backend> ).
*
* CASE lv_type_kind.
*
* WHEN `h`.
* z2ui5_cl_fw_utility=>trans_ref_tab_2_tab(
* EXPORTING
* ir_tab_from = <frontend>
* IMPORTING
* t_result = <backend> ).
*
* WHEN OTHERS.
* ASSIGN <frontend>->* TO <frontend>.
* CASE lv_type_kind.
* WHEN 'D' OR 'T'.
* z2ui5_cl_fw_utility=>trans_json_2_any(
* EXPORTING
* val = `"` && <frontend> && `"`
* CHANGING
* data = <backend> ).
*
* WHEN OTHERS.
* <backend> = <frontend>.
* ENDCASE.
*
* ENDCASE.
*
* ENDLOOP.
* FIELD-SYMBOLS <model> TYPE any.
* FIELD-SYMBOLS <comp> TYPE any.
* ASSIGN model->* TO <model>.
*
* DATA(lt_comp) = z2ui5_cl_fw_utility=>rtti_get_t_comp_by_struc( <model> ).
*
* LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
*
* DATA(lv_name_back) = `MO_APP->` && lr_comp->name.
*
* FIELD-SYMBOLS <backend> TYPE any.
* UNASSIGN <backend>.
* ASSIGN (lv_name_back) TO <backend>.
* IF sy-subrc <> 0.
* RAISE EXCEPTION TYPE z2ui5_cx_fw_error
* EXPORTING
* val = `NO_BACKEND_VALUE_FOUND_WITH_NAME__` && lv_name_back.
* ENDIF.
*
* DATA(lv_name_front) = `MODEL->` && lr_comp->name.
* FIELD-SYMBOLS <frontend> TYPE any.
* UNASSIGN <frontend>.
* ASSIGN (lv_name_front) TO <frontend>.
* IF sy-subrc <> 0.
* RAISE EXCEPTION TYPE z2ui5_cx_fw_error
* EXPORTING
* val = `NO_FRONTEND_VALUE_FOUND_WITH_NAME__` && lv_name_front.
* ENDIF.
*
* DATA(lv_type_kind) = z2ui5_cl_fw_utility=>rtti_get_type_kind( <backend> ).
*
*
*
* CASE lv_type_kind.
*
* WHEN `h`.
* z2ui5_cl_fw_utility=>trans_ref_tab_2_tab(
* EXPORTING
* ir_tab_from = <frontend>
* IMPORTING
* t_result = <backend> ).
*
* WHEN OTHERS.
* ASSIGN <frontend>->* TO <frontend>.
* CASE lv_type_kind.
* WHEN 'D' OR 'T'.
* z2ui5_cl_fw_utility=>trans_json_2_any(
* EXPORTING
* val = `"` && <frontend> && `"`
* CHANGING
* data = <backend> ).
*
* WHEN OTHERS.
* <backend> = <frontend>.
* ENDCASE.
*
* ENDCASE.
*
* ENDLOOP.
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri)
WHERE bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way.
TRY.
@ -103,6 +237,8 @@ CLASS z2ui5_cl_fw_model IMPLEMENTATION.
DATA(lr_view_model) = z2ui5_cl_fw_utility_json=>factory( ).
DATA(lo_update) = lr_view_model->add_attribute_object( z2ui5_cl_fw_binding=>cv_model_edit_name ).
* DATA(lt_binds) = VALUE z2ui5_if_client=>ty_t_name_value( ).
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
IF lr_attri->bind_type = z2ui5_cl_fw_binding=>cs_bind_type-one_time.
@ -140,12 +276,20 @@ CLASS z2ui5_cl_fw_model IMPLEMENTATION.
WHEN OTHERS.
lo_actual->add_attribute( n = lr_attri->name_front
v = /ui2/cl_json=>serialize( <attribute> )
v = z2ui5_cl_fw_utility=>trans_json_any_2( <attribute> )
apos_active = abap_false ).
ENDCASE.
ENDCASE.
* IF lr_attri->bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way.
* INSERT VALUE #( n = lr_attri->name_front v = lr_attri->name ) INTO TABLE lt_binds.
* ENDIF.
ENDLOOP.
* lo_update->add_attribute( n = `OBINDS`
* v = z2ui5_cl_fw_utility=>trans_json_any_2( lt_binds )
* apos_active = abap_false ).
result = lr_view_model->stringify( ).
ENDMETHOD.

View File

@ -48,10 +48,6 @@ CLASS z2ui5_cl_fw_utility DEFINITION PUBLIC
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS func_get_uuid_session
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS func_get_user_tech
RETURNING
VALUE(result) TYPE string.
@ -183,8 +179,6 @@ CLASS z2ui5_cl_fw_utility DEFINITION PUBLIC
RETURNING
VALUE(result) TYPE string.
CLASS-DATA sv_uuid TYPE i.
PROTECTED SECTION.
PRIVATE SECTION.
@ -257,13 +251,6 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
result = sy-uname.
ENDMETHOD.
METHOD func_get_uuid_session.
sv_uuid = sv_uuid + 1.
result = c_trim( CONV string( sv_uuid ) ).
ENDMETHOD.
METHOD func_get_uuid_32.
TRY.
@ -317,10 +304,10 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
ASSERT 1 = 0.
ENDTRY.
result = replace( val = result sub = `}` with = `$` occ = 0 ).
result = replace( val = result sub = `{` with = `$` occ = 0 ).
result = replace( val = result sub = `"` with = `$` occ = 0 ).
result = replace( val = result sub = `'` with = `$` occ = 0 ).
result = replace( val = result sub = `}` with = `0` occ = 0 ).
result = replace( val = result sub = `{` with = `0` occ = 0 ).
result = replace( val = result sub = `"` with = `0` occ = 0 ).
result = replace( val = result sub = `'` with = `0` occ = 0 ).
ENDMETHOD.

View File

@ -7,6 +7,7 @@ CLASS z2ui5_cl_app_hello_world DEFINITION PUBLIC.
DATA quantity TYPE string.
DATA check_initialized TYPE abap_bool.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -30,7 +31,7 @@ CLASS z2ui5_cl_app_hello_world IMPLEMENTATION.
ENDCASE.
client->view_display( z2ui5_cl_xml_view=>factory( client
)->shell(
* )->shell(
)->page( title = 'abap2UI5 - z2ui5_cl_app_hello_world'
)->simple_form( title = 'Hello World'
editable = abap_true

View File

@ -163,8 +163,6 @@ 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| &&
` 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| &&
@ -258,7 +256,6 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
` } }` && |\n| &&
` if (isUpdated == false){` && |\n| &&
` sap.z2ui5.oBody.EDIT = sap.z2ui5.oView.getModel().getData().EDIT;` && |\n| &&
` // sap.z2ui5.oBody.EDIT = sap.z2ui5.oLastView.getModel().getData().EDIT;` && |\n| &&
` }` && |\n| &&
|\n| &&
` if (args[ 0 ].CHECK_VIEW_DESTROY){` && |\n| &&

View File

@ -151,6 +151,10 @@ INTERFACE z2ui5_if_client
interval_ms TYPE clike
event_finished TYPE clike.
METHODS title_set
IMPORTING
val type clike.
METHODS message_toast_display
IMPORTING
text TYPE string.