diff --git a/src/git/zcl_abapgit_git_pack.clas.abap b/src/git/zcl_abapgit_git_pack.clas.abap index 51c622d11..6e566de7f 100644 --- a/src/git/zcl_abapgit_git_pack.clas.abap +++ b/src/git/zcl_abapgit_git_pack.clas.abap @@ -304,21 +304,24 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION. METHOD decode_deltas. - DATA: ls_object LIKE LINE OF ct_objects, - lt_deltas LIKE ct_objects. + DATA: ls_object LIKE LINE OF ct_objects, + lo_progress TYPE REF TO zcl_abapgit_progress, + lt_deltas LIKE ct_objects. - zcl_abapgit_progress=>show( iv_key = 'Decode' - iv_current = 1 - iv_total = 1 - iv_text = 'Deltas' ) ##NO_TEXT. - LOOP AT ct_objects INTO ls_object WHERE type = zif_abapgit_definitions=>gc_type-ref_d. DELETE ct_objects INDEX sy-tabix. APPEND ls_object TO lt_deltas. ENDLOOP. + CREATE OBJECT lo_progress + EXPORTING + iv_total = lines( lt_deltas ). + LOOP AT lt_deltas INTO ls_object. + lo_progress->show( iv_current = sy-tabix + iv_text = 'Decode deltas' ) ##NO_TEXT. + delta( EXPORTING is_object = ls_object CHANGING ct_objects = ct_objects ). ENDLOOP. @@ -514,12 +517,12 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION. METHOD encode. - DATA: lv_sha1 TYPE x LENGTH 20, - lv_adler32 TYPE zcl_abapgit_hash=>ty_adler32, - lv_compressed TYPE xstring, - lv_xstring TYPE xstring, - lv_objects_total TYPE i, - lv_objects_processed TYPE i. + DATA: lv_sha1 TYPE x LENGTH 20, + lv_adler32 TYPE zcl_abapgit_hash=>ty_adler32, + lv_compressed TYPE xstring, + lv_xstring TYPE xstring, + lo_progress TYPE REF TO zcl_abapgit_progress, + lv_objects_total TYPE i. FIELD-SYMBOLS: LIKE LINE OF it_objects. @@ -532,13 +535,15 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION. lv_objects_total = lines( it_objects ). + CREATE OBJECT lo_progress + EXPORTING + iv_total = lv_objects_total. + LOOP AT it_objects ASSIGNING . - lv_objects_processed = sy-tabix. - - cl_progress_indicator=>progress_indicate( i_text = |encoding objects &1% ( &2 of &3 )| - i_processed = lv_objects_processed - i_total = lv_objects_total ). + lo_progress->show( + iv_current = sy-tabix + iv_text = |Encoding objects ( { sy-tabix } of { lv_objects_total } )| ). lv_xstring = type_and_length( iv_type = -type diff --git a/src/utils/zcl_abapgit_progress.clas.abap b/src/utils/zcl_abapgit_progress.clas.abap index 888acf29e..e48c52249 100644 --- a/src/utils/zcl_abapgit_progress.clas.abap +++ b/src/utils/zcl_abapgit_progress.clas.abap @@ -5,34 +5,35 @@ CLASS zcl_abapgit_progress DEFINITION PUBLIC SECTION. - CLASS-METHODS: - show - IMPORTING - !iv_key TYPE string - VALUE(iv_current) TYPE i - !iv_total TYPE i - !iv_text TYPE csequence . + METHODS show + IMPORTING + VALUE(iv_current) TYPE i + !iv_text TYPE csequence . + METHODS constructor + IMPORTING + !iv_total TYPE i . + PROTECTED SECTION. + DATA mv_total TYPE i . + + METHODS calc_pct + IMPORTING + !iv_current TYPE i + RETURNING + VALUE(rv_pct) TYPE i . PRIVATE SECTION. - CLASS-METHODS: - calc_pct - IMPORTING - !iv_current TYPE i - !iv_total TYPE i - RETURNING - VALUE(rv_pct) TYPE i . ENDCLASS. -CLASS zcl_abapgit_progress IMPLEMENTATION. +CLASS ZCL_ABAPGIT_PROGRESS IMPLEMENTATION. METHOD calc_pct. DATA: lv_f TYPE f. - lv_f = ( iv_current / iv_total ) * 100. + lv_f = ( iv_current / mv_total ) * 100. rv_pct = lv_f. IF rv_pct = 100. @@ -42,20 +43,23 @@ CLASS zcl_abapgit_progress IMPLEMENTATION. ENDMETHOD. + METHOD constructor. + + mv_total = iv_total. + + ENDMETHOD. + + METHOD show. - DATA: lv_pct TYPE i, - lv_text TYPE string. + DATA: lv_pct TYPE i. - lv_pct = calc_pct( iv_current = iv_current - iv_total = iv_total ). - CONCATENATE iv_key '-' iv_text INTO lv_text SEPARATED BY space. + lv_pct = calc_pct( iv_current ). CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = lv_pct - text = lv_text. + text = iv_text. ENDMETHOD. - ENDCLASS. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index a9199c193..b97d6d33c 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -189,25 +189,27 @@ CLASS lcl_objects_activation IMPLEMENTATION. METHOD activate_new. + DATA: lo_progress TYPE REF TO zcl_abapgit_progress. + IF gt_objects IS INITIAL. RETURN. ENDIF. + CREATE OBJECT lo_progress + EXPORTING + iv_total = 100. + IF iv_ddic = abap_true. - zcl_abapgit_progress=>show( iv_key = 'Activating DDIC' - iv_current = '98' - iv_total = '100' - iv_text = '...' ). + lo_progress->show( iv_current = 98 + iv_text = 'Activating DDIC' ). activate_ddic( ). ELSE. - zcl_abapgit_progress=>show( iv_key = 'Activating non DDIC' - iv_current = '98' - iv_total = '100' - iv_text = '...' ). + lo_progress->show( iv_current = 98 + iv_text = 'Activating non DDIC' ). activate_old( ). diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index 54adba5f7..52a431404 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -293,7 +293,7 @@ CLASS lcl_objects IMPLEMENTATION. METHOD delete. DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, -* lv_tabclass TYPE dd02l-tabclass, + lo_progress TYPE REF TO zcl_abapgit_progress, lt_tadir LIKE it_tadir. FIELD-SYMBOLS: LIKE LINE OF it_tadir. @@ -302,11 +302,13 @@ CLASS lcl_objects IMPLEMENTATION. zcl_abapgit_dependencies=>resolve( CHANGING ct_tadir = lt_tadir ). + CREATE OBJECT lo_progress + EXPORTING + iv_total = lines( lt_tadir ). + LOOP AT lt_tadir ASSIGNING . - zcl_abapgit_progress=>show( iv_key = 'Delete' - iv_current = sy-tabix - iv_total = lines( lt_tadir ) - iv_text = -obj_name ) ##NO_TEXT. + lo_progress->show( iv_current = sy-tabix + iv_text = |Delete { -obj_name }| ) ##NO_TEXT. CLEAR ls_item. ls_item-obj_type = -object. @@ -424,18 +426,19 @@ CLASS lcl_objects IMPLEMENTATION. METHOD deserialize. - DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, - lv_cancel TYPE abap_bool, - li_obj TYPE REF TO zif_abapgit_object, - lt_remote TYPE zif_abapgit_definitions=>ty_files_tt, - lv_package TYPE devclass, - lo_files TYPE REF TO zcl_abapgit_objects_files, - lo_xml TYPE REF TO zcl_abapgit_xml_input, - lt_results TYPE zif_abapgit_definitions=>ty_results_tt, - lt_ddic TYPE TABLE OF ty_deserialization, - lt_rest TYPE TABLE OF ty_deserialization, - lt_late TYPE TABLE OF ty_deserialization, - lv_path TYPE string. + DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, + lv_cancel TYPE abap_bool, + li_obj TYPE REF TO zif_abapgit_object, + lt_remote TYPE zif_abapgit_definitions=>ty_files_tt, + lv_package TYPE devclass, + lo_files TYPE REF TO zcl_abapgit_objects_files, + lo_xml TYPE REF TO zcl_abapgit_xml_input, + lt_results TYPE zif_abapgit_definitions=>ty_results_tt, + lt_ddic TYPE TABLE OF ty_deserialization, + lt_rest TYPE TABLE OF ty_deserialization, + lt_late TYPE TABLE OF ty_deserialization, + lo_progress TYPE REF TO zcl_abapgit_progress, + lv_path TYPE string. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_result, LIKE LINE OF lt_late. @@ -457,12 +460,14 @@ CLASS lcl_objects IMPLEMENTATION. warning_overwrite( CHANGING ct_results = lt_results ). + CREATE OBJECT lo_progress + EXPORTING + iv_total = lines( lt_results ). + LOOP AT lt_results ASSIGNING WHERE obj_type IS NOT INITIAL AND NOT ( lstate = zif_abapgit_definitions=>gc_state-added AND rstate IS INITIAL ). - zcl_abapgit_progress=>show( iv_key = 'Deserialize' - iv_current = sy-tabix - iv_total = lines( lt_results ) - iv_text = -obj_name ) ##NO_TEXT. + lo_progress->show( iv_current = sy-tabix + iv_text = |Deserialize { -obj_name }| ) ##NO_TEXT. CLEAR ls_item. ls_item-obj_type = -obj_type. @@ -546,16 +551,21 @@ CLASS lcl_objects IMPLEMENTATION. METHOD deserialize_objects. + DATA: lo_progress TYPE REF TO zcl_abapgit_progress. + FIELD-SYMBOLS: LIKE LINE OF it_objects. lcl_objects_activation=>clear( ). + CREATE OBJECT lo_progress + EXPORTING + iv_total = lines( it_objects ). + LOOP AT it_objects ASSIGNING . - zcl_abapgit_progress=>show( iv_key = |Deserialize { iv_descr }| - iv_current = sy-tabix - iv_total = lines( it_objects ) - iv_text = -item-obj_name ) ##NO_TEXT. + lo_progress->show( + iv_current = sy-tabix + iv_text = |Deserialize { iv_descr } - { -item-obj_name }| ) ##NO_TEXT. -obj->deserialize( iv_package = -package io_xml = -xml ). diff --git a/src/zabapgit_page_branch_overview.prog.abap b/src/zabapgit_page_branch_overview.prog.abap index 391e8e149..d91457978 100644 --- a/src/zabapgit_page_branch_overview.prog.abap +++ b/src/zabapgit_page_branch_overview.prog.abap @@ -158,12 +158,17 @@ CLASS lcl_branch_overview IMPLEMENTATION. METHOD get_git_objects. - DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list. + DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list, + lo_progress TYPE REF TO zcl_abapgit_progress. - zcl_abapgit_progress=>show( iv_key = 'Get git objects' - iv_current = 1 - iv_total = 1 - iv_text = io_repo->get_name( ) ) ##NO_TEXT. + + CREATE OBJECT lo_progress + EXPORTING + iv_total = 1. + + lo_progress->show( + iv_current = 1 + iv_text = |Get git objects { io_repo->get_name( ) }| ) ##NO_TEXT. * get objects directly from git, mo_repo only contains a shallow clone of only * the selected branch diff --git a/src/zabapgit_page_diff.prog.abap b/src/zabapgit_page_diff.prog.abap index c966ab0d5..130665f6e 100644 --- a/src/zabapgit_page_diff.prog.abap +++ b/src/zabapgit_page_diff.prog.abap @@ -346,17 +346,22 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. METHOD render_content. - DATA ls_diff_file LIKE LINE OF mt_diff_files. + DATA: ls_diff_file LIKE LINE OF mt_diff_files, + lo_progress TYPE REF TO zcl_abapgit_progress. + CREATE OBJECT ro_html. + CREATE OBJECT lo_progress + EXPORTING + iv_total = lines( mt_diff_files ). + ro_html->add( |
| ). ro_html->add( lcl_gui_chunk_lib=>render_js_error_banner( ) ). LOOP AT mt_diff_files INTO ls_diff_file. - zcl_abapgit_progress=>show( iv_key = 'Diff' - iv_current = sy-tabix - iv_total = lines( mt_diff_files ) - iv_text = |Render Diff - { ls_diff_file-filename }| ). + lo_progress->show( + iv_current = sy-tabix + iv_text = |Render Diff - { ls_diff_file-filename }| ). ro_html->add( render_diff( ls_diff_file ) ). ENDLOOP. @@ -375,17 +380,17 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. " Content IF is_diff-type <> 'binary'. - ro_html->add( '
' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '
' ). "#EC NOTEXT + ro_html->add( '
' ). "#EC NOTEXT ro_html->add( render_table_head( ) ). ro_html->add( render_lines( is_diff ) ). - ro_html->add( '
' ). "#EC NOTEXT - ro_html->add( '
' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '
' ). "#EC NOTEXT ELSE. ro_html->add( '
' ). "#EC NOTEXT - ro_html->add( 'The content seems to be binary.' ). "#EC NOTEXT - ro_html->add( 'Cannot display as diff.' ). "#EC NOTEXT - ro_html->add( '
' ). "#EC NOTEXT + ro_html->add( 'The content seems to be binary.' ). "#EC NOTEXT + ro_html->add( 'Cannot display as diff.' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ENDIF. ro_html->add( '' ). "#EC NOTEXT @@ -434,22 +439,22 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. CREATE OBJECT ro_html. IF mv_unified = abap_true. - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( 'old' ). "#EC NOTEXT - ro_html->add( 'new' ). "#EC NOTEXT - ro_html->add( 'code' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( 'old' ). "#EC NOTEXT + ro_html->add( 'new' ). "#EC NOTEXT + ro_html->add( 'code' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ELSE. - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( 'LOCAL' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( 'REMOTE' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( 'LOCAL' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( 'REMOTE' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ENDIF. ENDMETHOD. " render_table_head. @@ -569,7 +574,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. && |{ lv_mark }{ is_diff_line-old }|. " render line, inverse sides if remote is newer - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT IF iv_fstate = c_fstate-remote. " Remote file leading changes ro_html->add( lv_old ). " local ro_html->add( lv_new ). " remote @@ -577,7 +582,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ro_html->add( lv_new ). " local ro_html->add( lv_old ). " remote ENDIF. - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. "render_line_split @@ -590,23 +595,23 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. " Release delayed subsequent update lines IF is_diff_line-result <> zcl_abapgit_diff=>c_diff-update. LOOP AT mt_delayed_lines ASSIGNING . - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ro_html->add( || && || && |-{ -old }| ). - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ENDLOOP. LOOP AT mt_delayed_lines ASSIGNING . - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ro_html->add( || && || && |+{ -new }| ). - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ENDLOOP. CLEAR mt_delayed_lines. ENDIF. - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT CASE is_diff_line-result. WHEN zcl_abapgit_diff=>c_diff-update. APPEND is_diff_line TO mt_delayed_lines. " Delay output of subsequent updates @@ -623,7 +628,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. && || && | { is_diff_line-old }| ). ENDCASE. - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. "render_line_unified diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index fdac41d25..964aed3ce 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -70,15 +70,18 @@ CLASS lcl_repo_online IMPLEMENTATION. METHOD refresh. - DATA: lx_exception TYPE REF TO zcx_abapgit_exception. + DATA: lo_progress TYPE REF TO zcl_abapgit_progress, + lx_exception TYPE REF TO zcx_abapgit_exception. super->refresh( iv_drop_cache ). reset_status( ). - zcl_abapgit_progress=>show( iv_key = 'Fetch' - iv_current = 1 - iv_total = 1 - iv_text = 'Remote files' ) ##NO_TEXT. + CREATE OBJECT lo_progress + EXPORTING + iv_total = 1. + + lo_progress->show( iv_current = 1 + iv_text = 'Fetch remote files' ) ##NO_TEXT. TRY. @@ -599,10 +602,11 @@ CLASS lcl_repo IMPLEMENTATION. METHOD get_files_local. - DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt, - ls_item TYPE zif_abapgit_definitions=>ty_item, - lt_files TYPE zif_abapgit_definitions=>ty_files_tt, - lt_cache TYPE SORTED TABLE OF zif_abapgit_definitions=>ty_file_item + DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt, + ls_item TYPE zif_abapgit_definitions=>ty_item, + lt_files TYPE zif_abapgit_definitions=>ty_files_tt, + lo_progress TYPE REF TO zcl_abapgit_progress, + lt_cache TYPE SORTED TABLE OF zif_abapgit_definitions=>ty_file_item WITH NON-UNIQUE KEY item. DATA: lt_filter TYPE SORTED TABLE OF tadir @@ -638,6 +642,10 @@ CLASS lcl_repo IMPLEMENTATION. lt_filter = it_filter. lv_filter_exist = boolc( lines( lt_filter ) > 0 ). + CREATE OBJECT lo_progress + EXPORTING + iv_total = lines( lt_tadir ). + LOOP AT lt_tadir ASSIGNING . IF lv_filter_exist = abap_true. READ TABLE lt_filter TRANSPORTING NO FIELDS WITH KEY object = -object @@ -648,10 +656,9 @@ CLASS lcl_repo IMPLEMENTATION. ENDIF. ENDIF. - zcl_abapgit_progress=>show( iv_key = 'Serialize' - iv_current = sy-tabix - iv_total = lines( lt_tadir ) - iv_text = -obj_name ) ##NO_TEXT. + lo_progress->show( + iv_current = sy-tabix + iv_text = |Serialize { -obj_name }| ) ##NO_TEXT. ls_item-obj_type = -object. ls_item-obj_name = -obj_name.