From 109c8c3be4a5e6742964019106e8cf385d1e6df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 19 Feb 2020 13:55:19 +0100 Subject: [PATCH] Patch: Remember patched lines when cancel Commit (#3212) Co-authored-by: Lars Hvam --- src/ui/core/zcl_abapgit_html.clas.abap | 12 ++++++++++-- src/ui/core/zif_abapgit_html.intf.abap | 3 ++- src/ui/zcl_abapgit_gui_page_diff.clas.abap | 16 ++++++++++------ src/utils/zcl_abapgit_diff.clas.abap | 22 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/ui/core/zcl_abapgit_html.clas.abap b/src/ui/core/zcl_abapgit_html.clas.abap index 25ec86207..f6f200b36 100644 --- a/src/ui/core/zcl_abapgit_html.clas.abap +++ b/src/ui/core/zcl_abapgit_html.clas.abap @@ -63,6 +63,7 @@ CLASS zcl_abapgit_html DEFINITION METHODS checkbox IMPORTING iv_id TYPE string + iv_checked TYPE abap_bool OPTIONAL RETURNING VALUE(rv_html) TYPE string. @@ -84,7 +85,13 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION. METHOD checkbox. - rv_html = ||. + DATA: lv_checked TYPE string. + + IF iv_checked = abap_true. + lv_checked = |checked|. + ENDIF. + + rv_html = ||. ENDMETHOD. @@ -308,7 +315,8 @@ CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION. METHOD zif_abapgit_html~add_checkbox. - add( checkbox( iv_id ) ). + add( checkbox( iv_id = iv_id + iv_checked = iv_checked ) ). ENDMETHOD. diff --git a/src/ui/core/zif_abapgit_html.intf.abap b/src/ui/core/zif_abapgit_html.intf.abap index 6136e1a42..369322084 100644 --- a/src/ui/core/zif_abapgit_html.intf.abap +++ b/src/ui/core/zif_abapgit_html.intf.abap @@ -38,7 +38,8 @@ INTERFACE zif_abapgit_html PUBLIC. !iv_title TYPE string OPTIONAL. METHODS add_checkbox IMPORTING - iv_id TYPE string. + iv_id TYPE string + iv_checked TYPE abap_bool OPTIONAL. CLASS-METHODS a IMPORTING !iv_txt TYPE string diff --git a/src/ui/zcl_abapgit_gui_page_diff.clas.abap b/src/ui/zcl_abapgit_gui_page_diff.clas.abap index 13f0bdb23..fb6125822 100644 --- a/src/ui/zcl_abapgit_gui_page_diff.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_diff.clas.abap @@ -113,7 +113,9 @@ CLASS zcl_abapgit_gui_page_diff DEFINITION iv_patch_line_possible TYPE abap_bool iv_filename TYPE string is_diff_line TYPE zif_abapgit_definitions=>ty_diff - iv_index TYPE sy-tabix. + iv_index TYPE sy-tabix + RAISING + zcx_abapgit_exception. METHODS start_staging IMPORTING it_postdata TYPE cnht_post_data_tab @@ -981,17 +983,19 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION. patch TYPE string VALUE `patch` ##NO_TEXT, END OF c_css_class. - DATA: lv_id TYPE string, - lv_object TYPE string. + DATA: lv_id TYPE string, + lv_patched TYPE abap_bool. - lv_object = iv_filename. + lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ). IF iv_patch_line_possible = abap_true. - lv_id = |{ lv_object }_{ mv_section_count }_{ iv_index }|. + lv_id = |{ iv_filename }_{ mv_section_count }_{ iv_index }|. io_html->add( || ). - io_html->add_checkbox( iv_id = |patch_line_{ lv_id }| ). + io_html->add_checkbox( + iv_id = |patch_line_{ lv_id }| + iv_checked = lv_patched ). io_html->add( || ). ELSE. diff --git a/src/utils/zcl_abapgit_diff.clas.abap b/src/utils/zcl_abapgit_diff.clas.abap index 5fcafd141..c33957436 100644 --- a/src/utils/zcl_abapgit_diff.clas.abap +++ b/src/utils/zcl_abapgit_diff.clas.abap @@ -32,6 +32,13 @@ CLASS zcl_abapgit_diff DEFINITION METHODS get_beacons RETURNING VALUE(rt_beacons) TYPE zif_abapgit_definitions=>ty_string_tt . + METHODS is_line_patched + IMPORTING + iv_index TYPE i + RETURNING + VALUE(rv_patched) TYPE abap_bool + RAISING + zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. @@ -412,4 +419,19 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. ENDMETHOD. + + METHOD is_line_patched. + + FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. + + READ TABLE mt_diff INDEX iv_index + ASSIGNING . + IF sy-subrc = 0. + rv_patched = -patch_flag. + ELSE. + zcx_abapgit_exception=>raise( |Diff line not found { iv_index }| ). + ENDIF. + + ENDMETHOD. + ENDCLASS.