' ).
@@ -92,6 +280,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDIF.
ro_html->add( '
' ).
+
+ " Table menu
IF mo_repo->is_offline( ) = abap_false.
IF mv_hide_files = abap_true.
lo_tab_menu->add( iv_txt = 'Show files' iv_act = c_actions-toggle_hide_files ).
@@ -101,21 +291,26 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ro_html->add( lo_tab_menu->render( iv_as_angle = abap_true ) ).
ENDIF.
+ " Repo content table
ro_html->add( '
' ).
+
+ IF lcl_path=>is_root( iv_path ) = abap_false.
+ ro_html->add( render_parent_dir_line( ) ).
+ ENDIF.
+
IF lines( lt_repo_items ) = 0.
- ro_html->add( ''
- && 'Empty package'
- && ' |
' ) ##NO_TEXT.
+ ro_html->add( render_empty_package( ) ).
ELSE.
LOOP AT lt_repo_items ASSIGNING .
- ro_html->add( render_repo_item( io_repo = mo_repo is_item = ) ).
+ ro_html->add( render_repo_item( ) ).
ENDLOOP.
ENDIF.
+
ro_html->add( '
' ).
ro_html->add( '
' ).
CATCH lcx_exception INTO lx_error.
- ro_html->add( render_repo_menu( mo_repo ) ).
+ ro_html->add( render_repo_menu( ) ).
ro_html->add( lcl_gui_page_super=>render_error( lx_error ) ).
ENDTRY.
@@ -136,12 +331,12 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
CREATE OBJECT lo_tb_branch.
CREATE OBJECT lo_tb_advanced.
- lv_key = io_repo->get_key( ).
- IF io_repo->is_offline( ) = abap_false.
- lo_repo_online ?= io_repo.
+ lv_key = mo_repo->get_key( ).
+ IF mo_repo->is_offline( ) = abap_false.
+ lo_repo_online ?= mo_repo.
ENDIF.
- IF io_repo->is_write_protected( ) = abap_true.
+ IF mo_repo->is_write_protected( ) = abap_true.
lv_wp_opt = gc_html_opt-crossout.
lv_pull_opt = gc_html_opt-crossout.
ELSE.
@@ -149,7 +344,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDIF.
" Build branch drop-down ========================
- IF io_repo->is_offline( ) = abap_false. " Online ?
+ IF mo_repo->is_offline( ) = abap_false. " Online ?
lo_tb_branch->add( iv_txt = 'Overview'
iv_act = |{ gc_action-go_branch_overview }?{ lv_key }| ).
lo_tb_branch->add( iv_txt = 'Switch'
@@ -162,7 +357,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDIF.
" Build advanced drop-down ========================
- IF io_repo->is_offline( ) = abap_false. " Online ?
+ IF mo_repo->is_offline( ) = abap_false. " Online ?
lo_tb_advanced->add( iv_txt = 'Reset local'
iv_act = |{ gc_action-git_reset }?{ lv_key }|
iv_opt = lv_wp_opt ).
@@ -183,7 +378,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
iv_opt = lv_wp_opt ).
" Build main toolbar ==============================
- IF io_repo->is_offline( ) = abap_false. " Online ?
+ IF mo_repo->is_offline( ) = abap_false. " Online ?
TRY.
IF lo_repo_online->get_sha1_remote( ) <> lo_repo_online->get_sha1_local( ).
lo_toolbar->add( iv_txt = 'Pull'
@@ -216,131 +411,91 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
iv_act = |{ gc_action-repo_refresh }?{ lv_key }| ).
" Render ==========================================
- ro_html->add( '
' ).
+* ro_html->add( '
' ).
+* ro_html->add( lo_toolbar->render( ) ).
+* ro_html->add( '
' ).
+
+ ro_html->add( '
' ).
+ ro_html->add( '
' ).
+ ro_html->add( |{ mv_cur_dir } | | ).
+ ro_html->add( '' ).
ro_html->add( lo_toolbar->render( ) ).
+ ro_html->add( ' | ' ).
+ ro_html->add( '
|
' ).
ro_html->add( '
' ).
+
ENDMETHOD. "render_repo_menu
- METHOD extract_repo_content.
+ METHOD get_item_class.
- DATA: lo_repo_online TYPE REF TO lcl_repo_online,
- lt_tadir TYPE ty_tadir_tt,
- ls_file TYPE ty_repo_file,
- lt_results TYPE ty_results_tt.
+ DATA lt_class TYPE TABLE OF string.
- FIELD-SYMBOLS:
LIKE LINE OF lt_results,
- LIKE LINE OF et_repo_items,
- LIKE LINE OF lt_tadir.
-
-
- CLEAR et_repo_items.
-
- IF io_repo->is_offline( ) = abap_true.
- lt_tadir = lcl_tadir=>read( io_repo->get_package( ) ).
- LOOP AT lt_tadir ASSIGNING .
- APPEND INITIAL LINE TO et_repo_items ASSIGNING .
- IF sy-tabix = 1.
- -is_first = abap_true.
- ENDIF.
- -obj_type = -object.
- -obj_name = -obj_name.
- ENDLOOP.
-
- ELSE.
- CREATE OBJECT eo_log.
- lo_repo_online ?= io_repo.
- lt_results = lo_repo_online->status( eo_log ).
- LOOP AT lt_results ASSIGNING .
- AT NEW obj_name. "obj_type + obj_name
- APPEND INITIAL LINE TO et_repo_items ASSIGNING .
- -obj_type = -obj_type.
- -obj_name = -obj_name.
- -sortkey = c_default_sortkey. " Default sort key
- -changes = 0.
- ENDAT.
-
- IF -filename IS NOT INITIAL.
- ls_file-path = -path.
- ls_file-filename = -filename.
- ls_file-is_changed = boolc( NOT -match = abap_true ).
- ls_file-new = -new.
- APPEND ls_file TO -files.
-
- IF ls_file-is_changed = abap_true OR ls_file-new IS NOT INITIAL.
- -sortkey = 2. " Changed files
- -changes = -changes + 1.
- ENDIF.
- ENDIF.
-
- AT END OF obj_name. "obj_type + obj_name
- IF -obj_type IS INITIAL.
- -sortkey = 0. "Virtual objects
- ELSEIF lines( -files ) = 0.
- -sortkey = 1. "New object to commit
- ENDIF.
- ENDAT.
- ENDLOOP.
-
- SORT et_repo_items BY sortkey obj_type obj_name ASCENDING.
- READ TABLE et_repo_items ASSIGNING INDEX 1.
- IF sy-subrc IS INITIAL.
- -is_first = abap_true.
- ENDIF.
+ IF is_item-obj_name IS INITIAL AND is_item-is_dir = abap_false.
+ APPEND 'unsupported' TO lt_class.
ENDIF.
+ IF is_item-is_dir = abap_true.
+ APPEND 'folder' TO lt_class.
+ ENDIF.
+
+ IF is_item-changes > 0.
+ APPEND 'modified' TO lt_class.
+ ENDIF.
+
+ IF lines( lt_class ) > 0.
+ rv_html = | class="{ concat_lines_of( table = lt_class sep = ` ` ) }"|.
+ ENDIF.
+
+ ENDMETHOD. "get_item_class
+
+ METHOD get_item_icon.
+
+ CASE is_item-obj_type.
+ WHEN 'PROG' OR 'CLAS' OR 'FUGR'.
+ rv_html = |
|.
+ WHEN 'W3MI' OR 'W3HT'.
+ rv_html = |
|.
+ WHEN ''.
+ rv_html = space. " no icon
+ WHEN OTHERS.
+ rv_html = |
|.
+ ENDCASE.
+
+ IF is_item-is_dir = abap_true.
+ rv_html = |
|.
+ ENDIF.
+
+ ENDMETHOD. "get_item_icon
- ENDMETHOD. "extract_repo_content
METHOD render_repo_item.
DATA:
lv_link TYPE string,
- lv_icon TYPE string,
lv_difflink TYPE string,
- ls_file LIKE LINE OF is_item-files,
- lv_trclass TYPE string.
+ ls_file LIKE LINE OF is_item-files.
CREATE OBJECT ro_html.
- IF is_item-is_first = abap_true. " TR class
- lv_trclass = 'firstrow' ##NO_TEXT.
- ENDIF.
- IF is_item-obj_name IS INITIAL.
- lv_trclass = lv_trclass && ' unsupported' ##NO_TEXT.
- ENDIF.
- IF is_item-sortkey > 0 AND is_item-sortkey < c_default_sortkey.
- lv_trclass = lv_trclass && ' modified' ##NO_TEXT.
- ENDIF.
- IF lv_trclass IS NOT INITIAL.
- SHIFT lv_trclass LEFT DELETING LEADING space.
- lv_trclass = | class="{ lv_trclass }"|.
- ENDIF.
- ro_html->add( || ).
+ ro_html->add( |
| ).
- IF is_item-obj_name IS INITIAL.
+ IF is_item-obj_name IS INITIAL AND is_item-is_dir = abap_false.
ro_html->add( ' | '
&& 'non-code and meta files | ' ).
+ ELSEIF is_item-is_dir = abap_true.
+ lv_link = render_dir_jump_link( iv_path = is_item-path ).
+ ro_html->add( |{ get_item_icon( is_item ) } | | ).
+ ro_html->add( |{ lv_link } | | ).
ELSE.
- CASE is_item-obj_type. "TODO ??
- WHEN 'PROG' OR 'CLAS' OR 'FUGR'.
- lv_icon = |
|.
- WHEN 'W3MI' OR 'W3HT'.
- lv_icon = |
|.
- WHEN ''.
- lv_icon = space. " no icon
- WHEN OTHERS.
- lv_icon = |
|.
- ENDCASE.
-
lv_link = render_obj_jump_link( iv_obj_name = is_item-obj_name
iv_obj_type = is_item-obj_type ).
- ro_html->add( |{ lv_icon } | | ).
+ ro_html->add( |{ get_item_icon( is_item ) } | | ).
ro_html->add( |{ is_item-obj_type } | | ).
ro_html->add( |{ lv_link } | | ).
ENDIF.
- IF io_repo->is_offline( ) = abap_false. " Files for online repos only
+ IF mo_repo->is_offline( ) = abap_false. " Files for online repos only
ro_html->add( '' ).
IF mv_hide_files = abap_false OR is_item-obj_type IS INITIAL.
@@ -356,7 +511,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ELSEIF is_item-changes > 0.
IF mv_hide_files = abap_true AND is_item-obj_name IS NOT INITIAL.
lv_difflink = lcl_html_action_utils=>obj_encode(
- iv_key = io_repo->get_key( )
+ iv_key = mo_repo->get_key( )
ig_object = is_item ).
ro_html->add_anchor(
iv_txt = |diff ({ is_item-changes })|
@@ -369,7 +524,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ro_html->add( 'new @local' ).
ELSEIF ls_file-is_changed = abap_true.
lv_difflink = lcl_html_action_utils=>file_encode(
- iv_key = io_repo->get_key( )
+ iv_key = mo_repo->get_key( )
ig_file = ls_file ).
ro_html->add_anchor(
iv_txt = 'diff'
@@ -388,6 +543,41 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDMETHOD. "render_repo_item
+ METHOD render_empty_package.
+
+ rv_html = ' |
'
+ && 'Empty package'
+ && ' |
' ##NO_TEXT.
+
+ ENDMETHOD. "render_empty_package
+
+ METHOD render_parent_dir_line.
+
+ CREATE OBJECT ro_html.
+
+ ro_html->add( '' ).
+ ro_html->add( | | | ).
+ ro_html->add( |{ render_dir_jump_link( '..' ) } | | ).
+ ro_html->add( '
' ).
+
+ ENDMETHOD. "render_parent_dir_line
+
+ METHOD render_dir_jump_link.
+
+ DATA: lv_path TYPE string,
+ lv_encode TYPE string,
+ lo_html TYPE REF TO lcl_html_helper.
+
+ lv_path = iv_path.
+ REPLACE FIRST OCCURRENCE OF mv_cur_dir IN lv_path WITH ''.
+ lv_encode = lcl_html_action_utils=>dir_encode( lv_path ).
+
+ CREATE OBJECT lo_html.
+ lo_html->add_anchor( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ).
+ rv_html = lo_html->mv_html.
+
+ ENDMETHOD. "render_dir_jump_link
+
METHOD render_obj_jump_link.
DATA: lv_encode TYPE string,