mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Merge branch 't224'
This commit is contained in:
commit
47deee1147
|
@ -2475,6 +2475,7 @@ CLASS lcl_diff DEFINITION FINAL.
|
||||||
remote_line TYPE c LENGTH 6,
|
remote_line TYPE c LENGTH 6,
|
||||||
remote TYPE string,
|
remote TYPE string,
|
||||||
short TYPE abap_bool,
|
short TYPE abap_bool,
|
||||||
|
beacon TYPE i,
|
||||||
END OF ty_diff.
|
END OF ty_diff.
|
||||||
TYPES: ty_diffs_tt TYPE STANDARD TABLE OF ty_diff WITH DEFAULT KEY.
|
TYPES: ty_diffs_tt TYPE STANDARD TABLE OF ty_diff WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
@ -2484,6 +2485,8 @@ CLASS lcl_diff DEFINITION FINAL.
|
||||||
update TYPE i,
|
update TYPE i,
|
||||||
END OF ty_count.
|
END OF ty_count.
|
||||||
|
|
||||||
|
DATA mt_beacons TYPE ty_string_tt READ-ONLY.
|
||||||
|
|
||||||
* assumes data is UTF8 based with newlines
|
* assumes data is UTF8 based with newlines
|
||||||
* only works with lines up to 255 characters
|
* only works with lines up to 255 characters
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
|
@ -2498,6 +2501,7 @@ CLASS lcl_diff DEFINITION FINAL.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA mt_diff TYPE ty_diffs_tt.
|
DATA mt_diff TYPE ty_diffs_tt.
|
||||||
|
DATA ms_stats TYPE ty_count.
|
||||||
|
|
||||||
CLASS-METHODS:
|
CLASS-METHODS:
|
||||||
unpack
|
unpack
|
||||||
|
@ -2516,7 +2520,8 @@ CLASS lcl_diff DEFINITION FINAL.
|
||||||
RETURNING VALUE(rt_delta) TYPE vxabapt255_tab.
|
RETURNING VALUE(rt_delta) TYPE vxabapt255_tab.
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
calculate_line_num,
|
calculate_line_num_and_stats,
|
||||||
|
map_beacons,
|
||||||
shortlist.
|
shortlist.
|
||||||
|
|
||||||
ENDCLASS. "lcl_diff DEFINITION
|
ENDCLASS. "lcl_diff DEFINITION
|
||||||
|
@ -2533,21 +2538,7 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
ENDMETHOD. "get
|
ENDMETHOD. "get
|
||||||
|
|
||||||
METHOD stats.
|
METHOD stats.
|
||||||
|
rs_count = ms_stats.
|
||||||
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff.
|
|
||||||
|
|
||||||
|
|
||||||
LOOP AT mt_diff ASSIGNING <ls_diff>.
|
|
||||||
CASE <ls_diff>-result.
|
|
||||||
WHEN lcl_diff=>c_diff-insert.
|
|
||||||
rs_count-insert = rs_count-insert + 1.
|
|
||||||
WHEN lcl_diff=>c_diff-delete.
|
|
||||||
rs_count-delete = rs_count-delete + 1.
|
|
||||||
WHEN lcl_diff=>c_diff-update.
|
|
||||||
rs_count-update = rs_count-update + 1.
|
|
||||||
ENDCASE.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD. "count
|
ENDMETHOD. "count
|
||||||
|
|
||||||
METHOD unpack.
|
METHOD unpack.
|
||||||
|
@ -2588,7 +2579,6 @@ 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 ) < 500.
|
IF lines( mt_diff ) < 500.
|
||||||
LOOP AT mt_diff ASSIGNING <ls_diff>.
|
LOOP AT mt_diff ASSIGNING <ls_diff>.
|
||||||
<ls_diff>-short = abap_true.
|
<ls_diff>-short = abap_true.
|
||||||
|
@ -2604,11 +2594,9 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
EXIT.
|
EXIT.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
<ls_diff>-short = abap_true.
|
<ls_diff>-short = abap_true.
|
||||||
* lv_index = lv_index - 1.
|
|
||||||
ENDDO.
|
ENDDO.
|
||||||
|
|
||||||
DO 20 TIMES. " Forward
|
DO 20 TIMES. " Forward
|
||||||
* lv_index = lv_index + 1.
|
|
||||||
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.
|
||||||
|
@ -2620,9 +2608,9 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD. " shortlist
|
||||||
|
|
||||||
METHOD calculate_line_num.
|
METHOD calculate_line_num_and_stats.
|
||||||
|
|
||||||
DATA: lv_local TYPE i VALUE 1,
|
DATA: lv_local TYPE i VALUE 1,
|
||||||
lv_remote TYPE i VALUE 1.
|
lv_remote TYPE i VALUE 1.
|
||||||
|
@ -2634,7 +2622,7 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
<ls_diff>-local_line = lv_local.
|
<ls_diff>-local_line = lv_local.
|
||||||
<ls_diff>-remote_line = lv_remote.
|
<ls_diff>-remote_line = lv_remote.
|
||||||
|
|
||||||
CASE <ls_diff>-result.
|
CASE <ls_diff>-result. " Line nums
|
||||||
WHEN c_diff-delete.
|
WHEN c_diff-delete.
|
||||||
lv_remote = lv_remote + 1.
|
lv_remote = lv_remote + 1.
|
||||||
CLEAR <ls_diff>-local_line.
|
CLEAR <ls_diff>-local_line.
|
||||||
|
@ -2646,9 +2634,62 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
lv_remote = lv_remote + 1.
|
lv_remote = lv_remote + 1.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
|
CASE <ls_diff>-result. " Stats
|
||||||
|
WHEN c_diff-insert.
|
||||||
|
ms_stats-insert = ms_stats-insert + 1.
|
||||||
|
WHEN c_diff-delete.
|
||||||
|
ms_stats-delete = ms_stats-delete + 1.
|
||||||
|
WHEN c_diff-update.
|
||||||
|
ms_stats-update = ms_stats-update + 1.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD. " calculate_line_num_and_stats
|
||||||
|
|
||||||
|
METHOD map_beacons.
|
||||||
|
|
||||||
|
DATA: lv_beacon TYPE i,
|
||||||
|
lv_offs TYPE i,
|
||||||
|
lv_code_line TYPE string,
|
||||||
|
lo_regex TYPE REF TO cl_abap_regex,
|
||||||
|
lt_regex_set TYPE TABLE OF REF TO cl_abap_regex.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff.
|
||||||
|
|
||||||
|
DEFINE _add_regex.
|
||||||
|
CREATE OBJECT lo_regex
|
||||||
|
EXPORTING pattern = &1
|
||||||
|
ignore_case = abap_true.
|
||||||
|
APPEND lo_regex TO lt_regex_set.
|
||||||
|
END-OF-DEFINITION.
|
||||||
|
|
||||||
|
_add_regex '^\s*(CLASS|FORM|MODULE|REPORT)\s'.
|
||||||
|
_add_regex '^\s*START-OF-'.
|
||||||
|
_add_regex '^\s*INITIALIZATION(\s|\.)'.
|
||||||
|
|
||||||
|
LOOP AT mt_diff ASSIGNING <ls_diff>.
|
||||||
|
<ls_diff>-beacon = lv_beacon.
|
||||||
|
LOOP AT lt_regex_set INTO lo_regex.
|
||||||
|
FIND FIRST OCCURRENCE OF REGEX lo_regex IN <ls_diff>-local.
|
||||||
|
IF sy-subrc = 0. " Match
|
||||||
|
lv_code_line = <ls_diff>-local.
|
||||||
|
|
||||||
|
" Get rid of comments
|
||||||
|
FIND FIRST OCCURRENCE OF '.' IN lv_code_line MATCH OFFSET lv_offs.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
lv_code_line = lv_code_line(lv_offs).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
APPEND lv_code_line TO mt_beacons.
|
||||||
|
lv_beacon = sy-tabix.
|
||||||
|
<ls_diff>-beacon = lv_beacon.
|
||||||
|
EXIT. "Loop
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD. " map_beacons
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
|
@ -2669,8 +2710,8 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
it_remote = lt_remote
|
it_remote = lt_remote
|
||||||
it_delta = lt_delta ).
|
it_delta = lt_delta ).
|
||||||
|
|
||||||
calculate_line_num( ).
|
calculate_line_num_and_stats( ).
|
||||||
|
map_beacons( ).
|
||||||
shortlist( ).
|
shortlist( ).
|
||||||
|
|
||||||
ENDMETHOD. "diff
|
ENDMETHOD. "diff
|
||||||
|
@ -2733,7 +2774,7 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDDO.
|
ENDDO.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD. " render
|
||||||
|
|
||||||
ENDCLASS. "lcl_diff IMPLEMENTATION
|
ENDCLASS. "lcl_diff IMPLEMENTATION
|
||||||
|
|
||||||
|
@ -18502,6 +18543,7 @@ CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||||
METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
METHODS render_head RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
METHODS render_head RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
METHODS render_diff RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
METHODS render_diff RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
METHODS render_lines RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -18622,32 +18664,45 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD render_diff.
|
METHOD render_diff.
|
||||||
|
|
||||||
DATA lo_html TYPE REF TO lcl_html_helper.
|
CREATE OBJECT ro_html.
|
||||||
DATA lt_diffs TYPE lcl_diff=>ty_diffs_tt.
|
|
||||||
DATA lv_local TYPE string.
|
ro_html->add( '<div class="diff">' ). "#EC NOTEXT
|
||||||
DATA lv_remote TYPE string.
|
ro_html->add( render_head( ) ).
|
||||||
DATA lv_attr_local TYPE string.
|
|
||||||
DATA lv_attr_remote TYPE string.
|
" Content
|
||||||
DATA lv_anchor_count LIKE sy-tabix.
|
ro_html->add( '<div class="diff_content">' ). "#EC NOTEXT
|
||||||
DATA lv_href TYPE string.
|
ro_html->add( '<table class="diff_tab">' ). "#EC NOTEXT
|
||||||
DATA lv_insert_nav TYPE abap_bool.
|
ro_html->add( '<tr>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '<th>@LOCAL</th>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '<th>@REMOTE</th>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '<th class="cmd"><a href=#diff_1>▼ 1</a></th>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '</tr>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( render_lines( ) ).
|
||||||
|
ro_html->add( '</table>' ). "#EC NOTEXT
|
||||||
|
ro_html->add( '</div>' ). "#EC NOTEXT
|
||||||
|
|
||||||
|
ro_html->add( '</div>' ). "#EC NOTEXT
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD render_lines.
|
||||||
|
DATA: lt_diffs TYPE lcl_diff=>ty_diffs_tt,
|
||||||
|
lv_local TYPE string,
|
||||||
|
lv_remote TYPE string,
|
||||||
|
lv_attr_local TYPE string,
|
||||||
|
lv_attr_remote TYPE string,
|
||||||
|
lv_anchor_count LIKE sy-tabix,
|
||||||
|
lv_href TYPE string,
|
||||||
|
lv_beacon TYPE string,
|
||||||
|
lv_insert_nav TYPE abap_bool.
|
||||||
|
|
||||||
FIELD-SYMBOLS <ls_diff> LIKE LINE OF lt_diffs.
|
FIELD-SYMBOLS <ls_diff> LIKE LINE OF lt_diffs.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_html.
|
||||||
CREATE OBJECT lo_html.
|
|
||||||
lt_diffs = mo_diff->get( ).
|
lt_diffs = mo_diff->get( ).
|
||||||
|
|
||||||
lo_html->add( '<div class="diff_content">' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<table class="diff_tab">' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<tr>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<th>@LOCAL</th>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<th class="num"></th>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<th>@REMOTE</th>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '<th class="cmd"><a href=#diff_1>▼ 1</a></th>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '</tr>' ). "#EC NOTEXT
|
|
||||||
|
|
||||||
LOOP AT lt_diffs ASSIGNING <ls_diff>.
|
LOOP AT lt_diffs ASSIGNING <ls_diff>.
|
||||||
IF <ls_diff>-short = abap_false.
|
IF <ls_diff>-short = abap_false.
|
||||||
lv_insert_nav = abap_true.
|
lv_insert_nav = abap_true.
|
||||||
|
@ -18655,11 +18710,17 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF lv_insert_nav = abap_true. " Insert separator line with navigation
|
IF lv_insert_nav = abap_true. " Insert separator line with navigation
|
||||||
|
IF <ls_diff>-beacon > 0.
|
||||||
|
READ TABLE mo_diff->mt_beacons INTO lv_beacon INDEX <ls_diff>-beacon.
|
||||||
|
ELSE.
|
||||||
|
lv_beacon = '---'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ro_html->add( '<tr class="diff_nav_line">').
|
||||||
|
ro_html->add( '<td class="num"></td>' ).
|
||||||
|
ro_html->add( |<td colspan="4">@@ { <ls_diff>-local_line } @@ { lv_beacon }</td>| ).
|
||||||
|
ro_html->add( '</tr>' ).
|
||||||
lv_insert_nav = abap_false.
|
lv_insert_nav = abap_false.
|
||||||
lo_html->add( '<tr class="diff_nav_line"><td class="num"></td>' ).
|
|
||||||
lo_html->add( |<td colspan="4">@@ {
|
|
||||||
<ls_diff>-local_line }, { <ls_diff>-remote_line }</td>| ).
|
|
||||||
lo_html->add( '</tr>' ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lv_local = escape( val = <ls_diff>-local format = cl_abap_format=>e_html_attr ).
|
lv_local = escape( val = <ls_diff>-local format = cl_abap_format=>e_html_attr ).
|
||||||
|
@ -18688,20 +18749,16 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lo_html->add( '<tr>' ). "#EC NOTEXT
|
ro_html->add( '<tr>' ). "#EC NOTEXT
|
||||||
lo_html->add( |<td class="num">{ <ls_diff>-local_line }</td>| ). "#EC NOTEXT
|
ro_html->add( |<td class="num">{ <ls_diff>-local_line }</td>| ). "#EC NOTEXT
|
||||||
lo_html->add( |<td{ lv_attr_local }><code>{ lv_local }</code></td>| ). "#EC NOTEXT
|
ro_html->add( |<td{ lv_attr_local }><code>{ lv_local }</code></td>| ). "#EC NOTEXT
|
||||||
lo_html->add( |<td class="num">{ <ls_diff>-remote_line }</td>| ). "#EC NOTEXT
|
ro_html->add( |<td class="num">{ <ls_diff>-remote_line }</td>| ). "#EC NOTEXT
|
||||||
lo_html->add( |<td{ lv_attr_remote }><code>{ lv_remote }</code></td>| ). "#EC NOTEXT
|
ro_html->add( |<td{ lv_attr_remote }><code>{ lv_remote }</code></td>| ). "#EC NOTEXT
|
||||||
lo_html->add( |<td class="cmd">{ lv_href }</td>| ). "#EC NOTEXT
|
ro_html->add( |<td class="cmd">{ lv_href }</td>| ). "#EC NOTEXT
|
||||||
lo_html->add( '</tr>' ). "#EC NOTEXT
|
ro_html->add( '</tr>' ). "#EC NOTEXT
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
lo_html->add( '</table>' ). "#EC NOTEXT
|
|
||||||
lo_html->add( '</div>' ). "#EC NOTEXT
|
|
||||||
|
|
||||||
ro_html = lo_html.
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD lif_gui_page~on_event.
|
METHOD lif_gui_page~on_event.
|
||||||
|
@ -18719,10 +18776,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
||||||
|
|
||||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||||
ro_html->add( title( iv_page_title = 'DIFF' ) ).
|
ro_html->add( title( iv_page_title = 'DIFF' ) ).
|
||||||
ro_html->add( '<div class="diff">' ). "#EC NOTEXT
|
|
||||||
ro_html->add( render_head( ) ).
|
|
||||||
ro_html->add( render_diff( ) ).
|
ro_html->add( render_diff( ) ).
|
||||||
ro_html->add( '</div>' ). "#EC NOTEXT
|
|
||||||
ro_html->add( footer( ) ).
|
ro_html->add( footer( ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user