From 17557c7e30e64d058ae75cfa87e8b89c13ca8954 Mon Sep 17 00:00:00 2001
From: oblomov <102328295+oblomov-dev@users.noreply.github.com>
Date: Wed, 25 Oct 2023 19:11:29 +0200
Subject: [PATCH] update custom controls (#600)
* external libraries organization
* update custom controls
* Update src/01/z2ui5_cl_fw_cc_bwipjs.clas.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
---------
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
---
src/01/z2ui5_cl_fw_cc_bwipjs.clas.abap | 170 ++++++++++++++++++++++++-
1 file changed, 167 insertions(+), 3 deletions(-)
diff --git a/src/01/z2ui5_cl_fw_cc_bwipjs.clas.abap b/src/01/z2ui5_cl_fw_cc_bwipjs.clas.abap
index 60010cec..6717df67 100644
--- a/src/01/z2ui5_cl_fw_cc_bwipjs.clas.abap
+++ b/src/01/z2ui5_cl_fw_cc_bwipjs.clas.abap
@@ -18,7 +18,7 @@ CLASS z2ui5_cl_fw_cc_bwipjs DEFINITION
CONSTANTS cv_src TYPE string VALUE `https://cdnjs.cloudflare.com/ajax/libs/bwip-js/4.1.1/bwip-js-min.js`.
- METHODS get_js
+ METHODS load_lib
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_xml_view.
@@ -26,6 +26,16 @@ CLASS z2ui5_cl_fw_cc_bwipjs DEFINITION
RETURNING
VALUE(result) TYPE ty_t_barcode.
+ METHODS load_cc
+ RETURNING
+ VALUE(result) TYPE REF TO z2ui5_cl_xml_view.
+
+ METHODS control
+ importing
+ bcid type clike optional
+ text type clike optional
+ RETURNING
+ VALUE(result) TYPE REF TO z2ui5_cl_xml_view.
PROTECTED SECTION.
PRIVATE SECTION.
@@ -35,9 +45,9 @@ ENDCLASS.
CLASS z2ui5_cl_fw_cc_bwipjs IMPLEMENTATION.
- METHOD get_js.
+ METHOD load_lib.
- result = mo_view->_cc_plain_xml( `` && cv_src && `` ).
+ result = mo_view->_cc_plain_xml( `` ).
ENDMETHOD.
@@ -50,4 +60,158 @@ CLASS z2ui5_cl_fw_cc_bwipjs IMPLEMENTATION.
ENDMETHOD.
+ METHOD load_cc.
+
+ DATA(js) = `debugger; jQuery.sap.declare("z2ui5.bwipjs");` && |\n| &&
+ |\n| &&
+ ` sap.ui.require([` && |\n| &&
+ ` "sap/ui/core/Control",` && |\n| &&
+ ` ], function (Control) {` && |\n| &&
+ ` "use strict";` && |\n| &&
+ |\n| &&
+ ` return Control.extend("z2ui5.bwipjs", {` && |\n| &&
+ |\n| &&
+ ` metadata: {` && |\n| &&
+ ` properties: {` && |\n| &&
+ ` bcid: {` && |\n| &&
+ ` type: "string",` && |\n| &&
+ ` defaultValue: ""` && |\n| &&
+ ` },` && |\n| &&
+ ` text: {` && |\n| &&
+ ` type: "string",` && |\n| &&
+ ` defaultValue: ""` && |\n| &&
+ ` },` && |\n| &&
+ ` scale: {` && |\n| &&
+ ` type: "string",` && |\n| &&
+ ` defaultValue: ""` && |\n| &&
+ ` },` && |\n| &&
+ ` height: {` && |\n| &&
+ ` type: "string",` && |\n| &&
+ ` defaultValue: ""` && |\n| &&
+ ` },` && |\n| &&
+ ` includetext: {` && |\n| &&
+ ` type: "string",` && |\n| &&
+ ` defaultValue: ""` && |\n| &&
+ ` },` && |\n| &&
+ ` textalign: {` && |\n| &&
+ ` type: "string",` && |\n| &&
+ ` defaultValue: ""` && |\n| &&
+ ` }` && |\n| &&
+ ` },` && |\n| &&
+ |\n| &&
+ |\n| &&
+ ` aggregations: {` && |\n| &&
+ ` },` && |\n| &&
+ ` events: {` && |\n| &&
+ ` "upload": {` && |\n| &&
+ ` allowPreventDefault: true,` && |\n| &&
+ ` parameters: {}` && |\n| &&
+ ` }` && |\n| &&
+ ` },` && |\n| &&
+ ` renderer: null` && |\n| &&
+ ` },` && |\n| &&
+ |\n| &&
+ ` renderer: function (oRm, oControl) {` && |\n| &&
+` debugger; oRm.write( "<canvas id='mycanvas' />");` && |\n| && |\n| &&
+ ` // The return value is the canvas element` && |\n| &&
+ ` setTimeout( (oControl) => { let canvas = bwipjs.toCanvas('mycanvas', {` && |\n| &&
+ ` bcid: oControl.getProperty("bcid"), // Barcode type` && |\n| &&
+ ` text: oControl.getProperty("text"), // Text to encode` && |\n| &&
+ ` scale: 3, // 3x scaling factor` && |\n| &&
+ ` height: 10, // Bar height, in millimeters` && |\n| &&
+ ` includetext: true, // Show human-readable text` && |\n| &&
+ ` textxalign: 'center', // Always good to set this` && |\n| &&
+ ` });` && |\n| &&
+ ` } , 100 , oControl ) ` && |\n| &&
+ ` debugger; return;` && |\n| &&
+ ` if (!oControl.getProperty("checkDirectUpload")) {` && |\n| &&
+ ` oControl.oUploadButton = new Button({` && |\n| &&
+ ` text: oControl.getProperty("uploadButtonText"),` && |\n| &&
+ ` enabled: oControl.getProperty("path") !== "",` && |\n| &&
+ ` press: function (oEvent) { ` && |\n| &&
+ |\n| &&
+ ` this.setProperty("path", this.oFileUploader.getProperty("value"));` && |\n| &&
+ |\n| &&
+ ` var file = sap.z2ui5.oUpload.oFileUpload.files[0];` && |\n| &&
+ ` var reader = new FileReader();` && |\n| &&
+ |\n| &&
+ ` reader.onload = function (evt) {` && |\n| &&
+ ` var vContent = evt.currentTarget.result;` && |\n| &&
+ ` this.setProperty("value", vContent);` && |\n| &&
+ ` this.fireUpload();` && |\n| &&
+ ` //this.getView().byId('picture' ).getDomRef().src = vContent;` && |\n| &&
+ ` }.bind(this)` && |\n| &&
+ |\n| &&
+ ` reader.readAsDataURL(file);` && |\n| &&
+ ` }.bind(oControl)` && |\n| &&
+ ` });` && |\n| &&
+ ` }` && |\n| &&
+ |\n| &&
+ ` oControl.oFileUploader = new FileUploader({` && |\n| &&
+ ` icon: "sap-icon://browse-folder",` && |\n| &&
+ ` iconOnly: oControl.getProperty("iconOnly"),` && |\n| &&
+ ` buttonOnly: oControl.getProperty("buttonOnly"),` && |\n| &&
+ ` buttonText: oControl.getProperty("buttonText"),` && |\n| &&
+ ` uploadOnChange: true,` && |\n| &&
+ ` value: oControl.getProperty("path"),` && |\n| &&
+ ` placeholder: oControl.getProperty("placeholder"),` && |\n| &&
+ ` change: function (oEvent) {` && |\n| &&
+ ` if (oControl.getProperty("checkDirectUpload")) {` && |\n| &&
+ ` return; ` && |\n| &&
+ ` }` && |\n| &&
+ |\n| &&
+ ` var value = oEvent.getSource().getProperty("value");` && |\n| &&
+ ` this.setProperty("path", value);` && |\n| &&
+ ` if (value) {` && |\n| &&
+ ` this.oUploadButton.setEnabled();` && |\n| &&
+ ` } else {` && |\n| &&
+ ` this.oUploadButton.setEnabled(false);` && |\n| &&
+ ` }` && |\n| &&
+ ` this.oUploadButton.rerender();` && |\n| &&
+ ` sap.z2ui5.oUpload = oEvent.oSource;` && |\n| &&
+ ` }.bind(oControl),` && |\n| &&
+ ` uploadComplete: function (oEvent) {` && |\n| &&
+ ` if (!oControl.getProperty("checkDirectUpload")) {` && |\n| &&
+ ` return; ` && |\n| &&
+ ` }` && |\n| &&
+ |\n| &&
+ ` var value = oEvent.getSource().getProperty("value");` && |\n| &&
+ ` this.setProperty("path", value);` && |\n| &&
+ |\n| &&
+ ` var file = oEvent.oSource.oFileUpload.files[0];` && |\n| &&
+ ` var reader = new FileReader();` && |\n| &&
+ |\n| &&
+ ` reader.onload = function (evt) {` && |\n| &&
+ ` var vContent = evt.currentTarget.result;` && |\n| &&
+ ` this.setProperty("value", vContent);` && |\n| &&
+ ` this.fireUpload();` && |\n| &&
+ ` }.bind(this)` && |\n| &&
+ |\n| &&
+ ` reader.readAsDataURL(file);` && |\n| &&
+ ` }.bind(oControl)` && |\n| &&
+ ` });` && |\n| &&
+ |\n| &&
+ ` var hbox = new sap.m.HBox();` && |\n| &&
+ ` hbox.addItem(oControl.oFileUploader);` && |\n| &&
+ ` hbox.addItem(oControl.oUploadButton);` && |\n| &&
+ ` oRm.renderControl(hbox);` && |\n| &&
+ ` }` && |\n| &&
+ ` });` && |\n| &&
+ ` });`.
+
+ result = mo_view->_cc_plain_xml( `` && js && `` ).
+
+ ENDMETHOD.
+
+ METHOD control.
+
+ result = mo_view.
+ mo_view->_generic( name = `bwipjs`
+ ns = `z2ui5`
+ t_prop = VALUE #( ( n = `bcid` v = bcid )
+ ( n = `text` v = text )
+ ) ).
+
+ ENDMETHOD.
+
ENDCLASS.