手机站:/m

大带宽_我与你的情服务器云平台-深似海百度云_学生机

时间:2021-09-08 13:49编辑:淘客樊里来源:淘客樊里当前位置:主页 > 云解析 >

在本博客中,我将演示如何在SAP Analytics Cloud中创建条形码扫描仪自定义小部件。

SAPUI5组件:SAP.m.Label、SAP.m.Input、SAP.m.Button,sap.ui.layout布局.表单.SimpleForm.对于条形码扫描仪,我们将使用quaggaJS的库。

让我们从创建自定义小部件JSON文件开始,条形码扫描仪.json. 在这个文件中,我添加了根对象、Webcomponent对象和properties对象的有效属性。我没有使用Methods和Events对象。

我们将实现以下Web组件JavaScript函数:

constructor()–它在Web组件初始化时激发在这个函数中,我们创建shadowdom根元素,将template元素的副本作为子元素添加到shadowdom根元素,为HTML div创建唯一的ID(guid),并设置变量\u firstConnection。构造函数(){超级();_影子根=这个。附件阴影({模式:"打开"});_shadowRoot.appendChild(tmpl.content.cloneNode克隆节点(正确));这个。_id=createGuid();_shadowRoot.querySelector("#export_div").id=这个。_id+"_export_div";这个。_firstConnection=0;}​ connectedCallback()–当小部件被添加到页面的html DOM时,它被激发在这个功能中,我们检查应用程序是否处于编辑模式,并列出可用的组件(例如,。按钮、文本、输入字段、面板等)(此.metadata)组件"]以备将来使用。connectedCallback(){试试看{如果(窗口.commonApp) {让outlineContainer=通用应用程序.getShell().findElements(true,ele=>电气类&& 电气类("sapAppBuildingOutline"))[0];//sId:"\uu container0"如果(大纲内容&&outlineContainer.getReactProps) {让parseReactState=状态=>{让组件={};设全局状态=state.globalState状态;让实例=globalState.instances实例;让应用程序=实例.app[{\"app\":\"MAIN\u APPLICATION\"}]];让名称=应用程序名称;for(输入姓名){让name=names[key];设对象=JSON.parse文件(键).pop();let类型=对象.键(目标)[0];设id=obj[type];组件[id]={类型:类型,姓名:姓名};}for(让components中的componentId){让component=components[componentId];}让元数据=JSON.stringify文件({组件:组件,变量:应用程序globalVars});如果(元数据!= 此.metadata) {此.metadata=元数据;此.dispatchEvent(新建CustomEvent("propertiesChanged"{细节:{属性:{元数据:元数据}}}));}};let subscribeReactStore=存储=>{此。\订阅=存储。订阅({效果:状态=>{状态(state);返回{结果:1};}});};让道具=outlineContainer.getReactProps();如果(道具){订阅ActStore(道具商店);}其他{让oldRenderReactComponent=outlineContainer.renderReactComponent概述;outlineContainer.renderReactComponent概述=e=>{让道具=outlineContainer.getReactProps();订阅ActStore(道具商店);古老的RenderReactComponent.call调用(大纲内容,e);}}}}}捕获(e){}} disconnectedCallback()–当小部件从页面的html DOM中移除时(例如,通过隐藏)触发。在这个函数中,我们重置在connectedCallback()中定义的"react store subscription"subscribeReactStore的状态。disconnectedCallback(){if(this.\u订阅){//resact store订阅此。_订阅();此订阅。\u subscription=null;}}​onCustomWidgetBeforeUpdate()–当自定义小部件更新时,自定义小部件SDK框架首先执行此函数。在这个函数中,我们将\u designMode()的状态设置为changedProperties。onCustomWidgetBeforeUpdate(更改属性){if("changedProperties中的designMode"){这是。_designMode=changedproperties designMode"];}}onCustomWidgetAfterUpdate()–更新自定义小部件时,自定义小部件SDK框架将在更新后执行此函数。在这个函数中,我们将检查小部件实例是否第一次加载。如果是,则它将加载quaggaJS库并调用函数loadthis()。onCustomWidgetAfterUpdate(更改属性){var that=这个;if(this.\u firstConnection===0){这个。_firstConnection=1;让quaggaminjs="http://localhost/SAC/sacbarcodescanner/quagga.min.js";异步函数LoadLibs(){试试看{等待加载脚本(quaggaminjs,\u shadowRoot);}捕获(e){警报(e);}最后{装载这个(那个);}}LoadLibs();}}

加载此()此函数创建div HTML元素以放置UI元素:sap.m.Label、sap.m.Button和sap.m.Input。如果处于设计模式,UI元素将被禁用。函数loadthis(that){var that=那;让按钮插槽=文档.createElement(‘div’);按钮插槽="导出按钮";那个孩子(巴顿斯洛);that.\u Label=新sap.m.Label({必填项:false,文本:"条形码值",设计:"粗体"});that.\u exportButton=新sap.m.按钮({id:"扫描",文本:"扫描",多线云主机,企业管理软件下载,图标:"sap-图标://条形码",可见:正确,工具提示:"扫描条形码",淘客网,按:函数(){开始扫描();}});that.\u Input=新的sap.m.Input({id:"scannedValue",类型:sap.m。输入类型文本,占位符:""});that.\u simpleForm=新sap.ui.layout布局.表单.SimpleForm({标签面板:3,标签号:3,空窗格:3,空窗格:3,第1栏:,专栏:1,可编辑:真,内容:[那个标签,那个输入,那个按钮]})那是我的错_simpleForm.placeAt(按钮槽);那个.\u renderExportButton();如果(该模式){sap.ui.getCore().byId("扫描").setEnabled(false);sap.ui.getCore().byId("scannedValue").setEditable(false);}}​在设计模式中,UI元素被禁用。_initQuagga()使用给定的配置初始化Quagga库,并注册onProcessed()和onDetected()方法。函数initQuagga(oTarget,that){模型变量=jQuery.延迟();//初始化Quagga插件-请参阅https://serratus.github.io/quaggaJS/#配置对象有关详细信息Quagga.init公司({输入流:{type:"LiveStream",目标:oTarget,约束条件:{宽度:{最小值:640},身高:{最小值:480},面对方式:"环境"}},定位器:{patchSize:"中",半样本:真},人数:2,频率:10,解码器:{读者:[{格式:"code\u 128\u reader",配置:{}}]},定位:真},函数(错误){如果(错误){不合格品(错误);}其他{oDeferred.resolve公司();}});如果(!本文件(附件){//附加事件处理程序。。。Quagga.on公司(函数(结果){var图纸CTX=Quagga.canvas.ctx文件.叠加,云服务器特价,绘图画布=Quagga.canvas.dom文件.叠加;如果(结果){//下面将尝试在检测到的条形码周围绘制方框如果(结果框) {图纸CTX.clearRect(0,0,parseInt)(绘图画布.getAttribute("宽度")),parseInt(绘图画布.getAttribute("高度");result.box.filter结果框(功能(盒){返回框!== 结果.box;}).forEach(函数(框){Quagga.ImageDebug.drawPath文件(盒子{x: 0个,y: 1个},图纸CTX{颜色:"绿色",线宽:2});});}如果(结果.box) {Quagga.ImageDebug.drawPath文件(结果.box, {x: 0个,y: 1个},图纸CTX{颜色:"#00F",线宽:2});}如果(result.code结果&& 结果.code结果.code) {Quagga.ImageDebug.drawPath文件(结果行, {x: "x",红淘客,y: '是'},图纸CTX{color:'红色',线宽:3});}}}绑定(this);未检测到Quagga(函数(结果){//条形码已被删除

上一篇云数据库_云阿大数据解决方案-里斯托芬_代金券

下一篇轻量服务器_和目物联网行业-c13云存储收费_试用

云市场知识本月排行

云市场知识精选