From 86262f4e54d468e6aecec8ad0e8f193ba454403b Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Mon, 15 Nov 2021 15:48:19 +0000 Subject: [PATCH] Diff/Patch: Add "Filter by Object Type" (#5129) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Diff/Patch: Add "Filter by Object Type" Enhancement of filter options: - Renamed "Type" to "Extension" - Added "Object Type" Closes #3249 * Switch to INSERT Co-authored-by: Lars Hvam Co-authored-by: Christian Günter --- src/ui/zcl_abapgit_gui_page_diff.clas.abap | 50 ++++++++++++++-------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/ui/zcl_abapgit_gui_page_diff.clas.abap b/src/ui/zcl_abapgit_gui_page_diff.clas.abap index b238d4378..95647f4d5 100644 --- a/src/ui/zcl_abapgit_gui_page_diff.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_diff.clas.abap @@ -254,24 +254,23 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION. DATA: lo_sub_filter TYPE REF TO zcl_abapgit_html_toolbar, - lt_types TYPE string_table, - lt_users TYPE string_table. + lv_user TYPE string, + lt_extensions TYPE SORTED TABLE OF string WITH UNIQUE DEFAULT KEY, + lt_obj_types TYPE SORTED TABLE OF string WITH UNIQUE DEFAULT KEY, + lt_users TYPE SORTED TABLE OF string WITH UNIQUE DEFAULT KEY. FIELD-SYMBOLS: LIKE LINE OF mt_diff_files, TYPE string. - " Get unique + + " Get unique filter values LOOP AT mt_diff_files ASSIGNING . - APPEND -type TO lt_types. - APPEND -changed_by TO lt_users. + lv_user = -changed_by. + INSERT -type INTO TABLE lt_extensions. + INSERT -obj_type INTO TABLE lt_obj_types. + INSERT lv_user INTO TABLE lt_users. ENDLOOP. - SORT lt_types. - DELETE ADJACENT DUPLICATES FROM lt_types. - - SORT lt_users. - DELETE ADJACENT DUPLICATES FROM lt_users. - - IF lines( lt_types ) > 1 OR lines( lt_users ) > 1. + IF lines( lt_extensions ) > 1 OR lines( lt_obj_types ) > 1 OR lines( lt_users ) > 1. CREATE OBJECT lo_sub_filter EXPORTING iv_id = 'diff-filter'. IF lines( lt_users ) > 1. @@ -281,21 +280,33 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION. iv_chk = abap_false ). ENDIF. - " File types - IF lines( lt_types ) > 1. - lo_sub_filter->add( iv_txt = 'TYPE' + " File extensions + IF lines( lt_extensions ) > 1. + lo_sub_filter->add( iv_txt = 'Extension' iv_typ = zif_abapgit_html=>c_action_type-separator ). - LOOP AT lt_types ASSIGNING . + LOOP AT lt_extensions ASSIGNING . lo_sub_filter->add( iv_txt = iv_typ = zif_abapgit_html=>c_action_type-onclick - iv_aux = 'type' + iv_aux = 'extension' + iv_chk = abap_true ). + ENDLOOP. + ENDIF. + + " Object types + IF lines( lt_obj_types ) > 1. + lo_sub_filter->add( iv_txt = 'Object Type' + iv_typ = zif_abapgit_html=>c_action_type-separator ). + LOOP AT lt_obj_types ASSIGNING . + lo_sub_filter->add( iv_txt = + iv_typ = zif_abapgit_html=>c_action_type-onclick + iv_aux = 'object-type' iv_chk = abap_true ). ENDLOOP. ENDIF. " Changed by IF lines( lt_users ) > 1. - lo_sub_filter->add( iv_txt = 'CHANGED BY' + lo_sub_filter->add( iv_txt = 'Changed By' iv_typ = zif_abapgit_html=>c_action_type-separator ). LOOP AT lt_users ASSIGNING . lo_sub_filter->add( iv_txt = @@ -804,7 +815,8 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION. CREATE OBJECT ri_html TYPE zcl_abapgit_html. - ri_html->add( |
| ). ri_html->add( render_diff_head( is_diff ) ).