mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Merge pull request #356 from sbcgua/master
stage_page.js + debug info page #353
This commit is contained in:
commit
39b83b0f2e
|
@ -178,5 +178,6 @@ CONSTANTS: BEGIN OF gc_action,
|
||||||
go_commit TYPE string VALUE 'go_commit',
|
go_commit TYPE string VALUE 'go_commit',
|
||||||
go_branch_overview TYPE string VALUE 'go_branch_overview',
|
go_branch_overview TYPE string VALUE 'go_branch_overview',
|
||||||
go_playground TYPE string VALUE 'go_playground',
|
go_playground TYPE string VALUE 'go_playground',
|
||||||
|
go_debuginfo TYPE string VALUE 'go_debuginfo',
|
||||||
jump TYPE string VALUE 'jump',
|
jump TYPE string VALUE 'jump',
|
||||||
END OF gc_action.
|
END OF gc_action.
|
|
@ -15,3 +15,4 @@ INCLUDE zabapgit_page_diff.
|
||||||
INCLUDE zabapgit_page_explore.
|
INCLUDE zabapgit_page_explore.
|
||||||
INCLUDE zabapgit_page_main.
|
INCLUDE zabapgit_page_main.
|
||||||
INCLUDE zabapgit_page_stage.
|
INCLUDE zabapgit_page_stage.
|
||||||
|
INCLUDE zabapgit_page_debug.
|
|
@ -76,7 +76,8 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
||||||
WHEN gc_action-go_main " Go Main page
|
WHEN gc_action-go_main " Go Main page
|
||||||
OR gc_action-go_explore " Go Explore page
|
OR gc_action-go_explore " Go Explore page
|
||||||
OR gc_action-go_db " Go DB util page
|
OR gc_action-go_db " Go DB util page
|
||||||
OR gc_action-go_background_run. " Go background run page
|
OR gc_action-go_background_run " Go background run page
|
||||||
|
OR gc_action-go_debuginfo. " Go debug info page
|
||||||
ei_page = get_page_by_name( iv_action ).
|
ei_page = get_page_by_name( iv_action ).
|
||||||
ev_state = gc_event_state-new_page.
|
ev_state = gc_event_state-new_page.
|
||||||
WHEN gc_action-go_background. " Go Background page
|
WHEN gc_action-go_background. " Go Background page
|
||||||
|
|
|
@ -16,6 +16,7 @@ CLASS lcl_html_helper DEFINITION FINAL.
|
||||||
DATA mv_html TYPE string READ-ONLY.
|
DATA mv_html TYPE string READ-ONLY.
|
||||||
DATA mv_indent TYPE i READ-ONLY.
|
DATA mv_indent TYPE i READ-ONLY.
|
||||||
DATA mv_within_style TYPE i READ-ONLY.
|
DATA mv_within_style TYPE i READ-ONLY.
|
||||||
|
DATA mv_within_js TYPE i READ-ONLY.
|
||||||
|
|
||||||
METHODS add IMPORTING iv_chunk TYPE any.
|
METHODS add IMPORTING iv_chunk TYPE any.
|
||||||
METHODS reset.
|
METHODS reset.
|
||||||
|
@ -24,7 +25,9 @@ CLASS lcl_html_helper DEFINITION FINAL.
|
||||||
iv_act TYPE string
|
iv_act TYPE string
|
||||||
iv_opt TYPE clike OPTIONAL
|
iv_opt TYPE clike OPTIONAL
|
||||||
iv_typ TYPE char1 DEFAULT gc_action_type-sapevent
|
iv_typ TYPE char1 DEFAULT gc_action_type-sapevent
|
||||||
iv_class TYPE string OPTIONAL.
|
iv_class TYPE string OPTIONAL
|
||||||
|
iv_id TYPE string OPTIONAL
|
||||||
|
iv_style TYPE string OPTIONAL.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS _add_str IMPORTING iv_str TYPE csequence.
|
METHODS _add_str IMPORTING iv_str TYPE csequence.
|
||||||
|
@ -79,6 +82,8 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
||||||
DATA lv_shift_back TYPE i.
|
DATA lv_shift_back TYPE i.
|
||||||
DATA lv_style_tag_open TYPE i.
|
DATA lv_style_tag_open TYPE i.
|
||||||
DATA lv_style_tag_close TYPE i.
|
DATA lv_style_tag_close TYPE i.
|
||||||
|
DATA lv_js_tag_open TYPE i.
|
||||||
|
DATA lv_js_tag_close TYPE i.
|
||||||
DATA lv_curly TYPE i.
|
DATA lv_curly TYPE i.
|
||||||
|
|
||||||
FIND FIRST OCCURRENCE OF '</' IN iv_str MATCH OFFSET lv_close_offs.
|
FIND FIRST OCCURRENCE OF '</' IN iv_str MATCH OFFSET lv_close_offs.
|
||||||
|
@ -87,7 +92,8 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
FIND FIRST OCCURRENCE OF '}' IN iv_str MATCH OFFSET lv_close_offs. " Find close } @beginning
|
FIND FIRST OCCURRENCE OF '}' IN iv_str MATCH OFFSET lv_close_offs. " Find close } @beginning
|
||||||
IF mv_within_style > 0 AND sy-subrc = 0 AND lv_close_offs = 0 AND mv_indent > 0.
|
IF ( mv_within_style > 0 OR mv_within_js > 0 )
|
||||||
|
AND sy-subrc = 0 AND lv_close_offs = 0 AND mv_indent > 0.
|
||||||
lv_shift_back = 1.
|
lv_shift_back = 1.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -102,11 +108,15 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
||||||
|
|
||||||
lv_tags_open = lv_tags - lv_tags_close - lv_tags_single.
|
lv_tags_open = lv_tags - lv_tags_close - lv_tags_single.
|
||||||
|
|
||||||
FIND ALL OCCURRENCES OF '<style' IN iv_str MATCH COUNT lv_style_tag_open IGNORING CASE.
|
FIND ALL OCCURRENCES OF '<style' IN iv_str MATCH COUNT lv_style_tag_open IGNORING CASE.
|
||||||
FIND ALL OCCURRENCES OF '</style>' IN iv_str MATCH COUNT lv_style_tag_close IGNORING CASE.
|
FIND ALL OCCURRENCES OF '</style>' IN iv_str MATCH COUNT lv_style_tag_close IGNORING CASE.
|
||||||
mv_within_style = mv_within_style + lv_style_tag_open - lv_style_tag_close.
|
mv_within_style = mv_within_style + lv_style_tag_open - lv_style_tag_close.
|
||||||
|
|
||||||
IF mv_within_style > 0.
|
FIND ALL OCCURRENCES OF '<script' IN iv_str MATCH COUNT lv_js_tag_open IGNORING CASE.
|
||||||
|
FIND ALL OCCURRENCES OF '</script>' IN iv_str MATCH COUNT lv_js_tag_close IGNORING CASE.
|
||||||
|
mv_within_js = mv_within_js + lv_js_tag_open - lv_js_tag_close.
|
||||||
|
|
||||||
|
IF mv_within_style > 0 OR mv_within_js > 0.
|
||||||
FIND ALL OCCURRENCES OF '{' IN iv_str MATCH COUNT lv_curly.
|
FIND ALL OCCURRENCES OF '{' IN iv_str MATCH COUNT lv_curly.
|
||||||
lv_tags_open = lv_tags_open + lv_curly.
|
lv_tags_open = lv_tags_open + lv_curly.
|
||||||
FIND ALL OCCURRENCES OF '}' IN iv_str MATCH COUNT lv_curly.
|
FIND ALL OCCURRENCES OF '}' IN iv_str MATCH COUNT lv_curly.
|
||||||
|
@ -137,7 +147,9 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD add_anchor.
|
METHOD add_anchor.
|
||||||
DATA: lv_class TYPE string,
|
DATA: lv_class TYPE string,
|
||||||
lv_href TYPE string.
|
lv_href TYPE string,
|
||||||
|
lv_id TYPE string,
|
||||||
|
lv_style TYPE string.
|
||||||
|
|
||||||
lv_class = iv_class.
|
lv_class = iv_class.
|
||||||
|
|
||||||
|
@ -166,7 +178,15 @@ CLASS lcl_html_helper IMPLEMENTATION.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
_add_str( |<a{ lv_class }{ lv_href }>{ iv_txt }</a>| ).
|
IF iv_id IS NOT INITIAL.
|
||||||
|
lv_id = | id="{ iv_id }"|.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF iv_style IS NOT INITIAL.
|
||||||
|
lv_style = | style="{ iv_style }"|.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
_add_str( |<a{ lv_id }{ lv_class }{ lv_href }{ lv_style }>{ iv_txt }</a>| ).
|
||||||
|
|
||||||
ENDMETHOD. "add_action
|
ENDMETHOD. "add_action
|
||||||
|
|
||||||
|
|
|
@ -206,10 +206,41 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
||||||
|
|
||||||
ro_html->add( '<div id="footer">' ). "#EC NOTEXT
|
ro_html->add( '<div id="footer">' ). "#EC NOTEXT
|
||||||
ro_html->add( '<img src="img/logo" >' ). "#EC NOTEXT
|
ro_html->add( '<img src="img/logo" >' ). "#EC NOTEXT
|
||||||
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ). "#EC NOTEXT
|
ro_html->add( '<table width="100%"><tr><td width="40%"></td><td>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ). "#EC NOTEXT
|
||||||
|
ro_html->add( '</td><td id="stdout" width="40%"></td></tr></table>' ). "#EC NOTEXT
|
||||||
ro_html->add( '</div>' ). "#EC NOTEXT
|
ro_html->add( '</div>' ). "#EC NOTEXT
|
||||||
ro_html->add( '</body>' ). "#EC NOTEXT
|
ro_html->add( '</body>' ). "#EC NOTEXT
|
||||||
|
|
||||||
|
" Common JS routines
|
||||||
|
_add '<script type="text/javascript">' . "#EC NOTEXT
|
||||||
|
|
||||||
|
_add 'function debugOutput(text, dstID) {'. "#EC NOTEXT
|
||||||
|
_add ' var stdout = document.getElementById(dstID || "stdout");'. "#EC NOTEXT
|
||||||
|
_add ' if (stdout.innerHTML == "") {'. "#EC NOTEXT
|
||||||
|
_add ' stdout.innerHTML = text;'. "#EC NOTEXT
|
||||||
|
_add ' } else {'. "#EC NOTEXT
|
||||||
|
_add ' stdout.innerHTML = stdout.innerHTML + "<br>" + text;'. "#EC NOTEXT
|
||||||
|
_add ' }'. "#EC NOTEXT
|
||||||
|
_add '}'. "#EC NOTEXT
|
||||||
|
|
||||||
|
_add 'function submitForm(params, action) {'. "#EC NOTEXT
|
||||||
|
_add ' var form = document.createElement("form"); '. "#EC NOTEXT
|
||||||
|
_add ' form.setAttribute("method", "post"); '. "#EC NOTEXT
|
||||||
|
_add ' form.setAttribute("action", "sapevent:" + action); '. "#EC NOTEXT
|
||||||
|
_add ' for(var key in params) {'. "#EC NOTEXT
|
||||||
|
_add ' var hiddenField = document.createElement("input"); '. "#EC NOTEXT
|
||||||
|
_add ' hiddenField.setAttribute("type", "hidden"); '. "#EC NOTEXT
|
||||||
|
_add ' hiddenField.setAttribute("name", key); '. "#EC NOTEXT
|
||||||
|
_add ' hiddenField.setAttribute("value", params[key]); '. "#EC NOTEXT
|
||||||
|
_add ' form.appendChild(hiddenField); '. "#EC NOTEXT
|
||||||
|
_add ' }'. "#EC NOTEXT
|
||||||
|
_add ' document.body.appendChild(form); '. "#EC NOTEXT
|
||||||
|
_add ' form.submit(); '. "#EC NOTEXT
|
||||||
|
_add '}'. "#EC NOTEXT
|
||||||
|
|
||||||
|
_add '</script>'. "#EC NOTEXT
|
||||||
|
|
||||||
IF io_include_script IS BOUND.
|
IF io_include_script IS BOUND.
|
||||||
ro_html->add( '<script type="text/javascript">' ).
|
ro_html->add( '<script type="text/javascript">' ).
|
||||||
ro_html->add( io_include_script ).
|
ro_html->add( io_include_script ).
|
||||||
|
@ -430,6 +461,13 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
||||||
_add ' margin: 0;'.
|
_add ' margin: 0;'.
|
||||||
_add ' overflow: hidden;'.
|
_add ' overflow: hidden;'.
|
||||||
_add '}'.
|
_add '}'.
|
||||||
|
_add '#stdout {'.
|
||||||
|
_add ' text-align: right;'.
|
||||||
|
_add ' padding-right: 0.5em;'.
|
||||||
|
_add ' color: #ccc;'.
|
||||||
|
_add ' font-style: italic;'.
|
||||||
|
_add ' font-size: small;'.
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
_add '</style>'.
|
_add '</style>'.
|
||||||
|
|
||||||
|
|
80
src/zabapgit_page_debug.prog.abap
Normal file
80
src/zabapgit_page_debug.prog.abap
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
*&---------------------------------------------------------------------*
|
||||||
|
*& Include ZABAPGIT_PAGE_DEBUG
|
||||||
|
*&---------------------------------------------------------------------*
|
||||||
|
|
||||||
|
CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||||
|
PUBLIC SECTION.
|
||||||
|
METHODS lif_gui_page~render REDEFINITION.
|
||||||
|
|
||||||
|
METHODS styles
|
||||||
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
METHODS scripts
|
||||||
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS render_debug_info
|
||||||
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_gui_page_debuginfo
|
||||||
|
|
||||||
|
CLASS lcl_gui_page_debuginfo IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD lif_gui_page~render.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||||
|
ro_html->add( title( 'DEBUG INFO' ) ).
|
||||||
|
ro_html->add( render_debug_info( ) ).
|
||||||
|
ro_html->add( footer( io_include_script = scripts( ) ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD render_debug_info.
|
||||||
|
|
||||||
|
DATA: lt_ver_tab TYPE filetable,
|
||||||
|
lv_rc TYPE i,
|
||||||
|
lv_gui_version TYPE string,
|
||||||
|
ls_version LIKE LINE OF lt_ver_tab.
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>get_gui_version(
|
||||||
|
CHANGING version_table = lt_ver_tab rc = lv_rc
|
||||||
|
EXCEPTIONS OTHERS = 1 ).
|
||||||
|
READ TABLE lt_ver_tab INTO ls_version INDEX 1.
|
||||||
|
lv_gui_version = ls_version-filename.
|
||||||
|
READ TABLE lt_ver_tab INTO ls_version INDEX 2.
|
||||||
|
lv_gui_version = |{ lv_gui_version }.{ ls_version-filename }|.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
ro_html->add( '<div id="debug_info" class="debug_container">' ).
|
||||||
|
ro_html->add( |abapGit version: { gc_abap_version }<br>| ).
|
||||||
|
ro_html->add( |XML version: { gc_xml_version }<br>| ).
|
||||||
|
ro_html->add( |GUI version: { lv_gui_version }| ).
|
||||||
|
ro_html->add( '</div>' ).
|
||||||
|
|
||||||
|
ENDMETHOD. "render_debug_info
|
||||||
|
|
||||||
|
METHOD styles.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
_add '/* DEBUG INFO STYLES */'.
|
||||||
|
_add 'div.debug_container {'.
|
||||||
|
_add ' padding: 0.5em;'.
|
||||||
|
_add ' font-size: 10pt;'.
|
||||||
|
_add ' color: #444;'.
|
||||||
|
_add ' font-family: Consolas, Courier, monospace;'.
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD scripts.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
ro_html->add( 'debugOutput("Browser: " + navigator.userAgent, "debug_info");' ).
|
||||||
|
|
||||||
|
ENDMETHOD. "scripts
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_gui_page_debuginfo
|
48
src/zabapgit_page_debug.prog.xml
Normal file
48
src/zabapgit_page_debug.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<PROGDIR>
|
||||||
|
<NAME>ZABAPGIT_PAGE_DEBUG</NAME>
|
||||||
|
<STATE>A</STATE>
|
||||||
|
<SQLX/>
|
||||||
|
<EDTX/>
|
||||||
|
<VARCL>X</VARCL>
|
||||||
|
<DBAPL/>
|
||||||
|
<DBNA/>
|
||||||
|
<CLAS/>
|
||||||
|
<TYPE/>
|
||||||
|
<OCCURS/>
|
||||||
|
<SUBC>I</SUBC>
|
||||||
|
<APPL/>
|
||||||
|
<SECU/>
|
||||||
|
<CNAM/>
|
||||||
|
<CDAT>0000-00-00</CDAT>
|
||||||
|
<UNAM/>
|
||||||
|
<UDAT>0000-00-00</UDAT>
|
||||||
|
<VERN/>
|
||||||
|
<LEVL/>
|
||||||
|
<RSTAT/>
|
||||||
|
<RMAND/>
|
||||||
|
<RLOAD>E</RLOAD>
|
||||||
|
<FIXPT/>
|
||||||
|
<SSET/>
|
||||||
|
<SDATE>0000-00-00</SDATE>
|
||||||
|
<STIME/>
|
||||||
|
<IDATE>0000-00-00</IDATE>
|
||||||
|
<ITIME/>
|
||||||
|
<LDBNAME/>
|
||||||
|
<UCCHECK>X</UCCHECK>
|
||||||
|
</PROGDIR>
|
||||||
|
<TPOOL>
|
||||||
|
<item>
|
||||||
|
<ID>R</ID>
|
||||||
|
<KEY/>
|
||||||
|
<ENTRY>Include ZABAPGIT_PAGE_DEBUG</ENTRY>
|
||||||
|
<LENGTH>27</LENGTH>
|
||||||
|
<SPLIT/>
|
||||||
|
</item>
|
||||||
|
</TPOOL>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -145,6 +145,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
|
lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
|
||||||
lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
|
lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
|
||||||
lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
|
lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
|
||||||
|
lo_betasub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT.
|
||||||
|
|
||||||
ro_menu->add( iv_txt = 'Clone' iv_act = gc_action-repo_clone ) ##NO_TEXT.
|
ro_menu->add( iv_txt = 'Clone' iv_act = gc_action-repo_clone ) ##NO_TEXT.
|
||||||
ro_menu->add( iv_txt = 'Explore' iv_act = gc_action-go_explore ) ##NO_TEXT.
|
ro_menu->add( iv_txt = 'Explore' iv_act = gc_action-go_explore ) ##NO_TEXT.
|
||||||
|
@ -675,9 +676,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD lif_gui_page~render.
|
METHOD lif_gui_page~render.
|
||||||
|
|
||||||
DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
|
DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
|
||||||
lx_error TYPE REF TO lcx_exception,
|
lx_error TYPE REF TO lcx_exception,
|
||||||
lo_repo LIKE LINE OF lt_repos.
|
lo_repo LIKE LINE OF lt_repos.
|
||||||
|
|
||||||
retrieve_active_repo( ). " Get and validate key of user default repo
|
retrieve_active_repo( ). " Get and validate key of user default repo
|
||||||
mv_hide_files = lcl_app=>user( )->get_hide_files( ).
|
mv_hide_files = lcl_app=>user( )->get_hide_files( ).
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
CONSTANTS: BEGIN OF c_action,
|
||||||
|
stage_all TYPE string VALUE 'stage_all',
|
||||||
|
stage_commit TYPE string VALUE 'stage_commit',
|
||||||
|
END OF c_action.
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
constructor
|
constructor
|
||||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||||
|
@ -20,14 +25,19 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||||
METHODS:
|
METHODS:
|
||||||
render_list
|
render_list
|
||||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||||
|
render_file
|
||||||
|
IMPORTING is_file TYPE ty_file
|
||||||
|
iv_context TYPE string
|
||||||
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||||
render_menu
|
render_menu
|
||||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||||
styles
|
styles
|
||||||
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||||
|
scripts
|
||||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
|
||||||
METHODS stage_handle_action
|
METHODS process_stage_list
|
||||||
IMPORTING iv_getdata TYPE clike
|
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||||
iv_action TYPE clike
|
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -48,158 +58,152 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD stage_handle_action.
|
METHOD lif_gui_page~on_event.
|
||||||
|
|
||||||
DATA: ls_file TYPE ty_file.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF ms_files-local.
|
FIELD-SYMBOLS: <ls_file> LIKE LINE OF ms_files-local.
|
||||||
|
|
||||||
|
mo_stage->reset_all( ).
|
||||||
IF iv_action <> 'stage_all'.
|
|
||||||
lcl_html_action_utils=>file_obj_decode( EXPORTING iv_string = iv_getdata
|
|
||||||
IMPORTING eg_file = ls_file ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CASE iv_action.
|
CASE iv_action.
|
||||||
WHEN 'stage_add'.
|
WHEN c_action-stage_all.
|
||||||
READ TABLE ms_files-local ASSIGNING <ls_file>
|
|
||||||
WITH KEY file-path = ls_file-path
|
|
||||||
file-filename = ls_file-filename.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
mo_stage->add( iv_path = <ls_file>-file-path
|
|
||||||
iv_filename = <ls_file>-file-filename
|
|
||||||
iv_data = <ls_file>-file-data ).
|
|
||||||
WHEN 'stage_all'.
|
|
||||||
LOOP AT ms_files-local ASSIGNING <ls_file>.
|
LOOP AT ms_files-local ASSIGNING <ls_file>.
|
||||||
mo_stage->add( iv_path = <ls_file>-file-path
|
mo_stage->add( iv_path = <ls_file>-file-path
|
||||||
iv_filename = <ls_file>-file-filename
|
iv_filename = <ls_file>-file-filename
|
||||||
iv_data = <ls_file>-file-data ).
|
iv_data = <ls_file>-file-data ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
WHEN 'stage_reset'.
|
WHEN c_action-stage_commit.
|
||||||
mo_stage->reset( iv_path = ls_file-path
|
process_stage_list( it_postdata ).
|
||||||
iv_filename = ls_file-filename ).
|
WHEN OTHERS.
|
||||||
WHEN 'stage_ignore'.
|
RETURN.
|
||||||
mo_stage->ignore( iv_path = ls_file-path
|
|
||||||
iv_filename = ls_file-filename ).
|
|
||||||
WHEN 'stage_rm'.
|
|
||||||
mo_stage->rm( iv_path = ls_file-path
|
|
||||||
iv_filename = ls_file-filename ).
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD. "stage_handle_action
|
CREATE OBJECT ei_page TYPE lcl_gui_page_commit
|
||||||
|
EXPORTING
|
||||||
|
io_repo = mo_repo
|
||||||
|
io_stage = mo_stage.
|
||||||
|
|
||||||
|
ev_state = gc_event_state-new_page.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD process_stage_list.
|
||||||
|
|
||||||
|
DATA: lv_string TYPE string,
|
||||||
|
lt_fields TYPE tihttpnvp,
|
||||||
|
ls_file TYPE ty_file.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_file> LIKE LINE OF ms_files-local,
|
||||||
|
<ls_item> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
|
CONCATENATE LINES OF it_postdata INTO lv_string.
|
||||||
|
lt_fields = cl_http_utility=>if_http_utility~string_to_fields( |{ lv_string }| ).
|
||||||
|
|
||||||
|
IF lines( lt_fields ) = 0.
|
||||||
|
lcx_exception=>raise( 'process_stage_list: empty list' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
LOOP AT lt_fields ASSIGNING <ls_item>.
|
||||||
|
|
||||||
|
lcl_url=>split_file_location( EXPORTING iv_fullpath = <ls_item>-name
|
||||||
|
IMPORTING ev_path = ls_file-path
|
||||||
|
ev_filename = ls_file-filename ).
|
||||||
|
|
||||||
|
CASE <ls_item>-value.
|
||||||
|
WHEN lcl_stage=>c_method-add.
|
||||||
|
READ TABLE ms_files-local ASSIGNING <ls_file>
|
||||||
|
WITH KEY file-path = ls_file-path
|
||||||
|
file-filename = ls_file-filename.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
mo_stage->add( iv_path = <ls_file>-file-path
|
||||||
|
iv_filename = <ls_file>-file-filename
|
||||||
|
iv_data = <ls_file>-file-data ).
|
||||||
|
WHEN lcl_stage=>c_method-ignore.
|
||||||
|
mo_stage->ignore( iv_path = ls_file-path
|
||||||
|
iv_filename = ls_file-filename ).
|
||||||
|
WHEN lcl_stage=>c_method-rm.
|
||||||
|
mo_stage->rm( iv_path = ls_file-path
|
||||||
|
iv_filename = ls_file-filename ).
|
||||||
|
WHEN lcl_stage=>c_method-skip.
|
||||||
|
" Do nothing
|
||||||
|
WHEN OTHERS.
|
||||||
|
lcx_exception=>raise( |process_stage_list: unknown method { <ls_item>-value }| ).
|
||||||
|
ENDCASE.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD. "process_stage_list
|
||||||
|
|
||||||
METHOD render_list.
|
METHOD render_list.
|
||||||
|
|
||||||
DATA: lv_method TYPE lcl_stage=>ty_method,
|
|
||||||
lv_param TYPE string,
|
|
||||||
lv_status TYPE string,
|
|
||||||
lo_toolbar TYPE REF TO lcl_html_toolbar.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF ms_files-remote,
|
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF ms_files-remote,
|
||||||
<ls_local> LIKE LINE OF ms_files-local.
|
<ls_local> LIKE LINE OF ms_files-local.
|
||||||
|
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
ro_html->add( '<table class="stage_tab">' ).
|
ro_html->add( '<table id="stage_tab" class="stage_tab">' ).
|
||||||
|
|
||||||
|
" Local changes
|
||||||
LOOP AT ms_files-local ASSIGNING <ls_local>.
|
LOOP AT ms_files-local ASSIGNING <ls_local>.
|
||||||
IF sy-tabix = 1.
|
AT FIRST.
|
||||||
ro_html->add('<tr class="separator firstrow">').
|
ro_html->add('<thead><tr>').
|
||||||
ro_html->add( '<td></td><td colspan="2">LOCAL</td>' ).
|
ro_html->add('<th></th><th colspan="3">LOCAL</th>' ).
|
||||||
ro_html->add('</tr>').
|
ro_html->add('</tr></thead>').
|
||||||
ENDIF.
|
ro_html->add('<tbody class="local">').
|
||||||
|
ENDAT.
|
||||||
|
|
||||||
lv_method = mo_stage->lookup( iv_path = <ls_local>-file-path
|
ro_html->add( render_file( is_file = <ls_local>-file iv_context = 'local' ) ).
|
||||||
iv_filename = <ls_local>-file-filename ).
|
|
||||||
lv_param = lcl_html_action_utils=>file_encode( iv_key = mo_repo->get_key( )
|
|
||||||
ig_file = <ls_local>-file ).
|
|
||||||
|
|
||||||
CREATE OBJECT lo_toolbar.
|
AT LAST.
|
||||||
IF lv_method IS NOT INITIAL.
|
ro_html->add('</tbody>').
|
||||||
lo_toolbar->add( iv_txt = 'reset'
|
ENDAT.
|
||||||
iv_act = 'stage_reset?' && lv_param ) ##NO_TEXT.
|
|
||||||
ELSE.
|
|
||||||
lo_toolbar->add( iv_txt = 'add'
|
|
||||||
iv_act = 'stage_add?' && lv_param ) ##NO_TEXT.
|
|
||||||
ENDIF.
|
|
||||||
lo_toolbar->add( iv_txt = 'diff'
|
|
||||||
iv_act = |{ gc_action-go_diff }?{ lv_param }| ) ##NO_TEXT.
|
|
||||||
|
|
||||||
IF lv_method IS INITIAL.
|
|
||||||
lv_status = '<span class="grey">?</span>'.
|
|
||||||
ELSE.
|
|
||||||
lv_status = lv_method.
|
|
||||||
ENDIF.
|
|
||||||
ro_html->add( '<tr>' ).
|
|
||||||
ro_html->add( |<td class="status">{ lv_status }</td>| ).
|
|
||||||
ro_html->add( |<td>{ <ls_local>-file-path && <ls_local>-file-filename }</td>| ).
|
|
||||||
ro_html->add( '<td>' ).
|
|
||||||
ro_html->add( lo_toolbar->render( iv_no_separator = abap_true ) ).
|
|
||||||
ro_html->add( '</td>' ).
|
|
||||||
ro_html->add( '</tr>' ).
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
" Remote changes
|
||||||
LOOP AT ms_files-remote ASSIGNING <ls_remote>.
|
LOOP AT ms_files-remote ASSIGNING <ls_remote>.
|
||||||
IF sy-tabix = 1.
|
AT FIRST.
|
||||||
ro_html->add('<tr class="separator">').
|
ro_html->add('<thead><tr>').
|
||||||
ro_html->add( '<td></td><td colspan="2">REMOTE</td>' ).
|
ro_html->add('<th></th><th colspan="3">REMOTE</th>' ).
|
||||||
ro_html->add('</tr>').
|
ro_html->add('</tr></thead>').
|
||||||
ENDIF.
|
ro_html->add('<tbody class="remote">').
|
||||||
|
ENDAT.
|
||||||
|
|
||||||
lv_method = mo_stage->lookup( iv_path = <ls_remote>-path
|
ro_html->add( render_file( is_file = <ls_remote> iv_context = 'remote' ) ).
|
||||||
iv_filename = <ls_remote>-filename ).
|
|
||||||
lv_param = lcl_html_action_utils=>file_encode( iv_key = mo_repo->get_key( )
|
|
||||||
ig_file = <ls_remote> ).
|
|
||||||
|
|
||||||
CREATE OBJECT lo_toolbar.
|
AT LAST.
|
||||||
IF lv_method IS NOT INITIAL.
|
ro_html->add('</tbody>').
|
||||||
lo_toolbar->add( iv_txt = 'reset' iv_act = 'stage_reset?' && lv_param ) ##NO_TEXT.
|
ENDAT.
|
||||||
ELSE.
|
|
||||||
lo_toolbar->add( iv_txt = 'ignore' iv_act = 'stage_ignore?' && lv_param ) ##NO_TEXT.
|
|
||||||
lo_toolbar->add( iv_txt = 'remove' iv_act = 'stage_rm?' && lv_param ) ##NO_TEXT.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF lv_method IS INITIAL.
|
|
||||||
lv_status = '<span class="grey">?</span>'.
|
|
||||||
ELSE.
|
|
||||||
lv_status = lv_method.
|
|
||||||
ENDIF.
|
|
||||||
ro_html->add( '<tr>' ).
|
|
||||||
ro_html->add( |<td class="status">{ lv_status }</td>| ).
|
|
||||||
ro_html->add( |<td>{ <ls_remote>-path && <ls_remote>-filename }</td>| ).
|
|
||||||
ro_html->add( '<td>' ).
|
|
||||||
ro_html->add( lo_toolbar->render( iv_no_separator = abap_true ) ).
|
|
||||||
ro_html->add( '</td>' ).
|
|
||||||
ro_html->add( '</tr>' ).
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ro_html->add( '</table>' ).
|
ro_html->add( '</table>' ).
|
||||||
|
|
||||||
ENDMETHOD. "render_lines
|
ENDMETHOD. "render_lines
|
||||||
|
|
||||||
METHOD lif_gui_page~on_event.
|
METHOD render_file.
|
||||||
|
|
||||||
CASE iv_action.
|
DATA lv_param TYPE string.
|
||||||
WHEN 'stage_all'
|
|
||||||
OR 'stage_commit'.
|
CREATE OBJECT ro_html.
|
||||||
IF iv_action = 'stage_all'.
|
|
||||||
stage_handle_action( iv_getdata = iv_getdata iv_action = iv_action ).
|
ro_html->add( |<tr class="{ iv_context }">| ).
|
||||||
ENDIF.
|
ro_html->add( |<td class="status" style="color: #CCC">?</td>| ).
|
||||||
CREATE OBJECT ei_page TYPE lcl_gui_page_commit
|
ro_html->add( |<td>{ is_file-path && is_file-filename }</td>| ).
|
||||||
EXPORTING
|
|
||||||
io_repo = mo_repo
|
CASE iv_context.
|
||||||
io_stage = mo_stage.
|
WHEN 'local'.
|
||||||
ev_state = gc_event_state-new_page.
|
lv_param = lcl_html_action_utils=>file_encode( iv_key = mo_repo->get_key( )
|
||||||
WHEN 'stage_add'
|
ig_file = is_file ).
|
||||||
OR 'stage_reset'
|
ro_html->add( '<td class="cmd"><a>add</a></td>' ).
|
||||||
OR 'stage_ignore'
|
ro_html->add( '<td>' ).
|
||||||
OR 'stage_rm'.
|
ro_html->add_anchor( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ).
|
||||||
stage_handle_action( iv_getdata = iv_getdata iv_action = iv_action ).
|
ro_html->add( '</td>' ).
|
||||||
ev_state = gc_event_state-re_render.
|
WHEN 'remote'.
|
||||||
|
ro_html->add( '<td class="cmd"><a>ignore</a><a>remove</a></td>' ).
|
||||||
|
ro_html->add( |<td><span class="grey">-</span></td>| ).
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ro_html->add( '</tr>' ).
|
||||||
|
|
||||||
|
ENDMETHOD. "render_file
|
||||||
|
|
||||||
METHOD lif_gui_page~render.
|
METHOD lif_gui_page~render.
|
||||||
|
|
||||||
|
@ -211,36 +215,27 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
||||||
ro_html->add( '<div class="repo">' ).
|
ro_html->add( '<div class="repo">' ).
|
||||||
ro_html->add( render_repo_top( mo_repo ) ).
|
ro_html->add( render_repo_top( mo_repo ) ).
|
||||||
ro_html->add( render_menu( ) ).
|
ro_html->add( render_menu( ) ).
|
||||||
|
|
||||||
ro_html->add( render_list( ) ).
|
ro_html->add( render_list( ) ).
|
||||||
|
|
||||||
ro_html->add( '</div>' ).
|
ro_html->add( '</div>' ).
|
||||||
ro_html->add( footer( ) ).
|
|
||||||
|
ro_html->add( footer( scripts( ) ) ).
|
||||||
|
|
||||||
ENDMETHOD. "lif_gui_page~render
|
ENDMETHOD. "lif_gui_page~render
|
||||||
|
|
||||||
METHOD render_menu.
|
METHOD render_menu.
|
||||||
|
|
||||||
DATA: lo_toolbar TYPE REF TO lcl_html_toolbar,
|
|
||||||
lv_action TYPE string.
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
CREATE OBJECT lo_toolbar.
|
|
||||||
|
|
||||||
lv_action = lcl_html_action_utils=>repo_key_encode( mo_repo->get_key( ) ).
|
|
||||||
|
|
||||||
IF mo_stage->count( ) > 0.
|
|
||||||
lo_toolbar->add( iv_act = |stage_commit?{ lv_action }|
|
|
||||||
iv_txt = 'Commit'
|
|
||||||
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
|
||||||
ELSEIF lines( ms_files-local ) > 0.
|
|
||||||
lo_toolbar->add( iv_act = |stage_all?{ lv_action }|
|
|
||||||
iv_txt = 'Add all and commit') ##NO_TEXT.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ro_html->add( '<div class="paddings">' ).
|
ro_html->add( '<div class="paddings">' ).
|
||||||
ro_html->add( lo_toolbar->render( ) ).
|
ro_html->add_anchor( iv_act = 'commit();'
|
||||||
|
iv_typ = gc_action_type-onclick
|
||||||
|
iv_id = 'act_commit'
|
||||||
|
iv_style = 'display: none'
|
||||||
|
iv_txt = 'Commit'
|
||||||
|
iv_opt = gc_html_opt-emphas ) ##NO_TEXT.
|
||||||
|
ro_html->add_anchor( iv_act = |{ c_action-stage_all }|
|
||||||
|
iv_id = 'act_commit_all'
|
||||||
|
iv_txt = 'Add all and commit') ##NO_TEXT.
|
||||||
ro_html->add( '</div>' ).
|
ro_html->add( '</div>' ).
|
||||||
|
|
||||||
ENDMETHOD. "render_menu
|
ENDMETHOD. "render_menu
|
||||||
|
@ -261,18 +256,90 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
||||||
_add ' vertical-align: middle;'.
|
_add ' vertical-align: middle;'.
|
||||||
_add ' padding: 2px 0.5em;'.
|
_add ' padding: 2px 0.5em;'.
|
||||||
_add '}'.
|
_add '}'.
|
||||||
|
_add '.stage_tab th {'.
|
||||||
|
_add ' color: #BBB;'.
|
||||||
|
_add ' font-size: 10pt;'.
|
||||||
|
_add ' text-align: left;'.
|
||||||
|
_add ' font-weight: normal;'.
|
||||||
|
_add ' background-color: #edf2f9;'.
|
||||||
|
_add ' padding: 4px 0.5em;'.
|
||||||
|
_add '}'.
|
||||||
_add '.stage_tab td.status {'.
|
_add '.stage_tab td.status {'.
|
||||||
_add ' width: 2em;'.
|
_add ' width: 2em;'.
|
||||||
_add ' text-align: center;'.
|
_add ' text-align: center;'.
|
||||||
_add '}'.
|
_add '}'.
|
||||||
_add '.stage_tab tr.separator td {'.
|
_add '.stage_tab tbody tr:first-child td { padding-top: 0.5em; }'.
|
||||||
_add ' color: #BBB;'.
|
_add '.stage_tab tbody tr:last-child td { padding-bottom: 0.5em; }'.
|
||||||
_add ' font-size: 10pt;'.
|
_add '.stage_tab td.cmd a { padding: 0px 4px; }'.
|
||||||
_add ' background-color: #edf2f9;'.
|
|
||||||
_add ' padding: 4px 0.5em;'.
|
|
||||||
_add '}'.
|
|
||||||
_add '.stage_tab tr.firstrow td { border-top: 0px; } '.
|
|
||||||
|
|
||||||
ENDMETHOD. "styles
|
ENDMETHOD. "styles
|
||||||
|
|
||||||
|
METHOD scripts.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
" Hook global click listener on table, global action counter
|
||||||
|
_add 'document.getElementById("stage_tab").addEventListener("click", onEvent);'.
|
||||||
|
_add 'var gChoiceCount = 0;'.
|
||||||
|
|
||||||
|
" Event handler, change status
|
||||||
|
_add 'function onEvent(event) {'.
|
||||||
|
_add ' if (event.target.tagName != "A") return;'.
|
||||||
|
_add ' var td = event.target.parentNode;'.
|
||||||
|
_add ' if (!td || td.tagName != "TD" || td.className != "cmd") return;'.
|
||||||
|
_add ' var cmd = event.target.innerText;'.
|
||||||
|
_add ' var tr = td.parentNode;'.
|
||||||
|
_add ' var context = tr.parentNode.className;'.
|
||||||
|
_add ' switch (cmd) {'.
|
||||||
|
_add ' case "add": cmd = "A"; gChoiceCount++; break;'.
|
||||||
|
_add ' case "remove": cmd = "R"; gChoiceCount++; break;'.
|
||||||
|
_add ' case "ignore": cmd = "I"; gChoiceCount++; break;'.
|
||||||
|
_add ' case "reset": cmd = "?"; gChoiceCount--; break;'.
|
||||||
|
_add ' }'.
|
||||||
|
_add ' formatTR(tr, cmd, context);'.
|
||||||
|
_add ' updateMenu();'.
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
|
" Re-format table line
|
||||||
|
_add 'function formatTR(tr, cmd, context) {'.
|
||||||
|
_add ' const cmdReset = "<a>reset</a>"; '.
|
||||||
|
_add ' const cmdLocal = "<a>add</a>"; '.
|
||||||
|
_add ' const cmdRemote = "<a>ignore</a><a>remove</a>";'.
|
||||||
|
_add ' tr.cells[0].innerText = cmd;'.
|
||||||
|
_add ' tr.cells[0].style.color = (cmd == "?")?"#CCC":"";'.
|
||||||
|
_add ' tr.cells[2].innerHTML = (cmd != "?")?cmdReset'.
|
||||||
|
_add ' :(context == "local")?cmdLocal:cmdRemote;'.
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
|
" Update menu items visibility
|
||||||
|
_add 'function updateMenu() {'.
|
||||||
|
_add ' if (gChoiceCount > 0) {'.
|
||||||
|
_add ' document.getElementById("act_commit").style.display = "inline";'.
|
||||||
|
_add ' document.getElementById("act_commit_all").style.display = "none";'.
|
||||||
|
_add ' } else {'.
|
||||||
|
_add ' document.getElementById("act_commit").style.display = "none";'.
|
||||||
|
_add ' document.getElementById("act_commit_all").style.display = "inline";'.
|
||||||
|
_add ' }'.
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
|
" Commit change to the server
|
||||||
|
_add 'function commit() {'.
|
||||||
|
_add ' var data = collectData();'.
|
||||||
|
ro_html->add( | submitForm(data, "{ c_action-stage_commit }");| ).
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
|
" Extract data from the table
|
||||||
|
_add 'function collectData() {'.
|
||||||
|
_add ' var stage = document.getElementById("stage_tab");'.
|
||||||
|
_add ' var data = {};'.
|
||||||
|
_add ' for (var i = stage.rows.length - 1; i >= 0; i--) {'.
|
||||||
|
_add ' var row = stage.rows[i];'.
|
||||||
|
_add ' if (row.parentNode.tagName == "THEAD") continue;'.
|
||||||
|
_add ' data[row.cells[1].innerText] = row.cells[0].innerText;'.
|
||||||
|
_add ' }'.
|
||||||
|
_add ' return data; '.
|
||||||
|
_add '}'.
|
||||||
|
|
||||||
|
ENDMETHOD. "scripts
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
|
@ -12,6 +12,7 @@ CLASS lcl_stage DEFINITION FINAL.
|
||||||
add TYPE ty_method VALUE 'A',
|
add TYPE ty_method VALUE 'A',
|
||||||
rm TYPE ty_method VALUE 'R',
|
rm TYPE ty_method VALUE 'R',
|
||||||
ignore TYPE ty_method VALUE 'I',
|
ignore TYPE ty_method VALUE 'I',
|
||||||
|
skip TYPE ty_method VALUE '?',
|
||||||
END OF c_method.
|
END OF c_method.
|
||||||
|
|
||||||
TYPES: BEGIN OF ty_stage,
|
TYPES: BEGIN OF ty_stage,
|
||||||
|
@ -45,6 +46,8 @@ CLASS lcl_stage DEFINITION FINAL.
|
||||||
IMPORTING iv_path TYPE ty_file-path
|
IMPORTING iv_path TYPE ty_file-path
|
||||||
iv_filename TYPE ty_file-filename
|
iv_filename TYPE ty_file-filename
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
|
reset_all
|
||||||
|
RAISING lcx_exception,
|
||||||
rm
|
rm
|
||||||
IMPORTING iv_path TYPE ty_file-path
|
IMPORTING iv_path TYPE ty_file-path
|
||||||
iv_filename TYPE ty_file-filename
|
iv_filename TYPE ty_file-filename
|
||||||
|
@ -170,6 +173,10 @@ CLASS lcl_stage IMPLEMENTATION.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
ENDMETHOD. "reset
|
ENDMETHOD. "reset
|
||||||
|
|
||||||
|
METHOD reset_all.
|
||||||
|
CLEAR mt_stage.
|
||||||
|
ENDMETHOD. "reset_all
|
||||||
|
|
||||||
METHOD rm.
|
METHOD rm.
|
||||||
append( iv_path = iv_path
|
append( iv_path = iv_path
|
||||||
iv_filename = iv_filename
|
iv_filename = iv_filename
|
||||||
|
|
|
@ -360,6 +360,11 @@ CLASS lcl_url DEFINITION FINAL.
|
||||||
RETURNING VALUE(rv_path_name) TYPE string
|
RETURNING VALUE(rv_path_name) TYPE string
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS split_file_location
|
||||||
|
IMPORTING iv_fullpath TYPE string
|
||||||
|
EXPORTING ev_path TYPE string
|
||||||
|
ev_filename TYPE string.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
CLASS-METHODS regex
|
CLASS-METHODS regex
|
||||||
IMPORTING iv_repo TYPE string
|
IMPORTING iv_repo TYPE string
|
||||||
|
@ -377,6 +382,27 @@ ENDCLASS. "lcl_repo DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_url IMPLEMENTATION.
|
CLASS lcl_url IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD split_file_location.
|
||||||
|
|
||||||
|
DATA: lv_cnt TYPE i,
|
||||||
|
lv_off TYPE i,
|
||||||
|
lv_len TYPE i.
|
||||||
|
|
||||||
|
FIND FIRST OCCURRENCE OF REGEX '^/(.*/)?' IN iv_fullpath
|
||||||
|
MATCH COUNT lv_cnt
|
||||||
|
MATCH OFFSET lv_off
|
||||||
|
MATCH LENGTH lv_len.
|
||||||
|
|
||||||
|
IF lv_cnt > 0.
|
||||||
|
ev_path = iv_fullpath+0(lv_len).
|
||||||
|
ev_filename = iv_fullpath+lv_len.
|
||||||
|
ELSE.
|
||||||
|
CLEAR ev_path.
|
||||||
|
ev_filename = iv_fullpath.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD. "split_file_location
|
||||||
|
|
||||||
METHOD host.
|
METHOD host.
|
||||||
regex( EXPORTING iv_repo = iv_repo
|
regex( EXPORTING iv_repo = iv_repo
|
||||||
IMPORTING ev_host = rv_host ).
|
IMPORTING ev_host = rv_host ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user