mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +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.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo READ-ONLY.
|
||||||
|
|
||||||
METHODS bind_listener
|
METHODS bind_listener
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ii_listener TYPE REF TO zif_abapgit_repo_listener .
|
!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_local TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
||||||
DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt .
|
DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt .
|
||||||
DATA mv_request_local_refresh TYPE abap_bool .
|
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 mv_request_remote_refresh TYPE abap_bool .
|
||||||
DATA mt_status TYPE zif_abapgit_definitions=>ty_results_tt .
|
DATA mt_status TYPE zif_abapgit_definitions=>ty_results_tt .
|
||||||
DATA mi_log TYPE REF TO zif_abapgit_log .
|
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.
|
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.
|
IF lo_repo = io_repo.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -279,7 +279,7 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
||||||
refresh( ).
|
refresh( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
LOOP AT mt_list ASSIGNING <lo_list>.
|
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>.
|
ro_repo = <lo_list>.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
|
@ -721,24 +721,28 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD render_repo_palette.
|
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 lt_repo_list TYPE zif_abapgit_persistence=>ty_repos.
|
||||||
DATA lv_repo_json TYPE string.
|
DATA lv_repo_json TYPE string.
|
||||||
DATA lv_size TYPE i.
|
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 ).
|
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.
|
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
|
ri_html->add( 'var repoCatalog = [' ). " Maybe separate this into another method if needed in more places
|
||||||
LOOP AT lt_repo_list ASSIGNING <ls_repo>.
|
LOOP AT lt_repo_list ASSIGNING <ls_repo>.
|
||||||
lv_repo_json = |\{ key: "{ <ls_repo>-key
|
lv_repo_json = |\{ key: "{ <ls_repo>-key
|
||||||
|
|
|
@ -67,8 +67,6 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
||||||
ct_overview TYPE ty_overviews,
|
ct_overview TYPE ty_overviews,
|
||||||
|
|
||||||
map_repo_list_to_overview
|
map_repo_list_to_overview
|
||||||
IMPORTING
|
|
||||||
it_repo_list TYPE zif_abapgit_persistence=>ty_repos
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_overview) TYPE ty_overviews
|
VALUE(rt_overview) TYPE ty_overviews
|
||||||
RAISING
|
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.
|
METHOD apply_filter.
|
||||||
|
@ -182,31 +180,31 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD map_repo_list_to_overview.
|
METHOD map_repo_list_to_overview.
|
||||||
|
|
||||||
DATA: ls_overview LIKE LINE OF rt_overview,
|
DATA: ls_overview LIKE LINE OF rt_overview,
|
||||||
lo_repo_srv TYPE REF TO zcl_abapgit_repo,
|
lv_date TYPE d,
|
||||||
lv_date TYPE d,
|
lv_time TYPE t,
|
||||||
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.
|
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(
|
ls_overview-favorite = zcl_abapgit_persistence_user=>get_instance(
|
||||||
)->is_favorite_repo( <ls_repo>-key ).
|
)->is_favorite_repo( <ls_repo>->ms_data-key ).
|
||||||
ls_overview-type = <ls_repo>-offline.
|
ls_overview-type = <ls_repo>->ms_data-offline.
|
||||||
ls_overview-key = <ls_repo>-key.
|
ls_overview-key = <ls_repo>->ms_data-key.
|
||||||
ls_overview-name = lo_repo_srv->get_name( ).
|
ls_overview-name = <ls_repo>->get_name( ).
|
||||||
ls_overview-url = <ls_repo>-url.
|
ls_overview-url = <ls_repo>->ms_data-url.
|
||||||
ls_overview-package = <ls_repo>-package.
|
ls_overview-package = <ls_repo>->ms_data-package.
|
||||||
ls_overview-branch = <ls_repo>-branch_name.
|
ls_overview-branch = <ls_repo>->ms_data-branch_name.
|
||||||
ls_overview-created_by = <ls_repo>-created_by.
|
ls_overview-created_by = <ls_repo>->ms_data-created_by.
|
||||||
|
|
||||||
IF <ls_repo>-created_at IS NOT INITIAL.
|
IF <ls_repo>->ms_data-created_at IS NOT INITIAL.
|
||||||
CONVERT TIME STAMP <ls_repo>-created_at
|
CONVERT TIME STAMP <ls_repo>->ms_data-created_at
|
||||||
TIME ZONE mv_time_zone
|
TIME ZONE mv_time_zone
|
||||||
INTO DATE lv_date
|
INTO DATE lv_date
|
||||||
TIME lv_time.
|
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 }|.
|
ls_overview-created_at = |{ lv_date DATE = USER } { lv_time TIME = USER }|.
|
||||||
ENDIF.
|
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.
|
IF <ls_repo>->ms_data-deserialized_at IS NOT INITIAL.
|
||||||
CONVERT TIME STAMP <ls_repo>-deserialized_at
|
CONVERT TIME STAMP <ls_repo>->ms_data-deserialized_at
|
||||||
TIME ZONE mv_time_zone
|
TIME ZONE mv_time_zone
|
||||||
INTO DATE lv_date
|
INTO DATE lv_date
|
||||||
TIME lv_time.
|
TIME lv_time.
|
||||||
|
@ -433,7 +431,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD render_table_header.
|
METHOD render_table_header.
|
||||||
|
|
||||||
CLEAR mt_col_spec.
|
CLEAR mt_col_spec.
|
||||||
|
@ -574,7 +571,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_gui_renderable~render.
|
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_order_by( CHANGING ct_overview = mt_overview ).
|
||||||
apply_filter( 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.
|
METHOD abapgit_services_actions.
|
||||||
|
@ -234,21 +234,19 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||||
lv_last_repo_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' ).
|
lv_key = ii_event->query( )->get( 'KEY' ).
|
||||||
|
|
||||||
CASE ii_event->mv_action.
|
CASE ii_event->mv_action.
|
||||||
WHEN zcl_abapgit_gui=>c_action-go_home.
|
WHEN zcl_abapgit_gui=>c_action-go_home.
|
||||||
lv_last_repo_key = zcl_abapgit_persistence_user=>get_instance( )->get_repo_show( ).
|
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.
|
IF lv_last_repo_key IS NOT INITIAL.
|
||||||
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_repo_view
|
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_repo_view
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_key = lv_last_repo_key.
|
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.
|
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_main.
|
||||||
ELSE.
|
ELSE.
|
||||||
rs_handled-page = zcl_abapgit_gui_page_tutorial=>create( ).
|
rs_handled-page = zcl_abapgit_gui_page_tutorial=>create( ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user