SCI page deisgn (#2542)

* codeinsp design, phase 1

* fix alpha_output

* final design
This commit is contained in:
Alexander Tsybulsky 2019-03-18 16:58:34 +02:00 committed by Lars Hvam
parent d8204d9130
commit 1ad16a03fe
6 changed files with 178 additions and 75 deletions

View File

@ -1013,3 +1013,43 @@ table.commit tr .title {
width:1000px;
height: 20px;
}
/* code inspector */
.ci-head {
background-color: #f2f2f2;
padding: 0.5em 1em;
}
.ci-head .package-name span {
margin-left: 0.3em;
color: grey;
}
.ci-variant {
font-weight: bold;
color: #444;
}
.ci-result {
background-color: #f6f6f6;
padding: 6px;
margin-top: 4px;
}
.ci-result li {
list-style-type: none;
padding: 0.3em 0.8em;
margin-top: 6px;
color: #444;
}
.ci-result li:first-child {
margin-top: 0px;
}
.ci-result li.ci-error {
border-left: 4px solid #cd5353;
}
.ci-result li.ci-warning {
border-left: 4px solid #ecd227;
}
.ci-result li.ci-info {
border-left: 4px solid #acacac;
}
.ci-result li span {
display: block;
}

View File

@ -188,27 +188,28 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
CREATE OBJECT ro_html.
IF mv_check_variant IS INITIAL.
ro_html->add( |No check variant supplied.| ).
ro_html->add( zcl_abapgit_gui_chunk_lib=>render_error( iv_error = 'No check variant supplied.' ) ).
RETURN.
ENDIF.
ro_html->add( '<div class="toc"><br/>' ).
ro_html->add( |Code inspector check variant: {
mv_check_variant
}<br/>| ).
ro_html->add( '<div class="ci-head">' ).
ro_html->add( |Code inspector check variant: <span class="ci-variant">{ mv_check_variant }</span>| ).
ro_html->add( |<div class="float-right package-name">{
zcl_abapgit_html=>icon( 'box/grey70' ) }<span>{
mo_repo->get_package( ) }</span></div>| ).
ro_html->add( '</div>' ).
IF lines( mt_result ) = 0.
ro_html->add( '<br/><div class="success">No code inspector findings</div>' ).
ro_html->add( '<div class="dummydiv success">' ).
ro_html->add( zcl_abapgit_html=>icon( 'check' ) ).
ro_html->add( 'No code inspector findings' ).
ro_html->add( '</div>' ).
ELSE.
render_result(
io_html = ro_html
it_result = mt_result ).
ENDIF.
ro_html->add( |<br/>| ).
render_result( io_html = ro_html
it_result = mt_result ).
ro_html->add( '</div>' ).
ENDMETHOD.

View File

@ -13,6 +13,15 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION PUBLIC ABSTRACT INHERITING FROM
IMPORTING
!io_html TYPE REF TO zcl_abapgit_html
!it_result TYPE scit_alvlist .
METHODS render_result_line
IMPORTING
!io_html TYPE REF TO zcl_abapgit_html
!is_result TYPE scir_alvlist .
METHODS build_nav_link
IMPORTING
!is_result TYPE scir_alvlist
RETURNING
VALUE(rv_link) TYPE string.
METHODS jump
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
@ -21,7 +30,8 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION PUBLIC ABSTRACT INHERITING FROM
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
CONSTANTS: c_object_separator TYPE char1 VALUE '|'.
CONSTANTS c_object_separator TYPE char1 VALUE '|'.
CONSTANTS c_ci_sig TYPE string VALUE 'cinav:'.
ENDCLASS.
@ -30,6 +40,16 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION.
METHOD build_nav_link.
rv_link = |{ c_ci_sig }| &&
|{ is_result-objtype }{ is_result-objname }| &&
|{ c_object_separator }{ is_result-sobjtype }{ is_result-sobjname }| &&
|{ c_object_separator }{ is_result-line }|.
ENDMETHOD.
METHOD jump.
DATA: lo_test TYPE REF TO cl_ci_test_root,
@ -103,94 +123,97 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION.
METHOD render_result.
CONSTANTS: lc_limit TYPE i VALUE 500.
DATA: lv_class TYPE string,
lv_line TYPE string.
FIELD-SYMBOLS: <ls_result> TYPE scir_alvlist.
io_html->add( '<div class="ci-result">' ).
LOOP AT it_result ASSIGNING <ls_result> TO lc_limit.
io_html->add( '<div>' ).
IF <ls_result>-sobjname IS INITIAL OR
( <ls_result>-sobjname = <ls_result>-objname AND
<ls_result>-sobjtype = <ls_result>-sobjtype ).
io_html->add_a( iv_txt = |{ <ls_result>-objtype } { <ls_result>-objname }|
iv_act = |{ <ls_result>-objtype }{ <ls_result>-objname }| &&
|{ c_object_separator }{ c_object_separator }{ <ls_result>-line }|
iv_typ = zif_abapgit_html=>c_action_type-sapevent ).
ELSE.
io_html->add_a( iv_txt = |{ <ls_result>-objtype } { <ls_result>-objname }| &&
| < { <ls_result>-sobjtype } { <ls_result>-sobjname }|
iv_act = |{ <ls_result>-objtype }{ <ls_result>-objname }| &&
|{ c_object_separator }{ <ls_result>-sobjtype }{ <ls_result>-sobjname }| &&
|{ c_object_separator }{ <ls_result>-line }|
iv_typ = zif_abapgit_html=>c_action_type-sapevent ).
ENDIF.
io_html->add( '</div>' ).
CASE <ls_result>-kind.
WHEN 'E'.
lv_class = 'error'.
WHEN 'W'.
lv_class = 'warning'.
WHEN OTHERS.
lv_class = 'grey'.
ENDCASE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = <ls_result>-line
IMPORTING
output = lv_line.
io_html->add( |<div class="{ lv_class }">Line { lv_line }: { <ls_result>-text }</div><br>| ).
render_result_line(
io_html = io_html
is_result = <ls_result> ).
ENDLOOP.
io_html->add( '</div>' ).
IF lines( it_result ) > lc_limit.
io_html->add( '<div class="dummydiv warning">' ).
io_html->add( zcl_abapgit_html=>icon( 'exclamation-triangle' ) ).
io_html->add( |Only first { lc_limit } findings shown in list!| ).
io_html->add( '</div>' ).
ENDIF.
ENDMETHOD.
METHOD render_result_line.
DATA: lv_class TYPE string,
lv_obj_txt TYPE string,
lv_msg TYPE string.
CASE is_result-kind.
WHEN 'E'.
lv_class = 'ci-error'.
WHEN 'W'.
lv_class = 'ci-warning'.
WHEN OTHERS.
lv_class = 'ci-info'.
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-sobjtype ).
lv_obj_txt = |{ is_result-objtype } { is_result-objname }|.
ELSE.
lv_obj_txt = |{ is_result-objtype } { is_result-objname } &gt; { is_result-sobjtype } { is_result-sobjname }|.
ENDIF.
lv_obj_txt = |{ lv_obj_txt } [ @{ zcl_abapgit_convert=>alpha_output( is_result-line ) } ]|.
io_html->add( |<li class="{ lv_class }">| ).
io_html->add_a(
iv_txt = lv_obj_txt
iv_act = build_nav_link( is_result )
iv_typ = zif_abapgit_html=>c_action_type-sapevent ).
io_html->add( |<span>{ lv_msg }</span>| ).
io_html->add( '</li>' ).
ENDMETHOD.
METHOD zif_abapgit_gui_page~on_event.
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
ls_sub_item TYPE zif_abapgit_definitions=>ty_item,
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 = iv_action.
SHIFT lv_temp LEFT DELETING LEADING c_ci_sig.
CASE iv_action.
IF lv_temp <> iv_action. " CI navigation request detected
WHEN zif_abapgit_definitions=>c_action-abapgit_home.
RETURN.
SPLIT lv_temp AT c_object_separator INTO lv_main_object lv_sub_object lv_line_number_s.
ls_item-obj_type = lv_main_object(4).
ls_item-obj_name = lv_main_object+4(*).
WHEN OTHERS.
SPLIT iv_action AT c_object_separator INTO lv_main_object lv_sub_object lv_line_number_s.
ls_item-obj_type = lv_main_object(4).
ls_item-obj_name = lv_main_object+4(*).
IF lv_sub_object IS NOT INITIAL.
ls_sub_item-obj_type = lv_sub_object(4).
ls_sub_item-obj_name = lv_sub_object+4(*).
ENDIF.
IF lv_sub_object IS NOT INITIAL.
ls_sub_item-obj_type = lv_sub_object(4).
ls_sub_item-obj_name = lv_sub_object+4(*).
ENDIF.
lv_line_number = lv_line_number_s.
lv_line_number = lv_line_number_s.
jump( is_item = ls_item
is_sub_item = ls_sub_item
iv_line_number = lv_line_number ).
jump( is_item = ls_item
is_sub_item = ls_sub_item
iv_line_number = lv_line_number ).
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
ENDCASE.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -356,6 +356,11 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_MAIN IMPLEMENTATION.
ls_hotkey_action-default_hotkey = |d|.
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
ls_hotkey_action-name = |Run code inspector|.
ls_hotkey_action-action = zif_abapgit_definitions=>c_action-repo_code_inspector.
ls_hotkey_action-default_hotkey = |i|.
INSERT ls_hotkey_action INTO TABLE rt_hotkey_actions.
ENDMETHOD.

View File

@ -46,6 +46,11 @@ CLASS zcl_abapgit_convert DEFINITION
iv_spras TYPE spras
RETURNING
VALUE(rv_spras) TYPE laiso.
CLASS-METHODS alpha_output
IMPORTING
iv_val TYPE clike
RETURNING
VALUE(rv_str) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -55,6 +60,19 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_CONVERT IMPLEMENTATION.
METHOD alpha_output.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = iv_val
IMPORTING
output = rv_str.
CONDENSE rv_str.
ENDMETHOD.
METHOD bitbyte_to_int.
DATA: lv_bitbyte TYPE string,

View File

@ -9,6 +9,7 @@ CLASS ltcl_convert DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FIN
METHODS convert_int FOR TESTING RAISING zcx_abapgit_exception.
METHODS split_string FOR TESTING.
METHODS convert_bitbyte FOR TESTING RAISING zcx_abapgit_exception.
METHODS alpha_output FOR TESTING.
ENDCLASS.
@ -19,6 +20,21 @@ ENDCLASS.
*----------------------------------------------------------------------*
CLASS ltcl_convert IMPLEMENTATION.
METHOD alpha_output.
DATA lv_alpha TYPE c LENGTH 10 VALUE '0000001234'.
DATA lv_numc TYPE n LENGTH 6 VALUE '001234'.
cl_abap_unit_assert=>assert_equals(
act = zcl_abapgit_convert=>alpha_output( lv_alpha )
exp = '1234' ).
cl_abap_unit_assert=>assert_equals(
act = zcl_abapgit_convert=>alpha_output( lv_numc )
exp = '1234' ).
ENDMETHOD.
METHOD convert_bitbyte.
DATA: lv_xstring TYPE xstring,