config and timer (#165)

* cl_gui_timer

* configs index_html
This commit is contained in:
oblomov 2023-04-11 18:11:45 +02:00
parent f5e742d918
commit 1eb3056de5
9 changed files with 276 additions and 106 deletions

View File

@ -57,8 +57,9 @@ CLASS z2ui5_cl_app_demo_00 IMPLEMENTATION.
).
grid->simple_form( title = 'HowTo - General II' layout = 'ResponsiveGridLayout' )->content( 'form'
)->button( text = 'Formatted Text' press = client->_event( 'Z2UI5_CL_APP_DEMO_15' )
)->button( text = 'Scrolling & Cursor' press = client->_event( 'z2ui5_cl_app_demo_22' )
)->button( text = 'Formatted Text' press = client->_event( 'Z2UI5_CL_APP_DEMO_15' )
)->button( text = 'Scrolling & Cursor' press = client->_event( 'z2ui5_cl_app_demo_22' )
)->button( text = 'Timer' press = client->_event( 'z2ui5_cl_app_demo_28' )
).
grid->simple_form( title = 'HowTo - Selection-Screen' layout = 'ResponsiveGridLayout' )->content( 'form'

View File

@ -104,6 +104,7 @@ CLASS Z2UI5_CL_APP_DEMO_26 IMPLEMENTATION.
navbuttonpress = client->_event( 'BACK' )
shownavbutton = abap_true
)->header_content(
)->link( text = 'Demo' target = '_blank' href = `https://twitter.com/OblomovDev/status/1643899059839672321`
)->link(
text = 'Source_Code' target = '_blank'
href = z2ui5_cl_xml_view_helper=>hlp_get_source_code_url( app = me get = client->get( ) )

View File

@ -5,7 +5,7 @@
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_APP_DEMO_26</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>open by</DESCRIPT>
<DESCRIPT>popups - popover</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>

View File

@ -4,8 +4,17 @@ CLASS z2ui5_cl_app_demo_28 DEFINITION PUBLIC.
INTERFACES z2ui5_if_app.
DATA mt_draft TYPE REF TO data.
DATA mv_test TYPE REF TO data.
TYPES:
BEGIN OF ty_row,
title TYPE string,
value TYPE string,
descr TYPE string,
icon TYPE string,
info TYPE string,
checkbox TYPE abap_bool,
END OF ty_row.
DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
DATA mv_Counter TYPE i.
PROTECTED SECTION.
@ -19,7 +28,6 @@ CLASS z2ui5_cl_app_demo_28 DEFINITION PUBLIC.
next TYPE z2ui5_if_client=>ty_s_next,
END OF app.
METHODS z2ui5_on_init.
METHODS z2ui5_on_event.
METHODS z2ui5_on_render.
@ -60,37 +68,14 @@ CLASS z2ui5_cl_app_demo_28 IMPLEMENTATION.
CASE app-get-event.
WHEN 'BUTTON_POST'.
* client->popup_message_toast( |{ product } { quantity } - send to the server| ).
app-view_popup = 'POPUP_CONFIRM'.
WHEN 'BUTTON_CONFIRM'.
client->popup_message_toast( |confirm| ).
app-view_popup = ''.
WHEN 'TIMER_FINISHED'.
mv_counter = mv_counter + 1.
INSERT VALUE #( title = 'entry' && mv_counter info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' )
INTO TABLE t_tab.
FIELD-SYMBOLS <mt_draft> TYPE STANDARD TABLE.
" OF z2ui5_t_draft.
ASSIGN mt_draft->* TO <mt_draft>.
SELECT FROM z2ui5_t_draft
FIELDS *
ORDER BY uuid
INTO TABLE @DATA(lt_data)
UP TO 2 ROWS
.
APPEND LINES OF lt_data TO <mt_draft>.
"!"mt_draft->* = CORRESPONDING #( lt_data ).
"!
app-next-s_timer-interval_ms = '2000'.
app-next-s_timer-event_finished = 'TIMER_FINISHED'.
WHEN 'BUTTON_CANCEL'.
client->popup_message_toast( |cancel| ).
app-view_popup = ''.
WHEN 'BACK'.
client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ).
@ -101,35 +86,10 @@ CLASS z2ui5_cl_app_demo_28 IMPLEMENTATION.
METHOD z2ui5_on_init.
* product = 'tomato'.
* quantity = '500'.
app-view_main = 'VIEW_MAIN'.
* input41 = 'faasdfdfsaVIp'.
*
* input21 = '40'.
* input22 = '40'.
mv_counter = 1.
CREATE DATA mv_test TYPE string.
FIELD-SYMBOLS <field> type string.
assign mv_test->* to <field>.
<field> = 'test'.
CREATE DATA mt_draft TYPE STANDARD TABLE OF z2ui5_t_draft.
SELECT FROM z2ui5_t_draft
FIELDS *
ORDER BY uuid
INTO TABLE @DATA(lt_data)
UP TO 10 ROWS
.
types ty_t_draft type STANDARD TABLE OF z2ui5_t_draft.
FIELD-SYMBOLS <tab> TYPE ty_t_draft.
assign mt_draft->* to <tab>.
<tab> = lt_data.
t_tab = VALUE #(
( title = 'entry' && mv_counter info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) ).
app-next-s_timer-interval_ms = '2000'.
app-next-s_timer-event_finished = 'TIMER_FINISHED'.
@ -140,48 +100,40 @@ CLASS z2ui5_cl_app_demo_28 IMPLEMENTATION.
METHOD z2ui5_on_render.
DATA(lo_view) = z2ui5_cl_xml_view_helper=>factory( )->shell( )->page(
title = 'abap2UI5 - First Example'
title = 'abap2UI5 - CL_GUI_TIMER - Monitor'
navbuttonpress = client->_event( 'BACK' )
shownavbutton = abap_true
)->header_content(
)->link( text = 'Demo' target = '_blank' href = `https://twitter.com/OblomovDev/status/1645816100813152256`
)->link(
text = 'Source_Code' target = '_blank'
href = z2ui5_cl_xml_view_helper=>hlp_get_source_code_url( app = me get = client->get( ) )
)->get_parent(
)->simple_form( title = 'Form Title' editable = abap_true
)->content( 'form'
)->title( 'Input'
)->label( 'quantity' ).
)->simple_form( title = 'Chart auto refresh (2 sec)' editable = abap_true
).
DATA(point) = lo_View->flex_box(
width = '22rem'
height = '13rem'
alignitems = 'Center'
class = 'sapUiSmallMargin'
)->items( )->interact_line_chart(
selectionchanged = client->_event( 'LINE_CHANGED' )
precedingpoint = '15'
succeddingpoint = '89'
)->points( ).
LOOP AT t_tab REFERENCE INTO DATA(lr_line).
point->interact_line_chart_point( label = lr_line->title value = CONV string( sy-tabix ) ).
ENDLOOP.
FIELD-SYMBOLS <field> type string.
ASSIGN mv_test->* to <field>.
lo_view->input( client->_bind( val = <field> check_gen_data = abap_true ) ).
lo_view->button(
text = 'post'
press = client->_event( 'BUTTON_POST' )
).
FIELD-SYMBOLS <tab> type STANDARD TABLE.
assign mt_draft->* to <tab>.
DATA(tab) = lo_view->get_parent( )->get_parent( )->simple_form( title = 'Table' editable = abap_true
)->content( 'form' )->table(
items = client->_bind( val = <tab> check_gen_data = abap_true )
).
tab->columns(
)->column(
)->text( 'UUID' )->get_parent(
)->column(
)->text( 'UUID_PREV' ).
tab->items( )->column_list_item(
)->cells(
)->input( '{UUID}'
)->input( '{UUID_PREV}'
).
lo_view->get_parent( )->list(
headertext = 'Data auto refresh (2 sec)'
items = client->_bind_one( t_tab )
)->standard_list_item(
title = '{TITLE}'
description = '{DESCR}'
icon = '{ICON}'
info = '{INFO}' ).
app-next-xml_main = lo_view->get_root( )->xml_get( ).

View File

@ -5,7 +5,7 @@
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_APP_DEMO_28</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>demo - table maintenance 2</DESCRIPT>
<DESCRIPT>demo - cl_gui_timer</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>

View File

@ -83,6 +83,7 @@ CLASS z2ui5_cl_app_demo_31 IMPLEMENTATION.
` <Label text="Loading time" />` && |\n| &&
` <Input id="loadingMinSeconds" width="8rem" type="Number" description="seconds" value="` && client->_bind( mv_value ) && `"/>` && |\n| &&
` <Button text="BACK" type="Emphasized" press="` && client->_event( 'BACK') && `"/>` && |\n| &&
` <Link target="_blank" text="Demo" href="https://twitter.com/OblomovDev/status/1645104539387691008"/>` && |\n| &&
` <Link target="_blank" text="Source_Code" href="` && z2ui5_cl_xml_view_helper=>hlp_get_source_code_url( app = me get = client->get( ) ) && `"/>` && |\n| &&
` </form:SimpleForm> ` && |\n| &&
` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Country-Specific Profit Margin" press="` && client->_event( 'POPUP' ) && `"` && |\n| &&

View File

@ -0,0 +1,190 @@
CLASS z2ui5_cl_app_demo_35 DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
DATA mt_draft TYPE REF TO data.
DATA mv_test TYPE REF TO data.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA:
BEGIN OF app,
check_initialized TYPE abap_bool,
view_main TYPE string,
view_popup TYPE string,
get TYPE z2ui5_if_client=>ty_s_get,
next TYPE z2ui5_if_client=>ty_s_next,
END OF app.
METHODS z2ui5_on_init.
METHODS z2ui5_on_event.
METHODS z2ui5_on_render.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_demo_35 IMPLEMENTATION.
METHOD z2ui5_if_app~controller.
me->client = client.
app-get = client->get( ).
app-view_popup = ``.
IF app-check_initialized = abap_false.
app-check_initialized = abap_true.
z2ui5_on_init( ).
ENDIF.
IF app-get-event IS NOT INITIAL.
z2ui5_on_event( ).
ENDIF.
z2ui5_on_render( ).
client->set_next( app-next ).
CLEAR app-get.
CLEAR app-next.
ENDMETHOD.
METHOD z2ui5_on_event.
CASE app-get-event.
WHEN 'BUTTON_POST'.
* client->popup_message_toast( |{ product } { quantity } - send to the server| ).
app-view_popup = 'POPUP_CONFIRM'.
WHEN 'BUTTON_CONFIRM'.
client->popup_message_toast( |confirm| ).
app-view_popup = ''.
WHEN 'TIMER_FINISHED'.
FIELD-SYMBOLS <mt_draft> TYPE STANDARD TABLE.
" OF z2ui5_t_draft.
ASSIGN mt_draft->* TO <mt_draft>.
SELECT FROM z2ui5_t_draft
FIELDS *
ORDER BY uuid
INTO TABLE @DATA(lt_data)
UP TO 2 ROWS
.
APPEND LINES OF lt_data TO <mt_draft>.
"!"mt_draft->* = CORRESPONDING #( lt_data ).
"!
app-next-s_timer-interval_ms = '2000'.
app-next-s_timer-event_finished = 'TIMER_FINISHED'.
WHEN 'BUTTON_CANCEL'.
client->popup_message_toast( |cancel| ).
app-view_popup = ''.
WHEN 'BACK'.
client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ).
ENDCASE.
ENDMETHOD.
METHOD z2ui5_on_init.
* product = 'tomato'.
* quantity = '500'.
app-view_main = 'VIEW_MAIN'.
* input41 = 'faasdfdfsaVIp'.
*
* input21 = '40'.
* input22 = '40'.
CREATE DATA mv_test TYPE string.
FIELD-SYMBOLS <field> type string.
assign mv_test->* to <field>.
<field> = 'test'.
CREATE DATA mt_draft TYPE STANDARD TABLE OF z2ui5_t_draft.
SELECT FROM z2ui5_t_draft
FIELDS *
ORDER BY uuid
INTO TABLE @DATA(lt_data)
UP TO 10 ROWS
.
types ty_t_draft type STANDARD TABLE OF z2ui5_t_draft.
FIELD-SYMBOLS <tab> TYPE ty_t_draft.
assign mt_draft->* to <tab>.
<tab> = lt_data.
app-next-s_timer-interval_ms = '2000'.
app-next-s_timer-event_finished = 'TIMER_FINISHED'.
ENDMETHOD.
METHOD z2ui5_on_render.
DATA(lo_view) = z2ui5_cl_xml_view_helper=>factory( )->shell( )->page(
title = 'abap2UI5 - First Example'
navbuttonpress = client->_event( 'BACK' )
shownavbutton = abap_true
)->header_content(
)->link(
text = 'Source_Code' target = '_blank'
href = z2ui5_cl_xml_view_helper=>hlp_get_source_code_url( app = me get = client->get( ) )
)->get_parent(
)->simple_form( title = 'Form Title' editable = abap_true
)->content( 'form'
)->title( 'Input'
)->label( 'quantity' ).
FIELD-SYMBOLS <field> type string.
ASSIGN mv_test->* to <field>.
lo_view->input( client->_bind( val = <field> check_gen_data = abap_true ) ).
lo_view->button(
text = 'post'
press = client->_event( 'BUTTON_POST' )
).
FIELD-SYMBOLS <tab> type STANDARD TABLE.
assign mt_draft->* to <tab>.
DATA(tab) = lo_view->get_parent( )->get_parent( )->simple_form( title = 'Table' editable = abap_true
)->content( 'form' )->table(
items = client->_bind( val = <tab> check_gen_data = abap_true )
).
tab->columns(
)->column(
)->text( 'UUID' )->get_parent(
)->column(
)->text( 'UUID_PREV' ).
tab->items( )->column_list_item(
)->cells(
)->input( '{UUID}'
)->input( '{UUID_PREV}'
).
app-next-xml_main = lo_view->get_root( )->xml_get( ).
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_APP_DEMO_35</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>demo - table maintenance 2</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -14,10 +14,8 @@ CLASS z2ui5_cl_http_handler DEFINITION
CLASS-METHODS main_index_html
IMPORTING
library_path TYPE clike DEFAULT `https://sdk.openui5.org/resources/sap-ui-core.js`
theme TYPE clike DEFAULT `sap_horizon`
title TYPE clike DEFAULT `abap2UI5`
rtl TYPE abap_bool OPTIONAL
title TYPE clike DEFAULT `abap2UI5`
t_config TYPE z2ui5_if_client=>ty_t_name_value OPTIONAL
check_logging TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(r_result) TYPE string ##NEEDED.
@ -71,6 +69,19 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
METHOD main_index_html.
DATA(lt_Config) = t_config.
IF lt_config IS INITIAL.
lt_config = VALUE #(
( name = `data-sap-ui-theme` value = `sap_horizon` )
( name = `src` value = `https://sdk.openui5.org/resources/sap-ui-core.js` )
( name = `data-sap-ui-theme` value = `sap_horizon` )
( name = `data-sap-ui-libs` value = `sap.m` )
( name = `data-sap-ui-bindingSyntax` value = `complex` )
( name = `data-sap-ui-frameOptions` value = `trusted` )
( name = `data-sap-ui-compatVersion` value = `edge` )
).
ENDIF.
DATA(lv_url) = _=>get_header_val( '~path' ).
DATA(lv_app) = _=>get_param_val( 'app' ).
z2ui5_lcl_db=>cleanup( ).
@ -86,16 +97,14 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
` height: 100%;` && |\n| &&
` }` && |\n| &&
` </style> ` &&
` <script src="` && library_path && `" ` &&
` id="sap-ui-bootstrap" data-sap-ui-theme="` && theme && `" `.
` <script id="sap-ui-bootstrap"`.
IF rtl IS SUPPLIED.
r_result = r_result && `data-sap-ui-rtl="` && _=>get_json_boolean( rtl ) && `" `.
ENDIF.
LOOP AT lt_config REFERENCE INTO DATA(lr_config).
r_result = r_result && | { lr_config->name }="{ lr_config->value }"|.
ENDLOOP.
r_result = r_result && ` data-sap-ui-libs="sap.m" data-sap-ui-bindingSyntax="complex" data-sap-ui-frameOptions="trusted" data-sap-ui-compatVersion="edge"` && |\n| &&
` >` && |\n| &&
` </script></head>` && |\n| &&
r_result = r_result &&
` ></script></head>` && |\n| &&
`<body class="sapUiBody sapUiSizeCompact" >` && |\n| &&
` <div id="content" data-handle-validation="true" ></div>` && |\n| &&
`</body>` && |\n| &&