From 0a85fbeffe0195fe5c20a9230c9629d4ec27abcb Mon Sep 17 00:00:00 2001 From: Tamara Steinwender <tamara.steinwender@tugraz.at> Date: Tue, 6 Oct 2020 12:10:40 +0200 Subject: [PATCH] Add support to start immediatly the qr code scan --- .../qr-code-scanner/src/qr-code-scanner.js | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js index d26a79cc..18930e73 100644 --- a/packages/qr-code-scanner/src/qr-code-scanner.js +++ b/packages/qr-code-scanner/src/qr-code-scanner.js @@ -28,7 +28,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { this.stopScan = false; this.activeCamera = ''; - + this.sourceChanged = false; } static get scopedElements() { @@ -53,6 +53,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { showOutput: { type: Boolean, attribute: 'show-output' }, stopScan: { type: Boolean, attribute: 'stop-scan' }, activeCamera: { type: String, attribute: false }, + sourceChanged: { type: Boolean, attribute: false } }; } @@ -189,14 +190,15 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { }).catch((e) => { console.log(e); that.askPermission = true;}); function tick() { - /* if (videoId !== that._('#videoSource').options[that._('#videoSource').selectedIndex].value) { + if (that.sourceChanged) { video.srcObject.getTracks().forEach(function(track) { track.stop(); console.log("Changed Media"); }); + that.sourceChanged = false; that.qrCodeScannerInit(); return; - }*/ + } if (that.videoRunning === false) { video.srcObject.getTracks().forEach(function(track) { track.stop(); @@ -252,6 +254,11 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { } } + updateSource(e) { + this.activeCamera = e.srcElement.value; + this.sourceChanged = true; + } + stopScanning() { this.askPermission = false; this.videoRunning = false; @@ -285,6 +292,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { #canvas { width: 100%; + margin-top: 2rem; } #output { @@ -317,7 +325,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { font-size: inherit; } select:not(.select)#videoSource{ - background-size: 15%; + background-size: auto 45%; } .border{ @@ -343,20 +351,20 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) { <button class="start button is-primary ${classMap({hidden: this.videoRunning})}" @click="${() => this.qrCodeScannerInit(this)}" title="${i18n.t('start-scan')}">${i18n.t('start-scan')}</button> <button class="stop button is-primary ${classMap({hidden: !this.videoRunning})}" @click="${() => this.stopScanning()}" title="${i18n.t('stop-scan')}">${i18n.t('stop-scan')}</button> - <select id="videoSource" class="button"></select> + <select id="videoSource" class="button" @change=${this.updateSource}></select> </div> - <div id="loadingMessage" class="border ${classMap({hidden: !this.askPermission})}"> + <div id="loadingMessage" class=" ${classMap({hidden: !this.askPermission})}"> <div class="wrapper-msg"> <dbp-mini-spinner class="spinner ${classMap({hidden: !this.loading})}"></dbp-mini-spinner> <div class="loadingMsg">${i18n.t('no-camera-access')}</div> </div> </div> - <canvas id="canvas" hidden class="border"></canvas> + <canvas id="canvas" hidden class=""></canvas> <pre id="error"></pre> - <div id="output" hidden class="border ${classMap({hidden: !this.showOutput})}"> + <div id="output" hidden class=" ${classMap({hidden: !this.showOutput})}"> <div id="outputMessage">${i18n.t('no-qr-detectede')}</div> <div hidden><b>${i18n.t('data')}:</b> <span id="outputData"></span></div> </div> -- GitLab