From 95560c21a23e14e401ed09028880a42f2da913e1 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Tue, 31 Oct 2023 10:48:04 -0400 Subject: [PATCH] Refactor `render_table_header/footer` (#6600) Co-authored-by: Lars Hvam --- .../lib/zcl_abapgit_gui_chunk_lib.clas.abap | 150 +++++++++++------- .../zcl_abapgit_gui_page_repo_over.clas.abap | 24 +-- .../zcl_abapgit_gui_page_repo_view.clas.abap | 102 ++++++------ 3 files changed, 148 insertions(+), 128 deletions(-) diff --git a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap index f2e91da3b..b8ecd0e38 100644 --- a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap +++ b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap @@ -63,13 +63,18 @@ CLASS zcl_abapgit_gui_chunk_lib DEFINITION !ix_error TYPE REF TO zcx_abapgit_exception RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . - CLASS-METHODS render_order_by_header_cells + CLASS-METHODS render_table_header IMPORTING !it_col_spec TYPE zif_abapgit_definitions=>ty_col_spec_tt !iv_order_by TYPE string !iv_order_descending TYPE abap_bool RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . + CLASS-METHODS render_table_footer + IMPORTING + !iv_message TYPE string + RETURNING + VALUE(ri_html) TYPE REF TO zif_abapgit_html . CLASS-METHODS render_warning_banner IMPORTING !iv_text TYPE string @@ -786,66 +791,6 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. ENDMETHOD. - METHOD render_order_by_header_cells. - - DATA: - lv_tmp TYPE string, - lv_disp_name TYPE string. - - FIELD-SYMBOLS LIKE LINE OF it_col_spec. - - CREATE OBJECT ri_html TYPE zcl_abapgit_html. - - LOOP AT it_col_spec ASSIGNING . - " e.g. Created at [{ gv_time_zone }] - lv_tmp = '-css_class IS NOT INITIAL. - lv_tmp = lv_tmp && | class="{ -css_class }"|. - ENDIF. - lv_tmp = lv_tmp && '>'. - - IF -display_name IS NOT INITIAL. - lv_disp_name = -display_name. - IF -add_tz = abap_true. - lv_disp_name = lv_disp_name && | [{ gv_time_zone }]|. - ENDIF. - IF -tech_name = iv_order_by. - IF iv_order_descending = abap_true. - lv_tmp = lv_tmp && ri_html->a( - iv_txt = lv_disp_name - iv_act = |{ zif_abapgit_definitions=>c_action-change_order_by }| - iv_title = -title ). - ELSE. - lv_tmp = lv_tmp && ri_html->a( - iv_txt = lv_disp_name - iv_act = |{ zif_abapgit_definitions=>c_action-direction }?direction=DESCENDING| - iv_title = -title ). - ENDIF. - ELSEIF -allow_order_by = abap_true. - lv_tmp = lv_tmp && ri_html->a( - iv_txt = lv_disp_name - iv_act = |{ zif_abapgit_definitions=>c_action-change_order_by }?orderBy={ -tech_name }| - iv_title = -title ). - ELSE. - lv_tmp = lv_tmp && lv_disp_name. - ENDIF. - ENDIF. - IF -tech_name = iv_order_by - AND iv_order_by IS NOT INITIAL. - IF iv_order_descending = abap_true. - lv_tmp = lv_tmp && | ▾|. " arrow down - ELSE. - lv_tmp = lv_tmp && | ▴|. " arrow up - ENDIF. - ENDIF. - - lv_tmp = lv_tmp && ''. - ri_html->add( lv_tmp ). - ENDLOOP. - - ENDMETHOD. - - METHOD render_package_name. DATA: @@ -1174,6 +1119,89 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. ENDMETHOD. + METHOD render_table_footer. + + CREATE OBJECT ri_html TYPE zcl_abapgit_html. + + ri_html->add( '' ). + ri_html->add( '' ). + ri_html->add( '' ). + + ri_html->add( iv_message ). + + ri_html->add( '' ). + ri_html->add( '' ). + ri_html->add( '' ). + + ENDMETHOD. + + + METHOD render_table_header. + + DATA: + lv_tmp TYPE string, + lv_disp_name TYPE string. + + FIELD-SYMBOLS LIKE LINE OF it_col_spec. + + CREATE OBJECT ri_html TYPE zcl_abapgit_html. + + ri_html->add( '' ). + ri_html->add( '' ). + + LOOP AT it_col_spec ASSIGNING . + " e.g. Created at [{ gv_time_zone }] + lv_tmp = '-css_class IS NOT INITIAL. + lv_tmp = lv_tmp && | class="{ -css_class }"|. + ENDIF. + lv_tmp = lv_tmp && '>'. + + IF -display_name IS NOT INITIAL. + lv_disp_name = -display_name. + IF -add_tz = abap_true. + lv_disp_name = lv_disp_name && | [{ gv_time_zone }]|. + ENDIF. + IF -tech_name = iv_order_by. + IF iv_order_descending = abap_true. + lv_tmp = lv_tmp && ri_html->a( + iv_txt = lv_disp_name + iv_act = |{ zif_abapgit_definitions=>c_action-change_order_by }| + iv_title = -title ). + ELSE. + lv_tmp = lv_tmp && ri_html->a( + iv_txt = lv_disp_name + iv_act = |{ zif_abapgit_definitions=>c_action-direction }?direction=DESCENDING| + iv_title = -title ). + ENDIF. + ELSEIF -allow_order_by = abap_true. + lv_tmp = lv_tmp && ri_html->a( + iv_txt = lv_disp_name + iv_act = |{ zif_abapgit_definitions=>c_action-change_order_by }?orderBy={ -tech_name }| + iv_title = -title ). + ELSE. + lv_tmp = lv_tmp && lv_disp_name. + ENDIF. + ENDIF. + IF -tech_name = iv_order_by + AND iv_order_by IS NOT INITIAL. + IF iv_order_descending = abap_true. + lv_tmp = lv_tmp && | ▾|. " arrow down + ELSE. + lv_tmp = lv_tmp && | ▴|. " arrow up + ENDIF. + ENDIF. + + lv_tmp = lv_tmp && ''. + ri_html->add( lv_tmp ). + ENDLOOP. + + ri_html->add( '' ). + ri_html->add( '' ). + + ENDMETHOD. + + METHOD render_text_input. DATA lv_attrs TYPE string. diff --git a/src/ui/pages/zcl_abapgit_gui_page_repo_over.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_repo_over.clas.abap index 2d92fcdad..5c3f35377 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_repo_over.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_repo_over.clas.abap @@ -669,16 +669,14 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. METHOD render_table_footer. + DATA lv_action TYPE string. + IF ms_list_settings-only_favorites = abap_true. - ii_html->add( `` ). - ii_html->add( `` ). - ii_html->add( |(Only favorites are shown. { - ii_html->a( - iv_txt = |Show All| - iv_act = |{ zif_abapgit_definitions=>c_action-toggle_favorites }?force_state={ abap_false }| ) - })| ). - ii_html->add( `` ). - ii_html->add( `` ). + lv_action = ii_html->a( + iv_txt = 'Show All' + iv_act = |{ zif_abapgit_definitions=>c_action-toggle_favorites }?force_state={ abap_false }| ). + + ii_html->add( zcl_abapgit_gui_chunk_lib=>render_table_footer( |(Only favorites are shown. { lv_action })| ) ). ENDIF. ENDMETHOD. @@ -686,17 +684,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. METHOD render_table_header. - ii_html->add( || ). - ii_html->add( || ). - - ii_html->add( zcl_abapgit_gui_chunk_lib=>render_order_by_header_cells( + ii_html->add( zcl_abapgit_gui_chunk_lib=>render_table_header( it_col_spec = build_table_scheme( ) iv_order_by = ms_list_settings-order_by iv_order_descending = ms_list_settings-order_descending ) ). - ii_html->add( '' ). - ii_html->add( '' ). - ENDMETHOD. diff --git a/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap index bfd7ad477..ad3660893 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_repo_view.clas.abap @@ -129,7 +129,10 @@ CLASS zcl_abapgit_gui_page_repo_view DEFINITION METHODS open_in_main_language RAISING zcx_abapgit_exception . - METHODS render_order_by + METHODS render_table_header + RETURNING + VALUE(ri_html) TYPE REF TO zif_abapgit_html . + METHODS render_table_footer RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . METHODS apply_order_by @@ -959,10 +962,52 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ENDMETHOD. - METHOD render_order_by. + METHOD render_parent_dir. + + CREATE OBJECT ri_html TYPE zcl_abapgit_html. + + ri_html->add( '' ). + ri_html->add( |{ ri_html->icon( 'folder' ) }| ). + ri_html->add( |{ build_dir_jump_link( '..' ) }| ). + IF mo_repo->has_remote_source( ) = abap_true. + ri_html->add( || ). " Dummy for online + ENDIF. + ri_html->add( '' ). + + ENDMETHOD. + + + METHOD render_scripts. + + CREATE OBJECT ri_html TYPE zcl_abapgit_html. + + ri_html->set_title( cl_abap_typedescr=>describe_by_object_ref( me )->get_relative_name( ) ). + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_palette( + iv_action = zif_abapgit_definitions=>c_action-go_repo ) ). + + ENDMETHOD. + + + METHOD render_table_footer. + + DATA lv_action TYPE string. + + CREATE OBJECT ri_html TYPE zcl_abapgit_html. + + IF mv_changes_only = abap_true. + lv_action = ri_html->a( + iv_txt = 'Show All' + iv_act = c_actions-toggle_changes ). + + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_table_footer( |(Only changes are shown. { lv_action })| ) ). + ENDIF. + + ENDMETHOD. + + + METHOD render_table_header. DATA: - lv_icon TYPE string, lt_col_spec TYPE zif_abapgit_definitions=>ty_col_spec_tt, ls_col_spec TYPE zif_abapgit_definitions=>ty_col_spec. @@ -999,49 +1044,11 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ls_col_spec-css_class = 'cmd'. APPEND ls_col_spec TO lt_col_spec. - ri_html->add( || ). - ri_html->add( || ). - - ri_html->add( zcl_abapgit_gui_chunk_lib=>render_order_by_header_cells( + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_table_header( it_col_spec = lt_col_spec iv_order_by = mv_order_by iv_order_descending = mv_order_descending ) ). - IF mv_diff_first = abap_true. - lv_icon = 'check/blue'. - ELSE. - lv_icon = 'check/grey'. - ENDIF. - - ri_html->add( '' ). - ri_html->add( '' ). - - ENDMETHOD. - - - METHOD render_parent_dir. - - CREATE OBJECT ri_html TYPE zcl_abapgit_html. - - ri_html->add( '' ). - ri_html->add( |{ ri_html->icon( 'folder' ) }| ). - ri_html->add( |{ build_dir_jump_link( '..' ) }| ). - IF mo_repo->has_remote_source( ) = abap_true. - ri_html->add( || ). " Dummy for online - ENDIF. - ri_html->add( '' ). - - ENDMETHOD. - - - METHOD render_scripts. - - CREATE OBJECT ri_html TYPE zcl_abapgit_html. - - ri_html->set_title( cl_abap_typedescr=>describe_by_object_ref( me )->get_relative_name( ) ). - ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_palette( - iv_action = zif_abapgit_definitions=>c_action-go_repo ) ). - ENDMETHOD. @@ -1290,7 +1297,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. " Repo content table ri_html->add( '' ). - ri_html->add( render_order_by( ) ). + ri_html->add( render_table_header( ) ). IF zcl_abapgit_path=>is_root( mv_cur_dir ) = abap_false. ri_html->add( render_parent_dir( ) ). @@ -1305,14 +1312,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. iv_render_transports = mv_are_changes_recorded_in_tr ) ). ENDLOOP. - IF mv_changes_only = abap_true. - ri_html->add( `` ). - ENDIF. + ri_html->add( render_table_footer( ) ). ri_html->add( '
` ). - ri_html->add( `(Only changes are shown. ` ). - ri_html->add( ri_html->a( - iv_txt = |Show All| - iv_act = |{ c_actions-toggle_changes }| ) ). - ri_html->add( `)
' ). ENDIF.