visualization (#122)

* refactoring

* refactoring

* Update README.md

* Update README.md

* visualization
This commit is contained in:
oblomov 2023-03-24 10:07:17 +01:00
parent 5100da1863
commit fe09a02452
10 changed files with 222 additions and 259 deletions

View File

@ -23,8 +23,9 @@ Development of UI5 Apps in pure ABAP. Follow this project on [twitter](https://t
* Featured in the SAP Developer News [(youtube - 26.01.2023)](https://www.youtube.com/watch?v=6BDK55xYttM) * Featured in the SAP Developer News [(youtube - 26.01.2023)](https://www.youtube.com/watch?v=6BDK55xYttM)
* Development of UI5 Selection-Screens in pure ABAP (former version) [(Blog SCN - 22.01.2023)](https://blogs.sap.com/2023/01/22/abap2ui5-project-development-of-ui5-selection-screens-in-pure-abap-no-app-deployment-or-javascript-needed/) * Development of UI5 Selection-Screens in pure ABAP (former version) [(Blog SCN - 22.01.2023)](https://blogs.sap.com/2023/01/22/abap2ui5-project-development-of-ui5-selection-screens-in-pure-abap-no-app-deployment-or-javascript-needed/)
### Demo Application [(Source Code)](https://github.com/oblomov-dev/ABAP2UI5/blob/main/src/00/z2ui5_cl_app_demo_01.clas.abap) ### Demo [(Example)](https://github.com/oblomov-dev/ABAP2UI5/blob/main/src/00/z2ui5_cl_app_demo_01.clas.abap)
![tweet1](https://user-images.githubusercontent.com/102328295/220315102-2e1e6545-ac32-4ea3-9d10-7286998304e7.gif) ![gif_git](https://user-images.githubusercontent.com/102328295/227471575-617dad73-5c3a-4ed2-be31-fe537ca0c080.gif)
## Installation ## Installation
Works with all available ABAP stacks and language versions: Works with all available ABAP stacks and language versions:

View File

@ -133,22 +133,21 @@ CLASS Z2UI5_CL_APP_DEMO_00 IMPLEMENTATION.
growfactor = '3' growfactor = '3'
styleclass = 'sapUiTinyMargin' ). styleclass = 'sapUiTinyMargin' ).
form->flex_box( class = 'columns'
* form->flex_box( class = 'columns' )->button(
* )->button( text = 'Visualization'
* text = 'Visualization' press = client->_event( 'z2ui5_cl_app_demo_16' ) )->get(
* press = client->_event( 'z2ui5_cl_app_demo_16' ) )->get( )->layout_data(
* )->layout_data( )->flex_item_data(
* )->flex_item_data( growfactor = '1'
* growfactor = '1' styleclass = 'sapUiTinyMargin'
* styleclass = 'sapUiTinyMargin' )->get_parent( )->get_parent(
* )->get_parent( )->get_parent( )->text( `Use the sap.suite.ui.microchart controls to visualize data - `
* )->text( `Use the sap.suite.ui.microchart controls to visualize data - ` && 'choose between bar charts, donut charts, line charts or radial charts and make your data beautiful' )->get(
* && 'choose between bar charts, donut charts, line charts or radial charts and make your boring data beautiful' )->get( )->layout_data(
* )->layout_data( )->flex_item_data(
* )->flex_item_data( growfactor = '3'
* growfactor = '3' styleclass = 'sapUiTinyMargin' ).
* styleclass = 'sapUiTinyMargin' ).
ENDCASE. ENDCASE.
ENDMETHOD. ENDMETHOD.

View File

@ -23,7 +23,7 @@ ENDCLASS.
CLASS Z2UI5_CL_APP_DEMO_03 IMPLEMENTATION. CLASS z2ui5_cl_app_demo_03 IMPLEMENTATION.
METHOD z2ui5_if_app~controller. METHOD z2ui5_if_app~controller.
@ -36,12 +36,12 @@ CLASS Z2UI5_CL_APP_DEMO_03 IMPLEMENTATION.
check_initialized = abap_true. check_initialized = abap_true.
t_tab = VALUE #( t_tab = VALUE #(
( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) ( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' )
( title = 'Peter' info = 'incompleted' descr = 'this is a description' icon = 'sap-icon://account' ) ( title = 'Peter' info = 'incompleted' descr = 'this is a description' icon = 'sap-icon://account' )
( title = 'Peter' info = 'working' descr = 'this is a description' icon = 'sap-icon://account' ) ( title = 'Peter' info = 'working' descr = 'this is a description' icon = 'sap-icon://account' )
( title = 'Peter' info = 'working' descr = 'this is a description' icon = 'sap-icon://account' ) ( title = 'Peter' info = 'working' descr = 'this is a description' icon = 'sap-icon://account' )
( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) ( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' )
( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) ( title = 'Peter' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' )
). ).
RETURN. RETURN.
@ -67,7 +67,7 @@ CLASS Z2UI5_CL_APP_DEMO_03 IMPLEMENTATION.
page->list( page->list(
headertext = 'List Ouput' headertext = 'List Ouput'
items = client->_bind_one_way( t_tab ) items = client->_bind_one_way( t_tab )
)->standard_list_item( )->standard_list_item(
title = '{TITLE}' title = '{TITLE}'
description = '{DESCR}' description = '{DESCR}'

View File

@ -30,7 +30,6 @@ CLASS Z2UI5_CL_APP_DEMO_06 IMPLEMENTATION.
CASE client->get( )-lifecycle_method. CASE client->get( )-lifecycle_method.
WHEN client->cs-lifecycle_method-on_event. WHEN client->cs-lifecycle_method-on_event.
IF check_initialized = abap_false. IF check_initialized = abap_false.
@ -44,7 +43,6 @@ CLASS Z2UI5_CL_APP_DEMO_06 IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
CASE client->get( )-event. CASE client->get( )-event.
WHEN 'BUTTON_SORT'. WHEN 'BUTTON_SORT'.
@ -58,7 +56,6 @@ CLASS Z2UI5_CL_APP_DEMO_06 IMPLEMENTATION.
ENDCASE. ENDCASE.
WHEN client->cs-lifecycle_method-on_rendering. WHEN client->cs-lifecycle_method-on_rendering.
DATA(page) = client->factory_view( DATA(page) = client->factory_view(

View File

@ -15,6 +15,16 @@ CLASS z2ui5_cl_app_demo_16 DEFINITION PUBLIC.
DATA mv_sel2 TYPE abap_bool. DATA mv_sel2 TYPE abap_bool.
DATA mv_sel3 TYPE abap_bool. DATA mv_sel3 TYPE abap_bool.
DATA mv_sel4 TYPE abap_bool.
DATA mv_sel5 TYPE abap_bool.
DATA mv_sel6 TYPE abap_bool.
DATA mv_sel7 TYPE abap_bool.
DATA mv_sel8 TYPE abap_bool.
DATA mv_sel9 TYPE abap_bool.
DATA mv_sel10 TYPE abap_bool.
DATA mv_sel11 TYPE abap_bool.
DATA mv_sel12 TYPE abap_bool.
DATA mv_tab_bar_active TYPE abap_bool. DATA mv_tab_bar_active TYPE abap_bool.
DATA mv_tab_donut_active TYPE abap_bool. DATA mv_tab_donut_active TYPE abap_bool.
DATA mv_tab_line_active TYPE abap_bool. DATA mv_tab_line_active TYPE abap_bool.
@ -47,6 +57,58 @@ ENDCLASS.
CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION. CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
METHOD z2ui5_if_app~controller.
CASE client->get( )-lifecycle_method.
WHEN client->cs-lifecycle_method-on_event.
IF check_initialized = abap_false.
check_initialized = abap_true.
mv_path = '../../demo/text'.
mv_type = 'plain_text'.
mv_sel1 = abap_true.
RETURN.
ENDIF.
CASE client->get( )-event.
WHEN 'DONUT_CHANGED'.
client->popup_message_toast( 'Donut selection changed' ).
WHEN 'BAR_CHANGED'.
client->popup_message_toast( 'Bar selection changed' ).
WHEN 'LINE_CHANGED'.
client->popup_message_toast( 'Line selection changed' ).
WHEN 'DONUT_CHANGED'.
client->popup_message_toast( 'Donut selection changed' ).
WHEN 'BACK'.
client->nav_app_leave( client->get( )-id_prev_app_stack ).
ENDCASE.
WHEN client->cs-lifecycle_method-on_rendering.
DATA(view) = client->factory_view( 'VIEW_INPUT' ).
DATA(page) = view->page( title = 'abap2UI5 - Visualization' navbuttonpress = client->_event( 'BACK' ) ).
page->header_content(
")->link( text = 'Demo' href = `https://twitter.com/OblomovDev/status/1634206964291911682`
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code ).
DATA(container) = page->tab_container( ).
render_tab_donut( client = client container = container ).
render_tab_bar( client = client container = container ).
render_tab_line( client = client container = container ).
render_tab_radial( client = client container = container ).
ENDCASE.
ENDMETHOD.
METHOD render_tab_bar. METHOD render_tab_bar.
@ -71,7 +133,7 @@ CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
class = 'sapUiSmallMargin' class = 'sapUiSmallMargin'
)->items( )->interact_bar_chart( )->items( )->interact_bar_chart(
selectionchanged = client->_event( 'BAR_CHANGED' ) selectionchanged = client->_event( 'BAR_CHANGED' )
press = client->_event( 'BAR_PRESS' ) press = client->_event( 'BAR_CHANGED' )
)->bars( ). )->bars( ).
bar->interact_bar_chart_bar( selected = client->_bind( mv_sel1 ) label = 'Product 1' value = '10' ). bar->interact_bar_chart_bar( selected = client->_bind( mv_sel1 ) label = 'Product 1' value = '10' ).
bar->interact_bar_chart_bar( selected = client->_bind( mv_sel2 ) label = 'Product 2' value = '20' ). bar->interact_bar_chart_bar( selected = client->_bind( mv_sel2 ) label = 'Product 2' value = '20' ).
@ -84,11 +146,10 @@ CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
class = 'sapUiSmallMargin' class = 'sapUiSmallMargin'
)->items( )->interact_bar_chart( )->items( )->interact_bar_chart(
selectionchanged = client->_event( 'BAR_CHANGED' ) selectionchanged = client->_event( 'BAR_CHANGED' )
press = client->_event( 'BAR_PRESS' )
)->bars( ). )->bars( ).
bar->interact_bar_chart_bar( selected = client->_bind( mv_sel1 ) label = 'Product 1' value = '10' displayedvalue = '10%' ). bar->interact_bar_chart_bar( label = 'Product 1' value = '10' displayedvalue = '10%' ).
bar->interact_bar_chart_bar( selected = client->_bind( mv_sel2 ) label = 'Product 2' value = '20' displayedvalue = '20%' ). bar->interact_bar_chart_bar( label = 'Product 2' value = '20' displayedvalue = '20%' ).
bar->interact_bar_chart_bar( selected = client->_bind( mv_sel3 ) label = 'Product 3' value = '70' displayedvalue = '70%' ). bar->interact_bar_chart_bar( label = 'Product 3' value = '70' displayedvalue = '70%' ).
bar = grid->vertical_layout( bar = grid->vertical_layout(
)->layout_data( 'l' )->layout_data( 'l'
@ -139,9 +200,9 @@ CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
)->interact_donut_chart( )->interact_donut_chart(
selectionchanged = client->_event( 'DONUT_CHANGED' ) selectionchanged = client->_event( 'DONUT_CHANGED' )
)->segments( ). )->segments( ).
seg->interact_donut_chart_segment( selected = client->_bind( mv_sel1 ) label = 'Impl. Phase' value = '40.0' displayedvalue = '40.0%' ). seg->interact_donut_chart_segment( selected = client->_bind( mv_sel4 ) label = 'Impl. Phase' value = '40.0' displayedvalue = '40.0%' ).
seg->interact_donut_chart_segment( selected = client->_bind( mv_sel2 ) label = 'Design Phase' value = '21.5' displayedvalue = '21.5%' ). seg->interact_donut_chart_segment( selected = client->_bind( mv_sel5 ) label = 'Design Phase' value = '21.5' displayedvalue = '21.5%' ).
seg->interact_donut_chart_segment( selected = client->_bind( mv_sel3 ) label = 'Test Phase' value = '38.5' displayedvalue = '38.5%' ). seg->interact_donut_chart_segment( selected = client->_bind( mv_sel6 ) label = 'Test Phase' value = '38.5' displayedvalue = '38.5%' ).
grid->text( grid->text(
text = 'Four segments' text = 'Four segments'
@ -185,8 +246,6 @@ CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
seg->interact_donut_chart_segment( label = 'Design Phase' value = '21.5' displayedvalue = '21.5%' ). seg->interact_donut_chart_segment( label = 'Design Phase' value = '21.5' displayedvalue = '21.5%' ).
seg->interact_donut_chart_segment( label = 'Test Phase' value = '38.5' displayedvalue = '38.5%' ). seg->interact_donut_chart_segment( label = 'Test Phase' value = '38.5' displayedvalue = '38.5%' ).
ENDMETHOD. ENDMETHOD.
@ -216,12 +275,12 @@ CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
precedingpoint = '15' precedingpoint = '15'
succeddingpoint = '89' succeddingpoint = '89'
)->points( ). )->points( ).
point->interact_line_chart_point( label = 'May' value = '33.1' secondarylabel = 'Q2' ). point->interact_line_chart_point( selected = client->_bind( mv_sel7 ) label = 'May' value = '33.1' secondarylabel = 'Q2' ).
point->interact_line_chart_point( label = 'June' value = '12' ). point->interact_line_chart_point( selected = client->_bind( mv_sel8 ) label = 'June' value = '12' ).
point->interact_line_chart_point( label = 'July' value = '51.4' secondarylabel = 'Q3' ). point->interact_line_chart_point( selected = client->_bind( mv_sel9 ) label = 'July' value = '51.4' secondarylabel = 'Q3' ).
point->interact_line_chart_point( label = 'Aug' value = '52' ). point->interact_line_chart_point( selected = client->_bind( mv_sel10 ) label = 'Aug' value = '52' ).
point->interact_line_chart_point( label = 'Sep' value = '69.9'). point->interact_line_chart_point( selected = client->_bind( mv_sel11 ) label = 'Sep' value = '69.9').
point->interact_line_chart_point( label = 'Oct' value = '0.9' secondarylabel = 'Q4' ). point->interact_line_chart_point( selected = client->_bind( mv_sel12 ) label = 'Oct' value = '0.9' secondarylabel = 'Q4' ).
point = grid->flex_box( point = grid->flex_box(
width = '22rem' width = '22rem'
@ -324,72 +383,8 @@ CLASS z2ui5_cl_app_demo_16 IMPLEMENTATION.
sice = 'S' sice = 'S'
percentage = '0.1' percentage = '0.1'
press = client->_event( 'RADIAL_PRESS' ) press = client->_event( 'RADIAL_PRESS' )
valueColor = 'Critical' valueColor = 'Critical' ).
).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_app~controller.
CASE client->get( )-lifecycle_method.
WHEN client->cs-lifecycle_method-on_event.
IF check_initialized = abap_false.
check_initialized = abap_true.
mv_path = '../../demo/text'.
mv_type = 'plain_text'.
mv_sel1 = abap_true.
RETURN.
ENDIF.
CASE client->get( )-event.
WHEN 'DONUT_CHANGED'.
mv_type = 'plain_text'.
WHEN 'DB_LOAD'.
mv_editor = COND #(
WHEN mv_path CS 'abap' THEN lcl_mime_api=>read_abap( )
WHEN mv_path CS 'json' THEN lcl_mime_api=>read_json( )
WHEN mv_path CS 'yaml' THEN lcl_mime_api=>read_yaml( )
WHEN mv_path CS 'text' THEN lcl_mime_api=>read_text( ) ).
client->popup_message_toast( 'Download successfull' ).
WHEN 'DB_SAVE'.
lcl_mime_api=>save_data( mv_editor ).
client->popup_message_box( text = 'Upload successfull. File saved!' type = 'success' ).
WHEN 'EDIT'.
mv_check_editable = xsdbool( mv_check_editable = abap_false ).
WHEN 'CLEAR'.
mv_editor = ``.
WHEN 'BACK'.
client->nav_app_leave( client->get( )-id_prev_app_stack ).
ENDCASE.
WHEN client->cs-lifecycle_method-on_rendering.
DATA(view) = client->factory_view( 'VIEW_INPUT' ).
DATA(page) = view->page( title = 'abap2UI5 - Visualization with Charts' navbuttonpress = client->_event( 'BACK' ) ).
page->header_content(
")->link( text = 'Demo' href = `https://twitter.com/OblomovDev/status/1634206964291911682`
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code
).
DATA(container) = page->tab_container( ).
render_tab_donut( client = client container = container ).
render_tab_bar( client = client container = container ).
render_tab_line( client = client container = container ).
render_tab_radial( client = client container = container ).
ENDCASE.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -5,7 +5,7 @@
<VSEOCLASS> <VSEOCLASS>
<CLSNAME>Z2UI5_CL_APP_DEMO_20</CLSNAME> <CLSNAME>Z2UI5_CL_APP_DEMO_20</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>POPUP - decide</DESCRIPT> <DESCRIPT>popup - decide</DESCRIPT>
<STATE>1</STATE> <STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>

View File

@ -5,7 +5,7 @@
<VSEOCLASS> <VSEOCLASS>
<CLSNAME>Z2UI5_CL_APP_DEMO_24</CLSNAME> <CLSNAME>Z2UI5_CL_APP_DEMO_24</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>basic - flow logic new app</DESCRIPT> <DESCRIPT>basic - flow logic</DESCRIPT>
<STATE>1</STATE> <STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>

View File

@ -24,13 +24,12 @@ ENDCLASS.
CLASS Z2UI5_CL_APP_DEMO_25 IMPLEMENTATION. CLASS z2ui5_cl_app_demo_25 IMPLEMENTATION.
METHOD factory. METHOD factory.
r_result = NEW #( ). r_result = NEW #( ).
r_result->mo_app = i_app. r_result->mo_app = i_app.
r_result->mv_name_attri = i_name_attri. r_result->mv_name_attri = i_name_attri.
@ -76,38 +75,47 @@ CLASS Z2UI5_CL_APP_DEMO_25 IMPLEMENTATION.
WHEN client->cs-lifecycle_method-on_rendering. WHEN client->cs-lifecycle_method-on_rendering.
DATA(view) = client->factory_view( 'MAIN' ). DATA(page) = client->factory_view( 'MAIN'
view->page( title = 'abap2UI5 - flow logic 2' navbuttonpress = client->_event( 'BACK' ) )->page(
)->header_content( )->link( text = 'Go to Source Code' href = client->get( )-s_request-url_source_code )->get_parent( title = 'abap2UI5 - flow logic 2'
navbuttonpress = client->_event( 'BACK' )
)->header_content(
)->link(
text = 'Go to Source Code'
href = client->get( )-s_request-url_source_code
)->get_parent( ).
)->grid( 'L6 M12 S12' )->content( 'l' page->grid( 'L6 M12 S12' )->content( 'l'
)->simple_form( 'MAIN View' )->content( 'f' )->simple_form( 'MAIN View' )->content( 'f'
)->label( 'Input set by previous app' )->label( 'Input set by previous app'
)->input( mv_input_previous_set )->input( mv_input_previous_set
)->label( 'Data of previous app' )->label( 'Data of previous app'
)->input( mv_input_previous )->input( mv_input_previous
)->button( text = 'read' press = client->_event( 'BUTTON_READ_PREVIOUS' ) )->button( text = 'read' press = client->_event( 'BUTTON_READ_PREVIOUS' )
)->label( 'Call previous app and show data of this app' )->label( 'Call previous app and show data of this app'
)->input( client->_bind( mv_input ) )->input( client->_bind( mv_input )
)->button( text = 'back' press = client->_event( 'BACK_WITH_EVENT' ) )->button( text = 'back' press = client->_event( 'BACK_WITH_EVENT' ) ).
).
view = client->factory_view( 'SECOND' ). page = client->factory_view( 'SECOND'
view->page( title = 'abap2UI5 - flow logic 2' navbuttonpress = client->_event( 'BACK' ) )->page(
)->header_content( )->link( text = 'Go to Source Code' href = client->get( )-s_request-url_source_code )->get_parent( title = 'abap2UI5 - flow logic 2'
navbuttonpress = client->_event( 'BACK' )
)->header_content(
)->link(
text = 'Source_Code'
href = client->get( )-s_request-url_source_code
)->get_parent( ).
)->grid( 'L6 M12 S12' )->content( 'l' page->grid( 'L6 M12 S12' )->content( 'l'
)->simple_form( 'second view set by previous app' )->content( 'f'
)->simple_form( 'second view set by previous app' )->content( 'f' )->label( 'Demo'
)->label( 'Demo' )->button( text = 'leave to previous app' press = client->_event( 'BACK' )
)->button( text = 'leave to previous app' press = client->_event( 'BACK' ) )->label( 'Demo'
)->label( 'Demo' )->button( text = 'show view main' press = client->_event( 'SHOW_VIEW_MAIN' ) ).
)->button( text = 'show view main' press = client->_event( 'SHOW_VIEW_MAIN' )
).
ENDCASE. ENDCASE.

View File

@ -5,7 +5,7 @@
<VSEOCLASS> <VSEOCLASS>
<CLSNAME>Z2UI5_CL_APP_DEMO_25</CLSNAME> <CLSNAME>Z2UI5_CL_APP_DEMO_25</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>basic - flow logic new app (called)</DESCRIPT> <DESCRIPT>basic - flow logic (called)</DESCRIPT>
<STATE>1</STATE> <STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>

View File

@ -835,27 +835,14 @@ CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
METHOD wrap_json. METHOD wrap_json.
" Wrap the input text string with the opening and closing characters
" and assign the result to result
result = iv_text.
CASE mv_check_list. result = SWITCH #( mv_check_list WHEN abap_true THEN |[ { iv_text }]| ELSE `{` && iv_text && `}` ).
WHEN abap_true.
DATA(open_char) = `[`.
DATA(close_char) = `]`.
WHEN abap_false.
open_char = `{`.
close_char = `}`.
WHEN OTHERS.
RETURN.
ENDCASE.
result = open_char && result && close_char.
ENDMETHOD. ENDMETHOD.
METHOD quote_json. METHOD quote_json.
result = COND #( WHEN iv_cond = abap_true THEN `"` && iv_text && `"` ELSE iv_text ). result = SWITCH #( iv_cond WHEN abap_true THEN `"` && iv_text && `"` ELSE iv_text ).
ENDMETHOD. ENDMETHOD.
@ -873,11 +860,8 @@ CLASS z2ui5_lcl_utility_tree_json IMPLEMENTATION.
IF lo_attri->mt_values IS NOT INITIAL. IF lo_attri->mt_values IS NOT INITIAL.
result = result && lo_attri->write_result( ). result = result && lo_attri->write_result( ).
ELSE. ELSE.
result = result && result = result &&
quote_json( iv_cond = xsdbool( lo_attri->mv_apost_active = abap_true OR lo_attri->mv_value IS INITIAL ) quote_json( iv_cond = xsdbool( lo_attri->mv_apost_active = abap_true OR lo_attri->mv_value IS INITIAL )
iv_text = lo_attri->mv_value ). iv_text = lo_attri->mv_value ).
@ -1951,33 +1935,30 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~ui_column. METHOD z2ui5_if_view~ui_column.
result = _generic( result = _generic(
name = `Column` name = `Column`
ns = `ui` ns = `ui`
t_prop = VALUE #( t_prop = VALUE #(
( n = `width` v = width ) ( n = `width` v = width )
) ). ) ).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~ui_columns. METHOD z2ui5_if_view~ui_columns.
result = _generic( result = _generic(
name = `columns` name = `columns`
ns = `ui` ns = `ui` ).
).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~ui_extension. METHOD z2ui5_if_view~ui_extension.
result = _generic( result = _generic(
name = `extension` name = `extension`
ns = `ui` ns = `ui` ).
).
ENDMETHOD. ENDMETHOD.
@ -2096,35 +2077,32 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
METHOD z2ui5_if_view~tab_container. METHOD z2ui5_if_view~tab_container.
result = _generic( result = _generic(
name = `TabContainer` name = `TabContainer`
ns = `webc` ns = `webc` ).
).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~bars. METHOD z2ui5_if_view~bars.
result = _generic( result = _generic(
name = `bars` name = `bars`
ns = `mchart` ns = `mchart` ).
t_prop = VALUE #(
) ).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~interact_bar_chart. METHOD z2ui5_if_view~interact_bar_chart.
result = _generic( result = _generic(
name = `InteractiveBarChart` name = `InteractiveBarChart`
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `selectionChanged` v = selectionchanged ) ( n = `selectionChanged` v = selectionchanged )
( n = `showError` v = showerror ) ( n = `showError` v = showerror )
( n = `press` v = press ) ( n = `press` v = press )
( n = `labelWidth` v = labelwidth ) ( n = `labelWidth` v = labelwidth )
( n = `errorMessageTitle` v = errormessagetitle ) ( n = `errorMessageTitle` v = errormessagetitle )
( n = `errorMessage` v = errormessage ) ( n = `errorMessage` v = errormessage )
) ). ) ).
ENDMETHOD. ENDMETHOD.
@ -2134,11 +2112,11 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
name = `InteractiveBarChartBar` name = `InteractiveBarChartBar`
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `label` v = label ) ( n = `label` v = label )
( n = `displayedValue` v = displayedvalue ) ( n = `displayedValue` v = displayedvalue )
( n = `value` v = value ) ( n = `value` v = value )
( n = `selected` v = selected ) ( n = `selected` v = selected )
) ). ) ).
ENDMETHOD. ENDMETHOD.
@ -2146,15 +2124,15 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
result = _generic( result = _generic(
name = `InteractiveDonutChart` name = `InteractiveDonutChart`
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `selectionChanged` v = selectionchanged ) ( n = `selectionChanged` v = selectionchanged )
( n = `showError` v = _=>get_json_boolean( showerror ) ) ( n = `showError` v = _=>get_json_boolean( showerror ) )
( n = `errorMessageTitle` v = errormessagetitle ) ( n = `errorMessageTitle` v = errormessagetitle )
( n = `errorMessage` v = errormessage ) ( n = `errorMessage` v = errormessage )
( n = `displayedSegments` v = displayedsegments ) ( n = `displayedSegments` v = displayedsegments )
( n = `press` v = press ) ( n = `press` v = press )
) ). ) ).
ENDMETHOD. ENDMETHOD.
@ -2162,13 +2140,13 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
result = _generic( result = _generic(
name = `InteractiveDonutChartSegment` name = `InteractiveDonutChartSegment`
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `label` v = label ) ( n = `label` v = label )
( n = `displayedValue` v = displayedvalue ) ( n = `displayedValue` v = displayedvalue )
( n = `value` v = value ) ( n = `value` v = value )
( n = `selected` v = selected ) ( n = `selected` v = selected )
) ). ) ).
ENDMETHOD. ENDMETHOD.
@ -2179,28 +2157,28 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `selectionChanged` v = selectionchanged ) ( n = `selectionChanged` v = selectionchanged )
( n = `showError` v = _=>get_json_boolean( showerror ) ) ( n = `showError` v = _=>get_json_boolean( showerror ) )
( n = `press` v = press ) ( n = `press` v = press )
( n = `errorMessageTitle` v = errormessagetitle ) ( n = `errorMessageTitle` v = errormessagetitle )
( n = `errorMessage` v = errormessage ) ( n = `errorMessage` v = errormessage )
( n = `precedingPoint` v = precedingpoint ) ( n = `precedingPoint` v = precedingpoint )
( n = `succeedingPoint` v = succeddingpoint ) ( n = `succeedingPoint` v = succeddingpoint )
) ). ) ).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~interact_line_chart_point. METHOD z2ui5_if_view~interact_line_chart_point.
result = _generic( result = _generic(
name = `InteractiveLineChartPoint` name = `InteractiveLineChartPoint`
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `label` v = label ) ( n = `label` v = label )
( n = `secondaryLabel` v = secondarylabel ) ( n = `secondaryLabel` v = secondarylabel )
( n = `value` v = value ) ( n = `value` v = value )
( n = `displayedValue` v = displayedvalue ) ( n = `displayedValue` v = displayedvalue )
( n = `selected` v = _=>get_json_boolean( selected ) ) ( n = `selected` v = _=>get_json_boolean( selected ) )
) ). ) ).
ENDMETHOD. ENDMETHOD.
@ -2208,9 +2186,7 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
result = _generic( result = _generic(
name = `points` name = `points`
ns = `mchart` ns = `mchart` ).
t_prop = VALUE #(
) ).
ENDMETHOD. ENDMETHOD.
@ -2218,24 +2194,22 @@ CLASS z2ui5_lcl_if_view IMPLEMENTATION.
result = me. result = me.
_generic( _generic(
name = `RadialMicroChart` name = `RadialMicroChart`
ns = `mchart` ns = `mchart`
t_prop = VALUE #( t_prop = VALUE #(
( n = `percentage` v = percentage ) ( n = `percentage` v = percentage )
( n = `press` v = press ) ( n = `press` v = press )
( n = `sice` v = sice ) ( n = `sice` v = sice )
( n = `valueColor` v = valuecolor ) ( n = `valueColor` v = valuecolor )
) ). ) ).
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_view~segments. METHOD z2ui5_if_view~segments.
result = _generic( result = _generic(
name = `segments` name = `segments`
ns = `mchart` ns = `mchart` ).
t_prop = VALUE #(
) ).
ENDMETHOD. ENDMETHOD.
@ -2426,7 +2400,6 @@ CLASS z2ui5_lcl_system_app IMPLEMENTATION.
view = client->factory_view( `HOME` ). view = client->factory_view( `HOME` ).
DATA(page) = view->page( DATA(page) = view->page(
class = `sapUiContentPadding sapUiResponsivePadding--subHeader sapUiResponsivePadding--content sapUiResponsivePadding--footer` class = `sapUiContentPadding sapUiResponsivePadding--subHeader sapUiResponsivePadding--content sapUiResponsivePadding--footer`
" title = `abap2UI5 - Development of UI5 Apps in pure ABAP`
). ).
page->header_content( page->header_content(
)->title( `` )->title( ``
@ -2490,14 +2463,11 @@ CLASS z2ui5_lcl_db IMPLEMENTATION.
METHOD create. METHOD create.
DATA ls_db TYPE z2ui5_t_draft. DATA(ls_db) = VALUE z2ui5_t_draft(
uuid = id
ls_db = VALUE #( uname = _=>get_user_tech( )
uuid = id timestampl = _=>get_timestampl( )
uname = _=>get_user_tech( ) data = _=>trans_object_2_xml( REF #( db ) ) ).
timestampl = _=>get_timestampl( )
" response = response
data = _=>trans_object_2_xml( REF #( db ) ) ).
MODIFY z2ui5_t_draft FROM @ls_db. MODIFY z2ui5_t_draft FROM @ls_db.
_=>raise( when = xsdbool( sy-subrc <> 0 ) ). _=>raise( when = xsdbool( sy-subrc <> 0 ) ).
@ -2594,10 +2564,11 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
DATA(lo_ui5_model) = z2ui5_lcl_utility_tree_json=>factory( ). DATA(lo_ui5_model) = z2ui5_lcl_utility_tree_json=>factory( ).
IF lr_view IS BOUND. IF lr_view IS BOUND.
DATA(ls_view) = lr_view->o_parser->get_view( ).
lo_ui5_model->add_attribute( n = `vView` v = ls_view-xml ).
ms_db-view_active = lr_view->name. ms_db-view_active = lr_view->name.
DATA(ls_view) = lr_view->o_parser->get_view( ).
ls_view-o_model->mv_name = `oViewModel`. ls_view-o_model->mv_name = `oViewModel`.
lo_ui5_model->add_attribute( n = `vView` v = ls_view-xml ).
lo_ui5_model->add_attribute_instance( ls_view-o_model ). lo_ui5_model->add_attribute_instance( ls_view-o_model ).
ENDIF. ENDIF.
@ -2609,22 +2580,19 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
ENDTRY. ENDTRY.
DATA(ls_view_popup) = lr_view_popup->o_parser->get_view( abap_true ). DATA(ls_view_popup) = lr_view_popup->o_parser->get_view( abap_true ).
lo_ui5_model->add_attribute( n = `vViewPopup` v = ls_view_popup-xml ).
ls_view_popup-o_model->mv_name = `oViewModelPopup`. ls_view_popup-o_model->mv_name = `oViewModelPopup`.
lo_ui5_model->add_attribute( n = `vViewPopup` v = ls_view_popup-xml ).
lo_ui5_model->add_attribute_instance( ls_view_popup-o_model ). lo_ui5_model->add_attribute_instance( ls_view_popup-o_model ).
ENDIF. ENDIF.
lo_ui5_model->add_attribute_object( `oSystem`
DATA(lo_system) = lo_ui5_model->add_attribute_object( `oSystem` ). )->add_attribute( n = `ID` v = ms_db-id
lo_system->add_attribute( n = `ID` v = ms_db-id ). )->add_attribute( n = `CHECK_DEBUG_ACTIVE` v = _=>get_abap_2_json( z2ui5_cl_http_handler=>cs_config-check_debug_mode ) apos_active = abap_false ).
lo_system->add_attribute( n = `CHECK_DEBUG_ACTIVE` v = _=>get_abap_2_json( z2ui5_cl_http_handler=>cs_config-check_debug_mode ) apos_active = abap_false ).
IF ms_next-t_after IS NOT INITIAL. IF ms_next-t_after IS NOT INITIAL.
DATA(lo_list) = lo_ui5_model->add_attribute_list( `oAfter` ). DATA(lo_list) = lo_ui5_model->add_attribute_list( `oAfter` ).
LOOP AT ms_next-t_after REFERENCE INTO DATA(lr_after). LOOP AT ms_next-t_after REFERENCE INTO DATA(lr_after).
DATA(lo_list2) = lo_list->add_list_list( ). DATA(lo_list2) = lo_list->add_list_list( ).
LOOP AT lr_after->* REFERENCE INTO DATA(lr_con). LOOP AT lr_after->* REFERENCE INTO DATA(lr_con).
lo_list2->add_list_val( lr_con->* ). lo_list2->add_list_val( lr_con->* ).
ENDLOOP. ENDLOOP.
@ -2637,11 +2605,11 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
ENDLOOP. ENDLOOP.
IF ms_next-s_cursor_pos IS NOT INITIAL. IF ms_next-s_cursor_pos IS NOT INITIAL.
lo_list = lo_ui5_model->add_attribute_object( `oCursor` ). lo_ui5_model->add_attribute_object( `oCursor`
lo_list->add_attribute( n = `cursorPos` v = ms_next-s_cursor_pos-cursorpos apos_active = abap_false ). )->add_attribute( n = `cursorPos` v = ms_next-s_cursor_pos-cursorpos apos_active = abap_false
lo_list->add_attribute( n = `id` v = ms_next-s_cursor_pos-id ). )->add_attribute( n = `id` v = ms_next-s_cursor_pos-id
lo_list->add_attribute( n = `selectionEnd` v = ms_next-s_cursor_pos-selectionend apos_active = abap_false ). )->add_attribute( n = `selectionEnd` v = ms_next-s_cursor_pos-selectionend apos_active = abap_false
lo_list->add_attribute( n = `selectionStart` v = ms_next-s_cursor_pos-selectionstart apos_active = abap_false ). )->add_attribute( n = `selectionStart` v = ms_next-s_cursor_pos-selectionstart apos_active = abap_false ).
ENDIF. ENDIF.
IF ms_next-check_set_prev_view = abap_true. IF ms_next-check_set_prev_view = abap_true.
@ -2649,9 +2617,7 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
ENDIF. ENDIF.
result = lo_ui5_model->get_root( )->write_result( ). result = lo_ui5_model->get_root( )->write_result( ).
z2ui5_lcl_db=>create( z2ui5_lcl_db=>create( id = ms_db-id db = ms_db ).
id = ms_db-id
db = ms_db ).
ENDMETHOD. ENDMETHOD.
@ -2695,7 +2661,6 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
ENDCASE. ENDCASE.
ENDLOOP. ENDLOOP.
TRY. TRY.
result->ms_next-event = ss_client-o_body->get_attribute( `OEVENT` )->get_attribute( `EVENT` )->get_val( ). result->ms_next-event = ss_client-o_body->get_attribute( `OEVENT` )->get_attribute( `EVENT` )->get_val( ).
CATCH cx_root. CATCH cx_root.
@ -2772,7 +2737,6 @@ CLASS z2ui5_lcl_system_runtime IMPLEMENTATION.
result->ms_db-id_prev_app = ms_db-id. result->ms_db-id_prev_app = ms_db-id.
result->ms_db-id_prev_app_stack = ms_db-id. result->ms_db-id_prev_app_stack = ms_db-id.
" result->ms_next-lifecycle_method = z2ui5_if_client=>cs-lifecycle_method-on_init.
result->ms_next-lifecycle_method = z2ui5_if_client=>cs-lifecycle_method-on_event. result->ms_next-lifecycle_method = z2ui5_if_client=>cs-lifecycle_method-on_event.
result->ms_next-t_after = ms_next-t_after. result->ms_next-t_after = ms_next-t_after.
result->ms_next-view = ms_next-view. result->ms_next-view = ms_next-view.
@ -2898,7 +2862,6 @@ CLASS z2ui5_lcl_if_client IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD z2ui5_if_client~popup_message_toast. METHOD z2ui5_if_client~popup_message_toast.
INSERT VALUE #( ( `MessageToast` ) ( `show` ) ( text ) ) INSERT VALUE #( ( `MessageToast` ) ( `show` ) ( text ) )