From 9f2f0dbbcfda583beaec588baffb9a2292ab2145 Mon Sep 17 00:00:00 2001 From: oblomov <102328295+oblomov-dev@users.noreply.github.com> Date: Mon, 22 May 2023 21:55:15 +0200 Subject: [PATCH] Dev (#243) * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * new demos * Update z2ui5_cl_app_hello_world.clas.xml * Update z2ui5_cl_app_hello_world.clas.xml * Update z2ui5_cl_app_hello_world.clas.abap * Update z2ui5_cl_app_hello_world.clas.abap * Update z2ui5_cl_http_handler.clas.locals_imp.abap * Update README.md * Update README.md * Update README.md * Update z2ui5_cl_http_handler.clas.locals_imp.abap * Update z2ui5_cl_http_handler.clas.testclasses.abap * update * abalint fix * update * hello world app * url params * unit tests * demos * demos * event data * events and refactoring --- src/00/package.devc.xml | 10 - src/00/z2ui5_cl_app_demo_00.clas.abap | 272 ----- src/00/z2ui5_cl_app_demo_00.clas.xml | 16 - src/00/z2ui5_cl_app_demo_01.clas.xml | 16 - src/00/z2ui5_cl_app_demo_02.clas.abap | 265 ----- src/00/z2ui5_cl_app_demo_02.clas.xml | 16 - src/00/z2ui5_cl_app_demo_03.clas.abap | 86 -- src/00/z2ui5_cl_app_demo_04.clas.abap | 133 --- src/00/z2ui5_cl_app_demo_04.clas.xml | 16 - src/00/z2ui5_cl_app_demo_05.clas.abap | 237 ---- src/00/z2ui5_cl_app_demo_05.clas.xml | 16 - src/00/z2ui5_cl_app_demo_06.clas.abap | 176 --- src/00/z2ui5_cl_app_demo_06.clas.xml | 16 - src/00/z2ui5_cl_app_demo_07.clas.abap | 286 ----- .../z2ui5_cl_app_demo_07.clas.locals_imp.abap | 194 ---- src/00/z2ui5_cl_app_demo_07.clas.xml | 16 - src/00/z2ui5_cl_app_demo_08.clas.abap | 108 -- src/00/z2ui5_cl_app_demo_08.clas.xml | 16 - src/00/z2ui5_cl_app_demo_09.clas.abap | 367 ------ src/00/z2ui5_cl_app_demo_09.clas.xml | 16 - src/00/z2ui5_cl_app_demo_10.clas.abap | 92 -- src/00/z2ui5_cl_app_demo_10.clas.xml | 16 - src/00/z2ui5_cl_app_demo_11.clas.abap | 137 --- src/00/z2ui5_cl_app_demo_11.clas.xml | 16 - src/00/z2ui5_cl_app_demo_12.clas.abap | 184 --- src/00/z2ui5_cl_app_demo_12.clas.xml | 16 - src/00/z2ui5_cl_app_demo_13.clas.abap | 377 ------ .../z2ui5_cl_app_demo_13.clas.locals_imp.abap | 312 ----- src/00/z2ui5_cl_app_demo_13.clas.xml | 16 - src/00/z2ui5_cl_app_demo_14.clas.abap | 109 -- .../z2ui5_cl_app_demo_14.clas.locals_imp.abap | 190 --- src/00/z2ui5_cl_app_demo_14.clas.xml | 16 - src/00/z2ui5_cl_app_demo_15.clas.abap | 57 - .../z2ui5_cl_app_demo_15.clas.locals_imp.abap | 194 ---- src/00/z2ui5_cl_app_demo_15.clas.xml | 16 - src/00/z2ui5_cl_app_demo_16.clas.abap | 386 ------ .../z2ui5_cl_app_demo_16.clas.locals_imp.abap | 194 ---- src/00/z2ui5_cl_app_demo_16.clas.xml | 16 - src/00/z2ui5_cl_app_demo_17.clas.abap | 191 --- .../z2ui5_cl_app_demo_17.clas.locals_imp.abap | 207 ---- src/00/z2ui5_cl_app_demo_17.clas.xml | 16 - src/00/z2ui5_cl_app_demo_18.clas.abap | 220 ---- src/00/z2ui5_cl_app_demo_18.clas.xml | 16 - src/00/z2ui5_cl_app_demo_19.clas.abap | 129 -- src/00/z2ui5_cl_app_demo_19.clas.xml | 16 - src/00/z2ui5_cl_app_demo_20.clas.abap | 79 -- src/00/z2ui5_cl_app_demo_20.clas.xml | 16 - src/00/z2ui5_cl_app_demo_21.clas.abap | 361 ------ src/00/z2ui5_cl_app_demo_21.clas.xml | 16 - src/00/z2ui5_cl_app_demo_22.clas.abap | 170 --- src/00/z2ui5_cl_app_demo_22.clas.xml | 16 - src/00/z2ui5_cl_app_demo_23.clas.abap | 199 ---- src/00/z2ui5_cl_app_demo_23.clas.xml | 16 - src/00/z2ui5_cl_app_demo_24.clas.abap | 87 -- src/00/z2ui5_cl_app_demo_24.clas.xml | 16 - src/00/z2ui5_cl_app_demo_25.clas.abap | 117 -- src/00/z2ui5_cl_app_demo_25.clas.xml | 16 - src/00/z2ui5_cl_app_demo_26.clas.abap | 186 --- src/00/z2ui5_cl_app_demo_26.clas.xml | 16 - src/00/z2ui5_cl_app_demo_27.clas.abap | 151 --- src/00/z2ui5_cl_app_demo_27.clas.xml | 16 - src/00/z2ui5_cl_app_demo_28.clas.abap | 126 -- src/00/z2ui5_cl_app_demo_28.clas.xml | 16 - src/00/z2ui5_cl_app_demo_30.clas.abap | 153 --- .../z2ui5_cl_app_demo_30.clas.locals_imp.abap | 207 ---- src/00/z2ui5_cl_app_demo_30.clas.xml | 16 - src/00/z2ui5_cl_app_demo_31.clas.abap | 215 ---- src/00/z2ui5_cl_app_demo_31.clas.xml | 16 - src/00/z2ui5_cl_app_demo_32.clas.abap | 113 -- .../z2ui5_cl_app_demo_32.clas.locals_imp.abap | 136 --- src/00/z2ui5_cl_app_demo_32.clas.xml | 16 - src/00/z2ui5_cl_app_demo_33.clas.abap | 58 - src/00/z2ui5_cl_app_demo_33.clas.xml | 16 - src/00/z2ui5_cl_app_demo_34.clas.abap | 131 --- src/00/z2ui5_cl_app_demo_34.clas.xml | 16 - src/00/z2ui5_cl_app_demo_35.clas.abap | 158 --- .../z2ui5_cl_app_demo_35.clas.locals_imp.abap | 312 ----- src/00/z2ui5_cl_app_demo_35.clas.xml | 16 - src/00/z2ui5_cl_app_demo_36.clas.abap | 143 --- .../z2ui5_cl_app_demo_36.clas.locals_imp.abap | 136 --- src/00/z2ui5_cl_app_demo_36.clas.xml | 16 - src/00/z2ui5_cl_app_demo_37.clas.abap | 169 --- .../z2ui5_cl_app_demo_37.clas.locals_imp.abap | 136 --- src/00/z2ui5_cl_app_demo_37.clas.xml | 16 - src/00/z2ui5_cl_app_demo_38.clas.abap | 157 --- src/00/z2ui5_cl_app_demo_38.clas.xml | 16 - src/00/z2ui5_cl_app_demo_39.clas.abap | 208 ---- src/00/z2ui5_cl_app_demo_39.clas.xml | 16 - src/00/z2ui5_cl_app_demo_40.clas.abap | 105 -- .../z2ui5_cl_app_demo_40.clas.locals_imp.abap | 136 --- src/00/z2ui5_cl_app_demo_40.clas.xml | 16 - src/00/z2ui5_cl_app_demo_41.clas.abap | 140 --- src/00/z2ui5_cl_app_demo_41.clas.xml | 16 - src/00/z2ui5_cl_app_demo_42.clas.abap | 189 --- .../z2ui5_cl_app_demo_42.clas.locals_imp.abap | 207 ---- src/00/z2ui5_cl_app_demo_42.clas.xml | 16 - src/00/z2ui5_cl_app_demo_43.clas.abap | 47 - src/00/z2ui5_cl_app_demo_43.clas.xml | 16 - src/00/z2ui5_cl_app_demo_44.clas.abap | 16 - src/00/z2ui5_cl_app_demo_44.clas.xml | 16 - src/00/z2ui5_cl_app_demo_45.clas.abap | 121 -- src/00/z2ui5_cl_app_demo_45.clas.xml | 16 - src/00/z2ui5_cl_app_demo_46.clas.abap | 110 -- src/00/z2ui5_cl_app_demo_46.clas.xml | 16 - src/00/z2ui5_cl_app_demo_47.clas.abap | 80 -- src/00/z2ui5_cl_app_demo_47.clas.xml | 16 - src/00/z2ui5_cl_app_demo_48.clas.abap | 102 -- src/00/z2ui5_cl_app_demo_48.clas.xml | 16 - src/00/z2ui5_cl_app_demo_49.clas.abap | 1032 ---------------- .../z2ui5_cl_app_demo_49.clas.locals_imp.abap | 747 ------------ src/00/z2ui5_cl_app_demo_49.clas.xml | 16 - src/00/z2ui5_cl_app_demo_50.clas.abap | 100 -- src/00/z2ui5_cl_app_demo_50.clas.xml | 16 - src/00/z2ui5_cl_app_demo_51.clas.abap | 103 -- src/00/z2ui5_cl_app_demo_51.clas.xml | 16 - src/00/z2ui5_cl_app_demo_52.clas.abap | 142 --- src/00/z2ui5_cl_app_demo_52.clas.xml | 16 - src/00/z2ui5_cl_app_demo_53.clas.abap | 1033 ----------------- .../z2ui5_cl_app_demo_53.clas.locals_imp.abap | 747 ------------ src/00/z2ui5_cl_app_demo_53.clas.xml | 16 - src/00/z2ui5_cl_app_demo_54.clas.abap | 151 --- src/00/z2ui5_cl_app_demo_54.clas.xml | 16 - src/00/z2ui5_cl_app_demo_55.clas.abap | 151 --- src/00/z2ui5_cl_app_demo_55.clas.xml | 16 - ...bap => z2ui5_cl_app_hello_world.clas.abap} | 23 +- ....xml => z2ui5_cl_app_hello_world.clas.xml} | 4 +- src/z2ui5_cl_http_handler.clas.abap | 72 +- ...z2ui5_cl_http_handler.clas.locals_imp.abap | 172 ++- ...2ui5_cl_http_handler.clas.testclasses.abap | 235 ++-- src/{00 => }/z2ui5_cl_xml_view.clas.abap | 0 .../z2ui5_cl_xml_view.clas.locals_imp.abap | 0 src/{00 => }/z2ui5_cl_xml_view.clas.xml | 2 +- src/z2ui5_if_client.intf.abap | 4 + 133 files changed, 299 insertions(+), 15557 deletions(-) delete mode 100644 src/00/package.devc.xml delete mode 100644 src/00/z2ui5_cl_app_demo_00.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_00.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_01.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_02.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_02.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_03.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_04.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_04.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_05.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_05.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_06.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_06.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_07.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_07.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_07.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_08.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_08.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_09.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_09.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_10.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_10.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_11.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_11.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_12.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_12.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_13.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_13.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_13.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_14.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_14.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_14.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_15.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_15.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_15.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_16.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_16.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_16.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_17.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_17.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_17.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_18.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_18.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_19.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_19.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_20.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_20.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_21.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_21.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_22.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_22.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_23.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_23.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_24.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_24.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_25.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_25.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_26.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_26.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_27.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_27.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_28.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_28.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_30.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_30.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_30.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_31.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_31.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_32.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_32.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_32.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_33.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_33.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_34.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_34.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_35.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_35.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_35.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_36.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_36.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_36.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_37.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_37.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_37.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_38.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_38.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_39.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_39.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_40.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_40.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_40.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_41.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_41.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_42.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_42.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_42.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_43.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_43.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_44.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_44.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_45.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_45.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_46.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_46.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_47.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_47.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_48.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_48.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_49.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_49.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_49.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_50.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_50.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_51.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_51.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_52.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_52.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_53.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_53.clas.locals_imp.abap delete mode 100644 src/00/z2ui5_cl_app_demo_53.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_54.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_54.clas.xml delete mode 100644 src/00/z2ui5_cl_app_demo_55.clas.abap delete mode 100644 src/00/z2ui5_cl_app_demo_55.clas.xml rename src/{00/z2ui5_cl_app_demo_01.clas.abap => z2ui5_cl_app_hello_world.clas.abap} (58%) rename src/{00/z2ui5_cl_app_demo_03.clas.xml => z2ui5_cl_app_hello_world.clas.xml} (79%) rename src/{00 => }/z2ui5_cl_xml_view.clas.abap (100%) rename src/{00 => }/z2ui5_cl_xml_view.clas.locals_imp.abap (100%) rename src/{00 => }/z2ui5_cl_xml_view.clas.xml (89%) diff --git a/src/00/package.devc.xml b/src/00/package.devc.xml deleted file mode 100644 index 51904546..00000000 --- a/src/00/package.devc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - abap2UI5 - demos and view helper - - - - diff --git a/src/00/z2ui5_cl_app_demo_00.clas.abap b/src/00/z2ui5_cl_app_demo_00.clas.abap deleted file mode 100644 index 52d370ff..00000000 --- a/src/00/z2ui5_cl_app_demo_00.clas.abap +++ /dev/null @@ -1,272 +0,0 @@ -CLASS z2ui5_cl_app_demo_00 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_00 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CASE client->get( )-event. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - WHEN OTHERS. - TRY. - - DATA(lv_classname) = to_upper( client->get( )-event ). - DATA li_app TYPE REF TO z2ui5_if_app. - CREATE OBJECT li_app TYPE (lv_classname). - client->nav_app_call( li_app ). - - CATCH cx_root. - ENDTRY. - ENDCASE. - - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( - )->shell( )->page( - title = 'abap2UI5 - Demo Section' - class = 'sapUiContentPadding sapUiResponsivePadding--content ' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->toolbar_spacer( - )->link( text = 'SCN' target = '_blank' href = 'https://blogs.sap.com/tag/abap2ui5/' - )->link( text = 'Twitter' target = '_blank' href = 'https://twitter.com/OblomovDev' - )->link( text = 'GitHub' target = '_blank' href = 'https://github.com/oblomov-dev/abap2ui5' - )->get_parent( ). - - DATA(grid) = page->grid( 'L3 M6 S12' - )->content( 'layout' ). - - grid->simple_form( title = 'HowTo - Basic' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Communication & Data Binding' press = client->_event( 'z2ui5_cl_app_demo_01' ) - )->button( text = 'Events, Error & Change View' press = client->_event( 'z2ui5_cl_app_demo_04' ) - )->button( text = 'Flow Logic' press = client->_event( 'z2ui5_cl_app_demo_24' ) - - ). - - grid->simple_form( title = 'HowTo - Basic 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 = 'Timer' press = client->_event( 'z2ui5_cl_app_demo_28' ) - ). - - grid->simple_form( title = 'HowTo - Selection-Screen' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Basic' press = client->_event( 'z2ui5_cl_app_demo_02' ) - )->button( text = 'More Controls' press = client->_event( 'z2ui5_cl_app_demo_05' ) - )->button( text = 'F4-Value-Help' press = client->_event( 'Z2UI5_CL_APP_DEMO_09' ) ). - - grid->simple_form( title = 'HowTo - Tables I' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'List I' press = client->_event( 'z2ui5_cl_app_demo_03' ) - )->button( text = 'List II' press = client->_event( 'z2ui5_cl_app_demo_48' ) - )->button( text = 'Toolbar & Container' press = client->_event( 'z2ui5_cl_app_demo_06' ) - ). - - grid->simple_form( title = 'HowTo - Tables II' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Selection Modes' press = client->_event( 'z2ui5_cl_app_demo_19' ) - )->button( text = 'Editable' press = client->_event( 'z2ui5_cl_app_demo_11' ) - )->button( text = 'Filter' press = client->_event( 'z2ui5_cl_app_demo_45' ) - ). - - grid->simple_form( title = 'HowTo - Popups' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Basic' press = client->_event( 'Z2UI5_CL_APP_DEMO_21' ) - )->button( text = 'Popups & Flow Logic' press = client->_event( 'z2ui5_cl_app_demo_12' ) - )->button( text = 'Popover' press = client->_event( 'z2ui5_cl_app_demo_26' ) - ). - - grid->simple_form( title = 'HowTo - Messages' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Toast, Box & Strip' press = client->_event( 'z2ui5_cl_app_demo_08' ) - )->button( text = 'Illustrated Message' press = client->_event( 'z2ui5_cl_app_demo_33' ) -* )->button( text = 'T100 & bapiret popup' press = client->_event( 'z2ui5_cl_app_demo_34' ) - )->button( text = 'Message Manager' press = client->_event( 'z2ui5_cl_app_demo_38' ) - ). - - grid->simple_form( title = 'HowTo - Layouts' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Layout (Header, Footer, Grid)' press = client->_event( 'z2ui5_cl_app_demo_10' ) - )->button( text = 'Object Page' press = client->_event( 'z2ui5_cl_app_demo_17' ) - )->button( text = 'Dynamic Page' press = client->_event( 'z2ui5_cl_app_demo_30' ) -* )->button( text = 'Split App' press = client->_event( 'z2ui5_cl_app_demo_17' ) - ). - - grid->simple_form( title = 'HowTo - Extensions I' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Views - Normal, Generic, XML' press = client->_event( 'z2ui5_cl_app_demo_23' ) - )->button( text = 'Import UI5-XML-View' press = client->_event( 'z2ui5_cl_app_demo_31' ) - )->button( text = 'Custom Control' press = client->_event( 'z2ui5_cl_app_demo_37' ) - )->button( text = 'Change CSS' press = client->_event( 'z2ui5_cl_app_demo_50' ) - ). - - grid->simple_form( title = 'HowTo - Extensions II' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'HTML, JS, CSS' press = client->_event( 'z2ui5_cl_app_demo_32' ) - )->button( text = 'Canvas & SVG' press = client->_event( 'z2ui5_cl_app_demo_36' ) - )->button( text = 'ext. Library' press = client->_event( 'z2ui5_cl_app_demo_40' ) - ). - - grid->simple_form( title = 'HowTo - More' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Side Effects' press = client->_event( 'z2ui5_cl_app_demo_27' ) - )->button( text = 'Integer, Decimals, Dates, Time' press = client->_event( 'z2ui5_cl_app_demo_47' ) - )->button( text = 'Change Model at Runtime' press = client->_event( 'z2ui5_cl_app_demo_35' ) - " )->button( text = 'FE Table' press = client->_event( 'z2ui5_cl_app_demo_49' ) - ). - - grid->simple_form( title = 'HowTo -List Report' layout = 'ResponsiveGridLayout' )->content( 'form' - )->button( text = 'Cell with Popover' press = client->_event( 'z2ui5_cl_app_demo_52' ) - )->button( text = 'Filter' press = client->_event( 'z2ui5_cl_app_demo_53' ) - )->button( text = 'Layout' press = client->_event( 'z2ui5_cl_app_demo_55' ) - )->button( text = 'Navigation' press = client->_event( 'z2ui5_cl_app_demo_54' ) - - ). - - DATA(form) = page->grid( 'L9 M12 S12' - )->content( 'layout' - )->simple_form( 'Demos I' - )->vbox( ). - - form->flex_box( class = 'columns' - )->button( - text = 'App Template' - press = client->_event( 'Z2UI5_CL_APP_DEMO_18' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( -`You have complete freedom in structuring your apps and handling the flow logic, if you need a little bit of guidance use this template - it includes two views, one popup` && -` and some flow logic` - )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form->flex_box( class = 'columns' - )->button( - text = 'MIME Editor' - press = client->_event( 'Z2UI5_CL_APP_DEMO_14' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( `Use the sap.ui.codeeditor to develop editor apps, a lot of formats are possible (json, xml, abap, js, yaml...) - ` - && 'for instance edit files from the MIME Repository' )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form->flex_box( class = 'columns' - )->button( - text = 'Table Maintenance' - press = client->_event( 'Z2UI5_CL_APP_DEMO_13' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( `Use the sap.ui.table to develop table maintenance apps - ` - && 'import/export data in csv/json/xml, edit entries in the table control and save it to database' )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form->flex_box( class = 'columns' - )->button( - text = 'File Upload/Download' - press = client->_event( 'Z2UI5_CL_APP_DEMO_07' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( `Use the upload control to transfer files - ` - && 'every format is possible (pdf, zip, jpg...) and display it again in a html iframe' )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form->flex_box( class = 'columns' - )->button( - text = 'Layouts' - press = client->_event( 'z2ui5_cl_app_demo_42' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( `Use the sap.uxap.ObjectPageLayout to easily display information related to a business object. It is composed of a header and content wrapping in sections and subestions` )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form->flex_box( class = 'columns' - )->button( - text = 'List Report' - press = client->_event( 'z2ui5_cl_app_demo_49' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( `Similar functionality to a Fiori Elements List Report - Display Table with Sorting, Filtering, Navigation, Layouts and Custom Functions` )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form = page->grid( 'L9 M12 S12' - )->content( 'layout' - )->simple_form( 'Demos II' - )->vbox( ). - - form->text( `These demos are based on controls that are not part of openUI5. Please make sure to switch the bootstrapping to UI5 first.` ). - form->flex_box( class = 'columns' - )->button( - text = 'Visualization' - press = client->_event( 'z2ui5_cl_app_demo_16' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->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( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - form->flex_box( class = 'columns' - )->button( - text = 'Monitoring' - press = client->_event( 'z2ui5_cl_app_demo_41' ) )->get( - )->layout_data( - )->flex_item_data( - growfactor = '1' - styleclass = 'sapUiTinyMargin' - )->get_parent( )->get_parent( - )->text( `Use the timer function of abap2UI5 to create self refreshing monitor apps.` )->get( - )->layout_data( - )->flex_item_data( - growfactor = '3' - styleclass = 'sapUiTinyMargin' ). - - client->set_next( VALUE #( - path = `/` - xml_main = page->get_root( )->xml_get( ) ) ). - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_00.clas.xml b/src/00/z2ui5_cl_app_demo_00.clas.xml deleted file mode 100644 index cdedf356..00000000 --- a/src/00/z2ui5_cl_app_demo_00.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_00 - E - demo section - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_01.clas.xml b/src/00/z2ui5_cl_app_demo_01.clas.xml deleted file mode 100644 index 15f2b1b3..00000000 --- a/src/00/z2ui5_cl_app_demo_01.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_01 - E - basic example - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_02.clas.abap b/src/00/z2ui5_cl_app_demo_02.clas.abap deleted file mode 100644 index a976952c..00000000 --- a/src/00/z2ui5_cl_app_demo_02.clas.abap +++ /dev/null @@ -1,265 +0,0 @@ -CLASS z2ui5_cl_app_demo_02 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA: - BEGIN OF screen, - check_is_active TYPE abap_bool, - colour TYPE string, - combo_key TYPE string, - combo_key2 TYPE string, - segment_key TYPE string, - date TYPE string, - date_time TYPE string, - time_start TYPE string, - time_end TYPE string, - check_switch_01 TYPE abap_bool VALUE abap_false, - check_switch_02 TYPE abap_bool VALUE abap_false, - END OF screen. - - TYPES: - BEGIN OF s_suggestion_items, - value TYPE string, - descr TYPE string, - END OF s_suggestion_items. - - TYPES: - BEGIN OF s_combobox, - key TYPE string, - text TYPE string, - END OF s_combobox. - - TYPES ty_t_combo TYPE STANDARD TABLE OF s_combobox WITH EMPTY KEY. - - DATA mt_suggestion TYPE STANDARD TABLE OF s_suggestion_items WITH EMPTY KEY. - - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - - METHODS z2ui5_on_rendering - IMPORTING - client TYPE REF TO z2ui5_if_client. - METHODS z2ui5_on_event - IMPORTING - client TYPE REF TO z2ui5_if_client. - METHODS z2ui5_on_init. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_02 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - z2ui5_on_init( ). - ENDIF. - z2ui5_on_event( client ). - - z2ui5_on_rendering( client ). - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE client->get( )-event. - - WHEN 'BUTTON_SEND'. - client->popup_message_box( 'success - values send to the server' ). - WHEN 'BUTTON_CLEAR'. - CLEAR screen. - client->popup_message_toast( 'View initialized' ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - screen = VALUE #( - check_is_active = abap_true - colour = 'BLUE' - combo_key = 'GRAY' - segment_key = 'GREEN' - date = '07.12.22' - date_time = '23.12.2022, 19:27:20' - time_start = '05:24:00' - time_end = '17:23:57'). - - mt_suggestion = VALUE #( - ( descr = 'Green' value = 'GREEN' ) - ( descr = 'Blue' value = 'BLUE' ) - ( descr = 'Black' value = 'BLACK' ) - ( descr = 'Grey' value = 'GREY' ) - ( descr = 'Blue2' value = 'BLUE2' ) - ( descr = 'Blue3' value = 'BLUE3' ) ). - - ENDMETHOD. - - - METHOD z2ui5_on_rendering. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Selection-Screen Example' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( text = 'Demo' target = '_blank' href = `https://twitter.com/OblomovDev/status/1628701535222865922` - )->link( text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(grid) = page->grid( 'L6 M12 S12' - )->content( 'layout' ). - - grid->simple_form( 'Input' - )->content( 'form' - )->label( 'Input with value help' - )->input( - value = client->_bind( screen-colour ) - placeholder = 'fill in your favorite colour' - suggestionitems = client->_bind_one( mt_suggestion ) - showsuggestion = abap_true )->get( - )->suggestion_items( )->get( - )->list_item( - text = '{VALUE}' - additionaltext = '{DESCR}' ). - - grid->simple_form( 'Time Inputs' - )->content( 'form' - )->label( 'Date' - )->date_picker( client->_bind( screen-date ) - )->label( 'Date and Time' - )->date_time_picker( client->_bind( screen-date_time ) - )->label( 'Time Begin/End' - )->time_picker( client->_bind( screen-time_start ) - )->time_picker( client->_bind( screen-time_end ) ). - - - DATA(form) = grid->get_parent( )->get_parent( )->grid( 'L12 M12 S12' - )->content( 'layout' - )->simple_form( 'Input with select options' - )->content( 'form' ). - - data(lv_test) = form->label( 'Checkbox' - )->checkbox( - selected = client->_bind( screen-check_is_active ) - text = 'this is a checkbox' - enabled = abap_true ). - - lv_test->label( 'Combobox' - )->combobox( - selectedkey = client->_bind( screen-combo_key ) - items = client->_bind_one( VALUE ty_t_combo( - ( key = 'BLUE' text = 'green' ) - ( key = 'GREEN' text = 'blue' ) - ( key = 'BLACK' text = 'red' ) - ( key = 'GRAY' text = 'gray' ) ) ) - )->item( - key = '{KEY}' - text = '{TEXT}' - )->get_parent( )->get_parent( ). - - lv_test->label( 'Combobox2' - )->combobox( - selectedkey = client->_bind( screen-combo_key2 ) - items = client->_bind_one( VALUE ty_t_combo( - ( key = 'BLUE' text = 'green' ) - ( key = 'GREEN' text = 'blue' ) - ( key = 'BLACK' text = 'red' ) - ( key = 'GRAY' text = 'gray' ) ) ) - )->item( - key = '{KEY}' - text = '{TEXT}' - )->get_parent( )->get_parent( ). - - lv_test->label( 'Segmented Button' - )->segmented_button( client->_bind( screen-segment_key ) - )->items( - )->segmented_button_item( - key = 'BLUE' - icon = 'sap-icon://accept' - text = 'blue' - )->segmented_button_item( - key = 'GREEN' - icon = 'sap-icon://add-favorite' - text = 'green' - )->segmented_button_item( - key = 'BLACK' - icon = 'sap-icon://attachment' - text = 'black' - )->get_parent( )->get_parent( - - )->label( 'Switch disabled' - )->switch( - enabled = abap_false - customtexton = 'A' - customtextoff = 'B' - )->label( 'Switch accept/reject' - )->switch( - state = client->_bind( screen-check_switch_01 ) - customtexton = 'on' - customtextoff = 'off' - type = 'AcceptReject' - )->label( 'Switch normal' - )->switch( - state = client->_bind( screen-check_switch_02 ) - customtexton = 'YES' - customtextoff = 'NO' ). - - page->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Clear' - press = client->_event( 'BUTTON_CLEAR' ) - type = 'Reject' - icon = 'sap-icon://delete' - )->button( - text = 'Send to Server' - press = client->_event( 'BUTTON_SEND' ) - type = 'Success' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_02.clas.xml b/src/00/z2ui5_cl_app_demo_02.clas.xml deleted file mode 100644 index d120c121..00000000 --- a/src/00/z2ui5_cl_app_demo_02.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_02 - E - selscreen - basic - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_03.clas.abap b/src/00/z2ui5_cl_app_demo_03.clas.abap deleted file mode 100644 index d7f5eec4..00000000 --- a/src/00/z2ui5_cl_app_demo_03.clas.abap +++ /dev/null @@ -1,86 +0,0 @@ -CLASS z2ui5_cl_app_demo_03 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - title TYPE string, - value TYPE string, - descr TYPE string, - icon TYPE string, - info TYPE string, - selected TYPE abap_bool, - checkbox TYPE abap_bool, - END OF ty_row. - - DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_03 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - t_tab = VALUE #( - ( title = 'row_01' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) - ( title = 'row_02' info = 'incompleted' descr = 'this is a description' icon = 'sap-icon://account' ) - ( title = 'row_03' info = 'working' descr = 'this is a description' icon = 'sap-icon://account' ) - ( title = 'row_04' info = 'working' descr = 'this is a description' icon = 'sap-icon://account' ) - ( title = 'row_05' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) - ( title = 'row_06' info = 'completed' descr = 'this is a description' icon = 'sap-icon://account' ) - ). - - ENDIF. - - CASE client->get( )-event. - WHEN 'SELCHANGE'. - DATA(lt_sel) = t_tab. - DELETE lt_sel WHERE selected = abap_false. - client->popup_message_box( `go to details for item ` && lt_sel[ 1 ]-title ). - - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - List' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->list( - headertext = 'List Ouput' - items = client->_bind( t_tab ) - mode = `SingleSelectMaster` - selectionchange = client->_event( 'SELCHANGE' ) - )->standard_list_item( - title = '{TITLE}' - description = '{DESCR}' - icon = '{ICON}' - info = '{INFO}' - press = client->_event( 'TEST' ) - " type = `Navigation` - selected = `{SELECTED}` - ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_04.clas.abap b/src/00/z2ui5_cl_app_demo_04.clas.abap deleted file mode 100644 index 70b3edf5..00000000 --- a/src/00/z2ui5_cl_app_demo_04.clas.abap +++ /dev/null @@ -1,133 +0,0 @@ -CLASS z2ui5_cl_app_demo_04 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - CLASS-METHODS factory - IMPORTING - i_app TYPE REF TO z2ui5_if_app - i_name_attri TYPE string - RETURNING - VALUE(r_result) TYPE REF TO z2ui5_cl_app_demo_04. - - - DATA mo_app TYPE REF TO z2ui5_if_app. - DATA mv_name_attri TYPE string. - DATA check_initialized TYPE abap_bool. - DATA mv_view_main TYPE string. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_04 IMPLEMENTATION. - - - METHOD factory. - - r_result = NEW #( ). - - r_result->mo_app = i_app. - r_result->mv_name_attri = i_name_attri. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - mv_view_main = 'MAIN'. - client->popup_message_box( 'app started, init values set' ). - - ENDIF. - - - CASE client->get( )-event. - - WHEN 'BUTTON_ROUNDTRIP'. - client->popup_message_box( 'server-client roundtrip, method on_event of the abap controller was called' ). - - WHEN 'BUTTON_RESTART'. - client->nav_app_call( NEW z2ui5_cl_app_demo_04( ) ). - - WHEN 'BUTTON_CHANGE_APP'. - client->nav_app_call( NEW z2ui5_cl_app_demo_01( ) ). - - WHEN 'BUTTON_CHANGE_VIEW'. - - CASE mv_view_main. - WHEN 'MAIN'. - mv_view_main = 'SECOND'. - WHEN 'SECOND'. - mv_view_main = 'MAIN'. - ENDCASE. - - WHEN 'BUTTON_ERROR'. - DATA(lv_dummy) = 1 / 0. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - CASE mv_view_main. - - WHEN 'MAIN'. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Controller' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - target = '_blank' - )->get_parent( ). - - page->grid( 'L6 M12 S12' )->content( 'layout' - )->simple_form( 'Controller' )->content( 'form' - )->label( 'Roundtrip' - )->button( - text = 'Client/Server Interaction' - press = client->_event( 'BUTTON_ROUNDTRIP' ) - )->label( 'System' - )->button( - text = 'Restart App' - press = client->_event( 'BUTTON_RESTART' ) - )->label( 'Change View' - )->button( - text = 'Display View SECOND' - press = client->_event( 'BUTTON_CHANGE_VIEW' ) - )->label( 'CX_SY_ZERO_DIVIDE' - )->button( - text = 'Error not catched by the user' - press = client->_event( 'BUTTON_ERROR' ) ). - - WHEN 'SECOND'. - - page = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Controller' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - ). - - page->grid( 'L12 M12 S12' )->content( 'layout' - )->simple_form( 'View Second' )->content( 'form' - )->label( 'Change View' - )->button( - text = 'Display View MAIN' - press = client->_event( 'BUTTON_CHANGE_VIEW' ) ). - - ENDCASE. - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_04.clas.xml b/src/00/z2ui5_cl_app_demo_04.clas.xml deleted file mode 100644 index 277dfeec..00000000 --- a/src/00/z2ui5_cl_app_demo_04.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_04 - E - basic - controller - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_05.clas.abap b/src/00/z2ui5_cl_app_demo_05.clas.abap deleted file mode 100644 index 292b100b..00000000 --- a/src/00/z2ui5_cl_app_demo_05.clas.abap +++ /dev/null @@ -1,237 +0,0 @@ -CLASS z2ui5_cl_app_demo_05 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA: - BEGIN OF screen, - check_initialized TYPE abap_bool, - check_is_active TYPE abap_bool, - colour TYPE string, - combo_key TYPE string, - segment_key TYPE string, - date TYPE string, - date_time TYPE string, - time_start TYPE string, - time_end TYPE string, - check_switch_01 TYPE abap_bool VALUE abap_false, - check_switch_02 TYPE abap_bool VALUE abap_false, - progress_value TYPE string VALUE '3', - step_val_01 TYPE string VALUE '4', - step_val_02 TYPE string VALUE '10', - text_area TYPE string, - END OF screen. - - - types: - begin of ty_s_token, - key type string, - text type string, - visible type abap_bool, - selkz type abap_bool, - end of ty_S_token. - - data mt_token type STANDARD TABLE OF ty_S_token with empty key. - data mt_token_sugg type STANDARD TABLE OF ty_S_token with empty key. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_05 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF screen-check_initialized = abap_false. - screen-check_initialized = abap_true. - - mt_token = value #( - ( key = 'VAL1' text = 'value_1' selkz = abap_true visible = abap_true ) - ( key = 'VAL3' text = 'value_3' selkz = abap_false visible = abap_true ) - ( key = 'VAL4' text = 'value_4' selkz = abap_true ) - ). - - mt_token_sugg = value #( - ( key = 'VAL1' text = 'value_1' ) - ( key = 'VAL2' text = 'value_2' ) - ( key = 'VAL3' text = 'value_3' ) - ( key = 'VAL4' text = 'value_4' ) - ). - - screen = VALUE #( - check_initialized = abap_true - check_is_active = abap_true - colour = 'BLUE' - combo_key = 'GRAY' - segment_key = 'GREEN' - date = '07.12.22' - date_time = '23.12.2022, 19:27:20' - time_start = '05:24:00' - time_end = '17:23:57' ). - - ENDIF. - - - CASE client->get( )-event. - - WHEN 'BUTTON_ROUNDTRIP'. - DATA(lv_dummy) = 'user pressed a button, your custom implementation can be called here'. - - WHEN 'BUTTON_MSG_BOX'. - client->popup_message_box( - text = 'this is a message box with a custom text' - type = 'success' ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Selection-Screen more Controls' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->generic_tag( - arialabelledby = 'genericTagLabel' - text = 'Project Cost' - design = 'StatusIconHidden' - status = 'Error' - class = 'sapUiSmallMarginBottom' - )->object_number( - state = 'Error' - emphasized = 'false' - number = '3.5M' - unit = 'EUR' ). - - page->generic_tag( - arialabelledby = 'genericTagLabel' - text = 'Project Cost' - design = 'StatusIconHidden' - status = 'Success' - class = 'sapUiSmallMarginBottom' - )->object_number( - state = 'Success' - emphasized = 'false' - number = '3.5M' - unit = 'EUR' ). - - page->generic_tag( - arialabelledby = 'genericTagLabel' - text = 'Input' - design = 'StatusIconHidden' - class = 'sapUiSmallMarginBottom' - )->object_number( - emphasized = 'true' - number = '3.5M' - unit = 'EUR' ). - - DATA(grid) = page->grid( 'L12 M12 S12' )->content( 'layout' ). - - grid->simple_form( title = 'More Controls' editable = abap_true )->content( 'form' - )->label( 'ProgressIndicator' - )->progress_indicator( - percentvalue = screen-progress_value - displayvalue = '0,44GB of 32GB used' - showvalue = abap_true - state = 'Success' - )->label( 'StepInput' - )->step_input( - value = client->_bind( screen-step_val_01 ) - step = '2' - min = '0' - max = '20' - )->step_input( - value = client->_bind( screen-step_val_02 ) - step = '10' - min = '0' - max = '100' - )->label( 'Range Slider' - )->range_slider( - max = '100' - min = '0' - step = '10' - startvalue = '10' - endvalue = '20' - showtickmarks = abap_true - labelinterval = '2' - width = '80%' - class = 'sapUiTinyMargin' - )->label( 'MultiInput' - )->multi_input( - tokens = client->_bind( mt_token ) - showclearicon = abap_true - showvaluehelp = abap_true - suggestionitems = client->_bind( mt_token_sugg ) - )->item( - key = `{KEY}` - text = `{TEXT}` - )->tokens( - )->token( - key = `{KEY}` - text = `{TEXT}` - selected = `{SELKZ}` - visible = `{VISIBLE}` - ). - - grid->simple_form( title = 'Text Area' editable = abap_true )->content( 'form' - )->label( 'text area' - )->text_area( - value = `Lorem ipsum dolor st amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magn` && - `a aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd` && - ` gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam n ` && - ` onumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. Lorem ipsum dolor sit am ` && - ` et, consetetur sadipscing elitr, sed diam nonumy eirm sed diam voluptua. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam no ` && - `numy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.` - growing = abap_true - growingmaxlines = '7' - width = '100%' ). - - page->footer( - )->overflow_toolbar( - )->button( - text = 'Button with Badge' - class = 'sapUiTinyMarginBeginEnd' - icon = 'sap-icon://cart' )->get( - )->custom_data( - )->badge_custom_data( - key = 'badge' - value = '5' - visible = abap_true - )->get_parent( )->get_parent( - )->button( - text = 'Emphasized Button with Badge' - type = 'Emphasized' - class = 'sapUiTinyMarginBeginEnd' - icon = 'sap-icon://cart' )->get( - )->custom_data( - )->badge_custom_data( - key = 'badge' - value = '23' - visible = abap_true - )->get_parent( )->get_parent( - )->toolbar_spacer( - )->overflow_toolbar_button( - text = 'Clear' - press = client->_event( 'BUTTON_CLEAR' ) - type = 'Reject' - icon = 'sap-icon://delete' - )->overflow_toolbar_button( - text = 'Send to Server' - press = client->_event( 'BUTTON_SEND' ) - type = 'Success' ). - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_05.clas.xml b/src/00/z2ui5_cl_app_demo_05.clas.xml deleted file mode 100644 index 7fecf2ec..00000000 --- a/src/00/z2ui5_cl_app_demo_05.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_05 - E - selscreen - more controls - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_06.clas.abap b/src/00/z2ui5_cl_app_demo_06.clas.abap deleted file mode 100644 index 5b0fc6fc..00000000 --- a/src/00/z2ui5_cl_app_demo_06.clas.abap +++ /dev/null @@ -1,176 +0,0 @@ -CLASS z2ui5_cl_app_demo_06 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - count TYPE i, - 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 check_initialized TYPE abap_bool. - DATA mv_key TYPE string. - METHODS refresh_data. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_06 IMPLEMENTATION. - - - METHOD refresh_data. - - DO 1000 TIMES. - DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red' - info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' ) - descr = 'this is a description' checkbox = abap_true ). - INSERT ls_row INTO TABLE t_tab. - ENDDO. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - refresh_data( ). - ENDIF. - - CASE client->get( )-event. - - WHEN 'SORT_ASCENDING'. - SORT t_tab BY count ASCENDING. - client->popup_message_toast( 'sort ascending' ). - - WHEN 'SORT_DESCENDING'. - SORT t_tab BY count DESCENDING. - client->popup_message_toast( 'sort descending' ). - - WHEN 'BUTTON_POST'. - client->popup_message_box( 'button post was pressed' ). - - WHEN 'MENU_DEFAULT'. - client->popup_message_box( 'menu default pressed' ). - - WHEN 'MENU_01'. - client->popup_message_box( 'menu 01 pressed' ). - - WHEN 'MENU_02'. - client->popup_message_box( 'menu 02 pressed' ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Scroll Container with Table and Toolbar' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true - )->table( - growing = abap_true - growingthreshold = '20' - growingscrolltoload = abap_true - items = client->_bind_one( t_tab ) - sticky = 'ColumnHeaders,HeaderToolbar' ). - - tab->header_toolbar( - )->overflow_toolbar( - )->title( 'title of the table' - )->button( - text = 'letf side button' - icon = 'sap-icon://account' - press = client->_event( 'BUTTON_SORT' ) - )->segmented_button( selected_key = mv_key - )->items( - )->segmented_button_item( - key = 'BLUE' - icon = 'sap-icon://accept' - text = 'blue' - )->segmented_button_item( - key = 'GREEN' - icon = 'sap-icon://add-favorite' - text = 'green' - )->get_parent( )->get_parent( - )->toolbar_spacer( - )->generic_tag( - arialabelledby = 'genericTagLabel' - text = 'Project Cost' - design = 'StatusIconHidden' - status = 'Error' - class = 'sapUiSmallMarginBottom' - )->object_number( - state = 'Error' - emphasized = 'false' - number = '3.5M' - unit = 'EUR' - )->get_parent( - )->toolbar_spacer( - )->overflow_toolbar_toggle_button( - icon = 'sap-icon://sort-descending' - press = client->_event( 'SORT_DESCENDING' ) - )->overflow_toolbar_toggle_button( - icon = 'sap-icon://sort-ascending' - press = client->_event( 'SORT_ASCENDING' ) - - )->overflow_toolbar_menu_button( - text = `Export` - type = `Transparent` - tooltip = `Export` - defaultaction = client->_event( 'MENU_DEFAULT' ) - icon = `sap-icon://share` - buttonMode = `Split` - )->_generic( `menu` )->_generic( `Menu` - )->menu_item( - press = client->_event( 'MENU_01' ) - text = `Export as PDF` - icon = `sap-icon://pdf-attachment` - )->menu_item( - press = client->_event( 'MENU_02' ) - text = `Export to Excel` - icon = `sap-icon://excel-attachment` - ). - - tab->columns( - )->column( - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Info' )->get_parent( - )->column( - )->text( 'Description' )->get_parent( - )->column( - )->text( 'Checkbox' )->get_parent( - )->column( - )->text( 'Counter' ). - - tab->items( )->column_list_item( )->cells( - )->text( '{VALUE}' - )->text( '{INFO}' - )->text( '{DESCR}' - )->checkbox( selected = '{CHECKBOX}' enabled = abap_false - )->text( '{COUNT}' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_06.clas.xml b/src/00/z2ui5_cl_app_demo_06.clas.xml deleted file mode 100644 index 5327be92..00000000 --- a/src/00/z2ui5_cl_app_demo_06.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_06 - E - tab - toolbar container sort - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_07.clas.abap b/src/00/z2ui5_cl_app_demo_07.clas.abap deleted file mode 100644 index f1d03651..00000000 --- a/src/00/z2ui5_cl_app_demo_07.clas.abap +++ /dev/null @@ -1,286 +0,0 @@ -CLASS z2ui5_cl_app_demo_07 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_path TYPE string. - DATA mv_value TYPE string. - - TYPES: - BEGIN OF ty_file, - selkz TYPE abap_bool, - name TYPE string, - format TYPE string, - size TYPE string, - descr TYPE string, - data TYPE string, - END OF ty_file. - - DATA mt_file TYPE STANDARD TABLE OF ty_file WITH EMPTY KEY. - DATA ms_file_edit TYPE ty_file. - DATA ms_file_prev TYPE ty_file. - - 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 ui5_on_init. - METHODS ui5_on_event. - - METHODS ui5_render_view_main - RETURNING - VALUE(r_result) TYPE string. - - METHODS ui5_render_view_init - RETURNING - VALUE(r_result) TYPE string. - - METHODS ui5_render_popup_descr - RETURNING - VALUE(r_result) TYPE string. - - METHODS ui5_render_popup_data - RETURNING - VALUE(r_result) TYPE string. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_07 IMPLEMENTATION. - - - METHOD ui5_on_event. - - CASE client->get( )-event. - - WHEN 'START'. - app-view_main = 'MAIN'. - - WHEN 'DISPLAY'. - ms_file_prev = mt_file[ selkz = abap_true ]. - - WHEN 'UPLOAD'. - INSERT VALUE #( name = mv_path data = mv_value size = strlen( mv_value ) format = mv_value+5(5) ) INTO TABLE mt_file. - CLEAR ms_file_prev. - CLEAR ms_file_edit. - CLEAR mv_value. - CLEAR mv_path. - - WHEN 'TEXTAREA_DESCR_CONFIRM'. - mt_file[ selkz = abap_true ] = ms_file_edit. - CLEAR ms_file_edit. - - WHEN 'TEXTAREA_DATA_CONFIRM'. - CLEAR ms_file_edit. - - WHEN 'POPUP_DESCR'. - ms_file_edit = mt_file[ selkz = abap_true ]. - app-view_popup = 'DESCR'. - - WHEN 'POPUP_DATA'. - ms_file_edit = mt_file[ selkz = abap_true ]. - app-view_popup = 'DATA'. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD ui5_on_init. - - app-view_main = 'INIT'. - client->popup_message_toast( 'Custom Control for File Upload loaded' ). - - ENDMETHOD. - - - METHOD ui5_render_popup_data. - - DATA(lo_popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( - stretch = abap_true - title = 'Data:' - )->content( - )->text_area( - height = '99%' - width = '99%' - enabled = abap_false - value = client->_bind( ms_file_edit-data ) - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'close' - press = client->_event( 'TEXTAREA_DATA_CONFIRM' ) - type = 'Emphasized' ). - - r_result = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD ui5_render_popup_descr. - - DATA(lo_popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( - title = 'Edit Description' - icon = 'sap-icon://edit' - )->content( - )->text_area( - height = '99%' - width = '99%' - value = client->_bind( ms_file_edit-descr ) - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'TEXTAREA_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'TEXTAREA_DESCR_CONFIRM' ) - type = 'Emphasized' ). - - r_result = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD ui5_render_view_init. - - DATA(lo_view) = Z2UI5_CL_XML_VIEW=>factory( VALUE #( - ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) - ( n = `xmlns:m` v = `sap.m` ) - ( n = `xmlns:z2ui5` v = `z2ui5` ) - ( n = `xmlns:core` v = `sap.ui.core` ) - ( n = `xmlns` v = `http://www.w3.org/1999/xhtml` ) - ) ). - - DATA(page) = lo_view->_generic( name = 'Shell' ns = 'm' )->page( - ns = 'm' - title = 'abap2UI5 - File Upload/Download' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( ns = 'm' - )->toolbar_spacer( ns = 'm' - )->link( ns = 'm' text = 'Demo' target = '_blank' href = 'https://twitter.com/OblomovDev/status/1638487600930357248' - )->link( ns = 'm' target = '_blank' text = 'Source_Code' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->text( ns = 'm' text = 'Custom Control for File Upload is now loaded.' - )->button( ns = 'm' text = 'continue' press = client->_event( 'START' ) - )->zz_plain( ` ` - ). - - r_result = lo_view->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD ui5_render_view_main. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( )->page( - title = 'abap2UI5 - File Upload/Download' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->toolbar_spacer( - )->link( text = 'Demo' href = 'https://twitter.com/OblomovDev/status/1638487600930357248' - )->link( text = 'Source_Code' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->cc_file_uploader( - value = client->_bind( mv_value ) - path = client->_bind( mv_path ) - placeholder = 'filepath here...' - upload = client->_event( 'UPLOAD' ) ). - - DATA(tab) = page->table( - headertext = 'Table' - mode = 'SingleSelectLeft' - items = client->_bind( mt_file ) - )->header_toolbar( - )->overflow_toolbar( - )->title( 'Files' - )->toolbar_spacer( - )->button( - text = 'Edit Description' - press = client->_event( 'POPUP_DESCR' ) - )->button( - text = 'Show Base64' - press = client->_event( 'POPUP_DATA' ) - )->button( - text = 'display' - press = client->_event( 'DISPLAY' ) - )->get_parent( )->get_parent( ). - - tab->columns( - )->column( '10%' )->get_parent( - )->column( '10%' )->get_parent( - )->column( '10%' )->get_parent( - )->column( ). - - tab->items( )->column_list_item( selected = '{SELKZ}' )->cells( - )->text( '{NAME}' - )->text( '{FORMAT}' - )->text( '{SIZE}' - )->text( '{DESCR}' ). - - IF ms_file_prev-data IS NOT INITIAL. - page->zz_plain( '' ). - CLEAR mv_value. - ENDIF. - - r_result = page->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-get = client->get( ). - app-view_popup = ``. - - IF app-check_initialized = abap_false. - app-check_initialized = abap_true. - ui5_on_init( ). - ENDIF. - - IF app-get-event IS NOT INITIAL. - ui5_on_event( ). - ENDIF. - - CASE app-view_main. - WHEN 'INIT'. - app-next-xml_main = ui5_render_view_init( ). - WHEN 'MAIN'. - app-next-xml_main = ui5_render_view_main( ). - ENDCASE. - - CASE app-view_popup. - WHEN 'DESCR'. - app-next-xml_popup = ui5_render_popup_descr( ). - WHEN 'DATA'. - app-next-xml_popup = ui5_render_popup_data( ). - ENDCASE. - - client->set_next( app-next ). - CLEAR app-get. - CLEAR app-next. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_07.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_07.clas.locals_imp.abap deleted file mode 100644 index 85ddeefe..00000000 --- a/src/00/z2ui5_cl_app_demo_07.clas.locals_imp.abap +++ /dev/null @@ -1,194 +0,0 @@ -CLASS lcl_mime_api DEFINITION FINAL. - - PUBLIC SECTION. - CLASS-METHODS read_abap - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_json - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_js - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_yaml - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_text - RETURNING - VALUE(r_result) TYPE string. - - TYPES: - BEGIN OF ty_s_suggest, - name TYPE string, - value TYPE string, - END OF ty_s_suggest. - TYPES ty_t_suggest TYPE STANDARD TABLE OF ty_s_suggest WITH EMPTY KEY. - - CLASS-METHODS get_editor_type - RETURNING - VALUE(r_result) TYPE ty_t_suggest. - - CLASS-METHODS save_data - IMPORTING - i_mv_editor TYPE string. - - - PROTECTED SECTION. - - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_mime_api IMPLEMENTATION. - - - METHOD read_abap. - -r_result = `METHOD SELECT_FILES.` && |\n| && - |\n| && - ` DATA: LV_RET_CODE TYPE I,` && |\n| && - ` LV_USR_AXN TYPE I.` && |\n| && - |\n| && - ` CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(` && |\n| && - ` EXPORTING` && |\n| && - ` WINDOW_TITLE = 'Select file'` && |\n| && - ` MULTISELECTION = 'X'` && |\n| && - ` CHANGING` && |\n| && - ` FILE_TABLE = ME->PT_FILETAB` && |\n| && - ` RC = LV_RET_CODE` && |\n| && - ` USER_ACTION = LV_USR_AXN` && |\n| && - ` EXCEPTIONS` && |\n| && - ` FILE_OPEN_DIALOG_FAILED = 1` && |\n| && - ` CNTL_ERROR = 2` && |\n| && - ` ERROR_NO_GUI = 3` && |\n| && - ` NOT_SUPPORTED_BY_GUI = 4` && |\n| && - ` OTHERS = 5` && |\n| && - ` ).` && |\n| && - ` IF SY-SUBRC <> 0 OR` && |\n| && - ` LV_USR_AXN = CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.` && |\n| && - ` RAISE EX_FILE_SEL_ERR.` && |\n| && - ` ENDIF.` && |\n| && - |\n| && - ` ENDMETHOD. `. - - ENDMETHOD. - - - METHOD read_json. - - r_result = `{` && |\n| && - ` "quiz": {` && |\n| && - ` "sport": {` && |\n| && - ` "q1": {` && |\n| && - ` "test" : false,` && |\n| && - ` "question": "Which one is correct team name in NBA?",` && |\n| && - ` "options": [` && |\n| && - ` "New York Bulls",` && |\n| && - ` "Los Angeles Kings",` && |\n| && - ` "Golden State Warriros",` && |\n| && - ` "Huston Rocket"` && |\n| && - ` ],` && |\n| && - ` "answer": "Huston Rocket"` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - ` "maths": {` && |\n| && - ` "q1": {` && |\n| && - ` "question": "5 + 7 = ?",` && |\n| && - ` "options": [` && |\n| && - ` "10",` && |\n| && - ` "11",` && |\n| && - ` "12",` && |\n| && - ` "13"` && |\n| && - ` ],` && |\n| && - ` "answer": "12"` && |\n| && - ` },` && |\n| && - ` "q2": {` && |\n| && - ` "question": true,` && |\n| && - ` "options": [` && |\n| && - ` "1",` && |\n| && - ` "2",` && |\n| && - ` "3",` && |\n| && - ` "4"` && |\n| && - ` ],` && |\n| && - ` "answer": 487829` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_js. - - r_result = `function showAlert() {` && |\n| && - ` alert("Alert from JS file");` && |\n| && - `}` && |\n| && - |\n| && - `function updateHeading() {` && |\n| && - ` document.getElementById('heading').innerHTML = 'Heading changed with JS';` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_yaml. - - r_result = `# Employee records` && |\n| && - `- martin:` && |\n| && - ` name: Martin Developer` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - python` && |\n| && - ` - perl` && |\n| && - ` - pascal` && |\n| && - `- tabitha:` && |\n| && - ` name: Tabitha Bitumen` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - lisp` && |\n| && - ` - fortran` && |\n| && - ` - erlang`. - - ENDMETHOD. - - - METHOD read_text. - r_result = `TXT test file` && |\n| && - `Purpose: Provide example of this file type` && |\n| && - `Document file type: TXT` && |\n| && - `Version: 1.0` && |\n| && - `Remark:` && |\n| && - |\n| && - `Example content:` && |\n| && - `The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or mus` && -`t be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speak` && -`ing countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.` && |\n| && - |\n| && - `John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is o` && -`ften John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also` && -` the name of a 2002 American television series.`. - ENDMETHOD. - - METHOD get_editor_type. - - DATA(lv_types) = `abap, abc, actionscript, ada, apache_conf, applescript, asciidoc, assembly_x86, autohotkey, batchfile, bro, c9search, c_cpp, cirru, clojure, cobol, coffee, coldfusion, csharp, css, curly, d, dart, diff, django, dockerfile, ` && -`dot, drools, eiffel, yaml, ejs, elixir, elm, erlang, forth, fortran, ftl, gcode, gherkin, gitignore, glsl, gobstones, golang, groovy, haml, handlebars, haskell, haskell_cabal, haxe, hjson, html, html_elixir, html_ruby, ini, io, jack, jade, java, ja` && -`vascri` && -`pt, json, jsoniq, jsp, jsx, julia, kotlin, latex, lean, less, liquid, lisp, live_script, livescript, logiql, lsl, lua, luapage, lucene, makefile, markdown, mask, matlab, mavens_mate_log, maze, mel, mips_assembler, mipsassembler, mushcode, mysql, ni` && -`x, nsis, objectivec, ocaml, pascal, perl, pgsql, php, plain_text, powershell, praat, prolog, properties, protobuf, python, r, razor, rdoc, rhtml, rst, ruby, rust, sass, scad, scala, scheme, scss, sh, sjs, smarty, snippets, soy_template, space, sql,` && -` sqlserver, stylus, svg, swift, swig, tcl, tex, text, textile, toml, tsx, twig, typescript, vala, vbscript, velocity, verilog, vhdl, wollok, xml, xquery, terraform, slim, redshift, red, puppet, php_laravel_blade, mixal, jssm, fsharp, edifact,` && -` csp, cssound_score, cssound_orchestra, cssound_document`. - SPLIT lv_types AT ',' INTO TABLE DATA(lt_types). - - - r_result = VALUE #( FOR row IN lt_types ( name = shift_right( shift_left( row ) ) value = shift_right( shift_left( row ) ) ) ). - - ENDMETHOD. - - - METHOD save_data. - "save data here - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_07.clas.xml b/src/00/z2ui5_cl_app_demo_07.clas.xml deleted file mode 100644 index 4f9b3b25..00000000 --- a/src/00/z2ui5_cl_app_demo_07.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_07 - E - demo - file download/upload - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_08.clas.abap b/src/00/z2ui5_cl_app_demo_08.clas.abap deleted file mode 100644 index 7d852112..00000000 --- a/src/00/z2ui5_cl_app_demo_08.clas.abap +++ /dev/null @@ -1,108 +0,0 @@ -CLASS z2ui5_cl_app_demo_08 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA check_strip_active TYPE abap_bool. - DATA strip_type TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_08 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CASE client->get( )-event. - - WHEN 'BUTTON_MESSAGE_BOX'. - client->popup_message_box( 'this is a message box' ). - - WHEN 'BUTTON_MESSAGE_BOX_ERROR'. - client->popup_message_box( text = 'this is a message box' type = 'error' ). - - WHEN 'BUTTON_MESSAGE_BOX_SUCCESS'. - client->popup_message_box( text = 'this is a message box' type = 'success' ). - - WHEN 'BUTTON_MESSAGE_BOX_WARNING'. - client->popup_message_box( text = 'this is a message box' type = 'warning' ). - - WHEN 'BUTTON_MESSAGE_TOAST'. - client->popup_message_toast( 'this is a message toast' ). - - WHEN 'BUTTON_MESSAGE_STRIP_INFO'. - check_strip_active = abap_true. - strip_type = 'Information'. - - WHEN 'BUTTON_MESSAGE_STRIP_ERROR'. - check_strip_active = abap_true. - strip_type = 'Error'. - - WHEN 'BUTTON_MESSAGE_STRIP_SUCCESS'. - check_strip_active = abap_true. - strip_type = 'Success'. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Messages' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - IF check_strip_active = abap_true. - page->message_strip( text = 'This is a Message Strip' type = strip_type ). - ENDIF. - - page->grid( 'L6 M12 S12' - )->content( 'layout' - )->simple_form( 'Message Box' )->content( 'form' - )->button( - text = 'information' - press = client->_event( 'BUTTON_MESSAGE_BOX' ) - )->button( - text = 'success' - press = client->_event( 'BUTTON_MESSAGE_BOX_SUCCESS' ) - )->button( - text = 'error' - press = client->_event( 'BUTTON_MESSAGE_BOX_ERROR' ) - )->button( - text = 'warning' - press = client->_event( 'BUTTON_MESSAGE_BOX_WARNING' ) ). - - page->grid( 'L6 M12 S12' - )->content( 'layout' - )->simple_form( 'Message Strip' )->content( 'form' - )->button( - text = 'success' - press = client->_event( 'BUTTON_MESSAGE_STRIP_SUCCESS' ) - )->button( - text = 'error' - press = client->_event( 'BUTTON_MESSAGE_STRIP_ERROR' ) - )->button( - text = 'information' - press = client->_event( 'BUTTON_MESSAGE_STRIP_INFO' ) ). - - page->grid( 'L6 M12 S12' - )->content( 'layout' - )->simple_form( 'Display' )->content( 'form' - )->button( - text = 'Message Toast' - press = client->_event( 'BUTTON_MESSAGE_TOAST' ) ). - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_08.clas.xml b/src/00/z2ui5_cl_app_demo_08.clas.xml deleted file mode 100644 index b5f6735d..00000000 --- a/src/00/z2ui5_cl_app_demo_08.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_08 - E - messages - basic - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_09.clas.abap b/src/00/z2ui5_cl_app_demo_09.clas.abap deleted file mode 100644 index 7ce91969..00000000 --- a/src/00/z2ui5_cl_app_demo_09.clas.abap +++ /dev/null @@ -1,367 +0,0 @@ -CLASS z2ui5_cl_app_demo_09 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA: - BEGIN OF screen, - color_01 TYPE string, - color_02 TYPE string, - color_03 TYPE string, - city TYPE string, - name TYPE string, - lastname TYPE string, - quantity TYPE string, - unit TYPE string, - END OF screen. - - TYPES: - BEGIN OF s_suggestion_items, - selkz TYPE abap_bool, - value TYPE string, - descr TYPE string, - END OF s_suggestion_items. - DATA mt_suggestion TYPE STANDARD TABLE OF s_suggestion_items WITH EMPTY KEY. - DATA mt_suggestion_sel TYPE STANDARD TABLE OF s_suggestion_items WITH EMPTY KEY. - - TYPES: - BEGIN OF s_suggestion_items_city, - value TYPE string, - descr TYPE string, - END OF s_suggestion_items_city. - DATA mt_suggestion_city TYPE STANDARD TABLE OF s_suggestion_items_city WITH EMPTY KEY. - - TYPES: - BEGIN OF s_employee, - selkz TYPE abap_bool, - city TYPE string, - nr TYPE string, - name TYPE string, - lastname TYPE string, - END OF s_employee. - DATA mt_employees_sel TYPE STANDARD TABLE OF s_employee WITH EMPTY KEY. - DATA mt_employees TYPE STANDARD TABLE OF s_employee WITH EMPTY KEY. - DATA check_initialized TYPE abap_bool. - - DATA mv_view_main TYPE string. - DATA mv_view_popup TYPE string. - PROTECTED SECTION. - - METHODS z2ui5_on_rendering - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS z2ui5_on_event - IMPORTING - client TYPE REF TO z2ui5_if_client. - METHODS z2ui5_on_init. - - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_09 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CLEAR mv_view_popup. - - IF check_initialized = abap_false. - check_initialized = abap_true. - z2ui5_on_init( ). - ENDIF. - z2ui5_on_event( client ). - - z2ui5_on_rendering( client ). - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE client->get( )-event. - - WHEN 'POPUP_TABLE_F4'. - mt_suggestion_sel = mt_suggestion. - mv_view_popup = 'POPUP_TABLE_F4'. - mv_view_main = 'MAIN'. - - WHEN 'POPUP_TABLE_F4_CUSTOM'. - mt_employees_sel = VALUE #( ). - mt_employees_sel = VALUE #( ). - mv_view_popup = 'POPUP_TABLE_F4_CUSTOM'. - mv_view_main = 'MAIN'. - - WHEN 'SEARCH'. - mt_employees_sel = mt_employees. - IF screen-city IS NOT INITIAL. - DELETE mt_employees_sel WHERE city <> screen-city. - ENDIF. - mv_view_popup = 'POPUP_TABLE_F4_CUSTOM'. - mv_view_main = 'MAIN'. - - WHEN 'POPUP_TABLE_F4_CUSTOM_CONTINUE'. - DELETE mt_employees_sel WHERE selkz = abap_false. - IF lines( mt_employees_sel ) = 1. - screen-name = mt_employees_sel[ 1 ]-name. - screen-lastname = mt_employees_sel[ 1 ]-lastname. - client->popup_message_toast( 'f4 value selected' ). - ENDIF. - - WHEN 'POPUP_TABLE_F4_CONTINUE'. - DELETE mt_suggestion_sel WHERE selkz = abap_false. - IF lines( mt_suggestion_sel ) = 1. - screen-color_02 = mt_suggestion_sel[ 1 ]-value. - client->popup_message_toast( 'f4 value selected' ). - ENDIF. - - WHEN 'BUTTON_SEND'. - client->popup_message_box( 'success - values send to the server' ). - WHEN 'BUTTON_CLEAR'. - CLEAR screen. - client->popup_message_toast( 'View initialized' ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - mt_suggestion = VALUE #( - ( descr = 'this is the color Green' value = 'GREEN' ) - ( descr = 'this is the color Blue' value = 'BLUE' ) - ( descr = 'this is the color Black' value = 'BLACK' ) - ( descr = 'this is the color Grey' value = 'GREY' ) - ( descr = 'this is the color Blue2' value = 'BLUE2' ) - ( descr = 'this is the color Blue3' value = 'BLUE3' ) ). - - mt_suggestion_city = VALUE #( - ( value = 'London' descr = 'London' ) - ( value = 'Paris' descr = 'Paris' ) - ( value = 'Rome' descr = 'Rome' ) ). - - mt_employees = VALUE #( - ( city = 'London' name = 'Tom' lastname = 'lastname1' nr = '00001' ) - ( city = 'London' name = 'Tom2' lastname = 'lastname2' nr = '00002' ) - ( city = 'London' name = 'Tom3' lastname = 'lastname3' nr = '00003' ) - ( city = 'London' name = 'Tom4' lastname = 'lastname4' nr = '00004' ) - ( city = 'Rome' name = 'Michaela1' lastname = 'lastname5' nr = '00005' ) - ( city = 'Rome' name = 'Michaela2' lastname = 'lastname6' nr = '00006' ) - ( city = 'Rome' name = 'Michaela3' lastname = 'lastname7' nr = '00007' ) - ( city = 'Rome' name = 'Michaela4' lastname = 'lastname8' nr = '00008' ) - ( city = 'Paris' name = 'Hermine1' lastname = 'lastname9' nr = '00009' ) - ( city = 'Paris' name = 'Hermine2' lastname = 'lastname10' nr = '00010' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) - ( city = 'Paris' name = 'Hermine3' lastname = 'lastname11' nr = '00011' ) ). - - ENDMETHOD. - - - METHOD z2ui5_on_rendering. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Value Help Examples' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637470531136921600' - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(form) = page->grid( 'L7 M7 S7' - )->content( 'layout' - )->simple_form( 'Input with Value Help' - )->content( 'form' ). - - form->label( 'Input with sugestion items' - )->input( - value = client->_bind( screen-color_01 ) - placeholder = 'fill in your favorite colour' - suggestionitems = client->_bind_one( mt_suggestion ) - showsuggestion = abap_true )->get( - )->suggestion_items( )->get( - )->list_item( - text = '{VALUE}' - additionaltext = '{DESCR}' ). - - form->label( 'Input only numbers allowed' - )->input( - value = client->_bind( screen-quantity ) - type = 'Number' - placeholder = 'quantity' ). - - form->label( 'Input with F4' - )->input( - value = client->_bind( screen-color_02 ) - placeholder = 'fill in your favorite colour' - showvaluehelp = abap_true - valuehelprequest = client->_event( 'POPUP_TABLE_F4' ) ). - - form->label( 'Custom F4 Popup' - )->input( - value = client->_bind( screen-name ) - placeholder = 'name' - showvaluehelp = abap_true - valuehelprequest = client->_event( 'POPUP_TABLE_F4_CUSTOM' ) - )->input( - value = client->_bind( screen-lastname ) - placeholder = 'lastname' - showvaluehelp = abap_true - valuehelprequest = client->_event( 'POPUP_TABLE_F4_CUSTOM' ) ). - - page->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Clear' - press = client->_event( 'BUTTON_CLEAR' ) - type = 'Reject' - enabled = abap_false - icon = 'sap-icon://delete' - )->button( - text = 'Send to Server' - press = client->_event( 'BUTTON_SEND' ) - enabled = abap_false - type = 'Success' ). - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory( ). - CASE mv_view_popup. - - WHEN 'POPUP_TABLE_F4'. - - popup = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( 'abap2UI5 - F4 Value Help' - )->table( - mode = 'SingleSelectLeft' - items = client->_bind( mt_suggestion_sel ) - )->columns( - )->column( '20rem' - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Description' - )->get_parent( )->get_parent( - )->items( - )->column_list_item( selected = '{SELKZ}' - )->cells( - )->text( '{VALUE}' - )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_TABLE_F4_CONTINUE' ) - type = 'Emphasized' ). - - WHEN 'POPUP_TABLE_F4_CUSTOM'. - - popup = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( 'abap2UI5 - F4 Value Help' ). - - popup->simple_form( - )->label( 'Location' - )->input( - value = client->_bind( screen-city ) - suggestionitems = client->_bind_one( mt_suggestion_city ) - showsuggestion = abap_true )->get( - )->suggestion_items( )->get( - )->list_item( - text = '{VALUE}' - additionaltext = '{DESCR}' - )->get_parent( )->get_parent( - )->button( - text = 'search...' - press = client->_event( 'SEARCH' ) ). - - DATA(tab) = popup->table( - headertext = 'Employees' - mode = 'SingleSelectLeft' - items = client->_bind( mt_employees_sel ) ). - - tab->columns( - )->column( '10rem' - )->text( 'City' )->get_parent( - )->column( '10rem' - )->text( 'Nr' )->get_parent( - )->column( '15rem' - )->text( 'Name' )->get_parent( - )->column( '30rem' - )->text( 'Lastname' )->get_parent( ). - - tab->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - )->text( '{CITY}' - )->text( '{NR}' - )->text( '{NAME}' - )->text( '{LASTNAME}' ). - - popup->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_TABLE_F4_CUSTOM_CONTINUE' ) - type = 'Emphasized' ). - - ENDCASE. - - client->set_next( VALUE #( - xml_main = page->get_root( )->xml_get( ) - xml_popup = popup->get_root( )->xml_get( ) - ) ). - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_09.clas.xml b/src/00/z2ui5_cl_app_demo_09.clas.xml deleted file mode 100644 index aaf39bed..00000000 --- a/src/00/z2ui5_cl_app_demo_09.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_09 - E - selscreen - value help - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_10.clas.abap b/src/00/z2ui5_cl_app_demo_10.clas.abap deleted file mode 100644 index be78e224..00000000 --- a/src/00/z2ui5_cl_app_demo_10.clas.abap +++ /dev/null @@ -1,92 +0,0 @@ -CLASS z2ui5_cl_app_demo_10 DEFINITION PUBLIC. - - PUBLIC SECTION. - INTERFACES z2ui5_if_app. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_10 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CASE client->get( )-event. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Demo Layout' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - ). - - page->header_content( - )->button( text = 'button' - )->text( 'text' - )->link( - text = 'link' target = '_blank' - href = 'https://twitter.com/OblomovDev' - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - ). - - page->sub_header( - )->overflow_toolbar( - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' - )->toolbar_spacer( - )->text( 'subheader' - )->toolbar_spacer( - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' ). - - DATA(grid) = page->grid( 'L4 M4 S4' )->content( 'layout' ). - - grid->simple_form( 'Grid width 33%' )->content( 'form' - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' ). - - grid->simple_form( 'Grid width 33%' )->content( 'form' - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' ). - - grid->simple_form( 'Grid width 33%' )->content( 'form' - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' ). - - grid = page->grid( 'L12 M12 S12' )->content( 'layout' ). - - grid->simple_form( 'grid width 100%' )->content( 'form' - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' ). - - page->footer( - )->overflow_toolbar( - )->button( text = 'button' - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' - )->toolbar_spacer( - )->text( 'footer' - )->toolbar_spacer( - )->text( 'text' - )->link( text = 'link' href = 'https://twitter.com/OblomovDev' - )->button( text = 'reject' type = 'Reject' - )->button( text = 'accept' type = 'Success' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_10.clas.xml b/src/00/z2ui5_cl_app_demo_10.clas.xml deleted file mode 100644 index 3b47ae62..00000000 --- a/src/00/z2ui5_cl_app_demo_10.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_10 - E - basic - layout - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_11.clas.abap b/src/00/z2ui5_cl_app_demo_11.clas.abap deleted file mode 100644 index b6ea7709..00000000 --- a/src/00/z2ui5_cl_app_demo_11.clas.abap +++ /dev/null @@ -1,137 +0,0 @@ -CLASS z2ui5_cl_app_demo_11 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - selkz TYPE abap_bool, - 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 check_editable_active TYPE abap_bool. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_11 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - check_editable_active = abap_false. - t_tab = VALUE #( - ( title = 'entry 01' value = 'red' info = 'completed' descr = 'this is a description' checkbox = abap_true ) - ( title = 'entry 02' value = 'blue' info = 'completed' descr = 'this is a description' checkbox = abap_true ) - ( title = 'entry 03' value = 'green' info = 'completed' descr = 'this is a description' checkbox = abap_true ) - ( title = 'entry 04' value = 'orange' info = 'completed' descr = 'this is a description' checkbox = abap_true ) - ( title = 'entry 05' value = 'grey' info = 'completed' descr = 'this is a description' checkbox = abap_true ) ). - - ENDIF. - - - CASE client->get( )-event. - - WHEN 'BUTTON_EDIT'. - check_editable_active = xsdbool( check_editable_active = abap_false ). - - WHEN 'BUTTON_DELETE'. - DELETE t_tab WHERE selkz = abap_true. - - WHEN 'BUTTON_ADD'. - INSERT VALUE #( ) INTO TABLE t_tab. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Tables and editable' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1630240894581608448' - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(tab) = page->table( - items = client->_bind( t_tab ) - mode = 'MultiSelect' - )->header_toolbar( - )->overflow_toolbar( - )->title( 'title of the table' - )->toolbar_spacer( - )->button( - icon = 'sap-icon://delete' - text = 'delete selected row' - press = client->_event( 'BUTTON_DELETE' ) - )->button( - icon = 'sap-icon://add' - text = 'add' - press = client->_event( 'BUTTON_ADD' ) - )->button( - icon = 'sap-icon://edit' - text = SWITCH #( check_editable_active WHEN abap_true THEN |display| ELSE |edit| ) - press = client->_event( 'BUTTON_EDIT' ) - )->get_parent( )->get_parent( ). - - tab->columns( - )->column( - )->text( 'Title' )->get_parent( - )->column( - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Info' )->get_parent( - )->column( - )->text( 'Description' )->get_parent( - )->column( - )->text( 'Checkbox' ). - - IF check_editable_active = abap_true. - - tab->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - )->input( '{TITLE}' - )->input( '{VALUE}' - )->input( '{INFO}' - )->input( '{DESCR}' - )->checkbox( '{CHECKBOX}' ). - - ELSE. - - tab->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - )->text( '{TITLE}' - )->text( '{VALUE}' - )->text( '{INFO}' - )->text( '{DESCR}' - )->checkbox( - selected = '{CHECKBOX}' - enabled = abap_false ). - - ENDIF. - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_11.clas.xml b/src/00/z2ui5_cl_app_demo_11.clas.xml deleted file mode 100644 index 99e27a91..00000000 --- a/src/00/z2ui5_cl_app_demo_11.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_11 - E - tab - editable - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_12.clas.abap b/src/00/z2ui5_cl_app_demo_12.clas.abap deleted file mode 100644 index f4c0dc29..00000000 --- a/src/00/z2ui5_cl_app_demo_12.clas.abap +++ /dev/null @@ -1,184 +0,0 @@ -CLASS z2ui5_cl_app_demo_12 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_popup_view TYPE string. - DATA mv_main_view TYPE string. - DATA mv_check_initialized TYPE abap_bool. - DATA mv_set_prev_view TYPE abap_bool. - - DATA mv_check_popup TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_12 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF mv_check_initialized = abap_false. - mv_check_initialized = abap_true. - mv_main_view = 'MAIN'. - ENDIF. - - mv_set_prev_view = ''. - mv_popup_view = ''. - - IF mv_check_popup = abap_true. - mv_check_popup = abap_false. - DATA(app) = CAST z2ui5_cl_app_demo_20( client->get_app( client->get( )-id_prev_app ) ). - client->popup_message_toast( app->mv_event && ` pressed` ). - ENDIF. - - CASE client->get( )-event. - - WHEN 'BUTTON_POPUP_01'. - mv_popup_view = 'POPUP_DECIDE'. - mv_main_view = ''. - - WHEN 'POPUP_DECIDE_CONTINUE'. - mv_main_view = 'MAIN'. - client->popup_message_toast( 'continue pressed' ). - - WHEN 'POPUP_DECIDE_CANCEL'. - mv_main_view = 'MAIN'. - client->popup_message_toast( 'cancel pressed' ). - - WHEN 'BUTTON_POPUP_02'. - mv_main_view = 'MAIN'. - mv_popup_view = 'POPUP_DECIDE'. - - WHEN 'BUTTON_POPUP_03'. - mv_main_view = 'MAIN'. - mv_popup_view = 'POPUP_INFO_FRONTEND_CLOSE'. - - WHEN 'BUTTON_POPUP_04'. - mv_main_view = ``. - mv_popup_view = 'POPUP_DECIDE'. - - WHEN 'BUTTON_POPUP_05'. - mv_check_popup = abap_true. - client->nav_app_call( z2ui5_cl_app_demo_20=>factory( - i_text = '(new app )this is a popup to decide, the text is send from the previous app and the answer will be send back' - i_cancel_text = 'Cancel ' - i_cancel_event = 'POPUP_DECIDE_CANCEL' - i_confirm_text = 'Continue' - i_confirm_event = 'POPUP_DECIDE_CONTINUE' - ) ). - RETURN. - - WHEN 'BUTTON_POPUP_06'. - mv_check_popup = abap_true. - client->nav_app_call( z2ui5_cl_app_demo_20=>factory( - i_text = '(new app )this is a popup to decide, the text is send from the previous app and the answer will be send back' - i_cancel_text = 'Cancel' - i_cancel_event = 'POPUP_DECIDE_CANCEL' - i_confirm_text = 'Continue' - i_confirm_event = 'POPUP_DECIDE_CONTINUE' ) ). - RETURN. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(lo_main) = z2ui5_cl_xml_view=>factory( )->shell( ). - - CASE mv_main_view. - - WHEN 'MAIN'. - - DATA(page) = lo_main->page( - title = 'abap2UI5 - Popups' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout' - )->simple_form( 'Popup in same App' )->content( 'form' - )->label( 'Demo' - )->button( - text = 'popup rendering, no background rendering' - press = client->_event( 'BUTTON_POPUP_01' ) - )->label( 'Demo' - )->button( - text = 'popup rendering, background rendering' - press = client->_event( 'BUTTON_POPUP_02' ) - )->label( 'Demo' - )->button( - text = 'popup rendering, background rendering - close (no roundtrip)' - press = client->_event( 'BUTTON_POPUP_03' ) - )->label( 'Demo' - )->button( - text = 'popup rendering, hold background view' - press = client->_event( val = 'BUTTON_POPUP_04' hold_view = abap_true ) - )->get_parent( )->get_parent( ). - - grid->simple_form( 'Popup in new App' )->content( 'form' - )->label( 'Demo' - )->button( - text = 'popup rendering, no background' - press = client->_event( 'BUTTON_POPUP_05' ) - )->label( 'Demo' - )->button( - text = 'popup rendering, hold previous view' - press = client->_event( val = 'BUTTON_POPUP_06' hold_view = abap_true ) ). - - ENDCASE. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - CASE mv_popup_view. - - WHEN 'POPUP_DECIDE'. - - lo_popup->dialog( 'Popup - Decide' - )->vbox( - )->text( 'this is a popup to decide, you have to make a decision now...' - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'POPUP_DECIDE_CANCEL' ) - )->button( - text = 'Continue' - press = client->_event( 'POPUP_DECIDE_CONTINUE' ) - type = 'Emphasized' ). - - WHEN 'POPUP_INFO_FRONTEND_CLOSE'. - - lo_popup->dialog( 'Popup - Info' - )->vbox( - )->text( 'this is an information, press close to go back to the main view without a server roundtrip' - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'close' - press = client->_event_close_popup( ) - type = 'Emphasized' ). - - ENDCASE. - - DATA(ls_next) = VALUE z2ui5_if_client=>ty_s_next( - xml_main = lo_main->get_root( )->xml_get( ) - xml_popup = COND #( WHEN mv_popup_view IS NOT INITIAL THEN lo_popup->get_root( )->xml_get( ) ) - ). - IF mv_main_view = ``. - ls_next-xml_main = ``. - ENDIF. - client->set_next( ls_next ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_12.clas.xml b/src/00/z2ui5_cl_app_demo_12.clas.xml deleted file mode 100644 index 62e76345..00000000 --- a/src/00/z2ui5_cl_app_demo_12.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_12 - E - basic - popups and flow - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_13.clas.abap b/src/00/z2ui5_cl_app_demo_13.clas.abap deleted file mode 100644 index 54a0e694..00000000 --- a/src/00/z2ui5_cl_app_demo_13.clas.abap +++ /dev/null @@ -1,377 +0,0 @@ -CLASS z2ui5_cl_app_demo_13 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_s_spfli, - selkz TYPE abap_bool, - carrid TYPE c LENGTH 3, - connid TYPE n LENGTH 4, - countryfr TYPE c LENGTH 3, - cityfrom TYPE c LENGTH 20, - airpfrom TYPE c LENGTH 3, - countryto TYPE c LENGTH 3, - cityto TYPE c LENGTH 20, - airpto TYPE c LENGTH 3, - END OF ty_s_spfli. - - TYPES ty_t_table TYPE STANDARD TABLE OF ty_s_spfli WITH EMPTY KEY. - - DATA mv_view TYPE string. - - DATA: - BEGIN OF ms_import, - t_table TYPE ty_t_table, - segment_key TYPE string, - editor TYPE string, - END OF ms_import. - - DATA: - BEGIN OF ms_export, - t_table TYPE ty_t_table, - segment_key TYPE string, - editor TYPE string, - END OF ms_export. - - DATA: - BEGIN OF ms_edit, - t_table TYPE ty_t_table, - check_active TYPE abap_bool, - END OF ms_edit. - - DATA check_initialized TYPE abap_bool. - "dummy helper - not needed when using db - DATA st_db TYPE ty_t_table. - - PROTECTED SECTION. - - METHODS z2ui5_on_event - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS z2ui5_on_render_view_import - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS z2ui5_on_render_view_edit - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS z2ui5_on_render_view_export - IMPORTING - client TYPE REF TO z2ui5_if_client. - - PRIVATE SECTION. - -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_13 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - "dummy helper - not needed when using db - lcl_db=>app = me. - - - IF check_initialized = abap_false. - check_initialized = abap_true. - - ms_import-segment_key = 'json'. - ms_import-editor = lcl_db=>get_test_data_json( ). - ms_export-segment_key = 'json'. - mv_view = 'IMPORT_TABLE'. - - ENDIF. - - z2ui5_on_event( client ). - - CASE mv_view. - WHEN 'IMPORT_TABLE'. - z2ui5_on_render_view_import( client ). - WHEN 'EDIT_TABLE'. - z2ui5_on_render_view_edit( client ). - WHEN 'EXPORT_TABLE'. - z2ui5_on_render_view_export( client ). - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE client->get( )-event. - - WHEN 'IMPORT_DB'. - ms_import-t_table = SWITCH #( ms_import-segment_key - WHEN 'json' THEN lcl_db=>get_table_by_json( ms_import-editor ) - WHEN 'csv' THEN lcl_db=>get_table_by_csv( ms_import-editor ) - WHEN 'xml' THEN lcl_db=>get_table_by_xml( ms_import-editor ) ). - - lcl_db=>db_save( ms_import-t_table ). - client->popup_message_box( 'Table data imported successfully' ). - - WHEN 'EXPORT_DB'. - ms_export-t_table = lcl_db=>db_read( ). - ms_export-editor = SWITCH #( ms_export-segment_key - WHEN 'json' THEN lcl_db=>get_json_by_table( ms_export-t_table ) - WHEN 'csv' THEN lcl_db=>get_csv_by_table( ms_export-t_table ) - WHEN 'xml' THEN lcl_db=>get_xml_by_table( ms_export-t_table ) ). - - client->popup_message_box( 'Table data exported successfully' ). - - WHEN 'IMPORT_CLEAR'. - CLEAR ms_import-editor. - - WHEN 'EDIT_DB_READ'. - ms_edit-t_table = lcl_db=>db_read( ). - client->popup_message_box( 'Table read successfully' ). - - WHEN 'EDIT_DB_SAVE'. - lcl_db=>db_save( ms_edit-t_table ). - client->popup_message_box( 'Table data saved to database successfully' ). - - WHEN 'EDIT_ROW_DELETE'. - DELETE ms_edit-t_table WHERE selkz = abap_true. - - WHEN 'EDIT_CHANGE_MODE'. - ms_edit-check_active = xsdbool( ms_edit-check_active = abap_false ). - - WHEN 'EDIT_ROW_ADD'. - INSERT VALUE #( ) INTO TABLE ms_edit-t_table. - - WHEN 'BTN_IMPORT'. - mv_view = 'IMPORT_TABLE'. - WHEN 'BTN_EDIT'. - mv_view = 'EDIT_TABLE'. - WHEN 'BTN_EXPORT'. - mv_view = 'EXPORT_TABLE'. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_render_view_edit. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2ui5 - Table Maintenance' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = `https://twitter.com/OblomovDev/status/1634206964291911682` - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->sub_header( - )->overflow_toolbar( - )->button( - text = '(1) Import Data' - press = client->_event( 'BTN_IMPORT' ) - )->button( - text = '(2) Edit Data' - press = client->_event( 'BTN_EDIT' ) - enabled = abap_false - )->button( - text = '(3) Export Data' - press = client->_event( 'BTN_EXPORT' ) - )->get_parent( )->get_parent( ). - - DATA(grid) = page->grid( 'L7 M7 S7' )->content( 'layout' ). - - grid->simple_form( '2. Edit Data' - )->content( 'form' - )->label( 'Table' - )->input( 'SPFLI' ). - - grid = page->grid( 'L12 M12 S12' )->content( 'layout' ). - - DATA(cont) = grid->simple_form( )->content( 'form' ). - - cont->overflow_toolbar( - )->button( - text = 'Reload' - icon = 'sap-icon://refresh' - press = client->_event( 'EDIT_DB_READ' ) - )->toolbar_spacer( - )->button( - text = 'Delete Row' - icon = 'sap-icon://delete' - press = client->_event( 'EDIT_ROW_DELETE' ) - )->button( - text = 'Add Row' - icon = 'sap-icon://add' - press = client->_event( 'EDIT_ROW_ADD' ) ). - - DATA(scroll) = cont->scroll_container( vertical = abap_true horizontal = abap_true ). - - DATA(tab) = scroll->table( - width = '100rem' - items = client->_bind( ms_edit-t_table ) - mode = 'MultiSelect' ). - - DATA(lt_fields) = lcl_db=>get_fieldlist_by_table( ms_edit-t_table ). - - DATA(lo_columns) = tab->columns( ). - LOOP AT lt_fields INTO DATA(lv_field) FROM 2. - lo_columns->column( )->text( lv_field ). - ENDLOOP. - - DATA(lo_cells) = tab->items( )->column_list_item( selected = '{SELKZ}' )->cells( ). - LOOP AT lt_fields INTO lv_field FROM 2. - lo_cells->input( `{` && lv_field && `}` ). - ENDLOOP. - - page->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Save' - press = client->_event( 'EDIT_DB_SAVE' ) - type = 'Emphasized' - icon = 'sap-icon://upload-to-cloud' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_view_export. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2ui5 - Table Maintenance' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' - href = `https://twitter.com/OblomovDev/status/1634206964291911682` - )->link( - text = 'Source_Code' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->sub_header( - )->overflow_toolbar( - )->button( - text = '(1) Import Data' - press = client->_event( 'BTN_IMPORT' ) - )->button( - text = '(2) Edit Data' - press = client->_event( 'BTN_EDIT' ) - )->button( - text = '(3) Export Data' - press = client->_event( 'BTN_EXPORT' ) - enabled = abap_false - )->get_parent( )->get_parent( ). - - DATA(grid) = page->grid( 'L7 M7 S7' )->content( 'layout' ). - - grid->simple_form( '3. Export Data' - )->content( 'form' - )->label( 'Table' - )->input( 'SPFLI' - )->label( 'Format' - )->segmented_button( client->_bind( ms_export-segment_key ) - )->items( - )->segmented_button_item( key = 'json' text = 'json' - )->segmented_button_item( key = 'csv' text = 'csv' - )->segmented_button_item( key = 'xml' text = 'xml' ). - - grid = page->grid( 'L12 M12 S12' )->content( 'layout' ). - - grid->scroll_container( '75%' - )->code_editor( - type = COND #( WHEN ms_export-segment_key = 'csv' THEN |plain_text| ELSE ms_import-segment_key ) - value = client->_bind( ms_export-editor ) - editable = abap_false ). - - page->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Export' - press = client->_event( 'EXPORT_DB' ) - type = 'Emphasized' - icon = 'sap-icon://download-from-cloud' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_view_import. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Table Maintenance' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' - href = `https://twitter.com/OblomovDev/status/1634206964291911682` - )->link( - text = 'Source_Code' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->sub_header( - )->overflow_toolbar( - )->button( - text = '(1) Import Data' - press = client->_event( 'BTN_IMPORT' ) - enabled = abap_false - )->button( - text = '(2) Edit Data' - press = client->_event( 'BTN_EDIT' ) - )->button( - text = '(3) Export Data' - press = client->_event( 'BTN_EXPORT' ) - )->get_parent( )->get_parent( ). - - DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout' ). - - grid->simple_form( '1. Import Data' - )->content( 'form' - )->label( 'Table' - )->input( 'SPFLI' - )->label( 'Format' - )->segmented_button( client->_bind( ms_import-segment_key ) )->get( - )->items( )->get( - )->segmented_button_item( key = 'json' text = 'json' - )->segmented_button_item( key = 'csv' text = 'csv' - )->segmented_button_item( key = 'xml' text = 'xml' ). - - grid = page->grid( 'L12 M12 S12' )->content( 'layout' ). - - grid->scroll_container( '75%' - )->code_editor( - type = COND #( WHEN ms_import-segment_key = 'csv' THEN |plain_text| ELSE ms_import-segment_key ) - value = client->_bind( ms_import-editor ) - editable = abap_true ). - - page->footer( )->overflow_toolbar( - )->button( - text = 'Clear' - press = client->_event( 'IMPORT_CLEAR' ) - icon = 'sap-icon://delete' - )->toolbar_spacer( - )->button( - text = 'Import' - press = client->_event( 'IMPORT_DB' ) - type = 'Emphasized' - icon = 'sap-icon://upload-to-cloud' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_13.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_13.clas.locals_imp.abap deleted file mode 100644 index 9c587c6b..00000000 --- a/src/00/z2ui5_cl_app_demo_13.clas.locals_imp.abap +++ /dev/null @@ -1,312 +0,0 @@ -CLASS lcl_db DEFINITION. - - - PUBLIC SECTION. - - - TYPES ty_t_table TYPE z2ui5_cl_app_demo_13=>ty_t_table. - - CLASS-DATA app TYPE REF TO z2ui5_cl_app_demo_13. - "CLASS-DATA st_table TYPE ty_t_table. - - CLASS-METHODS generate_test_data. - - CLASS-METHODS get_table_by_json - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_xml - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_csv - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_csv_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_xml_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_json_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_fieldlist_by_table - IMPORTING - it_table TYPE ty_t_table - RETURNING - VALUE(result) TYPE string_table. - - CLASS-METHODS db_save - IMPORTING - value TYPE ty_t_table. - - CLASS-METHODS db_read - RETURNING - VALUE(result) TYPE ty_t_table. - CLASS-METHODS get_test_data_json - RETURNING - VALUE(result) TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_db IMPLEMENTATION. - - METHOD generate_test_data. - - app->st_db = VALUE #( - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ). - - ENDMETHOD. - - - METHOD get_table_by_json. - - DATA lt_tab TYPE ty_t_table. - - /ui2/cl_json=>deserialize( - EXPORTING - json = val -* jsonx = -* pretty_name = -* assoc_arrays = -* assoc_arrays_opt = -* name_mappings = -* conversion_exits = -* hex_as_base64 = - CHANGING - data = lt_tab - ). - - result = lt_tab. - - ENDMETHOD. - - - METHOD get_table_by_xml. - - DATA lt_tab TYPE ty_t_table. - - CALL TRANSFORMATION id SOURCE xml = val RESULT data = lt_tab. - - result = lt_tab. - - ENDMETHOD. - - METHOD get_table_by_csv. - - SPLIT val AT ';' INTO TABLE DATA(lt_cols). - - LOOP AT lt_cols INTO DATA(lv_field). - - DATA(ls_row) = VALUE z2ui5_cl_app_demo_13=>ty_s_spfli( ). - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(). - IF sy-subrc <> 0. - EXIT. - ENDIF. - = lv_field. - lv_index = lv_index + 1. - ENDDO. - INSERT ls_row INTO TABLE result. - - ENDLOOP. - - ENDMETHOD. - - METHOD db_save. - - "normally modify database here - - "test scenario, therefore write internal table instead - app->st_db = value. - - ENDMETHOD. - - METHOD db_read. - - "normally read database here - - "test scenario, therefore read internal table instead - - result = app->st_db. - - ENDMETHOD. - - METHOD get_csv_by_table. - - LOOP AT val INTO DATA(ls_row). - - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_index = lv_index + 1. - result = result && && ';'. - ENDDO. - result = result && cl_abap_char_utilities=>cr_lf. - ENDLOOP. - - - ENDMETHOD. - - METHOD get_json_by_table. - - result = /ui2/cl_json=>serialize( - val -* compress = -* name = -* pretty_name = -* type_descr = -* assoc_arrays = -* ts_as_iso8601 = -* expand_includes = -* assoc_arrays_opt = -* numc_as_string = -* name_mappings = -* conversion_exits = - " format_output = abap_true -* hex_as_base64 = - ). - - - ENDMETHOD. - - METHOD get_xml_by_table. - - CALL TRANSFORMATION id SOURCE values = val RESULT XML result. - - ENDMETHOD. - - METHOD get_fieldlist_by_table. - - DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ). - DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ). - - DATA(lt_comp) = lo_struc->get_components( ). - - LOOP AT lt_comp INTO DATA(ls_comp). - INSERT ls_comp-name INTO TABLE result. - ENDLOOP. - - ENDMETHOD. - - - METHOD get_test_data_json. - - result = `[` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` }` && |\n| && - `]`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_13.clas.xml b/src/00/z2ui5_cl_app_demo_13.clas.xml deleted file mode 100644 index baa76f3f..00000000 --- a/src/00/z2ui5_cl_app_demo_13.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_13 - E - demo - table maintenance - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_14.clas.abap b/src/00/z2ui5_cl_app_demo_14.clas.abap deleted file mode 100644 index 63331c2f..00000000 --- a/src/00/z2ui5_cl_app_demo_14.clas.abap +++ /dev/null @@ -1,109 +0,0 @@ -CLASS z2ui5_cl_app_demo_14 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_type TYPE string. - DATA mv_path TYPE string. - DATA mv_editor TYPE string. - DATA mv_check_editable TYPE abap_bool. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_14 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - mv_path = '../../demo/text'. - mv_type = 'plain_text'. - ENDIF. - - CASE client->get( )-event. - - 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( ) - WHEN mv_path CS 'js' THEN lcl_mime_api=>read_js( ) - ). - client->popup_message_toast( 'Download successfull' ). - - WHEN 'DB_SAVE'. - lcl_mime_api=>save_data( ). - 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_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( )->page( - title = 'abap2UI5 - MIME Editor' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( text = 'Demo' target = '_blank' href = 'https://twitter.com/OblomovDev/status/1631562906570575875' - )->link( text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout' ). - - grid->simple_form( title = 'File' editable = abap_true )->content( 'form' - )->label( 'path' - )->input( client->_bind( mv_path ) - )->label( 'Option' - )->input( - value = client->_bind( mv_type ) - suggestionitems = client->_bind_one( lcl_mime_api=>get_editor_type( ) ) )->get( - )->suggestion_items( - )->list_item( text = '{NAME}' additionaltext = '{VALUE}' - )->get_parent( )->get_parent( - )->button( - text = 'Download' - press = client->_event( 'DB_LOAD' ) - icon = 'sap-icon://download-from-cloud' ). - - grid = page->grid( 'L12 M12 S12' )->content( 'layout' ). - - grid->simple_form( 'Editor' )->content( 'form' - )->scroll_container( '75%' - )->code_editor( - type = mv_type - editable = mv_check_editable - value = client->_bind( mv_editor ) ). - - page->footer( )->overflow_toolbar( - )->button( - text = 'Clear' - press = client->_event( 'CLEAR' ) - icon = 'sap-icon://delete' - )->toolbar_spacer( - )->button( - text = 'Edit' - press = client->_event( 'EDIT' ) - icon = 'sap-icon://edit' - )->button( - text = 'Upload' - press = client->_event( 'DB_SAVE' ) - type = 'Emphasized' - icon = 'sap-icon://upload-to-cloud' - enabled = xsdbool( mv_editor IS NOT INITIAL ) ). - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_14.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_14.clas.locals_imp.abap deleted file mode 100644 index c7b3f6f5..00000000 --- a/src/00/z2ui5_cl_app_demo_14.clas.locals_imp.abap +++ /dev/null @@ -1,190 +0,0 @@ -CLASS lcl_mime_api DEFINITION FINAL. - - PUBLIC SECTION. - CLASS-METHODS read_abap - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_json - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_js - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_yaml - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_text - RETURNING - VALUE(r_result) TYPE string. - - TYPES: - BEGIN OF ty_s_suggest, - name TYPE string, - value TYPE string, - END OF ty_s_suggest. - TYPES ty_t_suggest TYPE STANDARD TABLE OF ty_s_suggest WITH EMPTY KEY. - - CLASS-METHODS get_editor_type - RETURNING - VALUE(r_result) TYPE ty_t_suggest. - CLASS-METHODS save_data. - - PROTECTED SECTION. - - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_mime_api IMPLEMENTATION. - - - METHOD read_abap. - -r_result = `METHOD SELECT_FILES.` && |\n| && - |\n| && - ` DATA: LV_RET_CODE TYPE I,` && |\n| && - ` LV_USR_AXN TYPE I.` && |\n| && - |\n| && - ` CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(` && |\n| && - ` EXPORTING` && |\n| && - ` WINDOW_TITLE = 'Select file'` && |\n| && - ` MULTISELECTION = 'X'` && |\n| && - ` CHANGING` && |\n| && - ` FILE_TABLE = ME->PT_FILETAB` && |\n| && - ` RC = LV_RET_CODE` && |\n| && - ` USER_ACTION = LV_USR_AXN` && |\n| && - ` EXCEPTIONS` && |\n| && - ` FILE_OPEN_DIALOG_FAILED = 1` && |\n| && - ` CNTL_ERROR = 2` && |\n| && - ` ERROR_NO_GUI = 3` && |\n| && - ` NOT_SUPPORTED_BY_GUI = 4` && |\n| && - ` OTHERS = 5` && |\n| && - ` ).` && |\n| && - ` IF SY-SUBRC <> 0 OR` && |\n| && - ` LV_USR_AXN = CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.` && |\n| && - ` RAISE EX_FILE_SEL_ERR.` && |\n| && - ` ENDIF.` && |\n| && - |\n| && - ` ENDMETHOD. `. - - ENDMETHOD. - - - METHOD read_json. - - r_result = `{` && |\n| && - ` "quiz": {` && |\n| && - ` "sport": {` && |\n| && - ` "q1": {` && |\n| && - ` "test" : false,` && |\n| && - ` "question": "Which one is correct team name in NBA?",` && |\n| && - ` "options": [` && |\n| && - ` "New York Bulls",` && |\n| && - ` "Los Angeles Kings",` && |\n| && - ` "Golden State Warriros",` && |\n| && - ` "Huston Rocket"` && |\n| && - ` ],` && |\n| && - ` "answer": "Huston Rocket"` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - ` "maths": {` && |\n| && - ` "q1": {` && |\n| && - ` "question": "5 + 7 = ?",` && |\n| && - ` "options": [` && |\n| && - ` "10",` && |\n| && - ` "11",` && |\n| && - ` "12",` && |\n| && - ` "13"` && |\n| && - ` ],` && |\n| && - ` "answer": "12"` && |\n| && - ` },` && |\n| && - ` "q2": {` && |\n| && - ` "question": true,` && |\n| && - ` "options": [` && |\n| && - ` "1",` && |\n| && - ` "2",` && |\n| && - ` "3",` && |\n| && - ` "4"` && |\n| && - ` ],` && |\n| && - ` "answer": 487829` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_js. - - r_result = `function showAlert() {` && |\n| && - ` alert("Alert from JS file");` && |\n| && - `}` && |\n| && - |\n| && - `function updateHeading() {` && |\n| && - ` document.getElementById('heading').innerHTML = 'Heading changed with JS';` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_yaml. - - r_result = `# Employee records` && |\n| && - `- martin:` && |\n| && - ` name: Martin Developer` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - python` && |\n| && - ` - perl` && |\n| && - ` - pascal` && |\n| && - `- tabitha:` && |\n| && - ` name: Tabitha Bitumen` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - lisp` && |\n| && - ` - fortran` && |\n| && - ` - erlang`. - - ENDMETHOD. - - - METHOD read_text. - r_result = `TXT test file` && |\n| && - `Purpose: Provide example of this file type` && |\n| && - `Document file type: TXT` && |\n| && - `Version: 1.0` && |\n| && - `Remark:` && |\n| && - |\n| && - `Example content:` && |\n| && - `The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or mus` && -`t be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speak` && -`ing countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.` && |\n| && - |\n| && - `John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is o` && -`ften John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also` && -` the name of a 2002 American television series.`. - ENDMETHOD. - - METHOD get_editor_type. - - DATA(lv_types) = `abap, abc, actionscript, ada, apache_conf, applescript, asciidoc, assembly_x86, autohotkey, batchfile, bro, c9search, c_cpp, cirru, clojure, cobol, coffee, coldfusion, csharp, css, curly, d, dart, diff, django, dockerfile, ` && -`dot, drools, eiffel, yaml, ejs, elixir, elm, erlang, forth, fortran, ftl, gcode, gherkin, gitignore, glsl, gobstones, golang, groovy, haml, handlebars, haskell, haskell_cabal, haxe, hjson, html, html_elixir, html_ruby, ini, io, jack, jade, java, ja` && -`vascri` && -`pt, json, jsoniq, jsp, jsx, julia, kotlin, latex, lean, less, liquid, lisp, live_script, livescript, logiql, lsl, lua, luapage, lucene, makefile, markdown, mask, matlab, mavens_mate_log, maze, mel, mips_assembler, mipsassembler, mushcode, mysql, ni` && -`x, nsis, objectivec, ocaml, pascal, perl, pgsql, php, plain_text, powershell, praat, prolog, properties, protobuf, python, r, razor, rdoc, rhtml, rst, ruby, rust, sass, scad, scala, scheme, scss, sh, sjs, smarty, snippets, soy_template, space, sql,` && -` sqlserver, stylus, svg, swift, swig, tcl, tex, text, textile, toml, tsx, twig, typescript, vala, vbscript, velocity, verilog, vhdl, wollok, xml, xquery, terraform, slim, redshift, red, puppet, php_laravel_blade, mixal, jssm, fsharp, edifact,` && -` csp, cssound_score, cssound_orchestra, cssound_document`. - SPLIT lv_types AT ',' INTO TABLE DATA(lt_types). - - - r_result = VALUE #( FOR row IN lt_types ( name = shift_right( shift_left( row ) ) value = shift_right( shift_left( row ) ) ) ). - - ENDMETHOD. - - - METHOD save_data. - "save data here - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_14.clas.xml b/src/00/z2ui5_cl_app_demo_14.clas.xml deleted file mode 100644 index 4da649c9..00000000 --- a/src/00/z2ui5_cl_app_demo_14.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_14 - E - demo - mime editor - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_15.clas.abap b/src/00/z2ui5_cl_app_demo_15.clas.abap deleted file mode 100644 index 22a98542..00000000 --- a/src/00/z2ui5_cl_app_demo_15.clas.abap +++ /dev/null @@ -1,57 +0,0 @@ -CLASS z2ui5_cl_app_demo_15 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_html_text TYPE string. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_15 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - mv_html_text = `

subheader

link: link to sap.com - links open in ` && -`a new window.

paragraph: strong and emphasized.

list:

  • list item 1
  • list item 2
    • sub item 1
    • sub item 2
  • pre:

    abc    def    ghi

    code: var el = document.getElementById("myId");

    cite: a reference to a source

    ` && -`
    definition:
    definition list of terms and descriptions
    `. - - ENDIF. - - CASE client->get( )-event. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - data(view) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Formatted Text' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->toolbar_spacer( - )->link( text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->vbox( 'sapUiSmallMargin' - )->link( - text = 'Control Documentation - SAP UI5 Formatted Text' - href = 'https://sapui5.hana.ondemand.com/#/entity/sap.m.FormattedText/sample/sap.m.sample.FormattedText' - )->get_parent( - )->vbox( 'sapUiSmallMargin' - )->formatted_text( mv_html_text ). - - client->set_next( value #( xml_main = view->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_15.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_15.clas.locals_imp.abap deleted file mode 100644 index 85ddeefe..00000000 --- a/src/00/z2ui5_cl_app_demo_15.clas.locals_imp.abap +++ /dev/null @@ -1,194 +0,0 @@ -CLASS lcl_mime_api DEFINITION FINAL. - - PUBLIC SECTION. - CLASS-METHODS read_abap - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_json - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_js - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_yaml - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_text - RETURNING - VALUE(r_result) TYPE string. - - TYPES: - BEGIN OF ty_s_suggest, - name TYPE string, - value TYPE string, - END OF ty_s_suggest. - TYPES ty_t_suggest TYPE STANDARD TABLE OF ty_s_suggest WITH EMPTY KEY. - - CLASS-METHODS get_editor_type - RETURNING - VALUE(r_result) TYPE ty_t_suggest. - - CLASS-METHODS save_data - IMPORTING - i_mv_editor TYPE string. - - - PROTECTED SECTION. - - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_mime_api IMPLEMENTATION. - - - METHOD read_abap. - -r_result = `METHOD SELECT_FILES.` && |\n| && - |\n| && - ` DATA: LV_RET_CODE TYPE I,` && |\n| && - ` LV_USR_AXN TYPE I.` && |\n| && - |\n| && - ` CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(` && |\n| && - ` EXPORTING` && |\n| && - ` WINDOW_TITLE = 'Select file'` && |\n| && - ` MULTISELECTION = 'X'` && |\n| && - ` CHANGING` && |\n| && - ` FILE_TABLE = ME->PT_FILETAB` && |\n| && - ` RC = LV_RET_CODE` && |\n| && - ` USER_ACTION = LV_USR_AXN` && |\n| && - ` EXCEPTIONS` && |\n| && - ` FILE_OPEN_DIALOG_FAILED = 1` && |\n| && - ` CNTL_ERROR = 2` && |\n| && - ` ERROR_NO_GUI = 3` && |\n| && - ` NOT_SUPPORTED_BY_GUI = 4` && |\n| && - ` OTHERS = 5` && |\n| && - ` ).` && |\n| && - ` IF SY-SUBRC <> 0 OR` && |\n| && - ` LV_USR_AXN = CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.` && |\n| && - ` RAISE EX_FILE_SEL_ERR.` && |\n| && - ` ENDIF.` && |\n| && - |\n| && - ` ENDMETHOD. `. - - ENDMETHOD. - - - METHOD read_json. - - r_result = `{` && |\n| && - ` "quiz": {` && |\n| && - ` "sport": {` && |\n| && - ` "q1": {` && |\n| && - ` "test" : false,` && |\n| && - ` "question": "Which one is correct team name in NBA?",` && |\n| && - ` "options": [` && |\n| && - ` "New York Bulls",` && |\n| && - ` "Los Angeles Kings",` && |\n| && - ` "Golden State Warriros",` && |\n| && - ` "Huston Rocket"` && |\n| && - ` ],` && |\n| && - ` "answer": "Huston Rocket"` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - ` "maths": {` && |\n| && - ` "q1": {` && |\n| && - ` "question": "5 + 7 = ?",` && |\n| && - ` "options": [` && |\n| && - ` "10",` && |\n| && - ` "11",` && |\n| && - ` "12",` && |\n| && - ` "13"` && |\n| && - ` ],` && |\n| && - ` "answer": "12"` && |\n| && - ` },` && |\n| && - ` "q2": {` && |\n| && - ` "question": true,` && |\n| && - ` "options": [` && |\n| && - ` "1",` && |\n| && - ` "2",` && |\n| && - ` "3",` && |\n| && - ` "4"` && |\n| && - ` ],` && |\n| && - ` "answer": 487829` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_js. - - r_result = `function showAlert() {` && |\n| && - ` alert("Alert from JS file");` && |\n| && - `}` && |\n| && - |\n| && - `function updateHeading() {` && |\n| && - ` document.getElementById('heading').innerHTML = 'Heading changed with JS';` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_yaml. - - r_result = `# Employee records` && |\n| && - `- martin:` && |\n| && - ` name: Martin Developer` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - python` && |\n| && - ` - perl` && |\n| && - ` - pascal` && |\n| && - `- tabitha:` && |\n| && - ` name: Tabitha Bitumen` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - lisp` && |\n| && - ` - fortran` && |\n| && - ` - erlang`. - - ENDMETHOD. - - - METHOD read_text. - r_result = `TXT test file` && |\n| && - `Purpose: Provide example of this file type` && |\n| && - `Document file type: TXT` && |\n| && - `Version: 1.0` && |\n| && - `Remark:` && |\n| && - |\n| && - `Example content:` && |\n| && - `The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or mus` && -`t be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speak` && -`ing countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.` && |\n| && - |\n| && - `John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is o` && -`ften John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also` && -` the name of a 2002 American television series.`. - ENDMETHOD. - - METHOD get_editor_type. - - DATA(lv_types) = `abap, abc, actionscript, ada, apache_conf, applescript, asciidoc, assembly_x86, autohotkey, batchfile, bro, c9search, c_cpp, cirru, clojure, cobol, coffee, coldfusion, csharp, css, curly, d, dart, diff, django, dockerfile, ` && -`dot, drools, eiffel, yaml, ejs, elixir, elm, erlang, forth, fortran, ftl, gcode, gherkin, gitignore, glsl, gobstones, golang, groovy, haml, handlebars, haskell, haskell_cabal, haxe, hjson, html, html_elixir, html_ruby, ini, io, jack, jade, java, ja` && -`vascri` && -`pt, json, jsoniq, jsp, jsx, julia, kotlin, latex, lean, less, liquid, lisp, live_script, livescript, logiql, lsl, lua, luapage, lucene, makefile, markdown, mask, matlab, mavens_mate_log, maze, mel, mips_assembler, mipsassembler, mushcode, mysql, ni` && -`x, nsis, objectivec, ocaml, pascal, perl, pgsql, php, plain_text, powershell, praat, prolog, properties, protobuf, python, r, razor, rdoc, rhtml, rst, ruby, rust, sass, scad, scala, scheme, scss, sh, sjs, smarty, snippets, soy_template, space, sql,` && -` sqlserver, stylus, svg, swift, swig, tcl, tex, text, textile, toml, tsx, twig, typescript, vala, vbscript, velocity, verilog, vhdl, wollok, xml, xquery, terraform, slim, redshift, red, puppet, php_laravel_blade, mixal, jssm, fsharp, edifact,` && -` csp, cssound_score, cssound_orchestra, cssound_document`. - SPLIT lv_types AT ',' INTO TABLE DATA(lt_types). - - - r_result = VALUE #( FOR row IN lt_types ( name = shift_right( shift_left( row ) ) value = shift_right( shift_left( row ) ) ) ). - - ENDMETHOD. - - - METHOD save_data. - "save data here - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_15.clas.xml b/src/00/z2ui5_cl_app_demo_15.clas.xml deleted file mode 100644 index 5732cb48..00000000 --- a/src/00/z2ui5_cl_app_demo_15.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_15 - E - selscreen - formatted text - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_16.clas.abap b/src/00/z2ui5_cl_app_demo_16.clas.abap deleted file mode 100644 index 48e8fda1..00000000 --- a/src/00/z2ui5_cl_app_demo_16.clas.abap +++ /dev/null @@ -1,386 +0,0 @@ -CLASS z2ui5_cl_app_demo_16 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA check_initialized TYPE abap_bool. - - DATA mv_type TYPE string. - DATA mv_path TYPE string. - - DATA mv_sel1 TYPE abap_bool. - DATA mv_sel2 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_donut_active TYPE abap_bool. - DATA mv_tab_line_active TYPE abap_bool. - DATA mv_tab_radial_active TYPE abap_bool. - - METHODS render_tab_bar - IMPORTING - client TYPE REF TO z2ui5_if_client - container TYPE REF TO Z2UI5_CL_XML_VIEW. - - METHODS render_tab_donut - IMPORTING - client TYPE REF TO z2ui5_if_client - container TYPE REF TO Z2UI5_CL_XML_VIEW. - - METHODS render_tab_line - IMPORTING - client TYPE REF TO z2ui5_if_client - container TYPE REF TO Z2UI5_CL_XML_VIEW. - - METHODS render_tab_radial - IMPORTING - client TYPE REF TO z2ui5_if_client - container TYPE REF TO Z2UI5_CL_XML_VIEW. - - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_16 IMPLEMENTATION. - - - METHOD render_tab_bar. - - DATA(grid) = container->tab( - text = 'Bar Chart' - selected = client->_bind( mv_tab_bar_active ) - )->grid( 'XL6 L6 M6 S12' ). - - grid->link( - text = 'Go to the SAP Demos for Interactive bar Charts here...' target = '_blank' - href = 'https://sapui5.hana.ondemand.com/#/entity/sap.suite.ui.microchart.InteractiveBarChart/sample/sap.suite.ui.microchart.sample.InteractiveBarChart' - )->text( - text = 'Absolute and Percentage value' - class = 'sapUiSmallMargin' - )->get( )->layout_data( - )->grid_data( 'XL12 L12 M12 S12' ). - - DATA(bar) = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Center' - class = 'sapUiSmallMargin' - )->items( )->interact_bar_chart( - selectionchanged = client->_event( 'BAR_CHANGED' ) - press = client->_event( 'BAR_CHANGED' ) - )->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_sel2 ) label = 'Product 2' value = '20' ). - bar->interact_bar_chart_bar( selected = client->_bind( mv_sel3 ) label = 'Product 3' value = '70' ). - - bar = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Center' - class = 'sapUiSmallMargin' - )->items( )->interact_bar_chart( - selectionchanged = client->_event( 'BAR_CHANGED' ) - )->bars( ). - bar->interact_bar_chart_bar( label = 'Product 1' value = '10' displayedvalue = '10%' ). - bar->interact_bar_chart_bar( label = 'Product 2' value = '20' displayedvalue = '20%' ). - bar->interact_bar_chart_bar( label = 'Product 3' value = '70' displayedvalue = '70%' ). - - bar = grid->vertical_layout( - )->layout_data( 'layout' - )->grid_data( 'XL12 L12 M12 S12' - )->get_parent( - )->text( - text = 'Positive and Negative values' - class = 'sapUiSmallMargin' - )->flex_box( - width = '20rem' - height = '10rem' - alignitems = 'Center' - class = 'sapUiSmallMargin' - )->items( )->interact_bar_chart( - selectionchanged = client->_event( 'BAR_CHANGED' ) - press = client->_event( 'BAR_PRESS' ) - labelwidth = '25%' - )->bars( ). - bar->interact_bar_chart_bar( label = 'Product 1' value = '25' ). - bar->interact_bar_chart_bar( label = 'Product 2' value = '-50' ). - bar->interact_bar_chart_bar( label = 'Product 3' value = '-100' ). - - ENDMETHOD. - - - METHOD render_tab_donut. - - DATA(grid) = container->tab( - text = 'Donut Chart' - selected = client->_bind( mv_tab_donut_active ) - )->grid( 'XL6 L6 M6 S12' ). - - grid->link( - text = 'Go to the SAP Demos for Interactive Donut Charts here...' target = '_blank' - href = 'https://sapui5.hana.ondemand.com/#/entity/sap.suite.ui.microchart.InteractiveDonutChart/sample/sap.suite.ui.microchart.sample.InteractiveDonutChart' - )->text( - text = 'Three segments' - class = 'sapUiSmallMargin' - )->get( )->layout_data( - )->grid_data( 'XL12 L12 M12 S12' ). - - DATA(seg) = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Start' - justifycontent = 'SpaceBetween' - )->items( - )->interact_donut_chart( - selectionchanged = client->_event( 'DONUT_CHANGED' ) - )->segments( ). - 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_sel5 ) label = 'Design Phase' value = '21.5' displayedvalue = '21.5%' ). - seg->interact_donut_chart_segment( selected = client->_bind( mv_sel6 ) label = 'Test Phase' value = '38.5' displayedvalue = '38.5%' ). - - grid->text( - text = 'Four segments' - class = 'sapUiSmallMargin' - )->get( )->layout_data( - )->grid_data( 'XL12 L12 M12 S12' ). - - seg = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Start' - justifycontent = 'SpaceBetween' - )->items( )->interact_donut_chart( - selectionchanged = client->_event( 'DONUT_CHANGED' ) - press = client->_event( 'DONUT_PRESS' ) - displayedsegments = '4' - )->segments( ). - seg->interact_donut_chart_segment( label = 'Design Phase' value = '32.0' displayedvalue = '32.0%' ). - seg->interact_donut_chart_segment( label = 'Implementation Phase' value = '28' displayedvalue = '28%' ). - seg->interact_donut_chart_segment( label = 'Test Phase' value = '25' displayedvalue = '25%' ). - seg->interact_donut_chart_segment( label = 'Launch Phase' value = '15' displayedvalue = '15%' ). - - grid->text( - text = 'Error Messages' - class = 'sapUiSmallMargin' - )->get( )->layout_data( - )->grid_data( 'XL12 L12 M12 S12' ). - - seg = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Start' - justifycontent = 'SpaceBetween' - )->items( )->interact_donut_chart( - selectionchanged = client->_event( 'DONUT_CHANGED' ) - showerror = abap_true - errormessagetitle = 'No data' - errormessage = 'Currently no data is available' - )->segments( ). - seg->interact_donut_chart_segment( label = 'Implementation Phase' value = '40.0' displayedvalue = '40.0%' ). - 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%' ). - - ENDMETHOD. - - - METHOD render_tab_line. - - DATA(tab) = container->tab( text = 'Line Chart' selected = client->_bind( mv_tab_line_active ) ). - DATA(grid) = tab->grid( 'XL6 L6 M6 S12' ). - - grid->link( - text = 'Go to the SAP Demos for Interactive Line Charts here...' target = '_blank' - href = 'https://sapui5.hana.ondemand.com/#/entity/sap.suite.ui.microchart.InteractiveLineChart/sample/sap.suite.ui.microchart.sample.InteractiveLineChart' ). - - grid->text( - text = 'Absolute and Percentage values' - class = 'sapUiSmallMargin' - )->get( - )->layout_data( - )->grid_data( 'XL12 L12 M12 S12' ). - - DATA(point) = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Center' - class = 'sapUiSmallMargin' - )->items( )->interact_line_chart( - selectionchanged = client->_event( 'LINE_CHANGED' ) - precedingpoint = '15' - succeddingpoint = '89' - )->points( ). - point->interact_line_chart_point( selected = client->_bind( mv_sel7 ) label = 'May' value = '33.1' secondarylabel = 'Q2' ). - point->interact_line_chart_point( selected = client->_bind( mv_sel8 ) label = 'June' value = '12' ). - point->interact_line_chart_point( selected = client->_bind( mv_sel9 ) label = 'July' value = '51.4' secondarylabel = 'Q3' ). - point->interact_line_chart_point( selected = client->_bind( mv_sel10 ) label = 'Aug' value = '52' ). - point->interact_line_chart_point( selected = client->_bind( mv_sel11 ) label = 'Sep' value = '69.9'). - point->interact_line_chart_point( selected = client->_bind( mv_sel12 ) label = 'Oct' value = '0.9' secondarylabel = 'Q4' ). - - point = grid->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Start' - class = 'SpaceBetween' - )->items( - )->interact_line_chart( - selectionchanged = client->_event( 'LINE_CHANGED' ) - press = client->_event( 'LINE_PRESS' ) - precedingpoint = '-20' - )->points( ). - point->interact_line_chart_point( label = 'May' value = '33.1' displayedvalue = '33.1%' secondarylabel = '2015' ). - point->interact_line_chart_point( label = 'June' value = '2.2' displayedvalue = '2.2%' secondarylabel = '2015' ). - point->interact_line_chart_point( label = 'July' value = '51.4' displayedvalue = '51.4%' secondarylabel = '2015' ). - point->interact_line_chart_point( label = 'Aug' value = '19.9' displayedvalue = '19.9%' ). - point->interact_line_chart_point( label = 'Sep' value = '69.9' displayedvalue = '69.9%' ). - point->interact_line_chart_point( label = 'Oct' value = '0.9' displayedvalue = '9.9%' ). - - point = grid->vertical_layout( - )->layout_data( ns = 'layout' - )->grid_data( 'XL12 L12 M12 S12' - )->get_parent( - )->text( - text = 'Preselected values' - class = 'sapUiSmallMargin' - )->flex_box( - width = '22rem' - height = '13rem' - alignitems = 'Start' - class = 'sapUiSmallMargin' - )->items( - )->interact_line_chart( - selectionchanged = client->_event( 'LINE_CHANGED' ) - press = client->_event( 'LINE_PRESS' ) - )->points( ). - point->interact_line_chart_point( label = 'May' value = '33.1' displayedvalue = '33.1%' selected = abap_true ). - point->interact_line_chart_point( label = 'June' value = '2.2' displayedvalue = '2.2%' ). - point->interact_line_chart_point( label = 'July' value = '51.4' displayedvalue = '51.4%' ). - point->interact_line_chart_point( label = 'Aug' value = '19.9' displayedvalue = '19.9%' selected = abap_true ). - point->interact_line_chart_point( label = 'Sep' value = '69.9' displayedvalue = '69.9%' ). - point->interact_line_chart_point( label = 'Oct' value = '0.9' displayedvalue = '9.9%' ). - - ENDMETHOD. - - - METHOD render_tab_radial. - - DATA(grid) = container->tab( - text = 'Radial Chart' - selected = client->_bind( mv_tab_radial_active ) - )->grid( 'XL12 L12 M12 S12' ). - - grid->link( - text = 'Go to the SAP Demos for Radial Charts here...' target = '_blank' - href = 'https://sapui5.hana.ondemand.com/#/entity/sap.suite.ui.microchart.RadialMicroChart/sample/sap.suite.ui.microchart.sample.RadialMicroChart' ). - - grid->vertical_layout( - )->horizontal_layout( - )->radial_micro_chart( - sice = 'M' - percentage = '45' - press = client->_event( 'RADIAL_PRESS' ) - )->radial_micro_chart( - sice = 'S' - percentage = '45' - press = client->_event( 'RADIAL_PRESS' ) - )->get_parent( - )->horizontal_layout( - )->radial_micro_chart( - sice = 'M' - percentage = '99.9' - press = client->_event( 'RADIAL_PRESS' ) - valueColor = 'Good' - )->radial_micro_chart( - sice = 'S' - percentage = '99.9' - press = client->_event( 'RADIAL_PRESS' ) - valueColor = 'Good' - )->get_parent( - )->horizontal_layout( - )->radial_micro_chart( - sice = 'M' - percentage = '0' - press = client->_event( 'RADIAL_PRESS' ) - valueColor = 'Error' - )->radial_micro_chart( - sice = 'S' - percentage = '0' - press = client->_event( 'RADIAL_PRESS' ) - valueColor = 'Error' - )->get_parent( - )->horizontal_layout( - )->radial_micro_chart( - sice = 'M' - percentage = '0.1' - press = client->_event( 'RADIAL_PRESS' ) - valueColor = 'Critical' - )->radial_micro_chart( - sice = 'S' - percentage = '0.1' - press = client->_event( 'RADIAL_PRESS' ) - valueColor = 'Critical' ). - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - mv_path = '../../demo/text'. - mv_type = 'plain_text'. - mv_sel1 = abap_true. - - 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 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - - DATA(container) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Visualization' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( text = 'Demo' target = '_blank' href = `https://twitter.com/OblomovDev/status/1639191954285113344` - )->link( text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->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 ). - - client->set_next( value #( xml_main = container->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_16.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_16.clas.locals_imp.abap deleted file mode 100644 index 85ddeefe..00000000 --- a/src/00/z2ui5_cl_app_demo_16.clas.locals_imp.abap +++ /dev/null @@ -1,194 +0,0 @@ -CLASS lcl_mime_api DEFINITION FINAL. - - PUBLIC SECTION. - CLASS-METHODS read_abap - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_json - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_js - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_yaml - RETURNING - VALUE(r_result) TYPE string. - CLASS-METHODS read_text - RETURNING - VALUE(r_result) TYPE string. - - TYPES: - BEGIN OF ty_s_suggest, - name TYPE string, - value TYPE string, - END OF ty_s_suggest. - TYPES ty_t_suggest TYPE STANDARD TABLE OF ty_s_suggest WITH EMPTY KEY. - - CLASS-METHODS get_editor_type - RETURNING - VALUE(r_result) TYPE ty_t_suggest. - - CLASS-METHODS save_data - IMPORTING - i_mv_editor TYPE string. - - - PROTECTED SECTION. - - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_mime_api IMPLEMENTATION. - - - METHOD read_abap. - -r_result = `METHOD SELECT_FILES.` && |\n| && - |\n| && - ` DATA: LV_RET_CODE TYPE I,` && |\n| && - ` LV_USR_AXN TYPE I.` && |\n| && - |\n| && - ` CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(` && |\n| && - ` EXPORTING` && |\n| && - ` WINDOW_TITLE = 'Select file'` && |\n| && - ` MULTISELECTION = 'X'` && |\n| && - ` CHANGING` && |\n| && - ` FILE_TABLE = ME->PT_FILETAB` && |\n| && - ` RC = LV_RET_CODE` && |\n| && - ` USER_ACTION = LV_USR_AXN` && |\n| && - ` EXCEPTIONS` && |\n| && - ` FILE_OPEN_DIALOG_FAILED = 1` && |\n| && - ` CNTL_ERROR = 2` && |\n| && - ` ERROR_NO_GUI = 3` && |\n| && - ` NOT_SUPPORTED_BY_GUI = 4` && |\n| && - ` OTHERS = 5` && |\n| && - ` ).` && |\n| && - ` IF SY-SUBRC <> 0 OR` && |\n| && - ` LV_USR_AXN = CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.` && |\n| && - ` RAISE EX_FILE_SEL_ERR.` && |\n| && - ` ENDIF.` && |\n| && - |\n| && - ` ENDMETHOD. `. - - ENDMETHOD. - - - METHOD read_json. - - r_result = `{` && |\n| && - ` "quiz": {` && |\n| && - ` "sport": {` && |\n| && - ` "q1": {` && |\n| && - ` "test" : false,` && |\n| && - ` "question": "Which one is correct team name in NBA?",` && |\n| && - ` "options": [` && |\n| && - ` "New York Bulls",` && |\n| && - ` "Los Angeles Kings",` && |\n| && - ` "Golden State Warriros",` && |\n| && - ` "Huston Rocket"` && |\n| && - ` ],` && |\n| && - ` "answer": "Huston Rocket"` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - ` "maths": {` && |\n| && - ` "q1": {` && |\n| && - ` "question": "5 + 7 = ?",` && |\n| && - ` "options": [` && |\n| && - ` "10",` && |\n| && - ` "11",` && |\n| && - ` "12",` && |\n| && - ` "13"` && |\n| && - ` ],` && |\n| && - ` "answer": "12"` && |\n| && - ` },` && |\n| && - ` "q2": {` && |\n| && - ` "question": true,` && |\n| && - ` "options": [` && |\n| && - ` "1",` && |\n| && - ` "2",` && |\n| && - ` "3",` && |\n| && - ` "4"` && |\n| && - ` ],` && |\n| && - ` "answer": 487829` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_js. - - r_result = `function showAlert() {` && |\n| && - ` alert("Alert from JS file");` && |\n| && - `}` && |\n| && - |\n| && - `function updateHeading() {` && |\n| && - ` document.getElementById('heading').innerHTML = 'Heading changed with JS';` && |\n| && - `}`. - - ENDMETHOD. - - - METHOD read_yaml. - - r_result = `# Employee records` && |\n| && - `- martin:` && |\n| && - ` name: Martin Developer` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - python` && |\n| && - ` - perl` && |\n| && - ` - pascal` && |\n| && - `- tabitha:` && |\n| && - ` name: Tabitha Bitumen` && |\n| && - ` job: Developer` && |\n| && - ` skills:` && |\n| && - ` - lisp` && |\n| && - ` - fortran` && |\n| && - ` - erlang`. - - ENDMETHOD. - - - METHOD read_text. - r_result = `TXT test file` && |\n| && - `Purpose: Provide example of this file type` && |\n| && - `Document file type: TXT` && |\n| && - `Version: 1.0` && |\n| && - `Remark:` && |\n| && - |\n| && - `Example content:` && |\n| && - `The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or mus` && -`t be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speak` && -`ing countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.` && |\n| && - |\n| && - `John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is o` && -`ften John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also` && -` the name of a 2002 American television series.`. - ENDMETHOD. - - METHOD get_editor_type. - - DATA(lv_types) = `abap, abc, actionscript, ada, apache_conf, applescript, asciidoc, assembly_x86, autohotkey, batchfile, bro, c9search, c_cpp, cirru, clojure, cobol, coffee, coldfusion, csharp, css, curly, d, dart, diff, django, dockerfile, ` && -`dot, drools, eiffel, yaml, ejs, elixir, elm, erlang, forth, fortran, ftl, gcode, gherkin, gitignore, glsl, gobstones, golang, groovy, haml, handlebars, haskell, haskell_cabal, haxe, hjson, html, html_elixir, html_ruby, ini, io, jack, jade, java, ja` && -`vascri` && -`pt, json, jsoniq, jsp, jsx, julia, kotlin, latex, lean, less, liquid, lisp, live_script, livescript, logiql, lsl, lua, luapage, lucene, makefile, markdown, mask, matlab, mavens_mate_log, maze, mel, mips_assembler, mipsassembler, mushcode, mysql, ni` && -`x, nsis, objectivec, ocaml, pascal, perl, pgsql, php, plain_text, powershell, praat, prolog, properties, protobuf, python, r, razor, rdoc, rhtml, rst, ruby, rust, sass, scad, scala, scheme, scss, sh, sjs, smarty, snippets, soy_template, space, sql,` && -` sqlserver, stylus, svg, swift, swig, tcl, tex, text, textile, toml, tsx, twig, typescript, vala, vbscript, velocity, verilog, vhdl, wollok, xml, xquery, terraform, slim, redshift, red, puppet, php_laravel_blade, mixal, jssm, fsharp, edifact,` && -` csp, cssound_score, cssound_orchestra, cssound_document`. - SPLIT lv_types AT ',' INTO TABLE DATA(lt_types). - - - r_result = VALUE #( FOR row IN lt_types ( name = shift_right( shift_left( row ) ) value = shift_right( shift_left( row ) ) ) ). - - ENDMETHOD. - - - METHOD save_data. - "save data here - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_16.clas.xml b/src/00/z2ui5_cl_app_demo_16.clas.xml deleted file mode 100644 index fd7c730c..00000000 --- a/src/00/z2ui5_cl_app_demo_16.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_16 - E - demo - visualization - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_17.clas.abap b/src/00/z2ui5_cl_app_demo_17.clas.abap deleted file mode 100644 index f00a9da9..00000000 --- a/src/00/z2ui5_cl_app_demo_17.clas.abap +++ /dev/null @@ -1,191 +0,0 @@ -CLASS z2ui5_cl_app_demo_17 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_17 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - ENDIF. - - - CASE client->get( )-event. - - WHEN 'BUTTON_ROUNDTRIP'. - DATA(lv_dummy) = 'user pressed a button, your custom implementation can be called here'. - - WHEN 'BUTTON_MSG_BOX'. - client->popup_message_box( - text = 'this is a message box with a custom text' - type = 'success' ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(view) = Z2UI5_CL_XML_VIEW=>factory( ). - - - DATA(page) = view->object_page_layout( - showtitleinheadercontent = abap_true - showeditheaderbutton = abap_true - editheaderbuttonpress = client->_event( 'EDIT_HEADER_PRESS' ) - uppercaseanchorbar = abap_false - ). - - DATA(header_title) = page->header_title( )->object_page_dyn_header_title( ). - - header_title->expanded_heading( - )->hbox( - - )->title( text = 'Oblomov Dev' wrapping = abap_true ). - - header_title->snapped_heading( - )->flex_box( alignitems = `Center` - )->avatar( src = lcl_help=>get_avatar( ) class = 'sapUiTinyMarginEnd' - )->title( text = 'Oblomov Dev' wrapping = abap_true ). - - header_title->expanded_content( ns = `uxap` )->text( `abap2UI5 Developer` ). - header_title->snapped_Content( ns = `uxap` )->text( `abap2UI5 Developer` ). - header_title->snapped_Title_On_Mobile( )->title( `abap2UI5 Developer` ). - - header_title->actions( ns = `uxap` )->overflow_toolbar( - )->overflow_toolbar_button( - icon = `sap-icon://edit` - text = 'edit header' - type = 'Emphasized' - tooltip = 'edit' - )->overflow_toolbar_button( - icon = `sap-icon://pull-down` - text = 'show section' - type = 'Emphasized' - tooltip = 'pull-down' - )->overflow_toolbar_button( - icon = `sap-icon://show` - text = 'show state' - tooltip = 'show' - )->button( - " icon = `sap-icon://edit` - text = 'Go Back' - press = client->_event( 'BACK' ) - ). - - DATA(header_content) = page->header_Content( ns = 'uxap' ). - - header_content->flex_box( wrap = 'Wrap' - )->avatar( src = lcl_help=>get_avatar( ) class = 'sapUiSmallMarginEnd' displaySize = 'layout' - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->link( text = '+33 6 4512 5158' - )->link( text = 'email@email.com' - )->get_parent( - )->horizontal_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'Hello! I an abap2UI5 developer' - )->label( text = 'San Jose, USA' - )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'Hello! I an abap2UI5 developer' - )->vbox( - )->label( 'Achived goals' - )->progress_indicator( percentvalue = '30%' displayvalue = '30%' - )->get_parent( )->get_parent( - " )->avatar( src = lcl_help=>get_avatar( ) class = 'sapUiSmallMarginEnd' displaySize = 'layout' - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'San Jose, USA' - )->get_parent( - ). - - - data(sections) = page->sections( ). - - sections->object_page_section( titleuppercase = abap_false id = 'goalsSectionSS1' title = '2014 Goals Plan' - )->heading( ns = `uxap` - )->message_strip( text = 'this is a message strip' - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'goalssubSectionSS1' title = 'goals1' - )->blocks( - )->vbox( - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - - )->get_parent( )->get_parent( )->get_parent( - )->object_page_sub_section( id = 'goalsSectionWS1' title = 'goals2' - )->blocks( - )->vbox( - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2'). - - sections->object_page_section( titleuppercase = abap_false id = 'PersonalSection' title = 'Personal' - )->heading( ns = `uxap` - " )->message_strip( text = 'this is a message strip' - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'personalSectionSS1' title = 'Connect' - )->blocks( - )->label( text = 'telefon' - )->label( text = 'email' - )->get_parent( )->get_parent( - )->object_page_sub_section( id = 'personalSectionWS2' title = 'Payment information ' - )->blocks( - )->label( text = 'Hello! I an abap2UI5 developer' - )->label( text = 'San Jose, USA' ). - - - sections->object_page_section( titleuppercase = abap_false id = 'employmentSection' title = 'Employment' - )->heading( ns = `uxap` - " )->message_strip( text = 'this is a message strip' - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'empSectionSS1' title = 'Job information' - )->blocks( - )->label( text = 'info' - )->label( text = 'info' - )->label( text = 'info' - )->label( text = 'info' - )->label( text = 'info' - )->get_parent( )->get_parent( - )->object_page_sub_section( id = 'empSectionWS2' title = 'Employee Details ' - )->blocks( - )->vbox( - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' ). - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_17.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_17.clas.locals_imp.abap deleted file mode 100644 index b0f14e79..00000000 --- a/src/00/z2ui5_cl_app_demo_17.clas.locals_imp.abap +++ /dev/null @@ -1,207 +0,0 @@ -CLASS lcl_help DEFINITION. - - PUBLIC SECTION. - - class-METHODS get_avatar - RETURNING - VALUE(result) TYPE string. -ENDCLASS. - -CLASS lcl_help IMPLEMENTATION. - - METHOD get_avatar. - - result = `data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA` && - `AAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQ` && - `BsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAAC` && - `SdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBw` && - `cHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/CABEIAZABkAMBIgACEQEDEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAAAwQCBQYBBwj/xAAaAQEAAwEBAQAAAAAAAAAAAAAAAQ` && - `IDBAUG/9oADAMBAAIQAxAAAAH7KAAAAAAAAAAAh9pMrGnC8gxLKqhaUMqzdVLV49GkAAAAAAAAAAAAAAAAAPPdbSYqcNfyerdabSYcu3R5czFlfc2ebnlurvP0bO1t8Rntn3trmLvZhvWGfpcwSAAAAAAAAAAAAAMM4K0eu5tNfE1vi980FPDj0yj8xytIjzJfPYLxgVehsElmsZ+SR3bzoOO2vbz9Or2PZ4AuAAARScpjbrBtUAAAAA` && - `B57FVqdLY0Hid+z91Dn0nrV/ODaeHzCEiWWZqxzpmKK1nrFKTH3Jbs1F624/ICxH7BeO+3PE9d73nWB34gAK3Bcxx62tHu8/B9D7CPqvKAAAAAAUZtLlbU6qnJ816dijlBy6ye1/azP5h5MJ447Tc8reSueU1mGeGFJt2tZetEvtf1W3Jh7ZR63m9hvn9AazZ/R+YGtXFdh+eKTJ2dL35n1dlRvR8G/wBTH3HhAAAAAAY8hd5vyurRyy` && - `YeF3+4yyVVlvV9lbdvXrryhBpS/jprWldn5TgxvssNLZynYYWIuTVNBEi5nBPaJovdVpX6R0PzzvPb4Z9HyXO9mO4rS7/z+vl8Ot0vJpnJQx8nr+tD7fwgAAAABWNNxvY814vZQ11uTi6KM/VY2c9a2dKWdG9elQuzZZ2p1dz5aNXcnzrPP6ft/dI+eU/o9fSnD3Nro4bCbCzxbR+PYiTmuv5D1+Ta9Xy6bbfU9Bscr8hFuufovySa/w` && - `ATr+xtVovr/H7JpNz0Z+udg5tOoy+WfRqWu+cfR3p3ul4mrxb9V1HxW6bfUe7ettL1kN3i3rayzyFdL3nL4d0d7d4jd8c9XZ1myxiT3DOSSPyJ9jeZ3z5nfc70Z7v3UbFEEfQULRrItbsazsPiX2nqvW4vmu2+rurL4/yH2LivI7Ndeml8frqjGd7y2F/vxpWM/YXuX3fhBjZrpqbpbTQi3HktdBt9VaNpHhrN6drnPFS3O8T3HE630W` && - `p38HrccvT6q5wdHZ7fR7jztJZIJZrDPTix0v049LtXDTU4exsN5xW1i3eXud6vDLk61yLWnvS8/wBRpn1o9zh4Pn9nV+Z9OKKxW83pxymyMNfcytGvz5m/3ZbvF75uoWiLZa2z0Vnx9hi3mo3FA22Me17MZNlrN9tTT8j3XP8ALtxljfXbW5ybfV6sNVyUfrc24l0Tqz7ff/Kuw8fo6rltzz7Tk69jD2eLa2oZOTr6D6B83+i8cc6wmr` && - `S39A0299fhRyfN9q83egk+S9aaBjz6zZw+F+v7alo4po+nObPW7DNI8957VtnQ2fTWeLKpW1OGbyYz6fk9x2Uw67ien6MtXtaewpMbyHm0wp+3aW+Ow9Fy30vHYMNYzv6nocZ6Sj1ev8Ls5Kj2cOluT22yu6xPsr2hrhFvIOp2x3vp7PF58u+o/F+XWrf8fKer6eZz74xlZsQZzMHD97y3o87b6+5nrdHBZnDf2iSJ5FqcFmprWG/pLP` && - `bHYVfK+uXa6mXYMtdVzpcm9XX7CjM6vlur86o4qx01Psz1H0LjM8XV7rm+l8veDX7HYXrr5b9u9cefvQ9GfO7TWaHen2roPh212y+j/HMbnFtZHh9npSvF1rJda9Bhfp5a16GxoTXVbCpf3rI8clvNhR2W0Rxz1kx4zZROns7eG8avY0ZOim16/wCc7joy7LVT2dcdDq+112WvznTd5pNdtBPPY0vX30+9xyoS7u5XLU3L+N60Mdhps9` && - `Kmgv67orUgylx0bbS7Xg6LdaSDmiHz3GIo7jSfbvb4vkPa9l57HH85r+VfkPbVfY84193TX+7O3nq9xy6RRX8L1t1868xJ7VnytZu66WLWef2GOjTbjXw9FNphD50Z9jtOC28U6rnsq3Tlhv8AR+0t1cuh3SMlWG9dhHrb2do+P8qxenYqZZaSwRXOXbK0wwnPCTyiHn91vvS5er6I+m8wJfnbcdBxPi93R8v12rl7B9O+U47WthrveP` && - `p3GVSbjT51/YeeT+zEC5qJWpq9qFGls8rofJsbRW9wq3jaT6yakbDV2o9Ir2ZKu1bF3UY613NShZq10/mFLLXsvFqvUs85u1ocjBrJOvGx9ayv/T+YG9APn+gw7PxfQg1nNfQ6zlrtP9G9fg+JQdXzfzvrSbHGfi1zmr+5xNHH4WdVnV6WxlxmxV5sPaT7Yj8R5NhOVa1+OYizmwu8pzwWQZZQ2UJ7WOlfes4H6Z6nLzGi+7aXs5fk1n` && - `caDxe3XXfqe07sNTv5XqcoaQAB8o0v0/5zxdHU8po+q59cfqX5+7zu5vpny76tpqPm3ul3Hz3pZy2IOLbGPHGEUE1Ppm5s9LuJqg9x55m8wyqzkhxlJhjnLCT2K0z1LtG0V/fZU4UL3FdePV9hwf1b0OfqR7HAxyQCQAAACKUcjF2Y+bdhuQ1ezZz8mg7T598z6m5i1t3i6GM0UK1K1F2MdvWzwjzLGzkwZRyPJDLySOzOKxHZLrNtq7` && - `R7DYp1mpn59Z9blqdT577PnhpUAAAAAAAAABzvRKz8kqfY+Y8nq4irutN5Pdrc85NdLtnzziiKaH2izhHJePJI5peeY+Js4QSWjyPH2Jg1l2Pam8+qVrP1HkhtQAAAAAAAAAAAABqdsrPzLR/VdV4nfxvtuj5nTPDHLnaOK3jSayWOqXDDKU+FddlHc0+ij23NfT/W4uiHt8AAAAAAAAAAAAAAAAHnJdd5nb41qvpdDwO7msukmlzGG6` && - `53O932jd8/eOhdw6I0fV9L2PucGi3x6PKEgAAAAAAAAAAAAAAAAAAAOUo9ypPPbqdSfPTaoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//xAAwEAACAgEDAwMDBAICAwEAAAABAgMEAAUREhATIQYiMRQgMBUjMkFAUCQzBzRggP/aAAgBAQABBQL/AOIEik815E` && - `7CWbYQtyRJOTM6tDC3tEx3eX2xv7R5/wBOfDNOFaWcGrPIdorXbxrsUciT9qb611bkeZsIuLMjCKwi5C7MxYD/AEk9qKOJ7QaF7TdqIwFecgl5eJCzytEjIQOfc82P+w2XVh9TKy2yhhkM0oI3/wBBO4jiM0vOZmZZGVkd9wzHpv0/oHH9rO27cUdYqtYMEXnBqamzDOUlgmWb8jMq/wCDyG+TOQ07M0bSxvkjYxzl9gOb5v7n8sm+6D` && - `x/S+Mn5SLC1ZVrzxwy90b/AIrMiyWvznJ/cWuBJHuTugcNj8FY4cObdTn9HfB8rifAOb5y2wszLVT6eao6zL+CeaKCKW/aOpXktWo/zyDdb8ipHZ7xDRyYzYzed85YTkZ3wqMPgkZthTww2O+Jm/n+unafuU5oUWBw8f3ep9eNKcwq7Yw2H51swvlt4GeNRG7EYW3+zxnlT3MDA5yGK45SyhRy3KnOWKMkPgMNgvT+B0m6WP2+otfTSH` && - `gqW7EyRjOIGEcm/M0cbPrUwSqqnYsc84VzcjNzgPIec23GxGbHouOubdY29r+SrbZv0kZRlJzEK5LfZK6xR9yXVdbeCxFPBaEq/EcKbfnPgao8Bd+TMvnCM85tixtm2xC4hj71vaFIZgZbHKO9GuXGWCsiMRxzbouclXEYnNzvtuK8pSbTnCjpqup09NhNrVtZwWtN0tZ4NZuRpHHGE/iPzyG1PjRhW4cW2GecVdsbY4qXIMhuwyOLgF` && - `qftWEne0a4r9qJ7H1GnQ2y0HNXe+0l5xaginOwXbNs+MUk5vxC8jl32PptgFI/Ed/XZ7U6wVNPnapqGoZUqVqiWTKEb3VmkIxZD+ezZiSabeRpO0mSTESmeUH96XIqzoIlkYzU45h+mRQiOojJ9PHstZRkmn13apWCQNGrY2mDuT6RxSW7HBkNi5CrXZmyt3zEPGKyjJJG4x7yYWmU6prKai2nC5chqVK9RbOs6bXz9Xu3M/S9RtiMwB` && - `FUvioB+aeITJZijUS8VEvGVdOeGdpOOJtkpULJIZBAeGI/L7Dg6+MfYZskmTVpt5I5pZGWlVdos2zf3WohYg0+tQkw6tbuv+jWreVdNo1clljiSxqcfb09u5QMqJH+PfNTuTVY6uvVrBlmjjr6hqUggBsyzpp9iSSvEteuXbjPOVw2lV/1FWyOyDjMpSvIZI/tY9FC5KX7tMSLHPWr2MkpKK9ebuY3tMs6RrHEl7TJl7kunnWIqwq+q7` && - `Iv6VqMIp6Xsy1YxGAAOmpTtXr1NWO7XuwoII1S7LVl1K/tAbM/KpMJ4LOuLBbteoavCXUbCkak0jypHLPJekk03TUMVeqO0tDuu8/8ZmLPdlOGZBO86bUZA2CVxlUA/Z8Zv0OSS7LuWaNYFyNjHEMuV6thI4IKGpN7cjtj6PQipq9PUJZ68AVkC7koAvSC0ZIDYeZe+e3pl2TTkt6oLNQz6kSJvadYv0ZK917WRhmJoQb/AECM8lFXX6` && - `AZDwVmnHerR9uM+TqBKJZX2S/+1YmmY0NzOCA1ItwHRfgndtsLAY7ZbtIJZboZorQfKs2UXSNZduOowrJHDyReRhT0/Mtmbp6ktJiqwRcPksu2KufRKcAChQFH2GJchcMgYYXGKwySQKJpxtpvLaWQ1dRQqyv82w0j213MsbSKIpCa9E4xBer4A6DHfge4zYx2yzORg/cTtgmeFlytIdqs6CJwNrDSMxAORycF0CuE6+oQsOrowZW+B/` && - `I4vgL4N0vHVRHWIH7GcJHGTFFt4GzLknwxMktCUSrqiiKh6fl72jWPa7qvdtQbSGBkf9zi6WNq0DAtZSul3WSMbU7UuR6paRotXVxFMr43xb5MZ7vFIH7iVCWWIf8AGpuFLYg9z7Sw6T3ZrKqFXGIVdQnGr3IzthbpvjHPdngibTVL1qvBMHjD0klWLKhKQmIMeTKW840cTGGWOJbsPeTQuK0m85OVGScp8jjbII2lEsBDWX7MMhdpOo` && - `+dNk/aaQkSv7rVcDIgu1U9kJuTUQyVz8RbfVceNnS67Rr09WTtNYAAH2E4Vw/N0BM5e5CCvWXkrxbMvxjlWUboZAcqI6zFv2dP71eMEY8kImX/AKv6PjJPcbNfmkoZZNxv1rWRHKOJaxHs8gZcPMhVytEDlCJkuz3qql+5XWrStPYHx09YRxF6VZKsP2q5xkHG6haFCsizuI2HWX/qi2CNjHJv4OcqN7q7ho527KJKHFqKSK0cPwG2M0` && - `0cMjuM1qDt2JU5dGYKsTlxpUMk06xIuWIC2SRAEx7Yw4oqFo40VM0w86FkJ2dMjjjPX1CbMuv/AGsOSo2w32xxm/bnqx9nIz9lRdovGFcn8ZIMDlRSkLp2YJ404VraqstcM8chGS7ZX3ZZoe1kkth45+KZ3ot+BICnfSwtara1WrFKSNmYrKieYoQFpQuJW+KBP6dYkkLaLqcl2LR9Ug1Kpl65FVWxNJJr/wB3Bh0cbpPFKIySzxDrJ/` && - `ADx4zlhV/qLhdWIJOnxyfStMEhuDuNpk/PJIuUzwyxksj4u0KzuJF5EZzxoYmMtKu2GnJxFGc5ptatVCjcHj9QI/PZ3YZqjt9P3U+mDcLmnqDIaoeDu360bnULUkFZKw6zySxtYtxJUrzFqvkBvOKdstxCaKM96xGNj08cuPgr42w5aj7qtA+5T3HkM9vANwkgbnGVByairtbhsqLdEvk8bQgd9yJHRlkDKjxbwRExIqAdt5hXqurcPC` && - `rv0MIDF1xuTGuu2JvvEcY4V3w9GtIskNSxwm9K25pqmgww2eI228zLtki80UtHi9QGJ2bCG23Occj6e04++RO4DSK8dG1ImRS8o45Q2P5yWJmW3GUyeFcaLK1KOQR0bPOPT25JWC4EAzbxtn8VtyiGGtcLSVi8mE7tHyXPPOJ1wsMLdN80erNqWsV07UHSTwTk536Ozzug4Jy6MWAq2ZpGLq+c9pGPmP8Ak5xG2ycLJkvKNmHEV3R1Mk` && - `aYthomq3BNGrjjH8NocDW49IfKkNeNQV6Myqu+E5vvjyZavHt3e3OzlTntUdxsXNxh2w9NU+oNnQNPGm6b1lsQDJG2bGOwoN7CTi78lXPGIiIfbvPEtiLyrRHfJP5E+xmOSDupscQCM9/bDDs/1EmLqMG0mrVIIV1STc6nu0traux5FW3yWQCQluctjkxZY4bWoYZHmwqBm+FeeRrnHYYHyQ75JKiN6Zi7+qfZrtUzw1p0kr3eVTNOjF` && - `xUiCqcXYFH3weegAwuNs24tIds38YnxKu+cX34lMVuEcrIX2jbIo66YGj37cThYJfp5Z27kN2QYl/6ZX1NXr92btSzSSL7e9yO4PIquIo3ATbYZKNuhzT9Os6pNp9SKjT+yvo8Ea1tOKapZr3reRJ+k6/f0arZS5Un013AXIzitgJ6hc3GMAUQgOMXGGxCjkxJXtOymPgFj4ZuSVbfGH7KkbGDuKI1xj73i/bhfGbi+tR/8epMtrOPXk` && - `dt8Zick2sWKFG5bWjWSrX+3Srf1tP1JBLG1OxHbq6/T+t0v0ve/UNG9ThpCzxSn4xB4iB2AwADDnLOfiYBZcXP7TEHvObbkRqceFebx75CrMJ4jyh/jttkLMJ3yPl9VZf9hrEdjTadClrFK16YtVhBZPftWoqxkHOIR6lXVINUmFHSKVaBEVF+67y0nVAUliqN+h6rnptxQ1+1CLEGpadCqmFYrSoM22Azlm/RyQflot9/ktiYvQYpxz` && - `gxXAzcg2AJMUBVJzlg2yQK6inG170o2+m5qmm09Sik9NTo5qTR5WoqYoa8UR/BVss8gab0/atwVtTpULk2k2PUivWkqzx2a7KrZPBIJ99sjlEgzjmwxskG422yFt25+1vjB8YM3zfP7YYDhHg/P9qmcfHfTt1OfP0XIWqdSAfx65pNbVa1ie3pyV7n6Szaho2rVdN1C1Uq/wDju13NNzWIzLp89WVJqCTBmTyTh6SfxL5AT3mXN+m/3H` && - `p/TEHF+cncRxdt2kSvaYena7VqP53VXSf03oszr6Y0UQt6M0ovpmm09NjzUp3r1bM8liVH4FZd8Yqehxjk65CvHOftwfaB0Of2w9oHlVx/B1BlMMarNe03S0rS/wCPe0oyyuWWRG6AKcchQZUAB5FFGEdFGHDgxeg+WwD3N8EeVOwk+WhabKWnQwf5Wp6TWvZd0+1QxGVl3GOw3lILJkfwfIxW2zflm2AYBhxcbBjPh+GyYuZtH0y3LY` && - `/y2UMtjQ6MmWdNuV8Oxx/mIe5V8Hx1U7ZzGKw3LjiMLYCSPgA+WOWG4QNGfrIIkhT/ADpqFaWTUoYDLGnHEbYJ7maIKWGbYevL2jydxjHOWM+XGsCv6cgsWbP+gtUYLBn0iKTLNGaqIQJFlu1o5kIzkoxvdgDYegGH5Q+9osszwRSsjSJolZq8P+j1jShYL0xAm70sBBG+cm6ADGI2PxZjkdIrlmNNB0uSzXqaTp9WT/S3NJeSUaNZ3X` && - `Qmq42lpap6h6YqcXq6tUEE0cyMWijgtO4cO+aJE8h/1uqaJVuSSaLZsQ6dpwrHtx//AJ1//8QAKREAAgIBAwMDBAMBAAAAAAAAAAECEQMSITEQIEEEMFETMkBhFCJxYP/aAAgBAwEBPwH26ZGLlwaWVtZoY1X4aViiY4aSWNMWOPB9NcDwpk8DW/j8GON8mPGluutdkkZowkrXJVdsY6vZhxRHGihIvq0V00ozRad9mLC8hHAkq9iMdT` && - `ohjUe6l1aEZIa1RKOl10irZhUI7L2cEKdsRY5mtDma35Hk+BZdyxj2JSo9RCnq+SONyIQrghGpl+xgWobfg3KP9KKsqhwRUvkUmuRS1DRmbk1Ei/jcqT5ZBLWq6RxSkrXRYpOjJheMWOTZ/G+WTwqtiEWtkRVbiNUT+r60KkNWbeRqt0KVozKX3M+pIw41JLUKCXHT6b/weO+RYv2Tx6lQov5NK+DQiWzvpHcy422YoNLca6bsoXTjYS` && - `M7Th09LWnqyLlxXX9Iv5GiW6FwQZsfsnkci2YsjezORqWrcxp1uPk8GSepkVqdGKGldnkvp5EIcdjHG9iD8dOdiacekN3sb9JMkyb0x6YuRKlS7M6sgklt089Wfa7RLaVohKxUSxavJ9CRCMoPghKXkctx7j5Gm9vkfpZmLD8dG6Nauhj4IcdnJQ1ZONKjdEXa3E09jdE8h9QUxSsZjXZP1Gkc2yxkN9yhoqu1414HEdtlPySjRFWaaV` && - `lfBHH89nqJVHrqlGWquTJkfNbEPURfY+5UOCY8ZpYoXyJqMqfY8lE5anfX7lpYv7KmVUqZDJa7GuxdKKNJo2M7encx5pQIZdY8yWyHJvsjlvnk1p7+TK1J2jHkcHZDLr9zJNx4M/2+2nTMWSD49pdMuVQJScnb9xNrgxeqa+4hkjLj2cjpGSep376bXBj9StNMjNS4L7Xtyeoez3/CjJxYssK5H6tEPUprc1I1J7GbI09Kf4+pkpuTt/` && - `8AL//EADURAAICAQMDAgQDBwQDAAAAAAECAAMRBBIhEBMxIkEFMDJRIGGRFCNAQnGBoRUzYLHB0fD/2gAIAQIBAT8B+XvWPYqeZ3F4/OFwG2zvpiK4b+DdgoyYzgTUXb/eJqSowTDqG85neY8xNQynMq1q/SPMBz8/Mt1AXIl+oY8NN/tM9dwKwMRwDK255mltsqbax4gYN4/Dbb2wPkHxLGOcy3UGM+ZmbYBPaZmeiMfGZo7ARt9/wa` && - `rWLpxzH+IOz7sfIts7aFpbqmsP2h5m2bZzMkTuQGDoRKbTW4fMqs7i56O20Zmsa6z1P4+TrLsjaI5yZiVUBhP2ZsxdOMifs6+0TTYPqj6QgceYVIgbMJlI3HbPh9uRs+0e0Lx7y24N9X6TUuWpMz8jWN2v7yupT6mmUHgTvcQWH2M3mdxl5ELk8wXvN6eNsamtxheI6duK4M0QRFLxwf5jiBqx9IzNSz9k7ulmrrrfYxgYGPq60zn2mm` && - `1q6gkAYj3qFyOZ/qBIyFleqYNzyP8AqXWBuTLW3cSpd5nZ+wltZV4fPQECHJlb7BNxzlTNwcbXj0BCPtNG9eNg8zspnJE1mosrLds8Sy2yz6j0a5Bg/VBqgowBDqxnO3P9Zp70R8kR7F9lxBe494NQ/gSob/QYRKm28Sq1dvMvtV39MzBAwB5iA2TZWP7S2pWGVhU+YWO3BmkDC7IHT4kW7uOtbAMCZfTV9W//AB0XzPI3mFR/LKWAbm` && - `Veh/ylmNxj7hyJ3HP1CG0n0CUaFE5bkzsp9prtKtfrWU8CIU25EbBY4lnEb6hNNVsXMscIu4zUXm18/gH+2CZZXgbugOU5jGZz6pk7pqGxhpao4MMAK+oyhxYgPTUbdh3TuLmLqlHmDVBvEQBjuMqUWPg9NV9Mscu25ug6aB9uRNSS3LdEOF6BPGIAoXMr/eJgxeV2mWrt8Qbs5HiU3dvwINYv2mpZbVxuxLq1H0QV+nmIAg4ir6Jwo3` && - `H2xB8RqJmq1Z5Dfp0rrLnAh07hdxH5dEOGBl5/ToviGKxQ5m9m8SqxhEbcd04PmMNrZWI20ciFkxmbc8zt5hSbIuRndLm9paoHQDMr+HB+PH/uLSBj3xGUjzPMuXB7Y8COm2V2KoORA6scGMpEErYTdBccYMBPtEyohsOeBEfMZsTcWMU45eW6jIwszt5MZs9PhtLNcDjiAY6dmu2vYW8TT6ZFUqp5M/Y7F+qOm4ZhGOgOIFyIOYlm3z` && - `E++YPyMbf5Jiah1WLqhjOIbUOCRLLyDtUQq1lYsEdpnoml3e/MoTtoB1PoYOvj/wC4jjtuGWE5TKwgKdsd93WsY5hXH4Nxm6ZUDidw+07wLgkTSIgcbP6zU6Ou8c+ZdpBSQPf/ABK9K78kD9ItajnH4Hox9Pj7TtlPSRlZQpRdpmo063JtMu0nZXk9a8kS0YhOeoHTEJxNLpxaCzTRt+846Yz8mxSykAy7SXglmjDExK/QJY5aAfgIjQ` && - `HM0VHcA+3P/iIioML8xlDeZqvhgc5TiGlqWw4juNsMHEzBiZgbMJzKF5/WU17Ex88qG4M1GhsJOBxLaHr+oRqyvkQ9MwGJWzHiaHJZfT9/4J0DjEbT6jeQVyIPhNhPniW/DWU4Q5hrbOMREao7jNLUtibyuMzGP4YoDK6ErGFH/F//xABGEAACAQIDBAUJBwIFAwMFAAABAhEAAxIhMQQiQVEQEzJhcQUgQoGRobHB8BQjMDNS0eFAYi` && - `RQU3LxgpKyFTRDYGOAwvL/2gAIAQEABj8C/wDoiKiak0INTURWNGDBhkQdaM1nQit4/wCUZV94rJrvEZZcZ4eupDAzp39ArDMNhxaZctawoGKXjiMnsN+x+PjRRVnKrTMReuZjEMlUE1LnCAMyayPGNKKznrUGsz/knWF0wnjOVddYw3l/tarZwA4+KPIA512MGIySsozRz40Zus68jGXsFZ60r4hC6CM/bWDNVOoGlSZ5ZmhnSNk2Hg` && - `aWQsTGpn2RX5vUriywgY45cRW4FPjQDVH+Qs7MFAEyeFOOt2hwVOsIAfUMVBt2eKzkKwOAycjWfn5dBV1VlOoIkViGz2QRxwClaAxTsltR66Fm0tw3PThOx4zUnMUY/EzMf0MSOjKssJOoxaVxVxqp1HTn581nr0R0YVYgTvDLeHEZ0lpQbWiqr5cNBz9VKhbt1H4bq90W1WTJMRA/ocs66tTcYgwcPCvzFLYTK2xJB/3HL2ikduu6wL` && - `Ha+IGVGAATrA/oIJpWGQyG7p4Rw9VC4Du8+f4LXbzqiLqTW1bXsDP9mv4d05Yt2MQ5Vd1APosRLd8/0EUyszjhudr1Rn7KVbFnq1R9CYBXuisK31S3wC2sx7491a+dPRPm9w812V3340PZ8JyqVuOwMDDGh+RzoEeeNj2e4qPH3jkYsHKBzoPeZ77j0rrYj79Ojv8A6BerfrA2QKDEPaNKxLsyC5mfvGxdW/AwMvfTObl1y36nJA8BXH` && - `8Pd87IVn0ODkWOTTr3d1LszLEDXzrdoWOvuuMRXHhgULm2MBvF2UemxM58OXsrn0H8dXZFLIZUkaeFNa35fSBQxxzjo1rWs6y6J/Cz6R0BWQMj5GdPCgpbHHE0COz5jXLhwqoknkKubXcd3Ut91bjew+iI4DTXKsTq+HBuIilpPfGh0/etzI8QdRUnebhUnj+PNKxA6z0cpPD+KxsoEZgcRWvTmakZipFTRt4hjGq/OusKyg7UcBzrDk` && - `bbibbjjzHj9cKSfyrqwO5h/Hw6Lu0NoqzUlYJ4eZn5hBzFG1cgDMqT6Q+UVxhu7p6zarsfpQdpvAVKk+TthPL824Pl9a19k2O2b1//AE7QxMTnqaNx7v2X/Ts2ng66s1fdtbMsSSvHvP17NB/Qb7Cxb/SmbHxPy99FbYkyMRn4njlTSZY6nzIOQoGy67UnJjDe3Q1hMo/FGyamtC3cOEYpGYj40cEu6+iuVxP2pkg3Z7FxWwsDwn+Ku9` && - `W2LenDp4eB93CriNubRaGPCRmGHyrHZtFyRIxbopLu07TbbC26vZVT4c/GjsqFrdpfzWKkE9wq1sCAzgy7ujPo0no760q0VFovilS1yI/fjWL2jlWs99NsfkJBddTFzaG7CeH1w411u1vc8o+UnzC9pvZ8zyo/br32Wwf/AILJ3jr2mrBs1lbY7uNAWhqYLZbo50k2jbYN2SMx486gf0Bt9q5+hBJ/jxOVFOsu2rZJxYIkZzqNDMjLFQ` && - `CaUEtqjEic2j5V/wC1uHww/vX5eBY55msSq57i5PxqCMPjQF63buj+5dK/wy4Txzr70T3GtIo4s6DMqsR+pZBFBbqJj4xnUUzptN23iaSFC/MVOzE9erYsdwyW7iaw3LF1No06oqZPgdK/xOzPcnjaEx3RWGz5P2jF/wDc3K+/6sPOidGZodWuLxMUcaoOEq0++iRbuRzMQPfTbMt97Hk+1qE/Mv8A8UF2W2PJmw8IH3jj640epSCe05` && - `zZvE1vbUrGJhN74UP/AEzyc5U59beyX69dR5R8ptgzm3YEAjxpbWyB1s7OWtZzm2RP13mian8bAzOB/Y5U+0UNj2VFtCMT9Xu4V/n96gAKq5ADQUyMMiI1pCtkHLM/o7vGsRXTuo7mHP21hZ29Rj4Vhlo/3UBifLm0/GsJyaJ7vwc6zEU2AW49Fjn7q6r7RctxBuFcvZx99JZQb9wiY3jnxY+J6QBaZjzBim2a5cuhbgzwfCYyFPtlwL` && - `Z8m2m+6R//AJSPSbn4ePrNvyRsmNQYN+7kv1oflU+VfKNy6P8ATtZL9eqh1Oy21IMhok+01ju3FRebGKf7Ev2y4nBOz/3aUhN1Hxsz7qwEk5r35zWBRJ/FW5Z2VtqGL7xUbeC8wONYkB6o6Nx9dNfZvu1XESM8q+x7PP23at+4wbKyP4yHfrR8n7AEVNnRQ925n4QKuLeu9fhIEO+FTxnCB9RSoSNxczoK31wzw5VCtR6y4MS+iMzW6f` && - `aI6MzhjMN+nvoElSea6Hv/AAMxTJbJr73Oh1tm25GmJQaaxaVUU/oUCDzr7PewrtS9pOfeO7o3vZI+dbRbt7UEZhh3fvSoPcKTZtnuXtpC5Ll/4ihY8neQWsga9edTzzisWLY9ij0dZ/8AKlvbR5avsx1W1ufXspbz3pbiCgOfrmrdt2uXlt9kXHLAerSgAIA0HTjQZzFYb4/6v3pW2xUtK3ppcxKPHQ+6KkGRVvCowGk6g/mCZqLlx2` && - `E6E0tz21csnY7zqujIy5+qaQWy1t2EkXlKRQu2la5bjMK1FrFzrXB3kJhvYaN3ZG+z7Qc3tsO14j5iruxFXW4sXMHHIzlzEisd5XXEROf3l5vkO7+ZDQOtYKHfXEQOPOr1+8hQu0KCR2Rp86gYczGYkd9HgBRwmM+dFG0Czl8K/LaKCgyDkD8qIOHD30LhSLkYSTr+BCLib3Vj61G4HATr4g/KgAkrixQd7P8AVnWKSyYdJxMv7/HxrK` && - `o2m2jDQYu+msomBL9uUz4rqPYake7jUJblTkhttMcJHL1USLaBiZZ1t4cfee/p6q2DMgzRCoyYDhhv36D03Nn2m7lhlGPA0UsYQon74jTuHOlxYzCjGUXER4CiiNdKnQdU5HwqHtbQ91WnKydKlLUqOyGgeqpvHC0DETkJ8aazZwXlIkW1BxeNMtzYb4fU/wDJiirpukan4ViRMB/sJX4UjXXe7g4OF/aagXHjWG3s/XnS9Zfe5hbFDR` && - `88/fTFQDdYZE7x/wCKxYTmYUDUnkK3u22beNTThIxsMgTRDGZq53wRQtvccrbJwKTkvhVtTO/kw9U0MTb3OhiM/gdSExGN/wAKO+s8c6yYHwNa0NmkZDcz17vdUMJU5GuquMcJO43FG4Z1DtjGQYxxqLnZHpnl399XHV8QtoFEaGf/AOR0jY7M/aHObDLCvH676CgBVUZDzcCO6Wz2kByI+XqqAIA4VCgAch5pKBVfWY+NBsxI0PDzZP` && - `8AzRuXNTw5Ck2u5ae5YW2RuLOA8T7KDKZBzFRUBwuUxh19dMp8KDLk61+VveIrrLjDTdwns0Ms8VDzO/pOETRZjixNiPI1hAHgKBAzoNRl5ZnAXFwb0Rlnr0NYtwAmTPy4wO+s5GPLLhRTaWVYGbcI591XLwaQclOLUa9KXrmQvWgiGOIJke8ee9xJxDumgxu9cGzDxHmsx0Aml6zxduR/ap0oMpDA6EdIt8NT30YG7oG/VV4TJNp/hW` && - `yvEQmH2ZfKkMNnu65D6j31J1iBREViQa6ihhtEk8zpQAdFnhE1jYbxrez7hXV2Lbf7q32NfmMR3mpu24aeGdZUaZAwTnzintrbyZdyDGHPXv4+2sxTWsQgCRi4UTm2eId9NcxG2wGHF+mePRfB7XWmfl7oprY3T9Z0pe0VQAq/JmkacY1qB0FmIAGpNPeVn+yAwnDrI4+HnlXEqciKNtdpuSpkYt6QeNRcvXbmeuMj5+aMRzOgAkmgrC` && - `MzA5CchWISjHUrx8edYbgg/qGh6PvLaMP7hNW2A/NcQO9jUESujeFG0ghLd11Ud2KuPqrNoMSBRNu2Y4M2Qamx2d4cFz95ApisKvotrPfWJgJ4d1FiCY5UWu9vj5mpFfmBiuta1nbIJ1YGR9eqsxucG+VYbefhTnFvERA4UFGlXVtziNtkC98cejaR6XWgx3YFHypAGRce7BWcXHXhxp7ly2iO7Tuti9ED5dNryWpZVKdbeM9pZiKgCA` && - `OHn50l0cGA9Ry+vCtDUjMeYt1RMAgjuoODIIkdBDCQawHNT2SdfDotktz0XLDy+H/bRo3LlwYTejAB+pvjLeys6utcbAouYQh3iWgH2+3KNKEggxx6MuhkPpLFMriGBg1E5+YoLLyg6/WlFZhgJjurC3Ec86hT7ahj7KgCsR7hNOZbCLa5cNT+1dX1ouPPYt7zewVtG1Om/m2A8IGQ91W3W+rIhneXM+P/AAPMXrLK3br7toHU/wAVgX` && - `M+kefnZ1OtMiZk8zx4e+g66GlwkYmYDD+rzGzIy4a0FUAAcK16NSIzy7ui6xEaKDzH0TRz1yrXJXVz4Ag0HRgwPI0m2LhuIxFuDl1YMaZ8+6emGpcb4QxyPD29Bcdls/XxoMphh0SanDApcEYR2zROESdT9eFFlJnUDvoAjWsgvspmImM8hWAai4uviDRga5mtlRMgEiIjMa++aKu3bGGfGrhVjv8ADl5hW08Mq4WJzFtZ+PnESRI1FR` && - `HR3ULU3jIgqHbtHjw1nnRm0inmNfr1+bphBzA/SOVa9AVe02n79EUDhhSAw76i8JBGE+FdSgw2rglB3jX5e+jbbQiNaNq+cWcLcyz5SOHKeY8OiGq4XOJXbKc8tPfr66/w102h+jVfZw9VdVtGzdYp9K0+ntqSr2wT6Sn6+NRjn1VmjEf7DUYXnlhpVYy8ZmhbxF3JjCgmoImaTsC22Q8avPilMZjOfH3zRe6cKgTJqbjq2C2qkaw/H3` && - `H31NW9oKFQ7M4HczEj41fukqTbshk5Kc8vhRSwyWdsKygfst/HCuvT7tkyuo2ts9G8ZfgtXHVvzlxXl5RkPPnoyNbOtxVCpcWWRs555jnTIwh117+/zD5mMBWUrGbRH18qAVR7a7XsyopcLWid2Z0yjKgcxMe+reAw4O6e+iCMJBwkcjWLDbKMmG5Izbl8Wp8LKV1UnXwP7/RlZkag6ijCtgAGEATzqVxetY6ZNq2x71FEm2Ae7Kgtva` && - `7ygc2mobyheK8Rn+9PgXNRm5/epiktsgvelhy3e/4+ysOFQmvfNSzuwmQp0H139H2a1+be3RHoji3q/ajYtrCWSLcf9I/er1thlhHr1q/s1wnFbfHbad4d45V1Y2i8HgqXntKTJB56msGx7S/VRAXIlPCco7qW3dW5YOHFcua4u4HhRCatmzHMnzAVt9YkZga/XdRvrcUysp30Lt1cLZ4h3jpzp7R9Ieyrl1exART+qJ/fzBMd1a+YuH` && - `gc6yEZ0DP80QuGdVnn/wA0t1TlrVu8NG3GPw+f/dQPRjQ4XiPGslDNM5cO7w1z8Mqm05t5NppiPH65197AH6sWtEjCqzlK5mouHwIFYsQivzFnlOdY7n3KasSc4+VAQEXtAHXxpcPWWxj17s8/CusvOrvEDCuEAUem68sSdSfhW02tHu3N2NYwAT7j7KxGYPZkaUzRnz8+5ag41AgH0poRZutOeLCc6S51qInW4mttw5mhdN53QN1nVx` && - `lj5/OOdZdE0yEkSIypbd0AcAwG6f28wYYmeNadEeZgOFbnLn4VGHC65waykpqeP8/XhRSRhbNW1g8DRLIcPHCZ9fOhcQhlOhBkGstejcfBHdRu3tnZgNXUyo4TB09VYk0OhHGoOdG4AN3KQOVfdi2qxq2fu/mgz3ccZiV7Phw90561p5rXTook1cs3yugIjlH7zTHGGGZU8xOXupqJPHzMugSddKuOyr1SSqP4f8mktzOFQPMmhHQ9u1` && - `gCDddmE59woKCYAjPp3BJ8YoAlbciVnexDnWAnC4E7prC3Hsnn0iprMb3A1lWLhrUDXjWFbNxBxwXXSfGDXW2Gxc0dyZ9Z0qc+8HVTyNTXdT30vXLRuahVWPhQ666IDf7pHqC/A0MCtIGr6/WVQOgs7BVGZJ4Vy6MqiurO7dL9n+2f299B81IEZNFBbZhFUVlUVNdmsunZRsttrl3ewqok6VasHO5G+e/zGxXkXCYOIxnE1APRNXSNGv` && - `MZHHzTgRVLZmBrUxnzoowgc6wwSOFAjzOVREHlW5lQnTQnke+sSrINDfCxwI1rCcjy4ipLEngOJorC4weWRFb6xzq5fRlOFCwzoCWjFmVOkZ+zL39ASHnURx+v2rEzaaAfWdAKGcEwWXODRd2AUDMmvuw0N6v5FGch0ZdEHzVVmguYWr21a29nTqhl6ZzPsEe3zftqS2ERqIjWrFxRlcOARwaNKTrFO+wRSM8zV5dpd71y0/ZJgeMe2o` && - `CgDkB529WQ6MXPWsR0FEdPgahcJPM1nRVVnkOVawTUMisORFHBaVD3VvJX6vGriswLsCO6KxscJ0+vrhWbtEQQDFFLVswTOKSxnvpurxddoN33511YdVABGIHEx75ojfAxYgrPiilQkYzoJ1o1p0Z9GXmfbLF4WVtHDbLpMggy1W9lsTgQcTme/wA23iLyINxEaLbtzw1tOwpfe1etsL2yydwxz5/80m1bTs4XqWVrezK8ntCSTpoK2T` && - `aryhLW2YlvrkQpJ08Bu+yisYARmOFYmxCwDDBs8I0kdGta+e1oRuxpw8yagVDhVH9pmahRAGgFSmQ/TWT+qPb8qI0I1FM+cAZxWQiMo5VrHfyqShU8jwogJigS3P8Amsdth/u4RzoWyN7iRoaTMZmM6+02t27aOJTy50Vw4L6/mWjkQfDzs66mJtW837zwHzpNlK4UXdaD2h8hS2UGnnC6VwXAcNxY7LDWrPlXZRN3Zu0OafXxpNotHc` && - `cSKu2gJdd9PEfUVZusZur93cz9IfU+urVq/ab7B2rjomIluC5Zgd/wom0yuO4z52fSLizOIA+vL8DMVigTETXI8COFNbuJiBHDjWJNfjR8YI5GpQ4hLSJ7+FFjZZQVgliPVofGioANt+0p+Iq8iSIgjlJzPxouUIa3J0yBwmr9y3IKo0htQRVu5ttgO5RSGGRGXOsfkzb3bDpZvcfXR2XabZsbSnaRvlSdbO/x5UwD4JHaHCsKNZvqMh` && - `iEGsJexbB9JASR7fGkQWcTAbzEziPE1hRQo5Dz/wD1BF/wm0ZbR/a36vrvqRhdHHiCKbZLpjYtoOK0x9E8vru6Ns8lndt3vvrA0HeB9ejRtMSAeVBynWLOHfQUqIoWVLFRlyz/AAADzmjOnA1l+DhHRmM9JBg+2oXTpmsLaSDVwNjC3Fx7pjFzB93tpVk7gC9HV7VamOy4yZfA0Ln2w7UEnAjpBz7+NHZhItnLCw3l8KwXrSiIKsuvrq` && - `UEEkn8G55I8sIq7QBH9t0cxWBsVzydcOR16s1gaHtvmrDh3il8neU2+6P5N/h4H6yrZvK9gb+zPvcJX6y9dJfstit3FxKa3lBir9y/ct/aCxLKTDROUf2/Ws9G4yv4Hp1rLpIxZDKO+o/FPS930VkH1V11475EBZyUcqfWCZHt/H6u8MNwfl3QM1NHYvLuznaNlbdXaFEg+Pf78qx7FtVvbdicn7rFDr6taNi9dVJzi5ulfXzp7W27Jt` && - `F3YGGHMdn11e2Ukk2XkeDfyD0XEWwL5MbpAPHWDrGtfdWbpCnX7MU//Qx7acPZ6s8SXxHz25Ze36ipH47XDoomjauF1uXLgaA2QGuXsoqu15Hjg3hWArA9HnH9AyOoZWEEHjRdthVSf0MVHsFC0dkxZziLmfbWIXNqUfpDiPhTJsdnqw2bGZJ6GuoASOdG5cOfwrLzshnWsnj+Nl0KhzDOo99JZjenIkV1jEv+nu/qLl1HAnRcNGzdQp` && - `cUSR+3TrHRn/RW1H+qn/kBSnCrMOJX+q38SNzSi9z76xwuIMx/uX9vdWJGDDmD0Z6Vuj+hS2hw4pJPcP8AmrT37hFhGFycEF4Mga+HDh/WFToaLWlaxd/Wh+POjK9db/UmvsrSa06Y87LzT0PdicIJrZ8GZYm3Hjn8qCooGX9f1nVgPMkj0vGuqCmzdGu97xzFRikjXKCOnOp87Pzb/wB2jJhOjQRlS7RfwWksHEtsbxLEEZn9v8hxOC` && - `G/UDQzzGh4j10S4a6n6lG8PEcfV7Kx2riuvdX2e7fUXeVZ6fgCpmhba6oY8zXUAb149WPXlTFwQzHQ/wCSC9sw6u/Obpukjv51c2e6Q5ZpuA8SawmW2bgeNv8AipBkdEdOVTQ6m4bbgyCKxbXs910/1LQkGnv7VbKddcJKOmfcD3V1lnZLaPM4gP8AJmu27yyx0Iis3tR4mp2bBfWc7NwlB/0kafWlfZLmxG2pO/cuMMX/AE4Sff79KV` && - `vJ9s7OwmStxpqb2zNtVoenbXfHqrHacOKF1skMmTTEbE5QrunEsn1TW+mBP08T411ziEHZ7/8ALvtCTs20/wCrb4+I41b2fbNvR7FvMIljDiPNs/dRd2xsRHdXYX2f/jr/AP/EACwQAQACAgIBAwMEAgMBAQAAAAEAESExQVFhcYGREKGxIMHR8DDhQFDxYID/2gAIAQEAAT8h/wDiKjczzKFcUQUbt3KflOOPeCBkb4DyMVs3WbZqFn` && - `iItirN/NcQLHH/AEzqZnliNau6aEWoWD2SzYpYcDsjwGOZusnUyJAWUUWnS14u5bo7kDn+4/0HKvyVAP3+zAypMTcDR3gOdcWw+naIoJckq2SNNc+m+YM+EB5uz9paCzcbAC/+kDIFYyI7uJBJvJjxQ36b6tw2CtaXGWas9CIwt8cGdV74d8yyNxqlfxRZ/HNxfb2MRYASByb9GseCUA0WFh1SIe0CkRgWpV43zfO5ncivvLJQGt7tTN` && - `+K1q66mc35pegV8/Eur2l9hcryXTZdnBAwhp2g0Gd1qLQcn/QvhEkoHcakshWjVWAfOT7SiGmh+Smv2iVK2dnxHzb8zQuXZCxUOpn6LFPXKMLxHm3Rj2hjXgXH2jafkzbOlk5+Y11lFD7Fr0IJd5IdlE4f8ihXbt/4O0u6v6U/Aj4BkA3YR9vXjdMvNQPPf65LMMtVGJdwwqHMMMcNkG4irmFIYgWZQvumqJzQCorUL0Qn81Vl3PVOKn` && - `sqnZlSRVBPLf4wMmhwMntz/wABAW6mashcIvD726x1vxElilSHWqrUjUDlaI4PqLvmpeX22GfWPN3ZMj6LbJuViWJa2J2+0ahuDLHdniHXmNzE6I6ZSVKGoUHrGnDJml84IVR2OHo/wkxa30EtECw2qFb4Fav4rA5YFwXb1cc8Pd/8C3G4dZW+auyhtV9gtxVhFBAiA9WuMY11iXa9Kqj4BVCp4RGLy/U5YYiMIeCWlIa1LIwc6TM6gt` && - `wi1jMrpSGrfiA6J+Xhho51e94IcCKUG5VKLNr6IGaFG/T9eR1V6tp4Gc4Ct3CLNQ4s3j9ioDMA/wDAbARTWm7we5l48zWtFkv2DN10j1CHH3fMdkbS79dcRF4YOHFOpyGEgWoi3FTUUvbLHxB6vE0yiGCxlmfjM8QXtYpCuM3S9azjaFxhgBh/VdYnwDFadt16Qtou1tiRpda8H1le3KFlD3j0eP8AOqtAlWlL0xNZmHruX+8wGaBBxH` && - `/2Ii0hlsozkKiecpSJOjXM4f0DTZAbllSJfpmOGIXdRWzqchmOqnBLur8TLAgi0sZtIfu0iuc79OSNbduyuPtjOY8tV8foG6u7gLWFFWcpFui0dq0W52wo2thJyIUAbYy8JQCBjabTPuPxMMq+BxKief8AOQi4jB5E4mw+2bcF5iPeHKwZz78fLGaxZ4ZXBuLqkgSrsCHVIP7pX1Behr9nmNe5Xty05rnxfpDlLgeKGT7vS+0RtLtJzl` && - `45/JFsudZDdvB7uPeEVELea8TNuPwI45m2/pEFlTfaivMOojMQpO5TjjIqc2t+Bs67mR5o5Vnt8f0+tCTR3F6/c15lZmYX2O/T43wm/fjTb7Km+TqpwV+CGx6Ebo3XDG+Z8ja+DFvR4xaGIXczf86jkGGqXizBZhA1xJekJrOttlYedcZibgzJ+Dx/d3LtYYGqHr3OZuVt5i4HRvGJ0BXqHIerEggyOr259SDsMMPJq8rsoFjUodilzk` && - `un3xK0N81gyCrq1HpM6NJARxY4BL1bhVUVx8zK67JV9MBlmKAwNK5zewTzLVXNVT9spznS9EduRehsJ+fj3dV3OoYH2H7dxeZomJfwjfawFVo5i1FEfIgFwhb4+yc87t2FGsUQwFpwu0esxFIq8uJXBBXivtznnQgdidBuOThRXwOp72MQ4fBgw+JcZ90z6nbvmZxHzpZ/73dNVEZdyxSl5W2XN73dNzREBi/84SW41G9KcGuDygG1rK` && - `48EABBeSTLXyX8xZARfq50uz5jQDG1I+4l17ep7bGD2fiW2qFq/ux7RmxconQAFmmyWbao2avu5gqt85CZQZuoVQZYTGI6lCwuoR9WnZ6KKuHYTvGXLiUlEDgaJuLbAWg5OAlC4I2CFcikxRBLguzLrAWL0kf2zs2zn4d5jvl1AfL+JfJ0CKB5vncsm8ekY5YXJVptAVvTK9gRu1XJgJKHpTmkb4MeIbRXI91VDnBzeApu3O7SsXVnru` && - `m2GA5bLPaZeZjsfNvxeA+sFAUp21PNPGrbxGgDBaR3Qv3GUyiFTchHpf2AqxeAg1m/82SD22D4H4YZBo0Wl0Gl3qtMbC602UFBwEo1VY03FYmR5PK/ge/FgjerxZ+DcDCVGCh7v/Y9yDe16XlH/V4Q/JmVDowzXM7t536cEFUYKN+x5z+3Z9Bh9SsWQFys3iS4yL0TAxyTf1x/MMktAhpWjFGt2PXNasFShajYyBb3KnSTF2ygixVZBd` && - `1djxEoKwImtKMDdjd7mMfNjyp9ddkdw7jSg90e/ZH5wFGnVavg53LpfYU33GVZfij5ZY6xa7hVuA2ri7ZeUC2XByZpsfuRKpDfUVdv61Ayh+gCWJUJWAVHOpfH+j1GoLR5pxMu58UF2VuPbStsTQ5N1BShHJpyhFZAh5DWc4w+LteWUHoGKS8U3tKSOinQfY8cSvTWZbI6fP8Ac7m3HiciIcSehmCC2lqrz8wu6LlqDXWldH0v2scXKD` && - `23+2/j87hBjDcArM4ItesUKMtLF8MU22wy+WDal+ZmBv7SPOs+CZShf0+V9tMN40psWFk3bRQv3QS8AcVtV2q5uvaFZa59N5TaF2+eiZh1JR5ly4lpoVWbeWh94vgaMj2RqBRmzWfIcDnmo8Kbry1n+yE2BQGA+uWhexhzK4SOiVX9dSwOMUNilIG92AWpAQE0kBFjau2nJOem2yHXrMNhZewiYUw6YTXcpWVeQaL/ANR3t1QTnC+ixV` && - `ZsMtVYg7+b9ZfxYrYN6PvXrNn/APg/aX8juU34iicG9JQfxmohAobr7Bzi4vozRSLwErDhWTmMxLWKI4dqveuJamYVLw4fF+8FHZWfPdh7XL03Id1/9RuFHSZv2/3Fn2Kuza5sO4nb54Dz28Ht8Q4rRBrfZ80YhB+im0ymb1DXOYubI0LWBy/Bp3C9lpIJlkwMOLyxLPb7Xa2re96eYKYeRSDeas1nPDtRVLQwxbggLFAU8K0Y8QEIy9` && - `p8mhzL93pYhqY3ARrIvWvRxmJl0CttMIGY3Xri6PoEALBsLpr2Vz1zLLc2BuvBb63djcvRajk/XK45C0usF5iPhPNED7t50fJA3vozZNI5c6vBnoVCBfAJnJ5F0brUM5Cxy/qd1MeB6LfC3t5JZhtCIrpY+7NFUE444Jj19oxdDBQHmyj6RKOQUe6D8nnXI9T1dz63LhwpJC94XJu97hyrtHCdruPZJgeL9wG7whrDRagFBZe3VpoT5q` && - `KaQoc8I/vbQRdBS81hx4AD2hpzwIZ/b2lgnXj1fSBa+a9d6gSwoHxK/aXeaByOacXiaGD5CIPhE3xmZStMwed/3fBDACrKFZi+iha6hTbNZPPKfmvbQroe7zj198gQeG4prPJFuvdGQCHQM0L5BYzr2LEfDUsp7iksrZ5Y8v8AV5CVhgAKX2rzOeNF1PO3A84caujMFQRZNtm2h8B5+rsb0OjK+XIHm3FSt8QOAgxcvVEi79ojfUX4we` && - `p6YxDBAUAoCDSvQUfS2qv67qrCMv5H93mEYoHk8HzBOoI+iUUZgMwvAG1LPHdHxGfnQ/Eo6p7ttr0U3DeDsNJEXA4L1j5jiodgc8sV4MmM5iWGkVHXLxkw9kDmrvF6ZzDq4mB8s51l195sEhVf33l+FHZCxzNah0hcO5j0lK1g9l9DKXd0NJRXqVXiYZa0GohTbnF95lBaYBUw1QuzCmHe84uMpUuWG25sA9AjeizeQEzN5c2y+OOcN1` && - `m4SA3W0+HqdPmrC4BpOgiVbHrR4+tDOssu2cKVd09ZelZmGkWEZKWMNlQVUBVYLauvG4fsASpExR95d+gAVVgWlZxMYG7Bpm19y+mPKFUkptZSqVosSai0mg9EL4cen95nNd6HZPHmWCfkGeLM3fn98pR9LNzYzb7gP5TGN24NGL/b4JW2HEUWtr9+TzAv4SoD3b+0CC+R5etl/E05mbDHgrj3ZeXhxW/BM7bstXGPTPd6cNzWMvNNfb` && - `+/vMe9RPtCdmpm381WIDfOG2WojFYsOfKuvXzMP2fyFW3kAr9ksUrGnzKLPV1PwV/eyqA0pw5XBUxuuRoMPNdG71FAsqKLvBBiYKN4Xhp07pdJdMzVbFYAPQrNrZCF1Hb9DwtaKAlFBBbX3BfR7talF8y6XmP0DlqUUi2DCMPjYWJVg65HyXiyNd3TBnVH0JQjSTa/plhzd6IMywnNDuaMYKMR7vLCfQ1hjOuJQGQx/THx92mYtQnUtU` && - `0+YiShesn4tfaYk10drc+Rn6H95jqwJWVPzCkO1tLW8basgwLF7i65+0sht9iH2CcXlC0euP571uh48AzTq+/9bq4Rb7Fb35xN0Hx37foVBxeT/wAl1L9yLPUmdgmoEFBhNcP/AKjyuBxaCMYJ5pfzOCPfkDnhbDHiLB4RS6nGPqb4i/3zMoNg2ULmg/KFyR5FKkFOhk3vUI2Oqj1QV7Pz9ajSJTSGu0b9u4TMCgFAfS4QfoVanBFjC9` && - `5tRHpkfZGiMHDW/wB4aQQsTSfoCZrNu1ZPJWvXxCeikORhjcKGDI5uZUdhfJ36/OctiITawAp2+bVf2ZstnEbxY/JWNvdA8ZYvMqMGm2QEFAu8yjQU2u66QKVv3rEADiOTqlTikdlmSWkIC7pJwDwvP6FcjGA+g6z9kTutJVtzjjfxNftlGHDUs7At4a8YqWHoUVUdYKyylwMZ1nnfHcrJ0XOuX1wm3ZDx+zIk2GacqaUTfLHK+sAAx0` && - `XeRjnR6m4KB19XIZyFnOb021RnzBGVzTv/AB4l/W/otDSJ0QYABCwqmX2RmrGyIgsgaWC12DvxmO/rgu1zqxx5iI60AoJr26iu5knKne2GveqgF2xEchttBf5haKS/orH8wrqe+jX7Tn4VcMvSFPamVNKoYyXvAGkypf0goeokN+nQ99y1nmVjBaZ5Z/l89R1wAfoyegjJdBvcOgrLFwdVq9e0ZEGujK0H7PiVprljH2OHn53D18S++p` && - `xH6woDS0zNcQENl0KukVe8ZxAEBfRt1+xCoIK8C99ITSyuvZ+WO3KM+n/v6LwT5CAlHcLrkfeBQCrXL+mt7och5nIOdy+Dkl4i2pbGRoywyLoUYQi5hZza2TkbX8pa7+pENtkO79R+ONcQNKk5VjbIMXh37PzRzObiAb8syD2b0fxF2yQ3VqOvwSaCoe5YPDlzKhUh9k1NMVoDLhcsjAUKNmGJ6n1gvJAFkQ6Bo4FfdEd2bY53S8uQSu` && - `YCtRXgpT7xUVxFKvXH2GHBeoLP2iGrPP8AtKC2tBl/M4FmirY69qBM1n+N+JjABSJuA7Qa8lXHx+POHdpj0AAPhjB+XxKCuXxDNBhTDVdjRpyKYPpGOkya+1gmzfw5Vx4xZxdcYA7LDLUeO1VqyZ6IlsyGoOx8ef8AYS33RZuX+CC1UaGKcP2x/T9VQpZPWIhQ1hrUzudHsx7wLuXILVdDgeH7ZJXR9UHnKC6t4PoLHMszHyDGVVyYd2` && - `daR0u8t1x8QtasbDBz/faDGABW0h933j2qRpM2gL+YmKI8AH8Onwso7ZndHn0pNYTBL60IW5MPTg8zlYAtnBpzjveDDmOdxW89P98mJSQ3p1zYAt68GKjIRmkZj6MdhhZ3G7hyiLq7l4exiN4DFD21KtwxzDqGwM4uQ5t4MZrrM34WaeJlQYtUu6K1g2tehlj2sOSOVslVVPfl9YCnIuAp6Bfy46+hNh33u/JgPyjmYA8ytLj+tQLGsD` && - `WLP8ZjfTaq5sNrBx3Lv0qupdOVPDmCoHwpud5Kxp0R1donqOw32lQKFaxt9r+jMGnH+Th+6W4sFd/Te9xuBAp0iNHqQMCUEBVpEswgNXbh9twneAFxYlPGnsy0V+qLt9u649rhfakMxJpcVRk0wbOT2/vHMUFD269oLZFVZRpq8XhzGjlVN45evBvzAViqDyS9GE84tb0XTyjxO2eYXkjW1XpZTppFrZkT3bFlSZSsMpau2Ap7M2ddBK` && - `SJLEa3eKbhCszlW6Xor0Ikke2o8l4/MampQqR97fvUr7zVqCQuOFvhuVcAKFUXeTA1m9Xrceygh0qco9U92FGAQhBoDsK/cZUgFfKIuFbcGb4KrNhwS24wRCbC7VmjQ8Fte7tVK5yKoqlZ9RX63WlSKr7794TY3Kwz6QG0xZlmAjq2bfTNVzANBT6oX5icIeCvzLFLYtWqku7rUBzO0W8m6uvceDT2iZrUgCAyVSX1MZhpXAHl4111L1` && - `9eAE04vP2uFOIurGFFoulaxORCrBBmlqDrTXaMqfPmHNqlpp8fnMRu3uLU5bPkb5KIsNgagaS77j7R3TF3p7MF794Ii90A8MSyocRAzGw6V3RHw3x6U+SGVWNPewt0q0ccsfTCdowHmIjgOEeYAFbkMjGN5A+0TXQF2X5fCAbWUhlY/YS1UUNPbatr7vrCKCOysSlVxGkolLox+g3LJQSwy8vCWryS9WP2I+BhxKGX1hS14gNiTcGPyj` && - `ECAFVbl3+zDKcADS6xz9j4lp75qror6jITHa5Ss+i/W+aaZPBZv4gPgQVa0cyt19LoHDdHzHieCIByGzs45PQuVkdW7L8l3s41NDPgeHh8cnvXWiip9UGqhxTSCzrnf8REpk28Pf8AM3erVdxqmVao+wQvF7o8S2cOnvkK+27OSiaU0Guof3vUtBTDbeXEbVl1Vq6t1dW+ZYtWWLautgPRgCYsqLYB9LpYUXLnIfQkg21A5VhhkfBmDL` && - `ghIV9OZRmWii6zWnTUvVq3Kn2qiR9I7XgAKNQweU5IJcIoiFNIgtgkFfQsTOZDyrxuKNVe6y+UPFr+i/VbWgVBnxLu4EWXHSaSQejLcYblhzCrcAxpULTLdscTCRCmQd/g+I/xeAY+ZZbTvuvD/P71YZqnOSo8J3dBMNvU8i7rmO1Q3a/jsmUFX8ePSFGW60uK/ZXMS4dA0wy7jxgDp61x43klbZSK/wCn7QwgUabGuYhTOzbmFe1X/a` && - `YRRWjz/EdfuIMGPmDT6ODybeVCCOI4+AMzBa8GNtF0tuok0rWvBjl8r+2LLgUMiAXVSGd4wYpuqlnJSKCH6Avau6v7Fw/AubdjCCgw7igvaPRd/TN4l5uUbICK6gaqG7YmEtFLalL4A/pXOImlHIN/Pye49Q5nFh/GviAKysFOK/iULxCqbejN8uKJSqtUAm9VHdagjH5+lTN6MZLbbDD6wFvs1/5j0gWWtj1M+w/TeQN+wrhlp7hgr2` && - `5+08pjcPBfLa6feNcOrhZRUTdoZcmG6Vc0anZuWtIlKMKLz9pewipBZhRxiZUMUEMXx7tfD3WDvDXkdnzKhd5YVtWVfPtiiFZOGoC+kNbq4FlUMDWLOd3hu9zf0EttBz81wrXEugoKmXsjm4zFsefoYDSUmKSCbD4lvj6LlifBziAI71XoQIMcNyLantVf0tJrHB6babBooxriZ2AdXrKplSGDiX6SKWRsQm6jz3GA+sEm2XAjl5wbYF` && - `Ra9phEl7Yo261iOUsE0ItaRxPWVbOyBOrjGtzXSquBuj7fFRZ+nAy0OIyIXi+5gV20Xw20UeOfSxoOAhQREDRw0+nT/fQFDGrOSuXPMG0FdJ+fJ/djDvIW2U1URTklfhAtLEQBnymEyF8/gy5qDQ0FQo9DZ8W4g0oWnIcuemrZeh4vXsNPrxxXpdspMd1amPXJrzHCyELyMvFRbgbkJdLKYfTmFNQKPopRghsfoI2XKJj7729oCUY19R` && - `teX5dQOQDKFW/qN8SejhM/3MukrEL3X4M34XUaZthk7HyNkBJFhLeoPJfulqpctnsfKVDCGlUZldnVoy67QH45CnrEtEdj5+g2uyeQY6/ZLHBNUuFIK9iKeAw+z2yrcRJiPaZ3LPAihsajFwFT1xmurgd6OxGIgi6X2Vxz48xWBxzodRPIVYb6n7e1JhlL3O7yGzl9qca1Td89gC06Wd/ZAbvb1Gd+pye/djYo5ybPZbY+5hKKGXsGhv` && - `k/1plNmgqM0kUrlDetVM1nWosMnnnYpjPoesThfcrz2OfTvcM6RIAspWX5JdvbD7yYp3wmB4x92DvQKSxwNMw0GQJLsvasLBnDR+u6sUkHpUP977ELPbR2X5JSq1dVrs/A+7Gfo5vDGTgemJr33bt3CCA73LOTsgDUyUq6U9/f2lHBBwwiu/ouIC8QTKSnuGycF1/g/vcSwGoIqZgL3Fz9GT6OmY+7HmaNxKtYplq+qZqCioed/wAspI` && - `nDHZIC7e5tZ9gR/aJNetxBjvFq42mfRyBqisfH0N2t7ll5/Y1gslE7kQjBu/HuphEd2Uv3eB+eIAy6GkXryx998xXzwO/Hsf4bVNFuX9z+4pAX5fzo/u/W5bca/wBuE7l1TE3Ds6/rFMs2GCOW6Xq35ZRcDwGV+TWWXTMsIHDFS7AgJ71RBQkwBbU1/aYrDG1ncZS48dKUeYueU4NUv8JBcIQFW/o4HMyY1wRsxbpxOQlk2pjRmUJ2xB` && - `FLLFs7ySMJl8+X+5wW+MS7yxZ6VXpv9G0B/wAfIYf9hjs/DTCygMuj8HjZnc5aEPVbYetU5wYYIsHL3CLHsXfrE7DupVxRqlcY8Vy+fpujiPc+/wBKXlAaYXqUXTF1Qk19eV1+Bbg7bjdbqaTrLmsuOOsxreIpibfS+UwHEUllTlna/tFnkzOkZpCDRFlwKgmb95p3NRxMlBCrm6kOvEvXa00Ckdii/SIOQaRR9RPmbI8LcAGfj/gOgA` && - `NYHYk/3MqsB9pVRC3G+DrxqJURvAvGb/eBUTkE+V/Hl7+ioiApjcuKPFcDoioqoeTuO2YYwYuVV0ysM/Aup84LthWvMW2ZxMxwS7lW/Q5g1Kv3zIgD8wRWHRA4s4fTKxe5KvdS6wAXot47/wCOlmYFXFj4S3ywonquT+tRu4U5mks6Y4vMpqV4KhM/mcCVQ3CrUKMymkBcaqZqDBPvJviQsHcVltrLe/3kD5JmtpsTqABRgP8Akh3UNj` && - `U336/yytFTwlX9GxywaXdWh95iziCo44Jdy8wDARNx/KZLqcpwTNNIZTGZW7jLUEKomRUULKNXzY+8IhBoQDnhdu3/ADBA2FJ4hqC5trxRx6GX6m0emd76DV5ZTsmKVUl1EhawOScxM/RibgLsxSjW11KtQAvtLhkJonSBt7ouJ0Du1P6+sGoAMG67/wCfYeOBWler/RKsXxNj+Az+GyUHpx2CZPZ8PEDLCVywLE40bECOZTUJoOpToQ` && - `P9p0MpU5qgyJ1KA2UqmACndLXacALjZc6/6H0nCn+IVldsV3UKqFS1V74+6c8lTkAlWtPT0+JjyWVdGLy6ILBuHUhIVjiGvrcUsDzDVFIEXLD8nUztAPm3l7FvtMsrwar/AKNBKSyBBrWDoFwwYbIpIhGXWrRXWvEGHu58D31eISIhYjYwRGizBvcRuoCp9WG6i4DB8q9cJyQiFl+KbejzzxGJLYtDFjgauLa1bA9Ojx/0qWUzLoDGHu` && - `fxFULypP2hNzEkjHa34ROoxZSxJd2LDxkBhrYLYra9Ba+YvBGafqc8vHBbPRxvHqbILNaiwhuFG0l7whR734mj27WPVMV4N90pEeqcdry/t7/9dbnqtPXiN1vLVXFILWuvkWbwoYWJRAaX/qbuTDhmABRg/wDzp//aAAwDAQACAAMAAAAQ88888888884ARDDrK8888888888888888880l3isemBc88888888888888YEoHAl0dmE+D` && - `8888d8888888PB1yRAXh1lwOj888Z88888888ar7wfQUk2OHdPc8HEK8888884knBHIEl6AFnQYIbS5l8888888bRBVmcz7gIxM0BJYrDAh/kZHim5zdpaN98q/wBvMMOMD+NfBn8fZHBL+BHCY74KX+/A/wCSfhpE/JaV7lpSiMuvrihglLLaLDV0o5LutM4RowRmdqbpx7redMzsyb8KNWDawmdLc4Ae96L14MmXi4iMOgLJZUPBiI` && - `9OCrJIWKKUm4x5ZdfAYe4/oL7TN3JpzazTyFNiWYhI5qLuWm8fBJ8PLy/Hzxn5b7qnEafoBe+cpoqTPsOHzzxZJGasV+jjUqgyB+r57yzzzzzzzzxqFIAobBOXJbhGmLzzzzzzzzzzzDf3w4J9lpNrunzzzzzzzzzzzzzxjfSdgwQhb3zzzzzzzzzzzzzzzzwB8VbPPfXzzzzzzzzzzzzzzzzzzzzzHDzzzzzzzzzzzzzzzzzzzzzzzz` && - `zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/8QAKhEBAAICAAQFBAMBAQAAAAAAAQARITEQQVFhMIGR4fBxobHRIEDBYPH/2gAIAQMBAT8Q8PsRChEF7QbDPUVZ/pu6IihDOs3E7DLuVLEDOqF1llsyoSvHqIqB9TKtuoEYDMOswspO3rK24RW38bjejwCrzAZNQfKWNRhjRglSy50JtMxQtJjDH8` && - `MgOJTz4DCOcJrb1YATcqb3KJzonSJMEcN661GscKYhvN+8214GUKmJiEscpcbjA/aoUcjv2lh1QHLWr6sAwXByRBdxhTGY0dY4xru79OUAm1fBbN4IfGEq1LLjiIXhAxOEBhEjiN1/H1i9pfQgfVE5RKaM5+coBrbro8vadAfT9somfV395glFsRElyNMMFbuGBKvrKDUVBwfs/Tv2nLS5V6oKMxJykabJqEUyhCcQFD/YkrtyZf5MwU` && - `MZhb5zVqjCxDB6f5Fdq+1SkrA7YjZUIF2ixmC20jls1BRjitLfrGLjwqqIGMEx3CpeMwG6ZhMhakpC61wCKPtNcAohH8nzv34OSDTAWouKnnJelyiWDDUE2lsGCAc4lBLUyztByztBLcIcRzgGbeFSuk0z581CynThpVBMGoGkzbamF6GGYuiIJFrMSEAdkolBiIYO8RE3wMkQYm4sMRQJy9oBOCopg5bjSiok7thlGBYdxsvw/wDIiY` && - `R9SWTN+pMjHy5ecbSNdsXpiAOo84AuAUjJtceQfm+AC2W0PK/KBIRQz1OfDUGJSI5wcGWvRqDoh9RGMtToOO8EajQqUS8vKUaqWo8OcYuRlt9OsWUxfSJdcBpfbGHUpxLhTLBg1HOZ+JbuAMTU7lxlL2IrolLkcqnNYgBjibg5x+4q5eDRPclkdh8/MBxo+3twzwyi0xiG4nSJ1ItAjURxAhBh5KwirF07+/AZZUzsY6y94gu2HwY79m` && - `mHZDKBMnzl78EZUsJfBZS41qU5yy5lKplhAxTrnXo7ju7Okpry6cyX6Prj9zAL/AgDoaf3LNGj6MAc7ZAIlwCM1wM7hKlQOAxigC1+EfOV9ayteGQKWQYHXbjWMSgmpcuEGPEY+3tCvvL82+IrcA1lAbVxcS5ympngGITCfT8xH8craqUy57/uZqAtg3XCuFRBtVCAcsYx1f6VoI0uCfPODMFsCOPnfrzgxY4ifu+pMrFRV3/WAwMshn` && - `/l/wD/xAAqEQEAAgECBAYDAQEBAQAAAAABABEhMUFRYXHwEIGRobHBMNHx4SBAYP/aAAgBAgEBPxD8Yhd8obbgwr5IIXCDJHSHiP8A41KYlo7RXmmAzM4AadfSPQ5QTbBK1oOf+RgJbazfzAGPzgdJROsbcxFJliNmGWI4mCIFYqDgs7N1UE5V+dJfWuv+cQLVo/A0Saw1eH0P3Ni36/P9iO2IYXLI9xHGoIaliK+cOwohsa9f+ClVXT` && - `GPWWKLNLzX1fOr/ASGxcYNAdg7tj0S0vUoFkqXUslVLnMZLzmYMTClepxPrusQKJXgK8MYD8mhfevlEv8ABv8AHe8CjhB7y8LTz3leiNR8x775xB3Dh+nv7hqnHDfpyg54jXAN1+pkIQpYji4dou+9XTn+5b1r4RfdwH3wIhnfJp5u/lAygBMHfzKfgu0FuiWQLx/sA/v/AHENHLFleV/kWcwyDwEFG6Pnrxg45R1t+OHvFZnNlYmCNO` && - `jVXMRXnAdq0YM/1jNI8NXz4vVmAVc/0fuWPDQDTXXBy485YQbQX09ZoTKys1s66VLyA4xc1jYy+hKRbxyY68POPDM0xT1cTgnnUOpGvS+PkaHrmyKi+CtNNM6Y9JndoVq2nfFS7Es2hkqKZjW4tjmWa9w0YUDrvvf3Kayt9O84hKdDL3xi9CvPPzAaoUYDGM+7Mq71fADWGMm3PLbw266DZRm7Gn4fbpxtmAqBbN16RUzPOteZSHTaIU` && - `AcLWn1iGH38Rbd31jNyV3UQLhI07w4ECYzylTVlU9eP09I3cRWxNqYhQYl2nMDWjQcId7u/SGsBKW8Vx9fAlpRrgq+fU0/sqVAYsExMkZO2H6PBAF0iY2rfXp075uLX7/3vE7NqHIFW+JmjS33ho2JpQU4v6YsCW8va4QfUTDVa6QzRLyd/uG9KuFOj3rBTcYfPeUodYWg1c8tLg4hb8RHoGY+pRbR1+3dly4ZiEi8p0MJ9xSGj32+BE` && - `6jB8/eIhpC4GsVC8vfMp0aypqWeUoYJsk7eUEu54CwMQLBqH3q6QGjrEWzR7P6gHQz8Yq/7AxGBtqs3aBQ6ptH6Wu/gBcwuEkdedbOefQ4xB1HwRDj9f2KOssRX1O8d6xQnOIc/wAe/iHjpiKbVxJpl6eZp/sXheAoe9noRyWj0f1L9I3wsaAvV38tjzhp4tf3129ZX9TGOp9jH3FcetY4aabw8GLe/WMEFIgMmd105ge3huOmGgvqvp` && - `EikNImeEe7NlHQxr884QjFB0gER6d33wgVGp7/ANxXnKzQ6J8S2AZibDD4hvt997RHE5SmbHfesLLqXRpRuw2Nlf58SwS6zcYxMCUGYoVM6DHlnzeUDDoUX3rzh4jWAuiPQV8m694mNCbJs949oIwnx3w/sQvaKAc7Qvl1gPQ3F5/ao7e29yoNTlEOdYBtZgDSEdHONtJUNpAqy1jPMwxCaCvBKT5YGjwCnOaNVhx7YZSX3sKJnHKuEX` && - `o7XStHz1F5nnBpR4uXJYpt/IITAXKOXbpAVlGceesv2pcySEFLfTzmKBbXvnDYWrE4Ot9KrznBl3WXZKAOSsb06Uaryrcb4HS1R33x8VWLXb26zYhqPfDRjvmUxEaEQusJWuv+TYeNbLr03iSlPgNShu4OiiXVNdnT1gjYr/NJsTV8U+utf7LwNewSqvemUkVxH3xloqGruztjUKxv8rBt5vV6ae0RQLdWsv8Aw7UW9fsc5WUJ6nls8d` && - `ma8g0e+EZYOnt1OUFHJ6ezn0lVFqGiR2JwPiBB4WRKYljCiJBQV6b97Q7iGzYaAviG/wB34I1fhorKYeENFQdbM8+MsVBOIqWossZYlQLgUzJMG5YzLJsy6v6Q2VB+QChc1NuG3fn5S2KaNOKJWJR1mCU1mo8AoWrxTqF/qAQOu2d9PzkUWSnq+lVZ5NfMTNDv085VLA5LgKxKlmJpUeBuBwFGTngc6z0+/wDxOFLiFdLPJHZ/lVBOAv` && - `U8jF+cSoRxKvo5H1GBbVmpWYQpxzH2z6PnNeQuuIae+a0gNB/5l1TKVe/rrCuIf/L/AP/EACsQAQEAAwACAgECBgMBAQEAAAERACExQVFhcYEQkSAwUKGx8EDB0eHxgP/aAAgBAQABPxD/AJH4/R/U5+jn1/R1hXEfwF45oSvnq+riwAdXAZFIBs1rKy3y+fOHTxUdr/bBfUQikBpE4ncsinSeP9MKk/SNmWKevmT/APTCvsQvUhgmhc` && - `f6K4wSsDuRSYKufTg6nekytMdZbUQMUk93lIiGkT1msU6featvqO56+stDMCKzWeINzwTeLuKME2AeL6InqTBzqhZmwWxvVIDxjinVABTaKg8/TyythmQXlV0GJZo1lUSAKKoNCIojmkwi8CCfS79nvJQQUzFBPNwdX+hjde5GWHpEbTWOiBXOQtVkZoUWIYAKybiFhNCdP23hKyir6JFY9t/AFBnO29HAGbaeXBoUE9UT6bmiwUlpCn` && - `uKA3s1G6KQGgSTDzoNjcl4JGUNhRgFVa25O0cFPAONOfWcTCoLYdkNhPTpLiCY2jJqjZgKHBPBnv8ASHeRzHJKFd52HnpXs0kfvK/w8gAKz/fOGneoeP8AnT9NYNrpgBVroA2rrWRIrGommNodAo7ozXtSqnBWFhFQNGwX+6G5xVrIpFaJ3kCFHu8H134cK/vcq6dyVHU3M2u7jrk4iqD8b0TwT++aNgb+MA4RChRKhHYP2Y11hGt4R4` && - `xGIlbQEuBNurpwmS/bmnTUChNpfJhLLQG1p4xCLuxjPDn4x/lACVIQodf7n7n/AAUYJ8QuX5weqBsTT/u8bbVb0E2tahqaEddhcAAZYolBRGCxwUL0hlcLvBq0/wAYty7xsnmJ84bxn25jNxrv1iSUjrJGypCMXG6UWp4wAoH/AEwE/L1wjOk/tnsDhmzy8NifIAXgG6qAirTQwklzxyFXrV9VJfbiJNFlw/kut+sawcd0pXQEUugrr+` && - `fNYrSAq4EUpB2T9+5NuAlsylL0UrKPWA9MLy0IcMZa9BcH4O3i+UD4L64I28AvxR1+8jKjEJO4BaZI6ZJ10zb5GdIUzYG+JhqeHWJLUlHBGgenH2/gYA3rHhp7ca3dzxyCev8As9jpNImVi4EMqSSnV2lZ2ShECjYEriSOeNfxv1jB0lxny/484bXHb37OFjpWpHgPU24dOFtZBQ7Agfz1aRbLy4PZ69ppUApEgKwDEdoe6qhdEeBFKS` && - `9JtMJoW166kMV9tvbiFtLmnmA6T+cS/wB2QFL5MUjH4zcinl8YLwnUzQhq7Mra1/jFTrfgxSR63gRIC8+XHXA6zlvHcLdk3XnGkIb1W37yVAlixRNZiLTTzAjDVCoOtFmUhBGwSAmyMMvmWfY/xo5wneRuRdOWhEDAacie2WTbwR8YhkVyNo6T+eodcesDgA6GfVq3ruAS+pRLRp1UXmrkQE8XSiAKKWFTTWIMRzeVe/I9wj8YHrFrYM` && - `/9M1g9WvB/1kxbzZhmwxN9mNAtXZ794IGhtfLjkSZsXmKjV/OCok8vnHAYO/vAlOg5hiPF0HnAp6c5jsc+nMVegdVhizKay77GUoC3CTDU+gFaCxDnlt9E84fH8KXgsJNpLIABuvgY4lDFXzQSCQwTBaT2eMhML5ZSt/nmccGeIJWpFJRfePA6qhZUpAQRHaEDEwjXRAAEvtNhh4ZS4zpPxlxu5DH2TEM1O4UNJuHkxEdmkxjSq49ZKb` && - `qbmKOKPJ/vcuk+9f73GU6u8gg7Z+2O+g2+8frPjJ21vCIEDrN+UsyaT3HnIFUcHlwcoKV+MTWTvr6wr5JLUFAIUcFDZBbNAk9GKqsikqVVVzYlBR28fwc6pvJI+AFx2HQQX0CCwupSc1On1UgwFXrVWvVs6BIBZp3jUXNQpQaCnfmfjx3mLeCgPg/n8wArkQm4a2QBQtBwKLchpBcaoTwMRKNPTQAjZUuXUX2Dl8BIhTiacip/+oMkFt` && - `pJjoSXjwnvNSdM6wgHu4RS0tEH57MWFgD0o07CoJvDV89Np0iZLw2LrL1GpKcWSrvlducNq/3/APmQ5YjZZC4MoVOjGcNIE03RpTms6tAZl3WuHy5OlfM/xjPMF6dYzAOPrVbTy/GAgQcBtzduzSgej/fGdEAQIRdlCyWh4KskkAVJvoeHX3MWlx5y5eXwMwvsbhUClFzRX6WSGniShOPOxNGol9KXlRbF1KYvlqKvAMKhHcIAzSNxx1` && - `XadzoAEAMjoDP7ZCCw/nKAqwMVxGtDhRu4iLeS/wBKAQ7hKIqq2iiyKX+zDwDQfa1JXVepMTKqaTrC0s2r8YWOg0Md+vOGctjciIeUs+zNi/wh7V8SbU5gVw0s+y4NKQeOpeQcqw2WPmihGjFT+sFOhFaDmKHu514PuqMUoOhsQstHOhKoYlWYKjO2meYZQVEGjSgIjaFMn61Ra1IE2UXETSQSQouol1FDNY1lZoJsxbV3+gVBtQ/7yI` && - `Ww18sYsV8DkSh5nuVb791wLIpoV2uAah43MHb5GSoAEmwKeEilbtoSiQCeygojC5GmwbDy76yO2JEm0OmNCECjaCNIiHibSaBLKJHAQgUiahhjpqhdEXH8Md0ll6pUUoMxqQQbtiwYMgchEabK4I6mj0S2iWAkBUAkqb/GBFF/nPMLVSs3sruRQmUY1vjgmGmNkqMayqIFFQ1rVKtbVxSs2SwI8Hyy8ccAv8TL5lU+wywj4SW3UtiHkV` && - `aMbcjECALxR+XlC2EnefT2aN66eT4+MM6aIt0KNR+TfzlEGQOmgXVNwXVZm3UCIoeUdZp/S3SYYUlLVeH3hs4jtL4pSnUWXDmqV4BUBkIKlfNdoB+7I50PrBQRb7SlQxdmrKuFtnqiiPaugcfdPz2Be1QUEQiF+MTxeY7E0HhJQ6Ku0VrSykniwtk8sDTCZAyHyNpqTBqntFmUjvILZjYNcqI8I7hA83g5Wn2360dYeHSezJ/XE7ognQ` && - `qtn9sOhhvlKABIyaWzggdCGwUBHFEJg2uP+y6qK75VW2FYGPWRUlCmg0HEYUeHBiEAQvRpsmXCKZGCGg05rmna4xLe4IN7dVUaIBYKOvPMAFjyuj+cIk3WJsKCWLCyNFEMQU3mjTSIUAmxCqIUkgDQAABzDAK6wiUeXernMS2KQW3dBS1Bi4BoCrdgNgCqeAV5jEpWqIIQVDaSHTrmOdk4xg00AaPO+NFGPxlMv9xX5ucMG1cFxI2thH` && - `QVAwnGjqg6bhAEdCbIbNjjecWP4wPFxW5vCuI8TCPC4x8zoCrm0tETbJ31MaIvo/FkT558/jCDjO8FKbdYJA0ZYvIQI9uAAXbBoYKKk0awc1j1wzZgfEIg+wKF4XCSuMAro9A6ZMA1V4bFFkEa4aAIQ4XG45gYkSpJVm14StALAW84Wwf2hu1UKtiak68DO+8RtyJm+qBgENjUUoVAU5ECpjN6UIkjrL5IqCgsNCgsFrb7/wB+sfVFW5` && - `45nj9d4TL4z2s/Q+MWbUDC7y4jTBbhCjNXaTlF14rh8nCjiiti2bZNNw28iEWIKdDQVfGaWCjcUNPkjhWAKttREQDTaAkGbY1NEqkTcBtpalIVuARI2IKhzVIIXWHAgxnSiij5M0WDFJ0J6mzFAgXOFFsBp48nvIyUFrD0AXQuEoFk2xSJAlGjYN0oCgxA8tAeNqgx2WNKASvP0uhwXG4UPGDY/bOt6wmhRFSp/wCYWz8F5N6X/fObMb` && - `Utnwue5uVmWBew/YxxCpsoBIIFERRTwYxbUCyS99mFpXaCOEFZjGlKX1pHfvDuxzte4k+02gbQZC46YBhm6qwUDGHAsGrsUPdGqrTHvWzpgTtUc1oAADDOjDCfMg/D6yepA2bsleNx3AhPJjeJSUVtLhC6RwIBNQ1NZrATcJACABwDx+uvLiw7TrXQ7rHguCnXwLp9jXpzjjRmUEIaUIgWG2CoET2OQ6Z9U0G9aTe+4xhNX6chOVR3qM` && - `9iCJABE+F8fOrkjYVePTr9/SYobbD0SUQC9ukY6raKBLRN5ND5cWOd8eQhfsGxAMxcFsa010IocdvXZGsuW61i0TdNDpDn5FaqCDcBiIhwPcZAFYAjEINF5gi0rpuSTcsVHW3piGkWCW2foLs8wFUqljumgaFJF1RbxokBD4DuQQlAtdMIbKoU2W+MN4kgskIkGWr7843hZ0kwGUy7Pyy9UhqktWhLoKb3tzSiQgCaTZA61b6KglEGw0` && - `CYb0tBU8Z7GFY4bkz/AFG8vnEemz5cE1r095LFjJ2nNQvBOpBSc8N6oiHYfAi1xkrFwzsaTISimLhRHeq0IQ2uiCjgihUojTFAaVTE24FQrHrLhT2RNAbsixx3cbcOwzb0PFPnw4HIywSczXAOoUU3et+snCbOU7CJ5fnHBcXUKw5RFPHKBKmDz6N0SoPuqagbDlho5DziYNJG/vjzAVmPoJBW4UkU/QQ7MqVi4wSPANt5RaggiopbTB` && - `2vZO4VXqnYSReqhAFDQrOBGL0aiEltOmMm3Uz2a36lQa6MUoDDIKbDfATBYXT4XYGo7Fg9TKvnA3njY7Q21Tmk4ZSKPEiNtNCQkDmEViSh9v3C5zACWoAZEWBfD0wtcw1moFc+N0jvAwOJAmQJCBKoRWtr3JU1EN2IjgFB3EXUCxCF6qoAKIRovzfyBNDQLBQLVVJWHeoRRbwum0pudbenGqMSkrFLDyHkx4oA2kDoDQfO3lXC4o4mzc` && - `/uv9cqD90JNLNSUCu24+XiiOgCIJAjsJhjCe5OgDj00EqkCRG8PBjaCsL4rPbgPHKOAU9mbYJ4yS/s4RDXHBsr59YiqQgSjZdkfCmazLXqFgnbujmzCopAfTMJuIyLiExWqkkJaPbRJAwZPxJIEgdIjvD72VIn3hTCzbKmBTOw0AkaK8HLDxgklo3J1QDINRXRTxeE/Ls2GmXYHyv0eYo3ziiEIeOHArZEwweAKATEE/OOB+2fMBDGpi` && - `rrDm0bm8knZQoghjdAveNBEADgHjKZshlWsDRty3znQc9XLh4yZMTGmrwblaO90QAotZmWKgWDiexwSAXziCXfgxztxSsDRh+4un0Q8eFrABVAUAxRWQD4QNdpUKCAAMyGC4SlFtlsBGDshmUqooj5ExBmimzaziLp101emQoORo0bsgrQotARimgDEHTHLJORkOLqpdjPk7cq+djr+2+ksPfrBxRgHqK6MI6C+QKJCChgravTQCvge8` && - `yiSvZxxAeXLPg49sJSl3cmIAo9YdV6M8JGCHWWvg6/BoXWBDTgbha8Mk6pWu8CXh0nneHNhiMCZjuYCNihKbPcWiXTaK+fJpzYaFCg+EKwEjerHKDSI+THWIuqgD7FSqXgfFv7yalCBYgUDBC76EK4FFTcA40O03JoFNQAgEUVi8Rf0ssJdiiOo1Ca0GC/PnfX3kSI+DANnXEBfdwGeecHWWJgi2JlIrIMLCzW9YOJAZ4oLBPZ2shAln` && - `k/RcH++KraUAFR5+sT7KJ4NIci+FOsEXgKqAHVcQRkHW4iaT5xXQ7jwr3FFXphCAnylrvwCJk5ZpdwPs1Q8opqKoWMj4p9/b9sWrl81bsh8DxZuXLg7EZmDsVTdGDrHCLJTHVL3aXX0HVBDLtevGPuFDgfyaHzcHVSXDodov8AJHH5Pxk2XA61qB8ZZGsRuko6Ztq63FPlxYxbCHBigKgpYau5l+AB/kIqUTohASCJUsgQMegYD0azZE` && - `iuADQpk4rW2nfN8Z3KD+4BQ+XXzhFJFNmbdgarncsQLl8ESCFKbaTAAARRIog2dKBvtpS4AQa07PzzHzGNN2UE7VehLOmJ4YiFMfiujIoCzYHRMvpiq5hPm+sCSEh2GB+vL8Y4tfR2IIu4APDBtukIMTcdQgKEjdWScKL2+f0W4YgEVVdAG7hDLzLI2HSC6VVogHS+W8OwxUp4csfL3ATutZfqb3gzs64CInkRmCIZcUAWULsK8AsHG9` && - `TcCavUW/Pxg0uKWRRGI+8po1e4LMSKVaghWJU8sh5mPEQ2VU8BWFBIKFbDsIiADYOhCFC6O8D/AOSIvELvzWunWk4HjdyrAsCV2QzAoiTVaa/Bd8I7MhoLSyCD3x/vhF5OKycVVZZX1hF6BKQk0ER+RMbm+cM0cmxPZ7xeZ7k2wKJ0jWdoLM2XMArUNIUqyuj8YNt7eDwWJpggaCxmfnz6dGvJILNaHBRy74QgWoAWqoAK8x0lEEq06U` && - `RBUOwhUD+BjUKzFNPhV9e/8Oh6GDXVIc+LvXl3hoGIt5PPk+c6CQ7HgVh3gKqbXEPEdFTpOwSgXps2oCA0jVK6qLPtwx1ckTkrYEaIIfJippYKSISaS+HWvgwWCtb2Fi7DnDvujg1vqMyDfkBP7q/sZfJGuEFDwcA9HS2hjPSm1tiEavVmu5crjZg0VldpQgQtGDv4aCNAGgDxnCYwYp3KPdZ4PWMLtiNCfeSNO3hFnoPycLAcDsbTUN` && - `O7oTeApEtUFEfInnD9RLJGrdPsQvsPTGcJJlAonwmMoLDFK0BQHSI4w2ZsB127QWbqDwxgw+O4IILKWERVFCaQAbMBvAzbPPcYlgvLbsN4tkC0EHgHMBFSrWZi8CgzQxoIoQV3BoTjNawYQXd94YHcmA/u7hE3QnUGlKb5T7M83kzxEvnY4mXUU8T3P4GTDhARFJbS8EMtYOxqiY6lKVCslLpF2mjOCGlGyUH7PeHnqOa1dHgXzfvJU1` && - `6SX5UfpJlOneg3Pj4PR4MQWCDh3JWqQG2x84oxNZGZjyQL4H5yVwbm12NBG0JNpkP0hACKqLpUBCgKSYkhkoPxooQ2AJE+E/TdML7A4kKgUVVgi1CFCJth9s8DgNB8qtTFU/TTFri4UaUN5syhS9MJ2E7mII70+MtpiWh7dPhPCcTwiYj1+xULfIImhsBBM8mH6MWCPJdjZNx4+cMGwkEIAGgPWJGfNH/mOPl6wJ17RTVJS+BfOBPkcw` && - `IhIXB/kFiEqVddtBZbV1dejFLkG140+n9zDCMwnhJT8mb/AA1/AVdNNLLMTVDzDQw+H5y4GuPx84UOhcQLoXfAiqFcBv2nAe/+e0CKru1rSIFIoOv4l4/oUEHvb8HzkRkzc+fgx2dvYKaRTi26TrZmnP4Nhb+h/D1hpQSzIRvAUIGbAJciHUMNi6e4Lr04LRrztMNpxPqWDy+jKj0GFVTwF6cToxeuKhGRT7YFfAHjEMI0FKMntHy184` && - `EmPaiuR1fB+cV2mxkF1/vR/BD+4BaPhVrwOjCMqIwr8sh+xjl1o/tj+jqgSkqSH2dwU2GtuH1iYSvE6ZcgKVB0/Dr98BMiKCwO8wAD5LyZbUo6Umw0B9ZBdr85c3grhgQQggItEeugXOgqbQ+cJ3G+jBaa+0nwOgnSKRIcb7HeSqQVR0is/tP2x/DdBhrSFDSb8PmEzOg4kSkRilEcYafgCC3REDaszj5ZyeKBRSIiJTmEnZQUeYpQgH` && - `KoyyPDhcWdkDxu8UiheLKjBpCZpbRV4t87EUJr1qjWsjLM/eRtQfbz0Zmm7AEA21BuTyFTVEhQwg/Iof7ZvIQCD49cUx4CEnhQB9sMODKzybQ0UOWCyu7hAU75qiGCJNujyxDg45AmxPJmsOcqRAhqIUfDO4xaIG76mqgfESEIYpW8oRX0AFWmIufPRKh0igUh1DpGQ/s5AQkFRwelp7EwehkO0GsVcFSUBguVFoNdvbmn4qZa9GWBUo` && - `XpJBBsTBd4gH9G7F+Ty+mV1kbp9hiztshXhWtP0B+jsPj9POSUeYHeKIBQ/wAZvlQ2qmmefrNfVBShQJu4aVttyAQACML1zZqtFGVRs1P0hNsyz7ViJNArBVA+UyJ6DvbmyxThgbej1kJ3JoSiE6CfYdQTmqtC8kV84+t2Q0sUGukEVFDDDNplorRzSn2wDwRCQoeGi+smityiiWbgpEUlLcgIpxSGEFFIRKlGBr6D2AvSJKLX78qUJK` && - `kU6bADgVUeAFDB+nFIUsRooiIoWEHRgmBxAmcIgECrniCDxH14xSJgwS/ebWtLR/KZxg0s/IQr8Z5RGUT4DGNibsiunZGz2J8ORF7vDjoJIRTiNi72AfC17nnEgMgAwGqAW7BQBEcxHVNZ+4aV4DiBY2AEAGGtilEbDm2rmoKI1XhIhSG77AwTalSEB24ADr8t5f5mAmJN6ROPnEdgpkMHEKEFWvGMxr1McQAResbtjf1Y6TXqeWiiAM` && - `azgS1LtR0WBKG74em9mu+dEKrNuBl/SGoQqTRuvGnCeLsPEguP0BQogGk3Y4X0RJQXsVpDb43gpVJmigPxxxDpen4wagxPgEpag34wbCwBahgoYJRYOPQvX60N0gl3b+Xp8XCIfQGWxj7cIa0GArfPM9pqQQ8XYjHyMrScKbTWfLaU+gjO5o0INy1srYRE2vca8QtddFoEkEkOY3a7FLlEvNN3jQilqjLVhLSUV4AalifbNAH3miSRBt` && - `SMEqCCxg418slIl1mQEHUMD5TAAABoKqCmqDhytkKGBKLWaJuAXHiNDFfKaqvpThZhxCiXvR0moeTxfHDcF0FBKPKI79nvCfNsVvQalUACqgZ5cELgFGQW5EC4IdCgQFGICFSg2PQ+Qe4CGgCCLwEEMDJdwwWrRQEFPBUGjzjRKHjCOjWUH8DOxMAGsHlS4BGqmrjgXEm+0FYKTgaQoHniHaJ2DTN3n6MRZXfKz5+cAJdt1goKh84Aim` && - `McoEH6aSfUNYO7VlAD6C5p3ToAqVoD0BgQNBhfQFS3oImZqV6FwFlEEtahnBcBu6waWo3hIaDjDYp67kWl1EEVeHesouTFAig02gfSCVgCmzxcf0ABBbQIa/OgfbkwwV/e2MVPpMuI+i5vXlHDKhePHBXXE8QRXYjRgYhEKaGLiE0KkRFIgb1JkKnJEiCao2G4vBAVRTBAIE1QBYzeHsxahBFQ2gi7HDBP0FkPI6T5MpqD7DjCarVyHS` && - `wwnhG15qHOmMm8QLeNgaIu5hkgswKBNIiI4BsbsAOkTIkZUwYLFiAXZ8jFmiCkLNoCJyQ8jwSABbRMDwAQEBh7FWrG8oKKhUF0aIGCAh5zyjwsw4cwCi0Ljjp5bFVOuh5hKxmoAVapZisA8THf2VlTd86Pxk3XITjcJQ2FWvz/AHx3UJoXCOx2GF8DxlmzNu5DpqQMmD2xJ6H1gtHe7ZARUSuzN0RQbQPAVKznv9Hm8B0YfPjCNEF3XN` && - `gIEd/okTwVtdUEALqqlRsTi9GAK1Vm3DYJgiUbmzp6TPagU/A7n2NWmYpAWIkRDErvD3r+GQDxJrJQvGMAq9JHlfOO+tFODFlAZpfOsTe+v4wCSJe5qyieYvjXj434ehh9BE9jlXyft5NTCaBSlS1UCatftXq5USC4RzRfY2/+4pHAUm8uETFAWALg5oWO7PHmSHDLhwBfYBGlEQKhdMh0g9ydEXSy8cDCQJMoNjaXBbLcU0Ngb4vzk8` && - `gsjbgGhSBAs8tkiNfjBjrHcdBmlQQAKqsM0lBKwp8MU/ZchyB58ZFqp7c0BYGjsOzEoZK3eUmwJsEbCDXvYwwdheH10i4XOx4J6fdxKUKXbd+8L1nRDZgsVdxxo/EOO0z0txesd4wul2SCI0Cqkg2GGAHBsC5DQQypL8fqUBOhQUSKuk+fTGCdSjaf+nMVVvc+DFyqqw1BkCdNdzlBdYLal99yfaziFfeUzZI7tgbdu33gEtNFAQPYtD` && - `4esWgFG1+yEsU5S0RiPD2j0C3eENLTxTChqIFEfCOx9jE85YTncepxP3xGxcKyesdQOr7N8p3x3EA9ieYPK10EZ5iCINhvRGR6T2qeqzWsaE/CZUPRbdHlYjnXtHsG7zyeV1A84AgIE+xroYLsIoKEpspgPaFGOqLQxcVfh4ICCg1a1ABbDNK2qKGIW0ehS2PTAuaAbtw0J9naw0OdTqwewM3FDW26wuks9vtrVEhaDw3NkbCuL4vWj8` && - `wAioy2jGmoFw8iaHYygR8gcTEWUJjhUobmjmngjgPa4wENA5THgScoD0Mh1yV3JX370ZRR0ut/8zVViHjByoHeCEXnXtwEZTAGqYXD+MWOXGh8YqyvDx88KXuS8hMCEuxCoO57ueP12GJmXYu3Qi1MmjHyNm6YZssE3Y0jmus4drGxoq7utXWSmU5dAdNBnSgaMBAvUfQAhvErA19YI2DeQzKPMULMeBgW9PS4aJDlNGI+YcmGiFx8CB` && - `KMF+RYTPhQxQe30HV4G3KqOh/Bc7n1NuNgdk6iHkT8nyKNFMrJa1KGgYEfspfExIQBBJ09P75RjdQob0U0QykDXAyEi5sIiCfOzZvR4MOCy99wfrEYssonlnrf752gNrBigIpNydA1KntgzpRllUSTZCx6u4rDFBFISjGpWFlixm8KUoIfJQbPr6e8q8VULUqktqTwUN8ixwohI7UKYFLQqQylAZPXnRWUOLUfeDAjtqIpKZBEgZjhgu` && - `uni34xEDbey4NAF06c8GwnvJQFZEI8he5pfYVkHQX1htwAUgG74MNXrbdmYmq4NmUcPedUQeVIEAroCB/AZsfSuhkI4CxgXWoO0lATFpsoRslIopesBskfOnHYWQzHJZ2Ka06XEHRbGkRPhJ3uQey5LCgZvso68QSVU6I4vofeb+h8OdF+2StWHALjBYyEFjUYJoMnAilCV1dlpoBANVhuYwbNOMqRrcCSLq4sXneHpWKH4fpyYYD5ZE` && - `I4tUDxUwYwFkAHgDRhBQJKEt05RXWmt8ON32L5UFEElIjFpRJ+zw1sD5Ix+EYAOTBKAVjRH5E3N4A8hAFnoaNSTSIlEcbSoQonA6Ud7w6aZhGSwFicduS2LmoAYsWCMCGwQYjyiCCipI7NGnAEBdCoxfdcVFK6rCcbiwgz5UDY0nwY5q7w2ABEd1PMPFEMMUqCeGSzLM0pTWnneFDB8mGmEPPnD6BPOblVMQmaXHtXcBYbKF6marT6hA` && - `EhBp4mCxK0aRpAsOGgDwAeM3/C40DjJppDYgqgB3cSI3ZErodWIC1qGHleR0FBFgElKdm8kwSpCUAlW3WbxQxb6MZxBZCqb1pdZUWuo0FCsB2BdUrsBUgeac/OSITfMJIAeDHcVH5wYJ/nOL+LDDVfXn/3BlJfWIVpwpirLhbrjWIdZfukaA3m9H4wNKrcHd8ZV9tuae+JguAeHIwLIeseGHl977Jdz3hLEiIi02KJ0GIjCiaxlC8+QC` && - `hqV9gRfAjWfCmxsnN8YzftEGgGEhAU/DFDxSEFC0abmuU81ahbDkEUUpugAZ3s7HnBogXFKoB3TwFYRxYo7XUzwm9R5IlTA49A1OU4CkR01CUBx7c6hmsaH7mV5w1ugoqTVpsuBa6wBBQkVaDVdnuUG0BBhtfIadqogxoWWWti3QeK9x0xYG7OX47/AITuQeQqQSFEE6oz8ZJg1Xr0oKgp1SYOz6Xp1pQbNakADnAYJfg1/GUi4nSjIB` && - `jVWU03M5JAIA/ZB+kcA78TfFF4FTdXQ/oVYgYTRYe9mjUX45WFHhB0fIYDQP4htVVRRCTrcOs0ODRNC0CGlqxBbFzWCGLrznwWNb2uVJhxheneVbjopBNr0g+veUYpUWitq3tJbAgPC4N4kVzcMypvUz5OsuC4gnjNBujGVB7gBPlmkgp8frEijXHI6fVxYwoEgpYwuM1o6lS1Vdoqq7VVw0XnnLB3gxpAAUCwXzK/u4qNpA8pt1sWE9` && - `Lg1fXyO6nABcnHXfYkCfgp9ndx/bAKEchEg2bjVTQhkPWa1myCiMV0nG6XUzvY30Zw0aAws1ehIOjhAKLpSql+KCMNykahA1qe1uP3/HaLWI4jgFEYRooLArqJmqbfh7ngKaDHI7glh8IK/Yo6Uw4PY1lgjgob9BrAa49Chbl2IBY3BySwM0pUp4TiOxEcEMwnwcS8cEafGDT1Zqm3kDG6nb4yW4GiSoLOD5PTiHiZr9e8RdCYyKEzlI` && - `jFwR8nC/UfX2W+b+zcOSI8h3HnCrsyxhkJ89yicUT1h0n3nkMWSgyUrcYi9O5VVpM9cMKEX1hKiJdayCXXwYvWrg2QDe1TR5p7yzpAmMondTyoIDaMF+FBsF4nH2+dfo8yBrESliccCE/lLocinwvVXqgnEAJWuRWw2KCrpUCzMDWFbqyHwcyCUcr0/wBQNTjLpsCERGUnPJdZAhJttFQmAxr1Jyn5g/Tt/wAn4AKIgWtoIhBCWul0it` && - `ENkG7hR6pomg9iilLBWMVC/DLTD1zAqxplIMiOOAgr++Xh6Aocj69HzfOR+IaYNL0mIImGjNTKHznWYKQwg03hIYxJ5H+cWrgHCO6o+MBSlM3IC5ZecxUCwvn1ghaPLszFgQgke8IOBLD4IWG0XzrCLJTNUvl+XpZ7/nhB4maiGkRRHpkkIDAQmgv4wCM+AYBEKgCcNsqrLyU0HopH2n5w2kUDhCtYbnAoAq4TMkR3A2J4w5sIAy2BeF` && - `Z8q7rd2cRyw1RsTFVPMODebg8YUVQfWn4yigJaVUCs0e2OrB4wgtWm3zO7+DwQNBkGPTuUHmbG+M1oeMRhX0wUMIjObwt/O8CL4zU+n+c1PxgAutt4J1UubD7ueNG/Eu/2H98nuQiRiH0U8/HnGSisCg3qp9ut63yfH/FpgQFM8rZEkJLQ2j484U7KlmiF7JvSUAmYROn8YwIH4wj/AFD3j0thk65AYNpo5uaesPdK/LjkRo4aTFRG/O` && - `SW6ExMPxif3YzaG8kp5cHRrIYojAn0Y60YYiOJrFkVvX1klkcgCcv5/vxbst8agdhBCvDyXCZAIBwM8f8AH8YJBIUPWFlBuInkopn0Nk6cKjabwEBrK/HiTMYGOxPxinRe/GaTPBRc2NK2uv4yKA5cTeIF5M9Dvxl0cOvG81h8ayyDy4ts0Z23zmQN+cNFG+Y9NoONy6wD7ZyBu4QMExGIAlB2JPaYZLdGlTBtUMQIrP8Ak+P0D6+5lR` && - `E/bDMypppEhE07DWMEoVVAs7VsMngBgCMuxWk+Jkca9TmMA5kRGjH0ObPrJJ+cYhJMQrgFMb4yPWGFFCuEj35jXcXRjIq2Y5Lm4F4ZQHowSOBY2Yu5ZnDDKbcafkmHnK0BlB9nXf8AndMK2ptcvjPMbbd0Ij9XkaNQRGY4SxCwNI6sgQKcFgmgqTeWLPSZsDS+caNeyZR8C37zShvIoZCtzFEc8TPbENSVnb0Bphp086wgE2fGM7bBJ7` && - `wkdDJ2IOG2Ca1iMEiEBQIpyCmT+gyz4BEB8NXrY6x82/sSdFUjIJppRbXQBiuwaICo2DQudzgWwBQ6FKtnkM1QVGEYVLJNKLT2Yo2HPjGmLTWsO1KccEuy1PH3ir9GdtDG3tr3/nLNsimH7OtPM8SJ9Du3K8WW6y03lYVAear6GuhcA4PSJsPLbXf9DZiQiJpwl7IcpuBLGHC6zxQ43Io708Ajlz5aHJv3y+waaA4CvQ4CUROkwLSzBl` && - `ASyTIPIuBFAvMG2PYaP/uVCA6esFvIe3ajSevOulGVZeLCANDWlAEREcMm/ZcGlNRo1IeUpoARwkfk8iD5OZ+P6G4CAIkR84viu+H1ss+mHHzSUnnSb++AKOdct2+Csm+Soh6D4IE1AHSEXAl2JWMNCzy5dbywRSFE3xMD1TA2q6V7VSJs1xBkeJj1SSDUu+Q84TuRykbe1ZtxRwABQqD7hSKosgCpBzm4aeEfADxGo0cAmv0/P9KmTp` && - `hQiAUN5gggIGT3KHnvRQVoIReBgABKJYTpV03o3zVwkAwoGokR161hoQCAGg/qHj/+RP/Z`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_17.clas.xml b/src/00/z2ui5_cl_app_demo_17.clas.xml deleted file mode 100644 index 414747f7..00000000 --- a/src/00/z2ui5_cl_app_demo_17.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_17 - E - layout - object page - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_18.clas.abap b/src/00/z2ui5_cl_app_demo_18.clas.abap deleted file mode 100644 index 3e50ed29..00000000 --- a/src/00/z2ui5_cl_app_demo_18.clas.abap +++ /dev/null @@ -1,220 +0,0 @@ -CLASS z2ui5_cl_app_demo_18 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA quantity TYPE string. - DATA mv_textarea TYPE string. - - 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_render_view_main - RETURNING - VALUE(result) TYPE string. - - METHODS z2ui5_render_view_second - RETURNING - VALUE(result) TYPE string. - - METHODS z2ui5_render_popup_input - RETURNING - VALUE(result) TYPE string. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_18 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - " there are no restrictions how you structure your app - " you can use this class as a template or find a better way - - me->client = client. - "we collect all app infos in the structure app - app-get = client->get( ). - "we display popups only once so clear it after every roundtrip - app-view_popup = ``. - - "do this only at the first start of the app, set init values - IF app-check_initialized = abap_false. - app-check_initialized = abap_true. - z2ui5_on_init( ). - ENDIF. - - "user commands are handler here - IF app-get-event IS NOT INITIAL. - z2ui5_on_event( ). - ENDIF. - - "view rendering - CASE app-view_main. - WHEN 'VIEW_MAIN'. - app-next-xml_main = z2ui5_render_view_main( ). - WHEN 'VIEW_SECOND'. - app-next-xml_main = z2ui5_render_view_second( ). - ENDCASE. - - "popup rendering - CASE app-view_popup. - WHEN 'POPUP_INPUT'. - app-next-xml_popup = z2ui5_render_popup_input( ). - ENDCASE. - - "set the data for the frontend - client->set_next( app-next ). - - "the app will be serialized and persisted, we delete all data which is not needed in the future before - CLEAR app-get. - CLEAR app-next. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE app-get-event. - - WHEN 'SHOW_POPUP'. - app-view_popup = 'POPUP_INPUT'. - - WHEN 'POPUP_CONFIRM'. - client->popup_message_toast( |confirm| ). - - WHEN 'POPUP_CANCEL'. - CLEAR mv_textarea. - client->popup_message_toast( |cancel| ). - - WHEN 'SHOW_VIEW_MAIN'. - app-view_main = 'VIEW_MAIN'. - WHEN 'SHOW_VIEW_SECOND'. - app-view_main = 'VIEW_SECOND'. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - quantity = '500'. - app-view_main = 'VIEW_MAIN'. - - ENDMETHOD. - - - METHOD z2ui5_render_popup_input. - - result = z2ui5_cl_xml_view=>factory_popup( )->dialog( - title = 'Title' - icon = 'sap-icon://edit' - )->content( - )->text_area( - height = '100%' - width = '100%' - value = client->_bind( mv_textarea ) - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'POPUP_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'POPUP_CONFIRM' ) - type = 'Emphasized' )->get_root( )->xml_get( ). - - - ENDMETHOD. - - - METHOD z2ui5_render_view_main. - - result = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Template' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->simple_form( title = 'VIEW_MAIN' editable = abap_true - )->content( 'form' - )->title( 'Input' - )->label( 'quantity' - )->input( client->_bind( quantity ) - )->label( 'text' - )->input( - value = client->_bind( mv_textarea ) - enabled = abap_false - )->button( - text = 'show popup input' - press = client->_event( 'SHOW_POPUP' ) - )->get_parent( )->get_parent( )->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->overflow_toolbar_button( - text = 'Clear' - press = client->_event( 'BUTTON_CLEAR' ) - type = 'Reject' - icon = 'sap-icon://delete' - )->button( - text = 'Go to View Second' - press = client->_event( 'SHOW_VIEW_SECOND' ) - )->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_render_view_second. - - result = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Template' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->simple_form( 'VIEW_SECOND' - )->content( 'form' - - )->get_parent( )->get_parent( )->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->overflow_toolbar_button( - text = 'Clear' - press = client->_event( 'BUTTON_CLEAR' ) - type = 'Reject' - icon = 'sap-icon://delete' - )->button( - text = 'Go to View Main' - press = client->_event( 'SHOW_VIEW_MAIN' ) - )->get_root( )->xml_get( ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_18.clas.xml b/src/00/z2ui5_cl_app_demo_18.clas.xml deleted file mode 100644 index 64d0c18e..00000000 --- a/src/00/z2ui5_cl_app_demo_18.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_18 - E - demo - template - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_19.clas.abap b/src/00/z2ui5_cl_app_demo_19.clas.abap deleted file mode 100644 index 0b8889a3..00000000 --- a/src/00/z2ui5_cl_app_demo_19.clas.abap +++ /dev/null @@ -1,129 +0,0 @@ -CLASS z2ui5_cl_app_demo_19 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - selkz TYPE abap_bool, - title TYPE string, - value TYPE string, - descr TYPE string, - END OF ty_row. - - DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - DATA t_tab_sel TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - DATA mv_sel_mode TYPE string. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_19 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - mv_sel_mode = 'None'. - t_tab = VALUE #( descr = 'this is a description' - ( title = 'title_01' value = 'value_01' ) - ( title = 'title_02' value = 'value_02' ) - ( title = 'title_03' value = 'value_03' ) - ( title = 'title_04' value = 'value_04' ) - ( title = 'title_05' value = 'value_05' ) ). - - ENDIF. - - CASE client->get( )-event. - WHEN 'BUTTON_SEGMENT_CHANGE'. - client->popup_message_toast( `Selection Mode changed` ). - - WHEN 'BUTTON_READ_SEL'. - t_tab_sel = t_tab. - DELETE t_tab_sel WHERE selkz <> abap_true. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Table with different Selection Modes' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637852441671528448' - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->segmented_button( - selected_key = client->_bind( mv_sel_mode ) - selection_change = client->_event( 'BUTTON_SEGMENT_CHANGE' ) )->get( - )->items( )->get( - )->segmented_button_item( - key = 'None' - text = 'None' - )->segmented_button_item( - key = 'SingleSelect' - text = 'SingleSelect' - )->segmented_button_item( - key = 'SingleSelectLeft' - text = 'SingleSelectLeft' - )->segmented_button_item( - key = 'SingleSelectMaster' - text = 'SingleSelectMaster' - )->segmented_button_item( - key = 'MultiSelect' - text = 'MultiSelect' ). - - page->table( - headertext = 'Table' - mode = mv_sel_mode - items = client->_bind( t_tab ) - )->columns( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Value' )->get_parent( - )->column( )->text( 'Description' - )->get_parent( )->get_parent( - )->items( - )->column_list_item( selected = '{SELKZ}' - )->cells( - )->text( '{TITLE}' - )->text( '{VALUE}' - )->text( '{DESCR}' ). - - page->table( client->_bind_one( t_tab_sel ) - )->header_toolbar( - )->overflow_toolbar( - )->title( 'Selected Entries' - )->button( - icon = 'sap-icon://pull-down' - text = 'copy selected entries' - press = client->_event( 'BUTTON_READ_SEL' ) - )->get_parent( )->get_parent( - )->columns( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Value' )->get_parent( - )->column( )->text( 'Description' - )->get_parent( )->get_parent( - )->items( )->column_list_item( )->cells( - )->text( '{TITLE}' - )->text( '{VALUE}' - )->text( '{DESCR}' ). - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_19.clas.xml b/src/00/z2ui5_cl_app_demo_19.clas.xml deleted file mode 100644 index 313cc61c..00000000 --- a/src/00/z2ui5_cl_app_demo_19.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_19 - E - tab - selection modes - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_20.clas.abap b/src/00/z2ui5_cl_app_demo_20.clas.abap deleted file mode 100644 index 605cbe93..00000000 --- a/src/00/z2ui5_cl_app_demo_20.clas.abap +++ /dev/null @@ -1,79 +0,0 @@ -CLASS z2ui5_cl_app_demo_20 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - CLASS-METHODS factory - IMPORTING - i_text TYPE string - i_cancel_text TYPE string - i_cancel_event TYPE string - i_confirm_text TYPE string - i_confirm_event TYPE string - RETURNING - VALUE(result) TYPE REF TO z2ui5_cl_app_demo_20. - - DATA check_initialized TYPE abap_bool. - - DATA mv_text TYPE string. - DATA mv_cancel_text TYPE string. - DATA mv_cancel_event TYPE string. - DATA mv_confirm_text TYPE string. - DATA mv_confirm_event TYPE string. - data mv_event type string. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_20 IMPLEMENTATION. - - - METHOD factory. - - result = NEW #( ). - - result->mv_text = i_text. - result->mv_cancel_text = i_cancel_text. - result->mv_cancel_event = i_cancel_event. - result->mv_confirm_text = i_confirm_text. - result->mv_confirm_event = i_confirm_event. - " result->mv_check_show_previous_view = i_check_show_previous_view. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - ENDIF. - - CASE client->get( )-event. - - WHEN mv_cancel_event OR mv_confirm_event. - mv_event = client->get( )-event. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - client->set_next( VALUE #( - xml_popup = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( 'abap2UI5 - Popup to decide' - )->vbox( - )->text( mv_text )->get_parent( - )->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = mv_cancel_text - press = client->_event( mv_cancel_event ) - )->button( - text = mv_confirm_text - press = client->_event( mv_confirm_event ) - type = 'Emphasized' - )->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_20.clas.xml b/src/00/z2ui5_cl_app_demo_20.clas.xml deleted file mode 100644 index 6a32a5dd..00000000 --- a/src/00/z2ui5_cl_app_demo_20.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_20 - E - popup - decide - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_21.clas.abap b/src/00/z2ui5_cl_app_demo_21.clas.abap deleted file mode 100644 index cfbe651e..00000000 --- a/src/00/z2ui5_cl_app_demo_21.clas.abap +++ /dev/null @@ -1,361 +0,0 @@ -CLASS z2ui5_cl_app_demo_21 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - selkz TYPE abap_bool, - 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_textarea TYPE string. - DATA mv_stretch_active TYPE abap_bool. - - DATA: - BEGIN OF ms_popup_input, - value1 TYPE string, - value2 TYPE string, - check_is_active TYPE abap_bool, - combo_key TYPE string, - END OF ms_popup_input. - - DATA t_bapiret TYPE bapirettab. - - DATA check_initialized TYPE abap_bool. - DATA mv_popup_name TYPE string. - DATA mv_main_xml TYPE string. - DATA mv_popup_xml TYPE string. - METHODS view_main - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS view_popup_decide - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS view_popup_textarea_size - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS view_popup_textarea - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS view_popup_input - IMPORTING - client TYPE REF TO z2ui5_if_client. - - METHODS view_popup_table - IMPORTING - client TYPE REF TO z2ui5_if_client. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_21 IMPLEMENTATION. - - - METHOD view_main. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Popups' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637163852264624139' - )->link( - text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(grid) = page->grid( 'L8 M12 S12' )->content( 'layout' ). - - grid->simple_form( 'Decide' )->content( 'form' - )->label( '01' - )->button( - text = 'Popup to decide' - press = client->_event( 'POPUP_TO_DECIDE' ) ). - - grid->simple_form( 'TextArea' )->content( 'form' - )->label( '01' - )->button( - text = 'Popup with textarea input' - press = client->_event( 'POPUP_TO_TEXTAREA' ) - )->label( '02' - )->button( - text = 'Popup with textarea input (size)' - press = client->_event( 'POPUP_TO_TEXTAREA_SIZE' ) - )->label( '03' - )->button( - text = 'Popup with textarea input (stretched)' - press = client->_event( 'POPUP_TO_TEXTAREA_STRETCH' ) ). - - grid->simple_form( 'Inputs' )->content( 'form' - )->label( '01' - )->button( - text = 'Popup Get Input Values' - press = client->_event( 'POPUP_TO_INPUT' ) ). - - grid->simple_form( 'Tables' )->content( 'form' - )->label( '02' - )->button( - text = 'Popup to select' - press = client->_event( 'POPUP_TABLE' ) ). - - mv_main_xml = page->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD view_popup_decide. - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( - title = 'Title' - icon = 'sap-icon://question-mark' - )->content( - )->vbox( 'sapUiMediumMargin' - )->text( 'This is a question, you have to make a decision now, cancel or confirm?' - )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'BUTTON_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'BUTTON_CONFIRM' ) - type = 'Emphasized' ). - - mv_popup_xml = popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD view_popup_input. - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( - contentheight = '500px' - contentwidth = '500px' - title = 'Title' - )->content( - )->simple_form( - )->label( 'Input1' - )->input( client->_bind( ms_popup_input-value1 ) - )->label( 'Input2' - )->input( client->_bind( ms_popup_input-value2 ) - )->label( 'Checkbox' - )->checkbox( - selected = client->_bind( ms_popup_input-check_is_active ) - text = 'this is a checkbox' - enabled = abap_true - )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'BUTTON_TEXTAREA_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'BUTTON_TEXTAREA_CONFIRM' ) - type = 'Emphasized' ). - - mv_popup_xml = popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD view_popup_table. - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( 'abap2UI5 - Popup to select entry' - )->table( - mode = 'SingleSelectLeft' - items = client->_bind( t_tab ) - )->columns( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Color' )->get_parent( - )->column( )->text( 'Info' )->get_parent( - )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - )->text( '{TITLE}' - )->text( '{VALUE}' - )->text( '{INFO}' - )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_TABLE_CONTINUE' ) - type = 'Emphasized' ). - - mv_popup_xml = popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD view_popup_textarea. - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( - stretch = mv_stretch_active - title = 'Title' - icon = 'sap-icon://edit' - )->content( - )->text_area( - height = '100%' - width = '100%' - value = client->_bind( mv_textarea ) - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'BUTTON_TEXTAREA_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'BUTTON_TEXTAREA_CONFIRM' ) - type = 'Emphasized' ). - - mv_popup_xml = popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD view_popup_textarea_size. - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( - contentheight = '100px' - contentwidth = '1200px' - title = 'Title' - icon = 'sap-icon://edit' - )->content( - )->text_area( - height = '95%' - width = '99%' - value = client->_bind( mv_textarea ) - )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'BUTTON_TEXTAREA_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'BUTTON_TEXTAREA_CONFIRM' ) - type = 'Emphasized' ). - - mv_popup_xml = popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - t_bapiret = VALUE #( - ( message = 'An empty Report field causes an empty XML Message to be sent' type = 'E' id = 'MSG1' number = '001' ) - ( message = 'Check was executed for wrong Scenario' type = 'E' id = 'MSG1' number = '002' ) - ( message = 'Request was handled without errors' type = 'S' id = 'MSG1' number = '003' ) - ( message = 'product activated' type = 'S' id = 'MSG4' number = '375' ) - ( message = 'check the input values' type = 'W' id = 'MSG2' number = '375' ) - ( message = 'product already in use' type = 'I' id = 'MSG2' number = '375' ) - ). - - ENDIF. - - mv_popup_name = ''. - - - CASE client->get( )-event. - - WHEN 'POPUP_TO_DECIDE'. - mv_popup_name = 'POPUP_TO_DECIDE'. - - WHEN 'BUTTON_CONFIRM'. - client->popup_message_toast( 'confirm pressed' ). - - WHEN 'BUTTON_CANCEL'. - client->popup_message_toast( 'cancel pressed' ). - - WHEN 'POPUP_TO_TEXTAREA'. - mv_popup_name = 'POPUP_TO_TEXTAREA'. - mv_stretch_active = abap_false. - - WHEN 'POPUP_TO_TEXTAREA_STRETCH'. - mv_popup_name = 'POPUP_TO_TEXTAREA'. - mv_stretch_active = abap_true. - - WHEN 'POPUP_TO_TEXTAREA_SIZE'. - mv_popup_name = 'POPUP_TO_TEXTAREA_SIZE'. - - WHEN 'BUTTON_TEXTAREA_CANCEL'. - client->popup_message_toast( 'textarea deleted' ). - CLEAR mv_textarea. - - WHEN 'POPUP_TO_INPUT'. - ms_popup_input-value1 = 'value1'. - mv_popup_name = 'POPUP_TO_INPUT'. - - WHEN 'POPUP_BAL'. - mv_popup_name = 'POPUP_BAL'. - - WHEN 'POPUP_TABLE'. - CLEAR t_tab. - DO 10 TIMES. - DATA(ls_row) = VALUE ty_row( title = 'entry_' && sy-index value = 'red' info = 'completed' descr = 'this is a description' ). - INSERT ls_row INTO TABLE t_tab. - ENDDO. - mv_popup_name = 'POPUP_TABLE'. - - WHEN 'POPUP_TABLE_CONTINUE'. - DELETE t_tab WHERE selkz = abap_false. - client->popup_message_toast( `Entry selected: ` && VALUE #( t_tab[ 1 ]-title DEFAULT `no entry selected` ) ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - view_main( client ). - - CASE mv_popup_name. - - WHEN 'POPUP_TO_DECIDE'. - view_popup_decide( client ). - WHEN 'POPUP_TO_TEXTAREA'. - view_popup_textarea( client ). - WHEN 'POPUP_TO_TEXTAREA_SIZE'. - view_popup_textarea_size( client ). - WHEN 'POPUP_TO_INPUT'. - view_popup_input( client ). - WHEN 'POPUP_TABLE'. - view_popup_table( client ). - - ENDCASE. - - client->set_next( VALUE #( xml_main = mv_main_xml xml_popup = mv_popup_xml ) ). - CLEAR: mv_main_xml, mv_popup_xml. - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_21.clas.xml b/src/00/z2ui5_cl_app_demo_21.clas.xml deleted file mode 100644 index 674ed11f..00000000 --- a/src/00/z2ui5_cl_app_demo_21.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_21 - E - basic - popups - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_22.clas.abap b/src/00/z2ui5_cl_app_demo_22.clas.abap deleted file mode 100644 index b92f286b..00000000 --- a/src/00/z2ui5_cl_app_demo_22.clas.abap +++ /dev/null @@ -1,170 +0,0 @@ -CLASS z2ui5_cl_app_demo_22 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - title TYPE string, - value TYPE string, - descr TYPE string, - info TYPE string, - END OF ty_row. - DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - - DATA mv_value1 TYPE string. - DATA mv_value2 TYPE string. - DATA mv_value3 TYPE string. - - DATA: - BEGIN OF app, - client TYPE REF TO z2ui5_if_client, - check_initialized TYPE abap_bool, - view_main TYPE string, - view_popup TYPE string, - s_get TYPE z2ui5_if_client=>ty_s_get, - s_next TYPE z2ui5_if_client=>ty_s_next, - END OF app. - - PROTECTED SECTION. - PRIVATE SECTION. - -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_22 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - app-client = client. - app-s_get = client->get( ). - - IF app-check_initialized = abap_false. - app-check_initialized = abap_true. - - mv_value1 = 'value1'. - mv_value2 = 'this is a long text this is a long text this is a long text tis is a long text.'. - DO 4 TIMES. - mv_value2 = mv_value2 && mv_value2. - ENDDO. - mv_value3 = mv_value2. - - DATA(ls_row) = VALUE ty_row( title = 'Hans' value = 'red' info = 'completed' descr = 'this is a description' ). - DO 100 TIMES. - INSERT ls_row INTO TABLE t_tab. - ENDDO. - - ENDIF. - - app-s_next-t_scroll = VALUE #( - ( name = 'id_page' ) - ( name = 'id_text3' ) - ). - - CASE client->get( )-event. - - WHEN 'BUTTON_SCROLL_TOP'. - "nothing to do, default mode - - WHEN 'BUTTON_SCROLL_BOTTOM'. - app-s_next-t_scroll = VALUE #( ( name = 'id_page' value = '99999' ) ). - - WHEN 'BUTTON_SCROLL_UP'. - DATA(lv_pos) = CONV i( app-s_get-t_scroll_pos[ name = `id_page` ]-value ) - 500. - app-s_next-t_scroll = VALUE #( ( name = 'id_page' value = lv_pos ) ). - - WHEN 'BUTTON_SCROLL_DOWN'. - lv_pos = CONV i( value #( app-s_get-t_scroll_pos[ name = `id_page` ]-value optional ) ) + 500. - app-s_next-t_scroll = VALUE #( ( name = 'id_page' value = lv_pos ) ). - - WHEN 'BUTTON_SCROLL_HOLD'. - app-s_next-t_scroll = app-s_get-t_scroll_pos. - - WHEN 'BUTTON_FOCUS_FIRST'. - app-s_next-s_cursor = VALUE #( id = 'id_text1' cursorpos = '3' selectionstart = '3' selectionend = '3' ). - - WHEN 'BUTTON_FOCUS_SECOND'. - app-s_next-s_cursor = VALUE #( id = 'id_text2' cursorpos = '5' selectionstart = '5' selectionend = '10' ). - - WHEN 'BUTTON_FOCUS_END'. - app-s_next-s_cursor = VALUE #( id = 'id_text3' cursorpos = '99999' selectionstart = '99999' selectionend = '999999' ). - - app-s_next-t_scroll = VALUE #( - ( name = 'id_page' value = '99999' ) - ( name = 'id_text3' value = '99999' ) - ). - - - - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - - DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ). - DATA(page) = view->page( - id = 'id_page' - title = 'abap2ui5 - Scrolling and Cursor (use the browser Chrome to avoid incompatibilities)' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - ). - - page->header_content( )->link( text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) ). - - - page->input( - id = 'id_text1' - value = client->_bind( mv_value1 ) - ). - page->text_area( - width = '100%' - height = '10%' - id = 'id_text2' - value = client->_bind( mv_value2 ) ). - - page->button( text = 'cursor input pos 3' press = client->_event( 'BUTTON_FOCUS_FIRST' ) ). - page->button( text = 'cursor text area pos 5 to 10' press = client->_event( 'BUTTON_FOCUS_SECOND' ) ). - page->button( text = 'scroll end + focus end' press = client->_event( 'BUTTON_FOCUS_END' ) ). - - DATA(tab) = page->table( sticky = 'ColumnHeaders,HeaderToolbar' headertext = 'Table with some entries' items = client->_bind_one( t_tab ) ). - - tab->columns( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Color' )->get_parent( - )->column( )->text( 'Info' )->get_parent( - )->column( )->text( 'Description' ). - - tab->items( )->column_list_item( )->cells( - )->text( '{TITLE}' - )->text( '{VALUE}' - )->text( '{INFO}' - )->text( '{DESCR}' ). - - page->text_area( - id = 'id_text3' - width = '100%' - height = '10%' - value = client->_bind( mv_value3 ) ). - - page->footer( )->overflow_toolbar( - )->button( text = 'Scroll Top' press = client->_event( 'BUTTON_SCROLL_TOP' ) - )->button( text = 'Scroll 500 up' press = client->_event( 'BUTTON_SCROLL_UP' ) - )->button( text = 'Scroll 500 down' press = client->_event( 'BUTTON_SCROLL_DOWN' ) - )->button( text = 'Scroll Bottom' press = client->_event( 'BUTTON_SCROLL_BOTTOM' ) - )->toolbar_spacer( - )->button( text = 'Server Event and hold position' press = client->_event( 'BUTTON_SCROLL_HOLD' ) - ). - - app-s_next-xml_main = page->get_root( )->xml_get( ). - client->set_next( app-s_next ). - - app-view_popup = ``. - CLEAR app-s_next. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_22.clas.xml b/src/00/z2ui5_cl_app_demo_22.clas.xml deleted file mode 100644 index e0b8f2f4..00000000 --- a/src/00/z2ui5_cl_app_demo_22.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Z2UI5_CL_APP_DEMO_22 - E - basic - scrolling and focus - 1 - X - X - X - - - - diff --git a/src/00/z2ui5_cl_app_demo_23.clas.abap b/src/00/z2ui5_cl_app_demo_23.clas.abap deleted file mode 100644 index a2fa4f53..00000000 --- a/src/00/z2ui5_cl_app_demo_23.clas.abap +++ /dev/null @@ -1,199 +0,0 @@ -CLASS z2ui5_cl_app_demo_23 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA product TYPE string. - DATA quantity TYPE string. - - 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, - s_get TYPE z2ui5_if_client=>ty_s_get, - s_next TYPE z2ui5_if_client=>ty_s_next, - END OF app. - - METHODS z2ui5_on_init. - METHODS z2ui5_on_event. - METHODS z2ui5_on_render_main. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_23 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-s_get = client->get( ). - - IF app-check_initialized = abap_false. - app-check_initialized = abap_true. - z2ui5_on_init( ). - ENDIF. - - IF app-s_get-event IS NOT INITIAL. - z2ui5_on_event( ). - ENDIF. - - z2ui5_on_render_main( ). - - client->set_next( app-s_next ). - CLEAR app-s_get. - CLEAR app-s_next. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE app-s_get-event. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-s_get-id_prev_app_stack ) ). - - WHEN OTHERS. - app-view_main = app-s_get-event. - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - product = 'tomato'. - quantity = '500'. - app-view_main = 'NORMAL'. - - ENDMETHOD. - - - METHOD z2ui5_on_render_main. - - DATA(lo_view) = z2ui5_cl_xml_view=>factory( ). - - CASE app-view_main. - - WHEN 'XML'. - - DATA(lv_xml) = ` <Label ` && |\n| && - ` text="quantity" ` && |\n| && - ` /> <Input ` && |\n| && - ` value="` && client->_bind( quantity ) && `" ` && |\n| && - ` /> <Button ` && |\n| && - ` press="` && client->_event( 'NORMAL' ) && `"` && |\n| && - ` text="NORMAL" ` && |\n| && - ` /> <Button ` && |\n| && - ` press="` && client->_event( 'GENERIC' ) && `"` && |\n| && - ` text="GENERIC" ` && |\n| && - ` /> <Button ` && |\n| && - ` press="` && client->_event( 'XML' ) && `"` && |\n| && - ` text="XML" ` && |\n| && - ` /></f:content></f:SimpleForm></Page></Shell></mvc:View>`. - - app-s_next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( lv_xml ). - - WHEN 'NORMAL'. - - lo_view->shell( - )->page( - title = 'abap2UI5 - NORMAL NORMAL NORMAL' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - target = '_blank' - )->get_parent( - )->simple_form( 'Form Title' - )->content( 'form' - )->title( 'Input' - )->label( 'quantity' - )->input( client->_bind( quantity ) - )->button( - text = 'NORMAL' - press = client->_event( 'NORMAL' ) - )->button( - text = 'GENERIC' - press = client->_event( 'GENERIC' ) - )->button( - text = 'XML' - press = client->_event( 'XML' ) ). - - app-s_next-xml_main = lo_view->get_root( )->xml_get( ). - - WHEN 'GENERIC'. - - lo_view->_generic( 'Shell' )->_generic( - name = `Page` - t_prop = VALUE #( - ( n = `title` v = 'abap2UI5 - GENERIC GENERIC GENERIC' ) - ( n = `showNavButton` v = `true` ) - ( n = `navButtonPress` v = client->_event( 'BACK' ) ) ) - )->_generic( - name = `SimpleForm` - ns = `form` - t_prop = VALUE #( - ( n = `title` v = 'title' ) - ) )->_generic( - name = `content` - ns = `form` - )->_generic( - name = `Label` - t_prop = VALUE #( - ( n = `text` v = 'quantity' ) - ) )->get_parent( )->_generic( - name = `Input` - t_prop = VALUE #( - ( n = `value` v = client->_bind( quantity ) ) - ) )->get_parent( - )->_generic( - name = `Button` - t_prop = VALUE #( - ( n = `text` v = `NORMAL` ) - ( n = `press` v = client->_event( 'NORMAL' ) ) ) - )->get_parent( - )->_generic( - name = `Button` - t_prop = VALUE #( - ( n = `text` v = `GENERIC` ) - ( n = `press` v = client->_event( 'GENERIC' ) ) ) - )->get_parent( - )->_generic( - name = `Button` - t_prop = VALUE #( - ( n = `text` v = `XML` ) - ( n = `press` v = client->_event( 'XML' ) ) ) ). - - app-s_next-xml_main = lo_view->get_root( )->xml_get( ). - - ENDCASE. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_23.clas.xml b/src/00/z2ui5_cl_app_demo_23.clas.xml deleted file mode 100644 index 18316adc..00000000 --- a/src/00/z2ui5_cl_app_demo_23.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_23</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - normal gen xml</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_24.clas.abap b/src/00/z2ui5_cl_app_demo_24.clas.abap deleted file mode 100644 index 57e9bcc8..00000000 --- a/src/00/z2ui5_cl_app_demo_24.clas.abap +++ /dev/null @@ -1,87 +0,0 @@ -CLASS z2ui5_cl_app_demo_24 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_input TYPE string. - DATA mv_input2 TYPE string. - DATA mv_backend_event TYPE string. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_24 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CASE client->get( )-event. - - WHEN 'CALL_NEW_APP'. - client->nav_app_call( NEW z2ui5_cl_app_demo_25( ) ). - - WHEN 'CALL_NEW_APP_VIEW'. - DATA(lo_app) = NEW z2ui5_cl_app_demo_25( ). - lo_app->mv_show_view = 'SECOND'. - client->nav_app_call( lo_app ). - - WHEN 'CALL_NEW_APP_READ'. - DATA(lo_app_next) = NEW z2ui5_cl_app_demo_25( ). - lo_app_next->mv_input_previous_set = mv_input. - client->nav_app_call( lo_app_next ). - - WHEN 'CALL_NEW_APP_EVENT'. - lo_app_next = NEW z2ui5_cl_app_demo_25( ). - lo_app_next->mv_event_backend = 'NEW_APP_EVENT'. - client->nav_app_call( lo_app_next ). - - WHEN 'BACK'. - data(lo_prev_stack_app) = client->get_app( client->get( )-id_prev_app_stack ). - client->nav_app_leave( lo_prev_stack_app ). - - WHEN OTHERS. - CASE mv_backend_event. - - WHEN 'CALL_PREVIOUS_APP_INPUT_RETURN'. - DATA(lo_called_app) = CAST z2ui5_cl_app_demo_25( client->get_app( client->get( )-id_prev_app ) ). - client->popup_message_box( `Input made in the previous app:` && lo_called_app->mv_input ). - - ENDCASE. - - ENDCASE. - - - DATA(view) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( title = 'abap2UI5 - flow logic - APP 01' navbuttonpress = client->_event( 'BACK' ) shownavbutton = abap_true - )->header_content( - )->link( text = 'Demo' target = '_blank' href = `https://twitter.com/OblomovDev/status/1640743794206228480` - )->link( text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - - )->grid( 'L6 M12 S12' )->content( 'layout' - - )->simple_form( 'Controller' )->content( 'form' - - )->label( 'Demo' - )->button( text = 'call new app (first View)' press = client->_event( 'CALL_NEW_APP' ) - )->label( 'Demo' - )->button( text = 'call new app (second View)' press = client->_event( 'CALL_NEW_APP_VIEW' ) - )->label( 'Demo' - )->button( text = 'call new app (set Event)' press = client->_event( 'CALL_NEW_APP_EVENT' ) - )->label( 'Demo' - )->input( client->_bind( mv_input ) - )->button( text = 'call new app (set data)' press = client->_event( 'CALL_NEW_APP_READ' ) - )->label( 'some data, you can read it in the next app' - )->input( client->_bind( mv_input2 ) - ). - - client->set_next( VALUE #( - xml_main = view->get_root( )->xml_get( ) - " event = mv_event - ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_24.clas.xml b/src/00/z2ui5_cl_app_demo_24.clas.xml deleted file mode 100644 index 5ce00f01..00000000 --- a/src/00/z2ui5_cl_app_demo_24.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_24</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>basic - flow logic</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_25.clas.abap b/src/00/z2ui5_cl_app_demo_25.clas.abap deleted file mode 100644 index 99d3f12c..00000000 --- a/src/00/z2ui5_cl_app_demo_25.clas.abap +++ /dev/null @@ -1,117 +0,0 @@ -CLASS z2ui5_cl_app_demo_25 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_input TYPE string. - DATA mv_input_previous TYPE string. - DATA mv_input_previous_set TYPE string. - DATA mv_show_view TYPE string. - - DATA mv_event_backend TYPE string. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_25 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CASE client->get( )-event. - - WHEN 'BUTTON_ROUNDTRIP'. - client->popup_message_box( 'server-client roundtrip, method on_event of the abap controller was called' ). - - WHEN 'BUTTON_RESTART'. - client->nav_app_call( NEW z2ui5_cl_app_demo_25( ) ). - - WHEN 'BUTTON_CHANGE_APP'. - client->nav_app_call( NEW z2ui5_cl_app_demo_01( ) ). - - WHEN 'BUTTON_READ_PREVIOUS'. - DATA(lo_previous_app) = CAST z2ui5_cl_app_demo_24( client->get_app( client->get( )-id_prev_app ) ). - mv_input_previous = lo_previous_app->mv_input2. - client->popup_message_toast( `data of previous app read` ). - - WHEN 'SHOW_VIEW_MAIN'. - mv_show_view = 'MAIN'. - - WHEN 'BACK_WITH_EVENT'. - lo_previous_app = CAST z2ui5_cl_app_demo_24( client->get_app( client->get( )-id_prev_app_stack ) ). - lo_previous_app->mv_backend_event = 'CALL_PREVIOUS_APP_INPUT_RETURN'. - client->nav_app_leave( lo_previous_app ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - WHEN OTHERS. - - CASE mv_event_backend. - - WHEN 'NEW_APP_EVENT'. - client->popup_message_box( 'new app called and event NEW_APP_EVENT raised' ). - - ENDCASE. - - ENDCASE. - - - CASE mv_show_view. - - WHEN 'MAIN' OR ''. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - flow logic - APP 02' - navbuttonpress = client->_event( 'BACK' ) shownavbutton = abap_true - )->header_content( - )->link( text = 'Demo' target = '_blank' href = `https://twitter.com/OblomovDev/status/1640743794206228480` - )->link( text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->grid( 'L6 M12 S12' )->content( 'layout' - - )->simple_form( 'View: FIRST' )->content( 'form' - - )->label( 'Input set by previous app' - )->input( mv_input_previous_set - - )->label( 'Data of previous app' - )->input( mv_input_previous - )->button( text = 'read' press = client->_event( 'BUTTON_READ_PREVIOUS' ) - - )->label( 'Call previous app and show data of this app' - )->input( client->_bind( mv_input ) - )->button( text = 'back' press = client->_event( 'BACK_WITH_EVENT' ) ). - - WHEN 'SECOND'. - - page = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - flow logic - APP 02' - navbuttonpress = client->_event( 'BACK' ) shownavbutton = abap_true - )->header_content( - )->link( text = 'Demo' href = `https://twitter.com/OblomovDev/status/1640743794206228480` - )->link( text = 'Source_Code' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->grid( 'L6 M12 S12' )->content( 'layout' - )->simple_form( 'View: SECOND' )->content( 'form' - )->label( 'Demo' - )->button( text = 'leave to previous app' press = client->_event( 'BACK' ) - )->label( 'Demo' - )->button( text = 'show view main' press = client->_event( 'SHOW_VIEW_MAIN' ) ). - - ENDCASE. - - client->set_next( VALUE #( - xml_main = page->get_root( )->xml_get( ) - " event = mv_next_event - ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_25.clas.xml b/src/00/z2ui5_cl_app_demo_25.clas.xml deleted file mode 100644 index 95cc2e34..00000000 --- a/src/00/z2ui5_cl_app_demo_25.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_25</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>basic - flow logic (called)</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_26.clas.abap b/src/00/z2ui5_cl_app_demo_26.clas.abap deleted file mode 100644 index 0ce48dcc..00000000 --- a/src/00/z2ui5_cl_app_demo_26.clas.abap +++ /dev/null @@ -1,186 +0,0 @@ -CLASS z2ui5_cl_app_demo_26 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA product TYPE string. - DATA quantity TYPE string. - data mv_placement type string. - - 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, - s_get TYPE z2ui5_if_client=>ty_s_get, - s_next TYPE z2ui5_if_client=>ty_s_next, - END OF app. - - METHODS z2ui5_on_init. - METHODS z2ui5_on_event. - METHODS z2ui5_on_render_main. - METHODS z2ui5_on_render_popup. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_26 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-s_get = client->get( ). - app-view_popup = ``. - - IF app-check_initialized = abap_false. - app-check_initialized = abap_true. - z2ui5_on_init( ). - ENDIF. - - IF app-s_get-event IS NOT INITIAL. - z2ui5_on_event( ). - ENDIF. - - z2ui5_on_render_main( ). - z2ui5_on_render_popup( ). - - client->set_next( app-s_next ). - CLEAR app-s_get. - CLEAR app-s_next. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE app-s_get-event. - - WHEN 'POPOVER'. - app-view_popup = 'POPOVER'. - app-s_next-popover_open_by_id = 'TEST'. - - WHEN 'BUTTON_CONFIRM'. - client->popup_message_toast( |confirm| ). - app-view_popup = ''. - - WHEN 'BUTTON_CANCEL'. - client->popup_message_toast( |cancel| ). - app-view_popup = ''. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-s_get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - mv_placement = 'Left'. - product = 'tomato'. - quantity = '500'. - app-view_main = 'VIEW_MAIN'. - - ENDMETHOD. - - - METHOD z2ui5_on_render_main. - - CASE app-view_main. - - WHEN 'VIEW_MAIN'. - - app-s_next-xml_main = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Popover Examples' - 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=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->simple_form( 'Popover' - )->content( 'form' - )->title( 'Input' - )->label( 'Link' - )->link( text = 'Documentation UI5 Popover Control' href = 'https://openui5.hana.ondemand.com/entity/sap.m.Popover' - )->label( 'placement' - )->segmented_button( client->_bind( mv_placement ) - )->items( - )->segmented_button_item( - key = 'Left' - icon = 'sap-icon://add-favorite' - text = 'Left' - )->segmented_button_item( - key = 'Top' - icon = 'sap-icon://accept' - text = 'Top' - )->segmented_button_item( - key = 'Bottom' - icon = 'sap-icon://accept' - text = 'Bottom' - )->segmented_button_item( - key = 'Right' - icon = 'sap-icon://attachment' - text = 'Right' - )->get_parent( )->get_parent( - )->label( 'popover' - )->button( - text = 'show' - press = client->_event( 'POPOVER' ) - id = 'TEST' - )->button( - text = 'cancel' - press = client->_event( 'POPOVER' ) - )->button( - text = 'post' - press = client->_event( 'POPOVER' ) - )->get_root( )->xml_get( ). - - - WHEN 'VIEW_SECOND'. - - - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_render_popup. - - CASE app-view_popup. - - WHEN 'POPOVER'. - - app-s_next-xml_popup = Z2UI5_CL_XML_VIEW=>factory_popup( )->popover( - title = 'Popover Title' - placement = mv_placement - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'Cancel' - press = client->_event( 'BUTTON_CANCEL' ) - )->button( - text = 'Confirm' - press = client->_event( 'BUTTON_CONFIRM' ) - type = 'Emphasized' - )->get_parent( )->get_parent( - )->text( 'make an input here:' - )->input( value = 'abcd' - )->get_root( )->xml_get( ). - - ENDCASE. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_26.clas.xml b/src/00/z2ui5_cl_app_demo_26.clas.xml deleted file mode 100644 index ba12742d..00000000 --- a/src/00/z2ui5_cl_app_demo_26.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_26</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>popups - popover</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_27.clas.abap b/src/00/z2ui5_cl_app_demo_27.clas.abap deleted file mode 100644 index 382fdbf8..00000000 --- a/src/00/z2ui5_cl_app_demo_27.clas.abap +++ /dev/null @@ -1,151 +0,0 @@ -CLASS z2ui5_cl_app_demo_27 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA product TYPE string. - DATA quantity TYPE i. - DATA input2 TYPE string. - DATA input31 TYPE i. - DATA input32 TYPE i. - DATA input41 TYPE string. - DATA input51 TYPE string. - DATA input52 TYPE string. - - 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, - s_get TYPE z2ui5_if_client=>ty_s_get, - s_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_27 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-s_get = client->get( ). - app-view_popup = ``. - - IF app-check_initialized = abap_false. - app-check_initialized = abap_true. - z2ui5_on_init( ). - ENDIF. - - IF app-s_get-event IS NOT INITIAL. - z2ui5_on_event( ). - ENDIF. - - z2ui5_on_render( ). - - client->set_next( app-s_next ). - CLEAR app-s_get. - CLEAR app-s_next. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE app-s_get-event. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-s_get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - product = 'tomato'. - quantity = '500'. - app-view_main = 'VIEW_MAIN'. - input41 = 'faasdfdfsaVIp'. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - app-s_next-xml_main = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Binding Syntax' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( text = `Demo` target = `_blank` href = `https://twitter.com/OblomovDev/status/1647889242545111043` - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->simple_form( title = 'Binding Syntax' editable = abap_true - )->content( 'form' - )->title( 'Expression Binding' - - )->label( 'Documentation' - )->link( - text = 'Expression Binding' - href = 'https://sapui5.hana.ondemand.com/sdk/#/topic/daf6852a04b44d118963968a1239d2c0' - )->label( 'input in uppercase' - )->input( client->_bind( input2 ) - )->input( - value = '{= $' && client->_bind( input2 ) && '.toUpperCase() }' - enabled = abap_false - - - )->label( 'max value of the first two inputs' - )->input( '{ type : "sap.ui.model.type.Integer",' && - ' path:"' && client->_bind( val = input31 path = abap_true ) && '" }' - )->input( '{ type : "sap.ui.model.type.Integer",' && |\n| && - ' path:"' && client->_bind( val = input32 path = abap_true ) && '" }' - )->input( - value = '{= Math.max($' && client->_bind( input31 ) &&', $' && client->_bind( input32 ) && ') }' - enabled = abap_false - - - )->label( 'only enabled when the quantity equals 500' - )->input( '{ type : "sap.ui.model.type.Integer",' && - ' path:"' && client->_bind( val = quantity path = abap_true ) && `" }` - )->input( - value = product - enabled = '{= 500===$' && client->_bind( quantity ) && ' }' - - )->label( 'RegExp Set to enabled if the input contains VIP, ignoring the case.' - )->input( client->_bind( val = input41 ) - )->button( - text = 'VIP' - enabled = '{= RegExp(''vip'', ''i'').test($' && client->_bind( input41 ) && ') }' - - - )->label( 'concatenate both inputs' - )->input( client->_bind( val = input51 ) - )->input( client->_bind( val = input52 ) - )->input( - value = '{ parts: [' && |\n| && - ' "' && client->_bind( val = input51 path = abap_true ) && '",' && |\n| && - ' "' && client->_bind( val = input52 path = abap_true ) && '"' && |\n| && - ' ] }' - enabled = abap_false - - )->get_root( )->xml_get( ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_27.clas.xml b/src/00/z2ui5_cl_app_demo_27.clas.xml deleted file mode 100644 index 1fa396b7..00000000 --- a/src/00/z2ui5_cl_app_demo_27.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_27</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>more - side effects</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_28.clas.abap b/src/00/z2ui5_cl_app_demo_28.clas.abap deleted file mode 100644 index 46d2da70..00000000 --- a/src/00/z2ui5_cl_app_demo_28.clas.abap +++ /dev/null @@ -1,126 +0,0 @@ -CLASS z2ui5_cl_app_demo_28 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - 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. - - 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_28 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - 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 '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. - - app-next-s_timer-interval_ms = '2000'. - app-next-s_timer-event_finished = 'TIMER_FINISHED'. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - mv_counter = 1. - - 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'. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - DATA(lo_view) = z2ui5_cl_xml_view=>factory( )->shell( )->page( - 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=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - ). - - lo_view->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( ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_28.clas.xml b/src/00/z2ui5_cl_app_demo_28.clas.xml deleted file mode 100644 index 140053c6..00000000 --- a/src/00/z2ui5_cl_app_demo_28.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_28</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>basic- cl_gui_timer</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_30.clas.abap b/src/00/z2ui5_cl_app_demo_30.clas.abap deleted file mode 100644 index 4bb98fcb..00000000 --- a/src/00/z2ui5_cl_app_demo_30.clas.abap +++ /dev/null @@ -1,153 +0,0 @@ -CLASS z2ui5_cl_app_demo_30 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - 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 check_initialized TYPE abap_bool. - DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_30 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - t_tab = VALUE #( - ( 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 = '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' ) - ( 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' ) - ( 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' ) - ( 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' ) - ). - - ENDIF. - - - CASE client->get( )-event. - - WHEN 'BUTTON_ROUNDTRIP'. - DATA(lv_dummy) = 'user pressed a button, your custom implementation can be called here'. - - WHEN 'BUTTON_MSG_BOX'. - client->popup_message_box( - text = 'this is a message box with a custom text' - type = 'success' ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(view) = Z2UI5_CL_XML_VIEW=>factory( ). - - - DATA(page) = view->dynamic_page( - " headerExpanded = abap_true - " toggleHeaderOnTitleClick = client->_event( 'ON_TITLE' ) - ). - - - DATA(header_title) = page->title( ns = 'f' )->get( )->dynamic_page_title( ). - - header_title->heading( ns = 'f' )->title( 'Header Title' ). - - header_title->expanded_content( 'f' - )->label( text = 'this is a subheading' ). - - header_title->snapped_content( ns = 'f' - )->label( text = 'this is a subheading' ). - - header_title->actions( ns = 'f' )->overflow_toolbar( - )->overflow_toolbar_button( - icon = `sap-icon://edit` - text = 'edit header' - type = 'Emphasized' - tooltip = 'edit' - )->overflow_toolbar_button( - icon = `sap-icon://pull-down` - text = 'show section' - type = 'Emphasized' - tooltip = 'pull-down' - )->overflow_toolbar_button( - icon = `sap-icon://show` - text = 'show state' - tooltip = 'show' - )->button( - " icon = `sap-icon://edit` - text = 'Go Back' - press = client->_event( 'BACK' ) - ). - - header_title->navigation_actions( - )->button( icon = 'sap-icon://full-screen' type = 'Transparent' - )->button( icon = 'sap-icon://exit-full-screen' type = 'Transparent' - )->button( icon = 'sap-icon://decline' type = 'Transparent' - ). - - page->header( )->dynamic_page_header( pinnable = abap_true - )->horizontal_layout( - )->vertical_layout( - )->object_attribute( title = 'Location' text = 'Warehouse A' - )->object_attribute( title = 'Halway' text = '23L' - )->object_attribute( title = 'Rack' text = '34' - )->get_parent( - )->vertical_layout( - )->object_attribute( title = 'Location' text = 'Warehouse A' - )->object_attribute( title = 'Halway' text = '23L' - )->object_attribute( title = 'Rack' text = '34' - )->get_parent( - )->vertical_layout( - )->object_attribute( title = 'Location' text = 'Warehouse A' - )->object_attribute( title = 'Halway' text = '23L' - )->object_attribute( title = 'Rack' text = '34' - ). - - - DATA(cont) = page->content( ns = 'f' ). - - cont->list( - headertext = 'List Ouput' - items = client->_bind_one( t_tab ) - )->standard_list_item( - title = '{TITLE}' - description = '{DESCR}' - icon = '{ICON}' - info = '{INFO}' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_30.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_30.clas.locals_imp.abap deleted file mode 100644 index b0f14e79..00000000 --- a/src/00/z2ui5_cl_app_demo_30.clas.locals_imp.abap +++ /dev/null @@ -1,207 +0,0 @@ -CLASS lcl_help DEFINITION. - - PUBLIC SECTION. - - class-METHODS get_avatar - RETURNING - VALUE(result) TYPE string. -ENDCLASS. - -CLASS lcl_help IMPLEMENTATION. - - METHOD get_avatar. - - result = `data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA` && - `AAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQ` && - `BsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAAC` && - `SdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBw` && - `cHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/CABEIAZABkAMBIgACEQEDEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAAAwQCBQYBBwj/xAAaAQEAAwEBAQAAAAAAAAAAAAAAAQ` && - `IDBAUG/9oADAMBAAIQAxAAAAH7KAAAAAAAAAAAh9pMrGnC8gxLKqhaUMqzdVLV49GkAAAAAAAAAAAAAAAAAPPdbSYqcNfyerdabSYcu3R5czFlfc2ebnlurvP0bO1t8Rntn3trmLvZhvWGfpcwSAAAAAAAAAAAAAMM4K0eu5tNfE1vi980FPDj0yj8xytIjzJfPYLxgVehsElmsZ+SR3bzoOO2vbz9Or2PZ4AuAAARScpjbrBtUAAAAA` && - `B57FVqdLY0Hid+z91Dn0nrV/ODaeHzCEiWWZqxzpmKK1nrFKTH3Jbs1F624/ICxH7BeO+3PE9d73nWB34gAK3Bcxx62tHu8/B9D7CPqvKAAAAAAUZtLlbU6qnJ816dijlBy6ye1/azP5h5MJ447Tc8reSueU1mGeGFJt2tZetEvtf1W3Jh7ZR63m9hvn9AazZ/R+YGtXFdh+eKTJ2dL35n1dlRvR8G/wBTH3HhAAAAAAY8hd5vyurRyy` && - `YeF3+4yyVVlvV9lbdvXrryhBpS/jprWldn5TgxvssNLZynYYWIuTVNBEi5nBPaJovdVpX6R0PzzvPb4Z9HyXO9mO4rS7/z+vl8Ot0vJpnJQx8nr+tD7fwgAAAABWNNxvY814vZQ11uTi6KM/VY2c9a2dKWdG9elQuzZZ2p1dz5aNXcnzrPP6ft/dI+eU/o9fSnD3Nro4bCbCzxbR+PYiTmuv5D1+Ta9Xy6bbfU9Bscr8hFuufovySa/w` && - `ATr+xtVovr/H7JpNz0Z+udg5tOoy+WfRqWu+cfR3p3ul4mrxb9V1HxW6bfUe7ettL1kN3i3rayzyFdL3nL4d0d7d4jd8c9XZ1myxiT3DOSSPyJ9jeZ3z5nfc70Z7v3UbFEEfQULRrItbsazsPiX2nqvW4vmu2+rurL4/yH2LivI7Ndeml8frqjGd7y2F/vxpWM/YXuX3fhBjZrpqbpbTQi3HktdBt9VaNpHhrN6drnPFS3O8T3HE630W` && - `p38HrccvT6q5wdHZ7fR7jztJZIJZrDPTix0v049LtXDTU4exsN5xW1i3eXud6vDLk61yLWnvS8/wBRpn1o9zh4Pn9nV+Z9OKKxW83pxymyMNfcytGvz5m/3ZbvF75uoWiLZa2z0Vnx9hi3mo3FA22Me17MZNlrN9tTT8j3XP8ALtxljfXbW5ybfV6sNVyUfrc24l0Tqz7ff/Kuw8fo6rltzz7Tk69jD2eLa2oZOTr6D6B83+i8cc6wmr` && - `S39A0299fhRyfN9q83egk+S9aaBjz6zZw+F+v7alo4po+nObPW7DNI8957VtnQ2fTWeLKpW1OGbyYz6fk9x2Uw67ien6MtXtaewpMbyHm0wp+3aW+Ow9Fy30vHYMNYzv6nocZ6Sj1ev8Ls5Kj2cOluT22yu6xPsr2hrhFvIOp2x3vp7PF58u+o/F+XWrf8fKer6eZz74xlZsQZzMHD97y3o87b6+5nrdHBZnDf2iSJ5FqcFmprWG/pLP` && - `bHYVfK+uXa6mXYMtdVzpcm9XX7CjM6vlur86o4qx01Psz1H0LjM8XV7rm+l8veDX7HYXrr5b9u9cefvQ9GfO7TWaHen2roPh212y+j/HMbnFtZHh9npSvF1rJda9Bhfp5a16GxoTXVbCpf3rI8clvNhR2W0Rxz1kx4zZROns7eG8avY0ZOim16/wCc7joy7LVT2dcdDq+112WvznTd5pNdtBPPY0vX30+9xyoS7u5XLU3L+N60Mdhps9` && - `Kmgv67orUgylx0bbS7Xg6LdaSDmiHz3GIo7jSfbvb4vkPa9l57HH85r+VfkPbVfY84193TX+7O3nq9xy6RRX8L1t1868xJ7VnytZu66WLWef2GOjTbjXw9FNphD50Z9jtOC28U6rnsq3Tlhv8AR+0t1cuh3SMlWG9dhHrb2do+P8qxenYqZZaSwRXOXbK0wwnPCTyiHn91vvS5er6I+m8wJfnbcdBxPi93R8v12rl7B9O+U47WthrveP` && - `p3GVSbjT51/YeeT+zEC5qJWpq9qFGls8rofJsbRW9wq3jaT6yakbDV2o9Ir2ZKu1bF3UY613NShZq10/mFLLXsvFqvUs85u1ocjBrJOvGx9ayv/T+YG9APn+gw7PxfQg1nNfQ6zlrtP9G9fg+JQdXzfzvrSbHGfi1zmr+5xNHH4WdVnV6WxlxmxV5sPaT7Yj8R5NhOVa1+OYizmwu8pzwWQZZQ2UJ7WOlfes4H6Z6nLzGi+7aXs5fk1n` && - `caDxe3XXfqe07sNTv5XqcoaQAB8o0v0/5zxdHU8po+q59cfqX5+7zu5vpny76tpqPm3ul3Hz3pZy2IOLbGPHGEUE1Ppm5s9LuJqg9x55m8wyqzkhxlJhjnLCT2K0z1LtG0V/fZU4UL3FdePV9hwf1b0OfqR7HAxyQCQAAACKUcjF2Y+bdhuQ1ezZz8mg7T598z6m5i1t3i6GM0UK1K1F2MdvWzwjzLGzkwZRyPJDLySOzOKxHZLrNtq7` && - `R7DYp1mpn59Z9blqdT577PnhpUAAAAAAAAABzvRKz8kqfY+Y8nq4irutN5Pdrc85NdLtnzziiKaH2izhHJePJI5peeY+Js4QSWjyPH2Jg1l2Pam8+qVrP1HkhtQAAAAAAAAAAAABqdsrPzLR/VdV4nfxvtuj5nTPDHLnaOK3jSayWOqXDDKU+FddlHc0+ij23NfT/W4uiHt8AAAAAAAAAAAAAAAAHnJdd5nb41qvpdDwO7msukmlzGG6` && - `53O932jd8/eOhdw6I0fV9L2PucGi3x6PKEgAAAAAAAAAAAAAAAAAAAOUo9ypPPbqdSfPTaoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//xAAwEAACAgEDAwMDBAICAwEAAAABAgMEAAUREhATIQYiMRQgMBUjMkFAUCQzBzRggP/aAAgBAQABBQL/AOIEik815E` && - `7CWbYQtyRJOTM6tDC3tEx3eX2xv7R5/wBOfDNOFaWcGrPIdorXbxrsUciT9qb611bkeZsIuLMjCKwi5C7MxYD/AEk9qKOJ7QaF7TdqIwFecgl5eJCzytEjIQOfc82P+w2XVh9TKy2yhhkM0oI3/wBBO4jiM0vOZmZZGVkd9wzHpv0/oHH9rO27cUdYqtYMEXnBqamzDOUlgmWb8jMq/wCDyG+TOQ07M0bSxvkjYxzl9gOb5v7n8sm+6D` && - `x/S+Mn5SLC1ZVrzxwy90b/AIrMiyWvznJ/cWuBJHuTugcNj8FY4cObdTn9HfB8rifAOb5y2wszLVT6eao6zL+CeaKCKW/aOpXktWo/zyDdb8ipHZ7xDRyYzYzed85YTkZ3wqMPgkZthTww2O+Jm/n+unafuU5oUWBw8f3ep9eNKcwq7Yw2H51swvlt4GeNRG7EYW3+zxnlT3MDA5yGK45SyhRy3KnOWKMkPgMNgvT+B0m6WP2+otfTSH` && - `gqW7EyRjOIGEcm/M0cbPrUwSqqnYsc84VzcjNzgPIec23GxGbHouOubdY29r+SrbZv0kZRlJzEK5LfZK6xR9yXVdbeCxFPBaEq/EcKbfnPgao8Bd+TMvnCM85tixtm2xC4hj71vaFIZgZbHKO9GuXGWCsiMRxzbouclXEYnNzvtuK8pSbTnCjpqup09NhNrVtZwWtN0tZ4NZuRpHHGE/iPzyG1PjRhW4cW2GecVdsbY4qXIMhuwyOLgF` && - `qftWEne0a4r9qJ7H1GnQ2y0HNXe+0l5xaginOwXbNs+MUk5vxC8jl32PptgFI/Ed/XZ7U6wVNPnapqGoZUqVqiWTKEb3VmkIxZD+ezZiSabeRpO0mSTESmeUH96XIqzoIlkYzU45h+mRQiOojJ9PHstZRkmn13apWCQNGrY2mDuT6RxSW7HBkNi5CrXZmyt3zEPGKyjJJG4x7yYWmU6prKai2nC5chqVK9RbOs6bXz9Xu3M/S9RtiMwB` && - `FUvioB+aeITJZijUS8VEvGVdOeGdpOOJtkpULJIZBAeGI/L7Dg6+MfYZskmTVpt5I5pZGWlVdos2zf3WohYg0+tQkw6tbuv+jWreVdNo1clljiSxqcfb09u5QMqJH+PfNTuTVY6uvVrBlmjjr6hqUggBsyzpp9iSSvEteuXbjPOVw2lV/1FWyOyDjMpSvIZI/tY9FC5KX7tMSLHPWr2MkpKK9ebuY3tMs6RrHEl7TJl7kunnWIqwq+q7` && - `Iv6VqMIp6Xsy1YxGAAOmpTtXr1NWO7XuwoII1S7LVl1K/tAbM/KpMJ4LOuLBbteoavCXUbCkak0jypHLPJekk03TUMVeqO0tDuu8/8ZmLPdlOGZBO86bUZA2CVxlUA/Z8Zv0OSS7LuWaNYFyNjHEMuV6thI4IKGpN7cjtj6PQipq9PUJZ68AVkC7koAvSC0ZIDYeZe+e3pl2TTkt6oLNQz6kSJvadYv0ZK917WRhmJoQb/AECM8lFXX6` && - `AZDwVmnHerR9uM+TqBKJZX2S/+1YmmY0NzOCA1ItwHRfgndtsLAY7ZbtIJZboZorQfKs2UXSNZduOowrJHDyReRhT0/Mtmbp6ktJiqwRcPksu2KufRKcAChQFH2GJchcMgYYXGKwySQKJpxtpvLaWQ1dRQqyv82w0j213MsbSKIpCa9E4xBer4A6DHfge4zYx2yzORg/cTtgmeFlytIdqs6CJwNrDSMxAORycF0CuE6+oQsOrowZW+B/` && - `I4vgL4N0vHVRHWIH7GcJHGTFFt4GzLknwxMktCUSrqiiKh6fl72jWPa7qvdtQbSGBkf9zi6WNq0DAtZSul3WSMbU7UuR6paRotXVxFMr43xb5MZ7vFIH7iVCWWIf8AGpuFLYg9z7Sw6T3ZrKqFXGIVdQnGr3IzthbpvjHPdngibTVL1qvBMHjD0klWLKhKQmIMeTKW840cTGGWOJbsPeTQuK0m85OVGScp8jjbII2lEsBDWX7MMhdpOo` && - `+dNk/aaQkSv7rVcDIgu1U9kJuTUQyVz8RbfVceNnS67Rr09WTtNYAAH2E4Vw/N0BM5e5CCvWXkrxbMvxjlWUboZAcqI6zFv2dP71eMEY8kImX/AKv6PjJPcbNfmkoZZNxv1rWRHKOJaxHs8gZcPMhVytEDlCJkuz3qql+5XWrStPYHx09YRxF6VZKsP2q5xkHG6haFCsizuI2HWX/qi2CNjHJv4OcqN7q7ho527KJKHFqKSK0cPwG2M0` && - `0cMjuM1qDt2JU5dGYKsTlxpUMk06xIuWIC2SRAEx7Yw4oqFo40VM0w86FkJ2dMjjjPX1CbMuv/AGsOSo2w32xxm/bnqx9nIz9lRdovGFcn8ZIMDlRSkLp2YJ404VraqstcM8chGS7ZX3ZZoe1kkth45+KZ3ot+BICnfSwtara1WrFKSNmYrKieYoQFpQuJW+KBP6dYkkLaLqcl2LR9Ug1Kpl65FVWxNJJr/wB3Bh0cbpPFKIySzxDrJ/` && - `ADx4zlhV/qLhdWIJOnxyfStMEhuDuNpk/PJIuUzwyxksj4u0KzuJF5EZzxoYmMtKu2GnJxFGc5ptatVCjcHj9QI/PZ3YZqjt9P3U+mDcLmnqDIaoeDu360bnULUkFZKw6zySxtYtxJUrzFqvkBvOKdstxCaKM96xGNj08cuPgr42w5aj7qtA+5T3HkM9vANwkgbnGVByairtbhsqLdEvk8bQgd9yJHRlkDKjxbwRExIqAdt5hXqurcPC` && - `rv0MIDF1xuTGuu2JvvEcY4V3w9GtIskNSxwm9K25pqmgww2eI228zLtki80UtHi9QGJ2bCG23Occj6e04++RO4DSK8dG1ImRS8o45Q2P5yWJmW3GUyeFcaLK1KOQR0bPOPT25JWC4EAzbxtn8VtyiGGtcLSVi8mE7tHyXPPOJ1wsMLdN80erNqWsV07UHSTwTk536Ozzug4Jy6MWAq2ZpGLq+c9pGPmP8Ak5xG2ycLJkvKNmHEV3R1Mk` && - `aYthomq3BNGrjjH8NocDW49IfKkNeNQV6Myqu+E5vvjyZavHt3e3OzlTntUdxsXNxh2w9NU+oNnQNPGm6b1lsQDJG2bGOwoN7CTi78lXPGIiIfbvPEtiLyrRHfJP5E+xmOSDupscQCM9/bDDs/1EmLqMG0mrVIIV1STc6nu0traux5FW3yWQCQluctjkxZY4bWoYZHmwqBm+FeeRrnHYYHyQ75JKiN6Zi7+qfZrtUzw1p0kr3eVTNOjF` && - `xUiCqcXYFH3weegAwuNs24tIds38YnxKu+cX34lMVuEcrIX2jbIo66YGj37cThYJfp5Z27kN2QYl/6ZX1NXr92btSzSSL7e9yO4PIquIo3ATbYZKNuhzT9Os6pNp9SKjT+yvo8Ea1tOKapZr3reRJ+k6/f0arZS5Un013AXIzitgJ6hc3GMAUQgOMXGGxCjkxJXtOymPgFj4ZuSVbfGH7KkbGDuKI1xj73i/bhfGbi+tR/8epMtrOPXk` && - `dt8Zick2sWKFG5bWjWSrX+3Srf1tP1JBLG1OxHbq6/T+t0v0ve/UNG9ThpCzxSn4xB4iB2AwADDnLOfiYBZcXP7TEHvObbkRqceFebx75CrMJ4jyh/jttkLMJ3yPl9VZf9hrEdjTadClrFK16YtVhBZPftWoqxkHOIR6lXVINUmFHSKVaBEVF+67y0nVAUliqN+h6rnptxQ1+1CLEGpadCqmFYrSoM22Azlm/RyQflot9/ktiYvQYpxz` && - `gxXAzcg2AJMUBVJzlg2yQK6inG170o2+m5qmm09Sik9NTo5qTR5WoqYoa8UR/BVss8gab0/atwVtTpULk2k2PUivWkqzx2a7KrZPBIJ99sjlEgzjmwxskG422yFt25+1vjB8YM3zfP7YYDhHg/P9qmcfHfTt1OfP0XIWqdSAfx65pNbVa1ie3pyV7n6Szaho2rVdN1C1Uq/wDju13NNzWIzLp89WVJqCTBmTyTh6SfxL5AT3mXN+m/3H` && - `p/TEHF+cncRxdt2kSvaYena7VqP53VXSf03oszr6Y0UQt6M0ovpmm09NjzUp3r1bM8liVH4FZd8Yqehxjk65CvHOftwfaB0Of2w9oHlVx/B1BlMMarNe03S0rS/wCPe0oyyuWWRG6AKcchQZUAB5FFGEdFGHDgxeg+WwD3N8EeVOwk+WhabKWnQwf5Wp6TWvZd0+1QxGVl3GOw3lILJkfwfIxW2zflm2AYBhxcbBjPh+GyYuZtH0y3LY` && - `/y2UMtjQ6MmWdNuV8Oxx/mIe5V8Hx1U7ZzGKw3LjiMLYCSPgA+WOWG4QNGfrIIkhT/ADpqFaWTUoYDLGnHEbYJ7maIKWGbYevL2jydxjHOWM+XGsCv6cgsWbP+gtUYLBn0iKTLNGaqIQJFlu1o5kIzkoxvdgDYegGH5Q+9osszwRSsjSJolZq8P+j1jShYL0xAm70sBBG+cm6ADGI2PxZjkdIrlmNNB0uSzXqaTp9WT/S3NJeSUaNZ3X` && - `Qmq42lpap6h6YqcXq6tUEE0cyMWijgtO4cO+aJE8h/1uqaJVuSSaLZsQ6dpwrHtx//AJ1//8QAKREAAgIBAwMDBAMBAAAAAAAAAAECEQMSITEQIEEEMFETMkBhFCJxYP/aAAgBAwEBPwH26ZGLlwaWVtZoY1X4aViiY4aSWNMWOPB9NcDwpk8DW/j8GON8mPGluutdkkZowkrXJVdsY6vZhxRHGihIvq0V00ozRad9mLC8hHAkq9iMdT` && - `ohjUe6l1aEZIa1RKOl10irZhUI7L2cEKdsRY5mtDma35Hk+BZdyxj2JSo9RCnq+SONyIQrghGpl+xgWobfg3KP9KKsqhwRUvkUmuRS1DRmbk1Ei/jcqT5ZBLWq6RxSkrXRYpOjJheMWOTZ/G+WTwqtiEWtkRVbiNUT+r60KkNWbeRqt0KVozKX3M+pIw41JLUKCXHT6b/weO+RYv2Tx6lQov5NK+DQiWzvpHcy422YoNLca6bsoXTjYS` && - `M7Th09LWnqyLlxXX9Iv5GiW6FwQZsfsnkci2YsjezORqWrcxp1uPk8GSepkVqdGKGldnkvp5EIcdjHG9iD8dOdiacekN3sb9JMkyb0x6YuRKlS7M6sgklt089Wfa7RLaVohKxUSxavJ9CRCMoPghKXkctx7j5Gm9vkfpZmLD8dG6Nauhj4IcdnJQ1ZONKjdEXa3E09jdE8h9QUxSsZjXZP1Gkc2yxkN9yhoqu1414HEdtlPySjRFWaaV` && - `lfBHH89nqJVHrqlGWquTJkfNbEPURfY+5UOCY8ZpYoXyJqMqfY8lE5anfX7lpYv7KmVUqZDJa7GuxdKKNJo2M7encx5pQIZdY8yWyHJvsjlvnk1p7+TK1J2jHkcHZDLr9zJNx4M/2+2nTMWSD49pdMuVQJScnb9xNrgxeqa+4hkjLj2cjpGSep376bXBj9StNMjNS4L7Xtyeoez3/CjJxYssK5H6tEPUprc1I1J7GbI09Kf4+pkpuTt/` && - `8AL//EADURAAICAQMDAgQDBwQDAAAAAAECAAMRBBIhEBMxIkEFMDJRIGGRFCNAQnGBoRUzYLHB0fD/2gAIAQIBAT8B+XvWPYqeZ3F4/OFwG2zvpiK4b+DdgoyYzgTUXb/eJqSowTDqG85neY8xNQynMq1q/SPMBz8/Mt1AXIl+oY8NN/tM9dwKwMRwDK255mltsqbax4gYN4/Dbb2wPkHxLGOcy3UGM+ZmbYBPaZmeiMfGZo7ARt9/wa` && - `rWLpxzH+IOz7sfIts7aFpbqmsP2h5m2bZzMkTuQGDoRKbTW4fMqs7i56O20Zmsa6z1P4+TrLsjaI5yZiVUBhP2ZsxdOMifs6+0TTYPqj6QgceYVIgbMJlI3HbPh9uRs+0e0Lx7y24N9X6TUuWpMz8jWN2v7yupT6mmUHgTvcQWH2M3mdxl5ELk8wXvN6eNsamtxheI6duK4M0QRFLxwf5jiBqx9IzNSz9k7ulmrrrfYxgYGPq60zn2mm` && - `1q6gkAYj3qFyOZ/qBIyFleqYNzyP8AqXWBuTLW3cSpd5nZ+wltZV4fPQECHJlb7BNxzlTNwcbXj0BCPtNG9eNg8zspnJE1mosrLds8Sy2yz6j0a5Bg/VBqgowBDqxnO3P9Zp70R8kR7F9lxBe494NQ/gSob/QYRKm28Sq1dvMvtV39MzBAwB5iA2TZWP7S2pWGVhU+YWO3BmkDC7IHT4kW7uOtbAMCZfTV9W//AB0XzPI3mFR/LKWAbm` && - `Veh/ylmNxj7hyJ3HP1CG0n0CUaFE5bkzsp9prtKtfrWU8CIU25EbBY4lnEb6hNNVsXMscIu4zUXm18/gH+2CZZXgbugOU5jGZz6pk7pqGxhpao4MMAK+oyhxYgPTUbdh3TuLmLqlHmDVBvEQBjuMqUWPg9NV9Mscu25ug6aB9uRNSS3LdEOF6BPGIAoXMr/eJgxeV2mWrt8Qbs5HiU3dvwINYv2mpZbVxuxLq1H0QV+nmIAg4ir6Jwo3` && - `H2xB8RqJmq1Z5Dfp0rrLnAh07hdxH5dEOGBl5/ToviGKxQ5m9m8SqxhEbcd04PmMNrZWI20ciFkxmbc8zt5hSbIuRndLm9paoHQDMr+HB+PH/uLSBj3xGUjzPMuXB7Y8COm2V2KoORA6scGMpEErYTdBccYMBPtEyohsOeBEfMZsTcWMU45eW6jIwszt5MZs9PhtLNcDjiAY6dmu2vYW8TT6ZFUqp5M/Y7F+qOm4ZhGOgOIFyIOYlm3z` && - `E++YPyMbf5Jiah1WLqhjOIbUOCRLLyDtUQq1lYsEdpnoml3e/MoTtoB1PoYOvj/wC4jjtuGWE5TKwgKdsd93WsY5hXH4Nxm6ZUDidw+07wLgkTSIgcbP6zU6Ou8c+ZdpBSQPf/ABK9K78kD9ItajnH4Hox9Pj7TtlPSRlZQpRdpmo063JtMu0nZXk9a8kS0YhOeoHTEJxNLpxaCzTRt+846Yz8mxSykAy7SXglmjDExK/QJY5aAfgIjQ` && - `HM0VHcA+3P/iIioML8xlDeZqvhgc5TiGlqWw4juNsMHEzBiZgbMJzKF5/WU17Ex88qG4M1GhsJOBxLaHr+oRqyvkQ9MwGJWzHiaHJZfT9/4J0DjEbT6jeQVyIPhNhPniW/DWU4Q5hrbOMREao7jNLUtibyuMzGP4YoDK6ErGFH/F//xABGEAACAQIDBAUJBwIFAwMFAAABAhEAAxIhMQQiQVEQEzJhcQUgQoGRobHB8BQjMDNS0eFAYi` && - `RQU3LxgpKyFTRDYGOAwvL/2gAIAQEABj8C/wDoiKiak0INTURWNGDBhkQdaM1nQit4/wCUZV94rJrvEZZcZ4eupDAzp39ArDMNhxaZctawoGKXjiMnsN+x+PjRRVnKrTMReuZjEMlUE1LnCAMyayPGNKKznrUGsz/knWF0wnjOVddYw3l/tarZwA4+KPIA512MGIySsozRz40Zus68jGXsFZ60r4hC6CM/bWDNVOoGlSZ5ZmhnSNk2Hg` && - `aWQsTGpn2RX5vUriywgY45cRW4FPjQDVH+Qs7MFAEyeFOOt2hwVOsIAfUMVBt2eKzkKwOAycjWfn5dBV1VlOoIkViGz2QRxwClaAxTsltR66Fm0tw3PThOx4zUnMUY/EzMf0MSOjKssJOoxaVxVxqp1HTn581nr0R0YVYgTvDLeHEZ0lpQbWiqr5cNBz9VKhbt1H4bq90W1WTJMRA/ocs66tTcYgwcPCvzFLYTK2xJB/3HL2ikduu6wL` && - `Ha+IGVGAATrA/oIJpWGQyG7p4Rw9VC4Du8+f4LXbzqiLqTW1bXsDP9mv4d05Yt2MQ5Vd1APosRLd8/0EUyszjhudr1Rn7KVbFnq1R9CYBXuisK31S3wC2sx7491a+dPRPm9w812V3340PZ8JyqVuOwMDDGh+RzoEeeNj2e4qPH3jkYsHKBzoPeZ77j0rrYj79Ojv8A6BerfrA2QKDEPaNKxLsyC5mfvGxdW/AwMvfTObl1y36nJA8BXH` && - `8Pd87IVn0ODkWOTTr3d1LszLEDXzrdoWOvuuMRXHhgULm2MBvF2UemxM58OXsrn0H8dXZFLIZUkaeFNa35fSBQxxzjo1rWs6y6J/Cz6R0BWQMj5GdPCgpbHHE0COz5jXLhwqoknkKubXcd3Ut91bjew+iI4DTXKsTq+HBuIilpPfGh0/etzI8QdRUnebhUnj+PNKxA6z0cpPD+KxsoEZgcRWvTmakZipFTRt4hjGq/OusKyg7UcBzrDk` && - `bbibbjjzHj9cKSfyrqwO5h/Hw6Lu0NoqzUlYJ4eZn5hBzFG1cgDMqT6Q+UVxhu7p6zarsfpQdpvAVKk+TthPL824Pl9a19k2O2b1//AE7QxMTnqaNx7v2X/Ts2ng66s1fdtbMsSSvHvP17NB/Qb7Cxb/SmbHxPy99FbYkyMRn4njlTSZY6nzIOQoGy67UnJjDe3Q1hMo/FGyamtC3cOEYpGYj40cEu6+iuVxP2pkg3Z7FxWwsDwn+Ku9` && - `W2LenDp4eB93CriNubRaGPCRmGHyrHZtFyRIxbopLu07TbbC26vZVT4c/GjsqFrdpfzWKkE9wq1sCAzgy7ujPo0no760q0VFovilS1yI/fjWL2jlWs99NsfkJBddTFzaG7CeH1w411u1vc8o+UnzC9pvZ8zyo/br32Wwf/AILJ3jr2mrBs1lbY7uNAWhqYLZbo50k2jbYN2SMx486gf0Bt9q5+hBJ/jxOVFOsu2rZJxYIkZzqNDMjLFQ` && - `CaUEtqjEic2j5V/wC1uHww/vX5eBY55msSq57i5PxqCMPjQF63buj+5dK/wy4Txzr70T3GtIo4s6DMqsR+pZBFBbqJj4xnUUzptN23iaSFC/MVOzE9erYsdwyW7iaw3LF1No06oqZPgdK/xOzPcnjaEx3RWGz5P2jF/wDc3K+/6sPOidGZodWuLxMUcaoOEq0++iRbuRzMQPfTbMt97Hk+1qE/Mv8A8UF2W2PJmw8IH3jj640epSCe05` && - `zZvE1vbUrGJhN74UP/AEzyc5U59beyX69dR5R8ptgzm3YEAjxpbWyB1s7OWtZzm2RP13mian8bAzOB/Y5U+0UNj2VFtCMT9Xu4V/n96gAKq5ADQUyMMiI1pCtkHLM/o7vGsRXTuo7mHP21hZ29Rj4Vhlo/3UBifLm0/GsJyaJ7vwc6zEU2AW49Fjn7q6r7RctxBuFcvZx99JZQb9wiY3jnxY+J6QBaZjzBim2a5cuhbgzwfCYyFPtlwL` && - `Z8m2m+6R//AJSPSbn4ePrNvyRsmNQYN+7kv1oflU+VfKNy6P8ATtZL9eqh1Oy21IMhok+01ju3FRebGKf7Ev2y4nBOz/3aUhN1Hxsz7qwEk5r35zWBRJ/FW5Z2VtqGL7xUbeC8wONYkB6o6Nx9dNfZvu1XESM8q+x7PP23at+4wbKyP4yHfrR8n7AEVNnRQ925n4QKuLeu9fhIEO+FTxnCB9RSoSNxczoK31wzw5VCtR6y4MS+iMzW6f` && - `aI6MzhjMN+nvoElSea6Hv/AAMxTJbJr73Oh1tm25GmJQaaxaVUU/oUCDzr7PewrtS9pOfeO7o3vZI+dbRbt7UEZhh3fvSoPcKTZtnuXtpC5Ll/4ihY8neQWsga9edTzzisWLY9ij0dZ/8AKlvbR5avsx1W1ufXspbz3pbiCgOfrmrdt2uXlt9kXHLAerSgAIA0HTjQZzFYb4/6v3pW2xUtK3ppcxKPHQ+6KkGRVvCowGk6g/mCZqLlx2` && - `E6E0tz21csnY7zqujIy5+qaQWy1t2EkXlKRQu2la5bjMK1FrFzrXB3kJhvYaN3ZG+z7Qc3tsO14j5iruxFXW4sXMHHIzlzEisd5XXEROf3l5vkO7+ZDQOtYKHfXEQOPOr1+8hQu0KCR2Rp86gYczGYkd9HgBRwmM+dFG0Czl8K/LaKCgyDkD8qIOHD30LhSLkYSTr+BCLib3Vj61G4HATr4g/KgAkrixQd7P8AVnWKSyYdJxMv7/HxrK` && - `o2m2jDQYu+msomBL9uUz4rqPYake7jUJblTkhttMcJHL1USLaBiZZ1t4cfee/p6q2DMgzRCoyYDhhv36D03Nn2m7lhlGPA0UsYQon74jTuHOlxYzCjGUXER4CiiNdKnQdU5HwqHtbQ91WnKydKlLUqOyGgeqpvHC0DETkJ8aazZwXlIkW1BxeNMtzYb4fU/wDJiirpukan4ViRMB/sJX4UjXXe7g4OF/aagXHjWG3s/XnS9Zfe5hbFDR` && - `88/fTFQDdYZE7x/wCKxYTmYUDUnkK3u22beNTThIxsMgTRDGZq53wRQtvccrbJwKTkvhVtTO/kw9U0MTb3OhiM/gdSExGN/wAKO+s8c6yYHwNa0NmkZDcz17vdUMJU5GuquMcJO43FG4Z1DtjGQYxxqLnZHpnl399XHV8QtoFEaGf/AOR0jY7M/aHObDLCvH676CgBVUZDzcCO6Wz2kByI+XqqAIA4VCgAch5pKBVfWY+NBsxI0PDzZP` && - `8AzRuXNTw5Ck2u5ae5YW2RuLOA8T7KDKZBzFRUBwuUxh19dMp8KDLk61+VveIrrLjDTdwns0Ms8VDzO/pOETRZjixNiPI1hAHgKBAzoNRl5ZnAXFwb0Rlnr0NYtwAmTPy4wO+s5GPLLhRTaWVYGbcI591XLwaQclOLUa9KXrmQvWgiGOIJke8ee9xJxDumgxu9cGzDxHmsx0Aml6zxduR/ap0oMpDA6EdIt8NT30YG7oG/VV4TJNp/hW` && - `yvEQmH2ZfKkMNnu65D6j31J1iBREViQa6ihhtEk8zpQAdFnhE1jYbxrez7hXV2Lbf7q32NfmMR3mpu24aeGdZUaZAwTnzintrbyZdyDGHPXv4+2sxTWsQgCRi4UTm2eId9NcxG2wGHF+mePRfB7XWmfl7oprY3T9Z0pe0VQAq/JmkacY1qB0FmIAGpNPeVn+yAwnDrI4+HnlXEqciKNtdpuSpkYt6QeNRcvXbmeuMj5+aMRzOgAkmgrC` && - `MzA5CchWISjHUrx8edYbgg/qGh6PvLaMP7hNW2A/NcQO9jUESujeFG0ghLd11Ud2KuPqrNoMSBRNu2Y4M2Qamx2d4cFz95ApisKvotrPfWJgJ4d1FiCY5UWu9vj5mpFfmBiuta1nbIJ1YGR9eqsxucG+VYbefhTnFvERA4UFGlXVtziNtkC98cejaR6XWgx3YFHypAGRce7BWcXHXhxp7ly2iO7Tuti9ED5dNryWpZVKdbeM9pZiKgCA` && - `OHn50l0cGA9Ry+vCtDUjMeYt1RMAgjuoODIIkdBDCQawHNT2SdfDotktz0XLDy+H/bRo3LlwYTejAB+pvjLeys6utcbAouYQh3iWgH2+3KNKEggxx6MuhkPpLFMriGBg1E5+YoLLyg6/WlFZhgJjurC3Ec86hT7ahj7KgCsR7hNOZbCLa5cNT+1dX1ouPPYt7zewVtG1Om/m2A8IGQ91W3W+rIhneXM+P/AAPMXrLK3br7toHU/wAVgX` && - `M+kefnZ1OtMiZk8zx4e+g66GlwkYmYDD+rzGzIy4a0FUAAcK16NSIzy7ui6xEaKDzH0TRz1yrXJXVz4Ag0HRgwPI0m2LhuIxFuDl1YMaZ8+6emGpcb4QxyPD29Bcdls/XxoMphh0SanDApcEYR2zROESdT9eFFlJnUDvoAjWsgvspmImM8hWAai4uviDRga5mtlRMgEiIjMa++aKu3bGGfGrhVjv8ADl5hW08Mq4WJzFtZ+PnESRI1FR` && - `HR3ULU3jIgqHbtHjw1nnRm0inmNfr1+bphBzA/SOVa9AVe02n79EUDhhSAw76i8JBGE+FdSgw2rglB3jX5e+jbbQiNaNq+cWcLcyz5SOHKeY8OiGq4XOJXbKc8tPfr66/w102h+jVfZw9VdVtGzdYp9K0+ntqSr2wT6Sn6+NRjn1VmjEf7DUYXnlhpVYy8ZmhbxF3JjCgmoImaTsC22Q8avPilMZjOfH3zRe6cKgTJqbjq2C2qkaw/H3` && - `H31NW9oKFQ7M4HczEj41fukqTbshk5Kc8vhRSwyWdsKygfst/HCuvT7tkyuo2ts9G8ZfgtXHVvzlxXl5RkPPnoyNbOtxVCpcWWRs555jnTIwh117+/zD5mMBWUrGbRH18qAVR7a7XsyopcLWid2Z0yjKgcxMe+reAw4O6e+iCMJBwkcjWLDbKMmG5Izbl8Wp8LKV1UnXwP7/RlZkag6ijCtgAGEATzqVxetY6ZNq2x71FEm2Ae7Kgtva` && - `7ygc2mobyheK8Rn+9PgXNRm5/epiktsgvelhy3e/4+ysOFQmvfNSzuwmQp0H139H2a1+be3RHoji3q/ajYtrCWSLcf9I/er1thlhHr1q/s1wnFbfHbad4d45V1Y2i8HgqXntKTJB56msGx7S/VRAXIlPCco7qW3dW5YOHFcua4u4HhRCatmzHMnzAVt9YkZga/XdRvrcUysp30Lt1cLZ4h3jpzp7R9Ieyrl1exART+qJ/fzBMd1a+YuH` && - `gc6yEZ0DP80QuGdVnn/wA0t1TlrVu8NG3GPw+f/dQPRjQ4XiPGslDNM5cO7w1z8Mqm05t5NppiPH65197AH6sWtEjCqzlK5mouHwIFYsQivzFnlOdY7n3KasSc4+VAQEXtAHXxpcPWWxj17s8/CusvOrvEDCuEAUem68sSdSfhW02tHu3N2NYwAT7j7KxGYPZkaUzRnz8+5ag41AgH0poRZutOeLCc6S51qInW4mttw5mhdN53QN1nVx` && - `lj5/OOdZdE0yEkSIypbd0AcAwG6f28wYYmeNadEeZgOFbnLn4VGHC65waykpqeP8/XhRSRhbNW1g8DRLIcPHCZ9fOhcQhlOhBkGstejcfBHdRu3tnZgNXUyo4TB09VYk0OhHGoOdG4AN3KQOVfdi2qxq2fu/mgz3ccZiV7Phw90561p5rXTook1cs3yugIjlH7zTHGGGZU8xOXupqJPHzMugSddKuOyr1SSqP4f8mktzOFQPMmhHQ9u1` && - `gCDddmE59woKCYAjPp3BJ8YoAlbciVnexDnWAnC4E7prC3Hsnn0iprMb3A1lWLhrUDXjWFbNxBxwXXSfGDXW2Gxc0dyZ9Z0qc+8HVTyNTXdT30vXLRuahVWPhQ666IDf7pHqC/A0MCtIGr6/WVQOgs7BVGZJ4Vy6MqiurO7dL9n+2f299B81IEZNFBbZhFUVlUVNdmsunZRsttrl3ewqok6VasHO5G+e/zGxXkXCYOIxnE1APRNXSNGv` && - `MZHHzTgRVLZmBrUxnzoowgc6wwSOFAjzOVREHlW5lQnTQnke+sSrINDfCxwI1rCcjy4ipLEngOJorC4weWRFb6xzq5fRlOFCwzoCWjFmVOkZ+zL39ASHnURx+v2rEzaaAfWdAKGcEwWXODRd2AUDMmvuw0N6v5FGch0ZdEHzVVmguYWr21a29nTqhl6ZzPsEe3zftqS2ERqIjWrFxRlcOARwaNKTrFO+wRSM8zV5dpd71y0/ZJgeMe2o` && - `CgDkB529WQ6MXPWsR0FEdPgahcJPM1nRVVnkOVawTUMisORFHBaVD3VvJX6vGriswLsCO6KxscJ0+vrhWbtEQQDFFLVswTOKSxnvpurxddoN33511YdVABGIHEx75ojfAxYgrPiilQkYzoJ1o1p0Z9GXmfbLF4WVtHDbLpMggy1W9lsTgQcTme/wA23iLyINxEaLbtzw1tOwpfe1etsL2yydwxz5/80m1bTs4XqWVrezK8ntCSTpoK2T` && - `aryhLW2YlvrkQpJ08Bu+yisYARmOFYmxCwDDBs8I0kdGta+e1oRuxpw8yagVDhVH9pmahRAGgFSmQ/TWT+qPb8qI0I1FM+cAZxWQiMo5VrHfyqShU8jwogJigS3P8Amsdth/u4RzoWyN7iRoaTMZmM6+02t27aOJTy50Vw4L6/mWjkQfDzs66mJtW837zwHzpNlK4UXdaD2h8hS2UGnnC6VwXAcNxY7LDWrPlXZRN3Zu0OafXxpNotHc` && - `cSKu2gJdd9PEfUVZusZur93cz9IfU+urVq/ab7B2rjomIluC5Zgd/wom0yuO4z52fSLizOIA+vL8DMVigTETXI8COFNbuJiBHDjWJNfjR8YI5GpQ4hLSJ7+FFjZZQVgliPVofGioANt+0p+Iq8iSIgjlJzPxouUIa3J0yBwmr9y3IKo0htQRVu5ttgO5RSGGRGXOsfkzb3bDpZvcfXR2XabZsbSnaRvlSdbO/x5UwD4JHaHCsKNZvqMh` && - `iEGsJexbB9JASR7fGkQWcTAbzEziPE1hRQo5Dz/wD1BF/wm0ZbR/a36vrvqRhdHHiCKbZLpjYtoOK0x9E8vru6Ns8lndt3vvrA0HeB9ejRtMSAeVBynWLOHfQUqIoWVLFRlyz/AAADzmjOnA1l+DhHRmM9JBg+2oXTpmsLaSDVwNjC3Fx7pjFzB93tpVk7gC9HV7VamOy4yZfA0Ln2w7UEnAjpBz7+NHZhItnLCw3l8KwXrSiIKsuvrq` && - `UEEkn8G55I8sIq7QBH9t0cxWBsVzydcOR16s1gaHtvmrDh3il8neU2+6P5N/h4H6yrZvK9gb+zPvcJX6y9dJfstit3FxKa3lBir9y/ct/aCxLKTDROUf2/Ws9G4yv4Hp1rLpIxZDKO+o/FPS930VkH1V11475EBZyUcqfWCZHt/H6u8MNwfl3QM1NHYvLuznaNlbdXaFEg+Pf78qx7FtVvbdicn7rFDr6taNi9dVJzi5ulfXzp7W27Jt` && - `F3YGGHMdn11e2Ukk2XkeDfyD0XEWwL5MbpAPHWDrGtfdWbpCnX7MU//Qx7acPZ6s8SXxHz25Ze36ipH47XDoomjauF1uXLgaA2QGuXsoqu15Hjg3hWArA9HnH9AyOoZWEEHjRdthVSf0MVHsFC0dkxZziLmfbWIXNqUfpDiPhTJsdnqw2bGZJ6GuoASOdG5cOfwrLzshnWsnj+Nl0KhzDOo99JZjenIkV1jEv+nu/qLl1HAnRcNGzdQp` && - `cUSR+3TrHRn/RW1H+qn/kBSnCrMOJX+q38SNzSi9z76xwuIMx/uX9vdWJGDDmD0Z6Vuj+hS2hw4pJPcP8AmrT37hFhGFycEF4Mga+HDh/WFToaLWlaxd/Wh+POjK9db/UmvsrSa06Y87LzT0PdicIJrZ8GZYm3Hjn8qCooGX9f1nVgPMkj0vGuqCmzdGu97xzFRikjXKCOnOp87Pzb/wB2jJhOjQRlS7RfwWksHEtsbxLEEZn9v8hxOC` && - `G/UDQzzGh4j10S4a6n6lG8PEcfV7Kx2riuvdX2e7fUXeVZ6fgCpmhba6oY8zXUAb149WPXlTFwQzHQ/wCSC9sw6u/Obpukjv51c2e6Q5ZpuA8SawmW2bgeNv8AipBkdEdOVTQ6m4bbgyCKxbXs910/1LQkGnv7VbKddcJKOmfcD3V1lnZLaPM4gP8AJmu27yyx0Iis3tR4mp2bBfWc7NwlB/0kafWlfZLmxG2pO/cuMMX/AE4Sff79KV` && - `vJ9s7OwmStxpqb2zNtVoenbXfHqrHacOKF1skMmTTEbE5QrunEsn1TW+mBP08T411ziEHZ7/8ALvtCTs20/wCrb4+I41b2fbNvR7FvMIljDiPNs/dRd2xsRHdXYX2f/jr/AP/EACwQAQACAgIBAwMEAgMBAQAAAAEAESExQVFhcYGREKGxIMHR8DDhQFDxYID/2gAIAQEAAT8h/wDiKjczzKFcUQUbt3KflOOPeCBkb4DyMVs3WbZqFn` && - `iItirN/NcQLHH/AEzqZnliNau6aEWoWD2SzYpYcDsjwGOZusnUyJAWUUWnS14u5bo7kDn+4/0HKvyVAP3+zAypMTcDR3gOdcWw+naIoJckq2SNNc+m+YM+EB5uz9paCzcbAC/+kDIFYyI7uJBJvJjxQ36b6tw2CtaXGWas9CIwt8cGdV74d8yyNxqlfxRZ/HNxfb2MRYASByb9GseCUA0WFh1SIe0CkRgWpV43zfO5ncivvLJQGt7tTN` && - `+K1q66mc35pegV8/Eur2l9hcryXTZdnBAwhp2g0Gd1qLQcn/QvhEkoHcakshWjVWAfOT7SiGmh+Smv2iVK2dnxHzb8zQuXZCxUOpn6LFPXKMLxHm3Rj2hjXgXH2jafkzbOlk5+Y11lFD7Fr0IJd5IdlE4f8ihXbt/4O0u6v6U/Aj4BkA3YR9vXjdMvNQPPf65LMMtVGJdwwqHMMMcNkG4irmFIYgWZQvumqJzQCorUL0Qn81Vl3PVOKn` && - `sqnZlSRVBPLf4wMmhwMntz/wABAW6mashcIvD726x1vxElilSHWqrUjUDlaI4PqLvmpeX22GfWPN3ZMj6LbJuViWJa2J2+0ahuDLHdniHXmNzE6I6ZSVKGoUHrGnDJml84IVR2OHo/wkxa30EtECw2qFb4Fav4rA5YFwXb1cc8Pd/8C3G4dZW+auyhtV9gtxVhFBAiA9WuMY11iXa9Kqj4BVCp4RGLy/U5YYiMIeCWlIa1LIwc6TM6gt` && - `wi1jMrpSGrfiA6J+Xhho51e94IcCKUG5VKLNr6IGaFG/T9eR1V6tp4Gc4Ct3CLNQ4s3j9ioDMA/wDAbARTWm7we5l48zWtFkv2DN10j1CHH3fMdkbS79dcRF4YOHFOpyGEgWoi3FTUUvbLHxB6vE0yiGCxlmfjM8QXtYpCuM3S9azjaFxhgBh/VdYnwDFadt16Qtou1tiRpda8H1le3KFlD3j0eP8AOqtAlWlL0xNZmHruX+8wGaBBxH` && - `/2Ii0hlsozkKiecpSJOjXM4f0DTZAbllSJfpmOGIXdRWzqchmOqnBLur8TLAgi0sZtIfu0iuc79OSNbduyuPtjOY8tV8foG6u7gLWFFWcpFui0dq0W52wo2thJyIUAbYy8JQCBjabTPuPxMMq+BxKief8AOQi4jB5E4mw+2bcF5iPeHKwZz78fLGaxZ4ZXBuLqkgSrsCHVIP7pX1Behr9nmNe5Xty05rnxfpDlLgeKGT7vS+0RtLtJzl` && - `45/JFsudZDdvB7uPeEVELea8TNuPwI45m2/pEFlTfaivMOojMQpO5TjjIqc2t+Bs67mR5o5Vnt8f0+tCTR3F6/c15lZmYX2O/T43wm/fjTb7Km+TqpwV+CGx6Ebo3XDG+Z8ja+DFvR4xaGIXczf86jkGGqXizBZhA1xJekJrOttlYedcZibgzJ+Dx/d3LtYYGqHr3OZuVt5i4HRvGJ0BXqHIerEggyOr259SDsMMPJq8rsoFjUodilzk` && - `un3xK0N81gyCrq1HpM6NJARxY4BL1bhVUVx8zK67JV9MBlmKAwNK5zewTzLVXNVT9spznS9EduRehsJ+fj3dV3OoYH2H7dxeZomJfwjfawFVo5i1FEfIgFwhb4+yc87t2FGsUQwFpwu0esxFIq8uJXBBXivtznnQgdidBuOThRXwOp72MQ4fBgw+JcZ90z6nbvmZxHzpZ/73dNVEZdyxSl5W2XN73dNzREBi/84SW41G9KcGuDygG1rK` && - `48EABBeSTLXyX8xZARfq50uz5jQDG1I+4l17ep7bGD2fiW2qFq/ux7RmxconQAFmmyWbao2avu5gqt85CZQZuoVQZYTGI6lCwuoR9WnZ6KKuHYTvGXLiUlEDgaJuLbAWg5OAlC4I2CFcikxRBLguzLrAWL0kf2zs2zn4d5jvl1AfL+JfJ0CKB5vncsm8ekY5YXJVptAVvTK9gRu1XJgJKHpTmkb4MeIbRXI91VDnBzeApu3O7SsXVnru` && - `m2GA5bLPaZeZjsfNvxeA+sFAUp21PNPGrbxGgDBaR3Qv3GUyiFTchHpf2AqxeAg1m/82SD22D4H4YZBo0Wl0Gl3qtMbC602UFBwEo1VY03FYmR5PK/ge/FgjerxZ+DcDCVGCh7v/Y9yDe16XlH/V4Q/JmVDowzXM7t536cEFUYKN+x5z+3Z9Bh9SsWQFys3iS4yL0TAxyTf1x/MMktAhpWjFGt2PXNasFShajYyBb3KnSTF2ygixVZBd` && - `1djxEoKwImtKMDdjd7mMfNjyp9ddkdw7jSg90e/ZH5wFGnVavg53LpfYU33GVZfij5ZY6xa7hVuA2ri7ZeUC2XByZpsfuRKpDfUVdv61Ayh+gCWJUJWAVHOpfH+j1GoLR5pxMu58UF2VuPbStsTQ5N1BShHJpyhFZAh5DWc4w+LteWUHoGKS8U3tKSOinQfY8cSvTWZbI6fP8Ac7m3HiciIcSehmCC2lqrz8wu6LlqDXWldH0v2scXKD` && - `23+2/j87hBjDcArM4ItesUKMtLF8MU22wy+WDal+ZmBv7SPOs+CZShf0+V9tMN40psWFk3bRQv3QS8AcVtV2q5uvaFZa59N5TaF2+eiZh1JR5ly4lpoVWbeWh94vgaMj2RqBRmzWfIcDnmo8Kbry1n+yE2BQGA+uWhexhzK4SOiVX9dSwOMUNilIG92AWpAQE0kBFjau2nJOem2yHXrMNhZewiYUw6YTXcpWVeQaL/ANR3t1QTnC+ixV` && - `ZsMtVYg7+b9ZfxYrYN6PvXrNn/APg/aX8juU34iicG9JQfxmohAobr7Bzi4vozRSLwErDhWTmMxLWKI4dqveuJamYVLw4fF+8FHZWfPdh7XL03Id1/9RuFHSZv2/3Fn2Kuza5sO4nb54Dz28Ht8Q4rRBrfZ80YhB+im0ymb1DXOYubI0LWBy/Bp3C9lpIJlkwMOLyxLPb7Xa2re96eYKYeRSDeas1nPDtRVLQwxbggLFAU8K0Y8QEIy9` && - `p8mhzL93pYhqY3ARrIvWvRxmJl0CttMIGY3Xri6PoEALBsLpr2Vz1zLLc2BuvBb63djcvRajk/XK45C0usF5iPhPNED7t50fJA3vozZNI5c6vBnoVCBfAJnJ5F0brUM5Cxy/qd1MeB6LfC3t5JZhtCIrpY+7NFUE444Jj19oxdDBQHmyj6RKOQUe6D8nnXI9T1dz63LhwpJC94XJu97hyrtHCdruPZJgeL9wG7whrDRagFBZe3VpoT5q` && - `KaQoc8I/vbQRdBS81hx4AD2hpzwIZ/b2lgnXj1fSBa+a9d6gSwoHxK/aXeaByOacXiaGD5CIPhE3xmZStMwed/3fBDACrKFZi+iha6hTbNZPPKfmvbQroe7zj198gQeG4prPJFuvdGQCHQM0L5BYzr2LEfDUsp7iksrZ5Y8v8AV5CVhgAKX2rzOeNF1PO3A84caujMFQRZNtm2h8B5+rsb0OjK+XIHm3FSt8QOAgxcvVEi79ojfUX4we` && - `p6YxDBAUAoCDSvQUfS2qv67qrCMv5H93mEYoHk8HzBOoI+iUUZgMwvAG1LPHdHxGfnQ/Eo6p7ttr0U3DeDsNJEXA4L1j5jiodgc8sV4MmM5iWGkVHXLxkw9kDmrvF6ZzDq4mB8s51l195sEhVf33l+FHZCxzNah0hcO5j0lK1g9l9DKXd0NJRXqVXiYZa0GohTbnF95lBaYBUw1QuzCmHe84uMpUuWG25sA9AjeizeQEzN5c2y+OOcN1` && - `m4SA3W0+HqdPmrC4BpOgiVbHrR4+tDOssu2cKVd09ZelZmGkWEZKWMNlQVUBVYLauvG4fsASpExR95d+gAVVgWlZxMYG7Bpm19y+mPKFUkptZSqVosSai0mg9EL4cen95nNd6HZPHmWCfkGeLM3fn98pR9LNzYzb7gP5TGN24NGL/b4JW2HEUWtr9+TzAv4SoD3b+0CC+R5etl/E05mbDHgrj3ZeXhxW/BM7bstXGPTPd6cNzWMvNNfb` && - `+/vMe9RPtCdmpm381WIDfOG2WojFYsOfKuvXzMP2fyFW3kAr9ksUrGnzKLPV1PwV/eyqA0pw5XBUxuuRoMPNdG71FAsqKLvBBiYKN4Xhp07pdJdMzVbFYAPQrNrZCF1Hb9DwtaKAlFBBbX3BfR7talF8y6XmP0DlqUUi2DCMPjYWJVg65HyXiyNd3TBnVH0JQjSTa/plhzd6IMywnNDuaMYKMR7vLCfQ1hjOuJQGQx/THx92mYtQnUtU` && - `0+YiShesn4tfaYk10drc+Rn6H95jqwJWVPzCkO1tLW8basgwLF7i65+0sht9iH2CcXlC0euP571uh48AzTq+/9bq4Rb7Fb35xN0Hx37foVBxeT/wAl1L9yLPUmdgmoEFBhNcP/AKjyuBxaCMYJ5pfzOCPfkDnhbDHiLB4RS6nGPqb4i/3zMoNg2ULmg/KFyR5FKkFOhk3vUI2Oqj1QV7Pz9ajSJTSGu0b9u4TMCgFAfS4QfoVanBFjC9` && - `5tRHpkfZGiMHDW/wB4aQQsTSfoCZrNu1ZPJWvXxCeikORhjcKGDI5uZUdhfJ36/OctiITawAp2+bVf2ZstnEbxY/JWNvdA8ZYvMqMGm2QEFAu8yjQU2u66QKVv3rEADiOTqlTikdlmSWkIC7pJwDwvP6FcjGA+g6z9kTutJVtzjjfxNftlGHDUs7At4a8YqWHoUVUdYKyylwMZ1nnfHcrJ0XOuX1wm3ZDx+zIk2GacqaUTfLHK+sAAx0` && - `XeRjnR6m4KB19XIZyFnOb021RnzBGVzTv/AB4l/W/otDSJ0QYABCwqmX2RmrGyIgsgaWC12DvxmO/rgu1zqxx5iI60AoJr26iu5knKne2GveqgF2xEchttBf5haKS/orH8wrqe+jX7Tn4VcMvSFPamVNKoYyXvAGkypf0goeokN+nQ99y1nmVjBaZ5Z/l89R1wAfoyegjJdBvcOgrLFwdVq9e0ZEGujK0H7PiVprljH2OHn53D18S++p` && - `xH6woDS0zNcQENl0KukVe8ZxAEBfRt1+xCoIK8C99ITSyuvZ+WO3KM+n/v6LwT5CAlHcLrkfeBQCrXL+mt7och5nIOdy+Dkl4i2pbGRoywyLoUYQi5hZza2TkbX8pa7+pENtkO79R+ONcQNKk5VjbIMXh37PzRzObiAb8syD2b0fxF2yQ3VqOvwSaCoe5YPDlzKhUh9k1NMVoDLhcsjAUKNmGJ6n1gvJAFkQ6Bo4FfdEd2bY53S8uQSu` && - `YCtRXgpT7xUVxFKvXH2GHBeoLP2iGrPP8AtKC2tBl/M4FmirY69qBM1n+N+JjABSJuA7Qa8lXHx+POHdpj0AAPhjB+XxKCuXxDNBhTDVdjRpyKYPpGOkya+1gmzfw5Vx4xZxdcYA7LDLUeO1VqyZ6IlsyGoOx8ef8AYS33RZuX+CC1UaGKcP2x/T9VQpZPWIhQ1hrUzudHsx7wLuXILVdDgeH7ZJXR9UHnKC6t4PoLHMszHyDGVVyYd2` && - `daR0u8t1x8QtasbDBz/faDGABW0h933j2qRpM2gL+YmKI8AH8Onwso7ZndHn0pNYTBL60IW5MPTg8zlYAtnBpzjveDDmOdxW89P98mJSQ3p1zYAt68GKjIRmkZj6MdhhZ3G7hyiLq7l4exiN4DFD21KtwxzDqGwM4uQ5t4MZrrM34WaeJlQYtUu6K1g2tehlj2sOSOVslVVPfl9YCnIuAp6Bfy46+hNh33u/JgPyjmYA8ytLj+tQLGsD` && - `WLP8ZjfTaq5sNrBx3Lv0qupdOVPDmCoHwpud5Kxp0R1donqOw32lQKFaxt9r+jMGnH+Th+6W4sFd/Te9xuBAp0iNHqQMCUEBVpEswgNXbh9twneAFxYlPGnsy0V+qLt9u649rhfakMxJpcVRk0wbOT2/vHMUFD269oLZFVZRpq8XhzGjlVN45evBvzAViqDyS9GE84tb0XTyjxO2eYXkjW1XpZTppFrZkT3bFlSZSsMpau2Ap7M2ddBK` && - `SJLEa3eKbhCszlW6Xor0Ikke2o8l4/MampQqR97fvUr7zVqCQuOFvhuVcAKFUXeTA1m9Xrceygh0qco9U92FGAQhBoDsK/cZUgFfKIuFbcGb4KrNhwS24wRCbC7VmjQ8Fte7tVK5yKoqlZ9RX63WlSKr7794TY3Kwz6QG0xZlmAjq2bfTNVzANBT6oX5icIeCvzLFLYtWqku7rUBzO0W8m6uvceDT2iZrUgCAyVSX1MZhpXAHl4111L1` && - `9eAE04vP2uFOIurGFFoulaxORCrBBmlqDrTXaMqfPmHNqlpp8fnMRu3uLU5bPkb5KIsNgagaS77j7R3TF3p7MF794Ii90A8MSyocRAzGw6V3RHw3x6U+SGVWNPewt0q0ccsfTCdowHmIjgOEeYAFbkMjGN5A+0TXQF2X5fCAbWUhlY/YS1UUNPbatr7vrCKCOysSlVxGkolLox+g3LJQSwy8vCWryS9WP2I+BhxKGX1hS14gNiTcGPyj` && - `ECAFVbl3+zDKcADS6xz9j4lp75qror6jITHa5Ss+i/W+aaZPBZv4gPgQVa0cyt19LoHDdHzHieCIByGzs45PQuVkdW7L8l3s41NDPgeHh8cnvXWiip9UGqhxTSCzrnf8REpk28Pf8AM3erVdxqmVao+wQvF7o8S2cOnvkK+27OSiaU0Guof3vUtBTDbeXEbVl1Vq6t1dW+ZYtWWLautgPRgCYsqLYB9LpYUXLnIfQkg21A5VhhkfBmDL` && - `ghIV9OZRmWii6zWnTUvVq3Kn2qiR9I7XgAKNQweU5IJcIoiFNIgtgkFfQsTOZDyrxuKNVe6y+UPFr+i/VbWgVBnxLu4EWXHSaSQejLcYblhzCrcAxpULTLdscTCRCmQd/g+I/xeAY+ZZbTvuvD/P71YZqnOSo8J3dBMNvU8i7rmO1Q3a/jsmUFX8ePSFGW60uK/ZXMS4dA0wy7jxgDp61x43klbZSK/wCn7QwgUabGuYhTOzbmFe1X/a` && - `YRRWjz/EdfuIMGPmDT6ODybeVCCOI4+AMzBa8GNtF0tuok0rWvBjl8r+2LLgUMiAXVSGd4wYpuqlnJSKCH6Avau6v7Fw/AubdjCCgw7igvaPRd/TN4l5uUbICK6gaqG7YmEtFLalL4A/pXOImlHIN/Pye49Q5nFh/GviAKysFOK/iULxCqbejN8uKJSqtUAm9VHdagjH5+lTN6MZLbbDD6wFvs1/5j0gWWtj1M+w/TeQN+wrhlp7hgr2` && - `5+08pjcPBfLa6feNcOrhZRUTdoZcmG6Vc0anZuWtIlKMKLz9pewipBZhRxiZUMUEMXx7tfD3WDvDXkdnzKhd5YVtWVfPtiiFZOGoC+kNbq4FlUMDWLOd3hu9zf0EttBz81wrXEugoKmXsjm4zFsefoYDSUmKSCbD4lvj6LlifBziAI71XoQIMcNyLantVf0tJrHB6babBooxriZ2AdXrKplSGDiX6SKWRsQm6jz3GA+sEm2XAjl5wbYF` && - `Ra9phEl7Yo261iOUsE0ItaRxPWVbOyBOrjGtzXSquBuj7fFRZ+nAy0OIyIXi+5gV20Xw20UeOfSxoOAhQREDRw0+nT/fQFDGrOSuXPMG0FdJ+fJ/djDvIW2U1URTklfhAtLEQBnymEyF8/gy5qDQ0FQo9DZ8W4g0oWnIcuemrZeh4vXsNPrxxXpdspMd1amPXJrzHCyELyMvFRbgbkJdLKYfTmFNQKPopRghsfoI2XKJj7729oCUY19R` && - `teX5dQOQDKFW/qN8SejhM/3MukrEL3X4M34XUaZthk7HyNkBJFhLeoPJfulqpctnsfKVDCGlUZldnVoy67QH45CnrEtEdj5+g2uyeQY6/ZLHBNUuFIK9iKeAw+z2yrcRJiPaZ3LPAihsajFwFT1xmurgd6OxGIgi6X2Vxz48xWBxzodRPIVYb6n7e1JhlL3O7yGzl9qca1Td89gC06Wd/ZAbvb1Gd+pye/djYo5ybPZbY+5hKKGXsGhv` && - `k/1plNmgqM0kUrlDetVM1nWosMnnnYpjPoesThfcrz2OfTvcM6RIAspWX5JdvbD7yYp3wmB4x92DvQKSxwNMw0GQJLsvasLBnDR+u6sUkHpUP977ELPbR2X5JSq1dVrs/A+7Gfo5vDGTgemJr33bt3CCA73LOTsgDUyUq6U9/f2lHBBwwiu/ouIC8QTKSnuGycF1/g/vcSwGoIqZgL3Fz9GT6OmY+7HmaNxKtYplq+qZqCioed/wAspI` && - `nDHZIC7e5tZ9gR/aJNetxBjvFq42mfRyBqisfH0N2t7ll5/Y1gslE7kQjBu/HuphEd2Uv3eB+eIAy6GkXryx998xXzwO/Hsf4bVNFuX9z+4pAX5fzo/u/W5bca/wBuE7l1TE3Ds6/rFMs2GCOW6Xq35ZRcDwGV+TWWXTMsIHDFS7AgJ71RBQkwBbU1/aYrDG1ncZS48dKUeYueU4NUv8JBcIQFW/o4HMyY1wRsxbpxOQlk2pjRmUJ2xB` && - `FLLFs7ySMJl8+X+5wW+MS7yxZ6VXpv9G0B/wAfIYf9hjs/DTCygMuj8HjZnc5aEPVbYetU5wYYIsHL3CLHsXfrE7DupVxRqlcY8Vy+fpujiPc+/wBKXlAaYXqUXTF1Qk19eV1+Bbg7bjdbqaTrLmsuOOsxreIpibfS+UwHEUllTlna/tFnkzOkZpCDRFlwKgmb95p3NRxMlBCrm6kOvEvXa00Ckdii/SIOQaRR9RPmbI8LcAGfj/gOgA` && - `NYHYk/3MqsB9pVRC3G+DrxqJURvAvGb/eBUTkE+V/Hl7+ioiApjcuKPFcDoioqoeTuO2YYwYuVV0ysM/Aup84LthWvMW2ZxMxwS7lW/Q5g1Kv3zIgD8wRWHRA4s4fTKxe5KvdS6wAXot47/wCOlmYFXFj4S3ywonquT+tRu4U5mks6Y4vMpqV4KhM/mcCVQ3CrUKMymkBcaqZqDBPvJviQsHcVltrLe/3kD5JmtpsTqABRgP8Akh3UNj` && - `U336/yytFTwlX9GxywaXdWh95iziCo44Jdy8wDARNx/KZLqcpwTNNIZTGZW7jLUEKomRUULKNXzY+8IhBoQDnhdu3/ADBA2FJ4hqC5trxRx6GX6m0emd76DV5ZTsmKVUl1EhawOScxM/RibgLsxSjW11KtQAvtLhkJonSBt7ouJ0Du1P6+sGoAMG67/wCfYeOBWler/RKsXxNj+Az+GyUHpx2CZPZ8PEDLCVywLE40bECOZTUJoOpToQ` && - `P9p0MpU5qgyJ1KA2UqmACndLXacALjZc6/6H0nCn+IVldsV3UKqFS1V74+6c8lTkAlWtPT0+JjyWVdGLy6ILBuHUhIVjiGvrcUsDzDVFIEXLD8nUztAPm3l7FvtMsrwar/AKNBKSyBBrWDoFwwYbIpIhGXWrRXWvEGHu58D31eISIhYjYwRGizBvcRuoCp9WG6i4DB8q9cJyQiFl+KbejzzxGJLYtDFjgauLa1bA9Ojx/0qWUzLoDGHu` && - `fxFULypP2hNzEkjHa34ROoxZSxJd2LDxkBhrYLYra9Ba+YvBGafqc8vHBbPRxvHqbILNaiwhuFG0l7whR734mj27WPVMV4N90pEeqcdry/t7/9dbnqtPXiN1vLVXFILWuvkWbwoYWJRAaX/qbuTDhmABRg/wDzp//aAAwDAQACAAMAAAAQ88888888884ARDDrK8888888888888888880l3isemBc88888888888888YEoHAl0dmE+D` && - `8888d8888888PB1yRAXh1lwOj888Z88888888ar7wfQUk2OHdPc8HEK8888884knBHIEl6AFnQYIbS5l8888888bRBVmcz7gIxM0BJYrDAh/kZHim5zdpaN98q/wBvMMOMD+NfBn8fZHBL+BHCY74KX+/A/wCSfhpE/JaV7lpSiMuvrihglLLaLDV0o5LutM4RowRmdqbpx7redMzsyb8KNWDawmdLc4Ae96L14MmXi4iMOgLJZUPBiI` && - `9OCrJIWKKUm4x5ZdfAYe4/oL7TN3JpzazTyFNiWYhI5qLuWm8fBJ8PLy/Hzxn5b7qnEafoBe+cpoqTPsOHzzxZJGasV+jjUqgyB+r57yzzzzzzzzxqFIAobBOXJbhGmLzzzzzzzzzzzDf3w4J9lpNrunzzzzzzzzzzzzzxjfSdgwQhb3zzzzzzzzzzzzzzzzwB8VbPPfXzzzzzzzzzzzzzzzzzzzzzHDzzzzzzzzzzzzzzzzzzzzzzzz` && - `zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/8QAKhEBAAICAAQFBAMBAQAAAAAAAQARITEQQVFhMIGR4fBxobHRIEDBYPH/2gAIAQMBAT8Q8PsRChEF7QbDPUVZ/pu6IihDOs3E7DLuVLEDOqF1llsyoSvHqIqB9TKtuoEYDMOswspO3rK24RW38bjejwCrzAZNQfKWNRhjRglSy50JtMxQtJjDH8` && - `MgOJTz4DCOcJrb1YATcqb3KJzonSJMEcN661GscKYhvN+8214GUKmJiEscpcbjA/aoUcjv2lh1QHLWr6sAwXByRBdxhTGY0dY4xru79OUAm1fBbN4IfGEq1LLjiIXhAxOEBhEjiN1/H1i9pfQgfVE5RKaM5+coBrbro8vadAfT9somfV395glFsRElyNMMFbuGBKvrKDUVBwfs/Tv2nLS5V6oKMxJykabJqEUyhCcQFD/YkrtyZf5MwU` && - `MZhb5zVqjCxDB6f5Fdq+1SkrA7YjZUIF2ixmC20jls1BRjitLfrGLjwqqIGMEx3CpeMwG6ZhMhakpC61wCKPtNcAohH8nzv34OSDTAWouKnnJelyiWDDUE2lsGCAc4lBLUyztByztBLcIcRzgGbeFSuk0z581CynThpVBMGoGkzbamF6GGYuiIJFrMSEAdkolBiIYO8RE3wMkQYm4sMRQJy9oBOCopg5bjSiok7thlGBYdxsvw/wDIiY` && - `R9SWTN+pMjHy5ecbSNdsXpiAOo84AuAUjJtceQfm+AC2W0PK/KBIRQz1OfDUGJSI5wcGWvRqDoh9RGMtToOO8EajQqUS8vKUaqWo8OcYuRlt9OsWUxfSJdcBpfbGHUpxLhTLBg1HOZ+JbuAMTU7lxlL2IrolLkcqnNYgBjibg5x+4q5eDRPclkdh8/MBxo+3twzwyi0xiG4nSJ1ItAjURxAhBh5KwirF07+/AZZUzsY6y94gu2HwY79m` && - `mHZDKBMnzl78EZUsJfBZS41qU5yy5lKplhAxTrnXo7ju7Okpry6cyX6Prj9zAL/AgDoaf3LNGj6MAc7ZAIlwCM1wM7hKlQOAxigC1+EfOV9ayteGQKWQYHXbjWMSgmpcuEGPEY+3tCvvL82+IrcA1lAbVxcS5ympngGITCfT8xH8craqUy57/uZqAtg3XCuFRBtVCAcsYx1f6VoI0uCfPODMFsCOPnfrzgxY4ifu+pMrFRV3/WAwMshn` && - `/l/wD/xAAqEQEAAgECBAYDAQEBAQAAAAABABEhMUFRYXHwEIGRobHBMNHx4SBAYP/aAAgBAgEBPxD8Yhd8obbgwr5IIXCDJHSHiP8A41KYlo7RXmmAzM4AadfSPQ5QTbBK1oOf+RgJbazfzAGPzgdJROsbcxFJliNmGWI4mCIFYqDgs7N1UE5V+dJfWuv+cQLVo/A0Saw1eH0P3Ni36/P9iO2IYXLI9xHGoIaliK+cOwohsa9f+ClVXT` && - `GPWWKLNLzX1fOr/ASGxcYNAdg7tj0S0vUoFkqXUslVLnMZLzmYMTClepxPrusQKJXgK8MYD8mhfevlEv8ABv8AHe8CjhB7y8LTz3leiNR8x775xB3Dh+nv7hqnHDfpyg54jXAN1+pkIQpYji4dou+9XTn+5b1r4RfdwH3wIhnfJp5u/lAygBMHfzKfgu0FuiWQLx/sA/v/AHENHLFleV/kWcwyDwEFG6Pnrxg45R1t+OHvFZnNlYmCNO` && - `jVXMRXnAdq0YM/1jNI8NXz4vVmAVc/0fuWPDQDTXXBy485YQbQX09ZoTKys1s66VLyA4xc1jYy+hKRbxyY68POPDM0xT1cTgnnUOpGvS+PkaHrmyKi+CtNNM6Y9JndoVq2nfFS7Es2hkqKZjW4tjmWa9w0YUDrvvf3Kayt9O84hKdDL3xi9CvPPzAaoUYDGM+7Mq71fADWGMm3PLbw266DZRm7Gn4fbpxtmAqBbN16RUzPOteZSHTaIU` && - `AcLWn1iGH38Rbd31jNyV3UQLhI07w4ECYzylTVlU9eP09I3cRWxNqYhQYl2nMDWjQcId7u/SGsBKW8Vx9fAlpRrgq+fU0/sqVAYsExMkZO2H6PBAF0iY2rfXp075uLX7/3vE7NqHIFW+JmjS33ho2JpQU4v6YsCW8va4QfUTDVa6QzRLyd/uG9KuFOj3rBTcYfPeUodYWg1c8tLg4hb8RHoGY+pRbR1+3dly4ZiEi8p0MJ9xSGj32+BE` && - `6jB8/eIhpC4GsVC8vfMp0aypqWeUoYJsk7eUEu54CwMQLBqH3q6QGjrEWzR7P6gHQz8Yq/7AxGBtqs3aBQ6ptH6Wu/gBcwuEkdedbOefQ4xB1HwRDj9f2KOssRX1O8d6xQnOIc/wAe/iHjpiKbVxJpl6eZp/sXheAoe9noRyWj0f1L9I3wsaAvV38tjzhp4tf3129ZX9TGOp9jH3FcetY4aabw8GLe/WMEFIgMmd105ge3huOmGgvqvp` && - `EikNImeEe7NlHQxr884QjFB0gER6d33wgVGp7/ANxXnKzQ6J8S2AZibDD4hvt997RHE5SmbHfesLLqXRpRuw2Nlf58SwS6zcYxMCUGYoVM6DHlnzeUDDoUX3rzh4jWAuiPQV8m694mNCbJs949oIwnx3w/sQvaKAc7Qvl1gPQ3F5/ao7e29yoNTlEOdYBtZgDSEdHONtJUNpAqy1jPMwxCaCvBKT5YGjwCnOaNVhx7YZSX3sKJnHKuEX` && - `o7XStHz1F5nnBpR4uXJYpt/IITAXKOXbpAVlGceesv2pcySEFLfTzmKBbXvnDYWrE4Ot9KrznBl3WXZKAOSsb06Uaryrcb4HS1R33x8VWLXb26zYhqPfDRjvmUxEaEQusJWuv+TYeNbLr03iSlPgNShu4OiiXVNdnT1gjYr/NJsTV8U+utf7LwNewSqvemUkVxH3xloqGruztjUKxv8rBt5vV6ae0RQLdWsv8Aw7UW9fsc5WUJ6nls8d` && - `ma8g0e+EZYOnt1OUFHJ6ezn0lVFqGiR2JwPiBB4WRKYljCiJBQV6b97Q7iGzYaAviG/wB34I1fhorKYeENFQdbM8+MsVBOIqWossZYlQLgUzJMG5YzLJsy6v6Q2VB+QChc1NuG3fn5S2KaNOKJWJR1mCU1mo8AoWrxTqF/qAQOu2d9PzkUWSnq+lVZ5NfMTNDv085VLA5LgKxKlmJpUeBuBwFGTngc6z0+/wDxOFLiFdLPJHZ/lVBOAv` && - `U8jF+cSoRxKvo5H1GBbVmpWYQpxzH2z6PnNeQuuIae+a0gNB/5l1TKVe/rrCuIf/L/AP/EACsQAQEAAwACAgECBgMBAQEAAAERACExQVFhcYEQkSAwUKGx8EDB0eHxgP/aAAgBAQABPxD/AJH4/R/U5+jn1/R1hXEfwF45oSvnq+riwAdXAZFIBs1rKy3y+fOHTxUdr/bBfUQikBpE4ncsinSeP9MKk/SNmWKevmT/APTCvsQvUhgmhc` && - `f6K4wSsDuRSYKufTg6nekytMdZbUQMUk93lIiGkT1msU6featvqO56+stDMCKzWeINzwTeLuKME2AeL6InqTBzqhZmwWxvVIDxjinVABTaKg8/TyythmQXlV0GJZo1lUSAKKoNCIojmkwi8CCfS79nvJQQUzFBPNwdX+hjde5GWHpEbTWOiBXOQtVkZoUWIYAKybiFhNCdP23hKyir6JFY9t/AFBnO29HAGbaeXBoUE9UT6bmiwUlpCn` && - `uKA3s1G6KQGgSTDzoNjcl4JGUNhRgFVa25O0cFPAONOfWcTCoLYdkNhPTpLiCY2jJqjZgKHBPBnv8ASHeRzHJKFd52HnpXs0kfvK/w8gAKz/fOGneoeP8AnT9NYNrpgBVroA2rrWRIrGommNodAo7ozXtSqnBWFhFQNGwX+6G5xVrIpFaJ3kCFHu8H134cK/vcq6dyVHU3M2u7jrk4iqD8b0TwT++aNgb+MA4RChRKhHYP2Y11hGt4R4` && - `xGIlbQEuBNurpwmS/bmnTUChNpfJhLLQG1p4xCLuxjPDn4x/lACVIQodf7n7n/AAUYJ8QuX5weqBsTT/u8bbVb0E2tahqaEddhcAAZYolBRGCxwUL0hlcLvBq0/wAYty7xsnmJ84bxn25jNxrv1iSUjrJGypCMXG6UWp4wAoH/AEwE/L1wjOk/tnsDhmzy8NifIAXgG6qAirTQwklzxyFXrV9VJfbiJNFlw/kut+sawcd0pXQEUugrr+` && - `fNYrSAq4EUpB2T9+5NuAlsylL0UrKPWA9MLy0IcMZa9BcH4O3i+UD4L64I28AvxR1+8jKjEJO4BaZI6ZJ10zb5GdIUzYG+JhqeHWJLUlHBGgenH2/gYA3rHhp7ca3dzxyCev8As9jpNImVi4EMqSSnV2lZ2ShECjYEriSOeNfxv1jB0lxny/484bXHb37OFjpWpHgPU24dOFtZBQ7Agfz1aRbLy4PZ69ppUApEgKwDEdoe6qhdEeBFKS` && - `9JtMJoW166kMV9tvbiFtLmnmA6T+cS/wB2QFL5MUjH4zcinl8YLwnUzQhq7Mra1/jFTrfgxSR63gRIC8+XHXA6zlvHcLdk3XnGkIb1W37yVAlixRNZiLTTzAjDVCoOtFmUhBGwSAmyMMvmWfY/xo5wneRuRdOWhEDAacie2WTbwR8YhkVyNo6T+eodcesDgA6GfVq3ruAS+pRLRp1UXmrkQE8XSiAKKWFTTWIMRzeVe/I9wj8YHrFrYM` && - `/9M1g9WvB/1kxbzZhmwxN9mNAtXZ794IGhtfLjkSZsXmKjV/OCok8vnHAYO/vAlOg5hiPF0HnAp6c5jsc+nMVegdVhizKay77GUoC3CTDU+gFaCxDnlt9E84fH8KXgsJNpLIABuvgY4lDFXzQSCQwTBaT2eMhML5ZSt/nmccGeIJWpFJRfePA6qhZUpAQRHaEDEwjXRAAEvtNhh4ZS4zpPxlxu5DH2TEM1O4UNJuHkxEdmkxjSq49ZKb` && - `qbmKOKPJ/vcuk+9f73GU6u8gg7Z+2O+g2+8frPjJ21vCIEDrN+UsyaT3HnIFUcHlwcoKV+MTWTvr6wr5JLUFAIUcFDZBbNAk9GKqsikqVVVzYlBR28fwc6pvJI+AFx2HQQX0CCwupSc1On1UgwFXrVWvVs6BIBZp3jUXNQpQaCnfmfjx3mLeCgPg/n8wArkQm4a2QBQtBwKLchpBcaoTwMRKNPTQAjZUuXUX2Dl8BIhTiacip/+oMkFt` && - `pJjoSXjwnvNSdM6wgHu4RS0tEH57MWFgD0o07CoJvDV89Np0iZLw2LrL1GpKcWSrvlducNq/3/APmQ5YjZZC4MoVOjGcNIE03RpTms6tAZl3WuHy5OlfM/xjPMF6dYzAOPrVbTy/GAgQcBtzduzSgej/fGdEAQIRdlCyWh4KskkAVJvoeHX3MWlx5y5eXwMwvsbhUClFzRX6WSGniShOPOxNGol9KXlRbF1KYvlqKvAMKhHcIAzSNxx1` && - `XadzoAEAMjoDP7ZCCw/nKAqwMVxGtDhRu4iLeS/wBKAQ7hKIqq2iiyKX+zDwDQfa1JXVepMTKqaTrC0s2r8YWOg0Md+vOGctjciIeUs+zNi/wh7V8SbU5gVw0s+y4NKQeOpeQcqw2WPmihGjFT+sFOhFaDmKHu514PuqMUoOhsQstHOhKoYlWYKjO2meYZQVEGjSgIjaFMn61Ra1IE2UXETSQSQouol1FDNY1lZoJsxbV3+gVBtQ/7yI` && - `Ww18sYsV8DkSh5nuVb791wLIpoV2uAah43MHb5GSoAEmwKeEilbtoSiQCeygojC5GmwbDy76yO2JEm0OmNCECjaCNIiHibSaBLKJHAQgUiahhjpqhdEXH8Md0ll6pUUoMxqQQbtiwYMgchEabK4I6mj0S2iWAkBUAkqb/GBFF/nPMLVSs3sruRQmUY1vjgmGmNkqMayqIFFQ1rVKtbVxSs2SwI8Hyy8ccAv8TL5lU+wywj4SW3UtiHkV` && - `aMbcjECALxR+XlC2EnefT2aN66eT4+MM6aIt0KNR+TfzlEGQOmgXVNwXVZm3UCIoeUdZp/S3SYYUlLVeH3hs4jtL4pSnUWXDmqV4BUBkIKlfNdoB+7I50PrBQRb7SlQxdmrKuFtnqiiPaugcfdPz2Be1QUEQiF+MTxeY7E0HhJQ6Ku0VrSykniwtk8sDTCZAyHyNpqTBqntFmUjvILZjYNcqI8I7hA83g5Wn2360dYeHSezJ/XE7ognQ` && - `qtn9sOhhvlKABIyaWzggdCGwUBHFEJg2uP+y6qK75VW2FYGPWRUlCmg0HEYUeHBiEAQvRpsmXCKZGCGg05rmna4xLe4IN7dVUaIBYKOvPMAFjyuj+cIk3WJsKCWLCyNFEMQU3mjTSIUAmxCqIUkgDQAABzDAK6wiUeXernMS2KQW3dBS1Bi4BoCrdgNgCqeAV5jEpWqIIQVDaSHTrmOdk4xg00AaPO+NFGPxlMv9xX5ucMG1cFxI2thH` && - `QVAwnGjqg6bhAEdCbIbNjjecWP4wPFxW5vCuI8TCPC4x8zoCrm0tETbJ31MaIvo/FkT558/jCDjO8FKbdYJA0ZYvIQI9uAAXbBoYKKk0awc1j1wzZgfEIg+wKF4XCSuMAro9A6ZMA1V4bFFkEa4aAIQ4XG45gYkSpJVm14StALAW84Wwf2hu1UKtiak68DO+8RtyJm+qBgENjUUoVAU5ECpjN6UIkjrL5IqCgsNCgsFrb7/wB+sfVFW5` && - `45nj9d4TL4z2s/Q+MWbUDC7y4jTBbhCjNXaTlF14rh8nCjiiti2bZNNw28iEWIKdDQVfGaWCjcUNPkjhWAKttREQDTaAkGbY1NEqkTcBtpalIVuARI2IKhzVIIXWHAgxnSiij5M0WDFJ0J6mzFAgXOFFsBp48nvIyUFrD0AXQuEoFk2xSJAlGjYN0oCgxA8tAeNqgx2WNKASvP0uhwXG4UPGDY/bOt6wmhRFSp/wCYWz8F5N6X/fObMb` && - `Utnwue5uVmWBew/YxxCpsoBIIFERRTwYxbUCyS99mFpXaCOEFZjGlKX1pHfvDuxzte4k+02gbQZC46YBhm6qwUDGHAsGrsUPdGqrTHvWzpgTtUc1oAADDOjDCfMg/D6yepA2bsleNx3AhPJjeJSUVtLhC6RwIBNQ1NZrATcJACABwDx+uvLiw7TrXQ7rHguCnXwLp9jXpzjjRmUEIaUIgWG2CoET2OQ6Z9U0G9aTe+4xhNX6chOVR3qM` && - `9iCJABE+F8fOrkjYVePTr9/SYobbD0SUQC9ukY6raKBLRN5ND5cWOd8eQhfsGxAMxcFsa010IocdvXZGsuW61i0TdNDpDn5FaqCDcBiIhwPcZAFYAjEINF5gi0rpuSTcsVHW3piGkWCW2foLs8wFUqljumgaFJF1RbxokBD4DuQQlAtdMIbKoU2W+MN4kgskIkGWr7843hZ0kwGUy7Pyy9UhqktWhLoKb3tzSiQgCaTZA61b6KglEGw0` && - `CYb0tBU8Z7GFY4bkz/AFG8vnEemz5cE1r095LFjJ2nNQvBOpBSc8N6oiHYfAi1xkrFwzsaTISimLhRHeq0IQ2uiCjgihUojTFAaVTE24FQrHrLhT2RNAbsixx3cbcOwzb0PFPnw4HIywSczXAOoUU3et+snCbOU7CJ5fnHBcXUKw5RFPHKBKmDz6N0SoPuqagbDlho5DziYNJG/vjzAVmPoJBW4UkU/QQ7MqVi4wSPANt5RaggiopbTB` && - `2vZO4VXqnYSReqhAFDQrOBGL0aiEltOmMm3Uz2a36lQa6MUoDDIKbDfATBYXT4XYGo7Fg9TKvnA3njY7Q21Tmk4ZSKPEiNtNCQkDmEViSh9v3C5zACWoAZEWBfD0wtcw1moFc+N0jvAwOJAmQJCBKoRWtr3JU1EN2IjgFB3EXUCxCF6qoAKIRovzfyBNDQLBQLVVJWHeoRRbwum0pudbenGqMSkrFLDyHkx4oA2kDoDQfO3lXC4o4mzc` && - `/uv9cqD90JNLNSUCu24+XiiOgCIJAjsJhjCe5OgDj00EqkCRG8PBjaCsL4rPbgPHKOAU9mbYJ4yS/s4RDXHBsr59YiqQgSjZdkfCmazLXqFgnbujmzCopAfTMJuIyLiExWqkkJaPbRJAwZPxJIEgdIjvD72VIn3hTCzbKmBTOw0AkaK8HLDxgklo3J1QDINRXRTxeE/Ls2GmXYHyv0eYo3ziiEIeOHArZEwweAKATEE/OOB+2fMBDGpi` && - `rrDm0bm8knZQoghjdAveNBEADgHjKZshlWsDRty3znQc9XLh4yZMTGmrwblaO90QAotZmWKgWDiexwSAXziCXfgxztxSsDRh+4un0Q8eFrABVAUAxRWQD4QNdpUKCAAMyGC4SlFtlsBGDshmUqooj5ExBmimzaziLp101emQoORo0bsgrQotARimgDEHTHLJORkOLqpdjPk7cq+djr+2+ksPfrBxRgHqK6MI6C+QKJCChgravTQCvge8` && - `yiSvZxxAeXLPg49sJSl3cmIAo9YdV6M8JGCHWWvg6/BoXWBDTgbha8Mk6pWu8CXh0nneHNhiMCZjuYCNihKbPcWiXTaK+fJpzYaFCg+EKwEjerHKDSI+THWIuqgD7FSqXgfFv7yalCBYgUDBC76EK4FFTcA40O03JoFNQAgEUVi8Rf0ssJdiiOo1Ca0GC/PnfX3kSI+DANnXEBfdwGeecHWWJgi2JlIrIMLCzW9YOJAZ4oLBPZ2shAln` && - `k/RcH++KraUAFR5+sT7KJ4NIci+FOsEXgKqAHVcQRkHW4iaT5xXQ7jwr3FFXphCAnylrvwCJk5ZpdwPs1Q8opqKoWMj4p9/b9sWrl81bsh8DxZuXLg7EZmDsVTdGDrHCLJTHVL3aXX0HVBDLtevGPuFDgfyaHzcHVSXDodov8AJHH5Pxk2XA61qB8ZZGsRuko6Ztq63FPlxYxbCHBigKgpYau5l+AB/kIqUTohASCJUsgQMegYD0azZE` && - `iuADQpk4rW2nfN8Z3KD+4BQ+XXzhFJFNmbdgarncsQLl8ESCFKbaTAAARRIog2dKBvtpS4AQa07PzzHzGNN2UE7VehLOmJ4YiFMfiujIoCzYHRMvpiq5hPm+sCSEh2GB+vL8Y4tfR2IIu4APDBtukIMTcdQgKEjdWScKL2+f0W4YgEVVdAG7hDLzLI2HSC6VVogHS+W8OwxUp4csfL3ATutZfqb3gzs64CInkRmCIZcUAWULsK8AsHG9` && - `TcCavUW/Pxg0uKWRRGI+8po1e4LMSKVaghWJU8sh5mPEQ2VU8BWFBIKFbDsIiADYOhCFC6O8D/AOSIvELvzWunWk4HjdyrAsCV2QzAoiTVaa/Bd8I7MhoLSyCD3x/vhF5OKycVVZZX1hF6BKQk0ER+RMbm+cM0cmxPZ7xeZ7k2wKJ0jWdoLM2XMArUNIUqyuj8YNt7eDwWJpggaCxmfnz6dGvJILNaHBRy74QgWoAWqoAK8x0lEEq06U` && - `RBUOwhUD+BjUKzFNPhV9e/8Oh6GDXVIc+LvXl3hoGIt5PPk+c6CQ7HgVh3gKqbXEPEdFTpOwSgXps2oCA0jVK6qLPtwx1ckTkrYEaIIfJippYKSISaS+HWvgwWCtb2Fi7DnDvujg1vqMyDfkBP7q/sZfJGuEFDwcA9HS2hjPSm1tiEavVmu5crjZg0VldpQgQtGDv4aCNAGgDxnCYwYp3KPdZ4PWMLtiNCfeSNO3hFnoPycLAcDsbTUN` && - `O7oTeApEtUFEfInnD9RLJGrdPsQvsPTGcJJlAonwmMoLDFK0BQHSI4w2ZsB127QWbqDwxgw+O4IILKWERVFCaQAbMBvAzbPPcYlgvLbsN4tkC0EHgHMBFSrWZi8CgzQxoIoQV3BoTjNawYQXd94YHcmA/u7hE3QnUGlKb5T7M83kzxEvnY4mXUU8T3P4GTDhARFJbS8EMtYOxqiY6lKVCslLpF2mjOCGlGyUH7PeHnqOa1dHgXzfvJU1` && - `6SX5UfpJlOneg3Pj4PR4MQWCDh3JWqQG2x84oxNZGZjyQL4H5yVwbm12NBG0JNpkP0hACKqLpUBCgKSYkhkoPxooQ2AJE+E/TdML7A4kKgUVVgi1CFCJth9s8DgNB8qtTFU/TTFri4UaUN5syhS9MJ2E7mII70+MtpiWh7dPhPCcTwiYj1+xULfIImhsBBM8mH6MWCPJdjZNx4+cMGwkEIAGgPWJGfNH/mOPl6wJ17RTVJS+BfOBPkcw` && - `IhIXB/kFiEqVddtBZbV1dejFLkG140+n9zDCMwnhJT8mb/AA1/AVdNNLLMTVDzDQw+H5y4GuPx84UOhcQLoXfAiqFcBv2nAe/+e0CKru1rSIFIoOv4l4/oUEHvb8HzkRkzc+fgx2dvYKaRTi26TrZmnP4Nhb+h/D1hpQSzIRvAUIGbAJciHUMNi6e4Lr04LRrztMNpxPqWDy+jKj0GFVTwF6cToxeuKhGRT7YFfAHjEMI0FKMntHy184` && - `EmPaiuR1fB+cV2mxkF1/vR/BD+4BaPhVrwOjCMqIwr8sh+xjl1o/tj+jqgSkqSH2dwU2GtuH1iYSvE6ZcgKVB0/Dr98BMiKCwO8wAD5LyZbUo6Umw0B9ZBdr85c3grhgQQggItEeugXOgqbQ+cJ3G+jBaa+0nwOgnSKRIcb7HeSqQVR0is/tP2x/DdBhrSFDSb8PmEzOg4kSkRilEcYafgCC3REDaszj5ZyeKBRSIiJTmEnZQUeYpQgH` && - `KoyyPDhcWdkDxu8UiheLKjBpCZpbRV4t87EUJr1qjWsjLM/eRtQfbz0Zmm7AEA21BuTyFTVEhQwg/Iof7ZvIQCD49cUx4CEnhQB9sMODKzybQ0UOWCyu7hAU75qiGCJNujyxDg45AmxPJmsOcqRAhqIUfDO4xaIG76mqgfESEIYpW8oRX0AFWmIufPRKh0igUh1DpGQ/s5AQkFRwelp7EwehkO0GsVcFSUBguVFoNdvbmn4qZa9GWBUo` && - `XpJBBsTBd4gH9G7F+Ty+mV1kbp9hiztshXhWtP0B+jsPj9POSUeYHeKIBQ/wAZvlQ2qmmefrNfVBShQJu4aVttyAQACML1zZqtFGVRs1P0hNsyz7ViJNArBVA+UyJ6DvbmyxThgbej1kJ3JoSiE6CfYdQTmqtC8kV84+t2Q0sUGukEVFDDDNplorRzSn2wDwRCQoeGi+smityiiWbgpEUlLcgIpxSGEFFIRKlGBr6D2AvSJKLX78qUJK` && - `kU6bADgVUeAFDB+nFIUsRooiIoWEHRgmBxAmcIgECrniCDxH14xSJgwS/ebWtLR/KZxg0s/IQr8Z5RGUT4DGNibsiunZGz2J8ORF7vDjoJIRTiNi72AfC17nnEgMgAwGqAW7BQBEcxHVNZ+4aV4DiBY2AEAGGtilEbDm2rmoKI1XhIhSG77AwTalSEB24ADr8t5f5mAmJN6ROPnEdgpkMHEKEFWvGMxr1McQAResbtjf1Y6TXqeWiiAM` && - `azgS1LtR0WBKG74em9mu+dEKrNuBl/SGoQqTRuvGnCeLsPEguP0BQogGk3Y4X0RJQXsVpDb43gpVJmigPxxxDpen4wagxPgEpag34wbCwBahgoYJRYOPQvX60N0gl3b+Xp8XCIfQGWxj7cIa0GArfPM9pqQQ8XYjHyMrScKbTWfLaU+gjO5o0INy1srYRE2vca8QtddFoEkEkOY3a7FLlEvNN3jQilqjLVhLSUV4AalifbNAH3miSRBt` && - `SMEqCCxg418slIl1mQEHUMD5TAAABoKqCmqDhytkKGBKLWaJuAXHiNDFfKaqvpThZhxCiXvR0moeTxfHDcF0FBKPKI79nvCfNsVvQalUACqgZ5cELgFGQW5EC4IdCgQFGICFSg2PQ+Qe4CGgCCLwEEMDJdwwWrRQEFPBUGjzjRKHjCOjWUH8DOxMAGsHlS4BGqmrjgXEm+0FYKTgaQoHniHaJ2DTN3n6MRZXfKz5+cAJdt1goKh84Aim` && - `McoEH6aSfUNYO7VlAD6C5p3ToAqVoD0BgQNBhfQFS3oImZqV6FwFlEEtahnBcBu6waWo3hIaDjDYp67kWl1EEVeHesouTFAig02gfSCVgCmzxcf0ABBbQIa/OgfbkwwV/e2MVPpMuI+i5vXlHDKhePHBXXE8QRXYjRgYhEKaGLiE0KkRFIgb1JkKnJEiCao2G4vBAVRTBAIE1QBYzeHsxahBFQ2gi7HDBP0FkPI6T5MpqD7DjCarVyHS` && - `wwnhG15qHOmMm8QLeNgaIu5hkgswKBNIiI4BsbsAOkTIkZUwYLFiAXZ8jFmiCkLNoCJyQ8jwSABbRMDwAQEBh7FWrG8oKKhUF0aIGCAh5zyjwsw4cwCi0Ljjp5bFVOuh5hKxmoAVapZisA8THf2VlTd86Pxk3XITjcJQ2FWvz/AHx3UJoXCOx2GF8DxlmzNu5DpqQMmD2xJ6H1gtHe7ZARUSuzN0RQbQPAVKznv9Hm8B0YfPjCNEF3XN` && - `gIEd/okTwVtdUEALqqlRsTi9GAK1Vm3DYJgiUbmzp6TPagU/A7n2NWmYpAWIkRDErvD3r+GQDxJrJQvGMAq9JHlfOO+tFODFlAZpfOsTe+v4wCSJe5qyieYvjXj434ehh9BE9jlXyft5NTCaBSlS1UCatftXq5USC4RzRfY2/+4pHAUm8uETFAWALg5oWO7PHmSHDLhwBfYBGlEQKhdMh0g9ydEXSy8cDCQJMoNjaXBbLcU0Ngb4vzk8` && - `gsjbgGhSBAs8tkiNfjBjrHcdBmlQQAKqsM0lBKwp8MU/ZchyB58ZFqp7c0BYGjsOzEoZK3eUmwJsEbCDXvYwwdheH10i4XOx4J6fdxKUKXbd+8L1nRDZgsVdxxo/EOO0z0txesd4wul2SCI0Cqkg2GGAHBsC5DQQypL8fqUBOhQUSKuk+fTGCdSjaf+nMVVvc+DFyqqw1BkCdNdzlBdYLal99yfaziFfeUzZI7tgbdu33gEtNFAQPYtD` && - `4esWgFG1+yEsU5S0RiPD2j0C3eENLTxTChqIFEfCOx9jE85YTncepxP3xGxcKyesdQOr7N8p3x3EA9ieYPK10EZ5iCINhvRGR6T2qeqzWsaE/CZUPRbdHlYjnXtHsG7zyeV1A84AgIE+xroYLsIoKEpspgPaFGOqLQxcVfh4ICCg1a1ABbDNK2qKGIW0ehS2PTAuaAbtw0J9naw0OdTqwewM3FDW26wuks9vtrVEhaDw3NkbCuL4vWj8` && - `wAioy2jGmoFw8iaHYygR8gcTEWUJjhUobmjmngjgPa4wENA5THgScoD0Mh1yV3JX370ZRR0ut/8zVViHjByoHeCEXnXtwEZTAGqYXD+MWOXGh8YqyvDx88KXuS8hMCEuxCoO57ueP12GJmXYu3Qi1MmjHyNm6YZssE3Y0jmus4drGxoq7utXWSmU5dAdNBnSgaMBAvUfQAhvErA19YI2DeQzKPMULMeBgW9PS4aJDlNGI+YcmGiFx8CB` && - `KMF+RYTPhQxQe30HV4G3KqOh/Bc7n1NuNgdk6iHkT8nyKNFMrJa1KGgYEfspfExIQBBJ09P75RjdQob0U0QykDXAyEi5sIiCfOzZvR4MOCy99wfrEYssonlnrf752gNrBigIpNydA1KntgzpRllUSTZCx6u4rDFBFISjGpWFlixm8KUoIfJQbPr6e8q8VULUqktqTwUN8ixwohI7UKYFLQqQylAZPXnRWUOLUfeDAjtqIpKZBEgZjhgu` && - `uni34xEDbey4NAF06c8GwnvJQFZEI8he5pfYVkHQX1htwAUgG74MNXrbdmYmq4NmUcPedUQeVIEAroCB/AZsfSuhkI4CxgXWoO0lATFpsoRslIopesBskfOnHYWQzHJZ2Ka06XEHRbGkRPhJ3uQey5LCgZvso68QSVU6I4vofeb+h8OdF+2StWHALjBYyEFjUYJoMnAilCV1dlpoBANVhuYwbNOMqRrcCSLq4sXneHpWKH4fpyYYD5ZE` && - `I4tUDxUwYwFkAHgDRhBQJKEt05RXWmt8ON32L5UFEElIjFpRJ+zw1sD5Ix+EYAOTBKAVjRH5E3N4A8hAFnoaNSTSIlEcbSoQonA6Ud7w6aZhGSwFicduS2LmoAYsWCMCGwQYjyiCCipI7NGnAEBdCoxfdcVFK6rCcbiwgz5UDY0nwY5q7w2ABEd1PMPFEMMUqCeGSzLM0pTWnneFDB8mGmEPPnD6BPOblVMQmaXHtXcBYbKF6marT6hA` && - `EhBp4mCxK0aRpAsOGgDwAeM3/C40DjJppDYgqgB3cSI3ZErodWIC1qGHleR0FBFgElKdm8kwSpCUAlW3WbxQxb6MZxBZCqb1pdZUWuo0FCsB2BdUrsBUgeac/OSITfMJIAeDHcVH5wYJ/nOL+LDDVfXn/3BlJfWIVpwpirLhbrjWIdZfukaA3m9H4wNKrcHd8ZV9tuae+JguAeHIwLIeseGHl977Jdz3hLEiIi02KJ0GIjCiaxlC8+QC` && - `hqV9gRfAjWfCmxsnN8YzftEGgGEhAU/DFDxSEFC0abmuU81ahbDkEUUpugAZ3s7HnBogXFKoB3TwFYRxYo7XUzwm9R5IlTA49A1OU4CkR01CUBx7c6hmsaH7mV5w1ugoqTVpsuBa6wBBQkVaDVdnuUG0BBhtfIadqogxoWWWti3QeK9x0xYG7OX47/AITuQeQqQSFEE6oz8ZJg1Xr0oKgp1SYOz6Xp1pQbNakADnAYJfg1/GUi4nSjIB` && - `jVWU03M5JAIA/ZB+kcA78TfFF4FTdXQ/oVYgYTRYe9mjUX45WFHhB0fIYDQP4htVVRRCTrcOs0ODRNC0CGlqxBbFzWCGLrznwWNb2uVJhxheneVbjopBNr0g+veUYpUWitq3tJbAgPC4N4kVzcMypvUz5OsuC4gnjNBujGVB7gBPlmkgp8frEijXHI6fVxYwoEgpYwuM1o6lS1Vdoqq7VVw0XnnLB3gxpAAUCwXzK/u4qNpA8pt1sWE9` && - `Lg1fXyO6nABcnHXfYkCfgp9ndx/bAKEchEg2bjVTQhkPWa1myCiMV0nG6XUzvY30Zw0aAws1ehIOjhAKLpSql+KCMNykahA1qe1uP3/HaLWI4jgFEYRooLArqJmqbfh7ngKaDHI7glh8IK/Yo6Uw4PY1lgjgob9BrAa49Chbl2IBY3BySwM0pUp4TiOxEcEMwnwcS8cEafGDT1Zqm3kDG6nb4yW4GiSoLOD5PTiHiZr9e8RdCYyKEzlI` && - `jFwR8nC/UfX2W+b+zcOSI8h3HnCrsyxhkJ89yicUT1h0n3nkMWSgyUrcYi9O5VVpM9cMKEX1hKiJdayCXXwYvWrg2QDe1TR5p7yzpAmMondTyoIDaMF+FBsF4nH2+dfo8yBrESliccCE/lLocinwvVXqgnEAJWuRWw2KCrpUCzMDWFbqyHwcyCUcr0/wBQNTjLpsCERGUnPJdZAhJttFQmAxr1Jyn5g/Tt/wAn4AKIgWtoIhBCWul0it` && - `ENkG7hR6pomg9iilLBWMVC/DLTD1zAqxplIMiOOAgr++Xh6Aocj69HzfOR+IaYNL0mIImGjNTKHznWYKQwg03hIYxJ5H+cWrgHCO6o+MBSlM3IC5ZecxUCwvn1ghaPLszFgQgke8IOBLD4IWG0XzrCLJTNUvl+XpZ7/nhB4maiGkRRHpkkIDAQmgv4wCM+AYBEKgCcNsqrLyU0HopH2n5w2kUDhCtYbnAoAq4TMkR3A2J4w5sIAy2BeF` && - `Z8q7rd2cRyw1RsTFVPMODebg8YUVQfWn4yigJaVUCs0e2OrB4wgtWm3zO7+DwQNBkGPTuUHmbG+M1oeMRhX0wUMIjObwt/O8CL4zU+n+c1PxgAutt4J1UubD7ueNG/Eu/2H98nuQiRiH0U8/HnGSisCg3qp9ut63yfH/FpgQFM8rZEkJLQ2j484U7KlmiF7JvSUAmYROn8YwIH4wj/AFD3j0thk65AYNpo5uaesPdK/LjkRo4aTFRG/O` && - `SW6ExMPxif3YzaG8kp5cHRrIYojAn0Y60YYiOJrFkVvX1klkcgCcv5/vxbst8agdhBCvDyXCZAIBwM8f8AH8YJBIUPWFlBuInkopn0Nk6cKjabwEBrK/HiTMYGOxPxinRe/GaTPBRc2NK2uv4yKA5cTeIF5M9Dvxl0cOvG81h8ayyDy4ts0Z23zmQN+cNFG+Y9NoONy6wD7ZyBu4QMExGIAlB2JPaYZLdGlTBtUMQIrP8Ak+P0D6+5lR` && - `E/bDMypppEhE07DWMEoVVAs7VsMngBgCMuxWk+Jkca9TmMA5kRGjH0ObPrJJ+cYhJMQrgFMb4yPWGFFCuEj35jXcXRjIq2Y5Lm4F4ZQHowSOBY2Yu5ZnDDKbcafkmHnK0BlB9nXf8AndMK2ptcvjPMbbd0Ij9XkaNQRGY4SxCwNI6sgQKcFgmgqTeWLPSZsDS+caNeyZR8C37zShvIoZCtzFEc8TPbENSVnb0Bphp086wgE2fGM7bBJ7` && - `wkdDJ2IOG2Ca1iMEiEBQIpyCmT+gyz4BEB8NXrY6x82/sSdFUjIJppRbXQBiuwaICo2DQudzgWwBQ6FKtnkM1QVGEYVLJNKLT2Yo2HPjGmLTWsO1KccEuy1PH3ir9GdtDG3tr3/nLNsimH7OtPM8SJ9Du3K8WW6y03lYVAear6GuhcA4PSJsPLbXf9DZiQiJpwl7IcpuBLGHC6zxQ43Io708Ajlz5aHJv3y+waaA4CvQ4CUROkwLSzBl` && - `ASyTIPIuBFAvMG2PYaP/uVCA6esFvIe3ajSevOulGVZeLCANDWlAEREcMm/ZcGlNRo1IeUpoARwkfk8iD5OZ+P6G4CAIkR84viu+H1ss+mHHzSUnnSb++AKOdct2+Csm+Soh6D4IE1AHSEXAl2JWMNCzy5dbywRSFE3xMD1TA2q6V7VSJs1xBkeJj1SSDUu+Q84TuRykbe1ZtxRwABQqD7hSKosgCpBzm4aeEfADxGo0cAmv0/P9KmTp` && - `hQiAUN5gggIGT3KHnvRQVoIReBgABKJYTpV03o3zVwkAwoGokR161hoQCAGg/qHj/+RP/Z`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_30.clas.xml b/src/00/z2ui5_cl_app_demo_30.clas.xml deleted file mode 100644 index 8991a0c5..00000000 --- a/src/00/z2ui5_cl_app_demo_30.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_30</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>layout - dynamic page</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_31.clas.abap b/src/00/z2ui5_cl_app_demo_31.clas.abap deleted file mode 100644 index c89a327c..00000000 --- a/src/00/z2ui5_cl_app_demo_31.clas.abap +++ /dev/null @@ -1,215 +0,0 @@ -CLASS z2ui5_cl_app_demo_31 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_value TYPE string. - - PROTECTED SECTION. - - DATA client TYPE REF TO z2ui5_if_client. - DATA: - BEGIN OF app, - check_initialized TYPE abap_bool, - get TYPE z2ui5_if_client=>ty_s_get, - next TYPE z2ui5_if_client=>ty_s_next, - popup type string, - END OF app. - - METHODS z2ui5_on_init. - METHODS z2ui5_on_event. - METHODS z2ui5_on_render_main. - METHODS z2ui5_on_render_popup. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_31 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - app-get = client->get( ). - me->client = client. - app-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_main( ). - z2ui5_on_render_popup( ). - - client->set_next( app-next ). - CLEAR app-get. - CLEAR app-next. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE app-get-event. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - WHEN 'POPUP'. - app-popup = 'TEST'. - WHEN 'DATA'. - client->popup_message_box( 'Event raised value:' && mv_value ). - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - mv_value = '200'. - - ENDMETHOD. - - - METHOD z2ui5_on_render_main. - - app-next-xml_main = `<mvc:View controllerName="sap.m.sample.GenericTileAsLaunchTile.Page"` && |\n| && - `xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc"` && |\n| && - ` xmlns:form="sap.ui.layout.form">` && |\n| && - ` <form:SimpleForm editable="true" width="40rem">` && |\n| && - ` <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=>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| && - ` frameType="OneByHalf" subheader="Subtitle">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/SAPLogoLargeTile_28px_height.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title" press="` && client->_event( 'DATA' ) && `"` && |\n| && - ` subheader="Subtitle" frameType= "TwoByHalf">` && |\n| && - ` <TileContent />` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Manage Activity Master Data Type"` && |\n| && - ` subheader="Subtitle" press="press" frameType= "TwoByHalf">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` <ImageContent src="sap-icon://home-share" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Right click to open in new tab"` && |\n| && - ` subheader="Link tile" press="press" url="https://www.sap.com/">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/SAPLogoLargeTile_28px_height.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` subheader="Subtitle" press="press">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` <ImageContent src="sap-icon://home-share" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Manage Activity Master Data Type"` && |\n| && - ` subheader="Subtitle" press="press">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/SAPLogoLargeTile_28px_height.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Manage Activity Master Data Type With a Long Title Without an Icon"` && |\n| && - ` subheader="Subtitle Launch Tile" mode="HeaderMode" press="press">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter" />` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Jessica D. Prince Senior Consultant"` && |\n| && - ` subheader="Department" press="press" appShortcut = "shortcut" systemInfo = "systeminfo">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/ProfileImage_LargeGenTile.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` press="press" frameType= "OneByHalf">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` press="press" frameType= "TwoByHalf">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Jessica D. Prince Senior Consultant"` && |\n| && - ` subheader="Department" press="press" frameType="TwoByHalf">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/ProfileImage_LargeGenTile.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - `</mvc:View>`. - - app-next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( app-next-xml_main ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_popup. - - if app-popup = `TEST`. - app-next-xml_popup = `<core:FragmentDefinition` && |\n| && - ` xmlns="sap.m"` && |\n| && - ` xmlns:core="sap.ui.core">` && |\n| && - ` <ViewSettingsDialog` && |\n| && - ` confirm="` && client->_event_close_popup( ) && `">` && |\n| && - ` <sortItems>` && |\n| && - ` <ViewSettingsItem text="Field 1" key="1" selected="true" />` && |\n| && - ` <ViewSettingsItem text="Field 2" key="2" />` && |\n| && - ` <ViewSettingsItem text="Field 3" key="3" />` && |\n| && - ` </sortItems>` && |\n| && - ` <groupItems>` && |\n| && - ` <ViewSettingsItem text="Field 1" key="1" selected="true" />` && |\n| && - ` <ViewSettingsItem text="Field 2" key="2" />` && |\n| && - ` <ViewSettingsItem text="Field 3" key="3" />` && |\n| && - ` </groupItems>` && |\n| && - ` <filterItems>` && |\n| && - ` <ViewSettingsFilterItem text="Field1" key="1">` && |\n| && - ` <items>` && |\n| && - ` <ViewSettingsItem text="Value A" key="1a" />` && |\n| && - ` <ViewSettingsItem text="Value B" key="1b" />` && |\n| && - ` <ViewSettingsItem text="Value C" key="1c" />` && |\n| && - ` </items>` && |\n| && - ` </ViewSettingsFilterItem>` && |\n| && - ` <ViewSettingsFilterItem text="Field2" key="2">` && |\n| && - ` <items>` && |\n| && - ` <ViewSettingsItem text="Value A" key="2a" />` && |\n| && - ` <ViewSettingsItem text="Value B" key="2b" />` && |\n| && - ` <ViewSettingsItem text="Value C" key="2c" />` && |\n| && - ` </items>` && |\n| && - ` </ViewSettingsFilterItem>` && |\n| && - ` <ViewSettingsFilterItem text="Field3" key="3">` && |\n| && - ` <items>` && |\n| && - ` <ViewSettingsItem text="Value A" key="3a" />` && |\n| && - ` <ViewSettingsItem text="Value B" key="3b" />` && |\n| && - ` <ViewSettingsItem text="Value C" key="3c" />` && |\n| && - ` </items>` && |\n| && - ` </ViewSettingsFilterItem>` && |\n| && - ` </filterItems>` && |\n| && - ` </ViewSettingsDialog>` && |\n| && - `</core:FragmentDefinition>`. - - endif. - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_31.clas.xml b/src/00/z2ui5_cl_app_demo_31.clas.xml deleted file mode 100644 index ec60ac5b..00000000 --- a/src/00/z2ui5_cl_app_demo_31.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_31</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - import xml view</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_32.clas.abap b/src/00/z2ui5_cl_app_demo_32.clas.abap deleted file mode 100644 index 31a3c1e1..00000000 --- a/src/00/z2ui5_cl_app_demo_32.clas.abap +++ /dev/null @@ -1,113 +0,0 @@ -CLASS z2ui5_cl_app_demo_32 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_value TYPE string. - - 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_32 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - 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 'POST'. - client->popup_message_toast( app-get-event_data ). - - WHEN 'MYCC'. - client->popup_message_toast( 'MYCC event ' && mv_value ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - app-view_main = 'VIEW_MAIN'. - mv_value = 'test'. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - app-next-xml_main = `<mvc:View controllerName="project1.controller.View1"` && |\n| && - ` xmlns:mvc="sap.ui.core.mvc" displayBlock="true"` && |\n| && - ` xmlns:z2ui5="z2ui5" xmlns:m="sap.m" xmlns="http://www.w3.org/1999/xhtml"` && |\n| && - ` ><m:Button ` && |\n| && - ` text="back" ` && |\n| && - ` press="` && client->_event( 'BACK' ) && `" ` && |\n| && - ` class="sapUiContentPadding sapUiResponsivePadding--content"/> ` && |\n| && - ` <m:Link target="_blank" text="Source_Code" href="` && z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) && `"/>` && |\n| && - `<html><head><style>` && |\n| && - `body {background-color: powderblue;}` && |\n| && - `h1 {color: blue;}` && |\n| && - `p {color: red;}` && |\n| && - `</style>` && - `</head>` && |\n| && - `<body>` && |\n| && - `<h1>This is a heading with css</h1>` && |\n| && - `<p>This is a paragraph with css.</p>` && |\n| && - `<h1>My First JavaScript</h1>` && |\n| && - `<button onclick="myFunction()" type="button">send</button>` && |\n| && - `<Input id='input' value='frontend data' /> ` && - `<script> function myFunction( ) { sap.z2ui5.oView.getController().onEvent({ 'EVENT' : 'POST', 'METHOD' : 'UPDATE' }, document.getElementById(sap.z2ui5.oView.createId( "input" )).value ) } </script>` && |\n| && - `</body>` && |\n| && - `</html> ` && |\n| && - `</mvc:View>`. - - app-next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( app-next-xml_main ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_32.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_32.clas.locals_imp.abap deleted file mode 100644 index 03056145..00000000 --- a/src/00/z2ui5_cl_app_demo_32.clas.locals_imp.abap +++ /dev/null @@ -1,136 +0,0 @@ -*"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations -class lcl_repository DEFINITION. - -PUBLIC SECTION. - - class-METHODS get_js_barcode_lib - returning - value(result) type string. - - -endclass. - -CLASS lcl_repository IMPLEMENTATION. - - METHOD get_js_barcode_lib. - - result = `` && |\n| && - `!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable` && -`:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"obj` && -`ect"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){` && -`var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=7)}([function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?` && -`Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,s=(e.SHIFT=98,e.START_A=103),f=e.START_B=104,c=e.START_C=105;e.MODULO=1` && -`03,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},s,i),o(r,f,a),o(r,c,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHA` && -`RS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,1001110110` && -`0,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3` && -`,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11` && -`100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111` && -`100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,1110101` && -`1110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1` && -`,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(11),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){!function(t,e){` && -`if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof ` && -`e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t.substring(1),n));return r.bytes=t.split("").map((function(t){return t.charCodeAt(0)})),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression mu` && -`st either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid"` && -`,value:function(){return/^[\x00-\x7F\xC8-\xD3]+$/.test(this.data)}},{key:"encode",value:function(){var t=this.bytes,n=t.shift()-105,r=u.SET_BY_CODE[n];if(void 0===r)throw new RangeError("The encoding does not start with a start character.");!0===th` && -`is.shouldEncodeAsEan128()&&t.unshift(u.FNC1);var o=e.next(t,1,r);return{text:this.text===this.data?this.text.replace(/[^\x20-\x7E]/g,""):this.text,data:e.getBar(n)+o.result+e.getBar((o.checksum+n)%u.MODULO)+e.getBar(u.STOP)}}},{key:"shouldEncodeAsE` && -`an128",value:function(){var t=this.options.ean128||!1;return"string"==typeof t&&(t="true"===t.toLowerCase()),t}}],[{key:"getBar",value:function(t){return u.BARS[t]?u.BARS[t].toString():""}},{key:"correctIndex",value:function(t,e){if(e===u.SET_A){va` && -`r n=t.shift();return n<32?n+64:n-32}return e===u.SET_B?t.shift()-32:10*(t.shift()-48)+t.shift()-48}},{key:"next",value:function(t,n,r){if(!t.length)return{result:"",checksum:0};var o=void 0,i=void 0;if(t[0]>=200){i=t.shift()-105;var a=u.SWAP[i];voi` && -`d 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var s=i*n;return{result:e.getBar(i)+o.result,checksum:s+o` && -`.checksum}}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnPr` && -`operty.call(n,r)&&(t[r]=n[r])}return t};e.default=function(t,e){return r({},t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=["width","height","textMargin","fontSize","margin","marginT` && -`op","marginBottom","marginLeft","marginRight"];for(var n in e)e.hasOwnProperty(n)&&(n=e[n],"string"==typeof t[n]&&(t[n]=parseInt(t[n],10)));"string"==typeof t.displayValue&&(t.displayValue="false"!=t.displayValue);return t}},function(t,e,n){"use st` && -`rict";Object.defineProperty(e,"__esModule",{value:!0});var r={width:2,height:100,format:"auto",displayValue:!0,fontOptions:"",font:"monospace",text:void 0,textAlign:"center",textPosition:"bottom",textMargin:2,fontSize:20,background:"#ffffff",lineCo` && -`lor:"#000000",margin:10,marginTop:void 0,marginBottom:void 0,marginLeft:void 0,marginRight:void 0,valid:function(){}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getTotalWidthOfEncodings=e.calculateE` && -`ncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var r,o=n(2),i=(r=o)&&r.__esModule?r:{default:r};function a(t,e){return e.height+(e.displayValue&&t.text.length>0?e.fontSize+e.textMargin:0)+e.marginTop+` && -`e.marginBottom}function u(t,e,n){if(n.displayValue&&e<t){if("center"==n.textAlign)return Math.floor((t-e)/2);if("left"==n.textAlign)return 0;if("right"==n.textAlign)return Math.floor(t-e)}return 0}function s(t,e,n){var r;if(n)r=n;else{if("undefined` && -`"==typeof document)return 0;r=document.createElement("canvas").getContext("2d")}r.font=e.fontOptions+" "+e.fontSize+"px "+e.font;var o=r.measureText(t);return o?o.width:0}e.getMaximumHeightOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)t[n]` && -`.height>e&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r<t.length;r++){var o,f=t[r],c=(0,i.default)(e,f.options);o=c.displayValue?s(f.text,c,n):0;var l=f.data.lengt` && -`h*c.width;f.width=Math.ceil(Math.max(o,l)),f.height=a(f,c),f.barcodePadding=u(o,l,c)}},e.getTotalWidthOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n].width;return e}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))` && -`throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function` && -`"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Obj` && -`ect.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.name="InvalidInputException",i.symbology=t` && -`,i.input=n,i.message='"'+i.input+'" is not a valid input for '+i.symbology,i}return i(e,Error),e}(),u=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="InvalidElementException",t.mess` && -`age="Not supported type to render on",t}return i(e,Error),e}(),s=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="NoElementException",t.message="No element to render on.",t}return i(` && -`e,Error),e}();e.InvalidInputException=a,e.InvalidElementException=u,e.NoElementException=s},function(t,e,n){"use strict";var r=d(n(8)),o=d(n(2)),i=d(n(16)),a=d(n(17)),u=d(n(18)),s=d(n(3)),f=d(n(24)),c=n(6),l=d(n(4));function d(t){return t&&t.__esMo` && -`dule?t:{default:t}}var p=function(){},h=function(t,e,n){var r=new p;if(void 0===t)throw Error("No element to render on was provided.");return r._renderProperties=(0,u.default)(t),r._encodings=[],r._options=l.default,r._errorHandler=new f.default(r)` && -`,void 0!==e&&((n=n||{}).format||(n.format=b()),r.options(n)[n.format](e,n).render()),r};for(var v in h.getModule=function(t){return r.default[t]},r.default)r.default.hasOwnProperty(v)&&g(r.default,v);function g(t,e){p.prototype[e]=p.prototype[e.toU` && -`pperCase()]=p.prototype[e.toLowerCase()]=function(n,r){var i=this;return i._errorHandler.wrapBarcodeCall((function(){r.text=void 0===r.text?void 0:""+r.text;var a=(0,o.default)(i._options,r);a=(0,s.default)(a);var u=t[e],f=y(n,u,a);return i._encodi` && -`ngs.push(f),i}))}}function y(t,e,n){var r=new e(t=""+t,n);if(!r.valid())throw new c.InvalidInputException(r.constructor.name,t);var a=r.encode();a=(0,i.default)(a);for(var u=0;u<a.length;u++)a[u].options=(0,o.default)(n,a[u].options);return a}funct` && -`ion b(){return r.default.CODE128?"CODE128":Object.keys(r.default)[0]}function _(t,e,n){e=(0,i.default)(e);for(var r=0;r<e.length;r++)e[r].options=(0,o.default)(n,e[r].options),(0,a.default)(e[r].options);(0,a.default)(n),new(0,t.renderer)(t.element` && -`,e,n).render(),t.afterRender&&t.afterRender()}p.prototype.options=function(t){return this._options=(0,o.default)(this._options,t),this},p.prototype.blank=function(t){var e=new Array(t+1).join("0");return this._encodings.push({data:e}),this},p.proto` && -`type.init=function(){var t;if(this._renderProperties)for(var e in Array.isArray(this._renderProperties)||(this._renderProperties=[this._renderProperties]),this._renderProperties){t=this._renderProperties[e];var n=(0,o.default)(this._options,t.optio` && -`ns);"auto"==n.format&&(n.format=b()),this._errorHandler.wrapBarcodeCall((function(){var e=y(n.value,r.default[n.format.toUpperCase()],n);_(t,e,n)}))}},p.prototype.render=function(){if(!this._renderProperties)throw new c.NoElementException;if(Array.` && -`isArray(this._renderProperties))for(var t=0;t<this._renderProperties.length;t++)_(this._renderProperties[t],this._encodings,this._options);else _(this._renderProperties,this._encodings,this._options);return this},p.prototype._defaults=l.default,"un` && -`defined"!=typeof window&&(window.JsBarcode=h),"undefined"!=typeof jQuery&&(jQuery.fn.JsBarcode=function(t,e){var n=[];return jQuery(this).each((function(){n.push(this)})),h(n,t,e)}),t.exports=h},function(t,e,n){"use strict";Object.defineProperty(e,` && -`"__esModule",{value:!0});var r=n(9);e.default={CODE128:r.CODE128,CODE128A:r.CODE128A,CODE128B:r.CODE128B,CODE128C:r.CODE128C}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=` && -`void 0;var r=u(n(10)),o=u(n(13)),i=u(n(14)),a=u(n(15));function u(t){return t&&t.__esModule?t:{default:t}}e.CODE128=r.default,e.CODE128A=o.default,e.CODE128B=i.default,e.CODE128C=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__es` && -`Module",{value:!0});var r=i(n(1)),o=i(n(12));function i(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=ty` && -`peof e?t:e}var u=function(t){function e(t,n){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),/^[\x00-\x7F\xC8-\xD3]+$/.test(t))var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,(0` && -`,o.default)(t),n));else r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return a(r)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.p` && -`rototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=u},function(t,e,n){"use strict";Object.define` && -`Property(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";Object` && -`.defineProperty(e,"__esModule",{value:!0});var r=n(0),o=function(t){return t.match(new RegExp("^"+r.A_CHARS+"*"))[0].length},i=function(t){return t.match(new RegExp("^"+r.B_CHARS+"*"))[0].length},a=function(t){return t.match(new RegExp("^"+r.C_CHAR` && -`S+"*"))[0]};function u(t,e){var n=e?r.A_CHARS:r.B_CHARS,o=t.match(new RegExp("^("+n+"+?)(([0-9]{2}){2,})([^0-9]|$)"));if(o)return o[1]+String.fromCharCode(204)+s(t.substring(o[1].length));var i=t.match(new RegExp("^"+n+"+"))[0];return i.length===t.` && -`length?t:i+String.fromCharCode(e?205:206)+u(t.substring(i.length),!e)}function s(t){var e=a(t),n=e.length;if(n===t.length)return t;t=t.substring(n);var r=o(t)>=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;i` && -`f(a(t).length>=2)e=r.C_START_CHAR+s(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProp` && -`erty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n` && -`&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)t` && -`hrow new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.A_START_CHAR+t,n))}return function(t,e){if("functi` && -`on"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?O` && -`bject.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.A_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var` && -` r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),` && -`i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn'` && -`t been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.B_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new T` && -`ypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto` && -`__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.B_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for` && -`(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{def` && -`ault:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't` && -` been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.C_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must eit` && -`her be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value` && -`:function(){return new RegExp("^"+u.C_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=[];return function t(n){if(Array.isArray(n))f` && -`or(var r=0;r<n.length;r++)t(n[r]);else n.text=n.text||"",n.data=n.data||"",e.push(n)}(t),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.marginTop=t.marginTop||t.margin,t.marginBottom` && -`=t.marginBottom||t.margin,t.marginRight=t.marginRight||t.margin,t.marginLeft=t.marginLeft||t.margin,t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?` && -`function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=u(n(19)),i=u(n(20)),a=n(6);function u(t){return t&&t.__esModule?t:{default:t}}function s(t){if("string"=` && -`=typeof t)return function(t){var e=document.querySelectorAll(t);if(0===e.length)return;for(var n=[],r=0;r<e.length;r++)n.push(s(e[r]));return n}(t);if(Array.isArray(t)){for(var e=[],n=0;n<t.length;n++)e.push(s(t[n]));return e}if("undefined"!=typeof` && -` HTMLCanvasElement&&t instanceof HTMLImageElement)return u=t,{element:f=document.createElement("canvas"),options:(0,o.default)(u),renderer:i.default.CanvasRenderer,afterRender:function(){u.setAttribute("src",f.toDataURL())}};if(t&&t.nodeName&&"svg"` && -`===t.nodeName.toLowerCase()||"undefined"!=typeof SVGElement&&t instanceof SVGElement)return{element:t,options:(0,o.default)(t),renderer:i.default.SVGRenderer};if("undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement)return{element:t` && -`,options:(0,o.default)(t),renderer:i.default.CanvasRenderer};if(t&&t.getContext)return{element:t,renderer:i.default.CanvasRenderer};if(t&&"object"===(void 0===t?"undefined":r(t))&&!t.nodeName)return{element:t,renderer:i.default.ObjectRenderer};thro` && -`w new a.InvalidElementException;var u,f}e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(3)),o=i(n(4));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){var e={};for(var n i` && -`n o.default)o.default.hasOwnProperty(n)&&(t.hasAttribute("jsbarcode-"+n.toLowerCase())&&(e[n]=t.getAttribute("jsbarcode-"+n.toLowerCase())),t.hasAttribute("data-"+n.toLowerCase())&&(e[n]=t.getAttribute("data-"+n.toLowerCase())));return e.value=t.ge` && -`tAttribute("jsbarcode-value")||t.getAttribute("data-value"),e=(0,r.default)(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(21)),o=a(n(22)),i=a(n(23));function a(t){return t&&t.__esModule?t:{default:t}}e` && -`.default={CanvasRenderer:r.default,SVGRenderer:o.default,ObjectRenderer:i.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable` && -`=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s=function(){function t(e,n,r` && -`){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.canvas=e,this.encodings=n,this.options=r}return o(t,[{key:"render",value:function(){if(!this.canvas.getContext)throw new Error("The browser` && -` does not support canvas.");this.prepareCanvas();for(var t=0;t<this.encodings.length;t++){var e=(0,a.default)(this.options,this.encodings[t].options);this.drawCanvasBarcode(e,this.encodings[t]),this.drawCanvasText(e,this.encodings[t]),this.moveCanv` && -`asDrawing(this.encodings[t])}this.restoreCanvas()}},{key:"prepareCanvas",value:function(){var t=this.canvas.getContext("2d");t.save(),(0,u.calculateEncodingAttributes)(this.encodings,this.options,t);var e=(0,u.getTotalWidthOfEncodings)(this.encodin` && -`gs),n=(0,u.getMaximumHeightOfEncodings)(this.encodings);this.canvas.width=e+this.options.marginLeft+this.options.marginRight,this.canvas.height=n,t.clearRect(0,0,this.canvas.width,this.canvas.height),this.options.background&&(t.fillStyle=this.optio` && -`ns.background,t.fillRect(0,0,this.canvas.width,this.canvas.height)),t.translate(this.options.marginLeft,0)}},{key:"drawCanvasBarcode",value:function(t,e){var n,r=this.canvas.getContext("2d"),o=e.data;n="top"==t.textPosition?t.marginTop+t.fontSize+t` && -`.textMargin:t.marginTop,r.fillStyle=t.lineColor;for(var i=0;i<o.length;i++){var a=i*t.width+e.barcodePadding;"1"===o[i]?r.fillRect(a,n,t.width,t.height):o[i]&&r.fillRect(a,n,t.width,t.height*o[i])}}},{key:"drawCanvasText",value:function(t,e){var n,` && -`r,o=this.canvas.getContext("2d"),i=t.fontOptions+" "+t.fontSize+"px "+t.font;t.displayValue&&(r="top"==t.textPosition?t.marginTop+t.fontSize-t.textMargin:t.height+t.textMargin+t.marginTop+t.fontSize,o.font=i,"left"==t.textAlign||e.barcodePadding>0?` && -`(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restor` && -`eCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumera` && -`ble=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s="http://www.w3.org/2000/` && -`svg",f=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.svg=e,this.encodings=n,this.options=r,this.document=r.xmlDocument||document}return o(t,[{key:"render",val` && -`ue:function(){var t=this.options.marginLeft;this.prepareSVG();for(var e=0;e<this.encodings.length;e++){var n=this.encodings[e],r=(0,a.default)(this.options,n.options),o=this.createGroup(t,r.marginTop,this.svg);this.setGroupOptions(o,r),this.drawSvg` && -`Barcode(o,r,n),this.drawSVGText(o,r,n),t+=n.width}}},{key:"prepareSVG",value:function(){for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);(0,u.calculateEncodingAttributes)(this.encodings,this.options);var t=(0,u.getTotalWidthOfEnc` && -`odings)(this.encodings),e=(0,u.getMaximumHeightOfEncodings)(this.encodings),n=t+this.options.marginLeft+this.options.marginRight;this.setSvgAttributes(n,e),this.options.background&&this.drawRect(0,0,n,e,this.svg).setAttribute("style","fill:"+this.o` && -`ptions.background+";")}},{key:"drawSvgBarcode",value:function(t,e,n){var r,o=n.data;r="top"==e.textPosition?e.fontSize+e.textMargin:0;for(var i=0,a=0,u=0;u<o.length;u++)a=u*e.width+n.barcodePadding,"1"===o[u]?i++:i>0&&(this.drawRect(a-e.width*i,r,e` && -`.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(s,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fo` && -`ntSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor"` && -`,"end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttrib` && -`ute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",s),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(` && -`0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(s,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"` && -`+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(s,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.defaul` && -`t=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.definePro` && -`perty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.object=e,this.encoding` && -`s=n,this.options=r}return r(t,[{key:"render",value:function(){this.object.encodings=this.encodings}}]),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.` && -`length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e){!function(t,e){if` && -`(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e}return r(t,[{key:"handleCatch",value:function(t){if("InvalidInputException"!==t.name)throw t;if(this.api._options.valid===this.api._defaults.valid)throw` && -` t.message;this.api._options.valid(!1),this.api.render=function(){}}},{key:"wrapBarcodeCall",value:function(t){try{var e=t.apply(void 0,arguments);return this.api._options.valid(!0),e}catch(t){return this.handleCatch(t),this.api}}}]),t}();e.default` && -`=o}]);`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_32.clas.xml b/src/00/z2ui5_cl_app_demo_32.clas.xml deleted file mode 100644 index 97ccdd50..00000000 --- a/src/00/z2ui5_cl_app_demo_32.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_32</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - html css js</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_33.clas.abap b/src/00/z2ui5_cl_app_demo_33.clas.abap deleted file mode 100644 index f5300b8b..00000000 --- a/src/00/z2ui5_cl_app_demo_33.clas.abap +++ /dev/null @@ -1,58 +0,0 @@ -CLASS z2ui5_cl_app_demo_33 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - DATA mv_type TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_33 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - CASE client->get( )-event. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - WHEN 'BUTTON_MESSAGE_BOX'. - client->popup_message_box( 'Action of illustrated message' ). - - WHEN OTHERS. - mv_type = client->get( )-event. - - ENDCASE. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Illustrated Messages' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = `https://twitter.com/OblomovDev/status/1647175810917318657` - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - page->link( text = 'Documentation' target = '_blank' href = `https://openui5.hana.ondemand.com/api/sap.m.IllustratedMessageType#properties` ). - page->button( text = 'NoActivities' press = client->_event( 'sapIllus-NoActivities' ) ). - page->button( text = 'AddPeople' press = client->_event( 'sapIllus-AddPeople' ) ). - page->button( text = 'Connection' press = client->_event( 'sapIllus-Connection' ) ). - page->button( text = 'NoDimensionsSet' press = client->_event( 'sapIllus-NoDimensionsSet' ) ). - page->button( text = 'NoEntries' press = client->_event( 'sapIllus-NoEntries' ) ). - page->illustrated_message( illustrationtype = mv_type - )->additional_content( )->button( - text = 'information' - press = client->_event( 'BUTTON_MESSAGE_BOX' ) ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_33.clas.xml b/src/00/z2ui5_cl_app_demo_33.clas.xml deleted file mode 100644 index fe871fbd..00000000 --- a/src/00/z2ui5_cl_app_demo_33.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_33</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>messages - illustrated</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_34.clas.abap b/src/00/z2ui5_cl_app_demo_34.clas.abap deleted file mode 100644 index 486f0445..00000000 --- a/src/00/z2ui5_cl_app_demo_34.clas.abap +++ /dev/null @@ -1,131 +0,0 @@ -CLASS z2ui5_cl_app_demo_34 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA t_bapiret TYPE bapirettab. - DATA check_initialized TYPE abap_bool. - DATA mv_popup_name TYPE string. - DATA mv_main_xml TYPE string. - DATA mv_popup_xml TYPE string. - - METHODS view_main - IMPORTING - client TYPE REF TO z2ui5_if_client. - METHODS view_popup_bal - IMPORTING - client TYPE REF TO z2ui5_if_client. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_34 IMPLEMENTATION. - - - METHOD view_main. - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Popups' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - " )->link( - " text = 'Demo' target = '_blank' - " href = 'https://twitter.com/OblomovDev/status/1637163852264624139' - )->link( - text = 'Source_Code' target = '_blank' href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(grid) = page->grid( 'L8 M12 S12' )->content( 'layout' ). - - grid->simple_form( 'Tables' )->content( 'form' - )->label( '01' - )->button( - text = 'Show bapiret tab' - press = client->_event( 'POPUP_BAL' ) - ). - - mv_main_xml = page->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD view_popup_bal. - - DATA(popup) = Z2UI5_CL_XML_VIEW=>factory_popup( - )->dialog( 'abap2ui5 - Popup Message Log' - )->table( client->_bind( t_bapiret ) - )->columns( - )->column( '5rem' - )->text( 'Type' )->get_parent( - )->column( '5rem' - )->text( 'Number' )->get_parent( - )->column( '5rem' - )->text( 'ID' )->get_parent( - )->column( - )->text( 'Message' )->get_parent( - )->get_parent( - )->items( - )->column_list_item( - )->cells( - )->text( '{TYPE}' - )->text( '{NUMBER}' - )->text( '{ID}' - )->text( '{MESSAGE}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'close' - press = client->_event( 'POPUP_BAL_CLOSE' ) - type = 'Emphasized' ). - - mv_popup_xml = popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - t_bapiret = VALUE #( - ( message = 'An empty Report field causes an empty XML Message to be sent' type = 'E' id = 'MSG1' number = '001' ) - ( message = 'Check was executed for wrong Scenario' type = 'E' id = 'MSG1' number = '002' ) - ( message = 'Request was handled without errors' type = 'S' id = 'MSG1' number = '003' ) - ( message = 'product activated' type = 'S' id = 'MSG4' number = '375' ) - ( message = 'check the input values' type = 'W' id = 'MSG2' number = '375' ) - ( message = 'product already in use' type = 'I' id = 'MSG2' number = '375' ) - ). - - ENDIF. - - mv_popup_name = ''. - - CASE client->get( )-event. - - WHEN 'POPUP_BAL'. - mv_popup_name = 'POPUP_BAL'. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - view_main( client ). - - CASE mv_popup_name. - WHEN 'POPUP_BAL'. - view_popup_bal( client ). - ENDCASE. - - client->set_next( VALUE #( xml_main = mv_main_xml xml_popup = mv_popup_xml ) ). - CLEAR: mv_main_xml, mv_popup_xml. - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_34.clas.xml b/src/00/z2ui5_cl_app_demo_34.clas.xml deleted file mode 100644 index 08dd2ed6..00000000 --- a/src/00/z2ui5_cl_app_demo_34.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_34</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>messages - t100 bapiret</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_35.clas.abap b/src/00/z2ui5_cl_app_demo_35.clas.abap deleted file mode 100644 index 33db99e8..00000000 --- a/src/00/z2ui5_cl_app_demo_35.clas.abap +++ /dev/null @@ -1,158 +0,0 @@ -CLASS z2ui5_cl_app_demo_35 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mt_table TYPE REF TO data. - DATA mt_cols TYPE string_table. - DATA mv_name TYPE string. - - 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~main. - - 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_TABLE'. - FIELD-SYMBOLS <tab> TYPE STANDARD TABLE. - CREATE DATA mt_table TYPE STANDARD TABLE OF (mv_name). - ASSIGN mt_table->* TO <tab>. - mt_cols = lcl_db=>get_fieldlist_by_table( <tab> ). - - - WHEN 'BUTTON_POST'. - - CREATE DATA mt_table TYPE STANDARD TABLE OF (mv_name). - "FIELD-SYMBOLS <tab> TYPE table. - ASSIGN mt_table->* TO <tab>. - - SELECT FROM (mv_name) - FIELDS * - INTO CORRESPONDING FIELDS OF TABLE @<tab> - UP TO 100 ROWS. - - - WHEN 'BUTTON_CONFIRM'. - client->popup_message_toast( |confirm| ). - app-view_popup = ''. - - 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. - - app-view_main = 'VIEW_MAIN'. - mv_name = `Z2UI5_T_DRAFT`. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - DATA(lo_view) = z2ui5_cl_xml_view=>factory( )->shell( )->page( - title = 'abap2UI5 - Change the table type with RTTI' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1656904560953237508' - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - )->simple_form( editable = abap_true - )->content( `form` - )->title( 'Table' - )->label( 'Name' ). - - lo_view->input( client->_bind( mv_name ) ). - - lo_view->button( - text = 'read' - press = client->_event( 'BUTTON_POST' ) - ). - - IF mt_table IS BOUND. - - FIELD-SYMBOLS <tab> TYPE STANDARD TABLE. - ASSIGN mt_table->* TO <tab>. - DATA(tab) = lo_view->get_parent( )->get_parent( )->simple_form( editable = abap_true - )->content( 'form' )->table( - items = client->_bind( val = <tab> check_gen_data = abap_true ) - ). - - DATA(lo_columns) = tab->columns( ). - mt_cols = lcl_db=>get_fieldlist_by_table( <tab> ). - - LOOP AT mt_cols INTO DATA(lv_field) FROM 2. - lo_columns->column( )->text( lv_field ). - ENDLOOP. - - DATA(lo_cells) = tab->items( )->column_list_item( selected = '{SELKZ}' )->cells( ). - LOOP AT mt_cols INTO lv_field FROM 2. - lo_cells->input( `{` && lv_field && `}` ). - ENDLOOP. - - ENDIF. - - app-next-xml_main = lo_view->get_root( )->xml_get( ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_35.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_35.clas.locals_imp.abap deleted file mode 100644 index a4b0e6d8..00000000 --- a/src/00/z2ui5_cl_app_demo_35.clas.locals_imp.abap +++ /dev/null @@ -1,312 +0,0 @@ -CLASS lcl_db DEFINITION. - - - PUBLIC SECTION. - - - TYPES ty_t_table TYPE z2ui5_cl_app_demo_13=>ty_t_table. - - CLASS-DATA app TYPE REF TO z2ui5_cl_app_demo_13. - "CLASS-DATA st_table TYPE ty_t_table. - - CLASS-METHODS generate_test_data. - - CLASS-METHODS get_table_by_json - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_xml - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_csv - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_csv_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_xml_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_json_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_fieldlist_by_table - IMPORTING - it_table TYPE table - RETURNING - VALUE(result) TYPE string_table. - - CLASS-METHODS db_save - IMPORTING - value TYPE ty_t_table. - - CLASS-METHODS db_read - RETURNING - VALUE(result) TYPE ty_t_table. - CLASS-METHODS get_test_data_json - RETURNING - VALUE(result) TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_db IMPLEMENTATION. - - METHOD generate_test_data. - - app->st_db = VALUE #( - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ). - - ENDMETHOD. - - - METHOD get_table_by_json. - - DATA lt_tab TYPE ty_t_table. - - /ui2/cl_json=>deserialize( - EXPORTING - json = val -* jsonx = -* pretty_name = -* assoc_arrays = -* assoc_arrays_opt = -* name_mappings = -* conversion_exits = -* hex_as_base64 = - CHANGING - data = lt_tab - ). - - result = lt_tab. - - ENDMETHOD. - - - METHOD get_table_by_xml. - - DATA lt_tab TYPE ty_t_table. - - CALL TRANSFORMATION id SOURCE xml = val RESULT data = lt_tab. - - result = lt_tab. - - ENDMETHOD. - - METHOD get_table_by_csv. - - SPLIT val AT ';' INTO TABLE DATA(lt_cols). - - LOOP AT lt_cols INTO DATA(lv_field). - - DATA(ls_row) = VALUE z2ui5_cl_app_demo_13=>ty_s_spfli( ). - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - <field> = lv_field. - lv_index = lv_index + 1. - ENDDO. - INSERT ls_row INTO TABLE result. - - ENDLOOP. - - ENDMETHOD. - - METHOD db_save. - - "normally modify database here - - "test scenario, therefore write internal table instead - app->st_db = value. - - ENDMETHOD. - - METHOD db_read. - - "normally read database here - - "test scenario, therefore read internal table instead - - result = app->st_db. - - ENDMETHOD. - - METHOD get_csv_by_table. - - LOOP AT val INTO DATA(ls_row). - - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_index = lv_index + 1. - result = result && <field> && ';'. - ENDDO. - result = result && cl_abap_char_utilities=>cr_lf. - ENDLOOP. - - - ENDMETHOD. - - METHOD get_json_by_table. - - result = /ui2/cl_json=>serialize( - val -* compress = -* name = -* pretty_name = -* type_descr = -* assoc_arrays = -* ts_as_iso8601 = -* expand_includes = -* assoc_arrays_opt = -* numc_as_string = -* name_mappings = -* conversion_exits = - " format_output = abap_true -* hex_as_base64 = - ). - - - ENDMETHOD. - - METHOD get_xml_by_table. - - CALL TRANSFORMATION id SOURCE values = val RESULT XML result. - - ENDMETHOD. - - METHOD get_fieldlist_by_table. - - DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ). - DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ). - - DATA(lt_comp) = lo_struc->get_components( ). - - LOOP AT lt_comp INTO DATA(ls_comp). - INSERT ls_comp-name INTO TABLE result. - ENDLOOP. - - ENDMETHOD. - - - METHOD get_test_data_json. - - result = `[` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` }` && |\n| && - `]`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_35.clas.xml b/src/00/z2ui5_cl_app_demo_35.clas.xml deleted file mode 100644 index ab9056f1..00000000 --- a/src/00/z2ui5_cl_app_demo_35.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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>more - dynamic model</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_36.clas.abap b/src/00/z2ui5_cl_app_demo_36.clas.abap deleted file mode 100644 index 03a76e3e..00000000 --- a/src/00/z2ui5_cl_app_demo_36.clas.abap +++ /dev/null @@ -1,143 +0,0 @@ -CLASS z2ui5_cl_app_demo_36 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_value TYPE string. - - 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_36 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - 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 'POST'. - client->popup_message_toast( app-get-event_data ). - - WHEN 'MYCC'. - client->popup_message_toast( 'MYCC event ' && mv_value ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - app-view_main = 'VIEW_MAIN'. - mv_value = 'test'. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - app-next-xml_main = `<mvc:View controllerName="project1.controller.View1"` && |\n| && - ` xmlns:mvc="sap.ui.core.mvc" displayBlock="true"` && |\n| && - ` xmlns:z2ui5="z2ui5" xmlns:m="sap.m" xmlns="http://www.w3.org/1999/xhtml"` && |\n| && - ` ><m:Button ` && |\n| && - ` text="back" ` && |\n| && - ` press="` && client->_event( 'BACK' ) && `" ` && |\n| && - ` class="sapUiContentPadding sapUiResponsivePadding--content"/> ` && |\n| && - ` <m:Link target="_blank" text="Source_Code" href="` && z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) && `"/>` && |\n| && - `<html><head><style>` && |\n| && - `body {background-color: powderblue;}` && |\n| && - `h1 {color: blue;}` && |\n| && - `p {color: red;}` && |\n| && - `</style>` && - `</head>` && |\n| && - `<body>` && |\n| && - `<h1>This is a heading with css</h1>` && |\n| && - `<p>This is a paragraph with css.</p>` && |\n| && - `<h1>My First JavaScript</h1>` && |\n| && - `<button type="button" onclick="myFunction()">` && |\n| && - `run javascript code sent from the backend.</button>` && |\n| && - `<button type="button" onclick="myFunction2()">sent data to backend and come back</button>` && |\n| && - `<Input id='input' value='frontend data' /><h1>This is SVG</h1><p id="demo"></p><svg id="svg" version="1.1"` && |\n| && - ` baseProfile="full"` && |\n| && - ` width="500" height="500"` && |\n| && - ` xmlns="http://www.w3.org/2000/svg">` && |\n| && - ` <rect width="100%" height="100%" />` && |\n| && - ` <circle id="circle" cx="100" cy="100" r="80" />` && |\n| && - ` </svg>` && |\n| && - `<div>X: <input id="sliderX" type="range" min="1" max="500" value="100" /></div><h1>This is canvas</h1><canvas id="canvas" width="500" height="300"></canvas>` && |\n| && - `<script> debugger; var canvas = document.getElementById(sap.z2ui5.oView.createId( 'canvas' ));` && |\n| && - ` if (canvas.getContext){` && |\n| && - `let context = canvas.getContext('2d');` && |\n| && - `context.fillStyle = 'rgb(200,0,0)';` && |\n| && - `context.fillRect (10, 10, 80, 80);` && |\n| && - `context.fillStyle = 'rgba(0, 0, 200, 0.5)';` && |\n| && - `context.fillRect (100, 10, 80, 80);` && |\n| && - `context.strokeStyle = 'rgb(200,0,0)';` && |\n| && - `context.strokeRect (190, 10, 80, 80);` && |\n| && - `context.strokeStyle = 'rgba(0, 0, 200, 0.5)';` && |\n| && - ` context.strokeRect (280, 10, 80, 80);` && |\n| && - ` context.fillStyle = 'rgb(200,0,0)';` && |\n| && - ` context.fillRect (370, 10, 80, 80);` && |\n| && - ` context.clearRect (380, 20, 60, 20);` && |\n| && - ` context.fillRect (390, 25, 10, 10);` && |\n| && - ` context.fillRect (420, 25, 10, 10);` && |\n| && - ` context.clearRect (385, 60, 50, 10); } ` && |\n| && - ` function myFunction( ) { alert( 'button pressed' ) }` && |\n| && - ` function myFunction2( ) { sap.z2ui5.oView.getController().onEvent({ 'EVENT' : 'POST', 'METHOD' : 'UPDATE' }, ` && ' document.getElementById(sap.z2ui5.oView.createId( "input" )).value ' && ` ) }` && |\n| && - `</script> <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/barcodes/JsBarcode.code128.min.js"> </script>` && -* ` <z2ui5:MyCC change=" ` && client->_event( 'MYCC' ) && `" value="` && client->_bind( mv_value ) && `"/>` && |\n| && - - `</body>` && |\n| && - `</html> ` && |\n| && - `</mvc:View>`. - - app-next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( app-next-xml_main ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_36.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_36.clas.locals_imp.abap deleted file mode 100644 index 03056145..00000000 --- a/src/00/z2ui5_cl_app_demo_36.clas.locals_imp.abap +++ /dev/null @@ -1,136 +0,0 @@ -*"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations -class lcl_repository DEFINITION. - -PUBLIC SECTION. - - class-METHODS get_js_barcode_lib - returning - value(result) type string. - - -endclass. - -CLASS lcl_repository IMPLEMENTATION. - - METHOD get_js_barcode_lib. - - result = `` && |\n| && - `!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable` && -`:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"obj` && -`ect"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){` && -`var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=7)}([function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?` && -`Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,s=(e.SHIFT=98,e.START_A=103),f=e.START_B=104,c=e.START_C=105;e.MODULO=1` && -`03,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},s,i),o(r,f,a),o(r,c,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHA` && -`RS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,1001110110` && -`0,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3` && -`,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11` && -`100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111` && -`100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,1110101` && -`1110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1` && -`,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(11),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){!function(t,e){` && -`if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof ` && -`e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t.substring(1),n));return r.bytes=t.split("").map((function(t){return t.charCodeAt(0)})),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression mu` && -`st either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid"` && -`,value:function(){return/^[\x00-\x7F\xC8-\xD3]+$/.test(this.data)}},{key:"encode",value:function(){var t=this.bytes,n=t.shift()-105,r=u.SET_BY_CODE[n];if(void 0===r)throw new RangeError("The encoding does not start with a start character.");!0===th` && -`is.shouldEncodeAsEan128()&&t.unshift(u.FNC1);var o=e.next(t,1,r);return{text:this.text===this.data?this.text.replace(/[^\x20-\x7E]/g,""):this.text,data:e.getBar(n)+o.result+e.getBar((o.checksum+n)%u.MODULO)+e.getBar(u.STOP)}}},{key:"shouldEncodeAsE` && -`an128",value:function(){var t=this.options.ean128||!1;return"string"==typeof t&&(t="true"===t.toLowerCase()),t}}],[{key:"getBar",value:function(t){return u.BARS[t]?u.BARS[t].toString():""}},{key:"correctIndex",value:function(t,e){if(e===u.SET_A){va` && -`r n=t.shift();return n<32?n+64:n-32}return e===u.SET_B?t.shift()-32:10*(t.shift()-48)+t.shift()-48}},{key:"next",value:function(t,n,r){if(!t.length)return{result:"",checksum:0};var o=void 0,i=void 0;if(t[0]>=200){i=t.shift()-105;var a=u.SWAP[i];voi` && -`d 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var s=i*n;return{result:e.getBar(i)+o.result,checksum:s+o` && -`.checksum}}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnPr` && -`operty.call(n,r)&&(t[r]=n[r])}return t};e.default=function(t,e){return r({},t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=["width","height","textMargin","fontSize","margin","marginT` && -`op","marginBottom","marginLeft","marginRight"];for(var n in e)e.hasOwnProperty(n)&&(n=e[n],"string"==typeof t[n]&&(t[n]=parseInt(t[n],10)));"string"==typeof t.displayValue&&(t.displayValue="false"!=t.displayValue);return t}},function(t,e,n){"use st` && -`rict";Object.defineProperty(e,"__esModule",{value:!0});var r={width:2,height:100,format:"auto",displayValue:!0,fontOptions:"",font:"monospace",text:void 0,textAlign:"center",textPosition:"bottom",textMargin:2,fontSize:20,background:"#ffffff",lineCo` && -`lor:"#000000",margin:10,marginTop:void 0,marginBottom:void 0,marginLeft:void 0,marginRight:void 0,valid:function(){}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getTotalWidthOfEncodings=e.calculateE` && -`ncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var r,o=n(2),i=(r=o)&&r.__esModule?r:{default:r};function a(t,e){return e.height+(e.displayValue&&t.text.length>0?e.fontSize+e.textMargin:0)+e.marginTop+` && -`e.marginBottom}function u(t,e,n){if(n.displayValue&&e<t){if("center"==n.textAlign)return Math.floor((t-e)/2);if("left"==n.textAlign)return 0;if("right"==n.textAlign)return Math.floor(t-e)}return 0}function s(t,e,n){var r;if(n)r=n;else{if("undefined` && -`"==typeof document)return 0;r=document.createElement("canvas").getContext("2d")}r.font=e.fontOptions+" "+e.fontSize+"px "+e.font;var o=r.measureText(t);return o?o.width:0}e.getMaximumHeightOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)t[n]` && -`.height>e&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r<t.length;r++){var o,f=t[r],c=(0,i.default)(e,f.options);o=c.displayValue?s(f.text,c,n):0;var l=f.data.lengt` && -`h*c.width;f.width=Math.ceil(Math.max(o,l)),f.height=a(f,c),f.barcodePadding=u(o,l,c)}},e.getTotalWidthOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n].width;return e}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))` && -`throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function` && -`"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Obj` && -`ect.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.name="InvalidInputException",i.symbology=t` && -`,i.input=n,i.message='"'+i.input+'" is not a valid input for '+i.symbology,i}return i(e,Error),e}(),u=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="InvalidElementException",t.mess` && -`age="Not supported type to render on",t}return i(e,Error),e}(),s=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="NoElementException",t.message="No element to render on.",t}return i(` && -`e,Error),e}();e.InvalidInputException=a,e.InvalidElementException=u,e.NoElementException=s},function(t,e,n){"use strict";var r=d(n(8)),o=d(n(2)),i=d(n(16)),a=d(n(17)),u=d(n(18)),s=d(n(3)),f=d(n(24)),c=n(6),l=d(n(4));function d(t){return t&&t.__esMo` && -`dule?t:{default:t}}var p=function(){},h=function(t,e,n){var r=new p;if(void 0===t)throw Error("No element to render on was provided.");return r._renderProperties=(0,u.default)(t),r._encodings=[],r._options=l.default,r._errorHandler=new f.default(r)` && -`,void 0!==e&&((n=n||{}).format||(n.format=b()),r.options(n)[n.format](e,n).render()),r};for(var v in h.getModule=function(t){return r.default[t]},r.default)r.default.hasOwnProperty(v)&&g(r.default,v);function g(t,e){p.prototype[e]=p.prototype[e.toU` && -`pperCase()]=p.prototype[e.toLowerCase()]=function(n,r){var i=this;return i._errorHandler.wrapBarcodeCall((function(){r.text=void 0===r.text?void 0:""+r.text;var a=(0,o.default)(i._options,r);a=(0,s.default)(a);var u=t[e],f=y(n,u,a);return i._encodi` && -`ngs.push(f),i}))}}function y(t,e,n){var r=new e(t=""+t,n);if(!r.valid())throw new c.InvalidInputException(r.constructor.name,t);var a=r.encode();a=(0,i.default)(a);for(var u=0;u<a.length;u++)a[u].options=(0,o.default)(n,a[u].options);return a}funct` && -`ion b(){return r.default.CODE128?"CODE128":Object.keys(r.default)[0]}function _(t,e,n){e=(0,i.default)(e);for(var r=0;r<e.length;r++)e[r].options=(0,o.default)(n,e[r].options),(0,a.default)(e[r].options);(0,a.default)(n),new(0,t.renderer)(t.element` && -`,e,n).render(),t.afterRender&&t.afterRender()}p.prototype.options=function(t){return this._options=(0,o.default)(this._options,t),this},p.prototype.blank=function(t){var e=new Array(t+1).join("0");return this._encodings.push({data:e}),this},p.proto` && -`type.init=function(){var t;if(this._renderProperties)for(var e in Array.isArray(this._renderProperties)||(this._renderProperties=[this._renderProperties]),this._renderProperties){t=this._renderProperties[e];var n=(0,o.default)(this._options,t.optio` && -`ns);"auto"==n.format&&(n.format=b()),this._errorHandler.wrapBarcodeCall((function(){var e=y(n.value,r.default[n.format.toUpperCase()],n);_(t,e,n)}))}},p.prototype.render=function(){if(!this._renderProperties)throw new c.NoElementException;if(Array.` && -`isArray(this._renderProperties))for(var t=0;t<this._renderProperties.length;t++)_(this._renderProperties[t],this._encodings,this._options);else _(this._renderProperties,this._encodings,this._options);return this},p.prototype._defaults=l.default,"un` && -`defined"!=typeof window&&(window.JsBarcode=h),"undefined"!=typeof jQuery&&(jQuery.fn.JsBarcode=function(t,e){var n=[];return jQuery(this).each((function(){n.push(this)})),h(n,t,e)}),t.exports=h},function(t,e,n){"use strict";Object.defineProperty(e,` && -`"__esModule",{value:!0});var r=n(9);e.default={CODE128:r.CODE128,CODE128A:r.CODE128A,CODE128B:r.CODE128B,CODE128C:r.CODE128C}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=` && -`void 0;var r=u(n(10)),o=u(n(13)),i=u(n(14)),a=u(n(15));function u(t){return t&&t.__esModule?t:{default:t}}e.CODE128=r.default,e.CODE128A=o.default,e.CODE128B=i.default,e.CODE128C=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__es` && -`Module",{value:!0});var r=i(n(1)),o=i(n(12));function i(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=ty` && -`peof e?t:e}var u=function(t){function e(t,n){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),/^[\x00-\x7F\xC8-\xD3]+$/.test(t))var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,(0` && -`,o.default)(t),n));else r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return a(r)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.p` && -`rototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=u},function(t,e,n){"use strict";Object.define` && -`Property(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";Object` && -`.defineProperty(e,"__esModule",{value:!0});var r=n(0),o=function(t){return t.match(new RegExp("^"+r.A_CHARS+"*"))[0].length},i=function(t){return t.match(new RegExp("^"+r.B_CHARS+"*"))[0].length},a=function(t){return t.match(new RegExp("^"+r.C_CHAR` && -`S+"*"))[0]};function u(t,e){var n=e?r.A_CHARS:r.B_CHARS,o=t.match(new RegExp("^("+n+"+?)(([0-9]{2}){2,})([^0-9]|$)"));if(o)return o[1]+String.fromCharCode(204)+s(t.substring(o[1].length));var i=t.match(new RegExp("^"+n+"+"))[0];return i.length===t.` && -`length?t:i+String.fromCharCode(e?205:206)+u(t.substring(i.length),!e)}function s(t){var e=a(t),n=e.length;if(n===t.length)return t;t=t.substring(n);var r=o(t)>=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;i` && -`f(a(t).length>=2)e=r.C_START_CHAR+s(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProp` && -`erty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n` && -`&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)t` && -`hrow new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.A_START_CHAR+t,n))}return function(t,e){if("functi` && -`on"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?O` && -`bject.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.A_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var` && -` r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),` && -`i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn'` && -`t been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.B_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new T` && -`ypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto` && -`__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.B_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for` && -`(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{def` && -`ault:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't` && -` been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.C_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must eit` && -`her be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value` && -`:function(){return new RegExp("^"+u.C_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=[];return function t(n){if(Array.isArray(n))f` && -`or(var r=0;r<n.length;r++)t(n[r]);else n.text=n.text||"",n.data=n.data||"",e.push(n)}(t),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.marginTop=t.marginTop||t.margin,t.marginBottom` && -`=t.marginBottom||t.margin,t.marginRight=t.marginRight||t.margin,t.marginLeft=t.marginLeft||t.margin,t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?` && -`function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=u(n(19)),i=u(n(20)),a=n(6);function u(t){return t&&t.__esModule?t:{default:t}}function s(t){if("string"=` && -`=typeof t)return function(t){var e=document.querySelectorAll(t);if(0===e.length)return;for(var n=[],r=0;r<e.length;r++)n.push(s(e[r]));return n}(t);if(Array.isArray(t)){for(var e=[],n=0;n<t.length;n++)e.push(s(t[n]));return e}if("undefined"!=typeof` && -` HTMLCanvasElement&&t instanceof HTMLImageElement)return u=t,{element:f=document.createElement("canvas"),options:(0,o.default)(u),renderer:i.default.CanvasRenderer,afterRender:function(){u.setAttribute("src",f.toDataURL())}};if(t&&t.nodeName&&"svg"` && -`===t.nodeName.toLowerCase()||"undefined"!=typeof SVGElement&&t instanceof SVGElement)return{element:t,options:(0,o.default)(t),renderer:i.default.SVGRenderer};if("undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement)return{element:t` && -`,options:(0,o.default)(t),renderer:i.default.CanvasRenderer};if(t&&t.getContext)return{element:t,renderer:i.default.CanvasRenderer};if(t&&"object"===(void 0===t?"undefined":r(t))&&!t.nodeName)return{element:t,renderer:i.default.ObjectRenderer};thro` && -`w new a.InvalidElementException;var u,f}e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(3)),o=i(n(4));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){var e={};for(var n i` && -`n o.default)o.default.hasOwnProperty(n)&&(t.hasAttribute("jsbarcode-"+n.toLowerCase())&&(e[n]=t.getAttribute("jsbarcode-"+n.toLowerCase())),t.hasAttribute("data-"+n.toLowerCase())&&(e[n]=t.getAttribute("data-"+n.toLowerCase())));return e.value=t.ge` && -`tAttribute("jsbarcode-value")||t.getAttribute("data-value"),e=(0,r.default)(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(21)),o=a(n(22)),i=a(n(23));function a(t){return t&&t.__esModule?t:{default:t}}e` && -`.default={CanvasRenderer:r.default,SVGRenderer:o.default,ObjectRenderer:i.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable` && -`=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s=function(){function t(e,n,r` && -`){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.canvas=e,this.encodings=n,this.options=r}return o(t,[{key:"render",value:function(){if(!this.canvas.getContext)throw new Error("The browser` && -` does not support canvas.");this.prepareCanvas();for(var t=0;t<this.encodings.length;t++){var e=(0,a.default)(this.options,this.encodings[t].options);this.drawCanvasBarcode(e,this.encodings[t]),this.drawCanvasText(e,this.encodings[t]),this.moveCanv` && -`asDrawing(this.encodings[t])}this.restoreCanvas()}},{key:"prepareCanvas",value:function(){var t=this.canvas.getContext("2d");t.save(),(0,u.calculateEncodingAttributes)(this.encodings,this.options,t);var e=(0,u.getTotalWidthOfEncodings)(this.encodin` && -`gs),n=(0,u.getMaximumHeightOfEncodings)(this.encodings);this.canvas.width=e+this.options.marginLeft+this.options.marginRight,this.canvas.height=n,t.clearRect(0,0,this.canvas.width,this.canvas.height),this.options.background&&(t.fillStyle=this.optio` && -`ns.background,t.fillRect(0,0,this.canvas.width,this.canvas.height)),t.translate(this.options.marginLeft,0)}},{key:"drawCanvasBarcode",value:function(t,e){var n,r=this.canvas.getContext("2d"),o=e.data;n="top"==t.textPosition?t.marginTop+t.fontSize+t` && -`.textMargin:t.marginTop,r.fillStyle=t.lineColor;for(var i=0;i<o.length;i++){var a=i*t.width+e.barcodePadding;"1"===o[i]?r.fillRect(a,n,t.width,t.height):o[i]&&r.fillRect(a,n,t.width,t.height*o[i])}}},{key:"drawCanvasText",value:function(t,e){var n,` && -`r,o=this.canvas.getContext("2d"),i=t.fontOptions+" "+t.fontSize+"px "+t.font;t.displayValue&&(r="top"==t.textPosition?t.marginTop+t.fontSize-t.textMargin:t.height+t.textMargin+t.marginTop+t.fontSize,o.font=i,"left"==t.textAlign||e.barcodePadding>0?` && -`(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restor` && -`eCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumera` && -`ble=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s="http://www.w3.org/2000/` && -`svg",f=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.svg=e,this.encodings=n,this.options=r,this.document=r.xmlDocument||document}return o(t,[{key:"render",val` && -`ue:function(){var t=this.options.marginLeft;this.prepareSVG();for(var e=0;e<this.encodings.length;e++){var n=this.encodings[e],r=(0,a.default)(this.options,n.options),o=this.createGroup(t,r.marginTop,this.svg);this.setGroupOptions(o,r),this.drawSvg` && -`Barcode(o,r,n),this.drawSVGText(o,r,n),t+=n.width}}},{key:"prepareSVG",value:function(){for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);(0,u.calculateEncodingAttributes)(this.encodings,this.options);var t=(0,u.getTotalWidthOfEnc` && -`odings)(this.encodings),e=(0,u.getMaximumHeightOfEncodings)(this.encodings),n=t+this.options.marginLeft+this.options.marginRight;this.setSvgAttributes(n,e),this.options.background&&this.drawRect(0,0,n,e,this.svg).setAttribute("style","fill:"+this.o` && -`ptions.background+";")}},{key:"drawSvgBarcode",value:function(t,e,n){var r,o=n.data;r="top"==e.textPosition?e.fontSize+e.textMargin:0;for(var i=0,a=0,u=0;u<o.length;u++)a=u*e.width+n.barcodePadding,"1"===o[u]?i++:i>0&&(this.drawRect(a-e.width*i,r,e` && -`.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(s,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fo` && -`ntSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor"` && -`,"end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttrib` && -`ute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",s),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(` && -`0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(s,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"` && -`+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(s,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.defaul` && -`t=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.definePro` && -`perty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.object=e,this.encoding` && -`s=n,this.options=r}return r(t,[{key:"render",value:function(){this.object.encodings=this.encodings}}]),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.` && -`length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e){!function(t,e){if` && -`(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e}return r(t,[{key:"handleCatch",value:function(t){if("InvalidInputException"!==t.name)throw t;if(this.api._options.valid===this.api._defaults.valid)throw` && -` t.message;this.api._options.valid(!1),this.api.render=function(){}}},{key:"wrapBarcodeCall",value:function(t){try{var e=t.apply(void 0,arguments);return this.api._options.valid(!0),e}catch(t){return this.handleCatch(t),this.api}}}]),t}();e.default` && -`=o}]);`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_36.clas.xml b/src/00/z2ui5_cl_app_demo_36.clas.xml deleted file mode 100644 index 65a51098..00000000 --- a/src/00/z2ui5_cl_app_demo_36.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_36</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - canvas and svg</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_37.clas.abap b/src/00/z2ui5_cl_app_demo_37.clas.abap deleted file mode 100644 index 5153b1ff..00000000 --- a/src/00/z2ui5_cl_app_demo_37.clas.abap +++ /dev/null @@ -1,169 +0,0 @@ -CLASS z2ui5_cl_app_demo_37 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_value TYPE string. - - 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. - - DATA mv_load_cc TYPE abap_bool. - DATA mv_display_cc TYPE abap_bool. - - METHODS get_js_custom_control - RETURNING - VALUE(result) TYPE string. - - METHODS z2ui5_on_init. - METHODS z2ui5_on_event. - METHODS z2ui5_on_render. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_37 IMPLEMENTATION. - - - METHOD get_js_custom_control. - - result = `<script>if(!z2ui5.MyCC){ jQuery.sap.declare("z2ui5.MyCC");` && |\n| && - ` sap.ui.define( [` && |\n| && - ` "sap/ui/core/Control",` && |\n| && - ` ], function (Control) {` && |\n| && - ` "use strict";` && |\n| && - ` return Control.extend("z2ui5.MyCC", {` && |\n| && - ` metadata: {` && |\n| && - ` properties: {` && |\n| && - ` value: { type: "string" }` && |\n| && - ` },` && |\n| && - ` events: {` && |\n| && - ` "change": {` && |\n| && - ` allowPreventDefault: true,` && |\n| && - ` parameters: {}` && |\n| && - ` }` && |\n| && - ` }` && |\n| && - ` },` && |\n| && - ` renderer: function (oRm, oControl) {` && |\n| && - ` oControl.oInput = new sap.m.Input({` && |\n| && - ` value: oControl.getProperty("value")` && |\n| && - ` });` && |\n| && - ` oControl.oButton = new sap.m.Button({` && |\n| && - ` text: 'button text',` && |\n| && - ` press: function (oEvent) {` && |\n| && - ` debugger;` && |\n| && -* ` this.setProperty("value", this.oInput._sTypedInValue )` && |\n| && - ` this.setProperty("value", this.oInput.getProperty( 'value') )` && |\n| && - ` this.fireChange();` && |\n| && - ` }.bind(oControl)` && |\n| && - ` });` && |\n| && - ` oRm.renderControl(oControl.oInput);` && |\n| && - ` oRm.renderControl(oControl.oButton);` && |\n| && - ` }` && |\n| && - ` });` && |\n| && - `}); } </script>`. - - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - 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 'POST'. - client->popup_message_toast( app-get-event_data ). - - WHEN 'LOAD_CC'. - mv_load_cc = abap_true. - client->popup_message_box( 'Custom Control loaded ' ). - - WHEN 'DISPLAY_CC'. - mv_display_cc = abap_true. - client->popup_message_box( 'Custom Control displayed ' ). - - WHEN 'MYCC'. - client->popup_message_toast( `Custom Control input: ` && mv_value ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - app-next-xml_main = `<mvc:View controllerName="project1.controller.View1"` && |\n| && - ` xmlns:mvc="sap.ui.core.mvc" displayBlock="true"` && |\n| && - ` xmlns:z2ui5="z2ui5" xmlns:m="sap.m" xmlns="http://www.w3.org/1999/xhtml"` && |\n| && - ` ><m:Button ` && |\n| && - ` text="back" ` && |\n| && - ` press="` && client->_event( 'BACK' ) && `" ` && |\n| && - ` class="sapUiContentPadding sapUiResponsivePadding--content"/> ` && |\n| && - ` <m:Link target="_blank" text="Source_Code" href="` && z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) && `"/>` && |\n| && - `<m:Button text="Load Custom Control" press="` && client->_event( 'LOAD_CC' ) && `" />` && |\n| && - `<m:Button text="Display Custom Control" press="` && client->_event( 'DISPLAY_CC' ) && `" />` && |\n| && - `<html><head> ` && - `</head>` && |\n| && - `<body>`. - - IF mv_load_cc = abap_true. - mv_load_cc = abap_false. - app-next-xml_main = app-next-xml_main && get_js_custom_control( ). - ENDIF. - - IF mv_display_cc = abap_true. - app-next-xml_main = app-next-xml_main && ` <z2ui5:MyCC change=" ` && client->_event( 'MYCC' ) && `" value="` && client->_bind( mv_value ) && `"/>`. - ENDIF. - - app-next-xml_main = app-next-xml_main && `</body>` && |\n| && - `</html> ` && |\n| && - `</mvc:View>`. - - app-next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( app-next-xml_main ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_37.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_37.clas.locals_imp.abap deleted file mode 100644 index 03056145..00000000 --- a/src/00/z2ui5_cl_app_demo_37.clas.locals_imp.abap +++ /dev/null @@ -1,136 +0,0 @@ -*"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations -class lcl_repository DEFINITION. - -PUBLIC SECTION. - - class-METHODS get_js_barcode_lib - returning - value(result) type string. - - -endclass. - -CLASS lcl_repository IMPLEMENTATION. - - METHOD get_js_barcode_lib. - - result = `` && |\n| && - `!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable` && -`:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"obj` && -`ect"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){` && -`var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=7)}([function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?` && -`Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,s=(e.SHIFT=98,e.START_A=103),f=e.START_B=104,c=e.START_C=105;e.MODULO=1` && -`03,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},s,i),o(r,f,a),o(r,c,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHA` && -`RS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,1001110110` && -`0,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3` && -`,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11` && -`100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111` && -`100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,1110101` && -`1110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1` && -`,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(11),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){!function(t,e){` && -`if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof ` && -`e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t.substring(1),n));return r.bytes=t.split("").map((function(t){return t.charCodeAt(0)})),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression mu` && -`st either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid"` && -`,value:function(){return/^[\x00-\x7F\xC8-\xD3]+$/.test(this.data)}},{key:"encode",value:function(){var t=this.bytes,n=t.shift()-105,r=u.SET_BY_CODE[n];if(void 0===r)throw new RangeError("The encoding does not start with a start character.");!0===th` && -`is.shouldEncodeAsEan128()&&t.unshift(u.FNC1);var o=e.next(t,1,r);return{text:this.text===this.data?this.text.replace(/[^\x20-\x7E]/g,""):this.text,data:e.getBar(n)+o.result+e.getBar((o.checksum+n)%u.MODULO)+e.getBar(u.STOP)}}},{key:"shouldEncodeAsE` && -`an128",value:function(){var t=this.options.ean128||!1;return"string"==typeof t&&(t="true"===t.toLowerCase()),t}}],[{key:"getBar",value:function(t){return u.BARS[t]?u.BARS[t].toString():""}},{key:"correctIndex",value:function(t,e){if(e===u.SET_A){va` && -`r n=t.shift();return n<32?n+64:n-32}return e===u.SET_B?t.shift()-32:10*(t.shift()-48)+t.shift()-48}},{key:"next",value:function(t,n,r){if(!t.length)return{result:"",checksum:0};var o=void 0,i=void 0;if(t[0]>=200){i=t.shift()-105;var a=u.SWAP[i];voi` && -`d 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var s=i*n;return{result:e.getBar(i)+o.result,checksum:s+o` && -`.checksum}}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnPr` && -`operty.call(n,r)&&(t[r]=n[r])}return t};e.default=function(t,e){return r({},t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=["width","height","textMargin","fontSize","margin","marginT` && -`op","marginBottom","marginLeft","marginRight"];for(var n in e)e.hasOwnProperty(n)&&(n=e[n],"string"==typeof t[n]&&(t[n]=parseInt(t[n],10)));"string"==typeof t.displayValue&&(t.displayValue="false"!=t.displayValue);return t}},function(t,e,n){"use st` && -`rict";Object.defineProperty(e,"__esModule",{value:!0});var r={width:2,height:100,format:"auto",displayValue:!0,fontOptions:"",font:"monospace",text:void 0,textAlign:"center",textPosition:"bottom",textMargin:2,fontSize:20,background:"#ffffff",lineCo` && -`lor:"#000000",margin:10,marginTop:void 0,marginBottom:void 0,marginLeft:void 0,marginRight:void 0,valid:function(){}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getTotalWidthOfEncodings=e.calculateE` && -`ncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var r,o=n(2),i=(r=o)&&r.__esModule?r:{default:r};function a(t,e){return e.height+(e.displayValue&&t.text.length>0?e.fontSize+e.textMargin:0)+e.marginTop+` && -`e.marginBottom}function u(t,e,n){if(n.displayValue&&e<t){if("center"==n.textAlign)return Math.floor((t-e)/2);if("left"==n.textAlign)return 0;if("right"==n.textAlign)return Math.floor(t-e)}return 0}function s(t,e,n){var r;if(n)r=n;else{if("undefined` && -`"==typeof document)return 0;r=document.createElement("canvas").getContext("2d")}r.font=e.fontOptions+" "+e.fontSize+"px "+e.font;var o=r.measureText(t);return o?o.width:0}e.getMaximumHeightOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)t[n]` && -`.height>e&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r<t.length;r++){var o,f=t[r],c=(0,i.default)(e,f.options);o=c.displayValue?s(f.text,c,n):0;var l=f.data.lengt` && -`h*c.width;f.width=Math.ceil(Math.max(o,l)),f.height=a(f,c),f.barcodePadding=u(o,l,c)}},e.getTotalWidthOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n].width;return e}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))` && -`throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function` && -`"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Obj` && -`ect.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.name="InvalidInputException",i.symbology=t` && -`,i.input=n,i.message='"'+i.input+'" is not a valid input for '+i.symbology,i}return i(e,Error),e}(),u=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="InvalidElementException",t.mess` && -`age="Not supported type to render on",t}return i(e,Error),e}(),s=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="NoElementException",t.message="No element to render on.",t}return i(` && -`e,Error),e}();e.InvalidInputException=a,e.InvalidElementException=u,e.NoElementException=s},function(t,e,n){"use strict";var r=d(n(8)),o=d(n(2)),i=d(n(16)),a=d(n(17)),u=d(n(18)),s=d(n(3)),f=d(n(24)),c=n(6),l=d(n(4));function d(t){return t&&t.__esMo` && -`dule?t:{default:t}}var p=function(){},h=function(t,e,n){var r=new p;if(void 0===t)throw Error("No element to render on was provided.");return r._renderProperties=(0,u.default)(t),r._encodings=[],r._options=l.default,r._errorHandler=new f.default(r)` && -`,void 0!==e&&((n=n||{}).format||(n.format=b()),r.options(n)[n.format](e,n).render()),r};for(var v in h.getModule=function(t){return r.default[t]},r.default)r.default.hasOwnProperty(v)&&g(r.default,v);function g(t,e){p.prototype[e]=p.prototype[e.toU` && -`pperCase()]=p.prototype[e.toLowerCase()]=function(n,r){var i=this;return i._errorHandler.wrapBarcodeCall((function(){r.text=void 0===r.text?void 0:""+r.text;var a=(0,o.default)(i._options,r);a=(0,s.default)(a);var u=t[e],f=y(n,u,a);return i._encodi` && -`ngs.push(f),i}))}}function y(t,e,n){var r=new e(t=""+t,n);if(!r.valid())throw new c.InvalidInputException(r.constructor.name,t);var a=r.encode();a=(0,i.default)(a);for(var u=0;u<a.length;u++)a[u].options=(0,o.default)(n,a[u].options);return a}funct` && -`ion b(){return r.default.CODE128?"CODE128":Object.keys(r.default)[0]}function _(t,e,n){e=(0,i.default)(e);for(var r=0;r<e.length;r++)e[r].options=(0,o.default)(n,e[r].options),(0,a.default)(e[r].options);(0,a.default)(n),new(0,t.renderer)(t.element` && -`,e,n).render(),t.afterRender&&t.afterRender()}p.prototype.options=function(t){return this._options=(0,o.default)(this._options,t),this},p.prototype.blank=function(t){var e=new Array(t+1).join("0");return this._encodings.push({data:e}),this},p.proto` && -`type.init=function(){var t;if(this._renderProperties)for(var e in Array.isArray(this._renderProperties)||(this._renderProperties=[this._renderProperties]),this._renderProperties){t=this._renderProperties[e];var n=(0,o.default)(this._options,t.optio` && -`ns);"auto"==n.format&&(n.format=b()),this._errorHandler.wrapBarcodeCall((function(){var e=y(n.value,r.default[n.format.toUpperCase()],n);_(t,e,n)}))}},p.prototype.render=function(){if(!this._renderProperties)throw new c.NoElementException;if(Array.` && -`isArray(this._renderProperties))for(var t=0;t<this._renderProperties.length;t++)_(this._renderProperties[t],this._encodings,this._options);else _(this._renderProperties,this._encodings,this._options);return this},p.prototype._defaults=l.default,"un` && -`defined"!=typeof window&&(window.JsBarcode=h),"undefined"!=typeof jQuery&&(jQuery.fn.JsBarcode=function(t,e){var n=[];return jQuery(this).each((function(){n.push(this)})),h(n,t,e)}),t.exports=h},function(t,e,n){"use strict";Object.defineProperty(e,` && -`"__esModule",{value:!0});var r=n(9);e.default={CODE128:r.CODE128,CODE128A:r.CODE128A,CODE128B:r.CODE128B,CODE128C:r.CODE128C}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=` && -`void 0;var r=u(n(10)),o=u(n(13)),i=u(n(14)),a=u(n(15));function u(t){return t&&t.__esModule?t:{default:t}}e.CODE128=r.default,e.CODE128A=o.default,e.CODE128B=i.default,e.CODE128C=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__es` && -`Module",{value:!0});var r=i(n(1)),o=i(n(12));function i(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=ty` && -`peof e?t:e}var u=function(t){function e(t,n){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),/^[\x00-\x7F\xC8-\xD3]+$/.test(t))var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,(0` && -`,o.default)(t),n));else r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return a(r)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.p` && -`rototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=u},function(t,e,n){"use strict";Object.define` && -`Property(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";Object` && -`.defineProperty(e,"__esModule",{value:!0});var r=n(0),o=function(t){return t.match(new RegExp("^"+r.A_CHARS+"*"))[0].length},i=function(t){return t.match(new RegExp("^"+r.B_CHARS+"*"))[0].length},a=function(t){return t.match(new RegExp("^"+r.C_CHAR` && -`S+"*"))[0]};function u(t,e){var n=e?r.A_CHARS:r.B_CHARS,o=t.match(new RegExp("^("+n+"+?)(([0-9]{2}){2,})([^0-9]|$)"));if(o)return o[1]+String.fromCharCode(204)+s(t.substring(o[1].length));var i=t.match(new RegExp("^"+n+"+"))[0];return i.length===t.` && -`length?t:i+String.fromCharCode(e?205:206)+u(t.substring(i.length),!e)}function s(t){var e=a(t),n=e.length;if(n===t.length)return t;t=t.substring(n);var r=o(t)>=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;i` && -`f(a(t).length>=2)e=r.C_START_CHAR+s(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProp` && -`erty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n` && -`&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)t` && -`hrow new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.A_START_CHAR+t,n))}return function(t,e){if("functi` && -`on"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?O` && -`bject.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.A_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var` && -` r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),` && -`i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn'` && -`t been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.B_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new T` && -`ypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto` && -`__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.B_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for` && -`(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{def` && -`ault:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't` && -` been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.C_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must eit` && -`her be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value` && -`:function(){return new RegExp("^"+u.C_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=[];return function t(n){if(Array.isArray(n))f` && -`or(var r=0;r<n.length;r++)t(n[r]);else n.text=n.text||"",n.data=n.data||"",e.push(n)}(t),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.marginTop=t.marginTop||t.margin,t.marginBottom` && -`=t.marginBottom||t.margin,t.marginRight=t.marginRight||t.margin,t.marginLeft=t.marginLeft||t.margin,t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?` && -`function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=u(n(19)),i=u(n(20)),a=n(6);function u(t){return t&&t.__esModule?t:{default:t}}function s(t){if("string"=` && -`=typeof t)return function(t){var e=document.querySelectorAll(t);if(0===e.length)return;for(var n=[],r=0;r<e.length;r++)n.push(s(e[r]));return n}(t);if(Array.isArray(t)){for(var e=[],n=0;n<t.length;n++)e.push(s(t[n]));return e}if("undefined"!=typeof` && -` HTMLCanvasElement&&t instanceof HTMLImageElement)return u=t,{element:f=document.createElement("canvas"),options:(0,o.default)(u),renderer:i.default.CanvasRenderer,afterRender:function(){u.setAttribute("src",f.toDataURL())}};if(t&&t.nodeName&&"svg"` && -`===t.nodeName.toLowerCase()||"undefined"!=typeof SVGElement&&t instanceof SVGElement)return{element:t,options:(0,o.default)(t),renderer:i.default.SVGRenderer};if("undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement)return{element:t` && -`,options:(0,o.default)(t),renderer:i.default.CanvasRenderer};if(t&&t.getContext)return{element:t,renderer:i.default.CanvasRenderer};if(t&&"object"===(void 0===t?"undefined":r(t))&&!t.nodeName)return{element:t,renderer:i.default.ObjectRenderer};thro` && -`w new a.InvalidElementException;var u,f}e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(3)),o=i(n(4));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){var e={};for(var n i` && -`n o.default)o.default.hasOwnProperty(n)&&(t.hasAttribute("jsbarcode-"+n.toLowerCase())&&(e[n]=t.getAttribute("jsbarcode-"+n.toLowerCase())),t.hasAttribute("data-"+n.toLowerCase())&&(e[n]=t.getAttribute("data-"+n.toLowerCase())));return e.value=t.ge` && -`tAttribute("jsbarcode-value")||t.getAttribute("data-value"),e=(0,r.default)(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(21)),o=a(n(22)),i=a(n(23));function a(t){return t&&t.__esModule?t:{default:t}}e` && -`.default={CanvasRenderer:r.default,SVGRenderer:o.default,ObjectRenderer:i.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable` && -`=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s=function(){function t(e,n,r` && -`){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.canvas=e,this.encodings=n,this.options=r}return o(t,[{key:"render",value:function(){if(!this.canvas.getContext)throw new Error("The browser` && -` does not support canvas.");this.prepareCanvas();for(var t=0;t<this.encodings.length;t++){var e=(0,a.default)(this.options,this.encodings[t].options);this.drawCanvasBarcode(e,this.encodings[t]),this.drawCanvasText(e,this.encodings[t]),this.moveCanv` && -`asDrawing(this.encodings[t])}this.restoreCanvas()}},{key:"prepareCanvas",value:function(){var t=this.canvas.getContext("2d");t.save(),(0,u.calculateEncodingAttributes)(this.encodings,this.options,t);var e=(0,u.getTotalWidthOfEncodings)(this.encodin` && -`gs),n=(0,u.getMaximumHeightOfEncodings)(this.encodings);this.canvas.width=e+this.options.marginLeft+this.options.marginRight,this.canvas.height=n,t.clearRect(0,0,this.canvas.width,this.canvas.height),this.options.background&&(t.fillStyle=this.optio` && -`ns.background,t.fillRect(0,0,this.canvas.width,this.canvas.height)),t.translate(this.options.marginLeft,0)}},{key:"drawCanvasBarcode",value:function(t,e){var n,r=this.canvas.getContext("2d"),o=e.data;n="top"==t.textPosition?t.marginTop+t.fontSize+t` && -`.textMargin:t.marginTop,r.fillStyle=t.lineColor;for(var i=0;i<o.length;i++){var a=i*t.width+e.barcodePadding;"1"===o[i]?r.fillRect(a,n,t.width,t.height):o[i]&&r.fillRect(a,n,t.width,t.height*o[i])}}},{key:"drawCanvasText",value:function(t,e){var n,` && -`r,o=this.canvas.getContext("2d"),i=t.fontOptions+" "+t.fontSize+"px "+t.font;t.displayValue&&(r="top"==t.textPosition?t.marginTop+t.fontSize-t.textMargin:t.height+t.textMargin+t.marginTop+t.fontSize,o.font=i,"left"==t.textAlign||e.barcodePadding>0?` && -`(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restor` && -`eCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumera` && -`ble=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s="http://www.w3.org/2000/` && -`svg",f=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.svg=e,this.encodings=n,this.options=r,this.document=r.xmlDocument||document}return o(t,[{key:"render",val` && -`ue:function(){var t=this.options.marginLeft;this.prepareSVG();for(var e=0;e<this.encodings.length;e++){var n=this.encodings[e],r=(0,a.default)(this.options,n.options),o=this.createGroup(t,r.marginTop,this.svg);this.setGroupOptions(o,r),this.drawSvg` && -`Barcode(o,r,n),this.drawSVGText(o,r,n),t+=n.width}}},{key:"prepareSVG",value:function(){for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);(0,u.calculateEncodingAttributes)(this.encodings,this.options);var t=(0,u.getTotalWidthOfEnc` && -`odings)(this.encodings),e=(0,u.getMaximumHeightOfEncodings)(this.encodings),n=t+this.options.marginLeft+this.options.marginRight;this.setSvgAttributes(n,e),this.options.background&&this.drawRect(0,0,n,e,this.svg).setAttribute("style","fill:"+this.o` && -`ptions.background+";")}},{key:"drawSvgBarcode",value:function(t,e,n){var r,o=n.data;r="top"==e.textPosition?e.fontSize+e.textMargin:0;for(var i=0,a=0,u=0;u<o.length;u++)a=u*e.width+n.barcodePadding,"1"===o[u]?i++:i>0&&(this.drawRect(a-e.width*i,r,e` && -`.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(s,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fo` && -`ntSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor"` && -`,"end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttrib` && -`ute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",s),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(` && -`0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(s,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"` && -`+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(s,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.defaul` && -`t=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.definePro` && -`perty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.object=e,this.encoding` && -`s=n,this.options=r}return r(t,[{key:"render",value:function(){this.object.encodings=this.encodings}}]),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.` && -`length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e){!function(t,e){if` && -`(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e}return r(t,[{key:"handleCatch",value:function(t){if("InvalidInputException"!==t.name)throw t;if(this.api._options.valid===this.api._defaults.valid)throw` && -` t.message;this.api._options.valid(!1),this.api.render=function(){}}},{key:"wrapBarcodeCall",value:function(t){try{var e=t.apply(void 0,arguments);return this.api._options.valid(!0),e}catch(t){return this.handleCatch(t),this.api}}}]),t}();e.default` && -`=o}]);`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_37.clas.xml b/src/00/z2ui5_cl_app_demo_37.clas.xml deleted file mode 100644 index f72ed163..00000000 --- a/src/00/z2ui5_cl_app_demo_37.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_37</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - custom control</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_38.clas.abap b/src/00/z2ui5_cl_app_demo_38.clas.abap deleted file mode 100644 index ceaae2a5..00000000 --- a/src/00/z2ui5_cl_app_demo_38.clas.abap +++ /dev/null @@ -1,157 +0,0 @@ -CLASS z2ui5_cl_app_demo_38 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_msg, - type TYPE string, - title TYPE string, - subtitle TYPE string, - description TYPE string, - group TYPE string, - END OF ty_msg. - - DATA t_msg TYPE STANDARD TABLE OF ty_msg WITH EMPTY KEY. - DATA check_initialized TYPE abap_bool. - - 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. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_38 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-get = client->get( ). - app-view_popup = ``. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - t_msg = VALUE #( - ( description = 'descr' subtitle = 'subtitle' title = 'title' type = 'Error' group = 'group 01' ) - ( description = 'descr' subtitle = 'subtitle' title = 'title' type = 'Information' group = 'group 01' ) - ( description = 'descr' subtitle = 'subtitle' title = 'title' type = 'Information' group = 'group 02' ) - ( description = 'descr' subtitle = 'subtitle' title = 'title' type = 'Success' group = 'group 03' ) ). - - ENDIF. - - CASE client->get( )-event. - WHEN 'POPUP'. - app-view_popup = 'POPUP'. - WHEN 'POPOVER'. - app-view_popup = 'POPOVER'. - app-next-popover_open_by_id = 'test'. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - List' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = `https://twitter.com/OblomovDev/status/1647246029828268032` - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - page->button( text = 'Messages' press = client->_event( 'POPUP' ) ). - page->message_view( - items = client->_bind( t_msg ) - groupitems = abap_true - )->message_item( - type = `{TYPE}` - title = `{TITLE}` - subtitle = `{SUBTITLE}` - description = `{DESCRIPTION}` - groupname = `{GROUP}` ). - - page->footer( )->overflow_toolbar( - )->button( - id = 'test' - text = 'Messages (6)' - press = client->_event( 'POPOVER' ) - type = 'Emphasized' - )->toolbar_spacer( - )->button( - text = 'Send to Server' - press = client->_event( 'BUTTON_SEND' ) - type = 'Success' ). - - app-next-xml_main = page->get_root( )->xml_get( ). - - DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ). - CASE app-view_popup. - - WHEN 'POPOVER'. - - popup = popup->popover( - placement = `Top` - title = `Messages` - contentheight = '50%' - contentwidth = '50%' ). - - popup->message_view( - items = client->_bind( t_msg ) - groupitems = abap_true - )->message_item( - type = `{TYPE}` - title = `{TITLE}` - subtitle = `{SUBTITLE}` - description = `{DESCRIPTION}` - groupname = `{GROUP}` ). - - WHEN 'POPUP'. - - popup = popup->dialog( - title = `Messages` - contentheight = '50%' - contentwidth = '50%' ). - - popup->message_view( - items = client->_bind( t_msg ) - groupitems = abap_true - )->message_item( - type = `{TYPE}` - title = `{TITLE}` - subtitle = `{SUBTITLE}` - description = `{DESCRIPTION}` - groupname = `{GROUP}` ). - - popup->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'close' - press = client->_event_close_popup( ) ). - - ENDCASE. - - app-next-xml_popup = popup->get_root( )->xml_get( ). - - client->set_next( app-next ). - CLEAR app-get. - CLEAR app-next. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_38.clas.xml b/src/00/z2ui5_cl_app_demo_38.clas.xml deleted file mode 100644 index 04eabff8..00000000 --- a/src/00/z2ui5_cl_app_demo_38.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_38</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>messages - message manager</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_39.clas.abap b/src/00/z2ui5_cl_app_demo_39.clas.abap deleted file mode 100644 index 4fdb6567..00000000 --- a/src/00/z2ui5_cl_app_demo_39.clas.abap +++ /dev/null @@ -1,208 +0,0 @@ -CLASS z2ui5_cl_app_demo_39 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_value TYPE string. - - PROTECTED SECTION. - - DATA client TYPE REF TO z2ui5_if_client. - DATA: - BEGIN OF app, - check_initialized TYPE abap_bool, - 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_main. - METHODS z2ui5_on_render_popup. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_39 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - app-get = client->get( ). - me->client = client. - - 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_main( ). - z2ui5_on_render_popup( ). - - client->set_next( app-next ). - CLEAR app-get. - CLEAR app-next. - - ENDMETHOD. - - - METHOD z2ui5_on_event. - - CASE app-get-event. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - WHEN 'POPUP'. - client->popup_message_box( 'Event raised value:' && mv_value ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - mv_value = '200'. - - ENDMETHOD. - - - METHOD z2ui5_on_render_main. - - app-next-xml_main = `<mvc:View controllerName="sap.m.sample.GenericTileAsLaunchTile.Page"` && |\n| && - `xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc"` && |\n| && - ` xmlns:form="sap.ui.layout.form">` && |\n| && - ` <form:SimpleForm editable="true" width="40rem">` && |\n| && - ` <Label text="Loading time" />` && |\n| && - ` <Input id="loadingMinSeconds" width="8rem" type="Number" description="seconds" value="-1"/>` && |\n| && - ` <Button text="Start loading" type="Emphasized" press="onFormSubmit"/>` && |\n| && - ` </form:SimpleForm> ` && |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Country-Specific Profit Margin" press="onPress"` && |\n| && - ` frameType="OneByHalf" subheader="Subtitle">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/SAPLogoLargeTile_28px_height.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` subheader="Subtitle" press="press" frameType= "TwoByHalf">` && |\n| && - ` <TileContent />` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Manage Activity Master Data Type"` && |\n| && - ` subheader="Subtitle" press="press" frameType= "TwoByHalf">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` <ImageContent src="sap-icon://home-share" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Right click to open in new tab"` && |\n| && - ` subheader="Link tile" press="press" url="https://www.sap.com/">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/SAPLogoLargeTile_28px_height.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` subheader="Subtitle" press="press">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` <ImageContent src="sap-icon://home-share" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Manage Activity Master Data Type"` && |\n| && - ` subheader="Subtitle" press="press">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/SAPLogoLargeTile_28px_height.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Manage Activity Master Data Type With a Long Title Without an Icon"` && |\n| && - ` subheader="Subtitle Launch Tile" mode="HeaderMode" press="press">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter" />` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Jessica D. Prince Senior Consultant"` && |\n| && - ` subheader="Department" press="press" appShortcut = "shortcut" systemInfo = "systeminfo">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/ProfileImage_LargeGenTile.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` press="press" frameType= "OneByHalf">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Sales Fulfillment Application Title"` && |\n| && - ` press="press" frameType= "TwoByHalf">` && |\n| && - ` <TileContent unit="EUR" footer="Current Quarter">` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - |\n| && - ` <GenericTile class="sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout" header="Jessica D. Prince Senior Consultant"` && |\n| && - ` subheader="Department" press="press" frameType="TwoByHalf">` && |\n| && - ` <TileContent>` && |\n| && - ` <ImageContent src="test-resources/sap/m/demokit/sample/GenericTileAsLaunchTile/images/ProfileImage_LargeGenTile.png" />` && |\n| && - ` </TileContent>` && |\n| && - ` </GenericTile>` && |\n| && - `</mvc:View>`. - - app-next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( app-next-xml_main ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_popup. - - app-next-xml_popup = `<core:FragmentDefinition` && |\n| && - ` xmlns="sap.m"` && |\n| && - ` xmlns:core="sap.ui.core">` && |\n| && - ` <ViewSettingsDialog` && |\n| && - ` confirm="handleConfirm">` && |\n| && - ` <sortItems>` && |\n| && - ` <ViewSettingsItem text="Field 1" key="1" selected="true" />` && |\n| && - ` <ViewSettingsItem text="Field 2" key="2" />` && |\n| && - ` <ViewSettingsItem text="Field 3" key="3" />` && |\n| && - ` </sortItems>` && |\n| && - ` <groupItems>` && |\n| && - ` <ViewSettingsItem text="Field 1" key="1" selected="true" />` && |\n| && - ` <ViewSettingsItem text="Field 2" key="2" />` && |\n| && - ` <ViewSettingsItem text="Field 3" key="3" />` && |\n| && - ` </groupItems>` && |\n| && - ` <filterItems>` && |\n| && - ` <ViewSettingsFilterItem text="Field1" key="1">` && |\n| && - ` <items>` && |\n| && - ` <ViewSettingsItem text="Value A" key="1a" />` && |\n| && - ` <ViewSettingsItem text="Value B" key="1b" />` && |\n| && - ` <ViewSettingsItem text="Value C" key="1c" />` && |\n| && - ` </items>` && |\n| && - ` </ViewSettingsFilterItem>` && |\n| && - ` <ViewSettingsFilterItem text="Field2" key="2">` && |\n| && - ` <items>` && |\n| && - ` <ViewSettingsItem text="Value A" key="2a" />` && |\n| && - ` <ViewSettingsItem text="Value B" key="2b" />` && |\n| && - ` <ViewSettingsItem text="Value C" key="2c" />` && |\n| && - ` </items>` && |\n| && - ` </ViewSettingsFilterItem>` && |\n| && - ` <ViewSettingsFilterItem text="Field3" key="3">` && |\n| && - ` <items>` && |\n| && - ` <ViewSettingsItem text="Value A" key="3a" />` && |\n| && - ` <ViewSettingsItem text="Value B" key="3b" />` && |\n| && - ` <ViewSettingsItem text="Value C" key="3c" />` && |\n| && - ` </items>` && |\n| && - ` </ViewSettingsFilterItem>` && |\n| && - ` </filterItems>` && |\n| && - ` </ViewSettingsDialog>` && |\n| && - `</core:FragmentDefinition>`. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_39.clas.xml b/src/00/z2ui5_cl_app_demo_39.clas.xml deleted file mode 100644 index 41264b95..00000000 --- a/src/00/z2ui5_cl_app_demo_39.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_39</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - import xml view 2</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_40.clas.abap b/src/00/z2ui5_cl_app_demo_40.clas.abap deleted file mode 100644 index 533f2cd6..00000000 --- a/src/00/z2ui5_cl_app_demo_40.clas.abap +++ /dev/null @@ -1,105 +0,0 @@ -CLASS z2ui5_cl_app_demo_40 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA mv_barcode TYPE string. - DATA mv_load_lib TYPE abap_bool. - - 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_event. - METHODS z2ui5_on_render. - - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_40 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-get = client->get( ). - app-view_popup = ``. - - 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 'LOAD_BC'. - client->popup_message_box( 'JSBarcode Library loaded'). - mv_load_lib = abap_true. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - app-next-xml_main = `<mvc:View controllerName="project1.controller.View1"` && |\n| && - ` xmlns:mvc="sap.ui.core.mvc" displayBlock="true"` && |\n| && - ` xmlns:z2ui5="z2ui5" xmlns:m="sap.m" xmlns="http://www.w3.org/1999/xhtml"` && |\n| && - ` ><m:Button ` && |\n| && - ` text="back" ` && |\n| && - ` press="` && client->_event( 'BACK' ) && `" ` && |\n| && - ` class="sapUiContentPadding sapUiResponsivePadding--content"/> ` && |\n| && - ` <m:Link target="_blank" text="Source_Code" href="` && z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) && `"/>` && |\n| && - - `<html><head>` && |\n| && - `</head>` && |\n| && - `<body>` && |\n| && - `<m:Button text="LoadJSBarcode" press="` && client->_event( 'LOAD_BC' ) && `" />` && |\n| && - `<m:Input value="` && client->_bind( mv_barcode ) && `" />` && |\n| && - `<m:Button text="Display Barcode" press="` && client->_event( 'DISPLAY_BC' ) && `" />` && |\n| && - `<h1>JSBarcode Library</h1>` && |\n| && - ` <svg class="barcode"` && |\n| && - ` jsbarcode-format="upc"` && |\n| && - ` jsbarcode-value="` && mv_barcode && `"` && |\n| && - ` jsbarcode-textmargin="0"` && |\n| && - ` jsbarcode-fontoptions="bold">` && |\n| && - `</svg>` && |\n|. - IF mv_load_lib = abap_true. - mv_load_lib = abap_false. - app-next-xml_main = app-next-xml_main && `<script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/JsBarcode.all.min.js"> </script>`. - ENDIF. - - app-next-xml_main = app-next-xml_main && `<script> JsBarcode(".barcode").init(); </script>` && - `</body>` && |\n| && - `</html> ` && |\n| && - `</mvc:View>`. - - app-next-xml_main = z2ui5_cl_xml_view=>hlp_replace_controller_name( app-next-xml_main ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_40.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_40.clas.locals_imp.abap deleted file mode 100644 index 03056145..00000000 --- a/src/00/z2ui5_cl_app_demo_40.clas.locals_imp.abap +++ /dev/null @@ -1,136 +0,0 @@ -*"* use this source file for the definition and implementation of -*"* local helper classes, interface definitions and type -*"* declarations -class lcl_repository DEFINITION. - -PUBLIC SECTION. - - class-METHODS get_js_barcode_lib - returning - value(result) type string. - - -endclass. - -CLASS lcl_repository IMPLEMENTATION. - - METHOD get_js_barcode_lib. - - result = `` && |\n| && - `!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable` && -`:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"obj` && -`ect"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){` && -`var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=7)}([function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?` && -`Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,s=(e.SHIFT=98,e.START_A=103),f=e.START_B=104,c=e.START_C=105;e.MODULO=1` && -`03,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},s,i),o(r,f,a),o(r,c,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHA` && -`RS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,1001110110` && -`0,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3` && -`,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11` && -`100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111` && -`100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,1110101` && -`1110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1` && -`,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(11),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){!function(t,e){` && -`if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof ` && -`e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t.substring(1),n));return r.bytes=t.split("").map((function(t){return t.charCodeAt(0)})),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression mu` && -`st either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid"` && -`,value:function(){return/^[\x00-\x7F\xC8-\xD3]+$/.test(this.data)}},{key:"encode",value:function(){var t=this.bytes,n=t.shift()-105,r=u.SET_BY_CODE[n];if(void 0===r)throw new RangeError("The encoding does not start with a start character.");!0===th` && -`is.shouldEncodeAsEan128()&&t.unshift(u.FNC1);var o=e.next(t,1,r);return{text:this.text===this.data?this.text.replace(/[^\x20-\x7E]/g,""):this.text,data:e.getBar(n)+o.result+e.getBar((o.checksum+n)%u.MODULO)+e.getBar(u.STOP)}}},{key:"shouldEncodeAsE` && -`an128",value:function(){var t=this.options.ean128||!1;return"string"==typeof t&&(t="true"===t.toLowerCase()),t}}],[{key:"getBar",value:function(t){return u.BARS[t]?u.BARS[t].toString():""}},{key:"correctIndex",value:function(t,e){if(e===u.SET_A){va` && -`r n=t.shift();return n<32?n+64:n-32}return e===u.SET_B?t.shift()-32:10*(t.shift()-48)+t.shift()-48}},{key:"next",value:function(t,n,r){if(!t.length)return{result:"",checksum:0};var o=void 0,i=void 0;if(t[0]>=200){i=t.shift()-105;var a=u.SWAP[i];voi` && -`d 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var s=i*n;return{result:e.getBar(i)+o.result,checksum:s+o` && -`.checksum}}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnPr` && -`operty.call(n,r)&&(t[r]=n[r])}return t};e.default=function(t,e){return r({},t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=["width","height","textMargin","fontSize","margin","marginT` && -`op","marginBottom","marginLeft","marginRight"];for(var n in e)e.hasOwnProperty(n)&&(n=e[n],"string"==typeof t[n]&&(t[n]=parseInt(t[n],10)));"string"==typeof t.displayValue&&(t.displayValue="false"!=t.displayValue);return t}},function(t,e,n){"use st` && -`rict";Object.defineProperty(e,"__esModule",{value:!0});var r={width:2,height:100,format:"auto",displayValue:!0,fontOptions:"",font:"monospace",text:void 0,textAlign:"center",textPosition:"bottom",textMargin:2,fontSize:20,background:"#ffffff",lineCo` && -`lor:"#000000",margin:10,marginTop:void 0,marginBottom:void 0,marginLeft:void 0,marginRight:void 0,valid:function(){}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getTotalWidthOfEncodings=e.calculateE` && -`ncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var r,o=n(2),i=(r=o)&&r.__esModule?r:{default:r};function a(t,e){return e.height+(e.displayValue&&t.text.length>0?e.fontSize+e.textMargin:0)+e.marginTop+` && -`e.marginBottom}function u(t,e,n){if(n.displayValue&&e<t){if("center"==n.textAlign)return Math.floor((t-e)/2);if("left"==n.textAlign)return 0;if("right"==n.textAlign)return Math.floor(t-e)}return 0}function s(t,e,n){var r;if(n)r=n;else{if("undefined` && -`"==typeof document)return 0;r=document.createElement("canvas").getContext("2d")}r.font=e.fontOptions+" "+e.fontSize+"px "+e.font;var o=r.measureText(t);return o?o.width:0}e.getMaximumHeightOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)t[n]` && -`.height>e&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r<t.length;r++){var o,f=t[r],c=(0,i.default)(e,f.options);o=c.displayValue?s(f.text,c,n):0;var l=f.data.lengt` && -`h*c.width;f.width=Math.ceil(Math.max(o,l)),f.height=a(f,c),f.barcodePadding=u(o,l,c)}},e.getTotalWidthOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n].width;return e}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))` && -`throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function` && -`"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Obj` && -`ect.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.name="InvalidInputException",i.symbology=t` && -`,i.input=n,i.message='"'+i.input+'" is not a valid input for '+i.symbology,i}return i(e,Error),e}(),u=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="InvalidElementException",t.mess` && -`age="Not supported type to render on",t}return i(e,Error),e}(),s=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="NoElementException",t.message="No element to render on.",t}return i(` && -`e,Error),e}();e.InvalidInputException=a,e.InvalidElementException=u,e.NoElementException=s},function(t,e,n){"use strict";var r=d(n(8)),o=d(n(2)),i=d(n(16)),a=d(n(17)),u=d(n(18)),s=d(n(3)),f=d(n(24)),c=n(6),l=d(n(4));function d(t){return t&&t.__esMo` && -`dule?t:{default:t}}var p=function(){},h=function(t,e,n){var r=new p;if(void 0===t)throw Error("No element to render on was provided.");return r._renderProperties=(0,u.default)(t),r._encodings=[],r._options=l.default,r._errorHandler=new f.default(r)` && -`,void 0!==e&&((n=n||{}).format||(n.format=b()),r.options(n)[n.format](e,n).render()),r};for(var v in h.getModule=function(t){return r.default[t]},r.default)r.default.hasOwnProperty(v)&&g(r.default,v);function g(t,e){p.prototype[e]=p.prototype[e.toU` && -`pperCase()]=p.prototype[e.toLowerCase()]=function(n,r){var i=this;return i._errorHandler.wrapBarcodeCall((function(){r.text=void 0===r.text?void 0:""+r.text;var a=(0,o.default)(i._options,r);a=(0,s.default)(a);var u=t[e],f=y(n,u,a);return i._encodi` && -`ngs.push(f),i}))}}function y(t,e,n){var r=new e(t=""+t,n);if(!r.valid())throw new c.InvalidInputException(r.constructor.name,t);var a=r.encode();a=(0,i.default)(a);for(var u=0;u<a.length;u++)a[u].options=(0,o.default)(n,a[u].options);return a}funct` && -`ion b(){return r.default.CODE128?"CODE128":Object.keys(r.default)[0]}function _(t,e,n){e=(0,i.default)(e);for(var r=0;r<e.length;r++)e[r].options=(0,o.default)(n,e[r].options),(0,a.default)(e[r].options);(0,a.default)(n),new(0,t.renderer)(t.element` && -`,e,n).render(),t.afterRender&&t.afterRender()}p.prototype.options=function(t){return this._options=(0,o.default)(this._options,t),this},p.prototype.blank=function(t){var e=new Array(t+1).join("0");return this._encodings.push({data:e}),this},p.proto` && -`type.init=function(){var t;if(this._renderProperties)for(var e in Array.isArray(this._renderProperties)||(this._renderProperties=[this._renderProperties]),this._renderProperties){t=this._renderProperties[e];var n=(0,o.default)(this._options,t.optio` && -`ns);"auto"==n.format&&(n.format=b()),this._errorHandler.wrapBarcodeCall((function(){var e=y(n.value,r.default[n.format.toUpperCase()],n);_(t,e,n)}))}},p.prototype.render=function(){if(!this._renderProperties)throw new c.NoElementException;if(Array.` && -`isArray(this._renderProperties))for(var t=0;t<this._renderProperties.length;t++)_(this._renderProperties[t],this._encodings,this._options);else _(this._renderProperties,this._encodings,this._options);return this},p.prototype._defaults=l.default,"un` && -`defined"!=typeof window&&(window.JsBarcode=h),"undefined"!=typeof jQuery&&(jQuery.fn.JsBarcode=function(t,e){var n=[];return jQuery(this).each((function(){n.push(this)})),h(n,t,e)}),t.exports=h},function(t,e,n){"use strict";Object.defineProperty(e,` && -`"__esModule",{value:!0});var r=n(9);e.default={CODE128:r.CODE128,CODE128A:r.CODE128A,CODE128B:r.CODE128B,CODE128C:r.CODE128C}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=` && -`void 0;var r=u(n(10)),o=u(n(13)),i=u(n(14)),a=u(n(15));function u(t){return t&&t.__esModule?t:{default:t}}e.CODE128=r.default,e.CODE128A=o.default,e.CODE128B=i.default,e.CODE128C=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__es` && -`Module",{value:!0});var r=i(n(1)),o=i(n(12));function i(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=ty` && -`peof e?t:e}var u=function(t){function e(t,n){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),/^[\x00-\x7F\xC8-\xD3]+$/.test(t))var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,(0` && -`,o.default)(t),n));else r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return a(r)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.p` && -`rototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=u},function(t,e,n){"use strict";Object.define` && -`Property(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";Object` && -`.defineProperty(e,"__esModule",{value:!0});var r=n(0),o=function(t){return t.match(new RegExp("^"+r.A_CHARS+"*"))[0].length},i=function(t){return t.match(new RegExp("^"+r.B_CHARS+"*"))[0].length},a=function(t){return t.match(new RegExp("^"+r.C_CHAR` && -`S+"*"))[0]};function u(t,e){var n=e?r.A_CHARS:r.B_CHARS,o=t.match(new RegExp("^("+n+"+?)(([0-9]{2}){2,})([^0-9]|$)"));if(o)return o[1]+String.fromCharCode(204)+s(t.substring(o[1].length));var i=t.match(new RegExp("^"+n+"+"))[0];return i.length===t.` && -`length?t:i+String.fromCharCode(e?205:206)+u(t.substring(i.length),!e)}function s(t){var e=a(t),n=e.length;if(n===t.length)return t;t=t.substring(n);var r=o(t)>=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;i` && -`f(a(t).length>=2)e=r.C_START_CHAR+s(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProp` && -`erty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n` && -`&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)t` && -`hrow new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.A_START_CHAR+t,n))}return function(t,e){if("functi` && -`on"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?O` && -`bject.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.A_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var` && -` r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),` && -`i=n(1),a=(r=i)&&r.__esModule?r:{default:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn'` && -`t been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.B_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new T` && -`ypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto` && -`__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.B_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for` && -`(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(1),a=(r=i)&&r.__esModule?r:{def` && -`ault:r},u=n(0);var s=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't` && -` been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.C_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must eit` && -`her be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value` && -`:function(){return new RegExp("^"+u.C_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=[];return function t(n){if(Array.isArray(n))f` && -`or(var r=0;r<n.length;r++)t(n[r]);else n.text=n.text||"",n.data=n.data||"",e.push(n)}(t),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.marginTop=t.marginTop||t.margin,t.marginBottom` && -`=t.marginBottom||t.margin,t.marginRight=t.marginRight||t.margin,t.marginLeft=t.marginLeft||t.margin,t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?` && -`function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=u(n(19)),i=u(n(20)),a=n(6);function u(t){return t&&t.__esModule?t:{default:t}}function s(t){if("string"=` && -`=typeof t)return function(t){var e=document.querySelectorAll(t);if(0===e.length)return;for(var n=[],r=0;r<e.length;r++)n.push(s(e[r]));return n}(t);if(Array.isArray(t)){for(var e=[],n=0;n<t.length;n++)e.push(s(t[n]));return e}if("undefined"!=typeof` && -` HTMLCanvasElement&&t instanceof HTMLImageElement)return u=t,{element:f=document.createElement("canvas"),options:(0,o.default)(u),renderer:i.default.CanvasRenderer,afterRender:function(){u.setAttribute("src",f.toDataURL())}};if(t&&t.nodeName&&"svg"` && -`===t.nodeName.toLowerCase()||"undefined"!=typeof SVGElement&&t instanceof SVGElement)return{element:t,options:(0,o.default)(t),renderer:i.default.SVGRenderer};if("undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement)return{element:t` && -`,options:(0,o.default)(t),renderer:i.default.CanvasRenderer};if(t&&t.getContext)return{element:t,renderer:i.default.CanvasRenderer};if(t&&"object"===(void 0===t?"undefined":r(t))&&!t.nodeName)return{element:t,renderer:i.default.ObjectRenderer};thro` && -`w new a.InvalidElementException;var u,f}e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(3)),o=i(n(4));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){var e={};for(var n i` && -`n o.default)o.default.hasOwnProperty(n)&&(t.hasAttribute("jsbarcode-"+n.toLowerCase())&&(e[n]=t.getAttribute("jsbarcode-"+n.toLowerCase())),t.hasAttribute("data-"+n.toLowerCase())&&(e[n]=t.getAttribute("data-"+n.toLowerCase())));return e.value=t.ge` && -`tAttribute("jsbarcode-value")||t.getAttribute("data-value"),e=(0,r.default)(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(21)),o=a(n(22)),i=a(n(23));function a(t){return t&&t.__esModule?t:{default:t}}e` && -`.default={CanvasRenderer:r.default,SVGRenderer:o.default,ObjectRenderer:i.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable` && -`=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s=function(){function t(e,n,r` && -`){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.canvas=e,this.encodings=n,this.options=r}return o(t,[{key:"render",value:function(){if(!this.canvas.getContext)throw new Error("The browser` && -` does not support canvas.");this.prepareCanvas();for(var t=0;t<this.encodings.length;t++){var e=(0,a.default)(this.options,this.encodings[t].options);this.drawCanvasBarcode(e,this.encodings[t]),this.drawCanvasText(e,this.encodings[t]),this.moveCanv` && -`asDrawing(this.encodings[t])}this.restoreCanvas()}},{key:"prepareCanvas",value:function(){var t=this.canvas.getContext("2d");t.save(),(0,u.calculateEncodingAttributes)(this.encodings,this.options,t);var e=(0,u.getTotalWidthOfEncodings)(this.encodin` && -`gs),n=(0,u.getMaximumHeightOfEncodings)(this.encodings);this.canvas.width=e+this.options.marginLeft+this.options.marginRight,this.canvas.height=n,t.clearRect(0,0,this.canvas.width,this.canvas.height),this.options.background&&(t.fillStyle=this.optio` && -`ns.background,t.fillRect(0,0,this.canvas.width,this.canvas.height)),t.translate(this.options.marginLeft,0)}},{key:"drawCanvasBarcode",value:function(t,e){var n,r=this.canvas.getContext("2d"),o=e.data;n="top"==t.textPosition?t.marginTop+t.fontSize+t` && -`.textMargin:t.marginTop,r.fillStyle=t.lineColor;for(var i=0;i<o.length;i++){var a=i*t.width+e.barcodePadding;"1"===o[i]?r.fillRect(a,n,t.width,t.height):o[i]&&r.fillRect(a,n,t.width,t.height*o[i])}}},{key:"drawCanvasText",value:function(t,e){var n,` && -`r,o=this.canvas.getContext("2d"),i=t.fontOptions+" "+t.fontSize+"px "+t.font;t.displayValue&&(r="top"==t.textPosition?t.marginTop+t.fontSize-t.textMargin:t.height+t.textMargin+t.marginTop+t.fontSize,o.font=i,"left"==t.textAlign||e.barcodePadding>0?` && -`(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restor` && -`eCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumera` && -`ble=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(2),a=(r=i)&&r.__esModule?r:{default:r},u=n(5);var s="http://www.w3.org/2000/` && -`svg",f=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.svg=e,this.encodings=n,this.options=r,this.document=r.xmlDocument||document}return o(t,[{key:"render",val` && -`ue:function(){var t=this.options.marginLeft;this.prepareSVG();for(var e=0;e<this.encodings.length;e++){var n=this.encodings[e],r=(0,a.default)(this.options,n.options),o=this.createGroup(t,r.marginTop,this.svg);this.setGroupOptions(o,r),this.drawSvg` && -`Barcode(o,r,n),this.drawSVGText(o,r,n),t+=n.width}}},{key:"prepareSVG",value:function(){for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);(0,u.calculateEncodingAttributes)(this.encodings,this.options);var t=(0,u.getTotalWidthOfEnc` && -`odings)(this.encodings),e=(0,u.getMaximumHeightOfEncodings)(this.encodings),n=t+this.options.marginLeft+this.options.marginRight;this.setSvgAttributes(n,e),this.options.background&&this.drawRect(0,0,n,e,this.svg).setAttribute("style","fill:"+this.o` && -`ptions.background+";")}},{key:"drawSvgBarcode",value:function(t,e,n){var r,o=n.data;r="top"==e.textPosition?e.fontSize+e.textMargin:0;for(var i=0,a=0,u=0;u<o.length;u++)a=u*e.width+n.barcodePadding,"1"===o[u]?i++:i>0&&(this.drawRect(a-e.width*i,r,e` && -`.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(s,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fo` && -`ntSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor"` && -`,"end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttrib` && -`ute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",s),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(` && -`0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(s,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"` && -`+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(s,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.defaul` && -`t=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.definePro` && -`perty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.object=e,this.encoding` && -`s=n,this.options=r}return r(t,[{key:"render",value:function(){this.object.encodings=this.encodings}}]),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.` && -`length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e){!function(t,e){if` && -`(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e}return r(t,[{key:"handleCatch",value:function(t){if("InvalidInputException"!==t.name)throw t;if(this.api._options.valid===this.api._defaults.valid)throw` && -` t.message;this.api._options.valid(!1),this.api.render=function(){}}},{key:"wrapBarcodeCall",value:function(t){try{var e=t.apply(void 0,arguments);return this.api._options.valid(!0),e}catch(t){return this.handleCatch(t),this.api}}}]),t}();e.default` && -`=o}]);`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_40.clas.xml b/src/00/z2ui5_cl_app_demo_40.clas.xml deleted file mode 100644 index aab3b409..00000000 --- a/src/00/z2ui5_cl_app_demo_40.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_40</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>extension - ext library</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_41.clas.abap b/src/00/z2ui5_cl_app_demo_41.clas.abap deleted file mode 100644 index 84291e7a..00000000 --- a/src/00/z2ui5_cl_app_demo_41.clas.abap +++ /dev/null @@ -1,140 +0,0 @@ -CLASS z2ui5_cl_app_demo_41 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - 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. - - 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_41 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - 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 '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. - - app-next-s_timer-interval_ms = '2000'. - app-next-s_timer-event_finished = 'TIMER_FINISHED'. - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - mv_counter = 1. - - 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'. - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - DATA(lo_view) = z2ui5_cl_xml_view=>factory( )->shell( )->page( - 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=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( - ). - - 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. - - lo_view->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( ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_41.clas.xml b/src/00/z2ui5_cl_app_demo_41.clas.xml deleted file mode 100644 index 686abaf7..00000000 --- a/src/00/z2ui5_cl_app_demo_41.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_41</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>demo - monitor</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_42.clas.abap b/src/00/z2ui5_cl_app_demo_42.clas.abap deleted file mode 100644 index 1906499f..00000000 --- a/src/00/z2ui5_cl_app_demo_42.clas.abap +++ /dev/null @@ -1,189 +0,0 @@ -CLASS z2ui5_cl_app_demo_42 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_42 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - ENDIF. - - - CASE client->get( )-event. - - WHEN 'BUTTON_ROUNDTRIP'. - DATA(lv_dummy) = 'user pressed a button, your custom implementation can be called here'. - - WHEN 'BUTTON_MSG_BOX'. - client->popup_message_box( - text = 'this is a message box with a custom text' - type = 'success' ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - DATA(view) = Z2UI5_CL_XML_VIEW=>factory( ). - - - DATA(page) = view->object_page_layout( - showtitleinheadercontent = abap_true - showeditheaderbutton = abap_true - editheaderbuttonpress = client->_event( 'EDIT_HEADER_PRESS' ) - uppercaseanchorbar = abap_false - ). - - DATA(header_title) = page->header_title( )->object_page_dyn_header_title( ). - - header_title->expanded_heading( - )->hbox( - )->title( text = 'Oblomov Dev' wrapping = abap_true ). - - header_title->snapped_heading( - )->flex_box( alignitems = `Center` - )->avatar( src = lcl_help=>get_avatar( ) class = 'sapUiTinyMarginEnd' - )->title( text = 'Oblomov Dev' wrapping = abap_true ). - - header_title->expanded_content( ns = `uxap` )->text( `abap2UI5 Developer` ). - header_title->snapped_Content( ns = `uxap` )->text( `abap2UI5 Developer` ). - header_title->snapped_Title_On_Mobile( )->title( `abap2UI5 Developer` ). - - header_title->actions( ns = `uxap` )->overflow_toolbar( - )->overflow_toolbar_button( - icon = `sap-icon://edit` - text = 'edit header' - type = 'Emphasized' - tooltip = 'edit' - )->overflow_toolbar_button( - icon = `sap-icon://pull-down` - text = 'show section' - type = 'Emphasized' - tooltip = 'pull-down' - )->overflow_toolbar_button( - icon = `sap-icon://show` - text = 'show state' - tooltip = 'show' - )->button( - " icon = `sap-icon://edit` - text = 'Go Back' - press = client->_event( 'BACK' ) - ). - - DATA(header_content) = page->header_Content( ns = 'uxap' ). - - header_content->flex_box( wrap = 'Wrap' - )->avatar( src = lcl_help=>get_avatar( ) class = 'sapUiSmallMarginEnd' displaySize = 'layout' - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->link( text = '+33 6 4512 5158' - )->link( text = 'email@email.com' - )->get_parent( - )->horizontal_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'Hello! I an abap2UI5 developer' - )->label( text = 'San Jose, USA' - )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'Hello! I an abap2UI5 developer' - )->vbox( - )->label( 'Achived goals' - )->progress_indicator( percentvalue = '30%' displayvalue = '30%' - )->get_parent( )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'San Jose, USA' - )->get_parent( - ). - - - data(sections) = page->sections( ). - - sections->object_page_section( titleuppercase = abap_false id = 'goalsSectionSS1' title = '2014 Goals Plan' - )->heading( ns = `uxap` - )->message_strip( text = 'this is a message strip' - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'goalssubSectionSS1' title = 'goals1' - )->blocks( - )->vbox( - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - )->label( text = 'goals1' - - )->get_parent( )->get_parent( )->get_parent( - )->object_page_sub_section( id = 'goalsSectionWS1' title = 'goals2' - )->blocks( - )->vbox( - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2' - )->label( text = 'goals2'). - - sections->object_page_section( titleuppercase = abap_false id = 'PersonalSection' title = 'Personal' - )->heading( ns = `uxap` - " )->message_strip( text = 'this is a message strip' - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'personalSectionSS1' title = 'Connect' - )->blocks( - )->label( text = 'telefon' - )->label( text = 'email' - )->get_parent( )->get_parent( - )->object_page_sub_section( id = 'personalSectionWS2' title = 'Payment information ' - )->blocks( - )->label( text = 'Hello! I an abap2UI5 developer' - )->label( text = 'San Jose, USA' ). - - - sections->object_page_section( titleuppercase = abap_false id = 'employmentSection' title = 'Employment' - )->heading( ns = `uxap` - " )->message_strip( text = 'this is a message strip' - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'empSectionSS1' title = 'Job information' - )->blocks( - )->label( text = 'info' - )->label( text = 'info' - )->label( text = 'info' - )->label( text = 'info' - )->label( text = 'info' - )->get_parent( )->get_parent( - )->object_page_sub_section( id = 'empSectionWS2' title = 'Employee Details ' - )->blocks( - )->vbox( - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' - )->label( text = 'details' ). - - client->set_next( value #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_42.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_42.clas.locals_imp.abap deleted file mode 100644 index b0f14e79..00000000 --- a/src/00/z2ui5_cl_app_demo_42.clas.locals_imp.abap +++ /dev/null @@ -1,207 +0,0 @@ -CLASS lcl_help DEFINITION. - - PUBLIC SECTION. - - class-METHODS get_avatar - RETURNING - VALUE(result) TYPE string. -ENDCLASS. - -CLASS lcl_help IMPLEMENTATION. - - METHOD get_avatar. - - result = `data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gKgSUNDX1BST0ZJTEUAAQEAAAKQbGNtcwQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA` && - `AAAAAAAAAAAAtkZXNjAAABCAAAADhjcHJ0AAABQAAAAE53dHB0AAABkAAAABRjaGFkAAABpAAAACxyWFlaAAAB0AAAABRiWFlaAAAB5AAAABRnWFlaAAAB+AAAABRyVFJDAAACDAAAACBnVFJDAAACLAAAACBiVFJDAAACTAAAACBjaHJtAAACbAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABwAAAAcAHMAUgBHAEIAIABiAHUAaQ` && - `BsAHQALQBpAG4AAG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAMgAAABwATgBvACAAYwBvAHAAeQByAGkAZwBoAHQALAAgAHUAcwBlACAAZgByAGUAZQBsAHkAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEoAAAXj///zKgAAB5sAAP2H///7ov///aMAAAPYAADAlFhZWiAAAAAAAABvlAAAOO4AAAOQWFlaIAAAAAAAAC` && - `SdAAAPgwAAtr5YWVogAAAAAAAAYqUAALeQAAAY3nBhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW2Nocm0AAAAAAAMAAAAAo9cAAFR7AABMzQAAmZoAACZmAAAPXP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBw` && - `cHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/CABEIAZABkAMBIgACEQEDEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAAAwQCBQYBBwj/xAAaAQEAAwEBAQAAAAAAAAAAAAAAAQ` && - `IDBAUG/9oADAMBAAIQAxAAAAH7KAAAAAAAAAAAh9pMrGnC8gxLKqhaUMqzdVLV49GkAAAAAAAAAAAAAAAAAPPdbSYqcNfyerdabSYcu3R5czFlfc2ebnlurvP0bO1t8Rntn3trmLvZhvWGfpcwSAAAAAAAAAAAAAMM4K0eu5tNfE1vi980FPDj0yj8xytIjzJfPYLxgVehsElmsZ+SR3bzoOO2vbz9Or2PZ4AuAAARScpjbrBtUAAAAA` && - `B57FVqdLY0Hid+z91Dn0nrV/ODaeHzCEiWWZqxzpmKK1nrFKTH3Jbs1F624/ICxH7BeO+3PE9d73nWB34gAK3Bcxx62tHu8/B9D7CPqvKAAAAAAUZtLlbU6qnJ816dijlBy6ye1/azP5h5MJ447Tc8reSueU1mGeGFJt2tZetEvtf1W3Jh7ZR63m9hvn9AazZ/R+YGtXFdh+eKTJ2dL35n1dlRvR8G/wBTH3HhAAAAAAY8hd5vyurRyy` && - `YeF3+4yyVVlvV9lbdvXrryhBpS/jprWldn5TgxvssNLZynYYWIuTVNBEi5nBPaJovdVpX6R0PzzvPb4Z9HyXO9mO4rS7/z+vl8Ot0vJpnJQx8nr+tD7fwgAAAABWNNxvY814vZQ11uTi6KM/VY2c9a2dKWdG9elQuzZZ2p1dz5aNXcnzrPP6ft/dI+eU/o9fSnD3Nro4bCbCzxbR+PYiTmuv5D1+Ta9Xy6bbfU9Bscr8hFuufovySa/w` && - `ATr+xtVovr/H7JpNz0Z+udg5tOoy+WfRqWu+cfR3p3ul4mrxb9V1HxW6bfUe7ettL1kN3i3rayzyFdL3nL4d0d7d4jd8c9XZ1myxiT3DOSSPyJ9jeZ3z5nfc70Z7v3UbFEEfQULRrItbsazsPiX2nqvW4vmu2+rurL4/yH2LivI7Ndeml8frqjGd7y2F/vxpWM/YXuX3fhBjZrpqbpbTQi3HktdBt9VaNpHhrN6drnPFS3O8T3HE630W` && - `p38HrccvT6q5wdHZ7fR7jztJZIJZrDPTix0v049LtXDTU4exsN5xW1i3eXud6vDLk61yLWnvS8/wBRpn1o9zh4Pn9nV+Z9OKKxW83pxymyMNfcytGvz5m/3ZbvF75uoWiLZa2z0Vnx9hi3mo3FA22Me17MZNlrN9tTT8j3XP8ALtxljfXbW5ybfV6sNVyUfrc24l0Tqz7ff/Kuw8fo6rltzz7Tk69jD2eLa2oZOTr6D6B83+i8cc6wmr` && - `S39A0299fhRyfN9q83egk+S9aaBjz6zZw+F+v7alo4po+nObPW7DNI8957VtnQ2fTWeLKpW1OGbyYz6fk9x2Uw67ien6MtXtaewpMbyHm0wp+3aW+Ow9Fy30vHYMNYzv6nocZ6Sj1ev8Ls5Kj2cOluT22yu6xPsr2hrhFvIOp2x3vp7PF58u+o/F+XWrf8fKer6eZz74xlZsQZzMHD97y3o87b6+5nrdHBZnDf2iSJ5FqcFmprWG/pLP` && - `bHYVfK+uXa6mXYMtdVzpcm9XX7CjM6vlur86o4qx01Psz1H0LjM8XV7rm+l8veDX7HYXrr5b9u9cefvQ9GfO7TWaHen2roPh212y+j/HMbnFtZHh9npSvF1rJda9Bhfp5a16GxoTXVbCpf3rI8clvNhR2W0Rxz1kx4zZROns7eG8avY0ZOim16/wCc7joy7LVT2dcdDq+112WvznTd5pNdtBPPY0vX30+9xyoS7u5XLU3L+N60Mdhps9` && - `Kmgv67orUgylx0bbS7Xg6LdaSDmiHz3GIo7jSfbvb4vkPa9l57HH85r+VfkPbVfY84193TX+7O3nq9xy6RRX8L1t1868xJ7VnytZu66WLWef2GOjTbjXw9FNphD50Z9jtOC28U6rnsq3Tlhv8AR+0t1cuh3SMlWG9dhHrb2do+P8qxenYqZZaSwRXOXbK0wwnPCTyiHn91vvS5er6I+m8wJfnbcdBxPi93R8v12rl7B9O+U47WthrveP` && - `p3GVSbjT51/YeeT+zEC5qJWpq9qFGls8rofJsbRW9wq3jaT6yakbDV2o9Ir2ZKu1bF3UY613NShZq10/mFLLXsvFqvUs85u1ocjBrJOvGx9ayv/T+YG9APn+gw7PxfQg1nNfQ6zlrtP9G9fg+JQdXzfzvrSbHGfi1zmr+5xNHH4WdVnV6WxlxmxV5sPaT7Yj8R5NhOVa1+OYizmwu8pzwWQZZQ2UJ7WOlfes4H6Z6nLzGi+7aXs5fk1n` && - `caDxe3XXfqe07sNTv5XqcoaQAB8o0v0/5zxdHU8po+q59cfqX5+7zu5vpny76tpqPm3ul3Hz3pZy2IOLbGPHGEUE1Ppm5s9LuJqg9x55m8wyqzkhxlJhjnLCT2K0z1LtG0V/fZU4UL3FdePV9hwf1b0OfqR7HAxyQCQAAACKUcjF2Y+bdhuQ1ezZz8mg7T598z6m5i1t3i6GM0UK1K1F2MdvWzwjzLGzkwZRyPJDLySOzOKxHZLrNtq7` && - `R7DYp1mpn59Z9blqdT577PnhpUAAAAAAAAABzvRKz8kqfY+Y8nq4irutN5Pdrc85NdLtnzziiKaH2izhHJePJI5peeY+Js4QSWjyPH2Jg1l2Pam8+qVrP1HkhtQAAAAAAAAAAAABqdsrPzLR/VdV4nfxvtuj5nTPDHLnaOK3jSayWOqXDDKU+FddlHc0+ij23NfT/W4uiHt8AAAAAAAAAAAAAAAAHnJdd5nb41qvpdDwO7msukmlzGG6` && - `53O932jd8/eOhdw6I0fV9L2PucGi3x6PKEgAAAAAAAAAAAAAAAAAAAOUo9ypPPbqdSfPTaoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//xAAwEAACAgEDAwMDBAICAwEAAAABAgMEAAUREhATIQYiMRQgMBUjMkFAUCQzBzRggP/aAAgBAQABBQL/AOIEik815E` && - `7CWbYQtyRJOTM6tDC3tEx3eX2xv7R5/wBOfDNOFaWcGrPIdorXbxrsUciT9qb611bkeZsIuLMjCKwi5C7MxYD/AEk9qKOJ7QaF7TdqIwFecgl5eJCzytEjIQOfc82P+w2XVh9TKy2yhhkM0oI3/wBBO4jiM0vOZmZZGVkd9wzHpv0/oHH9rO27cUdYqtYMEXnBqamzDOUlgmWb8jMq/wCDyG+TOQ07M0bSxvkjYxzl9gOb5v7n8sm+6D` && - `x/S+Mn5SLC1ZVrzxwy90b/AIrMiyWvznJ/cWuBJHuTugcNj8FY4cObdTn9HfB8rifAOb5y2wszLVT6eao6zL+CeaKCKW/aOpXktWo/zyDdb8ipHZ7xDRyYzYzed85YTkZ3wqMPgkZthTww2O+Jm/n+unafuU5oUWBw8f3ep9eNKcwq7Yw2H51swvlt4GeNRG7EYW3+zxnlT3MDA5yGK45SyhRy3KnOWKMkPgMNgvT+B0m6WP2+otfTSH` && - `gqW7EyRjOIGEcm/M0cbPrUwSqqnYsc84VzcjNzgPIec23GxGbHouOubdY29r+SrbZv0kZRlJzEK5LfZK6xR9yXVdbeCxFPBaEq/EcKbfnPgao8Bd+TMvnCM85tixtm2xC4hj71vaFIZgZbHKO9GuXGWCsiMRxzbouclXEYnNzvtuK8pSbTnCjpqup09NhNrVtZwWtN0tZ4NZuRpHHGE/iPzyG1PjRhW4cW2GecVdsbY4qXIMhuwyOLgF` && - `qftWEne0a4r9qJ7H1GnQ2y0HNXe+0l5xaginOwXbNs+MUk5vxC8jl32PptgFI/Ed/XZ7U6wVNPnapqGoZUqVqiWTKEb3VmkIxZD+ezZiSabeRpO0mSTESmeUH96XIqzoIlkYzU45h+mRQiOojJ9PHstZRkmn13apWCQNGrY2mDuT6RxSW7HBkNi5CrXZmyt3zEPGKyjJJG4x7yYWmU6prKai2nC5chqVK9RbOs6bXz9Xu3M/S9RtiMwB` && - `FUvioB+aeITJZijUS8VEvGVdOeGdpOOJtkpULJIZBAeGI/L7Dg6+MfYZskmTVpt5I5pZGWlVdos2zf3WohYg0+tQkw6tbuv+jWreVdNo1clljiSxqcfb09u5QMqJH+PfNTuTVY6uvVrBlmjjr6hqUggBsyzpp9iSSvEteuXbjPOVw2lV/1FWyOyDjMpSvIZI/tY9FC5KX7tMSLHPWr2MkpKK9ebuY3tMs6RrHEl7TJl7kunnWIqwq+q7` && - `Iv6VqMIp6Xsy1YxGAAOmpTtXr1NWO7XuwoII1S7LVl1K/tAbM/KpMJ4LOuLBbteoavCXUbCkak0jypHLPJekk03TUMVeqO0tDuu8/8ZmLPdlOGZBO86bUZA2CVxlUA/Z8Zv0OSS7LuWaNYFyNjHEMuV6thI4IKGpN7cjtj6PQipq9PUJZ68AVkC7koAvSC0ZIDYeZe+e3pl2TTkt6oLNQz6kSJvadYv0ZK917WRhmJoQb/AECM8lFXX6` && - `AZDwVmnHerR9uM+TqBKJZX2S/+1YmmY0NzOCA1ItwHRfgndtsLAY7ZbtIJZboZorQfKs2UXSNZduOowrJHDyReRhT0/Mtmbp6ktJiqwRcPksu2KufRKcAChQFH2GJchcMgYYXGKwySQKJpxtpvLaWQ1dRQqyv82w0j213MsbSKIpCa9E4xBer4A6DHfge4zYx2yzORg/cTtgmeFlytIdqs6CJwNrDSMxAORycF0CuE6+oQsOrowZW+B/` && - `I4vgL4N0vHVRHWIH7GcJHGTFFt4GzLknwxMktCUSrqiiKh6fl72jWPa7qvdtQbSGBkf9zi6WNq0DAtZSul3WSMbU7UuR6paRotXVxFMr43xb5MZ7vFIH7iVCWWIf8AGpuFLYg9z7Sw6T3ZrKqFXGIVdQnGr3IzthbpvjHPdngibTVL1qvBMHjD0klWLKhKQmIMeTKW840cTGGWOJbsPeTQuK0m85OVGScp8jjbII2lEsBDWX7MMhdpOo` && - `+dNk/aaQkSv7rVcDIgu1U9kJuTUQyVz8RbfVceNnS67Rr09WTtNYAAH2E4Vw/N0BM5e5CCvWXkrxbMvxjlWUboZAcqI6zFv2dP71eMEY8kImX/AKv6PjJPcbNfmkoZZNxv1rWRHKOJaxHs8gZcPMhVytEDlCJkuz3qql+5XWrStPYHx09YRxF6VZKsP2q5xkHG6haFCsizuI2HWX/qi2CNjHJv4OcqN7q7ho527KJKHFqKSK0cPwG2M0` && - `0cMjuM1qDt2JU5dGYKsTlxpUMk06xIuWIC2SRAEx7Yw4oqFo40VM0w86FkJ2dMjjjPX1CbMuv/AGsOSo2w32xxm/bnqx9nIz9lRdovGFcn8ZIMDlRSkLp2YJ404VraqstcM8chGS7ZX3ZZoe1kkth45+KZ3ot+BICnfSwtara1WrFKSNmYrKieYoQFpQuJW+KBP6dYkkLaLqcl2LR9Ug1Kpl65FVWxNJJr/wB3Bh0cbpPFKIySzxDrJ/` && - `ADx4zlhV/qLhdWIJOnxyfStMEhuDuNpk/PJIuUzwyxksj4u0KzuJF5EZzxoYmMtKu2GnJxFGc5ptatVCjcHj9QI/PZ3YZqjt9P3U+mDcLmnqDIaoeDu360bnULUkFZKw6zySxtYtxJUrzFqvkBvOKdstxCaKM96xGNj08cuPgr42w5aj7qtA+5T3HkM9vANwkgbnGVByairtbhsqLdEvk8bQgd9yJHRlkDKjxbwRExIqAdt5hXqurcPC` && - `rv0MIDF1xuTGuu2JvvEcY4V3w9GtIskNSxwm9K25pqmgww2eI228zLtki80UtHi9QGJ2bCG23Occj6e04++RO4DSK8dG1ImRS8o45Q2P5yWJmW3GUyeFcaLK1KOQR0bPOPT25JWC4EAzbxtn8VtyiGGtcLSVi8mE7tHyXPPOJ1wsMLdN80erNqWsV07UHSTwTk536Ozzug4Jy6MWAq2ZpGLq+c9pGPmP8Ak5xG2ycLJkvKNmHEV3R1Mk` && - `aYthomq3BNGrjjH8NocDW49IfKkNeNQV6Myqu+E5vvjyZavHt3e3OzlTntUdxsXNxh2w9NU+oNnQNPGm6b1lsQDJG2bGOwoN7CTi78lXPGIiIfbvPEtiLyrRHfJP5E+xmOSDupscQCM9/bDDs/1EmLqMG0mrVIIV1STc6nu0traux5FW3yWQCQluctjkxZY4bWoYZHmwqBm+FeeRrnHYYHyQ75JKiN6Zi7+qfZrtUzw1p0kr3eVTNOjF` && - `xUiCqcXYFH3weegAwuNs24tIds38YnxKu+cX34lMVuEcrIX2jbIo66YGj37cThYJfp5Z27kN2QYl/6ZX1NXr92btSzSSL7e9yO4PIquIo3ATbYZKNuhzT9Os6pNp9SKjT+yvo8Ea1tOKapZr3reRJ+k6/f0arZS5Un013AXIzitgJ6hc3GMAUQgOMXGGxCjkxJXtOymPgFj4ZuSVbfGH7KkbGDuKI1xj73i/bhfGbi+tR/8epMtrOPXk` && - `dt8Zick2sWKFG5bWjWSrX+3Srf1tP1JBLG1OxHbq6/T+t0v0ve/UNG9ThpCzxSn4xB4iB2AwADDnLOfiYBZcXP7TEHvObbkRqceFebx75CrMJ4jyh/jttkLMJ3yPl9VZf9hrEdjTadClrFK16YtVhBZPftWoqxkHOIR6lXVINUmFHSKVaBEVF+67y0nVAUliqN+h6rnptxQ1+1CLEGpadCqmFYrSoM22Azlm/RyQflot9/ktiYvQYpxz` && - `gxXAzcg2AJMUBVJzlg2yQK6inG170o2+m5qmm09Sik9NTo5qTR5WoqYoa8UR/BVss8gab0/atwVtTpULk2k2PUivWkqzx2a7KrZPBIJ99sjlEgzjmwxskG422yFt25+1vjB8YM3zfP7YYDhHg/P9qmcfHfTt1OfP0XIWqdSAfx65pNbVa1ie3pyV7n6Szaho2rVdN1C1Uq/wDju13NNzWIzLp89WVJqCTBmTyTh6SfxL5AT3mXN+m/3H` && - `p/TEHF+cncRxdt2kSvaYena7VqP53VXSf03oszr6Y0UQt6M0ovpmm09NjzUp3r1bM8liVH4FZd8Yqehxjk65CvHOftwfaB0Of2w9oHlVx/B1BlMMarNe03S0rS/wCPe0oyyuWWRG6AKcchQZUAB5FFGEdFGHDgxeg+WwD3N8EeVOwk+WhabKWnQwf5Wp6TWvZd0+1QxGVl3GOw3lILJkfwfIxW2zflm2AYBhxcbBjPh+GyYuZtH0y3LY` && - `/y2UMtjQ6MmWdNuV8Oxx/mIe5V8Hx1U7ZzGKw3LjiMLYCSPgA+WOWG4QNGfrIIkhT/ADpqFaWTUoYDLGnHEbYJ7maIKWGbYevL2jydxjHOWM+XGsCv6cgsWbP+gtUYLBn0iKTLNGaqIQJFlu1o5kIzkoxvdgDYegGH5Q+9osszwRSsjSJolZq8P+j1jShYL0xAm70sBBG+cm6ADGI2PxZjkdIrlmNNB0uSzXqaTp9WT/S3NJeSUaNZ3X` && - `Qmq42lpap6h6YqcXq6tUEE0cyMWijgtO4cO+aJE8h/1uqaJVuSSaLZsQ6dpwrHtx//AJ1//8QAKREAAgIBAwMDBAMBAAAAAAAAAAECEQMSITEQIEEEMFETMkBhFCJxYP/aAAgBAwEBPwH26ZGLlwaWVtZoY1X4aViiY4aSWNMWOPB9NcDwpk8DW/j8GON8mPGluutdkkZowkrXJVdsY6vZhxRHGihIvq0V00ozRad9mLC8hHAkq9iMdT` && - `ohjUe6l1aEZIa1RKOl10irZhUI7L2cEKdsRY5mtDma35Hk+BZdyxj2JSo9RCnq+SONyIQrghGpl+xgWobfg3KP9KKsqhwRUvkUmuRS1DRmbk1Ei/jcqT5ZBLWq6RxSkrXRYpOjJheMWOTZ/G+WTwqtiEWtkRVbiNUT+r60KkNWbeRqt0KVozKX3M+pIw41JLUKCXHT6b/weO+RYv2Tx6lQov5NK+DQiWzvpHcy422YoNLca6bsoXTjYS` && - `M7Th09LWnqyLlxXX9Iv5GiW6FwQZsfsnkci2YsjezORqWrcxp1uPk8GSepkVqdGKGldnkvp5EIcdjHG9iD8dOdiacekN3sb9JMkyb0x6YuRKlS7M6sgklt089Wfa7RLaVohKxUSxavJ9CRCMoPghKXkctx7j5Gm9vkfpZmLD8dG6Nauhj4IcdnJQ1ZONKjdEXa3E09jdE8h9QUxSsZjXZP1Gkc2yxkN9yhoqu1414HEdtlPySjRFWaaV` && - `lfBHH89nqJVHrqlGWquTJkfNbEPURfY+5UOCY8ZpYoXyJqMqfY8lE5anfX7lpYv7KmVUqZDJa7GuxdKKNJo2M7encx5pQIZdY8yWyHJvsjlvnk1p7+TK1J2jHkcHZDLr9zJNx4M/2+2nTMWSD49pdMuVQJScnb9xNrgxeqa+4hkjLj2cjpGSep376bXBj9StNMjNS4L7Xtyeoez3/CjJxYssK5H6tEPUprc1I1J7GbI09Kf4+pkpuTt/` && - `8AL//EADURAAICAQMDAgQDBwQDAAAAAAECAAMRBBIhEBMxIkEFMDJRIGGRFCNAQnGBoRUzYLHB0fD/2gAIAQIBAT8B+XvWPYqeZ3F4/OFwG2zvpiK4b+DdgoyYzgTUXb/eJqSowTDqG85neY8xNQynMq1q/SPMBz8/Mt1AXIl+oY8NN/tM9dwKwMRwDK255mltsqbax4gYN4/Dbb2wPkHxLGOcy3UGM+ZmbYBPaZmeiMfGZo7ARt9/wa` && - `rWLpxzH+IOz7sfIts7aFpbqmsP2h5m2bZzMkTuQGDoRKbTW4fMqs7i56O20Zmsa6z1P4+TrLsjaI5yZiVUBhP2ZsxdOMifs6+0TTYPqj6QgceYVIgbMJlI3HbPh9uRs+0e0Lx7y24N9X6TUuWpMz8jWN2v7yupT6mmUHgTvcQWH2M3mdxl5ELk8wXvN6eNsamtxheI6duK4M0QRFLxwf5jiBqx9IzNSz9k7ulmrrrfYxgYGPq60zn2mm` && - `1q6gkAYj3qFyOZ/qBIyFleqYNzyP8AqXWBuTLW3cSpd5nZ+wltZV4fPQECHJlb7BNxzlTNwcbXj0BCPtNG9eNg8zspnJE1mosrLds8Sy2yz6j0a5Bg/VBqgowBDqxnO3P9Zp70R8kR7F9lxBe494NQ/gSob/QYRKm28Sq1dvMvtV39MzBAwB5iA2TZWP7S2pWGVhU+YWO3BmkDC7IHT4kW7uOtbAMCZfTV9W//AB0XzPI3mFR/LKWAbm` && - `Veh/ylmNxj7hyJ3HP1CG0n0CUaFE5bkzsp9prtKtfrWU8CIU25EbBY4lnEb6hNNVsXMscIu4zUXm18/gH+2CZZXgbugOU5jGZz6pk7pqGxhpao4MMAK+oyhxYgPTUbdh3TuLmLqlHmDVBvEQBjuMqUWPg9NV9Mscu25ug6aB9uRNSS3LdEOF6BPGIAoXMr/eJgxeV2mWrt8Qbs5HiU3dvwINYv2mpZbVxuxLq1H0QV+nmIAg4ir6Jwo3` && - `H2xB8RqJmq1Z5Dfp0rrLnAh07hdxH5dEOGBl5/ToviGKxQ5m9m8SqxhEbcd04PmMNrZWI20ciFkxmbc8zt5hSbIuRndLm9paoHQDMr+HB+PH/uLSBj3xGUjzPMuXB7Y8COm2V2KoORA6scGMpEErYTdBccYMBPtEyohsOeBEfMZsTcWMU45eW6jIwszt5MZs9PhtLNcDjiAY6dmu2vYW8TT6ZFUqp5M/Y7F+qOm4ZhGOgOIFyIOYlm3z` && - `E++YPyMbf5Jiah1WLqhjOIbUOCRLLyDtUQq1lYsEdpnoml3e/MoTtoB1PoYOvj/wC4jjtuGWE5TKwgKdsd93WsY5hXH4Nxm6ZUDidw+07wLgkTSIgcbP6zU6Ou8c+ZdpBSQPf/ABK9K78kD9ItajnH4Hox9Pj7TtlPSRlZQpRdpmo063JtMu0nZXk9a8kS0YhOeoHTEJxNLpxaCzTRt+846Yz8mxSykAy7SXglmjDExK/QJY5aAfgIjQ` && - `HM0VHcA+3P/iIioML8xlDeZqvhgc5TiGlqWw4juNsMHEzBiZgbMJzKF5/WU17Ex88qG4M1GhsJOBxLaHr+oRqyvkQ9MwGJWzHiaHJZfT9/4J0DjEbT6jeQVyIPhNhPniW/DWU4Q5hrbOMREao7jNLUtibyuMzGP4YoDK6ErGFH/F//xABGEAACAQIDBAUJBwIFAwMFAAABAhEAAxIhMQQiQVEQEzJhcQUgQoGRobHB8BQjMDNS0eFAYi` && - `RQU3LxgpKyFTRDYGOAwvL/2gAIAQEABj8C/wDoiKiak0INTURWNGDBhkQdaM1nQit4/wCUZV94rJrvEZZcZ4eupDAzp39ArDMNhxaZctawoGKXjiMnsN+x+PjRRVnKrTMReuZjEMlUE1LnCAMyayPGNKKznrUGsz/knWF0wnjOVddYw3l/tarZwA4+KPIA512MGIySsozRz40Zus68jGXsFZ60r4hC6CM/bWDNVOoGlSZ5ZmhnSNk2Hg` && - `aWQsTGpn2RX5vUriywgY45cRW4FPjQDVH+Qs7MFAEyeFOOt2hwVOsIAfUMVBt2eKzkKwOAycjWfn5dBV1VlOoIkViGz2QRxwClaAxTsltR66Fm0tw3PThOx4zUnMUY/EzMf0MSOjKssJOoxaVxVxqp1HTn581nr0R0YVYgTvDLeHEZ0lpQbWiqr5cNBz9VKhbt1H4bq90W1WTJMRA/ocs66tTcYgwcPCvzFLYTK2xJB/3HL2ikduu6wL` && - `Ha+IGVGAATrA/oIJpWGQyG7p4Rw9VC4Du8+f4LXbzqiLqTW1bXsDP9mv4d05Yt2MQ5Vd1APosRLd8/0EUyszjhudr1Rn7KVbFnq1R9CYBXuisK31S3wC2sx7491a+dPRPm9w812V3340PZ8JyqVuOwMDDGh+RzoEeeNj2e4qPH3jkYsHKBzoPeZ77j0rrYj79Ojv8A6BerfrA2QKDEPaNKxLsyC5mfvGxdW/AwMvfTObl1y36nJA8BXH` && - `8Pd87IVn0ODkWOTTr3d1LszLEDXzrdoWOvuuMRXHhgULm2MBvF2UemxM58OXsrn0H8dXZFLIZUkaeFNa35fSBQxxzjo1rWs6y6J/Cz6R0BWQMj5GdPCgpbHHE0COz5jXLhwqoknkKubXcd3Ut91bjew+iI4DTXKsTq+HBuIilpPfGh0/etzI8QdRUnebhUnj+PNKxA6z0cpPD+KxsoEZgcRWvTmakZipFTRt4hjGq/OusKyg7UcBzrDk` && - `bbibbjjzHj9cKSfyrqwO5h/Hw6Lu0NoqzUlYJ4eZn5hBzFG1cgDMqT6Q+UVxhu7p6zarsfpQdpvAVKk+TthPL824Pl9a19k2O2b1//AE7QxMTnqaNx7v2X/Ts2ng66s1fdtbMsSSvHvP17NB/Qb7Cxb/SmbHxPy99FbYkyMRn4njlTSZY6nzIOQoGy67UnJjDe3Q1hMo/FGyamtC3cOEYpGYj40cEu6+iuVxP2pkg3Z7FxWwsDwn+Ku9` && - `W2LenDp4eB93CriNubRaGPCRmGHyrHZtFyRIxbopLu07TbbC26vZVT4c/GjsqFrdpfzWKkE9wq1sCAzgy7ujPo0no760q0VFovilS1yI/fjWL2jlWs99NsfkJBddTFzaG7CeH1w411u1vc8o+UnzC9pvZ8zyo/br32Wwf/AILJ3jr2mrBs1lbY7uNAWhqYLZbo50k2jbYN2SMx486gf0Bt9q5+hBJ/jxOVFOsu2rZJxYIkZzqNDMjLFQ` && - `CaUEtqjEic2j5V/wC1uHww/vX5eBY55msSq57i5PxqCMPjQF63buj+5dK/wy4Txzr70T3GtIo4s6DMqsR+pZBFBbqJj4xnUUzptN23iaSFC/MVOzE9erYsdwyW7iaw3LF1No06oqZPgdK/xOzPcnjaEx3RWGz5P2jF/wDc3K+/6sPOidGZodWuLxMUcaoOEq0++iRbuRzMQPfTbMt97Hk+1qE/Mv8A8UF2W2PJmw8IH3jj640epSCe05` && - `zZvE1vbUrGJhN74UP/AEzyc5U59beyX69dR5R8ptgzm3YEAjxpbWyB1s7OWtZzm2RP13mian8bAzOB/Y5U+0UNj2VFtCMT9Xu4V/n96gAKq5ADQUyMMiI1pCtkHLM/o7vGsRXTuo7mHP21hZ29Rj4Vhlo/3UBifLm0/GsJyaJ7vwc6zEU2AW49Fjn7q6r7RctxBuFcvZx99JZQb9wiY3jnxY+J6QBaZjzBim2a5cuhbgzwfCYyFPtlwL` && - `Z8m2m+6R//AJSPSbn4ePrNvyRsmNQYN+7kv1oflU+VfKNy6P8ATtZL9eqh1Oy21IMhok+01ju3FRebGKf7Ev2y4nBOz/3aUhN1Hxsz7qwEk5r35zWBRJ/FW5Z2VtqGL7xUbeC8wONYkB6o6Nx9dNfZvu1XESM8q+x7PP23at+4wbKyP4yHfrR8n7AEVNnRQ925n4QKuLeu9fhIEO+FTxnCB9RSoSNxczoK31wzw5VCtR6y4MS+iMzW6f` && - `aI6MzhjMN+nvoElSea6Hv/AAMxTJbJr73Oh1tm25GmJQaaxaVUU/oUCDzr7PewrtS9pOfeO7o3vZI+dbRbt7UEZhh3fvSoPcKTZtnuXtpC5Ll/4ihY8neQWsga9edTzzisWLY9ij0dZ/8AKlvbR5avsx1W1ufXspbz3pbiCgOfrmrdt2uXlt9kXHLAerSgAIA0HTjQZzFYb4/6v3pW2xUtK3ppcxKPHQ+6KkGRVvCowGk6g/mCZqLlx2` && - `E6E0tz21csnY7zqujIy5+qaQWy1t2EkXlKRQu2la5bjMK1FrFzrXB3kJhvYaN3ZG+z7Qc3tsO14j5iruxFXW4sXMHHIzlzEisd5XXEROf3l5vkO7+ZDQOtYKHfXEQOPOr1+8hQu0KCR2Rp86gYczGYkd9HgBRwmM+dFG0Czl8K/LaKCgyDkD8qIOHD30LhSLkYSTr+BCLib3Vj61G4HATr4g/KgAkrixQd7P8AVnWKSyYdJxMv7/HxrK` && - `o2m2jDQYu+msomBL9uUz4rqPYake7jUJblTkhttMcJHL1USLaBiZZ1t4cfee/p6q2DMgzRCoyYDhhv36D03Nn2m7lhlGPA0UsYQon74jTuHOlxYzCjGUXER4CiiNdKnQdU5HwqHtbQ91WnKydKlLUqOyGgeqpvHC0DETkJ8aazZwXlIkW1BxeNMtzYb4fU/wDJiirpukan4ViRMB/sJX4UjXXe7g4OF/aagXHjWG3s/XnS9Zfe5hbFDR` && - `88/fTFQDdYZE7x/wCKxYTmYUDUnkK3u22beNTThIxsMgTRDGZq53wRQtvccrbJwKTkvhVtTO/kw9U0MTb3OhiM/gdSExGN/wAKO+s8c6yYHwNa0NmkZDcz17vdUMJU5GuquMcJO43FG4Z1DtjGQYxxqLnZHpnl399XHV8QtoFEaGf/AOR0jY7M/aHObDLCvH676CgBVUZDzcCO6Wz2kByI+XqqAIA4VCgAch5pKBVfWY+NBsxI0PDzZP` && - `8AzRuXNTw5Ck2u5ae5YW2RuLOA8T7KDKZBzFRUBwuUxh19dMp8KDLk61+VveIrrLjDTdwns0Ms8VDzO/pOETRZjixNiPI1hAHgKBAzoNRl5ZnAXFwb0Rlnr0NYtwAmTPy4wO+s5GPLLhRTaWVYGbcI591XLwaQclOLUa9KXrmQvWgiGOIJke8ee9xJxDumgxu9cGzDxHmsx0Aml6zxduR/ap0oMpDA6EdIt8NT30YG7oG/VV4TJNp/hW` && - `yvEQmH2ZfKkMNnu65D6j31J1iBREViQa6ihhtEk8zpQAdFnhE1jYbxrez7hXV2Lbf7q32NfmMR3mpu24aeGdZUaZAwTnzintrbyZdyDGHPXv4+2sxTWsQgCRi4UTm2eId9NcxG2wGHF+mePRfB7XWmfl7oprY3T9Z0pe0VQAq/JmkacY1qB0FmIAGpNPeVn+yAwnDrI4+HnlXEqciKNtdpuSpkYt6QeNRcvXbmeuMj5+aMRzOgAkmgrC` && - `MzA5CchWISjHUrx8edYbgg/qGh6PvLaMP7hNW2A/NcQO9jUESujeFG0ghLd11Ud2KuPqrNoMSBRNu2Y4M2Qamx2d4cFz95ApisKvotrPfWJgJ4d1FiCY5UWu9vj5mpFfmBiuta1nbIJ1YGR9eqsxucG+VYbefhTnFvERA4UFGlXVtziNtkC98cejaR6XWgx3YFHypAGRce7BWcXHXhxp7ly2iO7Tuti9ED5dNryWpZVKdbeM9pZiKgCA` && - `OHn50l0cGA9Ry+vCtDUjMeYt1RMAgjuoODIIkdBDCQawHNT2SdfDotktz0XLDy+H/bRo3LlwYTejAB+pvjLeys6utcbAouYQh3iWgH2+3KNKEggxx6MuhkPpLFMriGBg1E5+YoLLyg6/WlFZhgJjurC3Ec86hT7ahj7KgCsR7hNOZbCLa5cNT+1dX1ouPPYt7zewVtG1Om/m2A8IGQ91W3W+rIhneXM+P/AAPMXrLK3br7toHU/wAVgX` && - `M+kefnZ1OtMiZk8zx4e+g66GlwkYmYDD+rzGzIy4a0FUAAcK16NSIzy7ui6xEaKDzH0TRz1yrXJXVz4Ag0HRgwPI0m2LhuIxFuDl1YMaZ8+6emGpcb4QxyPD29Bcdls/XxoMphh0SanDApcEYR2zROESdT9eFFlJnUDvoAjWsgvspmImM8hWAai4uviDRga5mtlRMgEiIjMa++aKu3bGGfGrhVjv8ADl5hW08Mq4WJzFtZ+PnESRI1FR` && - `HR3ULU3jIgqHbtHjw1nnRm0inmNfr1+bphBzA/SOVa9AVe02n79EUDhhSAw76i8JBGE+FdSgw2rglB3jX5e+jbbQiNaNq+cWcLcyz5SOHKeY8OiGq4XOJXbKc8tPfr66/w102h+jVfZw9VdVtGzdYp9K0+ntqSr2wT6Sn6+NRjn1VmjEf7DUYXnlhpVYy8ZmhbxF3JjCgmoImaTsC22Q8avPilMZjOfH3zRe6cKgTJqbjq2C2qkaw/H3` && - `H31NW9oKFQ7M4HczEj41fukqTbshk5Kc8vhRSwyWdsKygfst/HCuvT7tkyuo2ts9G8ZfgtXHVvzlxXl5RkPPnoyNbOtxVCpcWWRs555jnTIwh117+/zD5mMBWUrGbRH18qAVR7a7XsyopcLWid2Z0yjKgcxMe+reAw4O6e+iCMJBwkcjWLDbKMmG5Izbl8Wp8LKV1UnXwP7/RlZkag6ijCtgAGEATzqVxetY6ZNq2x71FEm2Ae7Kgtva` && - `7ygc2mobyheK8Rn+9PgXNRm5/epiktsgvelhy3e/4+ysOFQmvfNSzuwmQp0H139H2a1+be3RHoji3q/ajYtrCWSLcf9I/er1thlhHr1q/s1wnFbfHbad4d45V1Y2i8HgqXntKTJB56msGx7S/VRAXIlPCco7qW3dW5YOHFcua4u4HhRCatmzHMnzAVt9YkZga/XdRvrcUysp30Lt1cLZ4h3jpzp7R9Ieyrl1exART+qJ/fzBMd1a+YuH` && - `gc6yEZ0DP80QuGdVnn/wA0t1TlrVu8NG3GPw+f/dQPRjQ4XiPGslDNM5cO7w1z8Mqm05t5NppiPH65197AH6sWtEjCqzlK5mouHwIFYsQivzFnlOdY7n3KasSc4+VAQEXtAHXxpcPWWxj17s8/CusvOrvEDCuEAUem68sSdSfhW02tHu3N2NYwAT7j7KxGYPZkaUzRnz8+5ag41AgH0poRZutOeLCc6S51qInW4mttw5mhdN53QN1nVx` && - `lj5/OOdZdE0yEkSIypbd0AcAwG6f28wYYmeNadEeZgOFbnLn4VGHC65waykpqeP8/XhRSRhbNW1g8DRLIcPHCZ9fOhcQhlOhBkGstejcfBHdRu3tnZgNXUyo4TB09VYk0OhHGoOdG4AN3KQOVfdi2qxq2fu/mgz3ccZiV7Phw90561p5rXTook1cs3yugIjlH7zTHGGGZU8xOXupqJPHzMugSddKuOyr1SSqP4f8mktzOFQPMmhHQ9u1` && - `gCDddmE59woKCYAjPp3BJ8YoAlbciVnexDnWAnC4E7prC3Hsnn0iprMb3A1lWLhrUDXjWFbNxBxwXXSfGDXW2Gxc0dyZ9Z0qc+8HVTyNTXdT30vXLRuahVWPhQ666IDf7pHqC/A0MCtIGr6/WVQOgs7BVGZJ4Vy6MqiurO7dL9n+2f299B81IEZNFBbZhFUVlUVNdmsunZRsttrl3ewqok6VasHO5G+e/zGxXkXCYOIxnE1APRNXSNGv` && - `MZHHzTgRVLZmBrUxnzoowgc6wwSOFAjzOVREHlW5lQnTQnke+sSrINDfCxwI1rCcjy4ipLEngOJorC4weWRFb6xzq5fRlOFCwzoCWjFmVOkZ+zL39ASHnURx+v2rEzaaAfWdAKGcEwWXODRd2AUDMmvuw0N6v5FGch0ZdEHzVVmguYWr21a29nTqhl6ZzPsEe3zftqS2ERqIjWrFxRlcOARwaNKTrFO+wRSM8zV5dpd71y0/ZJgeMe2o` && - `CgDkB529WQ6MXPWsR0FEdPgahcJPM1nRVVnkOVawTUMisORFHBaVD3VvJX6vGriswLsCO6KxscJ0+vrhWbtEQQDFFLVswTOKSxnvpurxddoN33511YdVABGIHEx75ojfAxYgrPiilQkYzoJ1o1p0Z9GXmfbLF4WVtHDbLpMggy1W9lsTgQcTme/wA23iLyINxEaLbtzw1tOwpfe1etsL2yydwxz5/80m1bTs4XqWVrezK8ntCSTpoK2T` && - `aryhLW2YlvrkQpJ08Bu+yisYARmOFYmxCwDDBs8I0kdGta+e1oRuxpw8yagVDhVH9pmahRAGgFSmQ/TWT+qPb8qI0I1FM+cAZxWQiMo5VrHfyqShU8jwogJigS3P8Amsdth/u4RzoWyN7iRoaTMZmM6+02t27aOJTy50Vw4L6/mWjkQfDzs66mJtW837zwHzpNlK4UXdaD2h8hS2UGnnC6VwXAcNxY7LDWrPlXZRN3Zu0OafXxpNotHc` && - `cSKu2gJdd9PEfUVZusZur93cz9IfU+urVq/ab7B2rjomIluC5Zgd/wom0yuO4z52fSLizOIA+vL8DMVigTETXI8COFNbuJiBHDjWJNfjR8YI5GpQ4hLSJ7+FFjZZQVgliPVofGioANt+0p+Iq8iSIgjlJzPxouUIa3J0yBwmr9y3IKo0htQRVu5ttgO5RSGGRGXOsfkzb3bDpZvcfXR2XabZsbSnaRvlSdbO/x5UwD4JHaHCsKNZvqMh` && - `iEGsJexbB9JASR7fGkQWcTAbzEziPE1hRQo5Dz/wD1BF/wm0ZbR/a36vrvqRhdHHiCKbZLpjYtoOK0x9E8vru6Ns8lndt3vvrA0HeB9ejRtMSAeVBynWLOHfQUqIoWVLFRlyz/AAADzmjOnA1l+DhHRmM9JBg+2oXTpmsLaSDVwNjC3Fx7pjFzB93tpVk7gC9HV7VamOy4yZfA0Ln2w7UEnAjpBz7+NHZhItnLCw3l8KwXrSiIKsuvrq` && - `UEEkn8G55I8sIq7QBH9t0cxWBsVzydcOR16s1gaHtvmrDh3il8neU2+6P5N/h4H6yrZvK9gb+zPvcJX6y9dJfstit3FxKa3lBir9y/ct/aCxLKTDROUf2/Ws9G4yv4Hp1rLpIxZDKO+o/FPS930VkH1V11475EBZyUcqfWCZHt/H6u8MNwfl3QM1NHYvLuznaNlbdXaFEg+Pf78qx7FtVvbdicn7rFDr6taNi9dVJzi5ulfXzp7W27Jt` && - `F3YGGHMdn11e2Ukk2XkeDfyD0XEWwL5MbpAPHWDrGtfdWbpCnX7MU//Qx7acPZ6s8SXxHz25Ze36ipH47XDoomjauF1uXLgaA2QGuXsoqu15Hjg3hWArA9HnH9AyOoZWEEHjRdthVSf0MVHsFC0dkxZziLmfbWIXNqUfpDiPhTJsdnqw2bGZJ6GuoASOdG5cOfwrLzshnWsnj+Nl0KhzDOo99JZjenIkV1jEv+nu/qLl1HAnRcNGzdQp` && - `cUSR+3TrHRn/RW1H+qn/kBSnCrMOJX+q38SNzSi9z76xwuIMx/uX9vdWJGDDmD0Z6Vuj+hS2hw4pJPcP8AmrT37hFhGFycEF4Mga+HDh/WFToaLWlaxd/Wh+POjK9db/UmvsrSa06Y87LzT0PdicIJrZ8GZYm3Hjn8qCooGX9f1nVgPMkj0vGuqCmzdGu97xzFRikjXKCOnOp87Pzb/wB2jJhOjQRlS7RfwWksHEtsbxLEEZn9v8hxOC` && - `G/UDQzzGh4j10S4a6n6lG8PEcfV7Kx2riuvdX2e7fUXeVZ6fgCpmhba6oY8zXUAb149WPXlTFwQzHQ/wCSC9sw6u/Obpukjv51c2e6Q5ZpuA8SawmW2bgeNv8AipBkdEdOVTQ6m4bbgyCKxbXs910/1LQkGnv7VbKddcJKOmfcD3V1lnZLaPM4gP8AJmu27yyx0Iis3tR4mp2bBfWc7NwlB/0kafWlfZLmxG2pO/cuMMX/AE4Sff79KV` && - `vJ9s7OwmStxpqb2zNtVoenbXfHqrHacOKF1skMmTTEbE5QrunEsn1TW+mBP08T411ziEHZ7/8ALvtCTs20/wCrb4+I41b2fbNvR7FvMIljDiPNs/dRd2xsRHdXYX2f/jr/AP/EACwQAQACAgIBAwMEAgMBAQAAAAEAESExQVFhcYGREKGxIMHR8DDhQFDxYID/2gAIAQEAAT8h/wDiKjczzKFcUQUbt3KflOOPeCBkb4DyMVs3WbZqFn` && - `iItirN/NcQLHH/AEzqZnliNau6aEWoWD2SzYpYcDsjwGOZusnUyJAWUUWnS14u5bo7kDn+4/0HKvyVAP3+zAypMTcDR3gOdcWw+naIoJckq2SNNc+m+YM+EB5uz9paCzcbAC/+kDIFYyI7uJBJvJjxQ36b6tw2CtaXGWas9CIwt8cGdV74d8yyNxqlfxRZ/HNxfb2MRYASByb9GseCUA0WFh1SIe0CkRgWpV43zfO5ncivvLJQGt7tTN` && - `+K1q66mc35pegV8/Eur2l9hcryXTZdnBAwhp2g0Gd1qLQcn/QvhEkoHcakshWjVWAfOT7SiGmh+Smv2iVK2dnxHzb8zQuXZCxUOpn6LFPXKMLxHm3Rj2hjXgXH2jafkzbOlk5+Y11lFD7Fr0IJd5IdlE4f8ihXbt/4O0u6v6U/Aj4BkA3YR9vXjdMvNQPPf65LMMtVGJdwwqHMMMcNkG4irmFIYgWZQvumqJzQCorUL0Qn81Vl3PVOKn` && - `sqnZlSRVBPLf4wMmhwMntz/wABAW6mashcIvD726x1vxElilSHWqrUjUDlaI4PqLvmpeX22GfWPN3ZMj6LbJuViWJa2J2+0ahuDLHdniHXmNzE6I6ZSVKGoUHrGnDJml84IVR2OHo/wkxa30EtECw2qFb4Fav4rA5YFwXb1cc8Pd/8C3G4dZW+auyhtV9gtxVhFBAiA9WuMY11iXa9Kqj4BVCp4RGLy/U5YYiMIeCWlIa1LIwc6TM6gt` && - `wi1jMrpSGrfiA6J+Xhho51e94IcCKUG5VKLNr6IGaFG/T9eR1V6tp4Gc4Ct3CLNQ4s3j9ioDMA/wDAbARTWm7we5l48zWtFkv2DN10j1CHH3fMdkbS79dcRF4YOHFOpyGEgWoi3FTUUvbLHxB6vE0yiGCxlmfjM8QXtYpCuM3S9azjaFxhgBh/VdYnwDFadt16Qtou1tiRpda8H1le3KFlD3j0eP8AOqtAlWlL0xNZmHruX+8wGaBBxH` && - `/2Ii0hlsozkKiecpSJOjXM4f0DTZAbllSJfpmOGIXdRWzqchmOqnBLur8TLAgi0sZtIfu0iuc79OSNbduyuPtjOY8tV8foG6u7gLWFFWcpFui0dq0W52wo2thJyIUAbYy8JQCBjabTPuPxMMq+BxKief8AOQi4jB5E4mw+2bcF5iPeHKwZz78fLGaxZ4ZXBuLqkgSrsCHVIP7pX1Behr9nmNe5Xty05rnxfpDlLgeKGT7vS+0RtLtJzl` && - `45/JFsudZDdvB7uPeEVELea8TNuPwI45m2/pEFlTfaivMOojMQpO5TjjIqc2t+Bs67mR5o5Vnt8f0+tCTR3F6/c15lZmYX2O/T43wm/fjTb7Km+TqpwV+CGx6Ebo3XDG+Z8ja+DFvR4xaGIXczf86jkGGqXizBZhA1xJekJrOttlYedcZibgzJ+Dx/d3LtYYGqHr3OZuVt5i4HRvGJ0BXqHIerEggyOr259SDsMMPJq8rsoFjUodilzk` && - `un3xK0N81gyCrq1HpM6NJARxY4BL1bhVUVx8zK67JV9MBlmKAwNK5zewTzLVXNVT9spznS9EduRehsJ+fj3dV3OoYH2H7dxeZomJfwjfawFVo5i1FEfIgFwhb4+yc87t2FGsUQwFpwu0esxFIq8uJXBBXivtznnQgdidBuOThRXwOp72MQ4fBgw+JcZ90z6nbvmZxHzpZ/73dNVEZdyxSl5W2XN73dNzREBi/84SW41G9KcGuDygG1rK` && - `48EABBeSTLXyX8xZARfq50uz5jQDG1I+4l17ep7bGD2fiW2qFq/ux7RmxconQAFmmyWbao2avu5gqt85CZQZuoVQZYTGI6lCwuoR9WnZ6KKuHYTvGXLiUlEDgaJuLbAWg5OAlC4I2CFcikxRBLguzLrAWL0kf2zs2zn4d5jvl1AfL+JfJ0CKB5vncsm8ekY5YXJVptAVvTK9gRu1XJgJKHpTmkb4MeIbRXI91VDnBzeApu3O7SsXVnru` && - `m2GA5bLPaZeZjsfNvxeA+sFAUp21PNPGrbxGgDBaR3Qv3GUyiFTchHpf2AqxeAg1m/82SD22D4H4YZBo0Wl0Gl3qtMbC602UFBwEo1VY03FYmR5PK/ge/FgjerxZ+DcDCVGCh7v/Y9yDe16XlH/V4Q/JmVDowzXM7t536cEFUYKN+x5z+3Z9Bh9SsWQFys3iS4yL0TAxyTf1x/MMktAhpWjFGt2PXNasFShajYyBb3KnSTF2ygixVZBd` && - `1djxEoKwImtKMDdjd7mMfNjyp9ddkdw7jSg90e/ZH5wFGnVavg53LpfYU33GVZfij5ZY6xa7hVuA2ri7ZeUC2XByZpsfuRKpDfUVdv61Ayh+gCWJUJWAVHOpfH+j1GoLR5pxMu58UF2VuPbStsTQ5N1BShHJpyhFZAh5DWc4w+LteWUHoGKS8U3tKSOinQfY8cSvTWZbI6fP8Ac7m3HiciIcSehmCC2lqrz8wu6LlqDXWldH0v2scXKD` && - `23+2/j87hBjDcArM4ItesUKMtLF8MU22wy+WDal+ZmBv7SPOs+CZShf0+V9tMN40psWFk3bRQv3QS8AcVtV2q5uvaFZa59N5TaF2+eiZh1JR5ly4lpoVWbeWh94vgaMj2RqBRmzWfIcDnmo8Kbry1n+yE2BQGA+uWhexhzK4SOiVX9dSwOMUNilIG92AWpAQE0kBFjau2nJOem2yHXrMNhZewiYUw6YTXcpWVeQaL/ANR3t1QTnC+ixV` && - `ZsMtVYg7+b9ZfxYrYN6PvXrNn/APg/aX8juU34iicG9JQfxmohAobr7Bzi4vozRSLwErDhWTmMxLWKI4dqveuJamYVLw4fF+8FHZWfPdh7XL03Id1/9RuFHSZv2/3Fn2Kuza5sO4nb54Dz28Ht8Q4rRBrfZ80YhB+im0ymb1DXOYubI0LWBy/Bp3C9lpIJlkwMOLyxLPb7Xa2re96eYKYeRSDeas1nPDtRVLQwxbggLFAU8K0Y8QEIy9` && - `p8mhzL93pYhqY3ARrIvWvRxmJl0CttMIGY3Xri6PoEALBsLpr2Vz1zLLc2BuvBb63djcvRajk/XK45C0usF5iPhPNED7t50fJA3vozZNI5c6vBnoVCBfAJnJ5F0brUM5Cxy/qd1MeB6LfC3t5JZhtCIrpY+7NFUE444Jj19oxdDBQHmyj6RKOQUe6D8nnXI9T1dz63LhwpJC94XJu97hyrtHCdruPZJgeL9wG7whrDRagFBZe3VpoT5q` && - `KaQoc8I/vbQRdBS81hx4AD2hpzwIZ/b2lgnXj1fSBa+a9d6gSwoHxK/aXeaByOacXiaGD5CIPhE3xmZStMwed/3fBDACrKFZi+iha6hTbNZPPKfmvbQroe7zj198gQeG4prPJFuvdGQCHQM0L5BYzr2LEfDUsp7iksrZ5Y8v8AV5CVhgAKX2rzOeNF1PO3A84caujMFQRZNtm2h8B5+rsb0OjK+XIHm3FSt8QOAgxcvVEi79ojfUX4we` && - `p6YxDBAUAoCDSvQUfS2qv67qrCMv5H93mEYoHk8HzBOoI+iUUZgMwvAG1LPHdHxGfnQ/Eo6p7ttr0U3DeDsNJEXA4L1j5jiodgc8sV4MmM5iWGkVHXLxkw9kDmrvF6ZzDq4mB8s51l195sEhVf33l+FHZCxzNah0hcO5j0lK1g9l9DKXd0NJRXqVXiYZa0GohTbnF95lBaYBUw1QuzCmHe84uMpUuWG25sA9AjeizeQEzN5c2y+OOcN1` && - `m4SA3W0+HqdPmrC4BpOgiVbHrR4+tDOssu2cKVd09ZelZmGkWEZKWMNlQVUBVYLauvG4fsASpExR95d+gAVVgWlZxMYG7Bpm19y+mPKFUkptZSqVosSai0mg9EL4cen95nNd6HZPHmWCfkGeLM3fn98pR9LNzYzb7gP5TGN24NGL/b4JW2HEUWtr9+TzAv4SoD3b+0CC+R5etl/E05mbDHgrj3ZeXhxW/BM7bstXGPTPd6cNzWMvNNfb` && - `+/vMe9RPtCdmpm381WIDfOG2WojFYsOfKuvXzMP2fyFW3kAr9ksUrGnzKLPV1PwV/eyqA0pw5XBUxuuRoMPNdG71FAsqKLvBBiYKN4Xhp07pdJdMzVbFYAPQrNrZCF1Hb9DwtaKAlFBBbX3BfR7talF8y6XmP0DlqUUi2DCMPjYWJVg65HyXiyNd3TBnVH0JQjSTa/plhzd6IMywnNDuaMYKMR7vLCfQ1hjOuJQGQx/THx92mYtQnUtU` && - `0+YiShesn4tfaYk10drc+Rn6H95jqwJWVPzCkO1tLW8basgwLF7i65+0sht9iH2CcXlC0euP571uh48AzTq+/9bq4Rb7Fb35xN0Hx37foVBxeT/wAl1L9yLPUmdgmoEFBhNcP/AKjyuBxaCMYJ5pfzOCPfkDnhbDHiLB4RS6nGPqb4i/3zMoNg2ULmg/KFyR5FKkFOhk3vUI2Oqj1QV7Pz9ajSJTSGu0b9u4TMCgFAfS4QfoVanBFjC9` && - `5tRHpkfZGiMHDW/wB4aQQsTSfoCZrNu1ZPJWvXxCeikORhjcKGDI5uZUdhfJ36/OctiITawAp2+bVf2ZstnEbxY/JWNvdA8ZYvMqMGm2QEFAu8yjQU2u66QKVv3rEADiOTqlTikdlmSWkIC7pJwDwvP6FcjGA+g6z9kTutJVtzjjfxNftlGHDUs7At4a8YqWHoUVUdYKyylwMZ1nnfHcrJ0XOuX1wm3ZDx+zIk2GacqaUTfLHK+sAAx0` && - `XeRjnR6m4KB19XIZyFnOb021RnzBGVzTv/AB4l/W/otDSJ0QYABCwqmX2RmrGyIgsgaWC12DvxmO/rgu1zqxx5iI60AoJr26iu5knKne2GveqgF2xEchttBf5haKS/orH8wrqe+jX7Tn4VcMvSFPamVNKoYyXvAGkypf0goeokN+nQ99y1nmVjBaZ5Z/l89R1wAfoyegjJdBvcOgrLFwdVq9e0ZEGujK0H7PiVprljH2OHn53D18S++p` && - `xH6woDS0zNcQENl0KukVe8ZxAEBfRt1+xCoIK8C99ITSyuvZ+WO3KM+n/v6LwT5CAlHcLrkfeBQCrXL+mt7och5nIOdy+Dkl4i2pbGRoywyLoUYQi5hZza2TkbX8pa7+pENtkO79R+ONcQNKk5VjbIMXh37PzRzObiAb8syD2b0fxF2yQ3VqOvwSaCoe5YPDlzKhUh9k1NMVoDLhcsjAUKNmGJ6n1gvJAFkQ6Bo4FfdEd2bY53S8uQSu` && - `YCtRXgpT7xUVxFKvXH2GHBeoLP2iGrPP8AtKC2tBl/M4FmirY69qBM1n+N+JjABSJuA7Qa8lXHx+POHdpj0AAPhjB+XxKCuXxDNBhTDVdjRpyKYPpGOkya+1gmzfw5Vx4xZxdcYA7LDLUeO1VqyZ6IlsyGoOx8ef8AYS33RZuX+CC1UaGKcP2x/T9VQpZPWIhQ1hrUzudHsx7wLuXILVdDgeH7ZJXR9UHnKC6t4PoLHMszHyDGVVyYd2` && - `daR0u8t1x8QtasbDBz/faDGABW0h933j2qRpM2gL+YmKI8AH8Onwso7ZndHn0pNYTBL60IW5MPTg8zlYAtnBpzjveDDmOdxW89P98mJSQ3p1zYAt68GKjIRmkZj6MdhhZ3G7hyiLq7l4exiN4DFD21KtwxzDqGwM4uQ5t4MZrrM34WaeJlQYtUu6K1g2tehlj2sOSOVslVVPfl9YCnIuAp6Bfy46+hNh33u/JgPyjmYA8ytLj+tQLGsD` && - `WLP8ZjfTaq5sNrBx3Lv0qupdOVPDmCoHwpud5Kxp0R1donqOw32lQKFaxt9r+jMGnH+Th+6W4sFd/Te9xuBAp0iNHqQMCUEBVpEswgNXbh9twneAFxYlPGnsy0V+qLt9u649rhfakMxJpcVRk0wbOT2/vHMUFD269oLZFVZRpq8XhzGjlVN45evBvzAViqDyS9GE84tb0XTyjxO2eYXkjW1XpZTppFrZkT3bFlSZSsMpau2Ap7M2ddBK` && - `SJLEa3eKbhCszlW6Xor0Ikke2o8l4/MampQqR97fvUr7zVqCQuOFvhuVcAKFUXeTA1m9Xrceygh0qco9U92FGAQhBoDsK/cZUgFfKIuFbcGb4KrNhwS24wRCbC7VmjQ8Fte7tVK5yKoqlZ9RX63WlSKr7794TY3Kwz6QG0xZlmAjq2bfTNVzANBT6oX5icIeCvzLFLYtWqku7rUBzO0W8m6uvceDT2iZrUgCAyVSX1MZhpXAHl4111L1` && - `9eAE04vP2uFOIurGFFoulaxORCrBBmlqDrTXaMqfPmHNqlpp8fnMRu3uLU5bPkb5KIsNgagaS77j7R3TF3p7MF794Ii90A8MSyocRAzGw6V3RHw3x6U+SGVWNPewt0q0ccsfTCdowHmIjgOEeYAFbkMjGN5A+0TXQF2X5fCAbWUhlY/YS1UUNPbatr7vrCKCOysSlVxGkolLox+g3LJQSwy8vCWryS9WP2I+BhxKGX1hS14gNiTcGPyj` && - `ECAFVbl3+zDKcADS6xz9j4lp75qror6jITHa5Ss+i/W+aaZPBZv4gPgQVa0cyt19LoHDdHzHieCIByGzs45PQuVkdW7L8l3s41NDPgeHh8cnvXWiip9UGqhxTSCzrnf8REpk28Pf8AM3erVdxqmVao+wQvF7o8S2cOnvkK+27OSiaU0Guof3vUtBTDbeXEbVl1Vq6t1dW+ZYtWWLautgPRgCYsqLYB9LpYUXLnIfQkg21A5VhhkfBmDL` && - `ghIV9OZRmWii6zWnTUvVq3Kn2qiR9I7XgAKNQweU5IJcIoiFNIgtgkFfQsTOZDyrxuKNVe6y+UPFr+i/VbWgVBnxLu4EWXHSaSQejLcYblhzCrcAxpULTLdscTCRCmQd/g+I/xeAY+ZZbTvuvD/P71YZqnOSo8J3dBMNvU8i7rmO1Q3a/jsmUFX8ePSFGW60uK/ZXMS4dA0wy7jxgDp61x43klbZSK/wCn7QwgUabGuYhTOzbmFe1X/a` && - `YRRWjz/EdfuIMGPmDT6ODybeVCCOI4+AMzBa8GNtF0tuok0rWvBjl8r+2LLgUMiAXVSGd4wYpuqlnJSKCH6Avau6v7Fw/AubdjCCgw7igvaPRd/TN4l5uUbICK6gaqG7YmEtFLalL4A/pXOImlHIN/Pye49Q5nFh/GviAKysFOK/iULxCqbejN8uKJSqtUAm9VHdagjH5+lTN6MZLbbDD6wFvs1/5j0gWWtj1M+w/TeQN+wrhlp7hgr2` && - `5+08pjcPBfLa6feNcOrhZRUTdoZcmG6Vc0anZuWtIlKMKLz9pewipBZhRxiZUMUEMXx7tfD3WDvDXkdnzKhd5YVtWVfPtiiFZOGoC+kNbq4FlUMDWLOd3hu9zf0EttBz81wrXEugoKmXsjm4zFsefoYDSUmKSCbD4lvj6LlifBziAI71XoQIMcNyLantVf0tJrHB6babBooxriZ2AdXrKplSGDiX6SKWRsQm6jz3GA+sEm2XAjl5wbYF` && - `Ra9phEl7Yo261iOUsE0ItaRxPWVbOyBOrjGtzXSquBuj7fFRZ+nAy0OIyIXi+5gV20Xw20UeOfSxoOAhQREDRw0+nT/fQFDGrOSuXPMG0FdJ+fJ/djDvIW2U1URTklfhAtLEQBnymEyF8/gy5qDQ0FQo9DZ8W4g0oWnIcuemrZeh4vXsNPrxxXpdspMd1amPXJrzHCyELyMvFRbgbkJdLKYfTmFNQKPopRghsfoI2XKJj7729oCUY19R` && - `teX5dQOQDKFW/qN8SejhM/3MukrEL3X4M34XUaZthk7HyNkBJFhLeoPJfulqpctnsfKVDCGlUZldnVoy67QH45CnrEtEdj5+g2uyeQY6/ZLHBNUuFIK9iKeAw+z2yrcRJiPaZ3LPAihsajFwFT1xmurgd6OxGIgi6X2Vxz48xWBxzodRPIVYb6n7e1JhlL3O7yGzl9qca1Td89gC06Wd/ZAbvb1Gd+pye/djYo5ybPZbY+5hKKGXsGhv` && - `k/1plNmgqM0kUrlDetVM1nWosMnnnYpjPoesThfcrz2OfTvcM6RIAspWX5JdvbD7yYp3wmB4x92DvQKSxwNMw0GQJLsvasLBnDR+u6sUkHpUP977ELPbR2X5JSq1dVrs/A+7Gfo5vDGTgemJr33bt3CCA73LOTsgDUyUq6U9/f2lHBBwwiu/ouIC8QTKSnuGycF1/g/vcSwGoIqZgL3Fz9GT6OmY+7HmaNxKtYplq+qZqCioed/wAspI` && - `nDHZIC7e5tZ9gR/aJNetxBjvFq42mfRyBqisfH0N2t7ll5/Y1gslE7kQjBu/HuphEd2Uv3eB+eIAy6GkXryx998xXzwO/Hsf4bVNFuX9z+4pAX5fzo/u/W5bca/wBuE7l1TE3Ds6/rFMs2GCOW6Xq35ZRcDwGV+TWWXTMsIHDFS7AgJ71RBQkwBbU1/aYrDG1ncZS48dKUeYueU4NUv8JBcIQFW/o4HMyY1wRsxbpxOQlk2pjRmUJ2xB` && - `FLLFs7ySMJl8+X+5wW+MS7yxZ6VXpv9G0B/wAfIYf9hjs/DTCygMuj8HjZnc5aEPVbYetU5wYYIsHL3CLHsXfrE7DupVxRqlcY8Vy+fpujiPc+/wBKXlAaYXqUXTF1Qk19eV1+Bbg7bjdbqaTrLmsuOOsxreIpibfS+UwHEUllTlna/tFnkzOkZpCDRFlwKgmb95p3NRxMlBCrm6kOvEvXa00Ckdii/SIOQaRR9RPmbI8LcAGfj/gOgA` && - `NYHYk/3MqsB9pVRC3G+DrxqJURvAvGb/eBUTkE+V/Hl7+ioiApjcuKPFcDoioqoeTuO2YYwYuVV0ysM/Aup84LthWvMW2ZxMxwS7lW/Q5g1Kv3zIgD8wRWHRA4s4fTKxe5KvdS6wAXot47/wCOlmYFXFj4S3ywonquT+tRu4U5mks6Y4vMpqV4KhM/mcCVQ3CrUKMymkBcaqZqDBPvJviQsHcVltrLe/3kD5JmtpsTqABRgP8Akh3UNj` && - `U336/yytFTwlX9GxywaXdWh95iziCo44Jdy8wDARNx/KZLqcpwTNNIZTGZW7jLUEKomRUULKNXzY+8IhBoQDnhdu3/ADBA2FJ4hqC5trxRx6GX6m0emd76DV5ZTsmKVUl1EhawOScxM/RibgLsxSjW11KtQAvtLhkJonSBt7ouJ0Du1P6+sGoAMG67/wCfYeOBWler/RKsXxNj+Az+GyUHpx2CZPZ8PEDLCVywLE40bECOZTUJoOpToQ` && - `P9p0MpU5qgyJ1KA2UqmACndLXacALjZc6/6H0nCn+IVldsV3UKqFS1V74+6c8lTkAlWtPT0+JjyWVdGLy6ILBuHUhIVjiGvrcUsDzDVFIEXLD8nUztAPm3l7FvtMsrwar/AKNBKSyBBrWDoFwwYbIpIhGXWrRXWvEGHu58D31eISIhYjYwRGizBvcRuoCp9WG6i4DB8q9cJyQiFl+KbejzzxGJLYtDFjgauLa1bA9Ojx/0qWUzLoDGHu` && - `fxFULypP2hNzEkjHa34ROoxZSxJd2LDxkBhrYLYra9Ba+YvBGafqc8vHBbPRxvHqbILNaiwhuFG0l7whR734mj27WPVMV4N90pEeqcdry/t7/9dbnqtPXiN1vLVXFILWuvkWbwoYWJRAaX/qbuTDhmABRg/wDzp//aAAwDAQACAAMAAAAQ88888888884ARDDrK8888888888888888880l3isemBc88888888888888YEoHAl0dmE+D` && - `8888d8888888PB1yRAXh1lwOj888Z88888888ar7wfQUk2OHdPc8HEK8888884knBHIEl6AFnQYIbS5l8888888bRBVmcz7gIxM0BJYrDAh/kZHim5zdpaN98q/wBvMMOMD+NfBn8fZHBL+BHCY74KX+/A/wCSfhpE/JaV7lpSiMuvrihglLLaLDV0o5LutM4RowRmdqbpx7redMzsyb8KNWDawmdLc4Ae96L14MmXi4iMOgLJZUPBiI` && - `9OCrJIWKKUm4x5ZdfAYe4/oL7TN3JpzazTyFNiWYhI5qLuWm8fBJ8PLy/Hzxn5b7qnEafoBe+cpoqTPsOHzzxZJGasV+jjUqgyB+r57yzzzzzzzzxqFIAobBOXJbhGmLzzzzzzzzzzzDf3w4J9lpNrunzzzzzzzzzzzzzxjfSdgwQhb3zzzzzzzzzzzzzzzzwB8VbPPfXzzzzzzzzzzzzzzzzzzzzzHDzzzzzzzzzzzzzzzzzzzzzzzz` && - `zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/8QAKhEBAAICAAQFBAMBAQAAAAAAAQARITEQQVFhMIGR4fBxobHRIEDBYPH/2gAIAQMBAT8Q8PsRChEF7QbDPUVZ/pu6IihDOs3E7DLuVLEDOqF1llsyoSvHqIqB9TKtuoEYDMOswspO3rK24RW38bjejwCrzAZNQfKWNRhjRglSy50JtMxQtJjDH8` && - `MgOJTz4DCOcJrb1YATcqb3KJzonSJMEcN661GscKYhvN+8214GUKmJiEscpcbjA/aoUcjv2lh1QHLWr6sAwXByRBdxhTGY0dY4xru79OUAm1fBbN4IfGEq1LLjiIXhAxOEBhEjiN1/H1i9pfQgfVE5RKaM5+coBrbro8vadAfT9somfV395glFsRElyNMMFbuGBKvrKDUVBwfs/Tv2nLS5V6oKMxJykabJqEUyhCcQFD/YkrtyZf5MwU` && - `MZhb5zVqjCxDB6f5Fdq+1SkrA7YjZUIF2ixmC20jls1BRjitLfrGLjwqqIGMEx3CpeMwG6ZhMhakpC61wCKPtNcAohH8nzv34OSDTAWouKnnJelyiWDDUE2lsGCAc4lBLUyztByztBLcIcRzgGbeFSuk0z581CynThpVBMGoGkzbamF6GGYuiIJFrMSEAdkolBiIYO8RE3wMkQYm4sMRQJy9oBOCopg5bjSiok7thlGBYdxsvw/wDIiY` && - `R9SWTN+pMjHy5ecbSNdsXpiAOo84AuAUjJtceQfm+AC2W0PK/KBIRQz1OfDUGJSI5wcGWvRqDoh9RGMtToOO8EajQqUS8vKUaqWo8OcYuRlt9OsWUxfSJdcBpfbGHUpxLhTLBg1HOZ+JbuAMTU7lxlL2IrolLkcqnNYgBjibg5x+4q5eDRPclkdh8/MBxo+3twzwyi0xiG4nSJ1ItAjURxAhBh5KwirF07+/AZZUzsY6y94gu2HwY79m` && - `mHZDKBMnzl78EZUsJfBZS41qU5yy5lKplhAxTrnXo7ju7Okpry6cyX6Prj9zAL/AgDoaf3LNGj6MAc7ZAIlwCM1wM7hKlQOAxigC1+EfOV9ayteGQKWQYHXbjWMSgmpcuEGPEY+3tCvvL82+IrcA1lAbVxcS5ympngGITCfT8xH8craqUy57/uZqAtg3XCuFRBtVCAcsYx1f6VoI0uCfPODMFsCOPnfrzgxY4ifu+pMrFRV3/WAwMshn` && - `/l/wD/xAAqEQEAAgECBAYDAQEBAQAAAAABABEhMUFRYXHwEIGRobHBMNHx4SBAYP/aAAgBAgEBPxD8Yhd8obbgwr5IIXCDJHSHiP8A41KYlo7RXmmAzM4AadfSPQ5QTbBK1oOf+RgJbazfzAGPzgdJROsbcxFJliNmGWI4mCIFYqDgs7N1UE5V+dJfWuv+cQLVo/A0Saw1eH0P3Ni36/P9iO2IYXLI9xHGoIaliK+cOwohsa9f+ClVXT` && - `GPWWKLNLzX1fOr/ASGxcYNAdg7tj0S0vUoFkqXUslVLnMZLzmYMTClepxPrusQKJXgK8MYD8mhfevlEv8ABv8AHe8CjhB7y8LTz3leiNR8x775xB3Dh+nv7hqnHDfpyg54jXAN1+pkIQpYji4dou+9XTn+5b1r4RfdwH3wIhnfJp5u/lAygBMHfzKfgu0FuiWQLx/sA/v/AHENHLFleV/kWcwyDwEFG6Pnrxg45R1t+OHvFZnNlYmCNO` && - `jVXMRXnAdq0YM/1jNI8NXz4vVmAVc/0fuWPDQDTXXBy485YQbQX09ZoTKys1s66VLyA4xc1jYy+hKRbxyY68POPDM0xT1cTgnnUOpGvS+PkaHrmyKi+CtNNM6Y9JndoVq2nfFS7Es2hkqKZjW4tjmWa9w0YUDrvvf3Kayt9O84hKdDL3xi9CvPPzAaoUYDGM+7Mq71fADWGMm3PLbw266DZRm7Gn4fbpxtmAqBbN16RUzPOteZSHTaIU` && - `AcLWn1iGH38Rbd31jNyV3UQLhI07w4ECYzylTVlU9eP09I3cRWxNqYhQYl2nMDWjQcId7u/SGsBKW8Vx9fAlpRrgq+fU0/sqVAYsExMkZO2H6PBAF0iY2rfXp075uLX7/3vE7NqHIFW+JmjS33ho2JpQU4v6YsCW8va4QfUTDVa6QzRLyd/uG9KuFOj3rBTcYfPeUodYWg1c8tLg4hb8RHoGY+pRbR1+3dly4ZiEi8p0MJ9xSGj32+BE` && - `6jB8/eIhpC4GsVC8vfMp0aypqWeUoYJsk7eUEu54CwMQLBqH3q6QGjrEWzR7P6gHQz8Yq/7AxGBtqs3aBQ6ptH6Wu/gBcwuEkdedbOefQ4xB1HwRDj9f2KOssRX1O8d6xQnOIc/wAe/iHjpiKbVxJpl6eZp/sXheAoe9noRyWj0f1L9I3wsaAvV38tjzhp4tf3129ZX9TGOp9jH3FcetY4aabw8GLe/WMEFIgMmd105ge3huOmGgvqvp` && - `EikNImeEe7NlHQxr884QjFB0gER6d33wgVGp7/ANxXnKzQ6J8S2AZibDD4hvt997RHE5SmbHfesLLqXRpRuw2Nlf58SwS6zcYxMCUGYoVM6DHlnzeUDDoUX3rzh4jWAuiPQV8m694mNCbJs949oIwnx3w/sQvaKAc7Qvl1gPQ3F5/ao7e29yoNTlEOdYBtZgDSEdHONtJUNpAqy1jPMwxCaCvBKT5YGjwCnOaNVhx7YZSX3sKJnHKuEX` && - `o7XStHz1F5nnBpR4uXJYpt/IITAXKOXbpAVlGceesv2pcySEFLfTzmKBbXvnDYWrE4Ot9KrznBl3WXZKAOSsb06Uaryrcb4HS1R33x8VWLXb26zYhqPfDRjvmUxEaEQusJWuv+TYeNbLr03iSlPgNShu4OiiXVNdnT1gjYr/NJsTV8U+utf7LwNewSqvemUkVxH3xloqGruztjUKxv8rBt5vV6ae0RQLdWsv8Aw7UW9fsc5WUJ6nls8d` && - `ma8g0e+EZYOnt1OUFHJ6ezn0lVFqGiR2JwPiBB4WRKYljCiJBQV6b97Q7iGzYaAviG/wB34I1fhorKYeENFQdbM8+MsVBOIqWossZYlQLgUzJMG5YzLJsy6v6Q2VB+QChc1NuG3fn5S2KaNOKJWJR1mCU1mo8AoWrxTqF/qAQOu2d9PzkUWSnq+lVZ5NfMTNDv085VLA5LgKxKlmJpUeBuBwFGTngc6z0+/wDxOFLiFdLPJHZ/lVBOAv` && - `U8jF+cSoRxKvo5H1GBbVmpWYQpxzH2z6PnNeQuuIae+a0gNB/5l1TKVe/rrCuIf/L/AP/EACsQAQEAAwACAgECBgMBAQEAAAERACExQVFhcYEQkSAwUKGx8EDB0eHxgP/aAAgBAQABPxD/AJH4/R/U5+jn1/R1hXEfwF45oSvnq+riwAdXAZFIBs1rKy3y+fOHTxUdr/bBfUQikBpE4ncsinSeP9MKk/SNmWKevmT/APTCvsQvUhgmhc` && - `f6K4wSsDuRSYKufTg6nekytMdZbUQMUk93lIiGkT1msU6featvqO56+stDMCKzWeINzwTeLuKME2AeL6InqTBzqhZmwWxvVIDxjinVABTaKg8/TyythmQXlV0GJZo1lUSAKKoNCIojmkwi8CCfS79nvJQQUzFBPNwdX+hjde5GWHpEbTWOiBXOQtVkZoUWIYAKybiFhNCdP23hKyir6JFY9t/AFBnO29HAGbaeXBoUE9UT6bmiwUlpCn` && - `uKA3s1G6KQGgSTDzoNjcl4JGUNhRgFVa25O0cFPAONOfWcTCoLYdkNhPTpLiCY2jJqjZgKHBPBnv8ASHeRzHJKFd52HnpXs0kfvK/w8gAKz/fOGneoeP8AnT9NYNrpgBVroA2rrWRIrGommNodAo7ozXtSqnBWFhFQNGwX+6G5xVrIpFaJ3kCFHu8H134cK/vcq6dyVHU3M2u7jrk4iqD8b0TwT++aNgb+MA4RChRKhHYP2Y11hGt4R4` && - `xGIlbQEuBNurpwmS/bmnTUChNpfJhLLQG1p4xCLuxjPDn4x/lACVIQodf7n7n/AAUYJ8QuX5weqBsTT/u8bbVb0E2tahqaEddhcAAZYolBRGCxwUL0hlcLvBq0/wAYty7xsnmJ84bxn25jNxrv1iSUjrJGypCMXG6UWp4wAoH/AEwE/L1wjOk/tnsDhmzy8NifIAXgG6qAirTQwklzxyFXrV9VJfbiJNFlw/kut+sawcd0pXQEUugrr+` && - `fNYrSAq4EUpB2T9+5NuAlsylL0UrKPWA9MLy0IcMZa9BcH4O3i+UD4L64I28AvxR1+8jKjEJO4BaZI6ZJ10zb5GdIUzYG+JhqeHWJLUlHBGgenH2/gYA3rHhp7ca3dzxyCev8As9jpNImVi4EMqSSnV2lZ2ShECjYEriSOeNfxv1jB0lxny/484bXHb37OFjpWpHgPU24dOFtZBQ7Agfz1aRbLy4PZ69ppUApEgKwDEdoe6qhdEeBFKS` && - `9JtMJoW166kMV9tvbiFtLmnmA6T+cS/wB2QFL5MUjH4zcinl8YLwnUzQhq7Mra1/jFTrfgxSR63gRIC8+XHXA6zlvHcLdk3XnGkIb1W37yVAlixRNZiLTTzAjDVCoOtFmUhBGwSAmyMMvmWfY/xo5wneRuRdOWhEDAacie2WTbwR8YhkVyNo6T+eodcesDgA6GfVq3ruAS+pRLRp1UXmrkQE8XSiAKKWFTTWIMRzeVe/I9wj8YHrFrYM` && - `/9M1g9WvB/1kxbzZhmwxN9mNAtXZ794IGhtfLjkSZsXmKjV/OCok8vnHAYO/vAlOg5hiPF0HnAp6c5jsc+nMVegdVhizKay77GUoC3CTDU+gFaCxDnlt9E84fH8KXgsJNpLIABuvgY4lDFXzQSCQwTBaT2eMhML5ZSt/nmccGeIJWpFJRfePA6qhZUpAQRHaEDEwjXRAAEvtNhh4ZS4zpPxlxu5DH2TEM1O4UNJuHkxEdmkxjSq49ZKb` && - `qbmKOKPJ/vcuk+9f73GU6u8gg7Z+2O+g2+8frPjJ21vCIEDrN+UsyaT3HnIFUcHlwcoKV+MTWTvr6wr5JLUFAIUcFDZBbNAk9GKqsikqVVVzYlBR28fwc6pvJI+AFx2HQQX0CCwupSc1On1UgwFXrVWvVs6BIBZp3jUXNQpQaCnfmfjx3mLeCgPg/n8wArkQm4a2QBQtBwKLchpBcaoTwMRKNPTQAjZUuXUX2Dl8BIhTiacip/+oMkFt` && - `pJjoSXjwnvNSdM6wgHu4RS0tEH57MWFgD0o07CoJvDV89Np0iZLw2LrL1GpKcWSrvlducNq/3/APmQ5YjZZC4MoVOjGcNIE03RpTms6tAZl3WuHy5OlfM/xjPMF6dYzAOPrVbTy/GAgQcBtzduzSgej/fGdEAQIRdlCyWh4KskkAVJvoeHX3MWlx5y5eXwMwvsbhUClFzRX6WSGniShOPOxNGol9KXlRbF1KYvlqKvAMKhHcIAzSNxx1` && - `XadzoAEAMjoDP7ZCCw/nKAqwMVxGtDhRu4iLeS/wBKAQ7hKIqq2iiyKX+zDwDQfa1JXVepMTKqaTrC0s2r8YWOg0Md+vOGctjciIeUs+zNi/wh7V8SbU5gVw0s+y4NKQeOpeQcqw2WPmihGjFT+sFOhFaDmKHu514PuqMUoOhsQstHOhKoYlWYKjO2meYZQVEGjSgIjaFMn61Ra1IE2UXETSQSQouol1FDNY1lZoJsxbV3+gVBtQ/7yI` && - `Ww18sYsV8DkSh5nuVb791wLIpoV2uAah43MHb5GSoAEmwKeEilbtoSiQCeygojC5GmwbDy76yO2JEm0OmNCECjaCNIiHibSaBLKJHAQgUiahhjpqhdEXH8Md0ll6pUUoMxqQQbtiwYMgchEabK4I6mj0S2iWAkBUAkqb/GBFF/nPMLVSs3sruRQmUY1vjgmGmNkqMayqIFFQ1rVKtbVxSs2SwI8Hyy8ccAv8TL5lU+wywj4SW3UtiHkV` && - `aMbcjECALxR+XlC2EnefT2aN66eT4+MM6aIt0KNR+TfzlEGQOmgXVNwXVZm3UCIoeUdZp/S3SYYUlLVeH3hs4jtL4pSnUWXDmqV4BUBkIKlfNdoB+7I50PrBQRb7SlQxdmrKuFtnqiiPaugcfdPz2Be1QUEQiF+MTxeY7E0HhJQ6Ku0VrSykniwtk8sDTCZAyHyNpqTBqntFmUjvILZjYNcqI8I7hA83g5Wn2360dYeHSezJ/XE7ognQ` && - `qtn9sOhhvlKABIyaWzggdCGwUBHFEJg2uP+y6qK75VW2FYGPWRUlCmg0HEYUeHBiEAQvRpsmXCKZGCGg05rmna4xLe4IN7dVUaIBYKOvPMAFjyuj+cIk3WJsKCWLCyNFEMQU3mjTSIUAmxCqIUkgDQAABzDAK6wiUeXernMS2KQW3dBS1Bi4BoCrdgNgCqeAV5jEpWqIIQVDaSHTrmOdk4xg00AaPO+NFGPxlMv9xX5ucMG1cFxI2thH` && - `QVAwnGjqg6bhAEdCbIbNjjecWP4wPFxW5vCuI8TCPC4x8zoCrm0tETbJ31MaIvo/FkT558/jCDjO8FKbdYJA0ZYvIQI9uAAXbBoYKKk0awc1j1wzZgfEIg+wKF4XCSuMAro9A6ZMA1V4bFFkEa4aAIQ4XG45gYkSpJVm14StALAW84Wwf2hu1UKtiak68DO+8RtyJm+qBgENjUUoVAU5ECpjN6UIkjrL5IqCgsNCgsFrb7/wB+sfVFW5` && - `45nj9d4TL4z2s/Q+MWbUDC7y4jTBbhCjNXaTlF14rh8nCjiiti2bZNNw28iEWIKdDQVfGaWCjcUNPkjhWAKttREQDTaAkGbY1NEqkTcBtpalIVuARI2IKhzVIIXWHAgxnSiij5M0WDFJ0J6mzFAgXOFFsBp48nvIyUFrD0AXQuEoFk2xSJAlGjYN0oCgxA8tAeNqgx2WNKASvP0uhwXG4UPGDY/bOt6wmhRFSp/wCYWz8F5N6X/fObMb` && - `Utnwue5uVmWBew/YxxCpsoBIIFERRTwYxbUCyS99mFpXaCOEFZjGlKX1pHfvDuxzte4k+02gbQZC46YBhm6qwUDGHAsGrsUPdGqrTHvWzpgTtUc1oAADDOjDCfMg/D6yepA2bsleNx3AhPJjeJSUVtLhC6RwIBNQ1NZrATcJACABwDx+uvLiw7TrXQ7rHguCnXwLp9jXpzjjRmUEIaUIgWG2CoET2OQ6Z9U0G9aTe+4xhNX6chOVR3qM` && - `9iCJABE+F8fOrkjYVePTr9/SYobbD0SUQC9ukY6raKBLRN5ND5cWOd8eQhfsGxAMxcFsa010IocdvXZGsuW61i0TdNDpDn5FaqCDcBiIhwPcZAFYAjEINF5gi0rpuSTcsVHW3piGkWCW2foLs8wFUqljumgaFJF1RbxokBD4DuQQlAtdMIbKoU2W+MN4kgskIkGWr7843hZ0kwGUy7Pyy9UhqktWhLoKb3tzSiQgCaTZA61b6KglEGw0` && - `CYb0tBU8Z7GFY4bkz/AFG8vnEemz5cE1r095LFjJ2nNQvBOpBSc8N6oiHYfAi1xkrFwzsaTISimLhRHeq0IQ2uiCjgihUojTFAaVTE24FQrHrLhT2RNAbsixx3cbcOwzb0PFPnw4HIywSczXAOoUU3et+snCbOU7CJ5fnHBcXUKw5RFPHKBKmDz6N0SoPuqagbDlho5DziYNJG/vjzAVmPoJBW4UkU/QQ7MqVi4wSPANt5RaggiopbTB` && - `2vZO4VXqnYSReqhAFDQrOBGL0aiEltOmMm3Uz2a36lQa6MUoDDIKbDfATBYXT4XYGo7Fg9TKvnA3njY7Q21Tmk4ZSKPEiNtNCQkDmEViSh9v3C5zACWoAZEWBfD0wtcw1moFc+N0jvAwOJAmQJCBKoRWtr3JU1EN2IjgFB3EXUCxCF6qoAKIRovzfyBNDQLBQLVVJWHeoRRbwum0pudbenGqMSkrFLDyHkx4oA2kDoDQfO3lXC4o4mzc` && - `/uv9cqD90JNLNSUCu24+XiiOgCIJAjsJhjCe5OgDj00EqkCRG8PBjaCsL4rPbgPHKOAU9mbYJ4yS/s4RDXHBsr59YiqQgSjZdkfCmazLXqFgnbujmzCopAfTMJuIyLiExWqkkJaPbRJAwZPxJIEgdIjvD72VIn3hTCzbKmBTOw0AkaK8HLDxgklo3J1QDINRXRTxeE/Ls2GmXYHyv0eYo3ziiEIeOHArZEwweAKATEE/OOB+2fMBDGpi` && - `rrDm0bm8knZQoghjdAveNBEADgHjKZshlWsDRty3znQc9XLh4yZMTGmrwblaO90QAotZmWKgWDiexwSAXziCXfgxztxSsDRh+4un0Q8eFrABVAUAxRWQD4QNdpUKCAAMyGC4SlFtlsBGDshmUqooj5ExBmimzaziLp101emQoORo0bsgrQotARimgDEHTHLJORkOLqpdjPk7cq+djr+2+ksPfrBxRgHqK6MI6C+QKJCChgravTQCvge8` && - `yiSvZxxAeXLPg49sJSl3cmIAo9YdV6M8JGCHWWvg6/BoXWBDTgbha8Mk6pWu8CXh0nneHNhiMCZjuYCNihKbPcWiXTaK+fJpzYaFCg+EKwEjerHKDSI+THWIuqgD7FSqXgfFv7yalCBYgUDBC76EK4FFTcA40O03JoFNQAgEUVi8Rf0ssJdiiOo1Ca0GC/PnfX3kSI+DANnXEBfdwGeecHWWJgi2JlIrIMLCzW9YOJAZ4oLBPZ2shAln` && - `k/RcH++KraUAFR5+sT7KJ4NIci+FOsEXgKqAHVcQRkHW4iaT5xXQ7jwr3FFXphCAnylrvwCJk5ZpdwPs1Q8opqKoWMj4p9/b9sWrl81bsh8DxZuXLg7EZmDsVTdGDrHCLJTHVL3aXX0HVBDLtevGPuFDgfyaHzcHVSXDodov8AJHH5Pxk2XA61qB8ZZGsRuko6Ztq63FPlxYxbCHBigKgpYau5l+AB/kIqUTohASCJUsgQMegYD0azZE` && - `iuADQpk4rW2nfN8Z3KD+4BQ+XXzhFJFNmbdgarncsQLl8ESCFKbaTAAARRIog2dKBvtpS4AQa07PzzHzGNN2UE7VehLOmJ4YiFMfiujIoCzYHRMvpiq5hPm+sCSEh2GB+vL8Y4tfR2IIu4APDBtukIMTcdQgKEjdWScKL2+f0W4YgEVVdAG7hDLzLI2HSC6VVogHS+W8OwxUp4csfL3ATutZfqb3gzs64CInkRmCIZcUAWULsK8AsHG9` && - `TcCavUW/Pxg0uKWRRGI+8po1e4LMSKVaghWJU8sh5mPEQ2VU8BWFBIKFbDsIiADYOhCFC6O8D/AOSIvELvzWunWk4HjdyrAsCV2QzAoiTVaa/Bd8I7MhoLSyCD3x/vhF5OKycVVZZX1hF6BKQk0ER+RMbm+cM0cmxPZ7xeZ7k2wKJ0jWdoLM2XMArUNIUqyuj8YNt7eDwWJpggaCxmfnz6dGvJILNaHBRy74QgWoAWqoAK8x0lEEq06U` && - `RBUOwhUD+BjUKzFNPhV9e/8Oh6GDXVIc+LvXl3hoGIt5PPk+c6CQ7HgVh3gKqbXEPEdFTpOwSgXps2oCA0jVK6qLPtwx1ckTkrYEaIIfJippYKSISaS+HWvgwWCtb2Fi7DnDvujg1vqMyDfkBP7q/sZfJGuEFDwcA9HS2hjPSm1tiEavVmu5crjZg0VldpQgQtGDv4aCNAGgDxnCYwYp3KPdZ4PWMLtiNCfeSNO3hFnoPycLAcDsbTUN` && - `O7oTeApEtUFEfInnD9RLJGrdPsQvsPTGcJJlAonwmMoLDFK0BQHSI4w2ZsB127QWbqDwxgw+O4IILKWERVFCaQAbMBvAzbPPcYlgvLbsN4tkC0EHgHMBFSrWZi8CgzQxoIoQV3BoTjNawYQXd94YHcmA/u7hE3QnUGlKb5T7M83kzxEvnY4mXUU8T3P4GTDhARFJbS8EMtYOxqiY6lKVCslLpF2mjOCGlGyUH7PeHnqOa1dHgXzfvJU1` && - `6SX5UfpJlOneg3Pj4PR4MQWCDh3JWqQG2x84oxNZGZjyQL4H5yVwbm12NBG0JNpkP0hACKqLpUBCgKSYkhkoPxooQ2AJE+E/TdML7A4kKgUVVgi1CFCJth9s8DgNB8qtTFU/TTFri4UaUN5syhS9MJ2E7mII70+MtpiWh7dPhPCcTwiYj1+xULfIImhsBBM8mH6MWCPJdjZNx4+cMGwkEIAGgPWJGfNH/mOPl6wJ17RTVJS+BfOBPkcw` && - `IhIXB/kFiEqVddtBZbV1dejFLkG140+n9zDCMwnhJT8mb/AA1/AVdNNLLMTVDzDQw+H5y4GuPx84UOhcQLoXfAiqFcBv2nAe/+e0CKru1rSIFIoOv4l4/oUEHvb8HzkRkzc+fgx2dvYKaRTi26TrZmnP4Nhb+h/D1hpQSzIRvAUIGbAJciHUMNi6e4Lr04LRrztMNpxPqWDy+jKj0GFVTwF6cToxeuKhGRT7YFfAHjEMI0FKMntHy184` && - `EmPaiuR1fB+cV2mxkF1/vR/BD+4BaPhVrwOjCMqIwr8sh+xjl1o/tj+jqgSkqSH2dwU2GtuH1iYSvE6ZcgKVB0/Dr98BMiKCwO8wAD5LyZbUo6Umw0B9ZBdr85c3grhgQQggItEeugXOgqbQ+cJ3G+jBaa+0nwOgnSKRIcb7HeSqQVR0is/tP2x/DdBhrSFDSb8PmEzOg4kSkRilEcYafgCC3REDaszj5ZyeKBRSIiJTmEnZQUeYpQgH` && - `KoyyPDhcWdkDxu8UiheLKjBpCZpbRV4t87EUJr1qjWsjLM/eRtQfbz0Zmm7AEA21BuTyFTVEhQwg/Iof7ZvIQCD49cUx4CEnhQB9sMODKzybQ0UOWCyu7hAU75qiGCJNujyxDg45AmxPJmsOcqRAhqIUfDO4xaIG76mqgfESEIYpW8oRX0AFWmIufPRKh0igUh1DpGQ/s5AQkFRwelp7EwehkO0GsVcFSUBguVFoNdvbmn4qZa9GWBUo` && - `XpJBBsTBd4gH9G7F+Ty+mV1kbp9hiztshXhWtP0B+jsPj9POSUeYHeKIBQ/wAZvlQ2qmmefrNfVBShQJu4aVttyAQACML1zZqtFGVRs1P0hNsyz7ViJNArBVA+UyJ6DvbmyxThgbej1kJ3JoSiE6CfYdQTmqtC8kV84+t2Q0sUGukEVFDDDNplorRzSn2wDwRCQoeGi+smityiiWbgpEUlLcgIpxSGEFFIRKlGBr6D2AvSJKLX78qUJK` && - `kU6bADgVUeAFDB+nFIUsRooiIoWEHRgmBxAmcIgECrniCDxH14xSJgwS/ebWtLR/KZxg0s/IQr8Z5RGUT4DGNibsiunZGz2J8ORF7vDjoJIRTiNi72AfC17nnEgMgAwGqAW7BQBEcxHVNZ+4aV4DiBY2AEAGGtilEbDm2rmoKI1XhIhSG77AwTalSEB24ADr8t5f5mAmJN6ROPnEdgpkMHEKEFWvGMxr1McQAResbtjf1Y6TXqeWiiAM` && - `azgS1LtR0WBKG74em9mu+dEKrNuBl/SGoQqTRuvGnCeLsPEguP0BQogGk3Y4X0RJQXsVpDb43gpVJmigPxxxDpen4wagxPgEpag34wbCwBahgoYJRYOPQvX60N0gl3b+Xp8XCIfQGWxj7cIa0GArfPM9pqQQ8XYjHyMrScKbTWfLaU+gjO5o0INy1srYRE2vca8QtddFoEkEkOY3a7FLlEvNN3jQilqjLVhLSUV4AalifbNAH3miSRBt` && - `SMEqCCxg418slIl1mQEHUMD5TAAABoKqCmqDhytkKGBKLWaJuAXHiNDFfKaqvpThZhxCiXvR0moeTxfHDcF0FBKPKI79nvCfNsVvQalUACqgZ5cELgFGQW5EC4IdCgQFGICFSg2PQ+Qe4CGgCCLwEEMDJdwwWrRQEFPBUGjzjRKHjCOjWUH8DOxMAGsHlS4BGqmrjgXEm+0FYKTgaQoHniHaJ2DTN3n6MRZXfKz5+cAJdt1goKh84Aim` && - `McoEH6aSfUNYO7VlAD6C5p3ToAqVoD0BgQNBhfQFS3oImZqV6FwFlEEtahnBcBu6waWo3hIaDjDYp67kWl1EEVeHesouTFAig02gfSCVgCmzxcf0ABBbQIa/OgfbkwwV/e2MVPpMuI+i5vXlHDKhePHBXXE8QRXYjRgYhEKaGLiE0KkRFIgb1JkKnJEiCao2G4vBAVRTBAIE1QBYzeHsxahBFQ2gi7HDBP0FkPI6T5MpqD7DjCarVyHS` && - `wwnhG15qHOmMm8QLeNgaIu5hkgswKBNIiI4BsbsAOkTIkZUwYLFiAXZ8jFmiCkLNoCJyQ8jwSABbRMDwAQEBh7FWrG8oKKhUF0aIGCAh5zyjwsw4cwCi0Ljjp5bFVOuh5hKxmoAVapZisA8THf2VlTd86Pxk3XITjcJQ2FWvz/AHx3UJoXCOx2GF8DxlmzNu5DpqQMmD2xJ6H1gtHe7ZARUSuzN0RQbQPAVKznv9Hm8B0YfPjCNEF3XN` && - `gIEd/okTwVtdUEALqqlRsTi9GAK1Vm3DYJgiUbmzp6TPagU/A7n2NWmYpAWIkRDErvD3r+GQDxJrJQvGMAq9JHlfOO+tFODFlAZpfOsTe+v4wCSJe5qyieYvjXj434ehh9BE9jlXyft5NTCaBSlS1UCatftXq5USC4RzRfY2/+4pHAUm8uETFAWALg5oWO7PHmSHDLhwBfYBGlEQKhdMh0g9ydEXSy8cDCQJMoNjaXBbLcU0Ngb4vzk8` && - `gsjbgGhSBAs8tkiNfjBjrHcdBmlQQAKqsM0lBKwp8MU/ZchyB58ZFqp7c0BYGjsOzEoZK3eUmwJsEbCDXvYwwdheH10i4XOx4J6fdxKUKXbd+8L1nRDZgsVdxxo/EOO0z0txesd4wul2SCI0Cqkg2GGAHBsC5DQQypL8fqUBOhQUSKuk+fTGCdSjaf+nMVVvc+DFyqqw1BkCdNdzlBdYLal99yfaziFfeUzZI7tgbdu33gEtNFAQPYtD` && - `4esWgFG1+yEsU5S0RiPD2j0C3eENLTxTChqIFEfCOx9jE85YTncepxP3xGxcKyesdQOr7N8p3x3EA9ieYPK10EZ5iCINhvRGR6T2qeqzWsaE/CZUPRbdHlYjnXtHsG7zyeV1A84AgIE+xroYLsIoKEpspgPaFGOqLQxcVfh4ICCg1a1ABbDNK2qKGIW0ehS2PTAuaAbtw0J9naw0OdTqwewM3FDW26wuks9vtrVEhaDw3NkbCuL4vWj8` && - `wAioy2jGmoFw8iaHYygR8gcTEWUJjhUobmjmngjgPa4wENA5THgScoD0Mh1yV3JX370ZRR0ut/8zVViHjByoHeCEXnXtwEZTAGqYXD+MWOXGh8YqyvDx88KXuS8hMCEuxCoO57ueP12GJmXYu3Qi1MmjHyNm6YZssE3Y0jmus4drGxoq7utXWSmU5dAdNBnSgaMBAvUfQAhvErA19YI2DeQzKPMULMeBgW9PS4aJDlNGI+YcmGiFx8CB` && - `KMF+RYTPhQxQe30HV4G3KqOh/Bc7n1NuNgdk6iHkT8nyKNFMrJa1KGgYEfspfExIQBBJ09P75RjdQob0U0QykDXAyEi5sIiCfOzZvR4MOCy99wfrEYssonlnrf752gNrBigIpNydA1KntgzpRllUSTZCx6u4rDFBFISjGpWFlixm8KUoIfJQbPr6e8q8VULUqktqTwUN8ixwohI7UKYFLQqQylAZPXnRWUOLUfeDAjtqIpKZBEgZjhgu` && - `uni34xEDbey4NAF06c8GwnvJQFZEI8he5pfYVkHQX1htwAUgG74MNXrbdmYmq4NmUcPedUQeVIEAroCB/AZsfSuhkI4CxgXWoO0lATFpsoRslIopesBskfOnHYWQzHJZ2Ka06XEHRbGkRPhJ3uQey5LCgZvso68QSVU6I4vofeb+h8OdF+2StWHALjBYyEFjUYJoMnAilCV1dlpoBANVhuYwbNOMqRrcCSLq4sXneHpWKH4fpyYYD5ZE` && - `I4tUDxUwYwFkAHgDRhBQJKEt05RXWmt8ON32L5UFEElIjFpRJ+zw1sD5Ix+EYAOTBKAVjRH5E3N4A8hAFnoaNSTSIlEcbSoQonA6Ud7w6aZhGSwFicduS2LmoAYsWCMCGwQYjyiCCipI7NGnAEBdCoxfdcVFK6rCcbiwgz5UDY0nwY5q7w2ABEd1PMPFEMMUqCeGSzLM0pTWnneFDB8mGmEPPnD6BPOblVMQmaXHtXcBYbKF6marT6hA` && - `EhBp4mCxK0aRpAsOGgDwAeM3/C40DjJppDYgqgB3cSI3ZErodWIC1qGHleR0FBFgElKdm8kwSpCUAlW3WbxQxb6MZxBZCqb1pdZUWuo0FCsB2BdUrsBUgeac/OSITfMJIAeDHcVH5wYJ/nOL+LDDVfXn/3BlJfWIVpwpirLhbrjWIdZfukaA3m9H4wNKrcHd8ZV9tuae+JguAeHIwLIeseGHl977Jdz3hLEiIi02KJ0GIjCiaxlC8+QC` && - `hqV9gRfAjWfCmxsnN8YzftEGgGEhAU/DFDxSEFC0abmuU81ahbDkEUUpugAZ3s7HnBogXFKoB3TwFYRxYo7XUzwm9R5IlTA49A1OU4CkR01CUBx7c6hmsaH7mV5w1ugoqTVpsuBa6wBBQkVaDVdnuUG0BBhtfIadqogxoWWWti3QeK9x0xYG7OX47/AITuQeQqQSFEE6oz8ZJg1Xr0oKgp1SYOz6Xp1pQbNakADnAYJfg1/GUi4nSjIB` && - `jVWU03M5JAIA/ZB+kcA78TfFF4FTdXQ/oVYgYTRYe9mjUX45WFHhB0fIYDQP4htVVRRCTrcOs0ODRNC0CGlqxBbFzWCGLrznwWNb2uVJhxheneVbjopBNr0g+veUYpUWitq3tJbAgPC4N4kVzcMypvUz5OsuC4gnjNBujGVB7gBPlmkgp8frEijXHI6fVxYwoEgpYwuM1o6lS1Vdoqq7VVw0XnnLB3gxpAAUCwXzK/u4qNpA8pt1sWE9` && - `Lg1fXyO6nABcnHXfYkCfgp9ndx/bAKEchEg2bjVTQhkPWa1myCiMV0nG6XUzvY30Zw0aAws1ehIOjhAKLpSql+KCMNykahA1qe1uP3/HaLWI4jgFEYRooLArqJmqbfh7ngKaDHI7glh8IK/Yo6Uw4PY1lgjgob9BrAa49Chbl2IBY3BySwM0pUp4TiOxEcEMwnwcS8cEafGDT1Zqm3kDG6nb4yW4GiSoLOD5PTiHiZr9e8RdCYyKEzlI` && - `jFwR8nC/UfX2W+b+zcOSI8h3HnCrsyxhkJ89yicUT1h0n3nkMWSgyUrcYi9O5VVpM9cMKEX1hKiJdayCXXwYvWrg2QDe1TR5p7yzpAmMondTyoIDaMF+FBsF4nH2+dfo8yBrESliccCE/lLocinwvVXqgnEAJWuRWw2KCrpUCzMDWFbqyHwcyCUcr0/wBQNTjLpsCERGUnPJdZAhJttFQmAxr1Jyn5g/Tt/wAn4AKIgWtoIhBCWul0it` && - `ENkG7hR6pomg9iilLBWMVC/DLTD1zAqxplIMiOOAgr++Xh6Aocj69HzfOR+IaYNL0mIImGjNTKHznWYKQwg03hIYxJ5H+cWrgHCO6o+MBSlM3IC5ZecxUCwvn1ghaPLszFgQgke8IOBLD4IWG0XzrCLJTNUvl+XpZ7/nhB4maiGkRRHpkkIDAQmgv4wCM+AYBEKgCcNsqrLyU0HopH2n5w2kUDhCtYbnAoAq4TMkR3A2J4w5sIAy2BeF` && - `Z8q7rd2cRyw1RsTFVPMODebg8YUVQfWn4yigJaVUCs0e2OrB4wgtWm3zO7+DwQNBkGPTuUHmbG+M1oeMRhX0wUMIjObwt/O8CL4zU+n+c1PxgAutt4J1UubD7ueNG/Eu/2H98nuQiRiH0U8/HnGSisCg3qp9ut63yfH/FpgQFM8rZEkJLQ2j484U7KlmiF7JvSUAmYROn8YwIH4wj/AFD3j0thk65AYNpo5uaesPdK/LjkRo4aTFRG/O` && - `SW6ExMPxif3YzaG8kp5cHRrIYojAn0Y60YYiOJrFkVvX1klkcgCcv5/vxbst8agdhBCvDyXCZAIBwM8f8AH8YJBIUPWFlBuInkopn0Nk6cKjabwEBrK/HiTMYGOxPxinRe/GaTPBRc2NK2uv4yKA5cTeIF5M9Dvxl0cOvG81h8ayyDy4ts0Z23zmQN+cNFG+Y9NoONy6wD7ZyBu4QMExGIAlB2JPaYZLdGlTBtUMQIrP8Ak+P0D6+5lR` && - `E/bDMypppEhE07DWMEoVVAs7VsMngBgCMuxWk+Jkca9TmMA5kRGjH0ObPrJJ+cYhJMQrgFMb4yPWGFFCuEj35jXcXRjIq2Y5Lm4F4ZQHowSOBY2Yu5ZnDDKbcafkmHnK0BlB9nXf8AndMK2ptcvjPMbbd0Ij9XkaNQRGY4SxCwNI6sgQKcFgmgqTeWLPSZsDS+caNeyZR8C37zShvIoZCtzFEc8TPbENSVnb0Bphp086wgE2fGM7bBJ7` && - `wkdDJ2IOG2Ca1iMEiEBQIpyCmT+gyz4BEB8NXrY6x82/sSdFUjIJppRbXQBiuwaICo2DQudzgWwBQ6FKtnkM1QVGEYVLJNKLT2Yo2HPjGmLTWsO1KccEuy1PH3ir9GdtDG3tr3/nLNsimH7OtPM8SJ9Du3K8WW6y03lYVAear6GuhcA4PSJsPLbXf9DZiQiJpwl7IcpuBLGHC6zxQ43Io708Ajlz5aHJv3y+waaA4CvQ4CUROkwLSzBl` && - `ASyTIPIuBFAvMG2PYaP/uVCA6esFvIe3ajSevOulGVZeLCANDWlAEREcMm/ZcGlNRo1IeUpoARwkfk8iD5OZ+P6G4CAIkR84viu+H1ss+mHHzSUnnSb++AKOdct2+Csm+Soh6D4IE1AHSEXAl2JWMNCzy5dbywRSFE3xMD1TA2q6V7VSJs1xBkeJj1SSDUu+Q84TuRykbe1ZtxRwABQqD7hSKosgCpBzm4aeEfADxGo0cAmv0/P9KmTp` && - `hQiAUN5gggIGT3KHnvRQVoIReBgABKJYTpV03o3zVwkAwoGokR161hoQCAGg/qHj/+RP/Z`. - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_42.clas.xml b/src/00/z2ui5_cl_app_demo_42.clas.xml deleted file mode 100644 index 4b6edc36..00000000 --- a/src/00/z2ui5_cl_app_demo_42.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_42</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>demo - object page</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_43.clas.abap b/src/00/z2ui5_cl_app_demo_43.clas.abap deleted file mode 100644 index dd3cbab8..00000000 --- a/src/00/z2ui5_cl_app_demo_43.clas.abap +++ /dev/null @@ -1,47 +0,0 @@ -CLASS z2ui5_cl_app_demo_43 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - -* TYPES: -* BEGIN OF t_flight, -* carrid TYPE string, -* connid TYPE string, -* fldate TYPE string, -* price TYPE string, -* END OF t_flight. -* DATA: mt_flight TYPE STANDARD TABLE OF t_flight. - -protected section. -private section. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_43 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - -* SELECT carrid connid fldate price FROM sflight INTO TABLE mt_flight. -* -* DATA(page) = z2ui5_cl_xml_view=>factory( )->page( -* )->scroll_container( height = '70%' vertical = abap_true -* )->table( items = client->_bind_one( mt_flight ) -* )->columns( -* )->column( )->text( 'Carrid' )->get_parent( -* )->column( )->text( 'Connid' )->get_parent( -* )->column( )->text( 'Fldate' )->get_parent( -* )->column( )->text( 'Price' )->get_parent( -* )->get_parent( -* )->items( )->column_list_item( )->cells( -* )->text( '{CARRID}' -* )->text( '{CONNID}' -* )->text( '{FLDATE}' -* )->text( '{PRICE}' ). -* -* client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_43.clas.xml b/src/00/z2ui5_cl_app_demo_43.clas.xml deleted file mode 100644 index 12234cfa..00000000 --- a/src/00/z2ui5_cl_app_demo_43.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_43</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>test - documentation</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_44.clas.abap b/src/00/z2ui5_cl_app_demo_44.clas.abap deleted file mode 100644 index 2e644ec8..00000000 --- a/src/00/z2ui5_cl_app_demo_44.clas.abap +++ /dev/null @@ -1,16 +0,0 @@ -CLASS z2ui5_cl_app_demo_44 DEFINITION PUBLIC. - - PUBLIC SECTION. - INTERFACES z2ui5_if_app. - -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_44 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->label( `Hello World!` )->get_root( )->xml_get( ) ) ). - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_44.clas.xml b/src/00/z2ui5_cl_app_demo_44.clas.xml deleted file mode 100644 index df11b622..00000000 --- a/src/00/z2ui5_cl_app_demo_44.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_44</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>test - Hello World</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_45.clas.abap b/src/00/z2ui5_cl_app_demo_45.clas.abap deleted file mode 100644 index 39cb0399..00000000 --- a/src/00/z2ui5_cl_app_demo_45.clas.abap +++ /dev/null @@ -1,121 +0,0 @@ -CLASS z2ui5_cl_app_demo_45 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - count TYPE i, - 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 check_initialized TYPE abap_bool. - DATA mv_info_filter TYPE string. - METHODS refresh_data. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_45 IMPLEMENTATION. - - - METHOD refresh_data. - - DO 1000 TIMES. - DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red' - info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' ) - descr = 'this is a description' checkbox = abap_true ). - INSERT ls_row INTO TABLE t_tab. - ENDDO. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - refresh_data( ). - ENDIF. - - CASE client->get( )-event. - - WHEN 'FLTER_INFO'. - refresh_data( ). - IF mv_info_filter <> ''. - DELETE t_tab WHERE info <> mv_info_filter. - ENDIF. - - WHEN 'BUTTON_POST'. - client->popup_message_box( 'button post was pressed' ). - - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - - DATA(page) = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - Scroll Container with Table and Toolbar' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->simple_form( title = 'Form Title' editable = abap_true - )->content( 'form' - )->title( 'Filter' - )->label( 'info' - )->input( client->_bind( mv_info_filter ) - )->button( - text = 'filter' - press = client->_event( 'FLTER_INFO' ) ). - - DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true - )->table( - growing = abap_true - growingthreshold = '20' - growingscrolltoload = abap_true - items = client->_bind_one( t_tab ) - sticky = 'ColumnHeaders,HeaderToolbar' ). - - tab->header_toolbar( - )->overflow_toolbar( - )->toolbar_spacer( ). - - tab->columns( - )->column( - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Info' )->get_parent( - )->column( - )->text( 'Description' )->get_parent( - )->column( - )->text( 'Checkbox' )->get_parent( - )->column( - )->text( 'Counter' ). - - tab->items( )->column_list_item( )->cells( - )->text( '{VALUE}' - )->text( '{INFO}' - )->text( '{DESCR}' - )->checkbox( selected = '{CHECKBOX}' enabled = abap_false - )->text( '{COUNT}' ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_45.clas.xml b/src/00/z2ui5_cl_app_demo_45.clas.xml deleted file mode 100644 index a064d360..00000000 --- a/src/00/z2ui5_cl_app_demo_45.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_45</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>tab - filter columns</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_46.clas.abap b/src/00/z2ui5_cl_app_demo_46.clas.abap deleted file mode 100644 index 98782bd0..00000000 --- a/src/00/z2ui5_cl_app_demo_46.clas.abap +++ /dev/null @@ -1,110 +0,0 @@ -CLASS z2ui5_cl_app_demo_46 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - title TYPE string, - value TYPE string, - descr TYPE string, - icon TYPE string, - info TYPE string, - selected TYPE abap_bool, - checkbox TYPE abap_bool, - END OF ty_row. - - DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - DATA check_initialized TYPE abap_bool. - DATA mv_display TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_46 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - mv_display = 'LIST'. - - t_tab = VALUE #( - ( 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 = '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' ) - ). - - ELSE. - - CASE client->get( )-event. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - WHEN OTHERS. - mv_display = client->get( )-event. - ENDCASE. - - ENDIF. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Table output in two different Ways - Changing UI without Model' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->button( text = 'Display List' press = client->_event( 'LIST' ) - )->button( text = 'Display Table' press = client->_event( 'TABLE' ) - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - CASE mv_display. - - WHEN 'LIST'. - page->list( - headertext = 'List Control' - items = client->_bind( t_tab ) - )->standard_list_item( - title = '{TITLE}' - description = '{DESCR}' - icon = '{ICON}' - info = '{INFO}' - ). - - WHEN 'TABLE'. - - DATA(tab) = page->table( - headertext = 'Table Control' - items = client->_bind( t_tab ) ). - - tab->columns( - )->column( - )->text( 'Title' )->get_parent( - )->column( - )->text( 'Descr' )->get_parent( - )->column( - )->text( 'Icon' )->get_parent( - )->column( - )->text( 'Info' ). - - tab->items( )->column_list_item( )->cells( - )->text( '{TITLE}' - )->text( '{DESCR}' - )->text( '{ICON}' - )->text( '{INFO}' ). - - ENDCASE. - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_46.clas.xml b/src/00/z2ui5_cl_app_demo_46.clas.xml deleted file mode 100644 index 8b106cd9..00000000 --- a/src/00/z2ui5_cl_app_demo_46.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_46</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>tab and list change</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_47.clas.abap b/src/00/z2ui5_cl_app_demo_47.clas.abap deleted file mode 100644 index 643d0a09..00000000 --- a/src/00/z2ui5_cl_app_demo_47.clas.abap +++ /dev/null @@ -1,80 +0,0 @@ -CLASS z2ui5_cl_app_demo_47 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA int1 TYPE i. - DATA int2 TYPE i. - DATA int_sum TYPE i. - - DATA dec1 TYPE p LENGTH 10 DECIMALS 4. - DATA dec2 TYPE p LENGTH 10 DECIMALS 4. - DATA dec_sum TYPE p LENGTH 10 DECIMALS 4. - - DATA date TYPE d. - DATA time TYPE t. - - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_47 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - date = sy-datum. - time = sy-uzeit. - dec1 = -1 / 3. - - ENDIF. - - CASE client->get( )-event. - WHEN 'BUTTON_INT'. - int_sum = int1 + int2. - WHEN 'BUTTON_DEC'. - dec_sum = dec1 + dec2. - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Integer and Decimals' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - target = '_blank' - )->get_parent( - )->simple_form( title = 'Integer and Decimals' editable = abap_true - )->content( 'form' - )->title( 'Input' - )->label( 'integer' - )->input( value = client->_bind( int1 ) - )->input( value = client->_bind( int2 ) - )->input( enabled = abap_false value = client->_bind( int_sum ) - )->button( text = 'calc sum' press = client->_event( 'BUTTON_INT' ) - )->label( 'decimals' - )->input( client->_bind( dec1 ) - )->input( client->_bind( dec2 ) - )->input( enabled = abap_false value = client->_bind( dec_sum ) - )->button( text = 'calc sum' press = client->_event( 'BUTTON_DEC' ) - )->label( 'date' - )->input( client->_bind( date ) - )->label( 'time' - )->input( client->_bind( time ) - )->get_root( )->xml_get( ) ) ). - - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_47.clas.xml b/src/00/z2ui5_cl_app_demo_47.clas.xml deleted file mode 100644 index f2aa6b63..00000000 --- a/src/00/z2ui5_cl_app_demo_47.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_47</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>more - type conversion</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_48.clas.abap b/src/00/z2ui5_cl_app_demo_48.clas.abap deleted file mode 100644 index 8ab79968..00000000 --- a/src/00/z2ui5_cl_app_demo_48.clas.abap +++ /dev/null @@ -1,102 +0,0 @@ -CLASS z2ui5_cl_app_demo_48 DEFINITION - PUBLIC - FINAL - CREATE PUBLIC . - - PUBLIC SECTION. - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - title TYPE string, - value TYPE string, - descr TYPE string, - icon TYPE string, - info TYPE string, - highlight type string, - wrapCharLimit type i, - selected TYPE abap_bool, - checkbox TYPE abap_bool, - END OF ty_row. - - DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_48 IMPLEMENTATION. - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - - t_tab = VALUE #( - ( title = 'entry_01' info = 'Information' descr = 'this is a description1 1234567890 1234567890' icon = 'sap-icon://badge' highlight = 'Information' wrapCharLimit = '100' ) - ( title = 'entry_02' info = 'Success' descr = 'this is a description2 1234567890 1234567890' icon = 'sap-icon://favorite' highlight = 'Success' wrapCharLimit = '10') - ( title = 'entry_03' info = 'Warning' descr = 'this is a description3 1234567890 1234567890' icon = 'sap-icon://employee' highlight = 'Warning' wrapCharLimit = '100') - ( title = 'entry_04' info = 'Error' descr = 'this is a description4 1234567890 1234567890' icon = 'sap-icon://accept' highlight = 'Error' wrapCharLimit = '10' ) - ( title = 'entry_05' info = 'None' descr = 'this is a description5 1234567890 1234567890' icon = 'sap-icon://activities' highlight = 'None' wrapCharLimit = '10') - ( title = 'entry_06' info = 'Information' descr = 'this is a description6 1234567890 1234567890' icon = 'sap-icon://account' highlight = 'Information' wrapCharLimit = '100' ) - ). - - ENDIF. - - CASE client->get( )-event. - WHEN 'EDIT'. - data(lv_row_title) = client->get( )-event_data. - client->popup_message_box( `EDIT - ` && lv_row_title ). - WHEN 'SELCHANGE'. - DATA(lt_sel) = t_tab. - DELETE lt_sel WHERE selected = abap_false. - client->popup_message_box( `SELECTION_CHANGED -` && lt_sel[ 1 ]-title ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - List' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = `https://twitter.com/OblomovDev/status/1657279838586109953` - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - page->list( - headertext = 'List Ouput' - items = client->_bind( t_tab ) - mode = `SingleSelectMaster` - selectionchange = client->_event( 'SELCHANGE' ) - )->_generic( - name = `StandardListItem` - t_prop = VALUE #( - ( n = `title` v = '{TITLE}' ) - ( n = `description` v = '{DESCR}' ) - ( n = `icon` v = '{ICON}' ) - ( n = `iconInset` v = 'false' ) - ( n = `highlight` v = '{HIGHLIGHT}' ) - ( n = `info` v = '{INFO}' ) - ( n = `infoState` v = '{HIGHLIGHT}' ) - ( n = `infoStateInverted` v = 'true' ) - ( n = 'type' v = `Detail` ) - ( n = 'wrapping' v = `true` ) - ( n = 'wrapCharLimit' v = `{WRAPCHARLIMIT}` ) - ( n = 'selected' v = `{SELECTED}` ) - ( n = 'detailPress' v = client->_event( val = 'EDIT' data = `${TITLE}` ) ) - - ) ). - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. - -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_48.clas.xml b/src/00/z2ui5_cl_app_demo_48.clas.xml deleted file mode 100644 index c8d30641..00000000 --- a/src/00/z2ui5_cl_app_demo_48.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_48</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>tab - list2</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_49.clas.abap b/src/00/z2ui5_cl_app_demo_49.clas.abap deleted file mode 100644 index f3ecef57..00000000 --- a/src/00/z2ui5_cl_app_demo_49.clas.abap +++ /dev/null @@ -1,1032 +0,0 @@ -CLASS z2ui5_cl_app_demo_49 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_s_token, - key TYPE string, - text TYPE string, - visible TYPE abap_bool, - selkz TYPE abap_bool, - END OF ty_S_token. - - DATA mt_token TYPE STANDARD TABLE OF ty_S_token WITH EMPTY KEY. -* DATA mt_token_sugg TYPE STANDARD TABLE OF ty_S_token WITH EMPTY KEY. - - DATA mt_table TYPE STANDARD TABLE OF z2ui5_t_draft. - DATA ms_detail TYPE z2ui5_t_draft. - DATA mv_check_columns TYPE abap_bool. - DATA mv_check_sort TYPE abap_bool. - DATA mv_check_table TYPE abap_bool. - - DATA mv_contentheight TYPE string VALUE `70%`. - DATA mv_contentwidth TYPE string VALUE `70%`. - - DATA mv_check_download_csv TYPE abap_bool. - - TYPES: - BEGIN OF ty_S_out, - selkz TYPE abap_bool, - uuid TYPE string, - uuid_prev TYPE string, - uuid_prev_app TYPE string, - uuid_prev_app_stack TYPE string, - timestampl TYPE string, - uname TYPE string, - END OF ty_s_out. - - DATA: - BEGIN OF ms_view, - headerpinned TYPE abap_bool, - headerexpanded TYPE abap_bool, - search_val TYPE string, - title TYPE string, - t_tab TYPE STANDARD TABLE OF ty_S_out WITH EMPTY KEY, - END OF ms_view. - - TYPES: - BEGIN OF ty_S_cols, - visible TYPE abap_bool, - name TYPE string, - length TYPE string, - title TYPE string, - editable TYPE abap_bool, - END OF ty_S_cols. - - TYPES: - BEGIN OF ty_S_filter_show, - selkz TYPE abap_bool, - name TYPE string, - value TYPE string, - " t_value TYPE STANDARD TABLE OF ty_S_token WITH EMPTY KEY, - END OF ty_S_filter_show. - - TYPES: - BEGIN OF ty_S_filter, - uuid TYPE string, - uuid_prev TYPE string, - "STANDARD TABLE OF ty_s_token WITH EMPTY KEY, - END OF ty_S_filter. - - TYPES: - BEGIN OF ty_S_sort, - " selkz TYPE abap_bool, - name TYPE string, - type TYPE string, - " descr TYPE string, - " check_descending TYPE string, - END OF ty_S_sort. - - DATA: - BEGIN OF ms_layout, - check_zebra TYPE abap_bool, - title TYPE string, - sticky_header TYPE string, - selmode TYPE string, - t_filter_show TYPE STANDARD TABLE OF ty_S_filter_show, - s_filter TYPE ty_s_filter, - t_cols TYPE STANDARD TABLE OF ty_S_cols, - t_sort TYPE STANDARD TABLE OF ty_S_sort, - END OF ms_layout. - - TYPES: - BEGIN OF s_combobox, - key TYPE string, - text TYPE string, - END OF s_combobox. - - TYPES ty_t_combo TYPE STANDARD TABLE OF s_combobox WITH EMPTY KEY. - - CLASS-METHODS encode_base64 - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE string. - - TYPES: - BEGIN OF ty_S_db_layout, - selkz TYPE ABap_bool, - name TYPE string, - user TYPE string, - default TYPE abap_bool, - data TYPE string, - END OF ty_S_db_layout. - DATA mt_db_layout TYPE STANDARD TABLE OF ty_S_db_layout. - - DATA mv_layout_name TYPE string. - - 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. - METHODS init_table_output. - METHODS z2ui5_on_render_main. - METHODS z2ui5_on_render_detail. - METHODS z2ui5_on_render_pop_setup. - METHODS z2ui5_on_render_pop_filter. - METHODS z2ui5_on_render_pop_detail. - METHODS z2ui5_on_render_pop_layout. - METHODS z2ui5_set_download_csv - IMPORTING - i_view TYPE REF TO z2ui5_cl_xml_view. - METHODS z2ui5_set_search. - METHODS z2ui5_set_detail. - METHODS z2ui5_set_sort. - METHODS z2ui5_set_filter - IMPORTING - io_box TYPE REF TO z2ui5_cl_xml_view. - METHODS z2ui5_set_data. - -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_49 IMPLEMENTATION. - - - METHOD encode_base64. - - TRY. - CALL METHOD ('CL_WEB_HTTP_UTILITY')=>encode_base64 - EXPORTING - unencoded = val - RECEIVING - encoded = result. - - CATCH cx_sy_dyn_call_illegal_class. - - DATA(classname) = 'CL_HTTP_UTILITY'. - CALL METHOD (classname)=>encode_base64 - EXPORTING - unencoded = val - RECEIVING - encoded = result. - - ENDTRY. - - ENDMETHOD. - - - METHOD init_table_output. - - " CLEAR ms_layout-s_table. - " CLEAR mt_cols. - " CLEAR ms_layout-t_cols. - - ms_view-headerexpanded = abap_true. - ms_view-headerpinned = abap_true. - - DATA(lt_cols) = lcl_db=>get_fieldlist_by_table( mt_table ). - LOOP AT lt_cols REFERENCE INTO DATA(lr_col) FROM 2. - - INSERT VALUE #( - name = lr_col->* - ) INTO TABLE ms_layout-t_filter_show. - - INSERT VALUE #( - visible = abap_true - name = lr_col->* - " length = `10px` - title = lr_col->* - ) INTO TABLE ms_layout-t_cols. - -* INSERT VALUE #( -* " selkz = abap_true -* name = lr_col->* -* " length = `10px` -* ) INTO TABLE ms_layout-t_cols. - - ENDLOOP. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-get = client->get( ). - app-view_popup = ``. - app-next-path = `/z2ui5_cl_app_demo_49`. - app-next-title = `List Report`. - - - 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 'SORT_ADD'. - INSERT VALUE #( ) INTO TABLE ms_layout-t_sort. - app-view_popup = 'POPUP_SETUP'. - - WHEN `SORT_DELETE`. - DELETE ms_layout-t_sort WHERE name = app-get-event_data. - app-view_popup = 'POPUP_SETUP'. - - WHEN 'BUTTON_DELETE'. - DELETE ms_view-t_tab WHERE selkz = abap_true. - - WHEN 'BUTTON_CUSTOM'. - client->popup_message_box( `custom action called` ). - - WHEN 'BUTTON_START'. - z2ui5_set_data( ). - - WHEN 'BUTTON_DOWNLOAD'. - mv_check_download_csv = abap_true. - - WHEN `POPUP_LAYOUT_LOAD`. - DATA(ls_layout2) = mt_db_layout[ selkz = abap_true ]. - z2ui5_lcl_utility=>trans_xml_2_object( - EXPORTING - xml = ls_layout2-data - IMPORTING - data = ms_layout - ). - ms_view-title = ls_layout2-name. - - WHEN `BUTTON_SAVE_LAYOUT`. - DATA(ls_layout) = VALUE ty_s_db_layout( - data = z2ui5_lcl_utility=>trans_data_2_xml( ms_layout ) - name = mv_layout_name - ). - INSERT ls_layout INTO TABLE mt_db_layout. - - WHEN 'BUTTON_SEARCH'. - app-next-s_cursor-id = 'SEARCH'. - app-next-s_cursor-cursorpos = '99'. - app-next-s_cursor-selectionend = '99'. - app-next-s_cursor-selectionstart = '99'. - z2ui5_set_search( ). - - WHEN 'MAIN'. - app-view_main = 'MAIN'. - - WHEN 'DETAIL'. - z2ui5_set_detail( ). - app-view_main = 'DETAIL'. - - WHEN 'POPUP_DETAIL'. - app-next-popover_open_by_id = app-get-event_data. - app-view_popup = 'POPUP_LAYOUT'. - - WHEN 'POPUP_LAYOUT'. - app-next-popover_open_by_id = `btn_layout`. - app-view_popup = 'POPUP_LAYOUT'. - - WHEN 'POPUP_FILTER'. - app-view_popup = 'POPUP_FILTER'. - - WHEN 'BUTTON_SETUP'. - app-view_popup = 'POPUP_SETUP'. - - WHEN 'POPUP_FILTER_CONTINUE'. - " app-view_popup = 'POPUP_FILTER'. - - WHEN 'BUTTON_INIT'. - init_table_output( ). - - WHEN 'BUTTON_CANCEL'. - client->popup_message_toast( |cancel| ). - app-view_popup = ''. - - WHEN 'BACK'. - " app-next-path = `test`. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - - init_table_output( ). - - ms_view-title = `Standart`. - ms_layout-selmode = 'MultiSelect'. - ms_layout-check_zebra = abap_true. - ms_view-t_tab = CORRESPONDING #( mt_table ). - ms_layout-sticky_header = `HeaderToolbar,InfoToolbar,ColumnHeaders`. - ms_layout-title = `Drafts`. - - app-next-t_scroll = VALUE #( ( name = `page_main` ) ). - - mt_token = VALUE #( - ( key = 'VAL1' text = 'value_1' selkz = abap_true visible = abap_true ) - ( key = 'VAL3' text = 'value_3' selkz = abap_false visible = abap_true ) - ( key = 'VAL4' text = 'value_4' selkz = abap_true ) - ( key = '<500' text = '<500' selkz = abap_true ) - ). - - - - " IF app-view_main IS INITIAL. - DATA(lv_url) = z2ui5_cl_http_handler=>client-t_header[ name = `referer` ]-value. - SPLIT lv_url AT `/z2ui5_cl_app_demo_49/` INTO DATA(lv_dummy1) DATA(lv_dummy2). - SPLIT lv_dummy2 AT `(` INTO DATA(lv_view) DATA(lv_token). - IF lv_view IS NOT INITIAL. - app-view_main = lv_view. - SPLIT lv_token AT `(` INTO DATA(lv_token2) lv_dummy1. - SPLIT lv_token2 AT `)` INTO lv_token lv_dummy1. - ms_detail-uuid = lv_token. - IF ms_detail-uuid IS NOT INITIAL. - z2ui5_set_data( ). - - ms_detail = mt_table[ uuid = ms_detail-uuid ]. - - SELECT SINGLE FROM z2ui5_t_draft - FIELDS * - WHERE uuid = @ms_detail-uuid - INTO CORRESPONDING FIELDS OF @ms_detail - . - - ENDIF. - " ENDIF. - ELSE. - app-view_main = 'MAIN'. - ENDIF. - - -* mt_token_sugg = VALUE #( -* ( key = 'VAL1' text = 'value_1' ) -* ( key = 'VAL2' text = 'value_2' ) -* ( key = 'VAL3' text = 'value_3' ) -* ( key = 'VAL4' text = 'value_4' ) -* ). - - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - CASE app-view_popup. - WHEN `POPUP_FILTER`. - z2ui5_on_render_pop_filter( ). - WHEN `POPUP_SETUP`. - z2ui5_on_render_pop_setup( ). - WHEN `POPUP_LAYOUT`. - z2ui5_on_render_pop_layout( ). - WHEN `POPUP_DETAIL`. - z2ui5_on_render_pop_detail( ). - ENDCASE. - - app-next-path = app-next-path && `/` && app-view_main. - - CASE app-view_main. - WHEN 'MAIN'. - z2ui5_on_render_main( ). - WHEN 'DETAIL'. - z2ui5_on_render_detail( ). - ENDCASE. - - - - ENDMETHOD. - - - METHOD z2ui5_on_render_detail. - - app-next-path = app-next-path && `(` && ms_detail-uuid && `)`. - - DATA(view) = z2ui5_cl_xml_view=>factory( - )->page( - title = 'abap2UI5 - List Report' - navbuttonpress = client->_event( 'MAIN' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637163852264624139' - )->link( - text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(page) = view->object_page_layout( - showtitleinheadercontent = abap_true - showeditheaderbutton = abap_true - editheaderbuttonpress = client->_event( 'EDIT_HEADER_PRESS' ) - uppercaseanchorbar = abap_false - ). - - DATA(header_title) = page->header_title( )->object_page_dyn_header_title( ). - - header_title->expanded_heading( - )->hbox( - )->title( text = 'Draft' wrapping = abap_true ). - - header_title->snapped_heading( - )->flex_box( alignitems = `Center` - )->avatar( src = `` class = 'sapUiTinyMarginEnd' - )->title( text = 'Draft' wrapping = abap_true ). - - header_title->expanded_content( ns = `uxap` )->text( `Details` ). - header_title->snapped_Content( ns = `uxap` )->text( `Details` ). - header_title->snapped_Title_On_Mobile( )->title( `Details` ). - - DATA(header_content) = page->header_Content( ns = 'uxap' ). - - header_content->flex_box( wrap = 'Wrap' - )->avatar( src = `` class = 'sapUiSmallMarginEnd' displaySize = 'layout' - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = `UUID` - )->label( text = ms_detail-uuid - )->get_parent( - )->horizontal_layout( class = 'sapUiSmallMarginBeginEnd' - )->vertical_layout( - )->label( text = 'UUID PRevious' - )->label( text = ms_detail-uuid_prev - )->get_parent( - )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'Info' - )->vbox( - )->label( 'Timestampl' - )->label( CONV #( ms_detail-timestampl ) - )->get_parent( )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'User' - )->label( text = ms_detail-uname - )->get_parent( - ). - - DATA(sections) = page->sections( ). - - sections->object_page_section( titleuppercase = abap_false id = 'goalsSectionSS1' title = '2014 Goals Plan' - )->heading( ns = `uxap` - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'goalssubSectionSS1' title = 'XML' - )->blocks( - )->code_editor( - type = `XML` - " editable = mv_check_editable - value = client->_bind_one( ms_detail-data ) ). - - app-next-xml_main = view->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_main. - - z2ui5_set_sort( ). - - " DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ). - - DATA(view) = z2ui5_cl_xml_view=>factory( - )->page( id = `page_main` - title = 'abap2UI5 - List Report' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637163852264624139' - )->link( - text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - IF mv_check_download_csv = abap_true. - z2ui5_set_download_csv( view ). - ENDIF. - - DATA(page) = view->dynamic_page( - headerexpanded = client->_bind( ms_view-headerexpanded ) - headerpinned = client->_bind( ms_view-headerpinned ) ). - - DATA(header_title) = page->title( ns = 'f' - )->get( )->dynamic_page_title( ). - - header_title->heading( ns = 'f' )->hbox( )->title( ms_view-title - )->button( id = `btn_layout` press = client->_event( `POPUP_LAYOUT` ) type = `Transparent` icon = `sap-icon://dropdown` ). - - header_title->expanded_content( 'f' - )->label( text = 'Drafts of abap2UI5' ). - - header_title->snapped_content( ns = 'f' - )->label( text = 'Drafts of abap2UI5' ). - - header_title->actions( ns = 'f' )->overflow_toolbar( - )->button( text = `Custom Function` press = client->_event( `BUTTON_CUSTOM` ) - ). - - DATA(lo_box) = page->header( )->dynamic_page_header( pinnable = abap_true - )->flex_box( alignitems = `Start` justifycontent = `SpaceBetween` )->flex_box( alignItems = `Start` ). - - z2ui5_set_filter( lo_box ). - - - DATA(cont) = page->content( ns = 'f' ). - - - DATA(tab) = cont->table( - items = client->_bind( val = ms_view-t_tab ) - alternaterowcolors = ms_layout-check_zebra - sticky = ms_layout-sticky_header - autopopinmode = abap_true - mode = ms_layout-selmode ). - - tab->header_toolbar( - )->toolbar( - )->title( text = ms_layout-title && ` (` && shift_right( CONV string( lines( ms_view-t_tab ) ) ) && `)` level = `H2` - )->toolbar_spacer( - )->button( - icon = 'sap-icon://refresh' - press = client->_event( 'BUTTON_REFRESH' ) - )->multi_input( - tokens = client->_bind( mt_token ) - showclearicon = abap_true -* showvaluehelp = abap_true -* suggestionitems = client->_bind( mt_token_sugg ) - )->item( - key = `{KEY}` - text = `{TEXT}` - )->tokens( - )->token( - key = `{KEY}` - text = `{TEXT}` - selected = `{SELKZ}` -* visible = `{VISIBLE}` - )->get_parent( )->get_parent( - - )->toolbar_spacer( -* )->button( -* text = `Custom Action` -* press = client->_event( 'BUTTON_CUSTOM' ) - - )->button( - text = `Anlegen` - enabled = abap_false - press = client->_event( 'BUTTON_CREATE' ) - )->button( - text = `Löschen` - press = client->_event( 'BUTTON_DELETE' ) - )->button( - icon = 'sap-icon://action-settings' - press = client->_event( 'BUTTON_SETUP' ) - )->button( - icon = 'sap-icon://download' - press = client->_event( 'BUTTON_DOWNLOAD' ) - ). - - - data(lv_width) = 10. - DATA(lo_columns) = tab->columns( ). - LOOP AT ms_layout-t_cols REFERENCE INTO DATA(lr_field) - WHERE visible = abap_true. - lo_columns->column( - minscreenwidth = shift_right( conv string( lv_width ) ) && `px` - demandpopin = abap_true width = lr_field->length )->text( text = CONV char10( lr_field->title ) - )->footer( - )->object_number( number = `Summe` unit = 'ST' state = `Warning` ). - lv_width = lv_width + 10. - ENDLOOP. - - DATA(lo_cells) = tab->items( )->column_list_item( - press = client->_event( val = 'DETAIL' data = `${UUID}` ) - selected = `{SELKZ}` - type = `Navigation` )->cells( ). - LOOP AT ms_layout-t_cols REFERENCE INTO lr_field - WHERE visible = abap_true. - IF lr_field->editable = abap_true. - lo_cells->input( `{` && lr_field->name && `}` ). - ELSE. - " lo_cells->text( `{` && lr_field->name && `}` ). - lo_cells->link( text = `{` && lr_field->name && `}` - " press = client->_event( val = `POPUP_DETAIL` data = `${` && lr_field->name && `}` ) ). - press = client->_event( val = `POPUP_DETAIL` data = `${$source>/id}` ) ). - " press = client->_event( val = `POPUP_DETAIL` data = `$event` ) ). - ENDIF. - ENDLOOP. - - app-next-xml_main = page->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_detail. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%` - )->input( description = `Name` value = client->_bind( mv_layout_name ) - )->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` ) - )->table( - mode = 'SingleSelectLeft' - items = client->_bind( mt_db_layout ) - )->columns( - )->column( )->text( 'Name' )->get_parent( - )->column( )->text( 'User' )->get_parent( - )->column( )->text( 'Default' )->get_parent( - " )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - " )->checkbox( '{SELKZ}' - )->text( '{NAME}' - )->text( '{USER}' - )->text( '{DEFAULT}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'load' - press = client->_event( 'POPUP_LAYOUT_LOAD' ) - type = 'Emphasized' - )->button( - text = 'close' - press = client->_event( 'POPUP_LAYOUT_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_filter. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->dialog( 'abap2UI5 - Popup to select entry' - )->table( - mode = 'MultiSelect' - items = client->_bind( ms_layout-t_filter_show ) - )->columns( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Color' )->get_parent( - )->column( )->text( 'Info' )->get_parent( - )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - " )->checkbox( '{SELKZ}' - )->text( '{NAME}' - )->text( '{VALUE}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_FILTER_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_layout. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%` - )->input( description = `Name` value = client->_bind( mv_layout_name ) - )->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` ) - )->table( - mode = 'SingleSelectLeft' - items = client->_bind( mt_db_layout ) - )->columns( - )->column( )->text( 'Name' )->get_parent( - )->column( )->text( 'User' )->get_parent( - )->column( )->text( 'Default' )->get_parent( - " )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - " )->checkbox( '{SELKZ}' - )->text( '{NAME}' - )->text( '{USER}' - )->text( '{DEFAULT}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'load' - press = client->_event( 'POPUP_LAYOUT_LOAD' ) - type = 'Emphasized' - )->button( - text = 'close' - press = client->_event( 'POPUP_LAYOUT_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_setup. - - DATA(ro_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - ro_popup = ro_popup->dialog( title = 'View Setup' resizable = abap_true - contentheight = client->_bind( mv_contentheight ) contentwidth = client->_bind( mv_contentwidth ) ). - - ro_popup->custom_header( - )->bar( - )->content_right( - )->button( text = `zurücksetzten` press = client->_event( 'BUTTON_INIT' ) ). - - - DATA(lo_tab) = ro_popup->tab_container( ). - - lo_tab->tab( text = 'Table' selected = client->_bind( mv_check_table ) - )->simple_form( editable = abap_true - )->content( 'form' - )->label( 'zebra mode' - )->checkbox( client->_bind( ms_layout-check_zebra ) - )->label( 'sticky header' - )->input( client->_bind( ms_layout-sticky_header ) - )->label( text = `Title` - )->Input( value = client->_bind( ms_layout-title ) - )->label( 'sel mode' - )->combobox( - selectedkey = client->_bind( ms_layout-selmode ) - items = client->_bind_one( VALUE ty_t_combo( - ( key = 'None' text = 'None' ) - ( key = 'SingleSelect' text = 'SingleSelect' ) - ( key = 'SingleSelectLeft' text = 'SingleSelectLeft' ) - ( key = 'MultiSelect' text = 'MultiSelect' ) ) ) - )->item( - key = '{KEY}' - text = '{TEXT}' ). - - - - lo_tab->tab( - text = 'Columns' - selected = client->_bind( mv_check_columns ) - )->table( - " mode = 'MultiSelect' - items = client->_bind( ms_layout-t_cols ) - )->columns( - )->column( )->text( 'Visible' )->get_parent( - )->column( )->text( 'Name' )->get_parent( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Editable' )->get_parent( - )->column( )->text( 'Length' )->get_parent( - )->get_parent( - )->items( )->column_list_item( - )->cells( - )->checkbox( '{VISIBLE}' - )->text( '{NAME}' - )->Input( '{TITLE}' - )->checkbox( '{EDITABLE}' - )->Input( '{LENGTH}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( )->get_parent( ). - - DATA(lo_tab_sort) = lo_tab->tab( - text = 'Sort' - selected = client->_bind( mv_check_sort ) ). - - lo_tab_sort->button( icon = `sap-icon://add` press = client->_event( `SORT_ADD` ) ). - - DATA(lo_hbox) = lo_tab_sort->list( - items = client->_bind( ms_layout-t_sort ) - selectionchange = client->_event( 'SELCHANGE' ) - )->custom_list_item( - )->hbox( ). - - lo_hbox->combobox( - selectedkey = `{NAME}` - items = client->_bind( ms_layout-t_cols ) -* ( key = 'BLUE' text = 'green' ) -* ( key = 'GREEN' text = 'blue' ) -* ( key = 'BLACK' text = 'red' ) -* ( key = 'GRAY' text = 'gray' ) ) ) - )->item( - key = '{NAME}' - text = '{NAME}' - )->get_parent( - )->segmented_button( `{TYPE}` -)->items( - )->segmented_button_item( - key = 'DESCENDING' - icon = 'sap-icon://sort-descending' - )->segmented_button_item( - key = 'ASCENDING' - icon = 'sap-icon://sort-ascending' -)->get_parent( )->get_parent( -)->button( type = `Transparent` icon = 'sap-icon://decline' press = client->_event( val = `SORT_DELETE` data = `${NAME}` ) ). -* )->get_parent( )->get_parent( )->get_parent( - -* )->button( -* text = 'counter descending' -* icon = 'sap-icon://sort-descending' -* press = client->_event( 'SORT_DESCENDING' ) -* )->button( -* text = 'counter ascending' -* icon = 'sap-icon://sort-ascending' -* press = client->_event( 'SORT_ASCENDING' ) -* )->get_parent( ). - - -* lo_tab->tab( -* text = 'Group' -* selected = client->_bind( mv_check_group ) -* )->get_parent( )->get_parent( ). - - ro_popup->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_FILTER_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = ro_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_set_data. - - "dirty solution - "todo: map filters to rangetab and make a nice select - - IF ms_layout-s_filter-uuid IS INITIAL. - - SELECT FROM z2ui5_t_draft - FIELDS uuid, uuid_prev, timestampl, uname - INTO CORRESPONDING FIELDS OF TABLE @mt_table - UP TO 50 ROWS. - - ELSE. - - SELECT FROM z2ui5_t_draft - FIELDS uuid, uuid_prev, timestampl, uname - WHERE uuid = @ms_layout-s_filter-uuid - INTO CORRESPONDING FIELDS OF TABLE @mt_table - UP TO 50 ROWS. - - ENDIF. - - ms_view-t_tab = CORRESPONDING #( mt_table ). - - ENDMETHOD. - - - METHOD z2ui5_set_detail. - - ms_detail = mt_table[ uuid = client->get( )-event_data ]. - - SELECT SINGLE FROM z2ui5_t_draft - FIELDS * - WHERE uuid = @ms_detail-uuid - INTO CORRESPONDING FIELDS OF @ms_detail - . - - ENDMETHOD. - - - METHOD z2ui5_set_download_csv. - - DATA(lo_struc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_data( ms_view-t_tab[ 1 ] ) ). - DATA(lt_components) = lo_struc->get_components( ). - - DATA(lv_row) = ``. - LOOP AT lt_components INTO DATA(lv_name) FROM 2. - lv_row = lv_row && lv_name-name && `;`. - ENDLOOP. - lv_row = lv_row && cl_abap_char_utilities=>cr_lf. - - - LOOP AT ms_view-t_tab REFERENCE INTO DATA(lr_row) FROM 2. - - DATA(lv_index) = 2. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE lr_row->* TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_row = lv_row && <field>. - lv_index = lv_index + 1. - lv_row = lv_row && `;`. - ENDDO. - - lv_row = lv_row && cl_abap_char_utilities=>cr_lf. - ENDLOOP. - - DATA lv_bas64enc TYPE string. - - lv_bas64enc = encode_base64( lv_row ). - - i_view->zz_plain( `<html:iframe src="data:text/csv;base64,` && lv_bas64enc && `" hidden="hidden" />`). - - mv_check_download_csv = abap_false. - - ENDMETHOD. - - - METHOD z2ui5_set_filter. - - io_box->search_field( - value = client->_bind( ms_view-search_val ) - search = client->_event( 'BUTTON_SEARCH' ) - change = client->_event( 'BUTTON_SEARCH' ) - width = `17.5rem` - id = `SEARCH` - ). - - IF line_exists( ms_layout-t_filter_show[ name = `UUID` selkz = abap_true ] ). - io_box->input( value = client->_bind( ms_layout-s_filter-uuid ) description = `UUID` ). - ENDIF. - - IF line_exists( ms_layout-t_filter_show[ name = `UUID_PREV` selkz = abap_true ] ). - io_box->input( value = client->_bind( ms_layout-s_filter-uuid_prev ) description = `UUID_PREV` ). - ENDIF. - - "todo other columns... - - DATA(rt_filter) = ms_layout-t_filter_show. - DELETE rt_filter WHERE selkz = abap_false. - - io_box->get_parent( )->hbox( justifycontent = `End` - )->button( text = `Go` press = client->_event( `BUTTON_START` ) type = `Emphasized` - )->button( text = `Adapt Filters (` && shift_right( CONV string( lines( rt_filter ) ) ) && `)` press = client->_event( `POPUP_FILTER` ) - ). - - ENDMETHOD. - - - METHOD z2ui5_set_search. - - ms_view-t_tab = CORRESPONDING #( mt_table ). - IF ms_view-search_val IS NOT INITIAL. - LOOP AT ms_view-t_tab REFERENCE INTO DATA(lr_row). - DATA(lv_row) = ``. - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE lr_row->* TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_row = lv_row && <field>. - lv_index = lv_index + 1. - ENDDO. - - IF lv_row NS ms_view-search_val. - DELETE ms_view-t_tab. - ENDIF. - ENDLOOP. - ENDIF. - - ENDMETHOD. - - - METHOD z2ui5_set_sort. - - "quick and dirty - todo - "only works for 2 conditions - TRY. - IF ms_layout-t_sort IS NOT INITIAL. - DATA(ls_field1) = VALUE #( ms_layout-t_sort[ 1 ] OPTIONAL ). - DATA(ls_field2) = VALUE #( ms_layout-t_sort[ 2 ] OPTIONAL ). - - SORT ms_view-t_tab BY - (ls_field1-name) (ls_field1-type) - (ls_field2-name) (ls_field2-type). - - ENDIF. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_49.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_49.clas.locals_imp.abap deleted file mode 100644 index d38f1b36..00000000 --- a/src/00/z2ui5_cl_app_demo_49.clas.locals_imp.abap +++ /dev/null @@ -1,747 +0,0 @@ -CLASS lcl_db DEFINITION. - - - PUBLIC SECTION. - - - TYPES ty_t_table TYPE z2ui5_cl_app_demo_13=>ty_t_table. - - CLASS-DATA app TYPE REF TO z2ui5_cl_app_demo_13. - "CLASS-DATA st_table TYPE ty_t_table. - - CLASS-METHODS generate_test_data. - - CLASS-METHODS get_table_by_json - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_xml - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_csv - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_csv_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_xml_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_json_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_fieldlist_by_table - IMPORTING - it_table TYPE table - RETURNING - VALUE(result) TYPE string_table. - - CLASS-METHODS db_save - IMPORTING - value TYPE ty_t_table. - - CLASS-METHODS db_read - RETURNING - VALUE(result) TYPE ty_t_table. - CLASS-METHODS get_test_data_json - RETURNING - VALUE(result) TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_db IMPLEMENTATION. - - METHOD generate_test_data. - - app->st_db = VALUE #( - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ). - - ENDMETHOD. - - - METHOD get_table_by_json. - - DATA lt_tab TYPE ty_t_table. - - /ui2/cl_json=>deserialize( - EXPORTING - json = val -* jsonx = -* pretty_name = -* assoc_arrays = -* assoc_arrays_opt = -* name_mappings = -* conversion_exits = -* hex_as_base64 = - CHANGING - data = lt_tab - ). - - result = lt_tab. - - ENDMETHOD. - - - METHOD get_table_by_xml. - - DATA lt_tab TYPE ty_t_table. - - CALL TRANSFORMATION id SOURCE xml = val RESULT data = lt_tab. - - result = lt_tab. - - ENDMETHOD. - - METHOD get_table_by_csv. - - SPLIT val AT ';' INTO TABLE DATA(lt_cols). - - LOOP AT lt_cols INTO DATA(lv_field). - - DATA(ls_row) = VALUE z2ui5_cl_app_demo_13=>ty_s_spfli( ). - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - <field> = lv_field. - lv_index = lv_index + 1. - ENDDO. - INSERT ls_row INTO TABLE result. - - ENDLOOP. - - ENDMETHOD. - - METHOD db_save. - - "normally modify database here - - "test scenario, therefore write internal table instead - app->st_db = value. - - ENDMETHOD. - - METHOD db_read. - - "normally read database here - - "test scenario, therefore read internal table instead - - result = app->st_db. - - ENDMETHOD. - - METHOD get_csv_by_table. - - LOOP AT val INTO DATA(ls_row). - - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_index = lv_index + 1. - result = result && <field> && ';'. - ENDDO. - result = result && cl_abap_char_utilities=>cr_lf. - ENDLOOP. - - - ENDMETHOD. - - METHOD get_json_by_table. - - result = /ui2/cl_json=>serialize( - val -* compress = -* name = -* pretty_name = -* type_descr = -* assoc_arrays = -* ts_as_iso8601 = -* expand_includes = -* assoc_arrays_opt = -* numc_as_string = -* name_mappings = -* conversion_exits = - " format_output = abap_true -* hex_as_base64 = - ). - - - ENDMETHOD. - - METHOD get_xml_by_table. - - CALL TRANSFORMATION id SOURCE values = val RESULT XML result. - - ENDMETHOD. - - METHOD get_fieldlist_by_table. - - DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ). - DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ). - - DATA(lt_comp) = lo_struc->get_components( ). - - LOOP AT lt_comp INTO DATA(ls_comp). - INSERT ls_comp-name INTO TABLE result. - ENDLOOP. - - ENDMETHOD. - - - METHOD get_test_data_json. - - result = `[` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` }` && |\n| && - `]`. - - ENDMETHOD. - -ENDCLASS. - -CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check. - - PUBLIC SECTION. - - TYPES: - BEGIN OF ty_attri, - name TYPE string, - type_kind TYPE string, - type TYPE string, - bind_type TYPE string, - data_stringify TYPE string, - gen_type_kind TYPE string, - gen_type TYPE string, - gen_kind TYPE string, - END OF ty_attri. - TYPES ty_T_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY. - - DATA: - BEGIN OF ms_error, - x_root TYPE REF TO cx_root, - uuid TYPE string, - s_msg TYPE LINE OF bapirettab, - END OF ms_error. - - METHODS constructor - IMPORTING - val TYPE any OPTIONAL - previous TYPE REF TO cx_root OPTIONAL - PREFERRED PARAMETER val. - - METHODS get_text REDEFINITION. - - CLASS-METHODS raise - IMPORTING - v TYPE clike DEFAULT `CX_SY_SUBRC` - when TYPE abap_bool DEFAULT abap_true - PREFERRED PARAMETER v. - - CLASS-METHODS get_header_val - IMPORTING - v TYPE clike - RETURNING - VALUE(result) TYPE z2ui5_if_client=>ty_s_name_value-value. - - CLASS-METHODS get_param_val - IMPORTING - v TYPE clike - RETURNING - VALUE(result) TYPE z2ui5_if_client=>ty_s_name_value-value. - - CLASS-METHODS get_uuid - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_uuid_session - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_user_tech - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_timestampl - RETURNING - VALUE(result) TYPE timestampl. - - CLASS-METHODS trans_any_2_json - IMPORTING - any TYPE any - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS trans_xml_2_object - IMPORTING - xml TYPE clike - EXPORTING - data TYPE data. - - CLASS-METHODS get_t_attri_by_ref - IMPORTING - io_app TYPE REF TO object - RETURNING - VALUE(result) TYPE ty_t_attri ##NEEDED. - - CLASS-METHODS trans_data_2_xml - IMPORTING - data TYPE data - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_abap_2_json - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS check_is_boolean - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE abap_bool. - - CLASS-METHODS get_json_boolean - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS trans_ref_tab_2_tab - IMPORTING - ir_tab_from TYPE REF TO data - EXPORTING - t_result TYPE STANDARD TABLE. - - CLASS-METHODS get_trim_upper - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - - PROTECTED SECTION. - - CLASS-DATA mv_counter TYPE i. - - CLASS-METHODS _get_t_attri - IMPORTING - io_app TYPE REF TO object - iv_attri TYPE csequence - RETURNING - VALUE(result) TYPE abap_attrdescr_tab. - - PRIVATE SECTION. - -ENDCLASS. - - -CLASS z2ui5_lcl_utility IMPLEMENTATION. - - METHOD get_trim_upper. - result = CONV #( val ). - result = to_upper( shift_left( shift_right( result ) ) ). - ENDMETHOD. - - - METHOD constructor. - - super->constructor( previous = previous ). - CLEAR textid. - - TRY. - ms_error-x_root ?= val. - CATCH cx_root ##CATCH_ALL. - ms_error-s_msg-message = val. - ENDTRY. - - TRY. - ms_error-uuid = get_uuid( ). - CATCH cx_root ##CATCH_ALL. - ENDTRY. - ENDMETHOD. - - - METHOD get_abap_2_json. - - IF check_is_boolean( val ). - result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). - ELSE. - result = |"{ escape( val = val format = cl_abap_format=>e_json_string ) }"|. - ENDIF. - - ENDMETHOD. - - - METHOD check_is_boolean. - - TRY. - DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_data( val ) ). - CASE lo_ele->get_relative_name( ). - WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`. - result = abap_true. - ENDCASE. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. - - - METHOD get_json_boolean. - - IF check_is_boolean( val ). - result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). - ELSE. - result = val. - ENDIF. - - ENDMETHOD. - - - METHOD get_timestampl. - - GET TIME STAMP FIELD result. - - ENDMETHOD. - - - METHOD get_user_tech. - - result = sy-uname. - - ENDMETHOD. - - - METHOD get_uuid. - TRY. - - DATA uuid TYPE c LENGTH 32. - - TRY. - CALL METHOD (`CL_SYSTEM_UUID`)=>if_system_uuid_static~create_uuid_c32 - RECEIVING - uuid = uuid. - - CATCH cx_sy_dyn_call_illegal_class. - - DATA(lv_fm) = `GUID_CREATE`. - CALL FUNCTION lv_fm - IMPORTING - ev_guid_32 = uuid. - - ENDTRY. - - result = uuid. - - CATCH cx_root. - ASSERT 1 = 0. - ENDTRY. - ENDMETHOD. - - - METHOD get_uuid_session. - - mv_counter = mv_counter + 1. - result = get_trim_upper( mv_counter ). - - ENDMETHOD. - - - METHOD get_header_val. - - result = z2ui5_cl_http_handler=>client-t_header[ name = v ]-value. - - ENDMETHOD. - - - METHOD get_param_val. - - DATA(lt_param) = VALUE z2ui5_if_client=>ty_t_name_value( LET tab = z2ui5_cl_http_handler=>client-t_param IN FOR row IN tab - ( name = to_upper( row-name ) value = to_upper( row-value ) ) ). - TRY. - result = lt_param[ name = get_trim_upper( v ) ]-value. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. - - - METHOD get_t_attri_by_ref. - - DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( io_app ) )->attributes. - - DELETE lt_attri WHERE visibility <> cl_abap_classdescr=>public. - - LOOP AT lt_attri INTO DATA(ls_attri) - WHERE type_kind = cl_abap_classdescr=>typekind_struct2 - OR type_kind = cl_abap_classdescr=>typekind_struct1. - - DELETE lt_attri INDEX sy-tabix. - - INSERT LINES OF _get_t_attri( - io_app = io_app - iv_attri = ls_attri-name ) INTO TABLE lt_attri. - - ENDLOOP. - - LOOP AT lt_attri INTO ls_attri. - - DATA(ls_attri2) = VALUE ty_attri( ). - ls_attri2 = CORRESPONDING #( ls_attri ). - - FIELD-SYMBOLS <any> TYPE any. - UNASSIGN <any>. - DATA(lv_assign) = `IO_APP->` && ls_attri-name. - ASSIGN (lv_assign) TO <any>. - DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <any> ). - CASE lo_descr->kind. - WHEN lo_descr->kind_elem. - ls_attri2-type = CAST cl_abap_elemdescr( lo_descr )->get_relative_name( ). - ENDCASE. - - APPEND ls_attri2 TO result. - ENDLOOP. - - ENDMETHOD. - - METHOD _get_t_attri. - - CONSTANTS c_prefix TYPE string VALUE `IO_APP->`. - FIELD-SYMBOLS <attribute> TYPE any. - - DATA(lv_name) = c_prefix && to_upper( iv_attri ). - ASSIGN (lv_name) TO <attribute>. - raise( when = xsdbool( sy-subrc <> 0 ) ). - - DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <attribute> ). - DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ). - - LOOP AT lo_struct->get_components( ) REFERENCE INTO DATA(lr_comp). - - DATA(lv_element) = iv_attri && `-` && lr_comp->name. - - IF lr_comp->as_include = abap_true. - INSERT LINES OF _get_t_attri( io_app = io_app - iv_attri = lv_element ) INTO TABLE result. - - ELSE. - INSERT VALUE #( name = lv_element - type_kind = lr_comp->type->type_kind ) INTO TABLE result. - ENDIF. - - ENDLOOP. - ENDMETHOD. - - METHOD trans_any_2_json. - - result = /ui2/cl_json=>serialize( any ). - - ENDMETHOD. - - - METHOD trans_data_2_xml. - - " FIELD-SYMBOLS <object> TYPE any. - " ASSIGN object->* TO <object>. - " raise( when = xsdbool( sy-subrc <> 0 ) ). - - CALL TRANSFORMATION id - SOURCE data = data - RESULT XML result - OPTIONS data_refs = `heap-or-create`. - - ENDMETHOD. - - - METHOD trans_ref_tab_2_tab. - - TYPES ty_t_ref TYPE STANDARD TABLE OF REF TO data. - - FIELD-SYMBOLS <lt_from> TYPE ty_t_ref. - ASSIGN ir_tab_from->* TO <lt_from>. - raise( when = xsdbool( sy-subrc <> 0 ) ). - - CLEAR t_result. - - DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( t_result ) ). - DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ). - DATA(lt_components) = lo_struc->get_components( ). - - LOOP AT <lt_from> INTO DATA(lr_from). - - DATA lr_row TYPE REF TO data. - CREATE DATA lr_row LIKE LINE OF t_result. - ASSIGN lr_row->* TO FIELD-SYMBOL(<row>). - - ASSIGN lr_from->* TO FIELD-SYMBOL(<row_ui5>). - raise( when = xsdbool( sy-subrc <> 0 ) ). - - LOOP AT lt_components INTO DATA(ls_comp). - - FIELD-SYMBOLS <comp> TYPE data. - ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row> TO <comp>. - IF sy-subrc <> 0. - EXIT. - ENDIF. - - FIELD-SYMBOLS <comp_ui5> TYPE data. - ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row_ui5> TO <comp_ui5>. - IF sy-subrc <> 0. - EXIT. - ENDIF. - - ASSIGN <comp_ui5>->* TO FIELD-SYMBOL(<ls_data_ui5>). - IF sy-subrc = 0. - <comp> = <ls_data_ui5>. - ENDIF. - ENDLOOP. - - INSERT <row> INTO TABLE t_result. - ENDLOOP. - - ENDMETHOD. - - METHOD trans_xml_2_object. - - CALL TRANSFORMATION id - SOURCE XML xml - RESULT data = data. - - ENDMETHOD. - - METHOD get_text. - - IF ms_error-x_root IS NOT INITIAL. - result = ms_error-x_root->get_text( ). - DATA(error) = abap_true. - ELSEIF ms_error-s_msg-message IS NOT INITIAL. - result = ms_error-s_msg-message. - error = abap_true. - ENDIF. - - IF error = abap_true AND result IS INITIAL. - result = `unknown error`. - ENDIF. - - ENDMETHOD. - - METHOD raise. - - IF when = abap_false. - RETURN. - ENDIF. - RAISE EXCEPTION TYPE z2ui5_lcl_utility EXPORTING val = v. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_49.clas.xml b/src/00/z2ui5_cl_app_demo_49.clas.xml deleted file mode 100644 index c3d03a96..00000000 --- a/src/00/z2ui5_cl_app_demo_49.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_49</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>demo - list report</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_50.clas.abap b/src/00/z2ui5_cl_app_demo_50.clas.abap deleted file mode 100644 index dc954917..00000000 --- a/src/00/z2ui5_cl_app_demo_50.clas.abap +++ /dev/null @@ -1,100 +0,0 @@ -CLASS z2ui5_cl_app_demo_50 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA product TYPE string. - DATA quantity TYPE string. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS Z2UI5_CL_APP_DEMO_50 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - product = 'tomato'. - quantity = '500'. - ENDIF. - - CASE client->get( )-event. - WHEN 'BUTTON_POST'. - client->popup_message_toast( |{ product } { quantity } - send to the server| ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - client->set_next( VALUE #( xml_main = z2ui5_cl_xml_view=>factory( - )->shell( - )->page( - title = 'abap2UI5 - Changed CSS' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - target = '_blank' - )->get_parent( - )->zz_plain( `<html:style> .sapMInput {` && |\n| && - ` height: 80px !important;` && |\n| && - ` font-size: 2.5rem !important;` && |\n| && - `}` && |\n| && - |\n| && - `input {` && |\n| && - ` height: 80% !important;` && |\n| && - ` font-size: 2.5rem !important;` && |\n| && - `}` && |\n| && - |\n| && - `input[role="textbox"] {` && |\n| && - ` height: 80px !important;` && |\n| && - ` font-size: 2.5rem !important;` && |\n| && - `}` && |\n| && - |\n| && - `input[role="text"] {` && |\n| && - ` height: 80px !important;` && |\n| && - ` font-size: 2.5rem !important;` && |\n| && - `}` && |\n| && - |\n| && - `.sapUiSearchField {` && |\n| && - ` height: 35px;` && |\n| && - ` font-size: 2.5rem !important;` && |\n| && - `}` && |\n| && - |\n| && - `.sapUiTfCombo:hover {` && |\n| && - ` height: 2rem;` && |\n| && - ` font-size: 2.5rem !important;` && |\n| && - `}` && |\n| && - |\n| && - `.sapMInputBaseInner::placeholder {` && |\n| && - ` font-size: 1.4rem !important;` && |\n| && - `}</html:style> ` - )->button( - text = 'post' - press = client->_event( 'BUTTON_POST' ) - class = `mySuperRedButton` - )->input( value = client->_bind( quantity ) - )->simple_form( title = 'Form Title' editable = abap_true - )->content( 'form' - )->title( 'Input' - )->label( 'quantity' - )->input( value = client->_bind( quantity ) - )->label( 'product' - )->input( - value = product - enabled = abap_false - )->button( - text = 'post' - press = client->_event( 'BUTTON_POST' ) - )->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_50.clas.xml b/src/00/z2ui5_cl_app_demo_50.clas.xml deleted file mode 100644 index 253c2ff8..00000000 --- a/src/00/z2ui5_cl_app_demo_50.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_50</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>more - css</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_51.clas.abap b/src/00/z2ui5_cl_app_demo_51.clas.abap deleted file mode 100644 index 2cb94d41..00000000 --- a/src/00/z2ui5_cl_app_demo_51.clas.abap +++ /dev/null @@ -1,103 +0,0 @@ -CLASS z2ui5_cl_app_demo_51 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - DATA product TYPE string. - DATA quantity TYPE string. - DATA check_initialized TYPE abap_bool. - - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_51 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - product = 'tomato'. - quantity = '500'. - ENDIF. - - CASE client->get( )-event. - WHEN 'BUTTON_POST'. - client->popup_message_toast( |{ product } { quantity } - send to the server| ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - ENDCASE. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - id = 'id_page' - title = 'abapScheme - Workbench' - shownavbutton = abap_true - navbuttonpress = client->_event( 'BACK' ) ). - - page->header_content( - )->toolbar( - )->button( - text = 'Evaluate' - press = client->_event( 'BUTTON_EVAL' ) - icon = 'sap-icon://begin' - type = 'Emphasized' - ")->toolbar_spacer( - )->button( text = 'S-Expression' press = client->_event( 'BUTTON_SEXP' ) - icon = 'sap-icon://tree' - )->button( text = 'Trace' press = client->_event( 'BUTTON_TRACE' ) - icon = 'sap-icon://step' - )->button( - text = 'Previous' - press = client->_event( 'BUTTON_PREV' ) - icon = 'sap-icon://navigation-left-arrow' - )->button( - text = 'Next' - press = client->_event( 'BUTTON_NEXT' ) - icon = 'sap-icon://navigation-right-arrow' - )->button( - text = 'Refresh' - type = 'Reject' - press = client->_event( 'BUTTON_RESET' ) - icon = 'sap-icon://delete' - )->link( text = 'Help on..' href = 'https://github.com/nomssi/abap_scheme/wiki' - " icon = 'sap-icon://learning-assistant' // 'sap-icon://sys-help' - )->get_parent( ). - - -* )->toolbar( -* )->button( -* text = 'Evaluate' -* press = client->_event( 'BUTTON_EVAL' ) -* icon = 'sap-icon://begin' -* type = 'Emphasized' -* )->toolbar_spacer( -* )->button( text = 'S-Expression' press = client->_event( 'BUTTON_SEXP' ) -* icon = 'sap-icon://tree' -* )->button( text = 'Trace' press = client->_event( 'BUTTON_TRACE' ) -* icon = 'sap-icon://step' -* )->button( -* text = 'Previous' -* press = client->_event( 'BUTTON_PREV' ) -* icon = 'sap-icon://navigation-left-arrow' -* )->button( -* text = 'Next' -* press = client->_event( 'BUTTON_NEXT' ) -* icon = 'sap-icon://navigation-right-arrow' -* )->button( -* text = 'Refresh' -* type = 'Reject' -* press = client->_event( 'BUTTON_RESET' ) -* icon = 'sap-icon://delete' -* )->link( text = 'Help on..' href = 'https://github.com/nomssi/abap_scheme/wiki' -* " icon = 'sap-icon://learning-assistant' // 'sap-icon://sys-help' -* ). - - client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_51.clas.xml b/src/00/z2ui5_cl_app_demo_51.clas.xml deleted file mode 100644 index e95e7621..00000000 --- a/src/00/z2ui5_cl_app_demo_51.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_51</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>test -test</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_52.clas.abap b/src/00/z2ui5_cl_app_demo_52.clas.abap deleted file mode 100644 index 3ec393c4..00000000 --- a/src/00/z2ui5_cl_app_demo_52.clas.abap +++ /dev/null @@ -1,142 +0,0 @@ -CLASS z2ui5_cl_app_demo_52 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - count 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 check_initialized TYPE abap_bool. - METHODS refresh_data. - - data next type z2ui5_if_client=>ty_s_next. - - DATA mv_check_popover TYPE abap_bool. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_52 IMPLEMENTATION. - - - METHOD refresh_data. - - DO 100 TIMES. - DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red' - info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' ) - descr = 'this is a description' checkbox = abap_true ). - INSERT ls_row INTO TABLE t_tab. - ENDDO. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - refresh_data( ). - ENDIF. - - clear next. - - CASE client->get( )-event. - - WHEN `POPOVER_DETAIL`. - DATA(lv_id) = client->get( )-event_data. - mv_check_popover = abap_true. - next-popover_open_by_id = lv_id. - - WHEN 'BUTTON_POST'. - client->popup_message_box( 'button post was pressed' ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - IF mv_check_popover = abap_false. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Demo displaying popver without rerendering the main view' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true - )->table( - growing = abap_true - growingthreshold = '20' - growingscrolltoload = abap_true - items = client->_bind_one( t_tab ) - sticky = 'ColumnHeaders,HeaderToolbar' ). - - tab->columns( - )->column( - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Info' )->get_parent( - )->column( - )->text( 'Description' )->get_parent( - )->column( - )->text( 'Checkbox' )->get_parent( - )->column( - )->text( 'Counter' ). - - tab->items( )->column_list_item( )->cells( - )->link( text = '{COUNT}' press = client->_event( val = `POPOVER_DETAIL` data = `${$source>/id}` hold_view = abap_true ) - )->text( '{INFO}' - )->text( '{DESCR}' - )->checkbox( selected = '{CHECKBOX}' enabled = abap_false - )->text( '{COUNT}' ). - - next-xml_main = page->get_root( )->xml_get( ). - - else. - - mv_check_popover = abap_false. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - this is a popover' contentwidth = `50%` - )->simple_form( editable = abap_true - )->content( 'form' - )->label( 'info1' - )->text( `this is a text` - )->label( 'info2' - )->text( `this is a text` - )->label( 'info3' - )->text( `this is a text` - )->text( `this is a text` - )->get_parent( )->get_parent( - )->footer( - )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'details' - press = client->_event( 'BUTTON_DETAILS' ) - type = 'Emphasized' - - ). - - next-xml_popup = lo_popup->get_root( )->xml_get( ). - ENDIF. - - - client->set_next( next ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_52.clas.xml b/src/00/z2ui5_cl_app_demo_52.clas.xml deleted file mode 100644 index e6727178..00000000 --- a/src/00/z2ui5_cl_app_demo_52.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_52</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>list report - cell with popover</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_53.clas.abap b/src/00/z2ui5_cl_app_demo_53.clas.abap deleted file mode 100644 index a2340916..00000000 --- a/src/00/z2ui5_cl_app_demo_53.clas.abap +++ /dev/null @@ -1,1033 +0,0 @@ -CLASS z2ui5_cl_app_demo_53 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_s_token, - key TYPE string, - text TYPE string, - visible TYPE abap_bool, - selkz TYPE abap_bool, - END OF ty_S_token. - - DATA mt_token TYPE STANDARD TABLE OF ty_S_token WITH EMPTY KEY. -* DATA mt_token_sugg TYPE STANDARD TABLE OF ty_S_token WITH EMPTY KEY. - - DATA mt_table TYPE STANDARD TABLE OF z2ui5_t_draft. - DATA ms_detail TYPE z2ui5_t_draft. - DATA mv_check_columns TYPE abap_bool. - DATA mv_check_sort TYPE abap_bool. - DATA mv_check_table TYPE abap_bool. - - DATA mv_contentheight TYPE string VALUE `70%`. - DATA mv_contentwidth TYPE string VALUE `70%`. - - DATA mv_check_download_csv TYPE abap_bool. - - TYPES: - BEGIN OF ty_S_out, - selkz TYPE abap_bool, - uuid TYPE string, - uuid_prev TYPE string, - uuid_prev_app TYPE string, - uuid_prev_app_stack TYPE string, - timestampl TYPE string, - uname TYPE string, - END OF ty_s_out. - - DATA: - BEGIN OF ms_view, - headerpinned TYPE abap_bool, - headerexpanded TYPE abap_bool, - search_val TYPE string, - title TYPE string, - t_tab TYPE STANDARD TABLE OF ty_S_out WITH EMPTY KEY, - END OF ms_view. - - TYPES: - BEGIN OF ty_S_cols, - visible TYPE abap_bool, - name TYPE string, - length TYPE string, - title TYPE string, - editable TYPE abap_bool, - END OF ty_S_cols. - - TYPES: - BEGIN OF ty_S_filter_show, - selkz TYPE abap_bool, - name TYPE string, - value TYPE string, - " t_value TYPE STANDARD TABLE OF ty_S_token WITH EMPTY KEY, - END OF ty_S_filter_show. - - TYPES: - BEGIN OF ty_S_filter, - uuid TYPE string, - uuid_prev TYPE string, - "STANDARD TABLE OF ty_s_token WITH EMPTY KEY, - END OF ty_S_filter. - - TYPES: - BEGIN OF ty_S_sort, - " selkz TYPE abap_bool, - name TYPE string, - type TYPE string, - " descr TYPE string, - " check_descending TYPE string, - END OF ty_S_sort. - - DATA: - BEGIN OF ms_layout, - check_zebra TYPE abap_bool, - title TYPE string, - sticky_header TYPE string, - selmode TYPE string, - t_filter_show TYPE STANDARD TABLE OF ty_S_filter_show, - s_filter TYPE ty_s_filter, - t_cols TYPE STANDARD TABLE OF ty_S_cols, - t_sort TYPE STANDARD TABLE OF ty_S_sort, - END OF ms_layout. - - TYPES: - BEGIN OF s_combobox, - key TYPE string, - text TYPE string, - END OF s_combobox. - - TYPES ty_t_combo TYPE STANDARD TABLE OF s_combobox WITH EMPTY KEY. - - CLASS-METHODS encode_base64 - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE string. - - TYPES: - BEGIN OF ty_S_db_layout, - selkz TYPE ABap_bool, - name TYPE string, - user TYPE string, - default TYPE abap_bool, - data TYPE string, - END OF ty_S_db_layout. - DATA mt_db_layout TYPE STANDARD TABLE OF ty_S_db_layout. - - DATA mv_layout_name TYPE string. - - 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. - METHODS init_table_output. - METHODS z2ui5_on_render_main. - METHODS z2ui5_on_render_detail. - METHODS z2ui5_on_render_pop_setup. - METHODS z2ui5_on_render_pop_filter. - METHODS z2ui5_on_render_pop_detail. - METHODS z2ui5_on_render_pop_layout. - METHODS z2ui5_set_download_csv - IMPORTING - i_view TYPE REF TO z2ui5_cl_xml_view. - METHODS z2ui5_set_search. - METHODS z2ui5_set_detail. - METHODS z2ui5_set_sort. - METHODS z2ui5_set_filter - IMPORTING - io_box TYPE REF TO z2ui5_cl_xml_view. - METHODS z2ui5_set_data. - -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_53 IMPLEMENTATION. - - - METHOD z2ui5_if_app~main. - - me->client = client. - app-get = client->get( ). - app-view_popup = ``. - app-next-path = `/z2ui5_cl_app_demo_49`. - app-next-title = `List Report`. - - - 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 'SORT_ADD'. - INSERT VALUE #( ) INTO TABLE ms_layout-t_sort. - app-view_popup = 'POPUP_SETUP'. - - WHEN `SORT_DELETE`. - DELETE ms_layout-t_sort WHERE name = app-get-event_data. - app-view_popup = 'POPUP_SETUP'. - - WHEN 'BUTTON_DELETE'. - DELETE ms_view-t_tab WHERE selkz = abap_true. - - WHEN 'BUTTON_CUSTOM'. - client->popup_message_box( `custom action called` ). - - WHEN 'BUTTON_START'. - z2ui5_set_data( ). - - WHEN 'BUTTON_DOWNLOAD'. - mv_check_download_csv = abap_true. - - WHEN `POPUP_LAYOUT_LOAD`. - DATA(ls_layout2) = mt_db_layout[ selkz = abap_true ]. - z2ui5_lcl_utility=>trans_xml_2_object( - EXPORTING - xml = ls_layout2-data - IMPORTING - data = ms_layout - ). - ms_view-title = ls_layout2-name. - - WHEN `BUTTON_SAVE_LAYOUT`. - DATA(ls_layout) = VALUE ty_s_db_layout( - data = z2ui5_lcl_utility=>trans_data_2_xml( ms_layout ) - name = mv_layout_name - ). - INSERT ls_layout INTO TABLE mt_db_layout. - - WHEN 'BUTTON_SEARCH'. - app-next-s_cursor-id = 'SEARCH'. - app-next-s_cursor-cursorpos = '99'. - app-next-s_cursor-selectionend = '99'. - app-next-s_cursor-selectionstart = '99'. - z2ui5_set_search( ). - - WHEN 'MAIN'. - app-view_main = 'MAIN'. - - WHEN 'DETAIL'. - z2ui5_set_detail( ). - app-view_main = 'DETAIL'. - - WHEN 'POPUP_DETAIL'. - app-next-popover_open_by_id = app-get-event_data. - app-view_popup = 'POPUP_LAYOUT'. - - WHEN 'POPUP_LAYOUT'. - app-next-popover_open_by_id = `btn_layout`. - app-view_popup = 'POPUP_LAYOUT'. - - WHEN 'POPUP_FILTER'. - app-view_popup = 'POPUP_FILTER'. - - WHEN 'BUTTON_SETUP'. - app-view_popup = 'POPUP_SETUP'. - - WHEN 'POPUP_FILTER_CONTINUE'. - " app-view_popup = 'POPUP_FILTER'. - - WHEN 'BUTTON_INIT'. - init_table_output( ). - - WHEN 'BUTTON_CANCEL'. - client->popup_message_toast( |cancel| ). - app-view_popup = ''. - - WHEN 'BACK'. - " app-next-path = `test`. - client->nav_app_leave( client->get_app( app-get-id_prev_app_stack ) ). - - ENDCASE. - - ENDMETHOD. - - - METHOD z2ui5_on_init. - - - init_table_output( ). - - ms_view-title = `Standart`. - ms_layout-selmode = 'MultiSelect'. - ms_layout-check_zebra = abap_true. - ms_view-t_tab = CORRESPONDING #( mt_table ). - ms_layout-sticky_header = `HeaderToolbar,InfoToolbar,ColumnHeaders`. - ms_layout-title = `Drafts`. - - app-next-t_scroll = VALUE #( ( name = `page_main` ) ). - - mt_token = VALUE #( - ( key = 'VAL1' text = 'value_1' selkz = abap_true visible = abap_true ) - ( key = 'VAL3' text = 'value_3' selkz = abap_false visible = abap_true ) - ( key = 'VAL4' text = 'value_4' selkz = abap_true ) - ( key = '<500' text = '<500' selkz = abap_true ) - ). - - - - " IF app-view_main IS INITIAL. - DATA(lv_url) = z2ui5_cl_http_handler=>client-t_header[ name = `referer` ]-value. - SPLIT lv_url AT `/z2ui5_cl_app_demo_49/` INTO DATA(lv_dummy1) DATA(lv_dummy2). - SPLIT lv_dummy2 AT `(` INTO DATA(lv_view) DATA(lv_token). - IF lv_view IS NOT INITIAL. - app-view_main = lv_view. - SPLIT lv_token AT `(` INTO DATA(lv_token2) lv_dummy1. - SPLIT lv_token2 AT `)` INTO lv_token lv_dummy1. - ms_detail-uuid = lv_token. - IF ms_detail-uuid IS NOT INITIAL. - z2ui5_set_data( ). - - ms_detail = mt_table[ uuid = ms_detail-uuid ]. - - SELECT SINGLE FROM z2ui5_t_draft - FIELDS * - WHERE uuid = @ms_detail-uuid - INTO CORRESPONDING FIELDS OF @ms_detail - . - - ENDIF. - " ENDIF. - ELSE. - app-view_main = 'MAIN'. - ENDIF. - - -* mt_token_sugg = VALUE #( -* ( key = 'VAL1' text = 'value_1' ) -* ( key = 'VAL2' text = 'value_2' ) -* ( key = 'VAL3' text = 'value_3' ) -* ( key = 'VAL4' text = 'value_4' ) -* ). - - - ENDMETHOD. - - - METHOD z2ui5_on_render. - - CASE app-view_popup. - WHEN `POPUP_FILTER`. - z2ui5_on_render_pop_filter( ). - WHEN `POPUP_SETUP`. - z2ui5_on_render_pop_setup( ). - WHEN `POPUP_LAYOUT`. - z2ui5_on_render_pop_layout( ). - WHEN `POPUP_DETAIL`. - z2ui5_on_render_pop_detail( ). - ENDCASE. - - app-next-path = app-next-path && `/` && app-view_main. - - CASE app-view_main. - WHEN 'MAIN'. - z2ui5_on_render_main( ). - WHEN 'DETAIL'. - z2ui5_on_render_detail( ). - ENDCASE. - - - - ENDMETHOD. - - - METHOD init_table_output. - - " CLEAR ms_layout-s_table. - " CLEAR mt_cols. - " CLEAR ms_layout-t_cols. - - ms_view-headerexpanded = abap_true. - ms_view-headerpinned = abap_true. - - DATA(lt_cols) = lcl_db=>get_fieldlist_by_table( mt_table ). - LOOP AT lt_cols REFERENCE INTO DATA(lr_col) FROM 2. - - INSERT VALUE #( - name = lr_col->* - ) INTO TABLE ms_layout-t_filter_show. - - INSERT VALUE #( - visible = abap_true - name = lr_col->* - " length = `10px` - title = lr_col->* - ) INTO TABLE ms_layout-t_cols. - -* INSERT VALUE #( -* " selkz = abap_true -* name = lr_col->* -* " length = `10px` -* ) INTO TABLE ms_layout-t_cols. - - ENDLOOP. - - ENDMETHOD. - - - METHOD z2ui5_on_render_main. - - z2ui5_set_sort( ). - - " DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ). - - DATA(view) = z2ui5_cl_xml_view=>factory( - )->page( id = `page_main` - title = 'abap2UI5 - Filter' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637163852264624139' - )->link( - text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - IF mv_check_download_csv = abap_true. - z2ui5_set_download_csv( view ). - ENDIF. - - DATA(page) = view->dynamic_page( - headerexpanded = client->_bind( ms_view-headerexpanded ) - headerpinned = client->_bind( ms_view-headerpinned ) ). - - DATA(header_title) = page->title( ns = 'f' - )->get( )->dynamic_page_title( ). - - header_title->heading( ns = 'f' )->hbox( - )->title( ms_view-title - )->get( - )->link( text = `test` press = client->_event( `POPUP_LAYOUT` ) - )->get_parent( - )->button( id = `btn_layout` press = client->_event( `POPUP_LAYOUT` ) type = `Transparent` icon = `sap-icon://dropdown` ). - - header_title->expanded_content( 'f' - )->label( text = 'Table Data' ). - - header_title->snapped_content( ns = 'f' - )->label( text = 'Table Data' ). - - - DATA(lo_box) = page->header( )->dynamic_page_header( pinnable = abap_true - )->flex_box( alignitems = `Start` justifycontent = `SpaceBetween` )->flex_box( alignItems = `Start` ). - - z2ui5_set_filter( lo_box ). - - - DATA(cont) = page->content( ns = 'f' ). - - - DATA(tab) = cont->table( - items = client->_bind( val = ms_view-t_tab ) - alternaterowcolors = ms_layout-check_zebra - sticky = ms_layout-sticky_header - autopopinmode = abap_true - mode = ms_layout-selmode ). - -* tab->header_toolbar( -* )->toolbar( -* )->title( text = ms_layout-title && ` (` && shift_right( CONV string( lines( ms_view-t_tab ) ) ) && `)` level = `H2` -* )->toolbar_spacer( -* )->button( -* icon = 'sap-icon://refresh' -* press = client->_event( 'BUTTON_REFRESH' ) -* )->multi_input( -* tokens = client->_bind( mt_token ) -* showclearicon = abap_true -** showvaluehelp = abap_true -** suggestionitems = client->_bind( mt_token_sugg ) -* )->item( -* key = `{KEY}` -* text = `{TEXT}` -* )->tokens( -* )->token( -* key = `{KEY}` -* text = `{TEXT}` -* selected = `{SELKZ}` -** visible = `{VISIBLE}` -* )->get_parent( )->get_parent( -* -* )->toolbar_spacer( -** )->button( -** text = `Custom Action` -** press = client->_event( 'BUTTON_CUSTOM' ) -* -* )->button( -* text = `Anlegen` -* enabled = abap_false -* press = client->_event( 'BUTTON_CREATE' ) -* )->button( -* text = `Löschen` -* press = client->_event( 'BUTTON_DELETE' ) -* )->button( -* icon = 'sap-icon://action-settings' -* press = client->_event( 'BUTTON_SETUP' ) -* )->button( -* icon = 'sap-icon://download' -* press = client->_event( 'BUTTON_DOWNLOAD' ) -* ). - - - data(lv_width) = 10. - DATA(lo_columns) = tab->columns( ). - LOOP AT ms_layout-t_cols REFERENCE INTO DATA(lr_field) - WHERE visible = abap_true. - lo_columns->column( - minscreenwidth = shift_right( conv string( lv_width ) ) && `px` - demandpopin = abap_true width = lr_field->length )->text( text = CONV char10( lr_field->title ) - )->footer( - )->object_number( number = `Summe` unit = 'ST' state = `Warning` ). - lv_width = lv_width + 10. - ENDLOOP. - - DATA(lo_cells) = tab->items( )->column_list_item( - press = client->_event( val = 'DETAIL' data = `${UUID}` ) - selected = `{SELKZ}` - type = `Navigation` )->cells( ). - LOOP AT ms_layout-t_cols REFERENCE INTO lr_field - WHERE visible = abap_true. - IF lr_field->editable = abap_true. - lo_cells->input( `{` && lr_field->name && `}` ). - ELSE. - " lo_cells->text( `{` && lr_field->name && `}` ). - lo_cells->link( text = `{` && lr_field->name && `}` - " press = client->_event( val = `POPUP_DETAIL` data = `${` && lr_field->name && `}` ) ). - press = client->_event( val = `POPUP_DETAIL` data = `${$source>/id}` ) ). - " press = client->_event( val = `POPUP_DETAIL` data = `$event` ) ). - ENDIF. - ENDLOOP. - - app-next-xml_main = page->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_detail. - - app-next-path = app-next-path && `(` && ms_detail-uuid && `)`. - - DATA(view) = z2ui5_cl_xml_view=>factory( - )->page( - title = 'abap2UI5 - List Report' - navbuttonpress = client->_event( 'MAIN' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Demo' target = '_blank' - href = 'https://twitter.com/OblomovDev/status/1637163852264624139' - )->link( - text = 'Source_Code' target = '_blank' href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(page) = view->object_page_layout( - showtitleinheadercontent = abap_true - showeditheaderbutton = abap_true - editheaderbuttonpress = client->_event( 'EDIT_HEADER_PRESS' ) - uppercaseanchorbar = abap_false - ). - - DATA(header_title) = page->header_title( )->object_page_dyn_header_title( ). - - header_title->expanded_heading( - )->hbox( - )->title( text = 'Draft' wrapping = abap_true ). - - header_title->snapped_heading( - )->flex_box( alignitems = `Center` - )->avatar( src = `` class = 'sapUiTinyMarginEnd' - )->title( text = 'Draft' wrapping = abap_true ). - - header_title->expanded_content( ns = `uxap` )->text( `Details` ). - header_title->snapped_Content( ns = `uxap` )->text( `Details` ). - header_title->snapped_Title_On_Mobile( )->title( `Details` ). - - DATA(header_content) = page->header_Content( ns = 'uxap' ). - - header_content->flex_box( wrap = 'Wrap' - )->avatar( src = `` class = 'sapUiSmallMarginEnd' displaySize = 'layout' - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = `UUID` - )->label( text = ms_detail-uuid - )->get_parent( - )->horizontal_layout( class = 'sapUiSmallMarginBeginEnd' - )->vertical_layout( - )->label( text = 'UUID PRevious' - )->label( text = ms_detail-uuid_prev - )->get_parent( - )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'Info' - )->vbox( - )->label( 'Timestampl' - )->label( CONV #( ms_detail-timestampl ) - )->get_parent( )->get_parent( - )->vertical_layout( class = 'sapUiSmallMarginBeginEnd' - )->label( text = 'User' - )->label( text = ms_detail-uname - )->get_parent( - ). - - DATA(sections) = page->sections( ). - - sections->object_page_section( titleuppercase = abap_false id = 'goalsSectionSS1' title = '2014 Goals Plan' - )->heading( ns = `uxap` - )->get_parent( - )->sub_sections( - )->object_page_sub_section( id = 'goalssubSectionSS1' title = 'XML' - )->blocks( - )->code_editor( - type = `XML` - " editable = mv_check_editable - value = client->_bind_one( ms_detail-data ) ). - - app-next-xml_main = view->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_setup. - - DATA(ro_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - ro_popup = ro_popup->dialog( title = 'View Setup' resizable = abap_true - contentheight = client->_bind( mv_contentheight ) contentwidth = client->_bind( mv_contentwidth ) ). - - ro_popup->custom_header( - )->bar( - )->content_right( - )->button( text = `zurücksetzten` press = client->_event( 'BUTTON_INIT' ) ). - - - DATA(lo_tab) = ro_popup->tab_container( ). - - lo_tab->tab( text = 'Table' selected = client->_bind( mv_check_table ) - )->simple_form( editable = abap_true - )->content( 'form' - )->label( 'zebra mode' - )->checkbox( client->_bind( ms_layout-check_zebra ) - )->label( 'sticky header' - )->input( client->_bind( ms_layout-sticky_header ) - )->label( text = `Title` - )->Input( value = client->_bind( ms_layout-title ) - )->label( 'sel mode' - )->combobox( - selectedkey = client->_bind( ms_layout-selmode ) - items = client->_bind_one( VALUE ty_t_combo( - ( key = 'None' text = 'None' ) - ( key = 'SingleSelect' text = 'SingleSelect' ) - ( key = 'SingleSelectLeft' text = 'SingleSelectLeft' ) - ( key = 'MultiSelect' text = 'MultiSelect' ) ) ) - )->item( - key = '{KEY}' - text = '{TEXT}' ). - - - - lo_tab->tab( - text = 'Columns' - selected = client->_bind( mv_check_columns ) - )->table( - " mode = 'MultiSelect' - items = client->_bind( ms_layout-t_cols ) - )->columns( - )->column( )->text( 'Visible' )->get_parent( - )->column( )->text( 'Name' )->get_parent( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Editable' )->get_parent( - )->column( )->text( 'Length' )->get_parent( - )->get_parent( - )->items( )->column_list_item( - )->cells( - )->checkbox( '{VISIBLE}' - )->text( '{NAME}' - )->Input( '{TITLE}' - )->checkbox( '{EDITABLE}' - )->Input( '{LENGTH}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( )->get_parent( ). - - DATA(lo_tab_sort) = lo_tab->tab( - text = 'Sort' - selected = client->_bind( mv_check_sort ) ). - - lo_tab_sort->button( icon = `sap-icon://add` press = client->_event( `SORT_ADD` ) ). - - DATA(lo_hbox) = lo_tab_sort->list( - items = client->_bind( ms_layout-t_sort ) - selectionchange = client->_event( 'SELCHANGE' ) - )->custom_list_item( - )->hbox( ). - - lo_hbox->combobox( - selectedkey = `{NAME}` - items = client->_bind( ms_layout-t_cols ) -* ( key = 'BLUE' text = 'green' ) -* ( key = 'GREEN' text = 'blue' ) -* ( key = 'BLACK' text = 'red' ) -* ( key = 'GRAY' text = 'gray' ) ) ) - )->item( - key = '{NAME}' - text = '{NAME}' - )->get_parent( - )->segmented_button( `{TYPE}` -)->items( - )->segmented_button_item( - key = 'DESCENDING' - icon = 'sap-icon://sort-descending' - )->segmented_button_item( - key = 'ASCENDING' - icon = 'sap-icon://sort-ascending' -)->get_parent( )->get_parent( -)->button( type = `Transparent` icon = 'sap-icon://decline' press = client->_event( val = `SORT_DELETE` data = `${NAME}` ) ). -* )->get_parent( )->get_parent( )->get_parent( - -* )->button( -* text = 'counter descending' -* icon = 'sap-icon://sort-descending' -* press = client->_event( 'SORT_DESCENDING' ) -* )->button( -* text = 'counter ascending' -* icon = 'sap-icon://sort-ascending' -* press = client->_event( 'SORT_ASCENDING' ) -* )->get_parent( ). - - -* lo_tab->tab( -* text = 'Group' -* selected = client->_bind( mv_check_group ) -* )->get_parent( )->get_parent( ). - - ro_popup->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_FILTER_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = ro_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_filter. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->dialog( 'abap2UI5 - Popup to select entry' - )->table( - mode = 'MultiSelect' - items = client->_bind( ms_layout-t_filter_show ) - )->columns( - )->column( )->text( 'Title' )->get_parent( - )->column( )->text( 'Color' )->get_parent( - )->column( )->text( 'Info' )->get_parent( - )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - " )->checkbox( '{SELKZ}' - )->text( '{NAME}' - )->text( '{VALUE}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'continue' - press = client->_event( 'POPUP_FILTER_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_detail. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%` - )->input( description = `Name` value = client->_bind( mv_layout_name ) - )->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` ) - )->table( - mode = 'SingleSelectLeft' - items = client->_bind( mt_db_layout ) - )->columns( - )->column( )->text( 'Name' )->get_parent( - )->column( )->text( 'User' )->get_parent( - )->column( )->text( 'Default' )->get_parent( - " )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - " )->checkbox( '{SELKZ}' - )->text( '{NAME}' - )->text( '{USER}' - )->text( '{DEFAULT}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'load' - press = client->_event( 'POPUP_LAYOUT_LOAD' ) - type = 'Emphasized' - )->button( - text = 'close' - press = client->_event( 'POPUP_LAYOUT_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_on_render_pop_layout. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%` - )->input( description = `Name` value = client->_bind( mv_layout_name ) - )->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` ) - )->table( - mode = 'SingleSelectLeft' - items = client->_bind( mt_db_layout ) - )->columns( - )->column( )->text( 'Name' )->get_parent( - )->column( )->text( 'User' )->get_parent( - )->column( )->text( 'Default' )->get_parent( - " )->column( )->text( 'Description' )->get_parent( - )->get_parent( - )->items( )->column_list_item( selected = '{SELKZ}' - )->cells( - " )->checkbox( '{SELKZ}' - )->text( '{NAME}' - )->text( '{USER}' - )->text( '{DEFAULT}' - " )->text( '{DESCR}' - )->get_parent( )->get_parent( )->get_parent( )->get_parent( - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'load' - press = client->_event( 'POPUP_LAYOUT_LOAD' ) - type = 'Emphasized' - )->button( - text = 'close' - press = client->_event( 'POPUP_LAYOUT_CONTINUE' ) - type = 'Emphasized' ). - - app-next-xml_popup = lo_popup->get_root( )->xml_get( ). - - ENDMETHOD. - - - METHOD z2ui5_set_download_csv. - - DATA(lo_struc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_data( ms_view-t_tab[ 1 ] ) ). - DATA(lt_components) = lo_struc->get_components( ). - - DATA(lv_row) = ``. - LOOP AT lt_components INTO DATA(lv_name) FROM 2. - lv_row = lv_row && lv_name-name && `;`. - ENDLOOP. - lv_row = lv_row && cl_abap_char_utilities=>cr_lf. - - - LOOP AT ms_view-t_tab REFERENCE INTO DATA(lr_row) FROM 2. - - DATA(lv_index) = 2. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE lr_row->* TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_row = lv_row && <field>. - lv_index = lv_index + 1. - lv_row = lv_row && `;`. - ENDDO. - - lv_row = lv_row && cl_abap_char_utilities=>cr_lf. - ENDLOOP. - - DATA lv_bas64enc TYPE string. - - lv_bas64enc = encode_base64( lv_row ). - - i_view->zz_plain( `<html:iframe src="data:text/csv;base64,` && lv_bas64enc && `" hidden="hidden" />`). - - mv_check_download_csv = abap_false. - - ENDMETHOD. - - - METHOD encode_base64. - - TRY. - CALL METHOD ('CL_WEB_HTTP_UTILITY')=>encode_base64 - EXPORTING - unencoded = val - RECEIVING - encoded = result. - - CATCH cx_sy_dyn_call_illegal_class. - - DATA(classname) = 'CL_HTTP_UTILITY'. - CALL METHOD (classname)=>encode_base64 - EXPORTING - unencoded = val - RECEIVING - encoded = result. - - ENDTRY. - - ENDMETHOD. - - - METHOD z2ui5_set_search. - - ms_view-t_tab = CORRESPONDING #( mt_table ). - IF ms_view-search_val IS NOT INITIAL. - LOOP AT ms_view-t_tab REFERENCE INTO DATA(lr_row). - DATA(lv_row) = ``. - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE lr_row->* TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_row = lv_row && <field>. - lv_index = lv_index + 1. - ENDDO. - - IF lv_row NS ms_view-search_val. - DELETE ms_view-t_tab. - ENDIF. - ENDLOOP. - ENDIF. - - ENDMETHOD. - - - METHOD z2ui5_set_detail. - - ms_detail = mt_table[ uuid = client->get( )-event_data ]. - - SELECT SINGLE FROM z2ui5_t_draft - FIELDS * - WHERE uuid = @ms_detail-uuid - INTO CORRESPONDING FIELDS OF @ms_detail - . - - ENDMETHOD. - - - METHOD z2ui5_set_sort. - - "quick and dirty - todo - "only works for 2 conditions - TRY. - IF ms_layout-t_sort IS NOT INITIAL. - DATA(ls_field1) = VALUE #( ms_layout-t_sort[ 1 ] OPTIONAL ). - DATA(ls_field2) = VALUE #( ms_layout-t_sort[ 2 ] OPTIONAL ). - - SORT ms_view-t_tab BY - (ls_field1-name) (ls_field1-type) - (ls_field2-name) (ls_field2-type). - - ENDIF. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. - - - METHOD z2ui5_set_filter. - - io_box->search_field( - value = client->_bind( ms_view-search_val ) - search = client->_event( 'BUTTON_SEARCH' ) - change = client->_event( 'BUTTON_SEARCH' ) - width = `17.5rem` - id = `SEARCH` - ). - - IF line_exists( ms_layout-t_filter_show[ name = `UUID` selkz = abap_true ] ). - io_box->input( value = client->_bind( ms_layout-s_filter-uuid ) description = `UUID` ). - ENDIF. - - IF line_exists( ms_layout-t_filter_show[ name = `UUID_PREV` selkz = abap_true ] ). - io_box->input( value = client->_bind( ms_layout-s_filter-uuid_prev ) description = `UUID_PREV` ). - ENDIF. - - "todo other columns... - - DATA(rt_filter) = ms_layout-t_filter_show. - DELETE rt_filter WHERE selkz = abap_false. - - io_box->get_parent( )->hbox( justifycontent = `End` - )->button( text = `Go` press = client->_event( `BUTTON_START` ) type = `Emphasized` - )->button( text = `Adapt Filters (` && shift_right( CONV string( lines( rt_filter ) ) ) && `)` press = client->_event( `POPUP_FILTER` ) - ). - - ENDMETHOD. - - - METHOD z2ui5_set_data. - - "dirty solution - "todo: map filters to rangetab and make a nice select - - IF ms_layout-s_filter-uuid IS INITIAL. - - SELECT FROM z2ui5_t_draft - FIELDS uuid, uuid_prev, timestampl, uname - INTO CORRESPONDING FIELDS OF TABLE @mt_table - UP TO 50 ROWS. - - ELSE. - - SELECT FROM z2ui5_t_draft - FIELDS uuid, uuid_prev, timestampl, uname - WHERE uuid = @ms_layout-s_filter-uuid - INTO CORRESPONDING FIELDS OF TABLE @mt_table - UP TO 50 ROWS. - - ENDIF. - - ms_view-t_tab = CORRESPONDING #( mt_table ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_53.clas.locals_imp.abap b/src/00/z2ui5_cl_app_demo_53.clas.locals_imp.abap deleted file mode 100644 index d38f1b36..00000000 --- a/src/00/z2ui5_cl_app_demo_53.clas.locals_imp.abap +++ /dev/null @@ -1,747 +0,0 @@ -CLASS lcl_db DEFINITION. - - - PUBLIC SECTION. - - - TYPES ty_t_table TYPE z2ui5_cl_app_demo_13=>ty_t_table. - - CLASS-DATA app TYPE REF TO z2ui5_cl_app_demo_13. - "CLASS-DATA st_table TYPE ty_t_table. - - CLASS-METHODS generate_test_data. - - CLASS-METHODS get_table_by_json - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_xml - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_table_by_csv - IMPORTING - val TYPE string - RETURNING - VALUE(result) TYPE ty_t_table. - - CLASS-METHODS get_csv_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_xml_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_json_by_table - IMPORTING - val TYPE ty_t_table - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_fieldlist_by_table - IMPORTING - it_table TYPE table - RETURNING - VALUE(result) TYPE string_table. - - CLASS-METHODS db_save - IMPORTING - value TYPE ty_t_table. - - CLASS-METHODS db_read - RETURNING - VALUE(result) TYPE ty_t_table. - CLASS-METHODS get_test_data_json - RETURNING - VALUE(result) TYPE string. - - PROTECTED SECTION. - PRIVATE SECTION. - -ENDCLASS. - -CLASS lcl_db IMPLEMENTATION. - - METHOD generate_test_data. - - app->st_db = VALUE #( - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ( carrid = 'DL' connid = '0106' countryfr = 'US' cityfrom = 'NEW YORK' airpfrom = 'JFK' countryto = 'DE' cityto = 'FRANKFURT' airpto = 'FR' ) - ). - - ENDMETHOD. - - - METHOD get_table_by_json. - - DATA lt_tab TYPE ty_t_table. - - /ui2/cl_json=>deserialize( - EXPORTING - json = val -* jsonx = -* pretty_name = -* assoc_arrays = -* assoc_arrays_opt = -* name_mappings = -* conversion_exits = -* hex_as_base64 = - CHANGING - data = lt_tab - ). - - result = lt_tab. - - ENDMETHOD. - - - METHOD get_table_by_xml. - - DATA lt_tab TYPE ty_t_table. - - CALL TRANSFORMATION id SOURCE xml = val RESULT data = lt_tab. - - result = lt_tab. - - ENDMETHOD. - - METHOD get_table_by_csv. - - SPLIT val AT ';' INTO TABLE DATA(lt_cols). - - LOOP AT lt_cols INTO DATA(lv_field). - - DATA(ls_row) = VALUE z2ui5_cl_app_demo_13=>ty_s_spfli( ). - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - <field> = lv_field. - lv_index = lv_index + 1. - ENDDO. - INSERT ls_row INTO TABLE result. - - ENDLOOP. - - ENDMETHOD. - - METHOD db_save. - - "normally modify database here - - "test scenario, therefore write internal table instead - app->st_db = value. - - ENDMETHOD. - - METHOD db_read. - - "normally read database here - - "test scenario, therefore read internal table instead - - result = app->st_db. - - ENDMETHOD. - - METHOD get_csv_by_table. - - LOOP AT val INTO DATA(ls_row). - - DATA(lv_index) = 1. - DO. - ASSIGN COMPONENT lv_index OF STRUCTURE ls_row TO FIELD-SYMBOL(<field>). - IF sy-subrc <> 0. - EXIT. - ENDIF. - lv_index = lv_index + 1. - result = result && <field> && ';'. - ENDDO. - result = result && cl_abap_char_utilities=>cr_lf. - ENDLOOP. - - - ENDMETHOD. - - METHOD get_json_by_table. - - result = /ui2/cl_json=>serialize( - val -* compress = -* name = -* pretty_name = -* type_descr = -* assoc_arrays = -* ts_as_iso8601 = -* expand_includes = -* assoc_arrays_opt = -* numc_as_string = -* name_mappings = -* conversion_exits = - " format_output = abap_true -* hex_as_base64 = - ). - - - ENDMETHOD. - - METHOD get_xml_by_table. - - CALL TRANSFORMATION id SOURCE values = val RESULT XML result. - - ENDMETHOD. - - METHOD get_fieldlist_by_table. - - DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( it_table ) ). - DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ). - - DATA(lt_comp) = lo_struc->get_components( ). - - LOOP AT lt_comp INTO DATA(ls_comp). - INSERT ls_comp-name INTO TABLE result. - ENDLOOP. - - ENDMETHOD. - - - METHOD get_test_data_json. - - result = `[` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` },` && |\n| && - ` {` && |\n| && - ` "CARRID": "DL",` && |\n| && - ` "CONNID": 106,` && |\n| && - ` "COUNTRYFR": "US",` && |\n| && - ` "CITYFROM": "NEW YORK",` && |\n| && - ` "AIRPFROM": "JFK",` && |\n| && - ` "COUNTRYTO": "DE",` && |\n| && - ` "CITYTO": "FRANKFURT",` && |\n| && - ` "AIRPTO": "FR"` && |\n| && - ` }` && |\n| && - `]`. - - ENDMETHOD. - -ENDCLASS. - -CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check. - - PUBLIC SECTION. - - TYPES: - BEGIN OF ty_attri, - name TYPE string, - type_kind TYPE string, - type TYPE string, - bind_type TYPE string, - data_stringify TYPE string, - gen_type_kind TYPE string, - gen_type TYPE string, - gen_kind TYPE string, - END OF ty_attri. - TYPES ty_T_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY. - - DATA: - BEGIN OF ms_error, - x_root TYPE REF TO cx_root, - uuid TYPE string, - s_msg TYPE LINE OF bapirettab, - END OF ms_error. - - METHODS constructor - IMPORTING - val TYPE any OPTIONAL - previous TYPE REF TO cx_root OPTIONAL - PREFERRED PARAMETER val. - - METHODS get_text REDEFINITION. - - CLASS-METHODS raise - IMPORTING - v TYPE clike DEFAULT `CX_SY_SUBRC` - when TYPE abap_bool DEFAULT abap_true - PREFERRED PARAMETER v. - - CLASS-METHODS get_header_val - IMPORTING - v TYPE clike - RETURNING - VALUE(result) TYPE z2ui5_if_client=>ty_s_name_value-value. - - CLASS-METHODS get_param_val - IMPORTING - v TYPE clike - RETURNING - VALUE(result) TYPE z2ui5_if_client=>ty_s_name_value-value. - - CLASS-METHODS get_uuid - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_uuid_session - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_user_tech - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_timestampl - RETURNING - VALUE(result) TYPE timestampl. - - CLASS-METHODS trans_any_2_json - IMPORTING - any TYPE any - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS trans_xml_2_object - IMPORTING - xml TYPE clike - EXPORTING - data TYPE data. - - CLASS-METHODS get_t_attri_by_ref - IMPORTING - io_app TYPE REF TO object - RETURNING - VALUE(result) TYPE ty_t_attri ##NEEDED. - - CLASS-METHODS trans_data_2_xml - IMPORTING - data TYPE data - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS get_abap_2_json - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS check_is_boolean - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE abap_bool. - - CLASS-METHODS get_json_boolean - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - - CLASS-METHODS trans_ref_tab_2_tab - IMPORTING - ir_tab_from TYPE REF TO data - EXPORTING - t_result TYPE STANDARD TABLE. - - CLASS-METHODS get_trim_upper - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - - PROTECTED SECTION. - - CLASS-DATA mv_counter TYPE i. - - CLASS-METHODS _get_t_attri - IMPORTING - io_app TYPE REF TO object - iv_attri TYPE csequence - RETURNING - VALUE(result) TYPE abap_attrdescr_tab. - - PRIVATE SECTION. - -ENDCLASS. - - -CLASS z2ui5_lcl_utility IMPLEMENTATION. - - METHOD get_trim_upper. - result = CONV #( val ). - result = to_upper( shift_left( shift_right( result ) ) ). - ENDMETHOD. - - - METHOD constructor. - - super->constructor( previous = previous ). - CLEAR textid. - - TRY. - ms_error-x_root ?= val. - CATCH cx_root ##CATCH_ALL. - ms_error-s_msg-message = val. - ENDTRY. - - TRY. - ms_error-uuid = get_uuid( ). - CATCH cx_root ##CATCH_ALL. - ENDTRY. - ENDMETHOD. - - - METHOD get_abap_2_json. - - IF check_is_boolean( val ). - result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). - ELSE. - result = |"{ escape( val = val format = cl_abap_format=>e_json_string ) }"|. - ENDIF. - - ENDMETHOD. - - - METHOD check_is_boolean. - - TRY. - DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_data( val ) ). - CASE lo_ele->get_relative_name( ). - WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`. - result = abap_true. - ENDCASE. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. - - - METHOD get_json_boolean. - - IF check_is_boolean( val ). - result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). - ELSE. - result = val. - ENDIF. - - ENDMETHOD. - - - METHOD get_timestampl. - - GET TIME STAMP FIELD result. - - ENDMETHOD. - - - METHOD get_user_tech. - - result = sy-uname. - - ENDMETHOD. - - - METHOD get_uuid. - TRY. - - DATA uuid TYPE c LENGTH 32. - - TRY. - CALL METHOD (`CL_SYSTEM_UUID`)=>if_system_uuid_static~create_uuid_c32 - RECEIVING - uuid = uuid. - - CATCH cx_sy_dyn_call_illegal_class. - - DATA(lv_fm) = `GUID_CREATE`. - CALL FUNCTION lv_fm - IMPORTING - ev_guid_32 = uuid. - - ENDTRY. - - result = uuid. - - CATCH cx_root. - ASSERT 1 = 0. - ENDTRY. - ENDMETHOD. - - - METHOD get_uuid_session. - - mv_counter = mv_counter + 1. - result = get_trim_upper( mv_counter ). - - ENDMETHOD. - - - METHOD get_header_val. - - result = z2ui5_cl_http_handler=>client-t_header[ name = v ]-value. - - ENDMETHOD. - - - METHOD get_param_val. - - DATA(lt_param) = VALUE z2ui5_if_client=>ty_t_name_value( LET tab = z2ui5_cl_http_handler=>client-t_param IN FOR row IN tab - ( name = to_upper( row-name ) value = to_upper( row-value ) ) ). - TRY. - result = lt_param[ name = get_trim_upper( v ) ]-value. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. - - - METHOD get_t_attri_by_ref. - - DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( io_app ) )->attributes. - - DELETE lt_attri WHERE visibility <> cl_abap_classdescr=>public. - - LOOP AT lt_attri INTO DATA(ls_attri) - WHERE type_kind = cl_abap_classdescr=>typekind_struct2 - OR type_kind = cl_abap_classdescr=>typekind_struct1. - - DELETE lt_attri INDEX sy-tabix. - - INSERT LINES OF _get_t_attri( - io_app = io_app - iv_attri = ls_attri-name ) INTO TABLE lt_attri. - - ENDLOOP. - - LOOP AT lt_attri INTO ls_attri. - - DATA(ls_attri2) = VALUE ty_attri( ). - ls_attri2 = CORRESPONDING #( ls_attri ). - - FIELD-SYMBOLS <any> TYPE any. - UNASSIGN <any>. - DATA(lv_assign) = `IO_APP->` && ls_attri-name. - ASSIGN (lv_assign) TO <any>. - DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <any> ). - CASE lo_descr->kind. - WHEN lo_descr->kind_elem. - ls_attri2-type = CAST cl_abap_elemdescr( lo_descr )->get_relative_name( ). - ENDCASE. - - APPEND ls_attri2 TO result. - ENDLOOP. - - ENDMETHOD. - - METHOD _get_t_attri. - - CONSTANTS c_prefix TYPE string VALUE `IO_APP->`. - FIELD-SYMBOLS <attribute> TYPE any. - - DATA(lv_name) = c_prefix && to_upper( iv_attri ). - ASSIGN (lv_name) TO <attribute>. - raise( when = xsdbool( sy-subrc <> 0 ) ). - - DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <attribute> ). - DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ). - - LOOP AT lo_struct->get_components( ) REFERENCE INTO DATA(lr_comp). - - DATA(lv_element) = iv_attri && `-` && lr_comp->name. - - IF lr_comp->as_include = abap_true. - INSERT LINES OF _get_t_attri( io_app = io_app - iv_attri = lv_element ) INTO TABLE result. - - ELSE. - INSERT VALUE #( name = lv_element - type_kind = lr_comp->type->type_kind ) INTO TABLE result. - ENDIF. - - ENDLOOP. - ENDMETHOD. - - METHOD trans_any_2_json. - - result = /ui2/cl_json=>serialize( any ). - - ENDMETHOD. - - - METHOD trans_data_2_xml. - - " FIELD-SYMBOLS <object> TYPE any. - " ASSIGN object->* TO <object>. - " raise( when = xsdbool( sy-subrc <> 0 ) ). - - CALL TRANSFORMATION id - SOURCE data = data - RESULT XML result - OPTIONS data_refs = `heap-or-create`. - - ENDMETHOD. - - - METHOD trans_ref_tab_2_tab. - - TYPES ty_t_ref TYPE STANDARD TABLE OF REF TO data. - - FIELD-SYMBOLS <lt_from> TYPE ty_t_ref. - ASSIGN ir_tab_from->* TO <lt_from>. - raise( when = xsdbool( sy-subrc <> 0 ) ). - - CLEAR t_result. - - DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( t_result ) ). - DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ). - DATA(lt_components) = lo_struc->get_components( ). - - LOOP AT <lt_from> INTO DATA(lr_from). - - DATA lr_row TYPE REF TO data. - CREATE DATA lr_row LIKE LINE OF t_result. - ASSIGN lr_row->* TO FIELD-SYMBOL(<row>). - - ASSIGN lr_from->* TO FIELD-SYMBOL(<row_ui5>). - raise( when = xsdbool( sy-subrc <> 0 ) ). - - LOOP AT lt_components INTO DATA(ls_comp). - - FIELD-SYMBOLS <comp> TYPE data. - ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row> TO <comp>. - IF sy-subrc <> 0. - EXIT. - ENDIF. - - FIELD-SYMBOLS <comp_ui5> TYPE data. - ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row_ui5> TO <comp_ui5>. - IF sy-subrc <> 0. - EXIT. - ENDIF. - - ASSIGN <comp_ui5>->* TO FIELD-SYMBOL(<ls_data_ui5>). - IF sy-subrc = 0. - <comp> = <ls_data_ui5>. - ENDIF. - ENDLOOP. - - INSERT <row> INTO TABLE t_result. - ENDLOOP. - - ENDMETHOD. - - METHOD trans_xml_2_object. - - CALL TRANSFORMATION id - SOURCE XML xml - RESULT data = data. - - ENDMETHOD. - - METHOD get_text. - - IF ms_error-x_root IS NOT INITIAL. - result = ms_error-x_root->get_text( ). - DATA(error) = abap_true. - ELSEIF ms_error-s_msg-message IS NOT INITIAL. - result = ms_error-s_msg-message. - error = abap_true. - ENDIF. - - IF error = abap_true AND result IS INITIAL. - result = `unknown error`. - ENDIF. - - ENDMETHOD. - - METHOD raise. - - IF when = abap_false. - RETURN. - ENDIF. - RAISE EXCEPTION TYPE z2ui5_lcl_utility EXPORTING val = v. - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_53.clas.xml b/src/00/z2ui5_cl_app_demo_53.clas.xml deleted file mode 100644 index 827479d2..00000000 --- a/src/00/z2ui5_cl_app_demo_53.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_53</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>list report - filter</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_54.clas.abap b/src/00/z2ui5_cl_app_demo_54.clas.abap deleted file mode 100644 index 112c3c16..00000000 --- a/src/00/z2ui5_cl_app_demo_54.clas.abap +++ /dev/null @@ -1,151 +0,0 @@ -CLASS z2ui5_cl_app_demo_54 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - count TYPE i, - 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 check_initialized TYPE abap_bool. - METHODS refresh_data. - - data next type z2ui5_if_client=>ty_s_next. - - DATA mv_check_popover TYPE abap_bool. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_54 IMPLEMENTATION. - - - METHOD refresh_data. - - DO 100 TIMES. - DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red' - info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' ) - descr = 'this is a description' checkbox = abap_true ). - INSERT ls_row INTO TABLE t_tab. - ENDDO. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - refresh_data( ). - ENDIF. - - clear next. - - CASE client->get( )-event. - - WHEN `POPOVER_DETAIL`. - DATA(lv_id) = client->get( )-event_data. - mv_check_popover = abap_true. - next-popover_open_by_id = lv_id. - - WHEN 'BUTTON_POST'. - client->popup_message_box( 'button post was pressed' ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - IF mv_check_popover = abap_false. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Scroll Container with Table and Toolbar' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true - )->table( - growing = abap_true - growingthreshold = '20' - growingscrolltoload = abap_true - items = client->_bind_one( t_tab ) - sticky = 'ColumnHeaders,HeaderToolbar' ). - - tab->columns( - )->column( - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Info' )->get_parent( - )->column( - )->text( 'Description' )->get_parent( - )->column( - )->text( 'Checkbox' )->get_parent( - )->column( - )->text( 'Counter' ). - - tab->items( )->column_list_item( )->cells( - )->link( text = '{VALUE}' press = client->_event( val = `POPOVER_DETAIL` data = `${$source>/id}` hold_view = abap_true ) - )->text( '{INFO}' - )->text( '{DESCR}' - )->checkbox( selected = '{CHECKBOX}' enabled = abap_false - )->text( '{COUNT}' ). - - next-xml_main = page->get_root( )->xml_get( ). - - else. - - mv_check_popover = abap_false. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%` - " )->input( description = `Name` value = client->_bind( mv_layout_name ) - )->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` ) -* )->table( -* mode = 'SingleSelectLeft' -* items = client->_bind( mt_db_layout ) -* )->columns( -* )->column( )->text( 'Name' )->get_parent( -* )->column( )->text( 'User' )->get_parent( -* )->column( )->text( 'Default' )->get_parent( -* " )->column( )->text( 'Description' )->get_parent( -* )->get_parent( -* )->items( )->column_list_item( selected = '{SELKZ}' -* )->cells( -* " )->checkbox( '{SELKZ}' -* )->text( '{NAME}' -* )->text( '{USER}' -* )->text( '{DEFAULT}' -* " )->text( '{DESCR}' - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'load' - press = client->_event( 'POPUP_LAYOUT_LOAD' ) - type = 'Emphasized' - )->button( - text = 'close' - press = client->_event( 'POPUP_LAYOUT_CONTINUE' ) - type = 'Emphasized' ). - - next-xml_popup = lo_popup->get_root( )->xml_get( ). - ENDIF. - - - client->set_next( next ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_54.clas.xml b/src/00/z2ui5_cl_app_demo_54.clas.xml deleted file mode 100644 index 2fbcf49b..00000000 --- a/src/00/z2ui5_cl_app_demo_54.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_54</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>list report - navigation</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_55.clas.abap b/src/00/z2ui5_cl_app_demo_55.clas.abap deleted file mode 100644 index ae8c57b8..00000000 --- a/src/00/z2ui5_cl_app_demo_55.clas.abap +++ /dev/null @@ -1,151 +0,0 @@ -CLASS z2ui5_cl_app_demo_55 DEFINITION PUBLIC. - - PUBLIC SECTION. - - INTERFACES z2ui5_if_app. - - TYPES: - BEGIN OF ty_row, - count TYPE i, - 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 check_initialized TYPE abap_bool. - METHODS refresh_data. - - data next type z2ui5_if_client=>ty_s_next. - - DATA mv_check_popover TYPE abap_bool. -ENDCLASS. - - - -CLASS z2ui5_cl_app_demo_55 IMPLEMENTATION. - - - METHOD refresh_data. - - DO 100 TIMES. - DATA(ls_row) = VALUE ty_row( count = sy-index value = 'red' - info = COND #( WHEN sy-index < 50 THEN 'completed' ELSE 'uncompleted' ) - descr = 'this is a description' checkbox = abap_true ). - INSERT ls_row INTO TABLE t_tab. - ENDDO. - - ENDMETHOD. - - - METHOD z2ui5_if_app~main. - - IF check_initialized = abap_false. - check_initialized = abap_true. - refresh_data( ). - ENDIF. - - clear next. - - CASE client->get( )-event. - - WHEN `POPOVER_DETAIL`. - DATA(lv_id) = client->get( )-event_data. - mv_check_popover = abap_true. - next-popover_open_by_id = lv_id. - - WHEN 'BUTTON_POST'. - client->popup_message_box( 'button post was pressed' ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). - - ENDCASE. - - IF mv_check_popover = abap_false. - - DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( - )->page( - title = 'abap2UI5 - Scroll Container with Table and Toolbar' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' target = '_blank' - href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) ) - )->get_parent( ). - - DATA(tab) = page->scroll_container( height = '70%' vertical = abap_true - )->table( - growing = abap_true - growingthreshold = '20' - growingscrolltoload = abap_true - items = client->_bind_one( t_tab ) - sticky = 'ColumnHeaders,HeaderToolbar' ). - - tab->columns( - )->column( - )->text( 'Color' )->get_parent( - )->column( - )->text( 'Info' )->get_parent( - )->column( - )->text( 'Description' )->get_parent( - )->column( - )->text( 'Checkbox' )->get_parent( - )->column( - )->text( 'Counter' ). - - tab->items( )->column_list_item( )->cells( - )->link( text = '{VALUE}' press = client->_event( val = `POPOVER_DETAIL` data = `${$source>/id}` hold_view = abap_true ) - )->text( '{INFO}' - )->text( '{DESCR}' - )->checkbox( selected = '{CHECKBOX}' enabled = abap_false - )->text( '{COUNT}' ). - - next-xml_main = page->get_root( )->xml_get( ). - - else. - - mv_check_popover = abap_false. - - DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ). - - lo_popup->popover( placement = `Bottom` title = 'abap2UI5 - Layout' contentwidth = `50%` - " )->input( description = `Name` value = client->_bind( mv_layout_name ) - )->button( text = `Save` press = client->_event( `BUTTON_SAVE_LAYOUT` ) -* )->table( -* mode = 'SingleSelectLeft' -* items = client->_bind( mt_db_layout ) -* )->columns( -* )->column( )->text( 'Name' )->get_parent( -* )->column( )->text( 'User' )->get_parent( -* )->column( )->text( 'Default' )->get_parent( -* " )->column( )->text( 'Description' )->get_parent( -* )->get_parent( -* )->items( )->column_list_item( selected = '{SELKZ}' -* )->cells( -* " )->checkbox( '{SELKZ}' -* )->text( '{NAME}' -* )->text( '{USER}' -* )->text( '{DEFAULT}' -* " )->text( '{DESCR}' - )->footer( )->overflow_toolbar( - )->toolbar_spacer( - )->button( - text = 'load' - press = client->_event( 'POPUP_LAYOUT_LOAD' ) - type = 'Emphasized' - )->button( - text = 'close' - press = client->_event( 'POPUP_LAYOUT_CONTINUE' ) - type = 'Emphasized' ). - - next-xml_popup = lo_popup->get_root( )->xml_get( ). - ENDIF. - - - client->set_next( next ). - - ENDMETHOD. -ENDCLASS. diff --git a/src/00/z2ui5_cl_app_demo_55.clas.xml b/src/00/z2ui5_cl_app_demo_55.clas.xml deleted file mode 100644 index e567b9c4..00000000 --- a/src/00/z2ui5_cl_app_demo_55.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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_55</CLSNAME> - <LANGU>E</LANGU> - <DESCRIPT>tab - layout</DESCRIPT> - <STATE>1</STATE> - <CLSCCINCL>X</CLSCCINCL> - <FIXPT>X</FIXPT> - <UNICODE>X</UNICODE> - </VSEOCLASS> - </asx:values> - </asx:abap> -</abapGit> diff --git a/src/00/z2ui5_cl_app_demo_01.clas.abap b/src/z2ui5_cl_app_hello_world.clas.abap similarity index 58% rename from src/00/z2ui5_cl_app_demo_01.clas.abap rename to src/z2ui5_cl_app_hello_world.clas.abap index cac667a4..18bdbf3f 100644 --- a/src/00/z2ui5_cl_app_demo_01.clas.abap +++ b/src/z2ui5_cl_app_hello_world.clas.abap @@ -1,4 +1,4 @@ -CLASS z2ui5_cl_app_demo_01 DEFINITION PUBLIC. +CLASS z2ui5_cl_app_hello_world DEFINITION PUBLIC. PUBLIC SECTION. @@ -14,7 +14,7 @@ ENDCLASS. -CLASS Z2UI5_CL_APP_DEMO_01 IMPLEMENTATION. +CLASS Z2UI5_CL_APP_HELLO_WORLD IMPLEMENTATION. METHOD z2ui5_if_app~main. @@ -28,25 +28,14 @@ CLASS Z2UI5_CL_APP_DEMO_01 IMPLEMENTATION. CASE client->get( )-event. WHEN 'BUTTON_POST'. client->popup_message_toast( |{ product } { quantity } - send to the server| ). - WHEN 'BACK'. - client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ). ENDCASE. client->set_next( VALUE #( xml_main = Z2UI5_CL_XML_VIEW=>factory( )->shell( - )->page( - title = 'abap2UI5 - First Example' - navbuttonpress = client->_event( 'BACK' ) - shownavbutton = abap_true - )->header_content( - )->link( - text = 'Source_Code' - href = Z2UI5_CL_XML_VIEW=>hlp_get_source_code_url( app = me get = client->get( ) ) - target = '_blank' - )->get_parent( - )->simple_form( title = 'Form Title' editable = abap_true - )->content( 'form' - )->title( 'Input' + )->page( title = 'abap2UI5 - z2ui5_cl_app_hello_world' + )->simple_form( title = 'Hello World' editable = abap_true + )->content( ns = `form` + )->title( 'Make an input here and send it to the server...' )->label( 'quantity' )->input( value = client->_bind( quantity ) )->label( 'product' diff --git a/src/00/z2ui5_cl_app_demo_03.clas.xml b/src/z2ui5_cl_app_hello_world.clas.xml similarity index 79% rename from src/00/z2ui5_cl_app_demo_03.clas.xml rename to src/z2ui5_cl_app_hello_world.clas.xml index 43918d62..cae09c60 100644 --- a/src/00/z2ui5_cl_app_demo_03.clas.xml +++ b/src/z2ui5_cl_app_hello_world.clas.xml @@ -3,9 +3,9 @@ <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> <asx:values> <VSEOCLASS> - <CLSNAME>Z2UI5_CL_APP_DEMO_03</CLSNAME> + <CLSNAME>Z2UI5_CL_APP_HELLO_WORLD</CLSNAME> <LANGU>E</LANGU> - <DESCRIPT>tab - list</DESCRIPT> + <DESCRIPT>abap2UI5 - hello world demo</DESCRIPT> <STATE>1</STATE> <CLSCCINCL>X</CLSCCINCL> <FIXPT>X</FIXPT> diff --git a/src/z2ui5_cl_http_handler.clas.abap b/src/z2ui5_cl_http_handler.clas.abap index 62b4d1a0..89f62470 100644 --- a/src/z2ui5_cl_http_handler.clas.abap +++ b/src/z2ui5_cl_http_handler.clas.abap @@ -38,39 +38,6 @@ ENDCLASS. CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. - METHOD http_post. - - DATA(lo_handler) = z2ui5_lcl_fw_handler=>request_begin( ). - - DO. - TRY. - ROLLBACK WORK. - CAST z2ui5_if_app( lo_handler->ms_db-o_app )->main( NEW z2ui5_lcl_fw_client( lo_handler ) ). - ROLLBACK WORK. - - IF lo_handler->ms_next-check_app_leave IS NOT INITIAL. - lo_handler = lo_handler->set_app_leave( ). - CONTINUE. - ENDIF. - - IF lo_handler->ms_next-o_call_app IS NOT INITIAL. - lo_handler = lo_handler->set_app_call( ). - CONTINUE. - ENDIF. - - result = lo_handler->request_end( ). - - CATCH cx_root INTO DATA(x). - lo_handler = lo_handler->set_app_system( x ). - CONTINUE. - ENDTRY. - - EXIT. - ENDDO. - - ENDMETHOD. - - METHOD http_get. DATA(lt_Config) = t_config. @@ -140,7 +107,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` }` && |\n| && ` },` && |\n| && |\n| && - ` onEvent: function (oEvent, vData, isHoldView) {` && |\n| && + ` onEvent: function (oEvent, isHoldView, vData , vData2 , vData3 ) {` && |\n| && |\n| && ` if (!window.navigator.onLine) {` && |\n| && ` sap.m.MessageBox.alert('No internet connection! Please reconnect to the server and try again.');` && |\n| && @@ -174,6 +141,8 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` this.oBody.ID = sap.z2ui5.oResponse.ID;` && |\n| && ` this.oBody.oEvent = oEvent;` && |\n| && ` this.oBody.oEvent.vData = vData;` && |\n| && + ` this.oBody.oEvent.vData2 = vData2;` && |\n| && + ` this.oBody.oEvent.vData3 = vData3;` && |\n| && |\n| && ` if (sap.z2ui5.checkLogActive) {` && |\n| && ` console.log('Request Object:');` && |\n| && @@ -206,7 +175,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. ` console.log(sap.z2ui5.oResponse);` && |\n| && ` if (sap.z2ui5.oResponse.PARAMS.XML_VIEW !== '' ) {` && |\n| && ` console.log('UI5-XML-View:');` && |\n| && - ` console.log(sap.z2ui5.oResponse.PARAMS.XML_VIEW);` && |\n| && + ` console.log(sap.z2ui5.oResponse.PARAMS.XML_MAIN);` && |\n| && ` }` && |\n| && ` if (sap.z2ui5.oResponse.PARAMS.XML_POPUP !== '' ) {` && |\n| && ` console.log('UI5-XML-Popup:');` && |\n| && @@ -320,4 +289,37 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION. `</html>`. ENDMETHOD. + + + METHOD http_post. + + DATA(lo_handler) = z2ui5_lcl_fw_handler=>request_begin( ). + + DO. + TRY. + ROLLBACK WORK. + CAST z2ui5_if_app( lo_handler->ms_db-o_app )->main( NEW z2ui5_lcl_fw_client( lo_handler ) ). + ROLLBACK WORK. + + IF lo_handler->ms_next-check_app_leave IS NOT INITIAL. + lo_handler = lo_handler->set_app_leave( ). + CONTINUE. + ENDIF. + + IF lo_handler->ms_next-o_call_app IS NOT INITIAL. + lo_handler = lo_handler->set_app_call( ). + CONTINUE. + ENDIF. + + result = lo_handler->request_end( ). + + CATCH cx_root INTO DATA(x). + lo_handler = lo_handler->set_app_system( x ). + CONTINUE. + ENDTRY. + + EXIT. + ENDDO. + + ENDMETHOD. ENDCLASS. diff --git a/src/z2ui5_cl_http_handler.clas.locals_imp.abap b/src/z2ui5_cl_http_handler.clas.locals_imp.abap index b56a6dfb..abc6d6e7 100644 --- a/src/z2ui5_cl_http_handler.clas.locals_imp.abap +++ b/src/z2ui5_cl_http_handler.clas.locals_imp.abap @@ -118,17 +118,19 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check. RETURNING VALUE(result) TYPE string. - PROTECTED SECTION. - - CLASS-DATA mv_counter TYPE i. - - CLASS-METHODS _get_t_attri + CLASS-METHODS _get_t_attri_by_struc IMPORTING io_app TYPE REF TO object iv_attri TYPE csequence RETURNING VALUE(result) TYPE abap_attrdescr_tab. + + PROTECTED SECTION. + + CLASS-DATA mv_counter TYPE i. + + PRIVATE SECTION. ENDCLASS. @@ -276,7 +278,7 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION. DELETE lt_attri INDEX sy-tabix. - INSERT LINES OF _get_t_attri( + INSERT LINES OF _get_t_attri_by_struc( io_app = io_app iv_attri = ls_attri-name ) INTO TABLE lt_attri. @@ -302,7 +304,7 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION. ENDMETHOD. - METHOD _get_t_attri. + METHOD _get_t_attri_by_struc. CONSTANTS c_prefix TYPE string VALUE `IO_APP->`. FIELD-SYMBOLS <attribute> TYPE any. @@ -319,7 +321,7 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION. DATA(lv_element) = iv_attri && `-` && lr_comp->name. IF lr_comp->as_include = abap_true. - INSERT LINES OF _get_t_attri( io_app = io_app + INSERT LINES OF _get_t_attri_by_struc( io_app = io_app iv_attri = lv_element ) INTO TABLE result. ELSE. @@ -947,6 +949,7 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION. ms_home-btn_event_id = `BUTTON_CHECK`. ms_home-class_editable = abap_true. ms_home-btn_icon = `sap-icon://validate`. + ms_home-classname = `z2ui5_cl_app_hello_world`. ELSE. mv_view_name = 'ERROR'. ENDIF. @@ -1053,16 +1056,19 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION. RETURN. ENDIF. - DATA(lv_url) = to_lower( z2ui5_cl_http_handler=>client-t_header[ name = `referer` ]-value ). - DATA(lv_path_info) = to_lower( z2ui5_cl_http_handler=>client-t_header[ name = `~path_info` ]-value ). - REPLACE lv_path_info IN lv_url WITH ``. - SPLIT lv_url AT '?' INTO lv_url DATA(lv_params). + TRY. + DATA(lv_url) = to_lower( z2ui5_cl_http_handler=>client-t_header[ name = `referer` ]-value ). + DATA(lv_path_info) = to_lower( z2ui5_cl_http_handler=>client-t_header[ name = `~path_info` ]-value ). + REPLACE lv_path_info IN lv_url WITH ``. + SPLIT lv_url AT '?' INTO lv_url DATA(lv_params). - SHIFT lv_url RIGHT DELETING TRAILING `/`. - DATA(lv_link) = lv_url && `/` && to_lower( ms_home-classname ). - IF lv_params IS NOT INITIAL. - lv_link = lv_link && `?` && lv_params. - ENDIF. + SHIFT lv_url RIGHT DELETING TRAILING `/`. + DATA(lv_link) = lv_url && `/` && to_lower( ms_home-classname ). + IF lv_params IS NOT INITIAL. + lv_link = lv_link && `?` && lv_params. + ENDIF. + CATCH cx_root. + ENDTRY. DATA(lv_xml_main) = `<mvc:View controllerName="z2ui5_controller" displayBlock="true" height="100%" xmlns:core="sap.ui.core" xmlns:l="sap.ui.layout" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:f="sap.ui.layout.form" xmlns:mvc="sap.ui.core.mvc` && `" xmlns:editor="sap.ui.codeeditor" xmlns:ui="sap.ui.table" xmlns="sap.m" xmlns:uxap="sap.uxap" xmlns:mchart="sap.suite.ui.microchart" xmlns:z2ui5="z2ui5" xmlns:webc="sap.ui.webc.main" xmlns:text="sap.ui.richtexteditor" > <Shell> <Page ` && |\n| && @@ -1085,33 +1091,37 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION. ` text="GitHub" ` && |\n| && ` target="_blank" ` && |\n| && ` href="https://github.com/oblomov-dev/abap2ui5" ` && |\n| && - ` /></headerContent> <l:Grid ` && |\n| && - ` defaultSpan="XL7 L7 M12 S12" ` && |\n| && - ` > <l:content ` && |\n| && - ` > <f:SimpleForm ` && |\n| && - ` title="Quick Start" ` && |\n| && - ` layout="ResponsiveGridLayout" ` && |\n| && - ` editable="true" ` && |\n| && - ` > <f:content ` && |\n| && - ` > <Label ` && |\n| && - ` text="Step 1" ` && |\n| && - ` /> <Text ` && |\n| && - ` text="Create a global class in your abap system" ` && |\n| && - ` /> <Label ` && |\n| && - ` text="Step 2" ` && |\n| && - ` /> <Text ` && |\n| && - ` text="Add the interface: Z2UI5_IF_APP" ` && |\n| && - ` /> <Label ` && |\n| && - ` text="Step 3" ` && |\n| && - ` /> <Text ` && |\n| && - ` text="Define view, implement behaviour" ` && |\n| && - ` /> <Link ` && |\n| && - ` text="(Example)" ` && |\n| && - ` target="_blank" ` && |\n| && - ` href="https://github.com/oblomov-dev/ABAP2UI5/blob/main/src/00/z2ui5_cl_app_demo_01.clas.abap" ` && |\n| && - ` /> <Label ` && |\n| && - ` text="Step 4" ` && |\n| && - ` /> `. + ` /></headerContent>`. + + + + lv_xml_main = lv_xml_main && ` <l:Grid ` && |\n| && + ` defaultSpan="XL7 L7 M12 S12" ` && |\n| && + ` > <l:content ` && |\n| && + ` > <f:SimpleForm ` && |\n| && + ` title="Quick Start" ` && |\n| && + ` layout="ResponsiveGridLayout" ` && |\n| && + ` editable="true" ` && |\n| && + ` > <f:content ` && |\n| && + ` > <Label ` && |\n| && + ` text="Step 1" ` && |\n| && + ` /> <Text ` && |\n| && + ` text="Create a global class in your abap system" ` && |\n| && + ` /> <Label ` && |\n| && + ` text="Step 2" ` && |\n| && + ` /> <Text ` && |\n| && + ` text="Add the interface: Z2UI5_IF_APP" ` && |\n| && + ` /> <Label ` && |\n| && + ` text="Step 3" ` && |\n| && + ` /> <Text ` && |\n| && + ` text="Define view, implement behaviour" ` && |\n| && + ` /> <Link ` && |\n| && + ` text="(Example)" ` && |\n| && + ` target="_blank" ` && |\n| && + ` href="https://github.com/oblomov-dev/ABAP2UI5/blob/main/src/z2ui5_cl_app_hello_world.clas.abap" ` && |\n| && + ` /> <Label ` && |\n| && + ` text="Step 4" ` && |\n| && + ` /> `. IF ms_home-class_editable = abap_true. lv_xml_main = lv_xml_main && `<Input ` && |\n| && @@ -1125,6 +1135,7 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION. ENDIF. + lv_xml_main = lv_xml_main && `<Button ` && |\n| && ` press="` && client->_event( ms_home-btn_event_id ) && `" ` && |\n| && ` text="` && ms_home-btn_text && `" ` && |\n| && @@ -1136,14 +1147,33 @@ CLASS z2ui5_lcl_fw_app IMPLEMENTATION. ` target="_blank" ` && |\n| && ` href="` && escape( val = lv_link format = cl_abap_format=>e_xml_attr ) && `" ` && |\n| && ` enabled="` && z2ui5_lcl_utility=>get_json_boolean( xsdbool( ms_home-class_editable = abap_false ) ) && `" ` && |\n| && - ` /></f:content></f:SimpleForm> <f:SimpleForm ` && |\n| && - ` title="Demo Section" ` && |\n| && - ` layout="ResponsiveGridLayout" ` && |\n| && - ` > <f:content ` && |\n| && - ` > <Button ` && |\n| && - ` press="` && client->_event( `DEMOS` ) && `" ` && |\n| && - ` text="Continue..." ` && |\n| && - ` /></f:content></f:SimpleForm></l:content></l:Grid></Page></Shell></mvc:View>`. + ` /></f:content></f:SimpleForm>`. + + + + lv_xml_main = lv_xml_main && `<f:SimpleForm ` && |\n| && + ` title="Demo Section" ` && |\n| && + ` layout="ResponsiveGridLayout" ` && |\n| && + ` >`. + + DATA li_app TYPE REF TO z2ui5_if_app. + TRY. + CREATE OBJECT li_app TYPE (`Z2UI5_CL_APP_DEMO_00`). + DATA(lv_check_demo) = abap_true. + CATCH cx_root. + lv_check_demo = abap_false. + ENDTRY. + IF lv_check_demo = abap_false. + lv_xml_main = lv_xml_main && `<MessageStrip text="The abap2UI5 demos aren't ready! Make sure to install this additional demo repository." type="Warning" > <link> ` && + ` <Link text="(LINK)" target="_blank" href="https://github.com/oblomov-dev/abap2UI5-demos" /> ` && + ` </link> </MessageStrip>`. + ENDIF. + + lv_xml_main = lv_xml_main && ` <f:content ` && |\n| && + ` > <Label/><Button ` && |\n| && + ` press="` && client->_event( `DEMOS` ) && `" ` && |\n| && + ` text="Continue..." enabled="` && COND #( WHEN lv_check_demo = abap_true THEN `true` ELSE `false` ) && |" \n| && + ` /></f:content></f:SimpleForm></l:content></l:Grid></Page></Shell></mvc:View>`. client->set_next( VALUE #( xml_main = lv_xml_main ) ). @@ -1253,7 +1283,6 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. mo_body = z2ui5_lcl_utility_tree_json=>factory( z2ui5_cl_http_handler=>client-body ). TRY. -* DATA(lv_id_prev) = mo_body->get_attribute( `OSYSTEM` )->get_attribute( `ID` )->get_val( ). DATA(lv_id_prev) = mo_body->get_attribute( `ID` )->get_val( ). CATCH cx_root. result = set_app_start( ). @@ -1366,6 +1395,8 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. TRY. result->ms_actual-event = mo_body->get_attribute( `OEVENT` )->get_attribute( `EVENT` )->get_val( ). result->ms_actual-event_data = mo_body->get_attribute( `OEVENT` )->get_attribute( `vData` )->get_val( ). + result->ms_actual-event_data2 = mo_body->get_attribute( `OEVENT` )->get_attribute( `vData2` )->get_val( ). + result->ms_actual-event_data3 = mo_body->get_attribute( `OEVENT` )->get_attribute( `vData3` )->get_val( ). CATCH cx_root. ENDTRY. @@ -1382,8 +1413,6 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. METHOD set_app_start. - DATA lo_object TYPE REF TO object. - result = NEW #( ). result->ms_db-id = z2ui5_lcl_utility=>get_uuid( ). @@ -1396,13 +1425,19 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION. DATA(lv_classname) = z2ui5_lcl_utility=>get_trim_upper( lv_path_info ). SHIFT lv_classname LEFT DELETING LEADING `/`. - IF lv_Classname IS INITIAL. + IF lv_classname IS INITIAL. result = result->set_app_system( ). RETURN. ENDIF. TRY. - CREATE OBJECT result->ms_db-o_app TYPE (lv_classname). + + TRY. + CREATE OBJECT result->ms_db-o_app TYPE (lv_classname). + CATCH cx_root. + SPLIT lv_classname AT `/` INTO lv_classname lv_dummy. + CREATE OBJECT result->ms_db-o_app TYPE (lv_classname). + ENDTRY. result->ms_db-o_app->id = result->ms_db-id. result->ms_db-t_attri = z2ui5_lcl_utility=>get_t_attri_by_ref( result->ms_db-o_app ). RETURN. @@ -1676,6 +1711,8 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION. result = VALUE #( BASE CORRESPONDING #( mo_handler->ms_db ) event = mo_handler->ms_actual-event event_data = mo_handler->ms_actual-event_data + event_data2 = mo_handler->ms_actual-event_data2 + event_data3 = mo_handler->ms_actual-event_data3 t_scroll_pos = mo_handler->ms_actual-t_scroll_pos t_req_header = z2ui5_cl_http_handler=>client-t_header t_req_param = z2ui5_cl_http_handler=>client-t_param @@ -1719,19 +1756,26 @@ CLASS z2ui5_lcl_fw_client IMPLEMENTATION. METHOD z2ui5_if_client~_event. - " IF data IS INITIAL. - " result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } )`. - " ELSE. - IF data IS INITIAL. DATA(lv_data) = `''`. ELSE. lv_data = data. ENDIF. - result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } , ` && lv_data && ` , ` - && z2ui5_lcl_utility=>get_json_boolean( hold_view ) && ` )`. - " ENDIF. + IF data2 IS INITIAL. + DATA(lv_data2) = `''`. + ELSE. + lv_data2 = data2. + ENDIF. + + IF data3 IS INITIAL. + DATA(lv_data3) = `''`. + ELSE. + lv_data3 = data3. + ENDIF. + + result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' } , ` && z2ui5_lcl_utility=>get_json_boolean( hold_view ) + && ` , ` && lv_data && ` , ` && lv_data2 && ` , ` && lv_data3 && ` )`. ENDMETHOD. diff --git a/src/z2ui5_cl_http_handler.clas.testclasses.abap b/src/z2ui5_cl_http_handler.clas.testclasses.abap index eeaea8a3..990c3328 100644 --- a/src/z2ui5_cl_http_handler.clas.testclasses.abap +++ b/src/z2ui5_cl_http_handler.clas.testclasses.abap @@ -10,10 +10,27 @@ CLASS ltcl_unit_01_json DEFINITION FINAL FOR TESTING METHODS test_json_struc FOR TESTING RAISING cx_static_check. METHODS test_json_trans FOR TESTING RAISING cx_static_check. METHODS test_json_trans_gen FOR TESTING RAISING cx_static_check. - METHODS test_util_uuid_session FOR TESTING RAISING cx_static_check. - METHODS test_util_attri_by_ref FOR TESTING RAISING cx_static_check. ENDCLASS. +CLASS ltcl_unit_01_utility DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PUBLIC SECTION. + + PRIVATE SECTION. + + METHODS test_util_uuid_session FOR TESTING RAISING cx_static_check. + METHODS test_util_04_attri_by_ref FOR TESTING RAISING cx_static_check. + METHODS test_util_01_get_t_attri FOR TESTING RAISING cx_static_check. + METHODS test_util_03_get_t_attri_struc FOR TESTING RAISING cx_static_check. + METHODS test_util_02_get_attri FOR TESTING RAISING cx_static_check. +ENDCLASS. + + + + + CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. @@ -41,7 +58,6 @@ CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING PRIVATE SECTION. METHODS test_app_deep_data FOR TESTING RAISING cx_static_check. METHODS test_app_deep_data_change FOR TESTING RAISING cx_static_check. - METHODS test_app_all FOR TESTING RAISING cx_static_check. ENDCLASS. @@ -169,22 +185,28 @@ CLASS ltcl_unit_01_json IMPLEMENTATION. ENDMETHOD. - METHOD test_util_attri_by_ref. - DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). +ENDCLASS. - DATA(lt_attri) = z2ui5_lcl_utility=>get_t_attri_by_ref( lo_app ). +CLASS ltcl_unit_01_utility IMPLEMENTATION. - DATA(lt_test) = VALUE z2ui5_lcl_utility=>ty_t_attri( -( name = `Z2UI5_IF_APP~ID` type_kind = `g` type = `STRING` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) -( name = `CHECK_INITIALIZED` type_kind = `C` type = `ABAP_BOOL` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) -( name = `SV_STATUS` type_kind = `g` type = `STRING` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) -( name = `T_TAB` type_kind = `h` type = `` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) - ). - IF lt_test <> lt_attri. - cl_abap_unit_assert=>fail( msg = 'utility - get t_attri table wrong' quit = 5 ). - ENDIF. + METHOD test_util_04_attri_by_ref. + +* DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). +* +* DATA(lt_attri) = z2ui5_lcl_utility=>get_t_attri_by_ref( lo_app ). +* +* DATA(lt_test) = VALUE z2ui5_lcl_utility=>ty_t_attri( +*( name = `Z2UI5_IF_APP~ID` type_kind = `g` type = `STRING` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) +*( name = `CHECK_INITIALIZED` type_kind = `C` type = `ABAP_BOOL` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) +*( name = `SV_STATUS` type_kind = `g` type = `STRING` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) +*( name = `T_TAB` type_kind = `h` type = `` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` ) +* ). +* +* IF lt_test <> lt_attri. +* cl_abap_unit_assert=>fail( msg = 'utility - get t_attri table wrong' quit = 5 ). +* ENDIF. ENDMETHOD. @@ -204,6 +226,48 @@ CLASS ltcl_unit_01_json IMPLEMENTATION. ENDMETHOD. + METHOD test_util_02_get_attri. + + DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). + + lo_app->sv_status = `ABC`. + FIELD-SYMBOLS <any> TYPE any. + DATA(lv_assign) = `LO_APP->` && 'SV_STATUS'. + ASSIGN (lv_assign) TO <any>. + + IF <any> <> `ABC`. + cl_abap_unit_assert=>fail( msg = 'utility - assign of attribute from outside not working' quit = 5 ). + ENDIF. + + ENDMETHOD. + + METHOD test_util_01_get_t_attri. + + DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). + + DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( lo_app ) )->attributes. + + DATA(lt_test) = VALUE abap_attrdescr_tab( + ( length = '8' decimals = '0' name = 'Z2UI5_IF_APP~ID' type_kind = 'g' visibility = 'U' is_interface = 'X' is_inherited = '' is_class = '' is_constant = '' is_virtual = '' is_read_only = '' alias_for = '' ) + ( length = '2' decimals = '0' name = 'CHECK_INITIALIZED' type_kind = 'C' visibility = 'U' is_interface = '' is_inherited = '' is_class = '' is_constant = '' is_virtual = '' is_read_only = '' alias_for = '' ) + ( length = '8' decimals = '0' name = 'SV_STATUS' type_kind = 'g' visibility = 'U' is_interface = '' is_inherited = '' is_class = 'X' is_constant = '' is_virtual = '' is_read_only = '' alias_for = '' ) + ( length = '8' decimals = '0' name = 'T_TAB' type_kind = 'h' visibility = 'U' is_interface = '' is_inherited = '' is_class = 'X' is_constant = '' is_virtual = '' is_read_only = '' alias_for = '' ) + ). + + IF lt_test <> lt_attri. + cl_abap_unit_assert=>fail( msg = 'utility - get abap_attrdescr_tab table wrong' quit = 5 ). + ENDIF. + + ENDMETHOD. + + METHOD test_util_03_get_t_attri_struc. + +* DATA(lo_app) = NEW ltcl_unit_04_deep_data( ). +* +* lcl_utility=>_get_t_attri_by_struc + + ENDMETHOD. + ENDCLASS. CLASS ltcl_unit_02_app_start DEFINITION FINAL FOR TESTING @@ -232,6 +296,7 @@ CLASS ltcl_unit_02_app_start DEFINITION FINAL FOR TESTING METHODS test_landing_page FOR TESTING RAISING cx_static_check. METHODS test_scroll_cursor FOR TESTING RAISING cx_static_check. METHODS test_navigate FOR TESTING RAISING cx_static_check. + METHODS test_startup_path FOR TESTING RAISING cx_static_check. ENDCLASS. @@ -397,7 +462,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_xml_view. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = ``. @@ -412,7 +477,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `VVIEW->*`. + DATA(lv_assign) = `PARAMS->XML_MAIN->*`. ASSIGN lo_data->(lv_assign) TO <val>. <val> = shift_left( <val> ). IF <val>(9) <> `<mvc:View`. @@ -424,7 +489,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_id. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = ``. @@ -439,7 +504,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OSYSTEM->ID->*`. + DATA(lv_assign) = `ID->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> IS INITIAL. cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). @@ -450,7 +515,8 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_bind_one_way. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) + " t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_ONE_WAY`. @@ -465,7 +531,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OVIEWMODEL->QUANTITY->*`. + DATA(lv_assign) = `OVIEWMODEL->OVIEWMODEL->QUANTITY->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `500`. cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ). @@ -476,7 +542,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_bind_two_way. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = ``. @@ -491,7 +557,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OVIEWMODEL->OUPDATE->QUANTITY->*`. + DATA(lv_assign) = `OVIEWMODEL->OVIEWMODEL->OUPDATE->QUANTITY->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `500`. cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong' quit = 5 ). @@ -502,7 +568,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_message_box. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_MESSAGE_BOX`. @@ -518,21 +584,21 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OMESSAGE->CONTROL->*`. + DATA(lv_assign) = `S_MSG->CONTROL->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `MessageBox`. cl_abap_unit_assert=>fail( msg = 'message box - control wrong' quit = 5 ). ENDIF. UNASSIGN <val>. - lv_assign = `OMESSAGE->TEXT->*`. + lv_assign = `S_MSG->TEXT->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `test message box`. cl_abap_unit_assert=>fail( msg = 'message box - text wrong' quit = 5 ). ENDIF. UNASSIGN <val>. - lv_assign = `OMESSAGE->TYPE->*`. + lv_assign = `S_MSG->TYPE->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `information`. cl_abap_unit_assert=>fail( msg = 'message box - type wrong' quit = 5 ). @@ -543,7 +609,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_message_toast. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_MESSAGE_TOAST`. @@ -559,21 +625,21 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OMESSAGE->CONTROL->*`. + DATA(lv_assign) = `S_MSG->CONTROL->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `MessageToast`. cl_abap_unit_assert=>fail( msg = 'message toast - control wrong' quit = 5 ). ENDIF. UNASSIGN <val>. - lv_assign = `OMESSAGE->TEXT->*`. + lv_assign = `S_MSG->TEXT->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `test message toast`. cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ). ENDIF. UNASSIGN <val>. - lv_assign = `OMESSAGE->TYPE->*`. + lv_assign = `S_MSG->TYPE->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `show`. cl_abap_unit_assert=>fail( msg = 'message toast - type wrong' quit = 5 ). @@ -584,7 +650,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_timer. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_TIMER`. @@ -600,14 +666,14 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OTIMER->EVENT_FINISHED->*`. + DATA(lv_assign) = `PARAMS->S_TIMER->EVENT_FINISHED->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `TIMER_FINISHED`. cl_abap_unit_assert=>fail( msg = 'timer - event wrong' quit = 5 ). ENDIF. UNASSIGN <val>. - lv_assign = `OTIMER->INTERVAL_MS->*`. + lv_assign = `PARAMS->S_TIMER->INTERVAL_MS->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `500`. cl_abap_unit_assert=>fail( msg = 'timer - ms wrong' quit = 5 ). @@ -618,7 +684,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_xml_popup. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_POPUP`. @@ -633,7 +699,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `VVIEWPOPUP->*`. + DATA(lv_assign) = `PARAMS->XML_POPUP->*`. ASSIGN lo_data->(lv_assign) TO <val>. <val> = shift_left( <val> ). IF <val>(9) <> `<mvc:View`. @@ -646,7 +712,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. z2ui5_cl_http_handler=>client = VALUE #( t_header = VALUE #( ( name = 'referer' value = 'dummy' ) ) - ). + ). DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). @@ -659,7 +725,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `VVIEW->*`. + DATA(lv_assign) = `PARAMS->XML_MAIN->*`. ASSIGN lo_data->(lv_assign) TO <val>. <val> = shift_left( <val> ). IF <val> NS `Step 4`. @@ -671,7 +737,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. METHOD test_scroll_cursor. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_SCROLL_CURSOR`. @@ -709,10 +775,30 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION. ENDMETHOD. + METHOD test_startup_path. + + z2ui5_cl_http_handler=>client = VALUE #( + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) + ). + + sv_state = `TEST_NAVIGATE`. + DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). + + DATA lo_data TYPE REF TO data. + /ui2/cl_json=>deserialize( + EXPORTING + json = lv_response + CHANGING + data = lo_data ). + + " FIELD-SYMBOLS <val> TYPE any. + + ENDMETHOD. + METHOD test_navigate. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). sv_state = `TEST_NAVIGATE`. @@ -796,7 +882,7 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. METHOD test_app_change_value. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). @@ -811,14 +897,14 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OSYSTEM->ID->*`. + DATA(lv_assign) = `ID->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> IS INITIAL. cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). ENDIF. DATA(lv_id) = CONV string( <val> ). - DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600"},"oSystem":{"ID": "` && lv_id && `"` && `,"CHECK_DEBUG_ACTIVE":true},"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. + DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ). lv_response = z2ui5_cl_http_handler=>http_post( ). @@ -830,7 +916,7 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. data = lo_data ). UNASSIGN <val>. - lv_assign = `OVIEWMODEL->OUPDATE->QUANTITY->*`. + lv_assign = `OVIEWMODEL->OVIEWMODEL->OUPDATE->QUANTITY->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `600`. cl_abap_unit_assert=>fail( msg = 'data binding - frontend updated value wrong after roundtrip' quit = 5 ). @@ -841,7 +927,7 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. METHOD test_app_event. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_02_APP_START' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_02_APP_START' ) ) ). DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). @@ -856,14 +942,14 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `OSYSTEM->ID->*`. + DATA(lv_assign) = `ID->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> IS INITIAL. cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). ENDIF. DATA(lv_id) = CONV string( <val> ). - DATA(lv_request) = `{"oUpdate":{"QUANTITY":"700"},"oSystem":{"ID": "` && lv_id && `"},"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. + DATA(lv_request) = `{"oUpdate":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"oEvent":{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}}`. z2ui5_cl_http_handler=>client = VALUE #( body = lv_request ). lv_response = z2ui5_cl_http_handler=>http_post( ). @@ -875,7 +961,7 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. data = lo_data ). UNASSIGN <val>. - lv_assign = `OMESSAGE->TEXT->*`. + lv_assign = `S_MSG->TEXT->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> <> `tomato 700 - send to the server`. cl_abap_unit_assert=>fail( msg = 'message toast - text wrong' quit = 5 ). @@ -886,7 +972,7 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. METHOD test_app_dump. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_03_APP_AJAX' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_03_APP_AJAX' ) ) ). sv_state = `ERROR`. @@ -901,7 +987,7 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION. FIELD-SYMBOLS <val> TYPE any. UNASSIGN <val>. - DATA(lv_assign) = `VVIEW->*`. + DATA(lv_assign) = `PARAMS->XML_MAIN->*`. ASSIGN lo_data->(lv_assign) TO <val>. <val> = shift_left( <val> ). IF <val> NS `MessagePage`. @@ -977,7 +1063,7 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION. METHOD test_app_deep_data. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_04_DEEP_DATA' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_04_DEEP_DATA' ) ) ). DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). @@ -994,7 +1080,7 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION. UNASSIGN <val>. FIELD-SYMBOLS <tab> TYPE STANDARD TABLE. FIELD-SYMBOLS <row> TYPE REF TO data. - DATA(lv_assign) = `OVIEWMODEL->OUPDATE->T_TAB->*`. + DATA(lv_assign) = `OVIEWMODEL->OVIEWMODEL->T_TAB->*`. ASSIGN lo_data->(lv_assign) TO <tab>. ASSIGN <tab>[ 1 ] TO <row>. @@ -1024,7 +1110,7 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION. METHOD test_app_deep_data_change. z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = 'LTCL_UNIT_04_DEEP_DATA' ) ) + t_header = VALUE #( ( name = '~path_info' value = 'LTCL_UNIT_04_DEEP_DATA' ) ) ). sv_status = 'CHANGE'. @@ -1042,7 +1128,7 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION. UNASSIGN <val>. FIELD-SYMBOLS <tab> TYPE STANDARD TABLE. FIELD-SYMBOLS <row> TYPE REF TO data. - DATA(lv_assign) = `OVIEWMODEL->OUPDATE->T_TAB->*`. + DATA(lv_assign) = `OVIEWMODEL->OVIEWMODEL->OUPDATE->T_TAB->*`. ASSIGN lo_data->(lv_assign) TO <tab>. ASSIGN <tab>[ 1 ] TO <row>. @@ -1068,7 +1154,7 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION. ENDIF. UNASSIGN <val>. - lv_assign = `OSYSTEM->ID->*`. + lv_assign = `ID->*`. ASSIGN lo_data->(lv_assign) TO <val>. IF <val> IS INITIAL. cl_abap_unit_assert=>fail( msg = 'id - initial value is initial' quit = 5 ). @@ -1090,43 +1176,4 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION. ENDMETHOD. - METHOD test_app_all. - - DO 40 TIMES. - - DATA(Lv_ind) = shift_left( CONV string( sy-index ) ). - IF sy-index < 10. - Lv_ind = `0` && Lv_ind. - ENDIF. - DATA(lv_name) = `Z2UI5_CL_APP_DEMO_` && lv_ind. - - z2ui5_cl_http_handler=>client = VALUE #( - t_param = VALUE #( ( name = 'app' value = lv_name ) ) - ). - - sv_status = 'CHANGE'. - DATA(lv_response) = z2ui5_cl_http_handler=>http_post( ). - - DATA lo_data TYPE REF TO data. - /ui2/cl_json=>deserialize( - EXPORTING - json = lv_response - CHANGING - data = lo_data ). - - FIELD-SYMBOLS <val> TYPE any. - UNASSIGN <val>. - DATA(lv_assign) = `VVIEW->*`. - ASSIGN lo_data->(lv_assign) TO <val>. - <val> = shift_left( <val> ). - IF <val>(9) <> `<mvc:View`. - cl_abap_unit_assert=>fail( msg = 'xml view - intital view wrong' quit = 5 ). - ENDIF. - - ENDDO. - - - ENDMETHOD. - - ENDCLASS. diff --git a/src/00/z2ui5_cl_xml_view.clas.abap b/src/z2ui5_cl_xml_view.clas.abap similarity index 100% rename from src/00/z2ui5_cl_xml_view.clas.abap rename to src/z2ui5_cl_xml_view.clas.abap diff --git a/src/00/z2ui5_cl_xml_view.clas.locals_imp.abap b/src/z2ui5_cl_xml_view.clas.locals_imp.abap similarity index 100% rename from src/00/z2ui5_cl_xml_view.clas.locals_imp.abap rename to src/z2ui5_cl_xml_view.clas.locals_imp.abap diff --git a/src/00/z2ui5_cl_xml_view.clas.xml b/src/z2ui5_cl_xml_view.clas.xml similarity index 89% rename from src/00/z2ui5_cl_xml_view.clas.xml rename to src/z2ui5_cl_xml_view.clas.xml index eb1a3c60..83271c1e 100644 --- a/src/00/z2ui5_cl_xml_view.clas.xml +++ b/src/z2ui5_cl_xml_view.clas.xml @@ -5,7 +5,7 @@ <VSEOCLASS> <CLSNAME>Z2UI5_CL_XML_VIEW</CLSNAME> <LANGU>E</LANGU> - <DESCRIPT>abap2UI5 - xml view parser</DESCRIPT> + <DESCRIPT>abap2UI5 - view parser</DESCRIPT> <STATE>1</STATE> <CLSCCINCL>X</CLSCCINCL> <FIXPT>X</FIXPT> diff --git a/src/z2ui5_if_client.intf.abap b/src/z2ui5_if_client.intf.abap index 5605402e..da26e85c 100644 --- a/src/z2ui5_if_client.intf.abap +++ b/src/z2ui5_if_client.intf.abap @@ -12,6 +12,8 @@ INTERFACE z2ui5_if_client BEGIN OF ty_s_get, event TYPE string, event_data TYPE string, + event_data2 TYPE string, + event_data3 TYPE string, id TYPE string, id_prev TYPE string, id_prev_app TYPE string, @@ -93,6 +95,8 @@ INTERFACE z2ui5_if_client IMPORTING val TYPE clike data TYPE clike OPTIONAL + data2 TYPE clike OPTIONAL + data3 TYPE clike OPTIONAL hold_view TYPE abap_bool DEFAULT abap_false RETURNING VALUE(result) TYPE string.