* popups

* update binding

* update
This commit is contained in:
oblomov 2024-01-13 23:56:17 +01:00 committed by GitHub
parent bb38302bc4
commit 83393c3fcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 109 additions and 35 deletions

View File

@ -646,7 +646,7 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
LOOP AT lt_components INTO DATA(ls_comp).
DATA(lv_from) = ls_comp-name.
REPLACE ALL OCCURRENCES OF `_` IN lv_from WITH ``.
* REPLACE ALL OCCURRENCES OF `_` IN lv_from WITH ``.
ASSIGN COMPONENT lv_from OF STRUCTURE <ls_from> TO FIELD-SYMBOL(<comp_from>).
IF sy-subrc <> 0.
CONTINUE.

View File

@ -81,7 +81,7 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
)->text( `Define view, implement behaviour`
)->link( text = `(Example)`
target = `_blank`
href = `https://github.com/abap2UI5/abap2UI5/blob/main/src/01/02/z2ui5_cl_fw_ui_hello_world.clas.abap`
href = `https://github.com/abap2UI5/abap2UI5/blob/main/src/03/02/z2ui5_cl_app_hello_world.clas.abap`
)->label( `Step 4` ).
IF ms_home-class_editable = abap_true.

View File

@ -1,16 +1,29 @@
CLASS z2ui5_cl_popup_to_select DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
CREATE PROTECTED.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
DATA client TYPE REF TO z2ui5_if_client.
data mt_tab type string.
METHODS display.
CLASS-METHODS factory
IMPORTING
i_tab TYPE data
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_to_select.
METHODS get_selected_index
RETURNING
VALUE(result) TYPE i.
PROTECTED SECTION.
DATA check_initialized TYPE abap_bool.
DATA mr_tab TYPE REF TO data.
DATA mr_tab_popup TYPE REF TO data ##NEEDED.
DATA client TYPE REF TO z2ui5_if_client.
METHODS z2ui5_on_event.
METHODS display.
PRIVATE SECTION.
ENDCLASS.
@ -18,38 +31,98 @@ ENDCLASS.
CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
METHOD factory.
r_result = new #( ).
CREATE DATA r_result->mr_tab LIKE i_tab.
FIELD-SYMBOLS <tab> TYPE any.
ASSIGN r_result->mr_tab->* TO <tab>.
<tab> = i_tab.
ENDMETHOD.
METHOD display.
DATA(popup) = Z2UI5_cl_xml_view=>factory_popup( client )->dialog( 'abap2UI5 - Popup to select entry'
)->table(
mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_tab )
)->columns(
)->column( )->text( 'Title' )->get_parent(
)->column( )->text( 'Color' )->get_parent(
)->column( )->text( 'Info' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->get_parent(
)->items( )->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{TITLE}'
)->text( '{VALUE}'
)->text( '{INFO}'
)->text( '{DESCR}'
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
text = 'continue'
press = client->_event( 'POPUP_TABLE_CONTINUE' )
type = 'Emphasized' ).
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( client ).
FIELD-SYMBOLS <tab> TYPE any.
ASSIGN mr_tab->* TO <tab>.
popup = popup->table_select_dialog(
items = `{path:'` && client->_bind_edit( val = <tab> path = abap_true ) && `', sorter : { path : 'STORAGE_LOCATION', descending : false } }`
cancel = client->_event( 'CANCEL' )
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
).
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <tab> ).
DATA(lo_table) = CAST cl_abap_tabledescr( lo_type ).
DATA(lo_struct) = CAST cl_abap_structdescr( lo_table->get_table_line_type( ) ).
DATA(lt_comp) = lo_struct->get_components( ).
DATA(list) = popup->column_list_item( valign = `Top` selected = `{SELKZ}` ).
DATA(cells) = popup->cells( ).
LOOP AT lt_comp INTO DATA(ls_comp).
cells->text( text = `{` && ls_comp-name && `}` ).
ENDLOOP.
DATA(columns) = list->columns( ).
LOOP AT lt_comp INTO ls_comp.
columns->column( width = '8rem' )->header( ns = `` )->text( text = ls_comp-name ).
ENDLOOP.
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
IF check_initialized = abap_false.
check_initialized = abap_true.
* Z2UI5_f4_set_data( ).
display( ).
RETURN.
ENDIF.
z2ui5_on_event( ).
ENDMETHOD.
METHOD z2ui5_on_event.
CASE client->get( )-event.
WHEN 'CONFIRM'.
* DELETE mt_f4_table WHERE selkz <> abap_true.
* mv_product = VALUE #( mt_f4_table[ 1 ]-product OPTIONAL ).
* client->view_model_update( ).
WHEN 'CANCEL'.
client->popup_destroy( ).
WHEN 'SEARCH'.
* DATA(lt_arg) = client->get( )-t_event_arg.
* READ TABLE lt_arg INTO DATA(ls_arg) INDEX 1.
* Z2UI5_f4_set_data( ).
* LOOP AT mt_f4_table INTO DATA(ls_tab).
* IF ls_tab-product CS ls_arg.
* CONTINUE.
* ENDIF.
* DELETE mt_f4_table.
* ENDLOOP.
client->popup_model_update( ).
ENDCASE.
ENDMETHOD.
METHOD get_selected_index.
result = 1.
ENDMETHOD.
ENDCLASS.

View File

@ -6,6 +6,7 @@ CLASS z2ui5_cl_test_features DEFINITION PUBLIC.
DATA mv_check_popup_active TYPE abap_bool.
DATA mv_check_initialized TYPE abap_bool.
PROTECTED SECTION.
METHODS display_view
@ -17,7 +18,7 @@ ENDCLASS.
CLASS Z2UI5_CL_TEST_FEATURES IMPLEMENTATION.
CLASS z2ui5_cl_test_features IMPLEMENTATION.
METHOD display_view.
@ -44,10 +45,10 @@ CLASS Z2UI5_CL_TEST_FEATURES IMPLEMENTATION.
METHOD z2ui5_if_app~main.
if mv_check_initialized = abap_false.
mv_check_initialized = abap_true.
display_view( client ).
endif.
IF mv_check_initialized = abap_false.
mv_check_initialized = abap_true.
display_view( client ).
ENDIF.
* IF client->get( )-check_on_navigated = abap_true.
* display_view( client ).
* ENDIF.
@ -69,7 +70,7 @@ CLASS Z2UI5_CL_TEST_FEATURES IMPLEMENTATION.
CASE client->get( )-event.
WHEN 'z2ui5_cl_ui_pop_messages'.
data(lo_popup_msg) = z2ui5_cl_popup_messages=>factory(
DATA(lo_popup_msg) = z2ui5_cl_popup_messages=>factory(
i_messages = VALUE #(
( message = 'An empty Report field causes an empty XML Message to be sent' type = 'E' id = 'MSG1' number = '001' )
( message = 'Check was executed for wrong Scenario' type = 'E' id = 'MSG1' number = '002' )