mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Persist repository list settings (#6295)
This commit is contained in:
parent
62d5d4659e
commit
b77d419077
|
@ -6,8 +6,6 @@ CLASS zcl_abapgit_persistence_user DEFINITION
|
|||
|
||||
INTERFACES zif_abapgit_persist_user .
|
||||
|
||||
TYPES ty_favorites TYPE zif_abapgit_persistence=>ty_repo_keys .
|
||||
|
||||
CLASS-METHODS get_instance
|
||||
IMPORTING
|
||||
!iv_user TYPE sy-uname DEFAULT sy-uname
|
||||
|
@ -42,10 +40,11 @@ CLASS zcl_abapgit_persistence_user DEFINITION
|
|||
order_descending TYPE abap_bool,
|
||||
diff_first TYPE abap_bool,
|
||||
diff_unified TYPE abap_bool,
|
||||
favorites TYPE ty_favorites,
|
||||
favorites TYPE zif_abapgit_persist_user=>ty_favorites,
|
||||
repo_config TYPE ty_repo_configs,
|
||||
settings TYPE zif_abapgit_definitions=>ty_s_user_settings,
|
||||
show_folders TYPE abap_bool,
|
||||
list_settings TYPE zif_abapgit_definitions=>ty_list_settings,
|
||||
END OF ty_user .
|
||||
|
||||
DATA mv_user TYPE sy-uname .
|
||||
|
@ -243,6 +242,22 @@ CLASS zcl_abapgit_persistence_user IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_user~get_list_settings.
|
||||
|
||||
rs_list_settings = ms_user-list_settings.
|
||||
|
||||
IF rs_list_settings IS INITIAL.
|
||||
" for performance reasons, set "only favorites" as a default
|
||||
IF zcl_abapgit_repo_srv=>get_instance( )->list_favorites( ) IS NOT INITIAL.
|
||||
rs_list_settings-only_favorites = abap_true.
|
||||
ENDIF.
|
||||
|
||||
rs_list_settings-order_by = |NAME|.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_user~get_order_by.
|
||||
rv_order_by = ms_user-order_by.
|
||||
ENDMETHOD.
|
||||
|
@ -350,6 +365,12 @@ CLASS zcl_abapgit_persistence_user IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_user~set_list_settings.
|
||||
ms_user-list_settings = is_list_settings.
|
||||
update( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_user~set_order_by.
|
||||
ms_user-order_by = iv_order_by.
|
||||
update( ).
|
||||
|
|
|
@ -188,5 +188,15 @@ INTERFACE zif_abapgit_persist_user
|
|||
is_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS get_list_settings
|
||||
RETURNING
|
||||
VALUE(rs_list_settings) TYPE zif_abapgit_definitions=>ty_list_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS set_list_settings
|
||||
IMPORTING
|
||||
is_list_settings TYPE zif_abapgit_definitions=>ty_list_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
|
|
@ -14,7 +14,7 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
|||
|
||||
CLASS-METHODS create
|
||||
IMPORTING
|
||||
!iv_only_favorites TYPE abap_bool
|
||||
!iv_only_favorites TYPE abap_bool OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
|
||||
RAISING
|
||||
|
@ -22,7 +22,7 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
|||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!iv_only_favorites TYPE abap_bool
|
||||
!iv_only_favorites TYPE abap_bool OPTIONAL
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
|
@ -59,22 +59,25 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
|||
c_label_filter_prefix TYPE string VALUE `label:`,
|
||||
c_raw_field_suffix TYPE string VALUE `_RAW` ##NO_TEXT.
|
||||
|
||||
DATA: mv_order_descending TYPE abap_bool,
|
||||
mv_only_favorites TYPE abap_bool,
|
||||
mv_filter TYPE string,
|
||||
mt_all_labels TYPE string_table,
|
||||
mo_label_colors TYPE REF TO zcl_abapgit_string_map,
|
||||
mv_order_by TYPE string.
|
||||
DATA: mt_all_labels TYPE string_table,
|
||||
mo_label_colors TYPE REF TO zcl_abapgit_string_map.
|
||||
DATA ms_list_settings TYPE zif_abapgit_definitions=>ty_list_settings.
|
||||
|
||||
METHODS set_order_by
|
||||
IMPORTING
|
||||
!iv_order_by TYPE string .
|
||||
!iv_order_by TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS set_order_direction
|
||||
IMPORTING
|
||||
!iv_order_descending TYPE abap_bool .
|
||||
!iv_order_descending TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS set_filter
|
||||
IMPORTING
|
||||
it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data .
|
||||
it_postdata TYPE zif_abapgit_html_viewer=>ty_post_data
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS:
|
||||
apply_filter
|
||||
|
@ -163,6 +166,9 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
|
|||
RETURNING
|
||||
VALUE(rv_html) TYPE string.
|
||||
|
||||
METHODS save_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -177,14 +183,14 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
DATA lv_filter_label TYPE string.
|
||||
FIELD-SYMBOLS <ls_r> LIKE LINE OF ct_overview.
|
||||
|
||||
IF mv_filter IS INITIAL.
|
||||
IF ms_list_settings-filter IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_pfxl = strlen( c_label_filter_prefix ).
|
||||
|
||||
IF strlen( mv_filter ) > lv_pfxl AND mv_filter+0(lv_pfxl) = c_label_filter_prefix.
|
||||
lv_filter_label = mv_filter+lv_pfxl.
|
||||
IF strlen( ms_list_settings-filter ) > lv_pfxl AND ms_list_settings-filter+0(lv_pfxl) = c_label_filter_prefix.
|
||||
lv_filter_label = ms_list_settings-filter+lv_pfxl.
|
||||
IF lv_filter_label = 'all'.
|
||||
DELETE ct_overview WHERE labels IS INITIAL.
|
||||
ELSEIF lv_filter_label = 'none'.
|
||||
|
@ -199,15 +205,16 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
ENDIF.
|
||||
ELSE. " Regular filter
|
||||
DELETE ct_overview WHERE key NS mv_filter
|
||||
AND name NS mv_filter
|
||||
AND url NS mv_filter
|
||||
AND package NS mv_filter
|
||||
AND branch NS mv_filter
|
||||
AND created_by NS mv_filter
|
||||
AND created_at NS mv_filter
|
||||
AND deserialized_by NS mv_filter
|
||||
AND deserialized_at NS mv_filter.
|
||||
DELETE ct_overview WHERE
|
||||
key NS ms_list_settings-filter
|
||||
AND name NS ms_list_settings-filter
|
||||
AND url NS ms_list_settings-filter
|
||||
AND package NS ms_list_settings-filter
|
||||
AND branch NS ms_list_settings-filter
|
||||
AND created_by NS ms_list_settings-filter
|
||||
AND created_at NS ms_list_settings-filter
|
||||
AND deserialized_by NS ms_list_settings-filter
|
||||
AND deserialized_at NS ms_list_settings-filter.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -224,18 +231,18 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
ls_sort-astext = abap_true.
|
||||
INSERT ls_sort INTO TABLE lt_sort.
|
||||
|
||||
IF mv_order_by IS NOT INITIAL.
|
||||
IF ms_list_settings-order_by IS NOT INITIAL.
|
||||
|
||||
CLEAR ls_sort.
|
||||
|
||||
IF mv_order_by = 'CREATED_AT' OR mv_order_by = 'DESERIALIZED_AT'.
|
||||
ls_sort-name = mv_order_by && c_raw_field_suffix.
|
||||
IF ms_list_settings-order_by = 'CREATED_AT' OR ms_list_settings-order_by = 'DESERIALIZED_AT'.
|
||||
ls_sort-name = ms_list_settings-order_by && c_raw_field_suffix.
|
||||
ELSE.
|
||||
ls_sort-name = mv_order_by.
|
||||
ls_sort-name = ms_list_settings-order_by.
|
||||
ls_sort-astext = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ls_sort-descending = mv_order_descending.
|
||||
ls_sort-descending = ms_list_settings-order_descending.
|
||||
INSERT ls_sort INTO TABLE lt_sort.
|
||||
|
||||
ENDIF.
|
||||
|
@ -337,10 +344,14 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
|
||||
|
||||
super->constructor( ).
|
||||
mv_order_by = |NAME|.
|
||||
mv_only_favorites = iv_only_favorites.
|
||||
|
||||
ms_list_settings = zcl_abapgit_persistence_user=>get_instance( )->get_list_settings( ).
|
||||
|
||||
" Overwrite setting
|
||||
IF iv_only_favorites = abap_true.
|
||||
ms_list_settings-only_favorites = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -405,7 +416,7 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
|
||||
DATA lt_repo_obj_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||
|
||||
IF mv_only_favorites = abap_true.
|
||||
IF ms_list_settings-only_favorites = abap_true.
|
||||
lt_repo_obj_list = zcl_abapgit_repo_srv=>get_instance( )->list_favorites( ).
|
||||
ELSE.
|
||||
lt_repo_obj_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||
|
@ -538,11 +549,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_text_input(
|
||||
iv_name = |filter|
|
||||
iv_label = |Filter: { render_filter_help_hint( ) }|
|
||||
iv_value = mv_filter ) ).
|
||||
iv_value = ms_list_settings-filter ) ).
|
||||
ri_html->add( |<input type="submit" class="hidden-submit">| ).
|
||||
ri_html->add( |</form>| ).
|
||||
|
||||
IF mv_only_favorites = abap_true.
|
||||
IF ms_list_settings-only_favorites = abap_true.
|
||||
lv_icon_class = `blue`.
|
||||
ELSE.
|
||||
lv_icon_class = `grey`.
|
||||
|
@ -650,7 +661,7 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
|
||||
METHOD render_table_footer.
|
||||
|
||||
IF mv_only_favorites = abap_true.
|
||||
IF ms_list_settings-only_favorites = abap_true.
|
||||
ii_html->add( `<tfoot>` ).
|
||||
ii_html->add( `<tr><td colspan="100%">` ).
|
||||
ii_html->add( |(Only favorites are shown. {
|
||||
|
@ -672,8 +683,8 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
|
||||
ii_html->add( zcl_abapgit_gui_chunk_lib=>render_order_by_header_cells(
|
||||
it_col_spec = build_table_scheme( )
|
||||
iv_order_by = mv_order_by
|
||||
iv_order_descending = mv_order_descending ) ).
|
||||
iv_order_by = ms_list_settings-order_by
|
||||
iv_order_descending = ms_list_settings-order_descending ) ).
|
||||
|
||||
ii_html->add( '</tr>' ).
|
||||
ii_html->add( '</thead>' ).
|
||||
|
@ -749,7 +760,7 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
" Package
|
||||
ii_html->td( ii_content = zcl_abapgit_gui_chunk_lib=>render_package_name(
|
||||
iv_package = is_repo-package
|
||||
iv_suppress_title = boolc( NOT mv_only_favorites = abap_true ) ) ).
|
||||
iv_suppress_title = boolc( NOT ms_list_settings-only_favorites = abap_true ) ) ).
|
||||
|
||||
" Repo URL
|
||||
IF lv_is_online_repo = abap_true.
|
||||
|
@ -774,7 +785,7 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
iv_class = 'ro-detail'
|
||||
ii_content = zcl_abapgit_gui_chunk_lib=>render_user_name(
|
||||
iv_username = is_repo-deserialized_by
|
||||
iv_suppress_title = boolc( NOT mv_only_favorites = abap_true ) ) ).
|
||||
iv_suppress_title = boolc( NOT ms_list_settings-only_favorites = abap_true ) ) ).
|
||||
|
||||
" Details: deserialized at
|
||||
ii_html->td(
|
||||
|
@ -786,7 +797,7 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
iv_class = 'ro-detail'
|
||||
ii_content = zcl_abapgit_gui_chunk_lib=>render_user_name(
|
||||
iv_username = is_repo-created_by
|
||||
iv_suppress_title = boolc( NOT mv_only_favorites = abap_true ) ) ).
|
||||
iv_suppress_title = boolc( NOT ms_list_settings-only_favorites = abap_true ) ) ).
|
||||
|
||||
" Details: created at
|
||||
ii_html->td(
|
||||
|
@ -811,6 +822,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD save_settings.
|
||||
zcl_abapgit_persistence_user=>get_instance( )->set_list_settings( ms_list_settings ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_filter.
|
||||
|
||||
FIELD-SYMBOLS <lv_postdata> LIKE LINE OF it_postdata.
|
||||
|
@ -819,24 +835,27 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
IF sy-subrc = 0.
|
||||
FIND FIRST OCCURRENCE OF REGEX `filter=(.*)`
|
||||
IN <lv_postdata>
|
||||
SUBMATCHES mv_filter.
|
||||
SUBMATCHES ms_list_settings-filter.
|
||||
ENDIF.
|
||||
|
||||
mv_filter = condense( mv_filter ).
|
||||
ms_list_settings-filter = condense( ms_list_settings-filter ).
|
||||
save_settings( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_order_by.
|
||||
IF mv_order_by <> iv_order_by.
|
||||
IF ms_list_settings-order_by <> iv_order_by.
|
||||
set_order_direction( abap_false ). " Reset ordering
|
||||
ENDIF.
|
||||
mv_order_by = iv_order_by.
|
||||
ms_list_settings-order_by = iv_order_by.
|
||||
save_settings( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_order_direction.
|
||||
mv_order_descending = iv_order_descending.
|
||||
ms_list_settings-order_descending = iv_order_descending.
|
||||
save_settings( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -867,10 +886,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
WHEN zif_abapgit_definitions=>c_action-toggle_favorites.
|
||||
|
||||
IF ii_event->query( )->has( 'FORCE_STATE' ) = abap_true.
|
||||
mv_only_favorites = ii_event->query( )->get( 'FORCE_STATE' ).
|
||||
ms_list_settings-only_favorites = ii_event->query( )->get( 'FORCE_STATE' ).
|
||||
ELSE.
|
||||
mv_only_favorites = boolc( mv_only_favorites = abap_false ).
|
||||
ms_list_settings-only_favorites = boolc( ms_list_settings-only_favorites = abap_false ).
|
||||
ENDIF.
|
||||
save_settings( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
|
||||
WHEN zif_abapgit_definitions=>c_action-direction.
|
||||
|
@ -886,10 +906,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
|
|||
WHEN c_action-label_filter.
|
||||
|
||||
IF ii_event->mv_getdata IS NOT INITIAL.
|
||||
mv_filter = c_label_filter_prefix && ii_event->mv_getdata.
|
||||
ms_list_settings-filter = c_label_filter_prefix && ii_event->mv_getdata.
|
||||
ELSE.
|
||||
CLEAR mv_filter. " Unexpected request
|
||||
CLEAR ms_list_settings-filter. " Unexpected request
|
||||
ENDIF.
|
||||
save_settings( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
|
||||
WHEN zif_abapgit_definitions=>c_action-go_patch.
|
||||
|
|
|
@ -132,7 +132,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
|||
METHOD abapgit_services_actions.
|
||||
|
||||
IF ii_event->mv_action = zif_abapgit_definitions=>c_action-abapgit_home.
|
||||
rs_handled-page = zcl_abapgit_gui_page_repo_over=>create( abap_true ).
|
||||
rs_handled-page = zcl_abapgit_gui_page_repo_over=>create( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
ENDIF.
|
||||
|
||||
|
@ -536,23 +536,15 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
|||
|
||||
METHOD main_page.
|
||||
|
||||
DATA lt_repo_fav_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||
DATA lt_repo_all_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
|
||||
|
||||
" for performance reasons, only load favorites
|
||||
lt_repo_fav_list = zcl_abapgit_repo_srv=>get_instance( )->list_favorites( ).
|
||||
IF lt_repo_fav_list IS INITIAL.
|
||||
" if there are no favorites, check if there are any repositories at all
|
||||
" if not, go to tutorial where the user can create the first repository
|
||||
lt_repo_all_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||
IF lt_repo_all_list IS NOT INITIAL.
|
||||
ri_page = zcl_abapgit_gui_page_repo_over=>create( abap_false ).
|
||||
ELSE.
|
||||
ri_page = zcl_abapgit_gui_page_tutorial=>create( ).
|
||||
ENDIF.
|
||||
|
||||
" if there are no favorites, check if there are any repositories at all
|
||||
" if not, go to tutorial where the user can create the first repository
|
||||
lt_repo_all_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
|
||||
IF lt_repo_all_list IS NOT INITIAL.
|
||||
ri_page = zcl_abapgit_gui_page_repo_over=>create( ).
|
||||
ELSE.
|
||||
ri_page = zcl_abapgit_gui_page_repo_over=>create( abap_true ).
|
||||
ri_page = zcl_abapgit_gui_page_tutorial=>create( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -618,11 +610,11 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
|||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
WHEN zif_abapgit_definitions=>c_action-repo_purge. " Repo purge all objects (uninstall)
|
||||
zcl_abapgit_services_repo=>purge( lv_key ).
|
||||
rs_handled-page = zcl_abapgit_gui_page_repo_over=>create( abap_true ).
|
||||
rs_handled-page = zcl_abapgit_gui_page_repo_over=>create( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
|
||||
WHEN zif_abapgit_definitions=>c_action-repo_remove. " Repo remove
|
||||
zcl_abapgit_services_repo=>remove( lv_key ).
|
||||
rs_handled-page = zcl_abapgit_gui_page_repo_over=>create( abap_true ).
|
||||
rs_handled-page = zcl_abapgit_gui_page_repo_over=>create( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page_replacing.
|
||||
WHEN zif_abapgit_definitions=>c_action-repo_activate_objects. " Repo activate objects
|
||||
zcl_abapgit_services_repo=>activate_objects( lv_key ).
|
||||
|
|
|
@ -262,6 +262,14 @@ INTERFACE zif_abapgit_definitions
|
|||
activate_wo_popup TYPE abap_bool,
|
||||
label_colors TYPE string,
|
||||
END OF ty_s_user_settings .
|
||||
TYPES:
|
||||
BEGIN OF ty_list_settings,
|
||||
filter TYPE string,
|
||||
only_favorites TYPE abap_bool,
|
||||
show_details TYPE abap_bool,
|
||||
order_by TYPE string,
|
||||
order_descending TYPE abap_bool,
|
||||
END OF ty_list_settings.
|
||||
TYPES:
|
||||
ty_dokil_tt TYPE STANDARD TABLE OF dokil
|
||||
WITH NON-UNIQUE DEFAULT KEY .
|
||||
|
|
Loading…
Reference in New Issue
Block a user