From 42474897b3c9c60da1a10926b9073d4512cf2c18 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Fri, 9 Sep 2016 15:14:47 +0300 Subject: [PATCH] #332, db page improvements, part1 --- src/zabapgit_page_db.prog.abap | 109 ++++++++++++++++++++++----------- 1 file changed, 72 insertions(+), 37 deletions(-) diff --git a/src/zabapgit_page_db.prog.abap b/src/zabapgit_page_db.prog.abap index 36b057a0a..b35fb72c4 100644 --- a/src/zabapgit_page_db.prog.abap +++ b/src/zabapgit_page_db.prog.abap @@ -2,17 +2,6 @@ *& Include ZABAPGIT_PAGE_DB *&---------------------------------------------------------------------* -CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. - - PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. - - PRIVATE SECTION. - METHODS styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. - -ENDCLASS. - CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PUBLIC SECTION. @@ -59,7 +48,7 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( || && |
Type:{ ms_key-type }
| ). - ro_html->add( || && + ro_html->add( |
Value:
| && |
Key:{ ms_key-value }
| ). ro_html->add( |
{ lv_data }
| ). ro_html->add( '
' ). @@ -92,6 +81,7 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. _add ' display: inline-block;'. _add ' border: 1px #b3c1cc solid;'. _add ' background-color: #eee;'. + _add ' border-radius: 3px;'. _add ' margin-right: 0.5em; '. _add '}'. _add 'table.tag td { padding: 0.2em 0.5em; }'. @@ -159,7 +149,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. " Banners ro_html->add( || && |
Type:{ ms_key-type }
| ). - ro_html->add( || && + ro_html->add( |
Value:
| && |
Key:{ ms_key-value }
| ). " Form @@ -200,6 +190,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. _add ' display: inline-block;'. _add ' border: 1px #b3c1cc solid;'. _add ' background-color: #eee;'. + _add ' border-radius: 3px;'. _add ' margin-right: 0.5em; '. _add '}'. _add 'table.tag td { padding: 0.2em 0.5em; }'. @@ -219,6 +210,21 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. ENDCLASS. +CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. + + PUBLIC SECTION. + METHODS lif_gui_page~render REDEFINITION. + + PRIVATE SECTION. + METHODS styles + RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + METHODS explain_content + IMPORTING iv_data TYPE lcl_persistence_db=>ty_content + RETURNING VALUE(rv_text) TYPE string. + + +ENDCLASS. + CLASS lcl_gui_page_db IMPLEMENTATION. METHOD lif_gui_page~render. @@ -240,12 +246,12 @@ CLASS lcl_gui_page_db IMPLEMENTATION. ro_html->add( title( 'DATABASE PERSISTENCY' ) ). ro_html->add( '
' ). - ro_html->add( '' ). + ro_html->add( '
' ). "width="100%" " Header ro_html->add( '' ). ro_html->add( '' ). - ro_html->add( '' ). + ro_html->add( '' ). ro_html->add( '' ). ro_html->add( '' ). ro_html->add( '' ). @@ -257,15 +263,8 @@ CLASS lcl_gui_page_db IMPLEMENTATION. lv_trclass = ' class="firstrow"' ##NO_TEXT. ENDIF. - IF strlen( -data_str ) >= 250. - lv_escaped = escape( val = -data_str(250) - format = cl_abap_format=>e_html_attr ). - ELSE. - lv_escaped = escape( val = -data_str - format = cl_abap_format=>e_html_attr ). - ENDIF. - - lv_action = lcl_html_action_utils=>dbkey_encode( ). + lv_action = lcl_html_action_utils=>dbkey_encode( ). + lv_escaped = explain_content( ). CREATE OBJECT lo_toolbar. lo_toolbar->add( iv_txt = 'Display' iv_act = |db_display?{ lv_action }| ). @@ -275,9 +274,9 @@ CLASS lcl_gui_page_db IMPLEMENTATION. ro_html->add( || ). ro_html->add( || ). ro_html->add( || ). - ro_html->add( || ). + ro_html->add( || ). ro_html->add( '' ). ro_html->add( '' ). ENDLOOP. @@ -289,6 +288,47 @@ CLASS lcl_gui_page_db IMPLEMENTATION. ENDMETHOD. "lif_gui_page~render + METHOD explain_content. + DATA: lv_result TYPE match_result, + lv_match TYPE submatch_result, + lv_cnt TYPE i. + + CASE iv_data-type. + WHEN 'REPO'. + rv_text = '???'. " Fallback default + + FIND FIRST OCCURRENCE OF REGEX '(.*)' + IN iv_data-data_str IGNORING CASE RESULTS lv_result. + READ TABLE lv_result-submatches INTO lv_match INDEX 1. + IF sy-subrc IS INITIAL. + rv_text = iv_data-data_str+lv_match-offset(lv_match-length). + ENDIF. + + FIND FIRST OCCURRENCE OF REGEX '' + IN iv_data-data_str IGNORING CASE MATCH COUNT lv_cnt. + IF lv_cnt > 0. + rv_text = |Online: YES, Name: { lcl_url=>name( rv_text ) }|. + ELSE. + rv_text = |Online: NO, Name: { rv_text }|. + ENDIF. + + WHEN 'BACKGROUND'. + FIND FIRST OCCURRENCE OF REGEX '(.*)' + IN iv_data-data_str IGNORING CASE RESULTS lv_result. + READ TABLE lv_result-submatches INTO lv_match INDEX 1. + IF sy-subrc IS NOT INITIAL. + RETURN. + ENDIF. + rv_text = |Method: { iv_data-data_str+lv_match-offset(lv_match-length) }, | + && |Repository: { lcl_app=>repo_srv( )->get( iv_data-value )->get_name( ) }|. + + WHEN 'USER'. + rv_text = '-'. " No additional explanation for user + WHEN OTHERS. + rv_text = '???'. + ENDCASE. + ENDMETHOD. "explain_content + METHOD styles. CREATE OBJECT ro_html. @@ -298,27 +338,22 @@ CLASS lcl_gui_page_db IMPLEMENTATION. _add ' background-color: #f2f2f2;'. _add ' padding: 0.5em;'. _add '}'. - _add 'table.db_tab pre {'. - _add ' display: block;'. - _add ' overflow: hidden;'. - _add ' word-wrap:break-word;'. - _add ' white-space: pre-wrap;'. - _add ' background-color: #eaeaea;'. - _add ' padding: 3px;'. - _add ' width: 50em;'. - _add '}'. _add 'table.db_tab tr.firstrow td { padding-top: 0.5em; }'. _add 'table.db_tab th {'. _add ' text-align: left;'. _add ' color: #888;'. - _add ' padding: 0.2em;'. + _add ' padding: 0.5em;'. _add ' border-bottom: 1px #ddd solid;'. _add '}'. _add 'table.db_tab td {'. _add ' color: #333;'. - _add ' padding: 0.2em;'. + _add ' padding: 0.5em;'. _add ' vertical-align: top;'. _add '}'. + _add 'table.db_tab td.data {'. + _add ' color: #888;'. + _add ' font-style: italic;'. + _add '}'. ENDMETHOD. "styles
TypeValueKeyData
{ -type }{ -value }
{ lv_escaped }
{ lv_escaped }' ). - ro_html->add( lo_toolbar->render( iv_vertical = abap_true ) ). + ro_html->add( lo_toolbar->render( iv_vertical = abap_false ) ). ro_html->add( '