mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
new friendly progress indicators
This commit is contained in:
parent
33eaa981f0
commit
0831569297
|
@ -3,7 +3,7 @@ REPORT zabapgit.
|
||||||
* See http://www.abapgit.org
|
* See http://www.abapgit.org
|
||||||
|
|
||||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
||||||
gc_abap_version TYPE string VALUE 'v1.7.14'. "#EC NOTEXT
|
gc_abap_version TYPE string VALUE 'v1.8.0'. "#EC NOTEXT
|
||||||
|
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
|
@ -146,6 +146,107 @@ CLASS lcx_not_found IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCLASS. "lcx_not_found IMPLEMENTATION
|
ENDCLASS. "lcx_not_found IMPLEMENTATION
|
||||||
|
|
||||||
|
CLASS lcl_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.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
TYPES: BEGIN OF ty_stack,
|
||||||
|
key TYPE string,
|
||||||
|
current TYPE i,
|
||||||
|
total TYPE i,
|
||||||
|
text TYPE string,
|
||||||
|
END OF ty_stack.
|
||||||
|
|
||||||
|
CLASS-DATA:
|
||||||
|
gt_stack TYPE STANDARD TABLE OF ty_stack WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
CLASS-METHODS:
|
||||||
|
calc_pct
|
||||||
|
RETURNING VALUE(rv_pct) TYPE i,
|
||||||
|
build_text
|
||||||
|
RETURNING VALUE(rv_text) TYPE string.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_progress IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD show.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
|
||||||
|
|
||||||
|
* assumption:
|
||||||
|
* all callers must end with calling this method with iv_current = iv_total
|
||||||
|
* to clear the progress of that sub element
|
||||||
|
ASSERT lines( gt_stack ) < 10.
|
||||||
|
|
||||||
|
READ TABLE gt_stack INDEX lines( gt_stack ) ASSIGNING <ls_stack>.
|
||||||
|
IF sy-subrc <> 0 OR <ls_stack>-key <> iv_key.
|
||||||
|
APPEND INITIAL LINE TO gt_stack ASSIGNING <ls_stack>.
|
||||||
|
ENDIF.
|
||||||
|
<ls_stack>-key = iv_key.
|
||||||
|
<ls_stack>-current = iv_current.
|
||||||
|
<ls_stack>-total = iv_total.
|
||||||
|
<ls_stack>-text = iv_text.
|
||||||
|
|
||||||
|
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
|
||||||
|
EXPORTING
|
||||||
|
percentage = calc_pct( )
|
||||||
|
text = build_text( ).
|
||||||
|
|
||||||
|
IF iv_current = iv_total.
|
||||||
|
DELETE gt_stack INDEX lines( gt_stack ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD build_text.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
|
||||||
|
|
||||||
|
|
||||||
|
LOOP AT gt_stack ASSIGNING <ls_stack>.
|
||||||
|
IF sy-tabix = 1.
|
||||||
|
rv_text = |{ <ls_stack>-key } { <ls_stack>-text }|.
|
||||||
|
ELSE.
|
||||||
|
rv_text = |{ rv_text } - { <ls_stack>-key } { <ls_stack>-text }|.
|
||||||
|
|
||||||
|
IF <ls_stack>-current <> 1 AND <ls_stack>-total <> 1.
|
||||||
|
rv_text = |{ rv_text } ({ <ls_stack>-current }/{ <ls_stack>-total })|.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD calc_pct.
|
||||||
|
|
||||||
|
DATA: lv_f TYPE f.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
|
||||||
|
|
||||||
|
|
||||||
|
READ TABLE gt_stack ASSIGNING <ls_stack> INDEX 1.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
lv_f = ( <ls_stack>-current / <ls_stack>-total ) * 100.
|
||||||
|
rv_pct = lv_f.
|
||||||
|
|
||||||
|
IF rv_pct = 100.
|
||||||
|
rv_pct = 99.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_log DEFINITION.
|
CLASS lcl_log DEFINITION.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
@ -12553,9 +12654,8 @@ CLASS lcl_repo DEFINITION ABSTRACT.
|
||||||
RETURNING VALUE(rv_name) TYPE string
|
RETURNING VALUE(rv_name) TYPE string
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
get_files_local
|
get_files_local
|
||||||
IMPORTING io_log TYPE REF TO lcl_log OPTIONAL
|
IMPORTING io_log TYPE REF TO lcl_log OPTIONAL
|
||||||
iv_show_progress TYPE abap_bool DEFAULT abap_false
|
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
get_files_remote
|
get_files_remote
|
||||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||||
|
@ -12577,11 +12677,6 @@ CLASS lcl_repo DEFINITION ABSTRACT.
|
||||||
mt_remote TYPE ty_files_tt,
|
mt_remote TYPE ty_files_tt,
|
||||||
ms_data TYPE lcl_persistence_repo=>ty_repo.
|
ms_data TYPE lcl_persistence_repo=>ty_repo.
|
||||||
|
|
||||||
CLASS-METHODS show_progress
|
|
||||||
IMPORTING iv_current TYPE i
|
|
||||||
iv_total TYPE i
|
|
||||||
iv_obj_name TYPE tadir-obj_name.
|
|
||||||
|
|
||||||
ENDCLASS. "lcl_repo DEFINITION
|
ENDCLASS. "lcl_repo DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -12655,11 +12750,6 @@ CLASS lcl_objects DEFINITION FINAL.
|
||||||
IMPORTING is_item TYPE ty_item
|
IMPORTING is_item TYPE ty_item
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS show_progress
|
|
||||||
IMPORTING iv_current TYPE i
|
|
||||||
iv_total TYPE i
|
|
||||||
iv_obj_name TYPE tadir-obj_name.
|
|
||||||
|
|
||||||
ENDCLASS. "lcl_object DEFINITION
|
ENDCLASS. "lcl_object DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -12836,6 +12926,11 @@ CLASS lcl_file_status IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
LOOP AT it_files ASSIGNING <ls_file>.
|
LOOP AT it_files ASSIGNING <ls_file>.
|
||||||
|
lcl_progress=>show( iv_key = 'Status'
|
||||||
|
iv_current = sy-tabix
|
||||||
|
iv_total = lines( it_files )
|
||||||
|
iv_text = <ls_file>-filename ) ##NO_TEXT.
|
||||||
|
|
||||||
SPLIT <ls_file>-filename AT '.' INTO lv_pre lv_type lv_ext.
|
SPLIT <ls_file>-filename AT '.' INTO lv_pre lv_type lv_ext.
|
||||||
TRANSLATE lv_pre TO UPPER CASE.
|
TRANSLATE lv_pre TO UPPER CASE.
|
||||||
TRANSLATE lv_type TO UPPER CASE.
|
TRANSLATE lv_type TO UPPER CASE.
|
||||||
|
@ -13157,21 +13252,6 @@ ENDCLASS. "lcl_package IMPLEMENTATION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_objects IMPLEMENTATION.
|
CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD show_progress.
|
|
||||||
|
|
||||||
DATA: lv_pct TYPE i,
|
|
||||||
lv_f TYPE f.
|
|
||||||
|
|
||||||
|
|
||||||
lv_f = ( iv_current / iv_total ) * 100.
|
|
||||||
lv_pct = lv_f.
|
|
||||||
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
|
|
||||||
EXPORTING
|
|
||||||
percentage = lv_pct
|
|
||||||
text = iv_obj_name.
|
|
||||||
|
|
||||||
ENDMETHOD. "show_progress
|
|
||||||
|
|
||||||
METHOD check_warning.
|
METHOD check_warning.
|
||||||
|
|
||||||
DATA: lv_question TYPE c LENGTH 200,
|
DATA: lv_question TYPE c LENGTH 200,
|
||||||
|
@ -13613,9 +13693,10 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
lt_results = prioritize_deser( lt_results ).
|
lt_results = prioritize_deser( lt_results ).
|
||||||
|
|
||||||
LOOP AT lt_results ASSIGNING <ls_result>.
|
LOOP AT lt_results ASSIGNING <ls_result>.
|
||||||
show_progress( iv_current = sy-tabix
|
lcl_progress=>show( iv_key = 'Deserialize'
|
||||||
iv_total = lines( lt_results )
|
iv_current = sy-tabix
|
||||||
iv_obj_name = <ls_result>-obj_name ).
|
iv_total = lines( lt_results )
|
||||||
|
iv_text = <ls_result>-obj_name ) ##NO_TEXT.
|
||||||
|
|
||||||
CLEAR ls_item.
|
CLEAR ls_item.
|
||||||
ls_item-obj_type = <ls_result>-obj_type.
|
ls_item-obj_type = <ls_result>-obj_type.
|
||||||
|
@ -15343,6 +15424,11 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
||||||
|
|
||||||
super->refresh( ).
|
super->refresh( ).
|
||||||
|
|
||||||
|
lcl_progress=>show( iv_key = 'Fetch'
|
||||||
|
iv_current = 1
|
||||||
|
iv_total = 1
|
||||||
|
iv_text = 'Remote files' ) ##NO_TEXT.
|
||||||
|
|
||||||
lcl_git_porcelain=>pull( EXPORTING io_repo = me
|
lcl_git_porcelain=>pull( EXPORTING io_repo = me
|
||||||
IMPORTING et_files = mt_remote
|
IMPORTING et_files = mt_remote
|
||||||
et_objects = mt_objects
|
et_objects = mt_objects
|
||||||
|
@ -15438,23 +15524,6 @@ CLASS lcl_repo IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD show_progress.
|
|
||||||
|
|
||||||
DATA: lv_pct TYPE i,
|
|
||||||
lv_text TYPE string,
|
|
||||||
lv_f TYPE f.
|
|
||||||
|
|
||||||
|
|
||||||
lv_f = ( iv_current / iv_total ) * 100.
|
|
||||||
lv_pct = lv_f.
|
|
||||||
lv_text = |{ iv_obj_name } ({ iv_current }/{ iv_total })|.
|
|
||||||
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
|
|
||||||
EXPORTING
|
|
||||||
percentage = lv_pct
|
|
||||||
text = lv_text.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD get_files_local.
|
METHOD get_files_local.
|
||||||
|
|
||||||
DATA: lt_tadir TYPE lcl_tadir=>ty_tadir_tt,
|
DATA: lt_tadir TYPE lcl_tadir=>ty_tadir_tt,
|
||||||
|
@ -15472,11 +15541,10 @@ CLASS lcl_repo IMPLEMENTATION.
|
||||||
|
|
||||||
lt_tadir = lcl_tadir=>read( get_package( ) ).
|
lt_tadir = lcl_tadir=>read( get_package( ) ).
|
||||||
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
||||||
IF iv_show_progress = abap_true.
|
lcl_progress=>show( iv_key = 'Files'
|
||||||
show_progress( iv_current = sy-tabix
|
iv_current = sy-tabix
|
||||||
iv_total = lines( lt_tadir )
|
iv_total = lines( lt_tadir )
|
||||||
iv_obj_name = <ls_tadir>-obj_name ).
|
iv_text = <ls_tadir>-obj_name ) ##NO_TEXT.
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ls_item-obj_type = <ls_tadir>-object.
|
ls_item-obj_type = <ls_tadir>-object.
|
||||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||||
|
@ -16586,8 +16654,7 @@ CLASS lcl_zip IMPLEMENTATION.
|
||||||
|
|
||||||
CREATE OBJECT lo_log.
|
CREATE OBJECT lo_log.
|
||||||
|
|
||||||
lt_zip = lo_repo->get_files_local( io_log = lo_log
|
lt_zip = lo_repo->get_files_local( lo_log ).
|
||||||
iv_show_progress = abap_true ).
|
|
||||||
|
|
||||||
IF lo_log->count( ) > 0.
|
IF lo_log->count( ) > 0.
|
||||||
lo_log->show( ).
|
lo_log->show( ).
|
||||||
|
@ -17655,12 +17722,6 @@ CLASS lcl_gui_page_main DEFINITION FINAL.
|
||||||
CLASS-METHODS needs_installation
|
CLASS-METHODS needs_installation
|
||||||
RETURNING VALUE(rv_not_completely_installed) TYPE abap_bool.
|
RETURNING VALUE(rv_not_completely_installed) TYPE abap_bool.
|
||||||
|
|
||||||
CLASS-METHODS show_progress
|
|
||||||
IMPORTING
|
|
||||||
iv_current TYPE i
|
|
||||||
iv_total TYPE i
|
|
||||||
iv_text TYPE string.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_gui_page_diff DEFINITION FINAL.
|
CLASS lcl_gui_page_diff DEFINITION FINAL.
|
||||||
|
@ -19427,27 +19488,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD show_progress.
|
|
||||||
|
|
||||||
DATA: lv_text TYPE c LENGTH 100,
|
|
||||||
lv_pct TYPE i,
|
|
||||||
lv_f TYPE f.
|
|
||||||
|
|
||||||
|
|
||||||
lv_text = iv_text.
|
|
||||||
lv_f = ( iv_current / iv_total ) * 100.
|
|
||||||
lv_pct = lv_f.
|
|
||||||
IF lv_pct = 100.
|
|
||||||
lv_pct = 99.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
|
|
||||||
EXPORTING
|
|
||||||
percentage = lv_pct
|
|
||||||
text = lv_text.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD render_error.
|
METHOD render_error.
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
|
@ -19499,9 +19539,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
ro_html->add( render_explore( ) ).
|
ro_html->add( render_explore( ) ).
|
||||||
ELSE.
|
ELSE.
|
||||||
LOOP AT lt_repos INTO lo_repo.
|
LOOP AT lt_repos INTO lo_repo.
|
||||||
show_progress( iv_current = sy-tabix
|
lcl_progress=>show( iv_key = 'Render'
|
||||||
iv_total = lines( lt_repos )
|
iv_current = sy-tabix
|
||||||
iv_text = lo_repo->get_name( ) ).
|
iv_total = lines( lt_repos )
|
||||||
|
iv_text = lo_repo->get_name( ) ) ##NO_TEXT.
|
||||||
|
|
||||||
IF lo_repo->is_offline( ) = abap_true.
|
IF lo_repo->is_offline( ) = abap_true.
|
||||||
lo_repo_offline ?= lo_repo.
|
lo_repo_offline ?= lo_repo.
|
||||||
|
@ -21509,7 +21550,7 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
|
||||||
lv_data = lo_db->read(
|
lv_data = lo_db->read(
|
||||||
iv_type = ms_key-type
|
iv_type = ms_key-type
|
||||||
iv_value = ms_key-value ).
|
iv_value = ms_key-value ).
|
||||||
CATCH lcx_not_found.
|
CATCH lcx_not_found ##NO_HANDLER.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
lv_data = lcl_xml_pretty=>print( lv_data ).
|
lv_data = lcl_xml_pretty=>print( lv_data ).
|
||||||
|
@ -21625,7 +21666,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
|
||||||
lv_data = lo_db->read(
|
lv_data = lo_db->read(
|
||||||
iv_type = ms_key-type
|
iv_type = ms_key-type
|
||||||
iv_value = ms_key-value ).
|
iv_value = ms_key-value ).
|
||||||
CATCH lcx_not_found.
|
CATCH lcx_not_found ##NO_HANDLER.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
lo_db->lock(
|
lo_db->lock(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user