new friendly progress indicators

This commit is contained in:
larshp 2016-05-16 11:33:31 +00:00
parent 33eaa981f0
commit 0831569297

View File

@ -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(