Estamos tratando de agregar funcionalidad a un sistema antiguo. Nuestros clientes usan escáneres, por lo que sería ideal si pudiéramos agregar un código QR en la pantalla para que lo escaneen. Encontré una pequeña biblioteca javascript de código abierto que muestra códigos QR. Quería usar eso, pero estoy extrayendo la URL de la base de datos, colocándola en una tienda y luego completando un enlace en la pantalla. Entonces, tengo lo siguiente:
this.searchForm = { frame: true, xtype: 'form', layout: 'form', labelWidth: 150, items: [{ xtype: 'component', fieldLabel: 'Wireless App', tpl: '<div id="qrcode" style="width:100px; height:100px;"></div><a href="{Url}">{Url}</a>', data: { Url: '' }, ref: '../../WirelessAppLabel' }, { xtype: 'label', ref:'../../StatusLabel' }] }; lookupRF: function(search) { this.createRFLookup(); this.lookupRFWindow.show(); this.WirelessAppStore = WirelessAppUrl.getInstance().createStore(); PM.Retriever.retrieve([this.WirelessAppStore], { callback: function (response, success) { if (success) { this.WMSAppUrl = this.WirelessAppStore.data.items[0].data.Url; this.lookupRFWindow.WirelessAppLabel.update({ Url: this.WMSAppUrl }); new QRCode(document.getElementById("qrcode"), this.WMSAppUrl); } }, scope: this }); }donde PM es un espacio de nombres que creamos internamente. (Estas dos funciones no están en el mismo archivo, pero una hace referencia a la otra). Pero sigo recibiendo errores que dicen que QRCode no está definido. Intenté cargarlo usando Ext.Loader.load() y también solo agregué una referencia al script en index.html, pero ninguna de las dos opciones funcionó. ¿Alguna sugerencia?
Aquí está el enlace al javascript del código QR que estamos intentando utilizar: https://davidshimjs.github.io/qrcodejs/
Encontré un enfoque mucho más fácil. En lugar de intentar hacer todo en Javascript, ya está accediendo al servidor para extraerlo de la base de datos, por lo que agregué un generador de código QR que creó un lado del servidor de mapa de bits, que lo convierte en un Base64String. Entonces, ahora mi código se ve así:
this.searchForm = { frame: true, xtype: 'form', layout: 'form', labelWidth: 150, items: [{ xtype: 'component', fieldLabel: 'Wireless App', tpl: '<a href="{Url}">{Url}</a><br/><img src="data:image/jpeg;base64, {Image}" style="width:100px;height:100px;" />', data: { Url: '', Image: '' }, ref: '../../WirelessAppLabel' }, { xtype: 'label', ref:'../../StatusLabel' }] }; lookupRF: function(search) { this.createRFLookup(); this.lookupRFWindow.show(); this.WirelessAppStore = WirelessAppUrl.getInstance().createStore(); PM.Retriever.retrieve([this.WirelessAppStore], { callback: function (response, success) { if (success) { this.WMSAppUrl = this.WirelessAppStore.data.items[0].data.Url; this.WMSAppImage = this.WirelessAppStore.data.items[0].data.QRCode; this.lookupRFWindow.WirelessAppLabel.update({ Url: this.WMSAppUrl, Image: this.WMSAppImage }); } }, scope: this });Y luego, para crear el QRCode, utilicé este paquete de código abierto: https://github.com/codebude/QRCoder
No es exactamente la solución que se solicitó, pero funciona muy bien.