mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
Code inspector pages improvements (#6862)
This commit is contained in:
parent
cbda2ffb78
commit
cefc4dde7a
|
@ -29,6 +29,11 @@ CLASS zcl_abapgit_html DEFINITION
|
||||||
iv_checked TYPE abap_bool OPTIONAL
|
iv_checked TYPE abap_bool OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_html) TYPE string .
|
VALUE(rv_html) TYPE string .
|
||||||
|
CLASS-METHODS parse_data_attr
|
||||||
|
IMPORTING
|
||||||
|
iv_str TYPE string OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_data_attr) TYPE zif_abapgit_html=>ty_data_attr .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
@ -77,7 +82,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_html IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD checkbox.
|
METHOD checkbox.
|
||||||
|
@ -232,6 +237,16 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD parse_data_attr.
|
||||||
|
|
||||||
|
SPLIT iv_str AT '=' INTO rs_data_attr-name rs_data_attr-value.
|
||||||
|
IF rs_data_attr-name IS INITIAL.
|
||||||
|
CLEAR rs_data_attr.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD study_line.
|
METHOD study_line.
|
||||||
|
|
||||||
DATA: lv_line TYPE string,
|
DATA: lv_line TYPE string,
|
||||||
|
@ -462,6 +477,17 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_html~div.
|
||||||
|
zif_abapgit_html~wrap(
|
||||||
|
iv_tag = 'div'
|
||||||
|
iv_content = iv_content
|
||||||
|
ii_content = ii_content
|
||||||
|
iv_id = iv_id
|
||||||
|
iv_class = iv_class ).
|
||||||
|
ri_self = me.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_html~icon.
|
METHOD zif_abapgit_html~icon.
|
||||||
|
|
||||||
rv_str = icon(
|
rv_str = icon(
|
||||||
|
@ -512,6 +538,7 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||||
ii_content = ii_content
|
ii_content = ii_content
|
||||||
iv_id = iv_id
|
iv_id = iv_id
|
||||||
iv_class = iv_class
|
iv_class = iv_class
|
||||||
|
is_data_attr = is_data_attr
|
||||||
iv_hint = iv_hint ).
|
iv_hint = iv_hint ).
|
||||||
ri_self = me.
|
ri_self = me.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -525,6 +552,7 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||||
ii_content = ii_content
|
ii_content = ii_content
|
||||||
iv_id = iv_id
|
iv_id = iv_id
|
||||||
iv_class = iv_class
|
iv_class = iv_class
|
||||||
|
is_data_attr = is_data_attr
|
||||||
iv_hint = iv_hint ).
|
iv_hint = iv_hint ).
|
||||||
ri_self = me.
|
ri_self = me.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -537,6 +565,7 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: lv_class TYPE string,
|
DATA: lv_class TYPE string,
|
||||||
lv_id TYPE string,
|
lv_id TYPE string,
|
||||||
|
lv_data_attr TYPE string,
|
||||||
lv_title TYPE string.
|
lv_title TYPE string.
|
||||||
|
|
||||||
IF iv_id IS NOT INITIAL.
|
IF iv_id IS NOT INITIAL.
|
||||||
|
@ -551,7 +580,11 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||||
lv_title = | title="{ iv_hint }"|.
|
lv_title = | title="{ iv_hint }"|.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lv_open_tag = |<{ iv_tag }{ lv_id }{ lv_class }{ lv_title }>|.
|
IF is_data_attr IS NOT INITIAL.
|
||||||
|
lv_data_attr = | data-{ is_data_attr-name }="{ is_data_attr-value }"|.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_open_tag = |<{ iv_tag }{ lv_id }{ lv_class }{ lv_data_attr }{ lv_title }>|.
|
||||||
lv_close_tag = |</{ iv_tag }>|.
|
lv_close_tag = |</{ iv_tag }>|.
|
||||||
|
|
||||||
IF ii_content IS NOT BOUND AND iv_content IS INITIAL.
|
IF ii_content IS NOT BOUND AND iv_content IS INITIAL.
|
||||||
|
|
|
@ -217,18 +217,24 @@ CLASS ltcl_html IMPLEMENTATION.
|
||||||
iv_tag = 'td'
|
iv_tag = 'td'
|
||||||
iv_content = 'Hello'
|
iv_content = 'Hello'
|
||||||
iv_format_single_line = abap_true ).
|
iv_format_single_line = abap_true ).
|
||||||
|
mo_html->wrap(
|
||||||
|
iv_tag = 'td'
|
||||||
|
iv_content = 'Hello'
|
||||||
|
is_data_attr = zcl_abapgit_html=>parse_data_attr( 'id=123' )
|
||||||
|
iv_format_single_line = abap_true ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = mo_html->render( )
|
act = mo_html->render( )
|
||||||
exp =
|
exp =
|
||||||
'<td></td>' && cl_abap_char_utilities=>newline &&
|
|<td></td>\n| &&
|
||||||
'<td>' && cl_abap_char_utilities=>newline &&
|
|<td>\n| &&
|
||||||
' Hello' && cl_abap_char_utilities=>newline &&
|
| Hello\n| &&
|
||||||
'</td>' && cl_abap_char_utilities=>newline &&
|
|</td>\n| &&
|
||||||
'<td id="id" class="class" title="hint">' && cl_abap_char_utilities=>newline &&
|
|<td id="id" class="class" title="hint">\n| &&
|
||||||
' Hello' && cl_abap_char_utilities=>newline &&
|
| Hello\n| &&
|
||||||
'</td>' && cl_abap_char_utilities=>newline &&
|
|</td>\n| &&
|
||||||
'<td>Hello</td>' ).
|
|<td>Hello</td>\n| &&
|
||||||
|
|<td data-id="123">Hello</td>| ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
INTERFACE zif_abapgit_html PUBLIC.
|
INTERFACE zif_abapgit_html PUBLIC.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_data_attr,
|
||||||
|
name TYPE string,
|
||||||
|
value TYPE string,
|
||||||
|
END OF ty_data_attr.
|
||||||
|
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
BEGIN OF c_action_type,
|
BEGIN OF c_action_type,
|
||||||
sapevent TYPE c VALUE 'E',
|
sapevent TYPE c VALUE 'E',
|
||||||
|
@ -104,6 +110,7 @@ INTERFACE zif_abapgit_html PUBLIC.
|
||||||
!iv_class TYPE string OPTIONAL
|
!iv_class TYPE string OPTIONAL
|
||||||
!iv_hint TYPE string OPTIONAL
|
!iv_hint TYPE string OPTIONAL
|
||||||
!iv_format_single_line TYPE abap_bool DEFAULT abap_false
|
!iv_format_single_line TYPE abap_bool DEFAULT abap_false
|
||||||
|
!is_data_attr TYPE ty_data_attr OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||||
|
|
||||||
|
@ -115,6 +122,7 @@ INTERFACE zif_abapgit_html PUBLIC.
|
||||||
!iv_class TYPE string OPTIONAL
|
!iv_class TYPE string OPTIONAL
|
||||||
!iv_hint TYPE string OPTIONAL
|
!iv_hint TYPE string OPTIONAL
|
||||||
!iv_format_single_line TYPE abap_bool DEFAULT abap_true
|
!iv_format_single_line TYPE abap_bool DEFAULT abap_true
|
||||||
|
!is_data_attr TYPE ty_data_attr OPTIONAL
|
||||||
PREFERRED PARAMETER iv_content
|
PREFERRED PARAMETER iv_content
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||||
|
@ -127,6 +135,18 @@ INTERFACE zif_abapgit_html PUBLIC.
|
||||||
!iv_class TYPE string OPTIONAL
|
!iv_class TYPE string OPTIONAL
|
||||||
!iv_hint TYPE string OPTIONAL
|
!iv_hint TYPE string OPTIONAL
|
||||||
!iv_format_single_line TYPE abap_bool DEFAULT abap_true
|
!iv_format_single_line TYPE abap_bool DEFAULT abap_true
|
||||||
|
!is_data_attr TYPE ty_data_attr OPTIONAL
|
||||||
|
PREFERRED PARAMETER iv_content
|
||||||
|
RETURNING
|
||||||
|
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||||
|
|
||||||
|
METHODS div
|
||||||
|
IMPORTING
|
||||||
|
!iv_content TYPE string OPTIONAL
|
||||||
|
!ii_content TYPE REF TO zif_abapgit_html OPTIONAL
|
||||||
|
!iv_id TYPE string OPTIONAL
|
||||||
|
!iv_class TYPE string OPTIONAL
|
||||||
|
!is_data_attr TYPE ty_data_attr OPTIONAL
|
||||||
PREFERRED PARAMETER iv_content
|
PREFERRED PARAMETER iv_content
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||||
|
|
|
@ -226,6 +226,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_FLOW IMPLEMENTATION.
|
||||||
iv_key = lv_key ).
|
iv_key = lv_key ).
|
||||||
|
|
||||||
rs_handled-page = zcl_abapgit_gui_page_stage=>create(
|
rs_handled-page = zcl_abapgit_gui_page_stage=>create(
|
||||||
|
ii_force_refresh = abap_false
|
||||||
io_repo = lo_online
|
io_repo = lo_online
|
||||||
ii_obj_filter = lo_filter ).
|
ii_obj_filter = lo_filter ).
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_hoc IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_HOC IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -93,6 +93,20 @@ CLASS zcl_abapgit_gui_page_hoc IMPLEMENTATION.
|
||||||
ls_control-extra_js_url = iv_extra_js_url.
|
ls_control-extra_js_url = iv_extra_js_url.
|
||||||
ls_control-show_as_modal = iv_show_as_modal.
|
ls_control-show_as_modal = iv_show_as_modal.
|
||||||
|
|
||||||
|
IF ls_control-page_menu_provider IS NOT BOUND. " try component itself
|
||||||
|
TRY.
|
||||||
|
ls_control-page_menu_provider ?= ii_child_component.
|
||||||
|
CATCH cx_sy_move_cast_error.
|
||||||
|
ENDTRY.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF ls_control-page_title_provider IS NOT BOUND. " try component itself
|
||||||
|
TRY.
|
||||||
|
ls_control-page_title_provider ?= ii_child_component.
|
||||||
|
CATCH cx_sy_move_cast_error.
|
||||||
|
ENDTRY.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
CREATE OBJECT lo_page
|
CREATE OBJECT lo_page
|
||||||
EXPORTING
|
EXPORTING
|
||||||
ii_child_component = ii_child_component
|
ii_child_component = ii_child_component
|
||||||
|
|
|
@ -8,45 +8,67 @@ CLASS zcl_abapgit_html_table DEFINITION
|
||||||
|
|
||||||
CLASS-METHODS create
|
CLASS-METHODS create
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ii_renderer TYPE REF TO zif_abapgit_html_table
|
!ii_renderer TYPE REF TO zif_abapgit_html_table OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_html_table .
|
VALUE(ro_instance) TYPE REF TO zcl_abapgit_html_table .
|
||||||
" probably th css_class
|
" probably th css_class
|
||||||
" maybe auto class for td
|
" maybe auto class for td
|
||||||
METHODS define_column
|
METHODS define_column
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_column_id TYPE string
|
!iv_column_id TYPE string
|
||||||
!iv_column_title TYPE string OPTIONAL
|
!iv_column_title TYPE string OPTIONAL
|
||||||
!iv_from_field TYPE abap_compname OPTIONAL
|
!iv_from_field TYPE abap_compname OPTIONAL
|
||||||
|
!iv_sortable TYPE abap_bool DEFAULT abap_true
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ro_self) TYPE REF TO zcl_abapgit_html_table .
|
VALUE(ro_self) TYPE REF TO zcl_abapgit_html_table .
|
||||||
" Maybe also data_provider
|
" Maybe also data_provider
|
||||||
" Record Limit
|
" Record Limit
|
||||||
METHODS render
|
METHODS render
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
!ii_renderer TYPE REF TO zif_abapgit_html_table OPTIONAL
|
||||||
|
!it_data TYPE ANY TABLE
|
||||||
!iv_id TYPE csequence OPTIONAL
|
!iv_id TYPE csequence OPTIONAL
|
||||||
!iv_css_class TYPE csequence OPTIONAL
|
!iv_css_class TYPE csequence OPTIONAL
|
||||||
!it_data TYPE ANY TABLE
|
!iv_with_cids TYPE abap_bool DEFAULT abap_false
|
||||||
|
!is_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state OPTIONAL
|
||||||
|
!iv_wrap_in_div TYPE string OPTIONAL " div class name
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
|
" Static utils
|
||||||
|
CLASS-METHODS detect_sorting_request
|
||||||
|
IMPORTING
|
||||||
|
iv_event TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_sorting_request) TYPE zif_abapgit_html_table=>ty_sorting_state.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
CONSTANTS c_sort_by_event_prefix TYPE string VALUE `sort_by:`.
|
||||||
|
CONSTANTS c_sort_by_event_regex TYPE string VALUE `^sort_by:\w+:(asc|dsc)$`.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_column,
|
BEGIN OF ty_column,
|
||||||
column_id TYPE string,
|
column_id TYPE string,
|
||||||
column_title TYPE string,
|
column_title TYPE string,
|
||||||
from_field TYPE abap_compname,
|
from_field TYPE abap_compname,
|
||||||
|
sortable TYPE abap_bool,
|
||||||
END OF ty_column,
|
END OF ty_column,
|
||||||
ty_columns TYPE STANDARD TABLE OF ty_column WITH KEY column_id.
|
ty_columns TYPE STANDARD TABLE OF ty_column WITH KEY column_id.
|
||||||
|
|
||||||
|
|
||||||
DATA mi_renderer TYPE REF TO zif_abapgit_html_table.
|
DATA mi_renderer TYPE REF TO zif_abapgit_html_table.
|
||||||
DATA mt_columns TYPE ty_columns.
|
DATA mt_columns TYPE ty_columns.
|
||||||
DATA mi_html TYPE REF TO zif_abapgit_html.
|
DATA mi_html TYPE REF TO zif_abapgit_html.
|
||||||
|
DATA mv_with_cids TYPE abap_bool.
|
||||||
|
DATA mv_table_id TYPE string.
|
||||||
|
DATA ms_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state.
|
||||||
|
|
||||||
|
" potentially receive from outside
|
||||||
|
DATA mv_sort_span_class TYPE string VALUE `sort-arrow`.
|
||||||
|
DATA mv_sort_active_class TYPE string VALUE `sort-active`.
|
||||||
|
|
||||||
METHODS render_thead
|
METHODS render_thead
|
||||||
RAISING
|
RAISING
|
||||||
|
@ -65,6 +87,20 @@ CLASS zcl_abapgit_html_table DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
|
METHODS render_column_title
|
||||||
|
IMPORTING
|
||||||
|
is_col TYPE ty_column
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_text) TYPE string
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
|
CLASS-METHODS cid_attr
|
||||||
|
IMPORTING
|
||||||
|
iv_column_id TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_data_attr) TYPE zif_abapgit_html=>ty_data_attr.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,8 +108,15 @@ ENDCLASS.
|
||||||
CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD cid_attr.
|
||||||
|
|
||||||
|
rs_data_attr-name = 'cid'.
|
||||||
|
rs_data_attr-value = iv_column_id.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD create.
|
METHOD create.
|
||||||
ASSERT ii_renderer IS BOUND.
|
|
||||||
CREATE OBJECT ro_instance.
|
CREATE OBJECT ro_instance.
|
||||||
ro_instance->mi_renderer = ii_renderer.
|
ro_instance->mi_renderer = ii_renderer.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -90,6 +133,27 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
<ls_c>-column_id = iv_column_id.
|
<ls_c>-column_id = iv_column_id.
|
||||||
<ls_c>-column_title = iv_column_title.
|
<ls_c>-column_title = iv_column_title.
|
||||||
<ls_c>-from_field = to_upper( iv_from_field ).
|
<ls_c>-from_field = to_upper( iv_from_field ).
|
||||||
|
<ls_c>-sortable = iv_sortable.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD detect_sorting_request.
|
||||||
|
|
||||||
|
DATA lv_req TYPE string.
|
||||||
|
|
||||||
|
IF find(
|
||||||
|
val = iv_event
|
||||||
|
regex = c_sort_by_event_regex ) = 0.
|
||||||
|
|
||||||
|
lv_req = replace(
|
||||||
|
val = iv_event
|
||||||
|
sub = c_sort_by_event_prefix
|
||||||
|
with = '' ).
|
||||||
|
SPLIT lv_req AT ':' INTO rs_sorting_request-column_id lv_req.
|
||||||
|
rs_sorting_request-descending = boolc( lv_req = 'dsc' ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -98,6 +162,16 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
|
|
||||||
DATA lv_attrs TYPE string.
|
DATA lv_attrs TYPE string.
|
||||||
|
|
||||||
|
IF ii_renderer IS BOUND.
|
||||||
|
mi_renderer = ii_renderer.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ASSERT mi_renderer IS BOUND.
|
||||||
|
|
||||||
|
mv_with_cids = iv_with_cids.
|
||||||
|
mv_table_id = iv_id.
|
||||||
|
ms_sorting_state = is_sorting_state.
|
||||||
|
|
||||||
IF iv_id IS NOT INITIAL.
|
IF iv_id IS NOT INITIAL.
|
||||||
lv_attrs = lv_attrs && | id="{ iv_id }"|.
|
lv_attrs = lv_attrs && | id="{ iv_id }"|.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -109,11 +183,56 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
CREATE OBJECT mi_html TYPE zcl_abapgit_html.
|
CREATE OBJECT mi_html TYPE zcl_abapgit_html.
|
||||||
ri_html = mi_html.
|
ri_html = mi_html.
|
||||||
|
|
||||||
|
IF iv_wrap_in_div IS NOT INITIAL.
|
||||||
|
mi_html->add( |<div class="{ iv_wrap_in_div }">| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
mi_html->add( |<table{ lv_attrs }>| ).
|
mi_html->add( |<table{ lv_attrs }>| ).
|
||||||
render_thead( ).
|
render_thead( ).
|
||||||
render_tbody( it_data ).
|
render_tbody( it_data ).
|
||||||
mi_html->add( '</table>' ).
|
mi_html->add( '</table>' ).
|
||||||
|
|
||||||
|
IF iv_wrap_in_div IS NOT INITIAL.
|
||||||
|
mi_html->add( '</div>' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_column_title.
|
||||||
|
|
||||||
|
DATA lv_direction TYPE string.
|
||||||
|
DATA lv_arrow TYPE string.
|
||||||
|
DATA lv_sort_active TYPE string.
|
||||||
|
|
||||||
|
IF is_col-sortable = abap_true AND ms_sorting_state IS NOT INITIAL.
|
||||||
|
|
||||||
|
IF is_col-column_id = ms_sorting_state-column_id AND ms_sorting_state-descending = abap_false.
|
||||||
|
lv_direction = 'dsc'.
|
||||||
|
ELSE.
|
||||||
|
lv_direction = 'asc'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF is_col-column_id = ms_sorting_state-column_id AND ms_sorting_state-descending = abap_true.
|
||||||
|
lv_arrow = '▴'. " arrow up
|
||||||
|
ELSE.
|
||||||
|
lv_arrow = '▾'. " arrow down
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF is_col-column_id = ms_sorting_state-column_id.
|
||||||
|
lv_sort_active = | { mv_sort_active_class }|.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
rv_text = mi_html->a(
|
||||||
|
iv_txt = is_col-column_title
|
||||||
|
iv_act = |{ c_sort_by_event_prefix }{ is_col-column_id }:{ lv_direction }| ).
|
||||||
|
|
||||||
|
rv_text = rv_text && |<span class="{ mv_sort_span_class }{ lv_sort_active }">{ lv_arrow }</span>|.
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
rv_text = is_col-column_title.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,6 +240,7 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
|
|
||||||
DATA ls_render TYPE zif_abapgit_html_table=>ty_cell_render.
|
DATA ls_render TYPE zif_abapgit_html_table=>ty_cell_render.
|
||||||
DATA lv_dummy TYPE string.
|
DATA lv_dummy TYPE string.
|
||||||
|
DATA ls_cid TYPE zif_abapgit_html=>ty_data_attr.
|
||||||
FIELD-SYMBOLS <ls_col> LIKE LINE OF mt_columns.
|
FIELD-SYMBOLS <ls_col> LIKE LINE OF mt_columns.
|
||||||
FIELD-SYMBOLS <lv_val> TYPE any.
|
FIELD-SYMBOLS <lv_val> TYPE any.
|
||||||
|
|
||||||
|
@ -140,14 +260,22 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
ELSE.
|
ELSE.
|
||||||
ASSIGN lv_dummy TO <lv_val>.
|
ASSIGN lv_dummy TO <lv_val>.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ls_render = mi_renderer->render_cell(
|
ls_render = mi_renderer->render_cell(
|
||||||
|
iv_table_id = mv_table_id
|
||||||
iv_row_index = iv_row_index
|
iv_row_index = iv_row_index
|
||||||
is_row = is_row
|
is_row = is_row
|
||||||
iv_column_id = <ls_col>-column_id
|
iv_column_id = <ls_col>-column_id
|
||||||
iv_value = <lv_val> ).
|
iv_value = |{ <lv_val> }| ).
|
||||||
|
|
||||||
|
IF mv_with_cids = abap_true.
|
||||||
|
ls_cid = cid_attr( <ls_col>-column_id ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
mi_html->td(
|
mi_html->td(
|
||||||
iv_content = ls_render-content
|
iv_content = ls_render-content
|
||||||
ii_content = ls_render-html
|
ii_content = ls_render-html
|
||||||
|
is_data_attr = ls_cid
|
||||||
iv_class = ls_render-css_class ).
|
iv_class = ls_render-css_class ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -167,12 +295,16 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
LOOP AT it_data ASSIGNING <ls_i>.
|
LOOP AT it_data ASSIGNING <ls_i>.
|
||||||
lv_index = sy-tabix.
|
lv_index = sy-tabix.
|
||||||
ls_row_attrs = mi_renderer->get_row_attrs(
|
ls_row_attrs = mi_renderer->get_row_attrs(
|
||||||
|
iv_table_id = mv_table_id
|
||||||
iv_row_index = lv_index
|
iv_row_index = lv_index
|
||||||
is_row = <ls_i> ).
|
is_row = <ls_i> ).
|
||||||
CLEAR lv_row_attrs.
|
CLEAR lv_row_attrs.
|
||||||
IF ls_row_attrs-css_class IS NOT INITIAL.
|
IF ls_row_attrs-css_class IS NOT INITIAL.
|
||||||
lv_row_attrs = lv_row_attrs && | class="{ ls_row_attrs-css_class }"|.
|
lv_row_attrs = lv_row_attrs && | class="{ ls_row_attrs-css_class }"|.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
IF ls_row_attrs-data IS NOT INITIAL.
|
||||||
|
lv_row_attrs = lv_row_attrs && | data-{ ls_row_attrs-data-name }="{ ls_row_attrs-data-value }"|.
|
||||||
|
ENDIF.
|
||||||
mi_html->add( |<tr{ lv_row_attrs }>| ).
|
mi_html->add( |<tr{ lv_row_attrs }>| ).
|
||||||
render_row(
|
render_row(
|
||||||
iv_row_index = lv_index
|
iv_row_index = lv_index
|
||||||
|
@ -188,12 +320,19 @@ CLASS ZCL_ABAPGIT_HTML_TABLE IMPLEMENTATION.
|
||||||
METHOD render_thead.
|
METHOD render_thead.
|
||||||
|
|
||||||
FIELD-SYMBOLS <ls_col> LIKE LINE OF mt_columns.
|
FIELD-SYMBOLS <ls_col> LIKE LINE OF mt_columns.
|
||||||
|
DATA ls_cid TYPE zif_abapgit_html=>ty_data_attr.
|
||||||
|
|
||||||
mi_html->add( '<thead>' ).
|
mi_html->add( '<thead>' ).
|
||||||
mi_html->add( '<tr>' ).
|
mi_html->add( '<tr>' ).
|
||||||
|
|
||||||
LOOP AT mt_columns ASSIGNING <ls_col>.
|
LOOP AT mt_columns ASSIGNING <ls_col>.
|
||||||
mi_html->th( <ls_col>-column_title ).
|
IF mv_with_cids = abap_true.
|
||||||
|
ls_cid = cid_attr( <ls_col>-column_id ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
mi_html->th(
|
||||||
|
iv_content = render_column_title( <ls_col> )
|
||||||
|
is_data_attr = ls_cid ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
mi_html->add( '</tr>' ).
|
mi_html->add( '</tr>' ).
|
||||||
|
|
|
@ -11,36 +11,67 @@ CLASS ltcl_test_simple_table DEFINITION FINAL
|
||||||
col2 TYPE i,
|
col2 TYPE i,
|
||||||
col3 TYPE i,
|
col3 TYPE i,
|
||||||
col4 TYPE REF TO data,
|
col4 TYPE REF TO data,
|
||||||
END OF ty_simple_data.
|
END OF ty_simple_data,
|
||||||
|
ty_simple_data_tab TYPE STANDARD TABLE OF ty_simple_data WITH DEFAULT KEY.
|
||||||
|
|
||||||
METHODS simple_render FOR TESTING RAISING zcx_abapgit_exception.
|
METHODS simple_render FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS with_cids FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS with_sort FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
METHODS test_data_set
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_data_set) TYPE ty_simple_data_tab.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS ltcl_test_simple_table IMPLEMENTATION.
|
CLASS ltcl_test_simple_table IMPLEMENTATION.
|
||||||
METHOD zif_abapgit_html_table~get_row_attrs.
|
METHOD zif_abapgit_html_table~get_row_attrs.
|
||||||
rs_attrs-css_class = |r{ iv_row_index }|.
|
IF iv_table_id = 'simple'.
|
||||||
|
rs_attrs-css_class = |r{ iv_row_index }|.
|
||||||
|
ELSEIF iv_table_id = 'with-cids'.
|
||||||
|
rs_attrs-data = zcl_abapgit_html=>parse_data_attr( |attr={ iv_row_index }| ).
|
||||||
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_html_table~render_cell.
|
METHOD zif_abapgit_html_table~render_cell.
|
||||||
rs_render-css_class = 'cell'.
|
IF iv_table_id = 'simple'.
|
||||||
IF iv_column_id = 'colX'.
|
rs_render-css_class = 'cell'.
|
||||||
IF iv_row_index = 2.
|
IF iv_column_id = 'colX'.
|
||||||
rs_render-html = zcl_abapgit_html=>create( )->add( 'XHTML' ).
|
IF iv_row_index = 2.
|
||||||
|
rs_render-html = zcl_abapgit_html=>create( )->add( 'XHTML' ).
|
||||||
|
ELSE.
|
||||||
|
rs_render-content = 'X'.
|
||||||
|
ENDIF.
|
||||||
ELSE.
|
ELSE.
|
||||||
rs_render-content = 'X'.
|
rs_render-content = |{ iv_value }|.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ELSE.
|
ELSEIF iv_table_id = 'with-cids'.
|
||||||
rs_render-content = |{ iv_value }|.
|
rs_render-content = iv_value.
|
||||||
|
ELSEIF iv_table_id = 'with-sort'.
|
||||||
|
rs_render-content = iv_value.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD test_data_set.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_i> LIKE LINE OF rt_data_set.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO rt_data_set ASSIGNING <ls_i>.
|
||||||
|
<ls_i>-col1 = 'Hello'.
|
||||||
|
<ls_i>-col2 = 1.
|
||||||
|
<ls_i>-col3 = 10.
|
||||||
|
APPEND INITIAL LINE TO rt_data_set ASSIGNING <ls_i>.
|
||||||
|
<ls_i>-col1 = 'World'.
|
||||||
|
<ls_i>-col2 = 2.
|
||||||
|
<ls_i>-col3 = 20.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD simple_render.
|
METHOD simple_render.
|
||||||
|
|
||||||
DATA lo_tab TYPE REF TO zcl_abapgit_html_table.
|
DATA lo_tab TYPE REF TO zcl_abapgit_html_table.
|
||||||
DATA lt_dummy_data TYPE TABLE OF ty_simple_data.
|
|
||||||
DATA lv_html_act TYPE string.
|
DATA lv_html_act TYPE string.
|
||||||
DATA li_html_exp TYPE REF TO zif_abapgit_html.
|
DATA li_html_exp TYPE REF TO zif_abapgit_html.
|
||||||
FIELD-SYMBOLS <ls_i> LIKE LINE OF lt_dummy_data.
|
|
||||||
|
|
||||||
lo_tab = zcl_abapgit_html_table=>create( me
|
lo_tab = zcl_abapgit_html_table=>create( me
|
||||||
)->define_column(
|
)->define_column(
|
||||||
|
@ -52,24 +83,15 @@ CLASS ltcl_test_simple_table IMPLEMENTATION.
|
||||||
iv_from_field = 'col3'
|
iv_from_field = 'col3'
|
||||||
)->define_column( 'colX' ).
|
)->define_column( 'colX' ).
|
||||||
|
|
||||||
APPEND INITIAL LINE TO lt_dummy_data ASSIGNING <ls_i>.
|
|
||||||
<ls_i>-col1 = 'Hello'.
|
|
||||||
<ls_i>-col2 = 1.
|
|
||||||
<ls_i>-col3 = 10.
|
|
||||||
APPEND INITIAL LINE TO lt_dummy_data ASSIGNING <ls_i>.
|
|
||||||
<ls_i>-col1 = 'World'.
|
|
||||||
<ls_i>-col2 = 2.
|
|
||||||
<ls_i>-col3 = 20.
|
|
||||||
|
|
||||||
lv_html_act = lo_tab->render(
|
lv_html_act = lo_tab->render(
|
||||||
iv_id = 'tabid'
|
iv_id = 'simple'
|
||||||
iv_css_class = 'tabclass'
|
iv_css_class = 'tabclass'
|
||||||
it_data = lt_dummy_data )->render( ).
|
it_data = test_data_set( ) )->render( ).
|
||||||
|
|
||||||
CREATE OBJECT li_html_exp TYPE zcl_abapgit_html.
|
CREATE OBJECT li_html_exp TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
li_html_exp->add(
|
li_html_exp->add(
|
||||||
'<table id="tabid" class="tabclass">' )->add(
|
'<table id="simple" class="tabclass">' )->add(
|
||||||
'<thead>' )->add(
|
'<thead>' )->add(
|
||||||
'<tr>' )->add(
|
'<tr>' )->add(
|
||||||
'<th>Col 1</th>' )->add(
|
'<th>Col 1</th>' )->add(
|
||||||
|
@ -99,4 +121,109 @@ CLASS ltcl_test_simple_table IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD with_cids.
|
||||||
|
|
||||||
|
DATA lo_tab TYPE REF TO zcl_abapgit_html_table.
|
||||||
|
DATA lv_html_act TYPE string.
|
||||||
|
DATA li_html_exp TYPE REF TO zif_abapgit_html.
|
||||||
|
|
||||||
|
lo_tab = zcl_abapgit_html_table=>create( me
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'col1'
|
||||||
|
iv_column_title = 'Col 1'
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'col2'
|
||||||
|
iv_column_title = 'Col 2' ).
|
||||||
|
|
||||||
|
lv_html_act = lo_tab->render(
|
||||||
|
iv_id = 'with-cids'
|
||||||
|
iv_with_cids = abap_true
|
||||||
|
it_data = test_data_set( ) )->render( ).
|
||||||
|
|
||||||
|
CREATE OBJECT li_html_exp TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
|
li_html_exp->add(
|
||||||
|
'<table id="with-cids">' )->add(
|
||||||
|
'<thead>' )->add(
|
||||||
|
'<tr>' )->add(
|
||||||
|
'<th data-cid="col1">Col 1</th>' )->add(
|
||||||
|
'<th data-cid="col2">Col 2</th>' )->add(
|
||||||
|
'</tr>' )->add(
|
||||||
|
'</thead>' )->add(
|
||||||
|
'<tbody>' )->add(
|
||||||
|
'<tr data-attr="1">' )->add(
|
||||||
|
'<td data-cid="col1">Hello</td>' )->add(
|
||||||
|
'<td data-cid="col2">1</td>' )->add(
|
||||||
|
'</tr>' )->add(
|
||||||
|
'<tr data-attr="2">' )->add(
|
||||||
|
'<td data-cid="col1">World</td>' )->add(
|
||||||
|
'<td data-cid="col2">2</td>' )->add(
|
||||||
|
'</tr>' )->add(
|
||||||
|
'</tbody>' )->add(
|
||||||
|
'</table>' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lv_html_act
|
||||||
|
exp = li_html_exp->render( ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD with_sort.
|
||||||
|
|
||||||
|
DATA lo_tab TYPE REF TO zcl_abapgit_html_table.
|
||||||
|
DATA lv_html_act TYPE string.
|
||||||
|
DATA li_html_exp TYPE REF TO zif_abapgit_html.
|
||||||
|
DATA ls_sort TYPE zif_abapgit_html_table=>ty_sorting_state.
|
||||||
|
|
||||||
|
lo_tab = zcl_abapgit_html_table=>create( me
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'col1'
|
||||||
|
iv_column_title = 'Col 1'
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'col2'
|
||||||
|
iv_column_title = 'Col 2'
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'col3'
|
||||||
|
iv_column_title = 'Col 3'
|
||||||
|
iv_sortable = abap_false ).
|
||||||
|
|
||||||
|
ls_sort-column_id = 'col1'.
|
||||||
|
|
||||||
|
lv_html_act = lo_tab->render(
|
||||||
|
is_sorting_state = ls_sort
|
||||||
|
iv_id = 'with-sort'
|
||||||
|
it_data = test_data_set( ) )->render( ).
|
||||||
|
|
||||||
|
CREATE OBJECT li_html_exp TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
|
li_html_exp->add(
|
||||||
|
'<table id="with-sort">' )->add(
|
||||||
|
'<thead>' )->add(
|
||||||
|
'<tr>' )->add(
|
||||||
|
'<th><a href="sapevent:sort_by:col1:dsc">Col 1</a><span class="sort-arrow sort-active">▾</span></th>'
|
||||||
|
)->add(
|
||||||
|
'<th><a href="sapevent:sort_by:col2:asc">Col 2</a><span class="sort-arrow">▾</span></th>' )->add(
|
||||||
|
'<th>Col 3</th>' )->add(
|
||||||
|
'</tr>' )->add(
|
||||||
|
'</thead>' )->add(
|
||||||
|
'<tbody>' )->add(
|
||||||
|
'<tr>' )->add(
|
||||||
|
'<td>Hello</td>' )->add(
|
||||||
|
'<td>1</td>' )->add(
|
||||||
|
'<td>10</td>' )->add(
|
||||||
|
'</tr>' )->add(
|
||||||
|
'<tr>' )->add(
|
||||||
|
'<td>World</td>' )->add(
|
||||||
|
'<td>2</td>' )->add(
|
||||||
|
'<td>20</td>' )->add(
|
||||||
|
'</tr>' )->add(
|
||||||
|
'</tbody>' )->add(
|
||||||
|
'</table>' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lv_html_act
|
||||||
|
exp = li_html_exp->render( ) ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -4,6 +4,7 @@ INTERFACE zif_abapgit_html_table
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_row_attrs,
|
BEGIN OF ty_row_attrs,
|
||||||
css_class TYPE string,
|
css_class TYPE string,
|
||||||
|
data TYPE zif_abapgit_html=>ty_data_attr,
|
||||||
END OF ty_row_attrs.
|
END OF ty_row_attrs.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
|
@ -13,8 +14,15 @@ INTERFACE zif_abapgit_html_table
|
||||||
html TYPE REF TO zif_abapgit_html,
|
html TYPE REF TO zif_abapgit_html,
|
||||||
END OF ty_cell_render.
|
END OF ty_cell_render.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_sorting_state,
|
||||||
|
column_id TYPE string,
|
||||||
|
descending TYPE abap_bool,
|
||||||
|
END OF ty_sorting_state.
|
||||||
|
|
||||||
METHODS get_row_attrs
|
METHODS get_row_attrs
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
iv_table_id TYPE string
|
||||||
iv_row_index TYPE i
|
iv_row_index TYPE i
|
||||||
is_row TYPE any
|
is_row TYPE any
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -24,6 +32,7 @@ INTERFACE zif_abapgit_html_table
|
||||||
|
|
||||||
METHODS render_cell
|
METHODS render_cell
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
iv_table_id TYPE string
|
||||||
iv_row_index TYPE i
|
iv_row_index TYPE i
|
||||||
is_row TYPE any
|
is_row TYPE any
|
||||||
iv_column_id TYPE string
|
iv_column_id TYPE string
|
||||||
|
|
|
@ -7,6 +7,7 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
INTERFACES:
|
INTERFACES:
|
||||||
|
zif_abapgit_gui_page_title,
|
||||||
zif_abapgit_gui_event_handler,
|
zif_abapgit_gui_event_handler,
|
||||||
zif_abapgit_gui_hotkeys,
|
zif_abapgit_gui_hotkeys,
|
||||||
zif_abapgit_gui_menu_provider,
|
zif_abapgit_gui_menu_provider,
|
||||||
|
@ -23,22 +24,20 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS:
|
METHODS constructor
|
||||||
constructor
|
IMPORTING
|
||||||
IMPORTING
|
io_repo TYPE REF TO zcl_abapgit_repo
|
||||||
io_repo TYPE REF TO zcl_abapgit_repo
|
io_stage TYPE REF TO zcl_abapgit_stage OPTIONAL
|
||||||
io_stage TYPE REF TO zcl_abapgit_stage OPTIONAL
|
iv_check_variant TYPE sci_chkv OPTIONAL
|
||||||
iv_check_variant TYPE sci_chkv OPTIONAL
|
iv_raise_when_no_results TYPE abap_bool DEFAULT abap_false
|
||||||
iv_raise_when_no_results TYPE abap_bool DEFAULT abap_false
|
RAISING
|
||||||
RAISING
|
zcx_abapgit_exception.
|
||||||
zcx_abapgit_exception.
|
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
DATA:
|
DATA mo_stage TYPE REF TO zcl_abapgit_stage.
|
||||||
mo_stage TYPE REF TO zcl_abapgit_stage,
|
DATA mv_check_variant TYPE sci_chkv.
|
||||||
mv_check_variant TYPE sci_chkv.
|
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
run_code_inspector
|
run_code_inspector
|
||||||
|
@ -62,11 +61,16 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION
|
||||||
determine_check_variant
|
determine_check_variant
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
METHODS status
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_status) TYPE zif_abapgit_definitions=>ty_sci_result.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD ask_user_for_check_variant.
|
METHOD ask_user_for_check_variant.
|
||||||
|
@ -81,6 +85,7 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
super->constructor( ).
|
super->constructor( ).
|
||||||
mo_repo = io_repo.
|
mo_repo = io_repo.
|
||||||
mo_stage = io_stage.
|
mo_stage = io_stage.
|
||||||
|
@ -91,6 +96,7 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
IF mt_result IS INITIAL AND iv_raise_when_no_results = abap_true.
|
IF mt_result IS INITIAL AND iv_raise_when_no_results = abap_true.
|
||||||
zcx_abapgit_exception=>raise( 'No results' ).
|
zcx_abapgit_exception=>raise( 'No results' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,10 +111,7 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
iv_check_variant = iv_check_variant
|
iv_check_variant = iv_check_variant
|
||||||
iv_raise_when_no_results = iv_raise_when_no_results.
|
iv_raise_when_no_results = iv_raise_when_no_results.
|
||||||
|
|
||||||
ri_page = zcl_abapgit_gui_page_hoc=>create(
|
ri_page = zcl_abapgit_gui_page_hoc=>create( lo_component ).
|
||||||
iv_page_title = 'Code Inspector'
|
|
||||||
ii_page_menu_provider = lo_component
|
|
||||||
ii_child_component = lo_component ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -130,8 +133,7 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD has_inspection_errors.
|
METHOD has_inspection_errors.
|
||||||
|
|
||||||
READ TABLE mt_result TRANSPORTING NO FIELDS
|
READ TABLE mt_result TRANSPORTING NO FIELDS WITH KEY kind = 'E'.
|
||||||
WITH KEY kind = 'E'.
|
|
||||||
rv_has_inspection_errors = boolc( sy-subrc = 0 ).
|
rv_has_inspection_errors = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -139,15 +141,15 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD is_stage_allowed.
|
METHOD is_stage_allowed.
|
||||||
|
|
||||||
rv_is_stage_allowed = boolc( NOT ( mo_repo->get_local_settings( )-block_commit = abap_true
|
rv_is_stage_allowed = boolc( NOT (
|
||||||
AND has_inspection_errors( ) = abap_true ) ).
|
mo_repo->get_local_settings( )-block_commit = abap_true AND has_inspection_errors( ) = abap_true ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD run_code_inspector.
|
METHOD run_code_inspector.
|
||||||
|
|
||||||
DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector.
|
DATA li_code_inspector TYPE REF TO zif_abapgit_code_inspector.
|
||||||
|
|
||||||
li_code_inspector = zcl_abapgit_factory=>get_code_inspector( mo_repo->get_package( ) ).
|
li_code_inspector = zcl_abapgit_factory=>get_code_inspector( mo_repo->get_package( ) ).
|
||||||
|
|
||||||
|
@ -162,10 +164,26 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD status.
|
||||||
|
|
||||||
|
READ TABLE mt_result TRANSPORTING NO FIELDS WITH KEY kind = 'E'.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_status = zif_abapgit_definitions=>c_sci_result-failed.
|
||||||
|
ELSE.
|
||||||
|
READ TABLE mt_result TRANSPORTING NO FIELDS WITH KEY kind = 'W'.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_status = zif_abapgit_definitions=>c_sci_result-warning.
|
||||||
|
ELSE.
|
||||||
|
rv_status = zif_abapgit_definitions=>c_sci_result-passed.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||||
|
|
||||||
DATA lo_repo_online TYPE REF TO zcl_abapgit_repo_online.
|
DATA lo_repo_online TYPE REF TO zcl_abapgit_repo_online.
|
||||||
DATA lv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result.
|
|
||||||
|
|
||||||
CASE ii_event->mv_action.
|
CASE ii_event->mv_action.
|
||||||
WHEN c_actions-stage.
|
WHEN c_actions-stage.
|
||||||
|
@ -173,24 +191,10 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
lo_repo_online ?= mo_repo.
|
lo_repo_online ?= mo_repo.
|
||||||
|
|
||||||
IF is_stage_allowed( ) = abap_true.
|
IF is_stage_allowed( ) = abap_true.
|
||||||
" we need to refresh as the source might have changed
|
|
||||||
lo_repo_online->refresh( ).
|
|
||||||
|
|
||||||
READ TABLE mt_result TRANSPORTING NO FIELDS WITH KEY kind = 'E'.
|
|
||||||
IF sy-subrc = 0.
|
|
||||||
lv_sci_result = zif_abapgit_definitions=>c_sci_result-failed.
|
|
||||||
ELSE.
|
|
||||||
READ TABLE mt_result TRANSPORTING NO FIELDS WITH KEY kind = 'W'.
|
|
||||||
IF sy-subrc = 0.
|
|
||||||
lv_sci_result = zif_abapgit_definitions=>c_sci_result-warning.
|
|
||||||
ELSE.
|
|
||||||
lv_sci_result = zif_abapgit_definitions=>c_sci_result-passed.
|
|
||||||
ENDIF.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
rs_handled-page = zcl_abapgit_gui_page_stage=>create(
|
rs_handled-page = zcl_abapgit_gui_page_stage=>create(
|
||||||
io_repo = lo_repo_online
|
io_repo = lo_repo_online
|
||||||
iv_sci_result = lv_sci_result ).
|
iv_sci_result = status( ) ).
|
||||||
|
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||||
|
|
||||||
|
@ -268,15 +272,17 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
" Staging info already available, we can directly
|
" Staging info already available, we can directly
|
||||||
" offer to commit
|
" offer to commit
|
||||||
|
|
||||||
ro_toolbar->add( iv_txt = 'Commit'
|
ro_toolbar->add(
|
||||||
iv_act = c_actions-commit
|
iv_txt = 'Commit'
|
||||||
iv_opt = lv_opt ).
|
iv_act = c_actions-commit
|
||||||
|
iv_opt = lv_opt ).
|
||||||
|
|
||||||
ELSE.
|
ELSE.
|
||||||
|
|
||||||
ro_toolbar->add( iv_txt = 'Stage'
|
ro_toolbar->add(
|
||||||
iv_act = c_actions-stage
|
iv_txt = 'Stage'
|
||||||
iv_opt = lv_opt ).
|
iv_act = c_actions-stage
|
||||||
|
iv_opt = lv_opt ).
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -287,36 +293,32 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_gui_page_title~get_page_title.
|
||||||
|
rv_title = 'Code Inspector'.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_gui_renderable~render.
|
METHOD zif_abapgit_gui_renderable~render.
|
||||||
|
|
||||||
register_handlers( ).
|
register_handlers( ).
|
||||||
|
|
||||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
ri_html->add( `<div class="repo">` ).
|
ri_html->div(
|
||||||
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_top( io_repo = mo_repo
|
iv_class = 'repo'
|
||||||
iv_show_commit = abap_false ) ).
|
ii_content = zcl_abapgit_gui_chunk_lib=>render_repo_top(
|
||||||
ri_html->add( `</div>` ).
|
io_repo = mo_repo
|
||||||
|
iv_show_commit = abap_false ) ).
|
||||||
|
|
||||||
IF mv_check_variant IS INITIAL.
|
IF mv_check_variant IS INITIAL.
|
||||||
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_error( iv_error = 'No check variant supplied.' ) ).
|
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_error( iv_error = 'No check variant supplied.' ) ).
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ri_html->add( render_variant(
|
render_ci_report(
|
||||||
|
ii_html = ri_html
|
||||||
iv_variant = mv_check_variant
|
iv_variant = mv_check_variant
|
||||||
iv_summary = mv_summary ) ).
|
iv_success_msg = 'No code inspector findings' ).
|
||||||
|
|
||||||
IF lines( mt_result ) = 0.
|
|
||||||
ri_html->add( '<div class="dummydiv success">' ).
|
|
||||||
ri_html->add( ri_html->icon( 'check' ) ).
|
|
||||||
ri_html->add( 'No code inspector findings' ).
|
|
||||||
ri_html->add( '</div>' ).
|
|
||||||
ELSE.
|
|
||||||
render_result(
|
|
||||||
ii_html = ri_html
|
|
||||||
it_result = mt_result ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -3,20 +3,21 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION
|
||||||
INHERITING FROM zcl_abapgit_gui_component.
|
INHERITING FROM zcl_abapgit_gui_component.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
INTERFACES zif_abapgit_html_table.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
BEGIN OF c_actions,
|
BEGIN OF c_actions,
|
||||||
rerun TYPE string VALUE 'rerun',
|
rerun TYPE string VALUE 'rerun',
|
||||||
sort_1 TYPE string VALUE 'sort_1',
|
|
||||||
sort_2 TYPE string VALUE 'sort_2',
|
|
||||||
sort_3 TYPE string VALUE 'sort_3',
|
|
||||||
stage TYPE string VALUE 'stage',
|
stage TYPE string VALUE 'stage',
|
||||||
commit TYPE string VALUE 'commit',
|
commit TYPE string VALUE 'commit',
|
||||||
|
filter_kind TYPE string VALUE 'filter_kind',
|
||||||
|
apply_filter TYPE string VALUE 'apply_filter',
|
||||||
END OF c_actions .
|
END OF c_actions .
|
||||||
DATA mo_repo TYPE REF TO zcl_abapgit_repo .
|
|
||||||
DATA mt_result TYPE zif_abapgit_code_inspector=>ty_results .
|
DATA mo_repo TYPE REF TO zcl_abapgit_repo.
|
||||||
|
DATA mt_result TYPE zif_abapgit_code_inspector=>ty_results.
|
||||||
DATA mv_summary TYPE string.
|
DATA mv_summary TYPE string.
|
||||||
|
|
||||||
METHODS on_event
|
METHODS on_event
|
||||||
|
@ -27,69 +28,149 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS render_variant
|
METHODS render_ci_report
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
!ii_html TYPE REF TO zif_abapgit_html
|
||||||
|
!iv_variant TYPE sci_chkv
|
||||||
|
!iv_success_msg TYPE string
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
METHODS render_head
|
||||||
|
IMPORTING
|
||||||
|
!ii_html TYPE REF TO zif_abapgit_html
|
||||||
!iv_variant TYPE sci_chkv
|
!iv_variant TYPE sci_chkv
|
||||||
!iv_summary TYPE string
|
!iv_summary TYPE string.
|
||||||
|
METHODS render_detail
|
||||||
|
IMPORTING
|
||||||
|
!ii_html TYPE REF TO zif_abapgit_html
|
||||||
|
!it_result TYPE zif_abapgit_code_inspector=>ty_results
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
METHODS render_stats
|
||||||
|
IMPORTING
|
||||||
|
!ii_html TYPE REF TO zif_abapgit_html
|
||||||
|
!it_result TYPE zif_abapgit_code_inspector=>ty_results
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
METHODS render_success
|
||||||
|
IMPORTING
|
||||||
|
ii_html TYPE REF TO zif_abapgit_html
|
||||||
|
iv_message TYPE string.
|
||||||
|
METHODS build_base_menu
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_html) TYPE REF TO zif_abapgit_html .
|
VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar.
|
||||||
METHODS render_result
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
CONSTANTS c_object_separator TYPE c LENGTH 1 VALUE '|'.
|
||||||
|
CONSTANTS c_ci_sig TYPE string VALUE 'cinav:'.
|
||||||
|
CONSTANTS c_limit TYPE i VALUE 500.
|
||||||
|
DATA mv_filter_kind TYPE string.
|
||||||
|
DATA ms_sorting_state TYPE zif_abapgit_html_table=>ty_sorting_state.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_result_view,
|
||||||
|
kind TYPE zif_abapgit_code_inspector=>ty_result-kind,
|
||||||
|
obj_type TYPE zif_abapgit_code_inspector=>ty_result-objtype,
|
||||||
|
location TYPE string,
|
||||||
|
text TYPE string,
|
||||||
|
nav TYPE string,
|
||||||
|
END OF ty_result_view,
|
||||||
|
ty_view_tab TYPE STANDARD TABLE OF ty_result_view WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
METHODS convert_result_to_view
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ii_html TYPE REF TO zif_abapgit_html
|
it_result TYPE zif_abapgit_code_inspector=>ty_results
|
||||||
!it_result TYPE zif_abapgit_code_inspector=>ty_results .
|
RETURNING
|
||||||
METHODS render_result_line
|
VALUE(rt_view) TYPE ty_view_tab.
|
||||||
|
METHODS explain_include
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ii_html TYPE REF TO zif_abapgit_html
|
!is_result TYPE zif_abapgit_code_inspector=>ty_result
|
||||||
!is_result TYPE zif_abapgit_code_inspector=>ty_result .
|
RETURNING
|
||||||
|
VALUE(rv_txt) TYPE string.
|
||||||
|
METHODS render_limit_warning
|
||||||
|
IMPORTING
|
||||||
|
!ii_html TYPE REF TO zif_abapgit_html.
|
||||||
METHODS build_nav_link
|
METHODS build_nav_link
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!is_result TYPE zif_abapgit_code_inspector=>ty_result
|
!is_result TYPE zif_abapgit_code_inspector=>ty_result
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_link) TYPE string .
|
VALUE(rv_link) TYPE string.
|
||||||
METHODS jump
|
METHODS jump
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
!is_sub_item TYPE zif_abapgit_definitions=>ty_item
|
!is_sub_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
!iv_line_number TYPE i
|
!iv_line_number TYPE i
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
METHODS build_base_menu
|
METHODS apply_sorting
|
||||||
RETURNING
|
CHANGING
|
||||||
VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar .
|
ct_view TYPE ty_view_tab.
|
||||||
PRIVATE SECTION.
|
METHODS apply_filter_kind
|
||||||
CONSTANTS c_object_separator TYPE c LENGTH 1 VALUE '|'.
|
CHANGING
|
||||||
CONSTANTS c_ci_sig TYPE string VALUE 'cinav:'.
|
ct_view TYPE ty_view_tab.
|
||||||
|
METHODS handle_navigation
|
||||||
|
IMPORTING
|
||||||
|
iv_link TYPE string
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
METHODS render_stat
|
||||||
|
IMPORTING
|
||||||
|
!ii_html TYPE REF TO zif_abapgit_html
|
||||||
|
!iv_count TYPE i
|
||||||
|
!iv_type TYPE string
|
||||||
|
!iv_title TYPE string
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_codi_base IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD apply_filter_kind.
|
||||||
|
|
||||||
|
CASE mv_filter_kind.
|
||||||
|
WHEN 'error'.
|
||||||
|
DELETE ct_view WHERE kind <> 'E'.
|
||||||
|
WHEN 'warn'.
|
||||||
|
DELETE ct_view WHERE kind <> 'W'.
|
||||||
|
WHEN 'info'.
|
||||||
|
DELETE ct_view WHERE NOT ( kind = 'E' OR kind = 'W' ).
|
||||||
|
WHEN OTHERS.
|
||||||
|
RETURN.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD apply_sorting.
|
||||||
|
|
||||||
|
DATA lv_field TYPE abap_compname.
|
||||||
|
|
||||||
|
CASE ms_sorting_state-column_id.
|
||||||
|
WHEN 'kind' OR 'obj_type' OR 'location' OR 'text'.
|
||||||
|
lv_field = to_upper( ms_sorting_state-column_id ).
|
||||||
|
WHEN OTHERS.
|
||||||
|
RETURN.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
IF ms_sorting_state-descending = abap_true.
|
||||||
|
SORT ct_view BY (lv_field) DESCENDING.
|
||||||
|
ELSE.
|
||||||
|
SORT ct_view BY (lv_field) ASCENDING.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD build_base_menu.
|
METHOD build_base_menu.
|
||||||
|
|
||||||
DATA:
|
ro_menu = zcl_abapgit_html_toolbar=>create( )->add(
|
||||||
lo_sort_menu TYPE REF TO zcl_abapgit_html_toolbar.
|
iv_txt = 'Re-Run'
|
||||||
|
iv_act = c_actions-rerun ).
|
||||||
CREATE OBJECT lo_sort_menu.
|
|
||||||
|
|
||||||
lo_sort_menu->add(
|
|
||||||
iv_txt = 'By Object, Check, Sub-object'
|
|
||||||
iv_act = c_actions-sort_1
|
|
||||||
)->add(
|
|
||||||
iv_txt = 'By Object, Sub-object, Line'
|
|
||||||
iv_act = c_actions-sort_2
|
|
||||||
)->add(
|
|
||||||
iv_txt = 'By Check, Object, Sub-object'
|
|
||||||
iv_act = c_actions-sort_3 ).
|
|
||||||
|
|
||||||
CREATE OBJECT ro_menu.
|
|
||||||
|
|
||||||
ro_menu->add( iv_txt = 'Sort'
|
|
||||||
io_sub = lo_sort_menu ).
|
|
||||||
|
|
||||||
ro_menu->add( iv_txt = 'Re-Run'
|
|
||||||
iv_act = c_actions-rerun ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -104,6 +185,112 @@ CLASS zcl_abapgit_gui_page_codi_base IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD convert_result_to_view.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_r> LIKE LINE OF it_result.
|
||||||
|
FIELD-SYMBOLS <ls_v> LIKE LINE OF rt_view.
|
||||||
|
DATA lv_line TYPE i.
|
||||||
|
|
||||||
|
LOOP AT it_result ASSIGNING <ls_r>.
|
||||||
|
APPEND INITIAL LINE TO rt_view ASSIGNING <ls_v>.
|
||||||
|
<ls_v>-kind = <ls_r>-kind.
|
||||||
|
<ls_v>-obj_type = <ls_r>-objtype.
|
||||||
|
<ls_v>-nav = build_nav_link( <ls_r> ).
|
||||||
|
<ls_v>-text = <ls_r>-text.
|
||||||
|
|
||||||
|
IF <ls_r>-sobjname IS INITIAL OR
|
||||||
|
( <ls_r>-sobjname = <ls_r>-objname AND
|
||||||
|
<ls_r>-sobjtype = <ls_r>-objtype ).
|
||||||
|
<ls_v>-location = to_lower( <ls_r>-objname ).
|
||||||
|
ELSEIF <ls_r>-objtype = 'CLAS' OR
|
||||||
|
( <ls_r>-objtype = 'PROG' AND NOT <ls_r>-sobjname+30(*) IS INITIAL ).
|
||||||
|
<ls_v>-location = explain_include( <ls_r> ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF <ls_v>-location IS INITIAL. " Fallback to a reasonable default
|
||||||
|
<ls_v>-location = to_lower( |{ <ls_r>-objname } > { <ls_r>-sobjtype } { <ls_r>-sobjname }| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_line = <ls_r>-line. " convert from numc to integer
|
||||||
|
<ls_v>-location = |{ <ls_v>-location } @{ lv_line }|.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD explain_include.
|
||||||
|
|
||||||
|
DATA ls_mtdkey TYPE seocpdkey.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CASE is_result-sobjname+30(*).
|
||||||
|
WHEN 'CCDEF'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Local Definitions|.
|
||||||
|
WHEN 'CCIMP'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Local Implementations|.
|
||||||
|
WHEN 'CCMAC'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Macros|.
|
||||||
|
WHEN 'CCAU'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Test Classes|.
|
||||||
|
WHEN 'CU'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Public Section|.
|
||||||
|
WHEN 'CO'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Protected Section|.
|
||||||
|
WHEN 'CI'.
|
||||||
|
rv_txt = |{ to_lower( is_result-objname ) }: Private Section|.
|
||||||
|
WHEN OTHERS.
|
||||||
|
cl_oo_classname_service=>get_method_by_include(
|
||||||
|
EXPORTING
|
||||||
|
incname = is_result-sobjname
|
||||||
|
RECEIVING
|
||||||
|
mtdkey = ls_mtdkey
|
||||||
|
EXCEPTIONS
|
||||||
|
class_not_existing = 1
|
||||||
|
method_not_existing = 2
|
||||||
|
OTHERS = 3 ).
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_txt = to_lower( |{ ls_mtdkey-clsname }->{ ls_mtdkey-cpdname }| ).
|
||||||
|
ELSE.
|
||||||
|
rv_txt = to_lower( |{ is_result-sobjname }| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
CATCH cx_root.
|
||||||
|
" leave empty, fallback to default, defined elsewhere
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD handle_navigation.
|
||||||
|
|
||||||
|
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
|
ls_sub_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
|
lv_main_object TYPE string,
|
||||||
|
lv_sub_object TYPE string,
|
||||||
|
lv_line_number_s TYPE string,
|
||||||
|
lv_line_number TYPE i.
|
||||||
|
|
||||||
|
SPLIT iv_link AT c_object_separator INTO lv_main_object lv_sub_object lv_line_number_s.
|
||||||
|
ls_item-obj_type = to_upper( lv_main_object(4) ).
|
||||||
|
ls_item-obj_name = to_upper( lv_main_object+4(*) ).
|
||||||
|
|
||||||
|
IF lv_sub_object IS NOT INITIAL.
|
||||||
|
ls_sub_item-obj_type = to_upper( lv_sub_object(4) ).
|
||||||
|
ls_sub_item-obj_name = to_upper( lv_sub_object+4(*) ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_line_number = lv_line_number_s.
|
||||||
|
|
||||||
|
jump(
|
||||||
|
is_item = ls_item
|
||||||
|
is_sub_item = ls_sub_item
|
||||||
|
iv_line_number = lv_line_number ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD jump.
|
METHOD jump.
|
||||||
|
|
||||||
DATA: lo_test TYPE REF TO cl_ci_test_root,
|
DATA: lo_test TYPE REF TO cl_ci_test_root,
|
||||||
|
@ -178,169 +365,249 @@ CLASS zcl_abapgit_gui_page_codi_base IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD on_event.
|
METHOD on_event.
|
||||||
|
|
||||||
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
|
DATA lv_temp TYPE string.
|
||||||
ls_sub_item TYPE zif_abapgit_definitions=>ty_item,
|
DATA ls_sorting_req TYPE zif_abapgit_html_table=>ty_sorting_state.
|
||||||
lv_temp TYPE string,
|
|
||||||
lv_main_object TYPE string,
|
|
||||||
lv_sub_object TYPE string,
|
|
||||||
lv_line_number_s TYPE string,
|
|
||||||
lv_line_number TYPE i.
|
|
||||||
|
|
||||||
lv_temp = replace( val = ii_event->mv_action
|
lv_temp = replace(
|
||||||
regex = |^{ c_ci_sig }|
|
val = ii_event->mv_action
|
||||||
with = `` ).
|
regex = |^{ c_ci_sig }|
|
||||||
|
with = `` ).
|
||||||
|
|
||||||
IF lv_temp <> ii_event->mv_action. " CI navigation request detected
|
IF lv_temp <> ii_event->mv_action. " CI navigation request detected
|
||||||
|
handle_navigation( lv_temp ).
|
||||||
SPLIT lv_temp AT c_object_separator INTO lv_main_object lv_sub_object lv_line_number_s.
|
|
||||||
ls_item-obj_type = to_upper( lv_main_object(4) ).
|
|
||||||
ls_item-obj_name = to_upper( lv_main_object+4(*) ).
|
|
||||||
|
|
||||||
IF lv_sub_object IS NOT INITIAL.
|
|
||||||
ls_sub_item-obj_type = to_upper( lv_sub_object(4) ).
|
|
||||||
ls_sub_item-obj_name = to_upper( lv_sub_object+4(*) ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lv_line_number = lv_line_number_s.
|
|
||||||
|
|
||||||
jump( is_item = ls_item
|
|
||||||
is_sub_item = ls_sub_item
|
|
||||||
iv_line_number = lv_line_number ).
|
|
||||||
|
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
CASE ii_event->mv_action.
|
ls_sorting_req = zcl_abapgit_html_table=>detect_sorting_request( ii_event->mv_action ).
|
||||||
|
IF ls_sorting_req IS NOT INITIAL.
|
||||||
|
ms_sorting_state = ls_sorting_req.
|
||||||
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
WHEN c_actions-sort_1.
|
IF ii_event->mv_action = c_actions-filter_kind.
|
||||||
SORT mt_result BY objtype objname test code sobjtype sobjname line col.
|
mv_filter_kind = ii_event->query( )->get( 'kind' ).
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||||
WHEN c_actions-sort_2.
|
ENDIF.
|
||||||
SORT mt_result BY objtype objname sobjtype sobjname line col test code.
|
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
|
||||||
WHEN c_actions-sort_3.
|
|
||||||
SORT mt_result BY test code objtype objname sobjtype sobjname line col.
|
|
||||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD render_result.
|
METHOD render_ci_report.
|
||||||
|
|
||||||
CONSTANTS: lc_limit TYPE i VALUE 500.
|
ii_html->add( '<div class="ci">' ).
|
||||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_result.
|
|
||||||
|
|
||||||
ii_html->add( '<div class="ci-result">' ).
|
render_head(
|
||||||
|
ii_html = ii_html
|
||||||
|
iv_variant = iv_variant
|
||||||
|
iv_summary = mv_summary ).
|
||||||
|
|
||||||
LOOP AT it_result ASSIGNING <ls_result> TO lc_limit.
|
IF lines( mt_result ) = 0.
|
||||||
render_result_line(
|
render_success(
|
||||||
ii_html = ii_html
|
ii_html = ii_html
|
||||||
is_result = <ls_result> ).
|
iv_message = iv_success_msg ).
|
||||||
ENDLOOP.
|
ELSE.
|
||||||
|
render_stats(
|
||||||
|
ii_html = ii_html
|
||||||
|
it_result = mt_result ).
|
||||||
|
render_detail(
|
||||||
|
ii_html = ii_html
|
||||||
|
it_result = mt_result ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ii_html->add( '</div>' ).
|
ii_html->add( '</div>' ).
|
||||||
|
|
||||||
IF lines( it_result ) > lc_limit.
|
ENDMETHOD.
|
||||||
ii_html->add( '<div class="dummydiv warning">' ).
|
|
||||||
ii_html->add( ii_html->icon( 'exclamation-triangle' ) ).
|
|
||||||
ii_html->add( |Only first { lc_limit } findings shown in list!| ).
|
METHOD render_detail.
|
||||||
ii_html->add( '</div>' ).
|
|
||||||
|
DATA li_table TYPE REF TO zcl_abapgit_html_table.
|
||||||
|
DATA lt_view TYPE ty_view_tab.
|
||||||
|
|
||||||
|
li_table = zcl_abapgit_html_table=>create(
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'kind'
|
||||||
|
iv_column_title = zcl_abapgit_html=>icon( 'exclamation-circle' )
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'obj_type'
|
||||||
|
iv_column_title = 'Type'
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'location'
|
||||||
|
iv_column_title = 'Obj. name / location'
|
||||||
|
)->define_column(
|
||||||
|
iv_column_id = 'text'
|
||||||
|
iv_column_title = 'Text' ).
|
||||||
|
|
||||||
|
lt_view = convert_result_to_view( it_result ).
|
||||||
|
|
||||||
|
IF ms_sorting_state-column_id IS INITIAL.
|
||||||
|
ms_sorting_state-column_id = 'kind'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
apply_sorting( CHANGING ct_view = lt_view ).
|
||||||
|
apply_filter_kind( CHANGING ct_view = lt_view ).
|
||||||
|
|
||||||
|
ii_html->div(
|
||||||
|
iv_class = 'ci-detail'
|
||||||
|
ii_content = li_table->render(
|
||||||
|
ii_renderer = me
|
||||||
|
is_sorting_state = ms_sorting_state
|
||||||
|
iv_wrap_in_div = 'default-table-container'
|
||||||
|
iv_css_class = 'default-table'
|
||||||
|
iv_with_cids = abap_true
|
||||||
|
it_data = lt_view ) ).
|
||||||
|
|
||||||
|
IF lines( it_result ) > c_limit.
|
||||||
|
render_limit_warning( ii_html ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD render_result_line.
|
METHOD render_head.
|
||||||
|
|
||||||
DATA: lv_class TYPE string,
|
ii_html->div(
|
||||||
lv_obj_txt TYPE string,
|
iv_class = 'ci-msg'
|
||||||
lv_msg TYPE string,
|
iv_content =
|
||||||
lv_line TYPE i,
|
|Code inspector check variant <span class="ci-variant">{
|
||||||
ls_mtdkey TYPE seocpdkey.
|
iv_variant }</span> completed ({ iv_summary })| ).
|
||||||
|
|
||||||
CASE is_result-kind.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_limit_warning.
|
||||||
|
ii_html->add( '<div class="dummydiv warning">' ).
|
||||||
|
ii_html->add( ii_html->icon( 'exclamation-triangle' ) ).
|
||||||
|
ii_html->add( |Only first { c_limit } findings shown in list!| ).
|
||||||
|
ii_html->add( '</div>' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_stat.
|
||||||
|
|
||||||
|
DATA lv_txt TYPE string.
|
||||||
|
|
||||||
|
lv_txt = |{ iv_count } { iv_title }|.
|
||||||
|
|
||||||
|
IF iv_type <> mv_filter_kind.
|
||||||
|
lv_txt = ii_html->a(
|
||||||
|
iv_txt = lv_txt
|
||||||
|
iv_act = |{ c_actions-filter_kind }?kind={ iv_type }|
|
||||||
|
iv_typ = zif_abapgit_html=>c_action_type-sapevent ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ii_html->add( |<span class="count { iv_type }-count">{ lv_txt }</span>| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_stats.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_i> LIKE LINE OF it_result.
|
||||||
|
|
||||||
|
DATA lv_errors TYPE i.
|
||||||
|
DATA lv_warnings TYPE i.
|
||||||
|
DATA lv_infos TYPE i.
|
||||||
|
|
||||||
|
IF mv_filter_kind IS INITIAL.
|
||||||
|
mv_filter_kind = 'all'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
LOOP AT it_result ASSIGNING <ls_i>.
|
||||||
|
CASE <ls_i>-kind.
|
||||||
|
WHEN 'E'.
|
||||||
|
lv_errors = lv_errors + 1.
|
||||||
|
WHEN 'W'.
|
||||||
|
lv_warnings = lv_warnings + 1.
|
||||||
|
WHEN OTHERS.
|
||||||
|
lv_infos = lv_infos + 1.
|
||||||
|
ENDCASE.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ii_html->add( '<div class="ci-stats">' ).
|
||||||
|
|
||||||
|
IF lv_errors > 0.
|
||||||
|
render_stat(
|
||||||
|
ii_html = ii_html
|
||||||
|
iv_count = lv_errors
|
||||||
|
iv_type = 'error'
|
||||||
|
iv_title = 'errors' ).
|
||||||
|
ENDIF.
|
||||||
|
IF lv_warnings > 0.
|
||||||
|
render_stat(
|
||||||
|
ii_html = ii_html
|
||||||
|
iv_count = lv_warnings
|
||||||
|
iv_type = 'warn'
|
||||||
|
iv_title = 'warnings' ).
|
||||||
|
ENDIF.
|
||||||
|
IF lv_infos > 0.
|
||||||
|
render_stat(
|
||||||
|
ii_html = ii_html
|
||||||
|
iv_count = lv_infos
|
||||||
|
iv_type = 'info'
|
||||||
|
iv_title = 'infos' ).
|
||||||
|
ENDIF.
|
||||||
|
render_stat(
|
||||||
|
ii_html = ii_html
|
||||||
|
iv_count = lv_infos + lv_errors + lv_warnings
|
||||||
|
iv_type = 'all'
|
||||||
|
iv_title = 'all' ).
|
||||||
|
|
||||||
|
ii_html->add( '</div>' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD render_success.
|
||||||
|
|
||||||
|
ii_html->add( '<div class="dummydiv success">' ).
|
||||||
|
ii_html->add( ii_html->icon( 'check' ) ).
|
||||||
|
ii_html->add( iv_message ).
|
||||||
|
ii_html->add( '</div>' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_html_table~get_row_attrs.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_item> TYPE ty_result_view.
|
||||||
|
|
||||||
|
ASSIGN is_row TO <ls_item>.
|
||||||
|
rs_attrs-data-name = 'kind'.
|
||||||
|
|
||||||
|
CASE <ls_item>-kind.
|
||||||
WHEN 'E'.
|
WHEN 'E'.
|
||||||
lv_class = 'ci-error'.
|
rs_attrs-data-value = 'error'.
|
||||||
WHEN 'W'.
|
WHEN 'W'.
|
||||||
lv_class = 'ci-warning'.
|
rs_attrs-data-value = 'warning'.
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
lv_class = 'ci-info'.
|
rs_attrs-data-value = 'info'.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
lv_msg = escape( val = is_result-text
|
|
||||||
format = cl_abap_format=>e_html_attr ).
|
|
||||||
|
|
||||||
IF is_result-sobjname IS INITIAL OR
|
|
||||||
( is_result-sobjname = is_result-objname AND
|
|
||||||
is_result-sobjtype = is_result-objtype ).
|
|
||||||
lv_obj_txt = |{ is_result-objtype } { is_result-objname }|.
|
|
||||||
ELSEIF is_result-objtype = 'CLAS' OR
|
|
||||||
( is_result-objtype = 'PROG' AND NOT is_result-sobjname+30(*) IS INITIAL ).
|
|
||||||
TRY.
|
|
||||||
CASE is_result-sobjname+30(*).
|
|
||||||
WHEN 'CCDEF'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Local Definitions|.
|
|
||||||
WHEN 'CCIMP'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Local Implementations|.
|
|
||||||
WHEN 'CCMAC'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Macros|.
|
|
||||||
WHEN 'CCAU'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Test Classes|.
|
|
||||||
WHEN 'CU'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Public Section|.
|
|
||||||
WHEN 'CO'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Protected Section|.
|
|
||||||
WHEN 'CI'.
|
|
||||||
lv_obj_txt = |CLAS { is_result-objname } : Private Section|.
|
|
||||||
WHEN OTHERS.
|
|
||||||
cl_oo_classname_service=>get_method_by_include(
|
|
||||||
EXPORTING
|
|
||||||
incname = is_result-sobjname
|
|
||||||
RECEIVING
|
|
||||||
mtdkey = ls_mtdkey
|
|
||||||
EXCEPTIONS
|
|
||||||
class_not_existing = 1
|
|
||||||
method_not_existing = 2
|
|
||||||
OTHERS = 3 ).
|
|
||||||
IF sy-subrc = 0.
|
|
||||||
lv_obj_txt = |CLAS { ls_mtdkey-clsname }->{ ls_mtdkey-cpdname }|.
|
|
||||||
ELSE.
|
|
||||||
lv_obj_txt = |{ is_result-objtype } { is_result-sobjname }|.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
CATCH cx_root.
|
|
||||||
lv_obj_txt = ''. "use default below
|
|
||||||
ENDTRY.
|
|
||||||
ENDIF.
|
|
||||||
IF lv_obj_txt IS INITIAL.
|
|
||||||
lv_obj_txt = |{ is_result-objtype } { is_result-objname } > { is_result-sobjtype } { is_result-sobjname }|.
|
|
||||||
ENDIF.
|
|
||||||
lv_line = is_result-line. " convert from numc to integer
|
|
||||||
lv_obj_txt = |{ lv_obj_txt } [ @{ lv_line } ]|.
|
|
||||||
|
|
||||||
ii_html->add( |<li class="{ lv_class }">| ).
|
|
||||||
ii_html->add_a(
|
|
||||||
iv_txt = lv_obj_txt
|
|
||||||
iv_act = build_nav_link( is_result )
|
|
||||||
iv_typ = zif_abapgit_html=>c_action_type-sapevent ).
|
|
||||||
ii_html->add( |<span>{ lv_msg }</span>| ).
|
|
||||||
ii_html->add( '</li>' ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD render_variant.
|
METHOD zif_abapgit_html_table~render_cell.
|
||||||
|
|
||||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
FIELD-SYMBOLS <ls_item> TYPE ty_result_view.
|
||||||
|
|
||||||
ri_html->add( '<div class="ci-head">' ).
|
ASSIGN is_row TO <ls_item>.
|
||||||
ri_html->add( |Code inspector check variant <span class="ci-variant">{ iv_variant }</span>|
|
|
||||||
&& | completed ({ iv_summary })| ).
|
CASE iv_column_id.
|
||||||
ri_html->add( `</div>` ).
|
WHEN 'kind'.
|
||||||
|
rs_render-content = |<span>{ <ls_item>-kind }</span>|.
|
||||||
|
WHEN 'obj_type'.
|
||||||
|
rs_render-content = <ls_item>-obj_type.
|
||||||
|
WHEN 'location'.
|
||||||
|
rs_render-content = zcl_abapgit_html=>create( )->a(
|
||||||
|
iv_txt = <ls_item>-location
|
||||||
|
iv_act = <ls_item>-nav
|
||||||
|
iv_typ = zif_abapgit_html=>c_action_type-sapevent ).
|
||||||
|
WHEN 'text'.
|
||||||
|
rs_render-content = escape(
|
||||||
|
val = <ls_item>-text
|
||||||
|
format = cl_abap_format=>e_html_attr ).
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -7,6 +7,7 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
INTERFACES:
|
INTERFACES:
|
||||||
|
zif_abapgit_gui_page_title,
|
||||||
zif_abapgit_gui_event_handler,
|
zif_abapgit_gui_event_handler,
|
||||||
zif_abapgit_gui_hotkeys,
|
zif_abapgit_gui_hotkeys,
|
||||||
zif_abapgit_gui_menu_provider,
|
zif_abapgit_gui_menu_provider,
|
||||||
|
@ -20,12 +21,11 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS:
|
METHODS constructor
|
||||||
constructor
|
IMPORTING
|
||||||
IMPORTING
|
io_repo TYPE REF TO zcl_abapgit_repo
|
||||||
io_repo TYPE REF TO zcl_abapgit_repo
|
RAISING
|
||||||
RAISING
|
zcx_abapgit_exception.
|
||||||
zcx_abapgit_exception.
|
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
@ -33,16 +33,15 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
METHODS:
|
METHODS run_syntax_check
|
||||||
run_syntax_check
|
RAISING
|
||||||
RAISING
|
zcx_abapgit_exception.
|
||||||
zcx_abapgit_exception.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_SYNTAX IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -60,10 +59,7 @@ CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
||||||
EXPORTING
|
EXPORTING
|
||||||
io_repo = io_repo.
|
io_repo = io_repo.
|
||||||
|
|
||||||
ri_page = zcl_abapgit_gui_page_hoc=>create(
|
ri_page = zcl_abapgit_gui_page_hoc=>create( lo_component ).
|
||||||
iv_page_title = 'Syntax Check'
|
|
||||||
ii_page_menu_provider = lo_component
|
|
||||||
ii_child_component = lo_component ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -126,32 +122,27 @@ CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_gui_page_title~get_page_title.
|
||||||
|
rv_title = 'Syntax Check'.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_gui_renderable~render.
|
METHOD zif_abapgit_gui_renderable~render.
|
||||||
|
|
||||||
register_handlers( ).
|
register_handlers( ).
|
||||||
|
|
||||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||||
|
|
||||||
ri_html->add( `<div class="repo">` ).
|
ri_html->div(
|
||||||
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_top( io_repo = mo_repo
|
iv_class = 'repo'
|
||||||
iv_show_commit = abap_false ) ).
|
ii_content = zcl_abapgit_gui_chunk_lib=>render_repo_top(
|
||||||
ri_html->add( `</div>` ).
|
io_repo = mo_repo
|
||||||
|
iv_show_commit = abap_false ) ).
|
||||||
|
|
||||||
ri_html->add( '<div class="toc">' ).
|
render_ci_report(
|
||||||
|
ii_html = ri_html
|
||||||
ri_html->add( render_variant(
|
|
||||||
iv_variant = c_variant
|
iv_variant = c_variant
|
||||||
iv_summary = mv_summary ) ).
|
iv_success_msg = 'No syntax errors' ).
|
||||||
|
|
||||||
IF lines( mt_result ) = 0.
|
|
||||||
ri_html->add( '<div class="dummydiv success">' ).
|
|
||||||
ri_html->add( ri_html->icon( 'check' ) ).
|
|
||||||
ri_html->add( 'No syntax errors' ).
|
|
||||||
ri_html->add( '</div>' ).
|
|
||||||
ELSE.
|
|
||||||
render_result( ii_html = ri_html
|
|
||||||
it_result = mt_result ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -25,6 +25,7 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION
|
||||||
iv_seed TYPE string OPTIONAL
|
iv_seed TYPE string OPTIONAL
|
||||||
iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run
|
iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run
|
||||||
ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
|
ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
|
||||||
|
ii_force_refresh TYPE abap_bool DEFAULT abap_true
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
|
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
|
||||||
RAISING
|
RAISING
|
||||||
|
@ -36,6 +37,7 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION
|
||||||
iv_seed TYPE string OPTIONAL
|
iv_seed TYPE string OPTIONAL
|
||||||
iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run
|
iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run
|
||||||
ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
|
ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
|
||||||
|
ii_force_refresh TYPE abap_bool DEFAULT abap_true
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
@ -135,7 +137,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD check_selected.
|
METHOD check_selected.
|
||||||
|
@ -184,6 +186,11 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
|
||||||
|
|
||||||
super->constructor( ).
|
super->constructor( ).
|
||||||
|
|
||||||
|
" force refresh on stage, to make sure the latest local and remote files are used
|
||||||
|
IF ii_force_refresh = abap_true.
|
||||||
|
io_repo->refresh( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
mo_repo = io_repo.
|
mo_repo = io_repo.
|
||||||
mv_seed = iv_seed.
|
mv_seed = iv_seed.
|
||||||
mv_sci_result = iv_sci_result.
|
mv_sci_result = iv_sci_result.
|
||||||
|
@ -231,6 +238,7 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION.
|
||||||
io_repo = io_repo
|
io_repo = io_repo
|
||||||
iv_seed = iv_seed
|
iv_seed = iv_seed
|
||||||
iv_sci_result = iv_sci_result
|
iv_sci_result = iv_sci_result
|
||||||
|
ii_force_refresh = ii_force_refresh
|
||||||
ii_obj_filter = ii_obj_filter.
|
ii_obj_filter = ii_obj_filter.
|
||||||
|
|
||||||
ri_page = zcl_abapgit_gui_page_hoc=>create(
|
ri_page = zcl_abapgit_gui_page_hoc=>create(
|
||||||
|
|
|
@ -142,7 +142,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD abapgit_services_actions.
|
METHOD abapgit_services_actions.
|
||||||
|
@ -402,9 +402,6 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF ri_page IS INITIAL.
|
IF ri_page IS INITIAL.
|
||||||
" force refresh on stage, to make sure the latest local and remote files are used
|
|
||||||
lo_repo->refresh( ).
|
|
||||||
|
|
||||||
ri_page = zcl_abapgit_gui_page_stage=>create(
|
ri_page = zcl_abapgit_gui_page_stage=>create(
|
||||||
io_repo = lo_repo
|
io_repo = lo_repo
|
||||||
iv_seed = lv_seed
|
iv_seed = lv_seed
|
||||||
|
|
|
@ -1183,23 +1183,100 @@ table ul.repo-labels li {
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TABLE COMPONENT DEFAULT STYLE */
|
||||||
|
|
||||||
|
div.default-table-container {
|
||||||
|
padding: 6px 0.5em;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.default-table {
|
||||||
|
line-height: 1.5;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.default-table thead tr {
|
||||||
|
border-bottom: #efefef solid 1px;
|
||||||
|
}
|
||||||
|
/*table.default-table tbody tr {
|
||||||
|
border-bottom: #efefef solid 1px;
|
||||||
|
}
|
||||||
|
table.default-table tbody tr:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
table.default-table td,
|
||||||
|
table.default-table th {
|
||||||
|
padding: 6px 8px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.default-table th span.sort-arrow {
|
||||||
|
display: inline-block;
|
||||||
|
color: hsla(0, 0%, 0%, 0.15);
|
||||||
|
width: 1em; /*for constant width*/
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.default-table th span.sort-active {
|
||||||
|
color: #4078c0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.default-table th {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
/* CODE INSPECTOR */
|
/* CODE INSPECTOR */
|
||||||
|
|
||||||
.ci-head { padding: 0.5em 1em; }
|
div.ci {
|
||||||
.ci-head .package-name span { margin-left: 0.3em; }
|
margin-top: 1px;
|
||||||
.ci-variant { font-weight: bold; }
|
margin-bottom: 1px;
|
||||||
.ci-result {
|
|
||||||
padding: 6px;
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
}
|
||||||
.ci-result li {
|
|
||||||
list-style-type: none;
|
div.ci-msg {
|
||||||
padding: 0.3em 0.8em;
|
padding: 0.7em 1em 0.5em;
|
||||||
margin-top: 6px;
|
}
|
||||||
border-left: 4px solid;
|
div.ci-msg span.ci-variant {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-stats {
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
}
|
||||||
|
div.ci-stats span.count {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 2px 6px;
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-detail {
|
||||||
|
padding: 6px 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-detail table td,
|
||||||
|
div.ci-detail table th {
|
||||||
|
vertical-align: text-top;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-detail table th[data-cid="kind"],
|
||||||
|
div.ci-detail table th[data-cid="obj_type"] {
|
||||||
|
white-space: nowrap
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-detail table td[data-cid="kind"] span {
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 3px;
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
vertical-align: inherit;
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-detail table td[data-cid="text"] {
|
||||||
|
font-size: smaller;
|
||||||
}
|
}
|
||||||
.ci-result li:first-child { margin-top: 0px; }
|
|
||||||
.ci-result li > span { display: block; }
|
|
||||||
|
|
||||||
/* FLOATING BUTTONS */
|
/* FLOATING BUTTONS */
|
||||||
|
|
||||||
|
|
|
@ -405,14 +405,39 @@ div.corner-hint {
|
||||||
|
|
||||||
/* CODE INSPECTOR */
|
/* CODE INSPECTOR */
|
||||||
|
|
||||||
.ci-head { background-color: var(--theme-container-background-color); }
|
div.ci { background-color: var(--theme-container-background-color); }
|
||||||
.ci-head .package-name span { color: grey; }
|
|
||||||
.ci-variant { color: #444; }
|
div.ci-msg span.ci-variant { color: var(--theme-primary-font-color); }
|
||||||
.ci-result { background-color: #f6f6f6; }
|
|
||||||
.ci-result li { color: #444; }
|
div.ci-stats span.error-count {
|
||||||
.ci-result li.ci-error { border-left-color: #cd5353; }
|
border-color: hsl(350, 100%, 80%);
|
||||||
.ci-result li.ci-warning { border-left-color: #ecd227; }
|
background-color: hsl(350, 100%, 90%);
|
||||||
.ci-result li.ci-info { border-left-color: #acacac; }
|
}
|
||||||
|
div.ci-stats span.warn-count {
|
||||||
|
border-color: hsl(60, 100%, 42%);
|
||||||
|
background-color: hsl(60, 100%, 90%);
|
||||||
|
}
|
||||||
|
div.ci-stats span.info-count {
|
||||||
|
border-color: hsl(120, 80%, 80%);
|
||||||
|
background-color: hsl(120, 80%, 94%);
|
||||||
|
}
|
||||||
|
div.ci-stats span.all-count {
|
||||||
|
border-color: hsl(235, 100%, 89%);
|
||||||
|
background-color: hsl(235, 100%, 93%);
|
||||||
|
}
|
||||||
|
div.ci-detail table td[data-cid="text"] {
|
||||||
|
color: hsl(0, 0%, 40%);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ci-detail table tr[data-kind="error"] td[data-cid="kind"] span {
|
||||||
|
background-color: hsl(0, 100%, 68%);
|
||||||
|
}
|
||||||
|
div.ci-detail table tr[data-kind="warning"] td[data-cid="kind"] span {
|
||||||
|
background-color:hsl(52, 100%, 49%);
|
||||||
|
}
|
||||||
|
div.ci-detail table tr[data-kind="info"] td[data-cid="kind"] span {
|
||||||
|
background-color: hsl(118, 67%, 47%);
|
||||||
|
}
|
||||||
|
|
||||||
/* COMMAND PALETTE */
|
/* COMMAND PALETTE */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user