repo view refactoring

This commit is contained in:
sbcgua 2016-11-04 17:35:34 +02:00
parent fb371ae903
commit 1955a117bb
3 changed files with 112 additions and 84 deletions

View File

@ -341,9 +341,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
_add '.repo_tab tr.unsupported { color: lightgrey; }'. _add '.repo_tab tr.unsupported { color: lightgrey; }'.
_add '.repo_tab tr.modified { background: #fbf7e9; }'. _add '.repo_tab tr.modified { background: #fbf7e9; }'.
_add '.repo_tab tr:first-child td { border-top: 0px; }'. _add '.repo_tab tr:first-child td { border-top: 0px; }'.
_add '.repo_tab td.files span { display: block; }'.
_add '.repo_tab td.cmd span { display: block; }'.
_add '.repo_tab td.cmd a { display: block; }'.
_add 'td.current_dir { color: #ccc; }'. _add 'td.current_dir { color: #ccc; }'.
ENDMETHOD. "styles ENDMETHOD. "styles

View File

@ -632,7 +632,7 @@ CLASS lcl_diff IMPLEMENTATION.
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff. FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff.
IF lines( mt_diff ) < 100. IF lines( mt_diff ) < 20.
LOOP AT mt_diff ASSIGNING <ls_diff>. LOOP AT mt_diff ASSIGNING <ls_diff>.
<ls_diff>-short = abap_true. <ls_diff>-short = abap_true.
ENDLOOP. ENDLOOP.
@ -641,7 +641,7 @@ CLASS lcl_diff IMPLEMENTATION.
WHERE NOT result IS INITIAL AND short = abap_false. WHERE NOT result IS INITIAL AND short = abap_false.
lv_index = sy-tabix. lv_index = sy-tabix.
DO 10 TIMES. " Backward DO 8 TIMES. " Backward
READ TABLE mt_diff INDEX ( lv_index - sy-index ) ASSIGNING <ls_diff>. READ TABLE mt_diff INDEX ( lv_index - sy-index ) ASSIGNING <ls_diff>.
IF sy-subrc <> 0 OR <ls_diff>-short = abap_true. " tab bound or prev marker IF sy-subrc <> 0 OR <ls_diff>-short = abap_true. " tab bound or prev marker
EXIT. EXIT.
@ -649,7 +649,7 @@ CLASS lcl_diff IMPLEMENTATION.
<ls_diff>-short = abap_true. <ls_diff>-short = abap_true.
ENDDO. ENDDO.
DO 10 TIMES. " Forward DO 8 TIMES. " Forward
READ TABLE mt_diff INDEX ( lv_index + sy-index - 1 ) ASSIGNING <ls_diff>. READ TABLE mt_diff INDEX ( lv_index + sy-index - 1 ) ASSIGNING <ls_diff>.
IF sy-subrc <> 0. " tab bound reached IF sy-subrc <> 0. " tab bound reached
EXIT. EXIT.

View File

@ -247,16 +247,22 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su
mv_changes_only TYPE abap_bool. mv_changes_only TYPE abap_bool.
METHODS: METHODS:
render_repo_menu render_head_menu
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
RAISING lcx_exception, RAISING lcx_exception,
render_tab_menu render_grid_menu
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
RAISING lcx_exception, RAISING lcx_exception,
render_repo_item render_item
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
RAISING lcx_exception, RAISING lcx_exception,
render_item_files
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
render_item_command
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
get_item_class get_item_class
IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
RETURNING VALUE(rv_html) TYPE string, RETURNING VALUE(rv_html) TYPE string,
@ -265,14 +271,13 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su
RETURNING VALUE(rv_html) TYPE string, RETURNING VALUE(rv_html) TYPE string,
render_empty_package render_empty_package
RETURNING VALUE(rv_html) TYPE string, RETURNING VALUE(rv_html) TYPE string,
render_parent_dir_line render_parent_dir
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
RAISING lcx_exception. RAISING lcx_exception.
METHODS: METHODS:
build_obj_jump_link build_obj_jump_link
IMPORTING iv_obj_type TYPE tadir-object IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item
iv_obj_name TYPE tadir-obj_name
RETURNING VALUE(rv_html) TYPE string, RETURNING VALUE(rv_html) TYPE string,
build_dir_jump_link build_dir_jump_link
IMPORTING iv_path TYPE string IMPORTING iv_path TYPE string
@ -337,7 +342,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
iv_by_folders = mv_show_folders iv_by_folders = mv_show_folders
iv_changes_only = mv_changes_only ). iv_changes_only = mv_changes_only ).
ro_html->add( render_repo_menu( ) ). ro_html->add( render_head_menu( ) ).
lo_log = lo_browser->get_log( ). lo_log = lo_browser->get_log( ).
IF mo_repo->is_offline( ) = abap_false AND lo_log->count( ) > 0. IF mo_repo->is_offline( ) = abap_false AND lo_log->count( ) > 0.
@ -347,20 +352,20 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDIF. ENDIF.
ro_html->add( '<div class="repo_container">' ). ro_html->add( '<div class="repo_container">' ).
ro_html->add( render_tab_menu( ) ). ro_html->add( render_grid_menu( ) ).
" Repo content table " Repo content table
ro_html->add( '<table width="100%" class="repo_tab">' ). ro_html->add( '<table width="100%" class="repo_tab">' ).
IF lcl_path=>is_root( mv_cur_dir ) = abap_false. IF lcl_path=>is_root( mv_cur_dir ) = abap_false.
ro_html->add( render_parent_dir_line( ) ). ro_html->add( render_parent_dir( ) ).
ENDIF. ENDIF.
IF lines( lt_repo_items ) = 0. IF lines( lt_repo_items ) = 0.
ro_html->add( render_empty_package( ) ). ro_html->add( render_empty_package( ) ).
ELSE. ELSE.
LOOP AT lt_repo_items ASSIGNING <ls_item>. LOOP AT lt_repo_items ASSIGNING <ls_item>.
ro_html->add( render_repo_item( <ls_item> ) ). ro_html->add( render_item( <ls_item> ) ).
ENDLOOP. ENDLOOP.
ENDIF. ENDIF.
@ -368,13 +373,13 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ro_html->add( '</div>' ). ro_html->add( '</div>' ).
CATCH lcx_exception INTO lx_error. CATCH lcx_exception INTO lx_error.
ro_html->add( render_repo_menu( ) ). ro_html->add( render_head_menu( ) ).
ro_html->add( lcl_gui_page_super=>render_error( lx_error ) ). ro_html->add( lcl_gui_page_super=>render_error( lx_error ) ).
ENDTRY. ENDTRY.
ENDMETHOD. "lif_gui_page~render ENDMETHOD. "lif_gui_page~render
METHOD render_tab_menu. METHOD render_grid_menu.
DATA lo_tab_menu TYPE REF TO lcl_html_toolbar. DATA lo_tab_menu TYPE REF TO lcl_html_toolbar.
@ -407,9 +412,9 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ro_html = lo_tab_menu->render( iv_as_angle = abap_true ). ro_html = lo_tab_menu->render( iv_as_angle = abap_true ).
ENDMETHOD. "render_tab_menu ENDMETHOD. "render_grid_menu
METHOD render_repo_menu. METHOD render_head_menu.
DATA: lo_toolbar TYPE REF TO lcl_html_toolbar, DATA: lo_toolbar TYPE REF TO lcl_html_toolbar,
lo_tb_advanced TYPE REF TO lcl_html_toolbar, lo_tb_advanced TYPE REF TO lcl_html_toolbar,
@ -518,7 +523,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ro_html->add( '</div>' ). ro_html->add( '</div>' ).
ENDMETHOD. "render_repo_menu ENDMETHOD. "render_head_menu
METHOD get_item_class. METHOD get_item_class.
@ -560,10 +565,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDMETHOD. "get_item_icon ENDMETHOD. "get_item_icon
METHOD render_repo_item. METHOD render_item.
DATA: DATA: lv_link TYPE string,
lv_link TYPE string,
lv_difflink TYPE string,
ls_file LIKE LINE OF is_item-files. ls_file LIKE LINE OF is_item-files.
CREATE OBJECT ro_html. CREATE OBJECT ro_html.
@ -574,41 +577,70 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
IF is_item-obj_name IS INITIAL AND is_item-is_dir = abap_false. IF is_item-obj_name IS INITIAL AND is_item-is_dir = abap_false.
ro_html->add( '<td colspan="2"></td>' ro_html->add( '<td colspan="2"></td>'
&& '<td class="object"><i class="grey">non-code and meta files</i></td>' ). && '<td class="object"><i class="grey">non-code and meta files</i></td>' ).
ELSEIF is_item-is_dir = abap_true. ELSE.
lv_link = build_dir_jump_link( iv_path = is_item-path ).
ro_html->add( |<td class="icon">{ get_item_icon( is_item ) }</td>| ). ro_html->add( |<td class="icon">{ get_item_icon( is_item ) }</td>| ).
IF is_item-is_dir = abap_true. " Subdir
lv_link = build_dir_jump_link( iv_path = is_item-path ).
ro_html->add( |<td class="dir" colspan="2">{ lv_link }</td>| ). ro_html->add( |<td class="dir" colspan="2">{ lv_link }</td>| ).
ELSE. ELSE.
lv_link = build_obj_jump_link( iv_obj_name = is_item-obj_name lv_link = build_obj_jump_link( is_item = is_item ).
iv_obj_type = is_item-obj_type ).
ro_html->add( |<td class="icon">{ get_item_icon( is_item ) }</td>| ).
ro_html->add( |<td class="type">{ is_item-obj_type }</td>| ). ro_html->add( |<td class="type">{ is_item-obj_type }</td>| ).
ro_html->add( |<td class="object">{ lv_link }</td>| ). ro_html->add( |<td class="object">{ lv_link }</td>| ).
ENDIF. ENDIF.
ENDIF.
IF mo_repo->is_offline( ) = abap_false. IF mo_repo->is_offline( ) = abap_false.
" Files " Files
ro_html->add( '<td class="files">' ). ro_html->add( '<td class="files">' ).
IF mv_hide_files = abap_false OR is_item-obj_type IS INITIAL. ro_html->add( render_item_files( is_item ) ).
LOOP AT is_item-files INTO ls_file.
ro_html->add( |<span>{ ls_file-path && ls_file-filename }</span>| ).
ENDLOOP.
ENDIF.
ro_html->add( '</td>' ). ro_html->add( '</td>' ).
" TODO Refactor
" Command " Command
ro_html->add( '<td class="cmd">' ). ro_html->add( '<td class="cmd">' ).
ro_html->add( render_item_command( is_item ) ).
ro_html->add( '</td>' ).
ENDIF.
ro_html->add( '</tr>' ).
ENDMETHOD. "render_item
METHOD render_item_files.
DATA: ls_file LIKE LINE OF is_item-files.
CREATE OBJECT ro_html.
IF mv_hide_files = abap_true AND is_item-obj_type IS NOT INITIAL.
RETURN.
ENDIF.
LOOP AT is_item-files INTO ls_file.
ro_html->add( |<div>{ ls_file-path && ls_file-filename }</div>| ).
ENDLOOP.
ENDMETHOD. "render_item_files
METHOD render_item_command.
DATA: lv_difflink TYPE string,
ls_file LIKE LINE OF is_item-files.
CREATE OBJECT ro_html.
IF is_item-is_dir = abap_true. IF is_item-is_dir = abap_true.
ro_html->add( |<span class="grey">{ is_item-changes } changes</span>| ). ro_html->add( |<div class="grey">{ is_item-changes } changes</div>| ).
ELSEIF lines( is_item-files ) = 0. ELSEIF lines( is_item-files ) = 0.
ro_html->add( '<span class="grey">new @local</span>' ). ro_html->add( '<div class="grey">new @local</div>' ).
ELSEIF is_item-changes > 0. ELSEIF is_item-changes > 0.
IF mv_hide_files = abap_true AND is_item-obj_name IS NOT INITIAL. IF mv_hide_files = abap_true AND is_item-obj_name IS NOT INITIAL.
lv_difflink = lcl_html_action_utils=>obj_encode( lv_difflink = lcl_html_action_utils=>obj_encode(
iv_key = mo_repo->get_key( ) iv_key = mo_repo->get_key( )
ig_object = is_item ). ig_object = is_item ).
ro_html->add( '<div>' ).
IF is_item-changes = 1. IF is_item-changes = 1.
ro_html->add_anchor( ro_html->add_anchor(
iv_txt = |{ is_item-changes } diff| iv_txt = |{ is_item-changes } diff|
@ -618,33 +650,31 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
iv_txt = |{ is_item-changes } diffs| iv_txt = |{ is_item-changes } diffs|
iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ).
ENDIF. ENDIF.
ro_html->add( '</div>' ).
ELSE. ELSE.
LOOP AT is_item-files INTO ls_file. LOOP AT is_item-files INTO ls_file.
IF ls_file-new = gc_new-remote. IF ls_file-new = gc_new-remote.
ro_html->add( '<span class="grey">new @remote</span>' ). ro_html->add( '<div class="grey">new @remote</div>' ).
ELSEIF ls_file-new = gc_new-local. ELSEIF ls_file-new = gc_new-local.
ro_html->add( '<span class="grey">new @local</span>' ). ro_html->add( '<div class="grey">new @local</div>' ).
ELSEIF ls_file-is_changed = abap_true. ELSEIF ls_file-is_changed = abap_true.
lv_difflink = lcl_html_action_utils=>file_encode( lv_difflink = lcl_html_action_utils=>file_encode(
iv_key = mo_repo->get_key( ) iv_key = mo_repo->get_key( )
ig_file = ls_file ). ig_file = ls_file ).
ro_html->add( '<div>' ).
ro_html->add_anchor( ro_html->add_anchor(
iv_txt = 'diff' iv_txt = 'diff'
iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ).
ro_html->add( '</div>' ).
ELSE. ELSE.
ro_html->add( |<span>&nbsp;</span>| ). ro_html->add( |<div>&nbsp;</div>| ).
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
ENDIF. ENDIF.
ENDIF. ENDIF.
ro_html->add( '</td>' ).
ENDIF. ENDMETHOD. "render_item_command
ro_html->add( '</tr>' ).
ENDMETHOD. "render_repo_item
METHOD render_empty_package. METHOD render_empty_package.
@ -654,7 +684,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDMETHOD. "render_empty_package ENDMETHOD. "render_empty_package
METHOD render_parent_dir_line. METHOD render_parent_dir.
CREATE OBJECT ro_html. CREATE OBJECT ro_html.
@ -666,7 +696,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ENDIF. ENDIF.
ro_html->add( '</tr>' ). ro_html->add( '</tr>' ).
ENDMETHOD. "render_parent_dir_line ENDMETHOD. "render_parent_dir
METHOD build_dir_jump_link. METHOD build_dir_jump_link.
@ -689,11 +719,12 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
DATA: lv_encode TYPE string, DATA: lv_encode TYPE string,
lo_html TYPE REF TO lcl_html_helper. lo_html TYPE REF TO lcl_html_helper.
lv_encode = lcl_html_action_utils=>jump_encode( iv_obj_type = iv_obj_type lv_encode = lcl_html_action_utils=>jump_encode( iv_obj_type = is_item-obj_type
iv_obj_name = iv_obj_name ). iv_obj_name = is_item-obj_name ).
CREATE OBJECT lo_html. CREATE OBJECT lo_html.
lo_html->add_anchor( iv_txt = |{ iv_obj_name }| iv_act = |{ gc_action-jump }?{ lv_encode }| ). lo_html->add_anchor( iv_txt = |{ is_item-obj_name }|
iv_act = |{ gc_action-jump }?{ lv_encode }| ).
rv_html = lo_html->mv_html. rv_html = lo_html->mv_html.
ENDMETHOD. "build_obj_jump_link ENDMETHOD. "build_obj_jump_link