From 2ab226100cb37000a34d4579a39f5f77d3f56e18 Mon Sep 17 00:00:00 2001 From: Daniel Wegner Date: Thu, 13 Jul 2023 18:38:12 +0200 Subject: [PATCH] add sap.m.Tree & sap.m.StandardTreeItem (#378) * add sap.m.Tree & sap.m.StandardTreeItem * add recursive table handling * add recursive table handling 2 * abaplint fix Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * abaplint fix Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --------- Co-authored-by: Daniel Wegner Co-authored-by: oblomov <102328295+oblomov-dev@users.noreply.github.com> Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- ...z2ui5_cl_http_handler.clas.locals_imp.abap | 30 ++-- src/z2ui5_cl_xml_view.clas.abap | 167 +++++++++++------- 2 files changed, 126 insertions(+), 71 deletions(-) diff --git a/src/z2ui5_cl_http_handler.clas.locals_imp.abap b/src/z2ui5_cl_http_handler.clas.locals_imp.abap index 6da3b398..91f6d9f3 100644 --- a/src/z2ui5_cl_http_handler.clas.locals_imp.abap +++ b/src/z2ui5_cl_http_handler.clas.locals_imp.abap @@ -12,7 +12,7 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check. data_rtti TYPE string, check_ref_data TYPE abap_bool, END OF ty_attri. - TYPES ty_T_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY. + TYPES ty_t_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY. DATA: BEGIN OF ms_error, @@ -201,7 +201,7 @@ CLASS z2ui5_lcl_fw_handler DEFINITION. END OF cs_bind_type. TYPES: - BEGIN OF ty_S_next2, + BEGIN OF ty_s_next2, t_scroll TYPE z2ui5_if_client=>ty_t_name_value, title TYPE string, search TYPE string, @@ -269,7 +269,7 @@ CLASS z2ui5_lcl_fw_handler DEFINITION. 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, + s_set TYPE ty_s_next2, END OF ty_s_next. DATA ms_actual TYPE z2ui5_if_client=>ty_s_get. @@ -622,7 +622,13 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION. ASSIGN ->* TO FIELD-SYMBOL(). IF sy-subrc = 0. - = . + CASE ls_comp-type->kind. + WHEN cl_abap_typedescr=>kind_table. + trans_ref_tab_2_tab( EXPORTING ir_tab_from = + IMPORTING t_result = ). + WHEN OTHERS. + = . + ENDCASE. ENDIF. ENDLOOP. @@ -1290,7 +1296,7 @@ CLASS z2ui5_lcl_fw_db IMPLEMENTATION. METHOD cleanup. - data(lv_timestampl) = z2ui5_lcl_utility=>get_timestampl( ). + DATA(lv_timestampl) = z2ui5_lcl_utility=>get_timestampl( ). DATA(lv_ts_four_hours_ago) = cl_abap_tstmp=>subtractsecs( tstmp = lv_timestampl secs = 60 * 60 * 4 ). @@ -1371,9 +1377,9 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. CATCH cx_root. ENDTRY. - IF ss_config-search CS `scenario=LAUNCHPAD`. - result->ms_actual-check_launchpad_active = abap_true. - ENDIF. + IF ss_config-search CS `scenario=LAUNCHPAD`. + result->ms_actual-check_launchpad_active = abap_true. + ENDIF. ENDMETHOD. @@ -1393,10 +1399,10 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. * 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. + 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 ). + lo_resp->add_attribute( n = `SEARCH` v = ms_next-s_set-search ). ENDIF. result = lo_resp->get_root( )->stringify( ). @@ -1690,7 +1696,7 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. r_result->ms_actual-check_launchpad_active = ms_actual-check_launchpad_active. 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. ENDMETHOD. @@ -1724,7 +1730,7 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION. check_launchpad_active = mo_handler->ms_actual-check_launchpad_active t_event_arg = mo_handler->ms_actual-t_event_arg t_scroll_pos = mo_handler->ms_actual-t_scroll_pos - s_DRAFT = CORRESPONDING #( mo_handler->ms_db ) + s_draft = CORRESPONDING #( mo_handler->ms_db ) check_on_navigated = mo_handler->ms_actual-check_on_navigated s_config = z2ui5_lcl_fw_handler=>ss_config ). result-s_draft-app = mo_handler->ms_db-o_app. diff --git a/src/z2ui5_cl_xml_view.clas.abap b/src/z2ui5_cl_xml_view.clas.abap index c00a320c..61857f1a 100644 --- a/src/z2ui5_cl_xml_view.clas.abap +++ b/src/z2ui5_cl_xml_view.clas.abap @@ -1243,6 +1243,28 @@ CLASS z2ui5_cl_xml_view DEFINITION !press TYPE clike OPTIONAL RETURNING VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + METHODS tree + IMPORTING + !items TYPE clike OPTIONAL + !headerText TYPE clike OPTIONAL + !footerText TYPE clike OPTIONAL + !mode TYPE clike OPTIONAL + !includeItemInSelection TYPE abap_bool OPTIONAL + !inset TYPE abap_bool OPTIONAL + !width TYPE clike OPTIONAL + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_xml_view . + METHODS standard_tree_item + IMPORTING + !title TYPE clike OPTIONAL + !icon TYPE clike OPTIONAL + !press TYPE clike OPTIONAL + !detailPress TYPE clike OPTIONAL + !type TYPE clike OPTIONAL + !selected TYPE clike OPTIONAL + !counter TYPE clike OPTIONAL + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_xml_view . PROTECTED SECTION. DATA mv_name TYPE string. @@ -1276,7 +1298,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD appointments. - result = _generic( name = `appointments` ). + result = _generic( name = `appointments` ). ENDMETHOD. @@ -1752,33 +1774,33 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD filter_bar. - result = _generic( name = `FilterBar` - ns = 'fb' - t_prop = VALUE #( ( n = 'useToolbar' v = usetoolbar ) - ( n = 'search' v = search ) - ( n = 'filterChange' v = filterchange ) ) ). + result = _generic( name = `FilterBar` + ns = 'fb' + t_prop = VALUE #( ( n = 'useToolbar' v = usetoolbar ) + ( n = 'search' v = search ) + ( n = 'filterChange' v = filterchange ) ) ). ENDMETHOD. METHOD filter_control. result = _generic( name = `control` - ns = 'fb' ). + ns = 'fb' ). ENDMETHOD. METHOD filter_group_item. - result = _generic( name = `FilterGroupItem` - ns = 'fb' - t_prop = VALUE #( ( n = 'name' v = name ) - ( n = 'label' v = label ) - ( n = 'groupName' v = groupname ) - ( n = 'visibleInFilterBar' v = visibleinfilterbar ) ) ). + result = _generic( name = `FilterGroupItem` + ns = 'fb' + t_prop = VALUE #( ( n = 'name' v = name ) + ( n = 'label' v = label ) + ( n = 'groupName' v = groupname ) + ( n = 'visibleInFilterBar' v = visibleinfilterbar ) ) ). ENDMETHOD. METHOD filter_group_items. result = _generic( name = `filterGroupItems` - ns = 'fb' ). + ns = 'fb' ). ENDMETHOD. @@ -1828,7 +1850,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD formatted_text. result = me. _generic( name = `FormattedText` - t_prop = VALUE #( ( n = `htmlText` v = htmltext ) ) ). + t_prop = VALUE #( ( n = `htmlText` v = htmltext ) ) ). ENDMETHOD. @@ -1836,14 +1858,14 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. result = me. _generic( - name = `GenericTile` - ns = `` - t_prop = VALUE #( - ( n = `class` v = class ) - ( n = `header` v = header ) - ( n = `press` v = press ) - ( n = `frameType` v = frametype ) - ( n = `subheader` v = subheader ) ) ). + name = `GenericTile` + ns = `` + t_prop = VALUE #( + ( n = `class` v = class ) + ( n = `header` v = header ) + ( n = `press` v = press ) + ( n = `frameType` v = frametype ) + ( n = `subheader` v = subheader ) ) ). ENDMETHOD. @@ -1890,7 +1912,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. result = me. _generic( name = `GridData` ns = `layout` - t_prop = VALUE #( ( n = `span` v = span ) ) ). + t_prop = VALUE #( ( n = `span` v = span ) ) ). ENDMETHOD. @@ -1971,10 +1993,10 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. DATA(ls_config) = mo_root->mi_client->get( )-s_config. result = lcl_utility=>get_replace( - iv_val = xml - iv_begin = 'controllerName="' - iv_end = '"' - iv_replace = `controllerName="` && ls_config-controller_name && `"` ). + iv_val = xml + iv_begin = 'controllerName="' + iv_end = '"' + iv_replace = `controllerName="` && ls_config-controller_name && `"` ). ENDMETHOD. @@ -2029,12 +2051,12 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. result = _generic( name = `IllustratedMessage` t_prop = VALUE #( ( n = `enableVerticalResponsiveness` v = enableVerticalResponsiveness ) - ( n = `illustrationType` v = illustrationType ) - ( n = `enableFormattedText` v = lcl_utility=>get_json_boolean( enableFormattedText ) ) - ( n = `illustrationSize` v = illustrationSize ) - ( n = `description` v = description ) - ( n = `title` v = title ) -) ). + ( n = `illustrationType` v = illustrationType ) + ( n = `enableFormattedText` v = lcl_utility=>get_json_boolean( enableFormattedText ) ) + ( n = `illustrationSize` v = illustrationSize ) + ( n = `description` v = description ) + ( n = `title` v = title ) + ) ). ENDMETHOD. @@ -2076,7 +2098,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD input_list_item. result = _generic( name = `InputListItem` - t_prop = VALUE #( ( n = `label` v = label ) ) ). + t_prop = VALUE #( ( n = `label` v = label ) ) ). ENDMETHOD. @@ -2149,7 +2171,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD intervalheaders. - result = _generic( name = `intervalHeaders` ). + result = _generic( name = `intervalHeaders` ). ENDMETHOD. @@ -2272,9 +2294,9 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD mid_column_pages. - result = _generic( name = `midColumnPages` - ns = `f` - t_prop = VALUE #( ( n = `id` v = id ) ) ). + result = _generic( name = `midColumnPages` + ns = `f` + t_prop = VALUE #( ( n = `id` v = id ) ) ). ENDMETHOD. @@ -2526,15 +2548,15 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD radio_button_group. result = _generic( name = `RadioButtonGroup` - t_prop = VALUE #( ( n = `id` v = id ) - ( n = `columns` v = columns ) - ( n = `editable` v = lcl_utility=>get_json_boolean( editable ) ) - ( n = `enabled` v = lcl_utility=>get_json_boolean( enabled ) ) - ( n = `selectedIndex` v = selectedIndex ) - ( n = `textDirection` v = textDirection ) - ( n = `valueState` v = valueState ) - ( n = `width` v = width ) - ) ). + t_prop = VALUE #( ( n = `id` v = id ) + ( n = `columns` v = columns ) + ( n = `editable` v = lcl_utility=>get_json_boolean( editable ) ) + ( n = `enabled` v = lcl_utility=>get_json_boolean( enabled ) ) + ( n = `selectedIndex` v = selectedIndex ) + ( n = `textDirection` v = textDirection ) + ( n = `valueState` v = valueState ) + ( n = `width` v = width ) + ) ). ENDMETHOD. @@ -2556,7 +2578,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD rows. - result = _generic( name = `rows` ). + result = _generic( name = `rows` ). ENDMETHOD. @@ -2774,6 +2796,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD tilecontent. + result = _generic( name = `TileContent` ns = `` t_prop = VALUE #( @@ -2865,7 +2888,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD tree_columns. result = _generic( name = `columns` - ns = `table` ). + ns = `table` ). ENDMETHOD. @@ -2889,7 +2912,7 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD tree_template. result = _generic( name = `template` - ns = `table` ). + ns = `table` ). ENDMETHOD. @@ -2907,21 +2930,21 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD ui_columns. - result = _generic( name = `columns` - ns = 'table' ). + result = _generic( name = `columns` + ns = 'table' ). ENDMETHOD. METHOD ui_extension. - result = _generic( name = `extension` - ns = 'table' ). + result = _generic( name = `extension` + ns = 'table' ). ENDMETHOD. METHOD ui_row_action. - result = _generic( name = `RowAction` - ns = `table` ). + result = _generic( name = `RowAction` + ns = `table` ). ENDMETHOD. @@ -2981,8 +3004,8 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. METHOD ui_template. - result = _generic( name = `template` - ns = 'table' ). + result = _generic( name = `template` + ns = 'table' ). ENDMETHOD. @@ -3063,6 +3086,32 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION. ENDMETHOD. + METHOD tree. + result = _generic( name = `Tree` + t_prop = VALUE #( + ( n = `items` v = items ) + ( n = `headerText` v = headertext ) + ( n = `footerText` v = footerText ) + ( n = `mode` v = mode ) + ( n = `width` v = width ) + ( n = `includeItemInSelection` v = lcl_utility=>get_json_boolean( includeItemInSelection ) ) + ( n = `inset` v = lcl_utility=>get_json_boolean( inset ) ) + ) ). + ENDMETHOD. + + METHOD standard_tree_item. + result = me. + _generic( name = `StandardTreeItem` + t_prop = VALUE #( ( n = `title` v = title ) + ( n = `icon` v = icon ) + ( n = `press` v = press ) + ( n = `detailPress` v = detailPress ) + ( n = `type` v = type ) + ( n = `counter` v = counter ) + ( n = `selected` v = selected ) ) ). + + endmethod. + METHOD numericcontent. result = _generic( name = `NumericContent`