mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Repo overview performance improvements (#4541)
* Repo overview performance improvements * Rework map_repo_list_to_overview * Reduce usages of get_key * Fix inline data * Don't load package descriptions in repo overview the select is expensive * suppress titles for non-favorite repositories * lint * Update src/ui/zcl_abapgit_gui_page_repo_over.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * optimize render_repo_palette * Optimize gui_router * Update zcl_abapgit_gui_page_repo_over.clas.abap * Update zcl_abapgit_migrations.clas.abap * remove unused variable Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
bbeb1e7a58
commit
add83f5b94
|
@ -5,6 +5,8 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo READ-ONLY.
|
||||
|
||||
METHODS bind_listener
|
||||
IMPORTING
|
||||
!ii_listener TYPE REF TO zif_abapgit_repo_listener .
|
||||
|
@ -144,7 +146,6 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
||||
DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt .
|
||||
DATA mv_request_local_refresh TYPE abap_bool .
|
||||
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo .
|
||||
DATA mv_request_remote_refresh TYPE abap_bool .
|
||||
DATA mt_status TYPE zif_abapgit_definitions=>ty_results_tt .
|
||||
DATA mi_log TYPE REF TO zif_abapgit_log .
|
||||
|
|
|
@ -87,7 +87,7 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
|
||||
|
||||
LOOP AT mt_list INTO lo_repo.
|
||||
IF lo_repo->get_key( ) = io_repo->get_key( ).
|
||||
IF lo_repo->ms_data-key = io_repo->ms_data-key.
|
||||
IF lo_repo = io_repo.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
@ -279,7 +279,7 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
refresh( ).
|
||||
ENDIF.
|
||||
LOOP AT mt_list ASSIGNING <lo_list>.
|
||||
IF <lo_list>->get_key( ) = iv_key.
|
||||
IF <lo_list>->ms_data-key = iv_key.
|
||||
ro_repo = <lo_list>.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
|
|
@ -721,24 +721,28 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION.
|
|||
|
||||
METHOD render_repo_palette.
|
||||
|
||||
DATA li_repo_srv TYPE REF TO zif_abapgit_repo_srv.
|
||||
DATA lt_repo_obj_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||
DATA lt_repo_list TYPE zif_abapgit_persistence=>ty_repos.
|
||||
DATA lv_repo_json TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
FIELD-SYMBOLS <ls_repo> LIKE LINE OF lt_repo_list.
|
||||
DATA ls_repo_data LIKE LINE OF lt_repo_list.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<ls_repo> LIKE LINE OF lt_repo_list,
|
||||
<lr_repo_obj> LIKE LINE OF lt_repo_obj_list.
|
||||
|
||||
lt_repo_obj_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||
LOOP AT lt_repo_obj_list ASSIGNING <lr_repo_obj>.
|
||||
ls_repo_data = <lr_repo_obj>->ms_data.
|
||||
ls_repo_data-local_settings-display_name = <lr_repo_obj>->get_name( ).
|
||||
APPEND ls_repo_data TO lt_repo_list.
|
||||
ENDLOOP.
|
||||
|
||||
li_repo_srv = zcl_abapgit_repo_srv=>get_instance( ).
|
||||
lt_repo_list = zcl_abapgit_persist_factory=>get_repo( )->list( ).
|
||||
lv_size = lines( lt_repo_list ).
|
||||
SORT lt_repo_list BY local_settings-display_name AS TEXT.
|
||||
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
" Sort list by display name
|
||||
LOOP AT lt_repo_list ASSIGNING <ls_repo>.
|
||||
<ls_repo>-local_settings-display_name = li_repo_srv->get( <ls_repo>-key )->get_name( ).
|
||||
ENDLOOP.
|
||||
SORT lt_repo_list BY local_settings-display_name AS TEXT.
|
||||
|
||||
ri_html->add( 'var repoCatalog = [' ). " Maybe separate this into another method if needed in more places
|
||||
LOOP AT lt_repo_list ASSIGNING <ls_repo>.
|
||||
lv_repo_json = |\{ key: "{ <ls_repo>-key
|
||||
|
|
|
@ -67,8 +67,6 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
|||
ct_overview TYPE ty_overviews,
|
||||
|
||||
map_repo_list_to_overview
|
||||
IMPORTING
|
||||
it_repo_list TYPE zif_abapgit_persistence=>ty_repos
|
||||
RETURNING
|
||||
VALUE(rt_overview) TYPE ty_overviews
|
||||
RAISING
|
||||
|
@ -117,7 +115,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD apply_filter.
|
||||
|
@ -182,31 +180,31 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
|||
|
||||
METHOD map_repo_list_to_overview.
|
||||
|
||||
DATA: ls_overview LIKE LINE OF rt_overview,
|
||||
lo_repo_srv TYPE REF TO zcl_abapgit_repo,
|
||||
lv_date TYPE d,
|
||||
lv_time TYPE t.
|
||||
DATA: ls_overview LIKE LINE OF rt_overview,
|
||||
lv_date TYPE d,
|
||||
lv_time TYPE t,
|
||||
lt_repo_obj_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||
|
||||
FIELD-SYMBOLS: <ls_repo> LIKE LINE OF it_repo_list.
|
||||
FIELD-SYMBOLS <ls_repo> LIKE LINE OF lt_repo_obj_list.
|
||||
|
||||
lt_repo_obj_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||
|
||||
LOOP AT it_repo_list ASSIGNING <ls_repo>.
|
||||
LOOP AT lt_repo_obj_list ASSIGNING <ls_repo>.
|
||||
|
||||
CLEAR: ls_overview.
|
||||
lo_repo_srv = zcl_abapgit_repo_srv=>get_instance( )->get( <ls_repo>-key ).
|
||||
|
||||
ls_overview-favorite = zcl_abapgit_persistence_user=>get_instance(
|
||||
)->is_favorite_repo( <ls_repo>-key ).
|
||||
ls_overview-type = <ls_repo>-offline.
|
||||
ls_overview-key = <ls_repo>-key.
|
||||
ls_overview-name = lo_repo_srv->get_name( ).
|
||||
ls_overview-url = <ls_repo>-url.
|
||||
ls_overview-package = <ls_repo>-package.
|
||||
ls_overview-branch = <ls_repo>-branch_name.
|
||||
ls_overview-created_by = <ls_repo>-created_by.
|
||||
)->is_favorite_repo( <ls_repo>->ms_data-key ).
|
||||
ls_overview-type = <ls_repo>->ms_data-offline.
|
||||
ls_overview-key = <ls_repo>->ms_data-key.
|
||||
ls_overview-name = <ls_repo>->get_name( ).
|
||||
ls_overview-url = <ls_repo>->ms_data-url.
|
||||
ls_overview-package = <ls_repo>->ms_data-package.
|
||||
ls_overview-branch = <ls_repo>->ms_data-branch_name.
|
||||
ls_overview-created_by = <ls_repo>->ms_data-created_by.
|
||||
|
||||
IF <ls_repo>-created_at IS NOT INITIAL.
|
||||
CONVERT TIME STAMP <ls_repo>-created_at
|
||||
IF <ls_repo>->ms_data-created_at IS NOT INITIAL.
|
||||
CONVERT TIME STAMP <ls_repo>->ms_data-created_at
|
||||
TIME ZONE mv_time_zone
|
||||
INTO DATE lv_date
|
||||
TIME lv_time.
|
||||
|
@ -214,10 +212,10 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
|||
ls_overview-created_at = |{ lv_date DATE = USER } { lv_time TIME = USER }|.
|
||||
ENDIF.
|
||||
|
||||
ls_overview-deserialized_by = <ls_repo>-deserialized_by.
|
||||
ls_overview-deserialized_by = <ls_repo>->ms_data-deserialized_by.
|
||||
|
||||
IF <ls_repo>-deserialized_at IS NOT INITIAL.
|
||||
CONVERT TIME STAMP <ls_repo>-deserialized_at
|
||||
IF <ls_repo>->ms_data-deserialized_at IS NOT INITIAL.
|
||||
CONVERT TIME STAMP <ls_repo>->ms_data-deserialized_at
|
||||
TIME ZONE mv_time_zone
|
||||
INTO DATE lv_date
|
||||
TIME lv_time.
|
||||
|
@ -433,7 +431,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_table_header.
|
||||
|
||||
CLEAR mt_col_spec.
|
||||
|
@ -574,7 +571,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_gui_renderable~render.
|
||||
|
||||
mt_overview = map_repo_list_to_overview( zcl_abapgit_persist_factory=>get_repo( )->list( ) ).
|
||||
mt_overview = map_repo_list_to_overview( ).
|
||||
apply_order_by( CHANGING ct_overview = mt_overview ).
|
||||
apply_filter( CHANGING ct_overview = mt_overview ).
|
||||
|
||||
|
|
|
@ -141,7 +141,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD abapgit_services_actions.
|
||||
|
@ -234,21 +234,19 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
|||
|
||||
DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||
lv_last_repo_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||
lt_repo_list TYPE zif_abapgit_persistence=>ty_repos.
|
||||
|
||||
lt_repo_obj_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||
|
||||
lv_key = ii_event->query( )->get( 'KEY' ).
|
||||
|
||||
CASE ii_event->mv_action.
|
||||
WHEN zcl_abapgit_gui=>c_action-go_home.
|
||||
lv_last_repo_key = zcl_abapgit_persistence_user=>get_instance( )->get_repo_show( ).
|
||||
lt_repo_list = zcl_abapgit_persist_factory=>get_repo( )->list( ).
|
||||
|
||||
lt_repo_obj_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||
IF lv_last_repo_key IS NOT INITIAL.
|
||||
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_repo_view
|
||||
EXPORTING
|
||||
iv_key = lv_last_repo_key.
|
||||
ELSEIF lt_repo_list IS NOT INITIAL.
|
||||
ELSEIF lt_repo_obj_list IS NOT INITIAL.
|
||||
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_main.
|
||||
ELSE.
|
||||
rs_handled-page = zcl_abapgit_gui_page_tutorial=>create( ).
|
||||
|
|
Loading…
Reference in New Issue
Block a user