diff --git a/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap index e1c19fada..bd281ea2b 100644 --- a/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap @@ -18,13 +18,15 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION PRIVATE SECTION. TYPES: BEGIN OF ty_overview, - favorite TYPE string, - type TYPE string, - key TYPE string, - name TYPE string, - url TYPE string, - package TYPE string, - branch TYPE string, + favorite TYPE string, + type TYPE string, + key TYPE string, + name TYPE string, + url TYPE string, + package TYPE string, + branch TYPE string, + created_by TYPE string, + created_at TYPE string, END OF ty_overview, tty_overview TYPE STANDARD TABLE OF ty_overview WITH NON-UNIQUE DEFAULT KEY. @@ -87,7 +89,33 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION RETURNING VALUE(rt_overview) TYPE zcl_abapgit_gui_page_repo_over=>tty_overview RAISING - zcx_abapgit_exception. + zcx_abapgit_exception, + + render_table_header + IMPORTING + io_html TYPE REF TO zcl_abapgit_html, + + render_table + IMPORTING + io_html TYPE REF TO zcl_abapgit_html + it_overview TYPE zcl_abapgit_gui_page_repo_over=>tty_overview, + + render_table_body + IMPORTING + io_html TYPE REF TO zcl_abapgit_html + it_overview TYPE zcl_abapgit_gui_page_repo_over=>tty_overview, + + render_order_by + IMPORTING + io_html TYPE REF TO zcl_abapgit_html, + + render_order_by_direction + IMPORTING + io_html TYPE REF TO zcl_abapgit_html, + + render_header_bar + IMPORTING + io_html TYPE REF TO zcl_abapgit_html. ENDCLASS. @@ -128,11 +156,13 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. IF mv_filter IS NOT INITIAL. - 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. + 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. ENDIF. @@ -169,26 +199,51 @@ 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, - lo_user TYPE REF TO zcl_abapgit_persistence_user. + DATA: ls_overview LIKE LINE OF rt_overview, + lo_repo_srv TYPE REF TO zcl_abapgit_repo, + lo_user TYPE REF TO zcl_abapgit_persistence_user, + lv_time_zone TYPE timezone, + lv_date TYPE d, + lv_time TYPE t. FIELD-SYMBOLS: LIKE LINE OF it_repo_list. lo_user = zcl_abapgit_persistence_user=>get_instance( ). + CALL FUNCTION 'GET_SYSTEM_TIMEZONE' + IMPORTING + timezone = lv_time_zone + EXCEPTIONS + customizing_missing = 1 + OTHERS = 2. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + LOOP AT it_repo_list ASSIGNING . CLEAR: ls_overview. lo_repo_srv = zcl_abapgit_repo_srv=>get_instance( )->get( -key ). - ls_overview-favorite = lo_user->is_favorite_repo( -key ). - ls_overview-type = -offline. - ls_overview-key = -key. - ls_overview-name = lo_repo_srv->get_name( ). - ls_overview-url = -url. - ls_overview-package = -package. - ls_overview-branch = zcl_abapgit_git_branch_list=>get_display_name( -branch_name ). + ls_overview-favorite = lo_user->is_favorite_repo( -key ). + ls_overview-type = -offline. + ls_overview-key = -key. + ls_overview-name = lo_repo_srv->get_name( ). + ls_overview-url = -url. + ls_overview-package = -package. + ls_overview-branch = zcl_abapgit_git_branch_list=>get_display_name( -branch_name ). + ls_overview-created_by = -created_by. + + IF -created_at IS NOT INITIAL. + CONVERT TIME STAMP -created_at + TIME ZONE lv_time_zone + INTO DATE lv_date + TIME lv_time. + + ls_overview-created_at = |{ lv_date DATE = USER } { lv_time TIME = USER }|. + ENDIF. + INSERT ls_overview INTO TABLE rt_overview. ENDLOOP. @@ -255,13 +310,8 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. METHOD render_content. - DATA: lv_trclass TYPE string, - lo_persistence_repo TYPE REF TO zcl_abapgit_persistence_repo, - lt_overview TYPE tty_overview, - lv_type_icon TYPE string, - lv_favorite_icon TYPE string. - - FIELD-SYMBOLS: LIKE LINE OF lt_overview. + DATA: lo_persistence_repo TYPE REF TO zcl_abapgit_persistence_repo, + lt_overview TYPE tty_overview. CREATE OBJECT lo_persistence_repo. @@ -278,112 +328,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. ro_html->add( |
| ). - ro_html->add( |
| ). + render_header_bar( ro_html ). - ro_html->add( |Order by: | ). - - ro_html->add( || ). - - ro_html->add( render_text_input( iv_name = |filter| - iv_label = |Filter: | - iv_value = mv_filter ) ). - - ro_html->add( || ). - - ro_html->add( |
| ). - - ro_html->add( |
| ). - ro_html->add( || ). - - ro_html->add( |
| ). - ro_html->add( || ). - - " Header - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( '' ). - ro_html->add( '' ). - ro_html->add( '' ). - - - LOOP AT lt_overview ASSIGNING . - CLEAR lv_trclass. - IF sy-tabix = 1. - lv_trclass = ' class="firstrow"' ##NO_TEXT. - ENDIF. - - IF -type = abap_true. - lv_type_icon = 'plug/darkgrey'. - ELSE. - lv_type_icon = 'cloud-upload/blue'. - ENDIF. - - IF -favorite = abap_true. - lv_favorite_icon = 'star/blue'. - ELSE. - lv_favorite_icon = 'star/grey'. - ENDIF. - - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). - ENDLOOP. - - ro_html->add( || ). - ro_html->add( |
FavoriteTypeKeyNameUrlPackageBranch name
| ). - ro_html->add_a( iv_act = |{ zif_abapgit_definitions=>gc_action-repo_toggle_fav }?{ -key }| - iv_txt = zcl_abapgit_html=>icon( iv_name = lv_favorite_icon - iv_class = 'pad-sides' - iv_hint = 'Click to toggle favorite' ) ). - ro_html->add( |{ zcl_abapgit_html=>icon( lv_type_icon ) }{ -key }{ zcl_abapgit_html=>a( iv_txt = -name - iv_act = |{ gc_action-select }?{ -key }| ) }{ -url }{ -package }{ -branch }| ). - ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. "render_content @@ -445,4 +394,164 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. ENDCASE. ENDMETHOD. + + METHOD render_table_header. + + io_html->add( || ). + io_html->add( || ). + io_html->add( |Favorite| ). + io_html->add( |Type| ). + io_html->add( |Key| ). + io_html->add( |Name| ). + io_html->add( |Url| ). + io_html->add( |Package| ). + io_html->add( |Branch name| ). + io_html->add( |Creator| ). + io_html->add( |Created at| ). + io_html->add( || ). + io_html->add( '' ). + io_html->add( '' ). + io_html->add( '' ). + + ENDMETHOD. + + + METHOD render_table. + + io_html->add( |
| ). + io_html->add( || ). + + render_table_header( io_html ). + render_table_body( io_html = io_html + it_overview = it_overview ). + + io_html->add( || ). + io_html->add( |
| ). + + ENDMETHOD. + + + METHOD render_table_body. + + DATA: lv_trclass TYPE string, + lv_type_icon TYPE string, + lv_favorite_icon TYPE string. + + FIELD-SYMBOLS: LIKE LINE OF it_overview. + + LOOP AT it_overview ASSIGNING . + + CLEAR lv_trclass. + IF sy-tabix = 1. + lv_trclass = ' class="firstrow"' ##NO_TEXT. + ENDIF. + + IF -type = abap_true. + lv_type_icon = 'plug/darkgrey'. + ELSE. + lv_type_icon = 'cloud-upload/blue'. + ENDIF. + + IF -favorite = abap_true. + lv_favorite_icon = 'star/blue'. + ELSE. + lv_favorite_icon = 'star/grey'. + ENDIF. + + io_html->add( || ). + io_html->add( || ). + io_html->add_a( iv_act = |{ zif_abapgit_definitions=>gc_action-repo_toggle_fav }?{ -key }| + iv_txt = zcl_abapgit_html=>icon( iv_name = lv_favorite_icon + iv_class = 'pad-sides' + iv_hint = 'Click to toggle favorite' ) ). + io_html->add( || ). + io_html->add( |{ zcl_abapgit_html=>icon( lv_type_icon ) }| ). + + io_html->add( |{ -key }| ). + io_html->add( |{ zcl_abapgit_html=>a( iv_txt = -name + iv_act = |{ gc_action-select }?{ -key }| ) }| ). + io_html->add( |{ -url }| ). + io_html->add( |{ -package }| ). + io_html->add( |{ -branch }| ). + io_html->add( |{ -created_by }| ). + io_html->add( |{ -created_at }| ). + io_html->add( || ). + io_html->add( || ). + io_html->add( || ). + + ENDLOOP. + + ENDMETHOD. + + + METHOD render_order_by. + + io_html->add( |Order by: | ). + + ENDMETHOD. + + + METHOD render_order_by_direction. + + io_html->add( || ). + + ENDMETHOD. + + + METHOD render_header_bar. + + io_html->add( |
| ). + + render_order_by( io_html ). + render_order_by_direction( io_html ). + + io_html->add( render_text_input( iv_name = |filter| + iv_label = |Filter: | + iv_value = mv_filter ) ). + + io_html->add( || ). + + io_html->add( |
| ). + + io_html->add( || ). + io_html->add( |
| ). + + ENDMETHOD. + ENDCLASS.