From 87a3806ce13d19055dc9005b3360cb857026fff7 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 4 Nov 2020 08:51:34 -0500 Subject: [PATCH] UI: Unify rendering of transport, user names - part 2 (#4133) - Added icon for user - Changed icon for transport to truck - Adapted "staging" page - Renamed CSS-classes because of conflict with classes used on staging page Screenshots #4097 Closes #4098 Co-authored-by: Lars Hvam --- src/ui/zabapgit_css_common.w3mi.data.css | 6 +- src/ui/zabapgit_css_theme_dark.w3mi.data.css | 6 +- .../zabapgit_css_theme_default.w3mi.data.css | 6 +- src/ui/zabapgit_js_common.w3mi.data.js | 5 +- src/ui/zcl_abapgit_gui_chunk_lib.clas.abap | 75 +++-- .../zcl_abapgit_gui_page_repo_view.clas.abap | 73 +++-- src/ui/zcl_abapgit_gui_page_stage.clas.abap | 275 ++++++++---------- 7 files changed, 219 insertions(+), 227 deletions(-) diff --git a/src/ui/zabapgit_css_common.w3mi.data.css b/src/ui/zabapgit_css_common.w3mi.data.css index c274a7fe1..8f5de8104 100644 --- a/src/ui/zabapgit_css_common.w3mi.data.css +++ b/src/ui/zabapgit_css_common.w3mi.data.css @@ -185,9 +185,9 @@ div.repo { /* ABAPGIT OBJECTS */ span.branch, -span.user, -span.package, -span.transport { +span.user-box, +span.package-box, +span.transport-box { padding: 2px 4px; border: 1px solid; border-radius: 4px; diff --git a/src/ui/zabapgit_css_theme_dark.w3mi.data.css b/src/ui/zabapgit_css_theme_dark.w3mi.data.css index 7b90f1eca..fb30d074d 100644 --- a/src/ui/zabapgit_css_theme_dark.w3mi.data.css +++ b/src/ui/zabapgit_css_theme_dark.w3mi.data.css @@ -48,15 +48,15 @@ table.repo_tab { } /* ABAPGIT OBJECTS */ -span.user { +span.user-box { background-color: #4c6782; border-color: #7491b2; } -span.package { +span.package-box { background-color: #705a6d; border-color: #987095; } -span.transport { +span.transport-box { background-color: #456d5d; border-color: #60a087; } diff --git a/src/ui/zabapgit_css_theme_default.w3mi.data.css b/src/ui/zabapgit_css_theme_default.w3mi.data.css index e3aeb2dc0..84392d047 100644 --- a/src/ui/zabapgit_css_theme_default.w3mi.data.css +++ b/src/ui/zabapgit_css_theme_default.w3mi.data.css @@ -58,15 +58,15 @@ input:focus, textarea:focus { border-color: #8cadd9; } } /* ABAPGIT OBJECTS */ -span.user { +span.user-box { border-color: #c2d4ea; background-color: #d9e4f2; } -span.package { +span.package-box { border-color: #d3ccd2; background-color: #ebe3ea; } -span.transport { +span.transport-box { border-color: #a7e3cf; background-color: #dbf3eb; } diff --git a/src/ui/zabapgit_js_common.w3mi.data.js b/src/ui/zabapgit_js_common.w3mi.data.js index fc8b73730..771788f47 100644 --- a/src/ui/zabapgit_js_common.w3mi.data.js +++ b/src/ui/zabapgit_js_common.w3mi.data.js @@ -437,7 +437,6 @@ StageHelper.prototype.onPageLoad = function() { if (this.dom.objectSearch.value) { this.applyFilterValue(this.dom.objectSearch.value); } - debugOutput("StageHelper.onPageLoad: " + ((data) ? "from Storage" : "initial state")); }; // Table event handler, change status @@ -510,6 +509,8 @@ StageHelper.prototype.applyFilterToRow = function (row, filter) { // Collect data cells var targets = this.filterTargets.map(function(attr) { var elem = row.cells[this.colIndex[attr]]; + if (elem.firstChild && elem.firstChild.tagName === "SPAN") elem = elem.firstChild; + if (elem.firstChild && elem.firstChild.tagName === "I") elem = elem.nextChild; if (elem.firstChild && elem.firstChild.tagName === "A") elem = elem.firstChild; return { elem: elem, @@ -2069,6 +2070,8 @@ function enumerateJumpAllFiles() { };}); } +/* Save Scroll Position for Diff/Patch Page */ + function saveScrollPosition(){ if (!window.sessionStorage) { return } window.sessionStorage.setItem("scrollTop", document.querySelector("html").scrollTop); diff --git a/src/ui/zcl_abapgit_gui_chunk_lib.clas.abap b/src/ui/zcl_abapgit_gui_chunk_lib.clas.abap index c1b44035f..7bcf720aa 100644 --- a/src/ui/zcl_abapgit_gui_chunk_lib.clas.abap +++ b/src/ui/zcl_abapgit_gui_chunk_lib.clas.abap @@ -126,6 +126,7 @@ CLASS zcl_abapgit_gui_chunk_lib DEFINITION IMPORTING !iv_username TYPE xubname !iv_interactive TYPE abap_bool DEFAULT abap_true + !iv_icon_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING @@ -134,6 +135,7 @@ CLASS zcl_abapgit_gui_chunk_lib DEFINITION IMPORTING !iv_transport TYPE trkorr !iv_interactive TYPE abap_bool DEFAULT abap_true + !iv_icon_only TYPE abap_bool DEFAULT abap_false RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING @@ -678,7 +680,7 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. iv_obj_type = 'DEVC' iv_obj_name = lv_obj_name ). - ri_html->add( || ). + ri_html->add( || ). ri_html->add_icon( iv_name = 'box/grey70' iv_hint = 'SAP package' ). IF iv_interactive = abap_true. @@ -736,11 +738,11 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. METHOD render_repo_top. - DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, - lo_pback TYPE REF TO zcl_abapgit_persist_background, - lx_error TYPE REF TO zcx_abapgit_exception, - lv_hint TYPE string, - lv_icon TYPE string. + DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, + lo_pback TYPE REF TO zcl_abapgit_persist_background, + lx_error TYPE REF TO zcx_abapgit_exception, + lv_hint TYPE string, + lv_icon TYPE string. CREATE OBJECT ri_html TYPE zcl_abapgit_html. CREATE OBJECT lo_pback. @@ -874,7 +876,9 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. METHOD render_transport. - DATA lv_title TYPE string. + DATA: + lv_title TYPE string, + lv_jump TYPE string. CREATE OBJECT ri_html TYPE zcl_abapgit_html. @@ -885,17 +889,27 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. SELECT SINGLE as4text FROM e07t INTO lv_title WHERE trkorr = iv_transport AND langu = sy-langu ##SUBRC_OK. - ri_html->add( || ). - ri_html->add_icon( iv_name = 'briefcase/grey70' - iv_hint = 'Transport' ). - IF iv_interactive = abap_true. - ri_html->add_a( iv_act = |{ zif_abapgit_definitions=>c_action-jump_transport }?transport={ iv_transport }| - iv_title = lv_title - iv_txt = to_lower( iv_transport ) ). + lv_jump = |{ zif_abapgit_definitions=>c_action-jump_transport }?transport={ iv_transport }|. + + IF iv_icon_only = abap_true. + ri_html->add_a( iv_act = lv_jump + iv_title = |Transport { iv_transport }| + iv_txt = zcl_abapgit_html=>icon( 'truck-solid/darkgrey' ) ). ELSE. - ri_html->add( to_lower( iv_transport ) ). + ri_html->add( || ). + + ri_html->add_icon( iv_name = 'truck-solid/grey70' + iv_hint = 'Transport' ). + IF iv_interactive = abap_true. + ri_html->add_a( iv_act = lv_jump + iv_title = lv_title + iv_txt = to_lower( iv_transport ) ). + ELSE. + ri_html->add( to_lower( iv_transport ) ). + ENDIF. + + ri_html->add( '' ). ENDIF. - ri_html->add( '' ). ENDMETHOD. @@ -904,7 +918,8 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. DATA: ls_user_address TYPE addr3_val, - lv_title TYPE string. + lv_title TYPE string, + lv_jump TYPE string. CREATE OBJECT ri_html TYPE zcl_abapgit_html. @@ -926,17 +941,27 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. ENDIF. ENDIF. - ri_html->add( || ). - " todo, add icon ri_html->add_icon( iv_name = 'user/grey70' - " iv_hint = 'User name' ) - IF iv_interactive = abap_true AND iv_username <> zcl_abapgit_objects_super=>c_user_unknown. - ri_html->add_a( iv_act = |{ zif_abapgit_definitions=>c_action-jump_user }?user={ iv_username }| + lv_jump = |{ zif_abapgit_definitions=>c_action-jump_user }?user={ iv_username }|. + + IF iv_icon_only = abap_true. + ri_html->add_a( iv_act = lv_jump iv_title = lv_title - iv_txt = to_lower( iv_username ) ). + iv_txt = zcl_abapgit_html=>icon( 'user-solid/darkgrey' ) ). ELSE. - ri_html->add( to_lower( iv_username ) ). + ri_html->add( || ). + + ri_html->add_icon( iv_name = 'user-solid/grey70' + iv_hint = 'User name' ). + IF iv_interactive = abap_true AND iv_username <> zcl_abapgit_objects_super=>c_user_unknown. + ri_html->add_a( iv_act = lv_jump + iv_title = lv_title + iv_txt = to_lower( iv_username ) ). + ELSE. + ri_html->add( to_lower( iv_username ) ). + ENDIF. + + ri_html->add( '' ). ENDIF. - ri_html->add( '' ). ENDMETHOD. diff --git a/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap index 6cacfdffa..cc6b28357 100644 --- a/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap @@ -99,7 +99,9 @@ CLASS zcl_abapgit_gui_page_repo_view DEFINITION IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING - VALUE(rv_html) TYPE string . + VALUE(ri_html) TYPE REF TO zif_abapgit_html + RAISING + zcx_abapgit_exception . METHODS render_parent_dir RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html @@ -650,11 +652,14 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. CASE is_item-obj_type. WHEN 'PROG' OR 'CLAS' OR 'FUGR' OR 'INTF' OR 'TYPE'. - rv_html = zcl_abapgit_html=>icon( 'file-code/darkgrey' ). + rv_html = zcl_abapgit_html=>icon( iv_name = 'file-code/darkgrey' + iv_hint = 'Code' ). WHEN 'W3MI' OR 'W3HT' OR 'SFPF'. - rv_html = zcl_abapgit_html=>icon( 'file-image/darkgrey' ). + rv_html = zcl_abapgit_html=>icon( iv_name = 'file-image/darkgrey' + iv_hint = 'Binary' ). WHEN 'DEVC'. - rv_html = zcl_abapgit_html=>icon( 'box/darkgrey' ). + rv_html = zcl_abapgit_html=>icon( iv_name = 'box/darkgrey' + iv_hint = 'Package' ). WHEN ''. rv_html = space. " no icon WHEN OTHERS. @@ -662,7 +667,8 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ENDCASE. IF is_item-is_dir = abap_true. - rv_html = zcl_abapgit_html=>icon( 'folder/darkgrey' ). + rv_html = zcl_abapgit_html=>icon( iv_name = 'folder/darkgrey' + iv_hint = 'Folder' ). ENDIF. ENDMETHOD. @@ -964,9 +970,8 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ri_html->add( '
' ). ri_html->add( |{ is_item-changes } changes| ). - ri_html->add( zcl_abapgit_gui_chunk_lib=>render_item_state( - iv_lstate = is_item-lstate - iv_rstate = is_item-rstate ) ). + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_item_state( iv_lstate = is_item-lstate + iv_rstate = is_item-rstate ) ). ri_html->add( '
' ). ELSEIF is_item-changes > 0. @@ -981,7 +986,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ri_html->add_a( iv_txt = |diff ({ is_item-changes })| iv_act = |{ zif_abapgit_definitions=>c_action-go_diff }?{ lv_difflink }| ). ri_html->add( zcl_abapgit_gui_chunk_lib=>render_item_state( iv_lstate = is_item-lstate - iv_rstate = is_item-rstate ) ). + iv_rstate = is_item-rstate ) ). ri_html->add( '' ). ELSE. @@ -995,7 +1000,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ri_html->add_a( iv_txt = 'diff' iv_act = |{ zif_abapgit_definitions=>c_action-go_diff }?{ lv_difflink }| ). ri_html->add( zcl_abapgit_gui_chunk_lib=>render_item_state( iv_lstate = ls_file-lstate - iv_rstate = ls_file-rstate ) ). + iv_rstate = ls_file-rstate ) ). ELSE. ri_html->add( ' ' ). ENDIF. @@ -1028,39 +1033,31 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. METHOD render_item_lock_column. - DATA li_cts_api TYPE REF TO zif_abapgit_cts_api. - DATA lv_transport TYPE trkorr. - DATA lv_transport_string TYPE string. - DATA lv_icon_html TYPE string. - DATA li_html TYPE REF TO zif_abapgit_html. + DATA: + li_cts_api TYPE REF TO zif_abapgit_cts_api, + lv_transport TYPE trkorr. - CREATE OBJECT li_html TYPE zcl_abapgit_html. + CREATE OBJECT ri_html TYPE zcl_abapgit_html. li_cts_api = zcl_abapgit_factory=>get_cts_api( ). - TRY. - IF is_item-obj_type IS INITIAL OR is_item-obj_name IS INITIAL OR - li_cts_api->is_object_type_lockable( is_item-obj_type ) = abap_false OR - li_cts_api->is_object_locked_in_transport( iv_object_type = is_item-obj_type - iv_object_name = is_item-obj_name ) = abap_false. - rv_html = ||. - ELSE. - lv_transport = li_cts_api->get_current_transport_for_obj( iv_object_type = is_item-obj_type - iv_object_name = is_item-obj_name - iv_resolve_task_to_request = abap_false ). - lv_transport_string = lv_transport. - lv_icon_html = li_html->a( - iv_txt = li_html->icon( iv_name = 'briefcase/darkgrey' - iv_hint = lv_transport_string ) - iv_act = |{ zif_abapgit_definitions=>c_action-jump_transport }?transport={ lv_transport }| ). + ri_html->add( '' ). + + IF is_item-obj_type IS NOT INITIAL AND is_item-obj_name IS NOT INITIAL AND + li_cts_api->is_object_type_lockable( is_item-obj_type ) = abap_true AND + li_cts_api->is_object_locked_in_transport( iv_object_type = is_item-obj_type + iv_object_name = is_item-obj_name ) = abap_true. + + lv_transport = li_cts_api->get_current_transport_for_obj( iv_object_type = is_item-obj_type + iv_object_name = is_item-obj_name + iv_resolve_task_to_request = abap_false ). + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_transport( iv_transport = lv_transport + iv_icon_only = abap_true ) ). + + ENDIF. + + ri_html->add( '' ). - rv_html = || && - |{ lv_icon_html }| && - ||. - ENDIF. - CATCH zcx_abapgit_exception. - ASSERT 1 = 2. - ENDTRY. ENDMETHOD. diff --git a/src/ui/zcl_abapgit_gui_page_stage.clas.abap b/src/ui/zcl_abapgit_gui_page_stage.clas.abap index 40f5490d4..56cb89e36 100644 --- a/src/ui/zcl_abapgit_gui_page_stage.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_stage.clas.abap @@ -48,32 +48,34 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION METHODS find_changed_by IMPORTING - it_files TYPE zif_abapgit_definitions=>ty_stage_files - it_transports TYPE ty_transport_tt + !it_files TYPE zif_abapgit_definitions=>ty_stage_files + !it_transports TYPE ty_transport_tt RETURNING VALUE(rt_changed_by) TYPE ty_changed_by_tt . METHODS find_transports_remote IMPORTING - it_files TYPE zif_abapgit_definitions=>ty_files_tt + !it_files TYPE zif_abapgit_definitions=>ty_files_tt CHANGING - ct_transports TYPE ty_transport_tt + !ct_transports TYPE ty_transport_tt RAISING - zcx_abapgit_exception. + zcx_abapgit_exception . METHODS find_transports_local IMPORTING - it_files TYPE zif_abapgit_definitions=>ty_files_item_tt + !it_files TYPE zif_abapgit_definitions=>ty_files_item_tt CHANGING - ct_transports TYPE ty_transport_tt + !ct_transports TYPE ty_transport_tt RAISING - zcx_abapgit_exception. + zcx_abapgit_exception . METHODS find_transports IMPORTING - it_files TYPE zif_abapgit_definitions=>ty_stage_files + !it_files TYPE zif_abapgit_definitions=>ty_stage_files RETURNING VALUE(rt_transports) TYPE ty_transport_tt . METHODS render_list RETURNING - VALUE(ri_html) TYPE REF TO zif_abapgit_html . + VALUE(ri_html) TYPE REF TO zif_abapgit_html + RAISING + zcx_abapgit_exception . METHODS render_file IMPORTING !iv_context TYPE string @@ -83,7 +85,9 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION !iv_changed_by TYPE xubname OPTIONAL !iv_transport TYPE trkorr OPTIONAL RETURNING - VALUE(ri_html) TYPE REF TO zif_abapgit_html . + VALUE(ri_html) TYPE REF TO zif_abapgit_html + RAISING + zcx_abapgit_exception . METHODS render_actions RETURNING VALUE(ri_html) TYPE REF TO zif_abapgit_html . @@ -123,13 +127,6 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception . - METHODS get_transport_html - IMPORTING - iv_html TYPE REF TO zif_abapgit_html - iv_transport_string TYPE string - iv_transport TYPE trkorr - RETURNING - VALUE(rv_result) TYPE string. ENDCLASS. @@ -221,14 +218,13 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. LOOP AT it_files-remote INTO ls_remote WHERE filename IS NOT INITIAL. TRY. - zcl_abapgit_file_status=>identify_object( EXPORTING iv_filename = ls_remote-filename - iv_path = ls_remote-path - io_dot = mo_repo->get_dot_abapgit( ) + iv_path = ls_remote-path + io_dot = mo_repo->get_dot_abapgit( ) IMPORTING - es_item = ls_item ). + es_item = ls_item ). ls_changed_by-item = ls_item. INSERT ls_changed_by INTO TABLE lt_changed_by_remote. CATCH zcx_abapgit_exception. @@ -237,14 +233,13 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. LOOP AT rt_changed_by ASSIGNING . TRY. - -name = to_lower( zcl_abapgit_objects=>changed_by( -item ) ). + -name = zcl_abapgit_objects=>changed_by( -item ). CATCH zcx_abapgit_exception. ENDTRY. ENDLOOP. LOOP AT lt_changed_by_remote ASSIGNING . TRY. - " deleted files might still be in a transport CLEAR lv_transport. READ TABLE it_transports WITH KEY item = -item @@ -254,9 +249,9 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. SELECT SINGLE as4user FROM e070 INTO lv_user WHERE trkorr = lv_transport-transport. - -name = to_lower( lv_user ). + -name = lv_user. ELSE. - -name = to_lower( zcl_abapgit_objects_super=>c_user_unknown ). + -name = zcl_abapgit_objects_super=>c_user_unknown. ENDIF. CATCH zcx_abapgit_exception. ENDTRY. @@ -292,6 +287,84 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. ENDMETHOD. + METHOD find_transports_local. + + DATA ls_new LIKE LINE OF ct_transports. + FIELD-SYMBOLS: LIKE LINE OF it_files. + + DATA li_cts_api TYPE REF TO zif_abapgit_cts_api. + li_cts_api = zcl_abapgit_factory=>get_cts_api( ). + + LOOP AT it_files ASSIGNING WHERE item IS NOT INITIAL. + IF -item-obj_type IS NOT INITIAL AND + -item-obj_name IS NOT INITIAL AND + -item-devclass IS NOT INITIAL. + + IF li_cts_api->is_chrec_possible_for_package( -item-devclass ) = abap_false. + EXIT. " Assume all other objects are also in packages without change recording + + ELSEIF li_cts_api->is_object_type_lockable( -item-obj_type ) = abap_true AND + li_cts_api->is_object_locked_in_transport( iv_object_type = -item-obj_type + iv_object_name = -item-obj_name ) = abap_true. + + ls_new-item = -item. + + ls_new-transport = li_cts_api->get_current_transport_for_obj( + iv_object_type = -item-obj_type + iv_object_name = -item-obj_name + iv_resolve_task_to_request = abap_false ). + + INSERT ls_new INTO TABLE ct_transports. + ENDIF. + ENDIF. + ENDLOOP. + ENDMETHOD. + + + METHOD find_transports_remote. + + DATA: + ls_item TYPE zif_abapgit_definitions=>ty_item, + lv_is_xml_file TYPE abap_bool, + ls_new LIKE LINE OF ct_transports, + li_cts_api TYPE REF TO zif_abapgit_cts_api. + + FIELD-SYMBOLS: LIKE LINE OF it_files. + + li_cts_api = zcl_abapgit_factory=>get_cts_api( ). + + LOOP AT it_files ASSIGNING WHERE filename IS NOT INITIAL. + + CLEAR ls_item. + CLEAR ls_new. + + zcl_abapgit_file_status=>identify_object( + EXPORTING + iv_filename = -filename + iv_path = -path + io_dot = mo_repo->get_dot_abapgit( ) + IMPORTING + es_item = ls_item + ev_is_xml = lv_is_xml_file ). + + IF ls_item IS INITIAL. + CONTINUE. + ELSEIF li_cts_api->is_object_type_lockable( ls_item-obj_type ) = abap_true + AND li_cts_api->is_object_locked_in_transport( iv_object_type = ls_item-obj_type + iv_object_name = ls_item-obj_name ) = abap_true. + ls_new-item = ls_item. + ls_new-transport = li_cts_api->get_current_transport_for_obj( + iv_object_type = ls_item-obj_type + iv_object_name = ls_item-obj_name + iv_resolve_task_to_request = abap_false ). + INSERT ls_new INTO TABLE ct_transports. + ENDIF. + + ENDLOOP. + + ENDMETHOD. + + METHOD get_page_patch. DATA: lo_page TYPE REF TO zcl_abapgit_gui_page_patch, @@ -400,17 +473,13 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. METHOD render_file. - DATA: lv_param TYPE string, - lv_filename TYPE string, - lv_transport_string TYPE string, - lv_transport_html TYPE string. + DATA: lv_param TYPE string, + lv_filename TYPE string. CREATE OBJECT ri_html TYPE zcl_abapgit_html. - lv_transport_string = iv_transport. - lv_filename = is_file-path && is_file-filename. -* make sure whitespace is preserved in the DOM + " make sure whitespace is preserved in the DOM REPLACE ALL OCCURRENCES OF ` ` IN lv_filename WITH ' '. ri_html->add( || ). @@ -430,52 +499,28 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. iv_txt = lv_filename iv_act = |{ zif_abapgit_definitions=>c_action-go_diff }?{ lv_param }| ). - lv_transport_html = get_transport_html( - iv_html = ri_html - iv_transport_string = lv_transport_string - iv_transport = iv_transport ). - ri_html->add( |{ is_item-obj_type }| ). ri_html->add( |{ lv_filename }| ). - WHEN 'remote'. - - lv_transport_html = get_transport_html( - iv_html = ri_html - iv_transport_string = lv_transport_string - iv_transport = iv_transport ). - ri_html->add( |{ is_item-obj_type }| ). ri_html->add( |{ lv_filename }| ). ENDCASE. - ri_html->add( |{ iv_changed_by }| ). - ri_html->add( |{ lv_transport_html }| ). + ri_html->add( '' ). + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_user_name( iv_changed_by ) ). + ri_html->add( '' ). - lv_transport_html = get_transport_html( - iv_html = ri_html - iv_transport_string = lv_transport_string - iv_transport = iv_transport ). + ri_html->add( '' ). + ri_html->add( zcl_abapgit_gui_chunk_lib=>render_transport( iv_transport ) ). + ri_html->add( '' ). - - ri_html->add( |?| ). + ri_html->add( '?' ). ri_html->add( '' ). " Command added in JS ri_html->add( '' ). ENDMETHOD. - METHOD get_transport_html. - - IF iv_transport_string IS INITIAL. - RETURN. - ENDIF. - - rv_result = iv_html->a( - iv_txt = iv_transport_string - iv_act = |{ zif_abapgit_definitions=>c_action-jump_transport }?transport={ iv_transport }| ). - ENDMETHOD. - METHOD render_list. @@ -524,7 +569,7 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. ASSERT sy-subrc = 0. ri_html->add( render_file( - iv_context = 'local' + iv_context = 'local' is_file = -file is_item = -item is_status = @@ -561,12 +606,12 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. TRY. zcl_abapgit_file_status=>identify_object( - EXPORTING - iv_filename = -filename - iv_path = -path - io_dot = mo_repo->get_dot_abapgit( ) - IMPORTING - es_item = ls_item_remote ). + EXPORTING + iv_filename = -filename + iv_path = -path + io_dot = mo_repo->get_dot_abapgit( ) + IMPORTING + es_item = ls_item_remote ). READ TABLE lt_transports INTO ls_transport WITH KEY item = ls_item_remote. READ TABLE lt_changed_by INTO ls_changed_by WITH KEY item = ls_item_remote. CATCH zcx_abapgit_exception. @@ -574,12 +619,12 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. ENDTRY. ri_html->add( render_file( - iv_context = 'remote' - is_status = - is_file = - is_item = ls_item_remote + iv_context = 'remote' + is_status = + is_file = + is_item = ls_item_remote iv_changed_by = ls_changed_by-name - iv_transport = ls_transport-transport ) ). + iv_transport = ls_transport-transport ) ). AT LAST. ri_html->add( '' ). @@ -810,82 +855,4 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions. ENDMETHOD. - - METHOD find_transports_local. - - DATA ls_new LIKE LINE OF ct_transports. - FIELD-SYMBOLS: LIKE LINE OF it_files. - - DATA li_cts_api TYPE REF TO zif_abapgit_cts_api. - li_cts_api = zcl_abapgit_factory=>get_cts_api( ). - - LOOP AT it_files ASSIGNING WHERE item IS NOT INITIAL. - IF -item-obj_type IS NOT INITIAL AND - -item-obj_name IS NOT INITIAL AND - -item-devclass IS NOT INITIAL. - - IF li_cts_api->is_chrec_possible_for_package( -item-devclass ) = abap_false. - EXIT. " Assume all other objects are also in packages without change recording - - ELSEIF li_cts_api->is_object_type_lockable( -item-obj_type ) = abap_true AND - li_cts_api->is_object_locked_in_transport( iv_object_type = -item-obj_type - iv_object_name = -item-obj_name ) = abap_true. - - ls_new-item = -item. - - ls_new-transport = li_cts_api->get_current_transport_for_obj( - iv_object_type = -item-obj_type - iv_object_name = -item-obj_name - iv_resolve_task_to_request = abap_false ). - - INSERT ls_new INTO TABLE ct_transports. - ENDIF. - ENDIF. - ENDLOOP. - ENDMETHOD. - - - METHOD find_transports_remote. - - DATA: - ls_item TYPE zif_abapgit_definitions=>ty_item, - lv_is_xml_file TYPE abap_bool, - ls_new LIKE LINE OF ct_transports, - li_cts_api TYPE REF TO zif_abapgit_cts_api. - - FIELD-SYMBOLS: LIKE LINE OF it_files. - - li_cts_api = zcl_abapgit_factory=>get_cts_api( ). - - LOOP AT it_files ASSIGNING WHERE filename IS NOT INITIAL. - - CLEAR ls_item. - CLEAR ls_new. - - zcl_abapgit_file_status=>identify_object( - EXPORTING - iv_filename = -filename - iv_path = -path - io_dot = mo_repo->get_dot_abapgit( ) - IMPORTING - es_item = ls_item - ev_is_xml = lv_is_xml_file ). - - IF ls_item IS INITIAL. - CONTINUE. - ELSEIF li_cts_api->is_object_type_lockable( ls_item-obj_type ) = abap_true - AND li_cts_api->is_object_locked_in_transport( iv_object_type = ls_item-obj_type - iv_object_name = ls_item-obj_name ) = abap_true. - ls_new-item = ls_item. - ls_new-transport = li_cts_api->get_current_transport_for_obj( - iv_object_type = ls_item-obj_type - iv_object_name = ls_item-obj_name - iv_resolve_task_to_request = abap_false ). - INSERT ls_new INTO TABLE ct_transports. - ENDIF. - - ENDLOOP. - - ENDMETHOD. - ENDCLASS.