@@ -11,6 +11,15 @@ CLASS z2ui5_cl_demo_app_013 DEFINITION PUBLIC.
1111 DATA mv_sel6 TYPE abap_bool .
1212
1313 DATA mv_tab_donut_active TYPE abap_bool .
14+ DATA total_count TYPE i .
15+
16+ TYPES :
17+ BEGIN OF ty_chart,
18+ text TYPE string ,
19+ percent TYPE p LENGTH 3 DECIMALS 2 ,
20+ END OF ty_chart.
21+
22+ DATA counts TYPE STANDARD TABLE OF ty_chart WITH EMPTY KEY .
1423
1524 METHODS render_tab_donut.
1625 DATA client TYPE REF TO z2ui5_if_client.
@@ -21,7 +30,7 @@ ENDCLASS.
2130
2231
2332
24- CLASS z2ui5_cl_demo_app_013 IMPLEMENTATION .
33+ CLASS Z2UI5_CL_DEMO_APP_013 IMPLEMENTATION .
2534
2635
2736 METHOD render_tab_donut .
@@ -107,6 +116,28 @@ CLASS z2ui5_cl_demo_app_013 IMPLEMENTATION.
107116 seg->interact_donut_chart_segment( label = 'Design Phase' value = '21.5' displayedvalue = '21.5%' ).
108117 seg->interact_donut_chart_segment( label = 'Test Phase' value = '38.5' displayedvalue = '38.5%' ).
109118
119+ grid->text(
120+ text = 'Model Update Table Data'
121+ class = 'sapUiSmallMargin'
122+ )->get( )->layout_data(
123+ )->grid_data( 'XL12 L12 M12 S12' ).
124+
125+ DATA (donut_chart ) = grid->button( text = `update chart` press = client->_event( 'UPDATE_CHART_DATA' ) )->get_parent(
126+ )->flex_box(
127+ width = '30rem'
128+ height = '18rem'
129+ alignitems = 'Start'
130+ justifycontent = 'SpaceBetween'
131+ )->items(
132+ )->interact_donut_chart( displayedsegments = client->_bind_edit( total_count ) segments = client->_bind_edit( counts ) ).
133+
134+
135+ donut_chart->interact_donut_chart_segment(
136+ label = `{TEXT}`
137+ value = `{PERCENT}`
138+ displayedvalue = `{PERCENT}`
139+ ).
140+
110141 client->view_display( container->stringify( ) ).
111142
112143 ENDMETHOD .
@@ -119,6 +150,15 @@ CLASS z2ui5_cl_demo_app_013 IMPLEMENTATION.
119150 IF check_initialized = abap_false .
120151 check_initialized = abap_true .
121152
153+
154+ counts = VALUE #(
155+ ( text = '1st' percent = '10.0' )
156+ ( text = '2nd' percent = '60.0' )
157+ ( text = '3rd' percent = '30.0' )
158+ ).
159+
160+ total_count = lines ( counts ).
161+
122162* DATA(lv_version) = to_upper( client->get( )-s_config-version ).
123163* IF lv_version CS `OPEN`.
124164* client->message_box_display( text = `Charts are not avalaible with OpenUI5, change your UI5 library first` type = `error` ).
@@ -129,6 +169,18 @@ CLASS z2ui5_cl_demo_app_013 IMPLEMENTATION.
129169 ENDIF .
130170
131171 CASE client->get( )-event.
172+ WHEN 'UPDATE_CHART_DATA' .
173+ CLEAR counts.
174+ counts = VALUE #(
175+ ( text = '1st' percent = '60.0' )
176+ ( text = '2nd' percent = '10.0' )
177+ ( text = '3rd' percent = '15.0' )
178+ ( text = '4th' percent = '15.0' )
179+ ).
180+
181+ total_count = lines ( counts ).
182+
183+ client->view_model_update( ).
132184
133185 WHEN 'BACK' .
134186 client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
0 commit comments