Merge pull request #4966 from vvlladd28/improvement/qr-code/load
UI: Add lazy load qrcode library; added validation qr code text
This commit is contained in:
commit
ae996e88d5
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
-->
|
-->
|
||||||
<div fxLayout="column" fxLayoutAlign="center center" style="width: 100%; height: 100%;">
|
<div fxLayout="column" fxLayoutAlign="center center" style="width: 100%; height: 100%;">
|
||||||
<canvas fxFlex #canvas [ngStyle]="{display: qrCodeText ? 'block' : 'none'}"></canvas>
|
<canvas fxFlex #canvas [ngStyle]="{display: qrCodeText && !invalidQrCodeText ? 'block' : 'none'}"></canvas>
|
||||||
<div *ngIf="!qrCodeText" translate>entity.no-data</div>
|
<div *ngIf="!qrCodeText && !invalidQrCodeText" translate>entity.no-data</div>
|
||||||
|
<div *ngIf="invalidQrCodeText" translate>widgets.invalid-qr-code-text</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,7 +19,6 @@ import { PageComponent } from '@shared/components/page.component';
|
|||||||
import { WidgetContext } from '@home/models/widget-component.models';
|
import { WidgetContext } from '@home/models/widget-component.models';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from '@core/core.state';
|
import { AppState } from '@core/core.state';
|
||||||
import QRCode from 'qrcode';
|
|
||||||
import {
|
import {
|
||||||
fillPattern,
|
fillPattern,
|
||||||
parseData,
|
parseData,
|
||||||
@ -30,6 +29,7 @@ import {
|
|||||||
import { FormattedData } from '@home/components/widget/lib/maps/map-models';
|
import { FormattedData } from '@home/components/widget/lib/maps/map-models';
|
||||||
import { DatasourceData } from '@shared/models/widget.models';
|
import { DatasourceData } from '@shared/models/widget.models';
|
||||||
import { DataKeyType } from '@shared/models/telemetry/telemetry.models';
|
import { DataKeyType } from '@shared/models/telemetry/telemetry.models';
|
||||||
|
import { isNumber, isObject } from '@core/utils';
|
||||||
|
|
||||||
interface QrCodeWidgetSettings {
|
interface QrCodeWidgetSettings {
|
||||||
qrCodeTextPattern: string;
|
qrCodeTextPattern: string;
|
||||||
@ -53,6 +53,7 @@ export class QrCodeWidgetComponent extends PageComponent implements OnInit, Afte
|
|||||||
ctx: WidgetContext;
|
ctx: WidgetContext;
|
||||||
|
|
||||||
qrCodeText: string;
|
qrCodeText: string;
|
||||||
|
invalidQrCodeText = false;
|
||||||
|
|
||||||
private viewInited: boolean;
|
private viewInited: boolean;
|
||||||
private scheduleUpdateCanvas: boolean;
|
private scheduleUpdateCanvas: boolean;
|
||||||
@ -109,18 +110,25 @@ export class QrCodeWidgetComponent extends PageComponent implements OnInit, Afte
|
|||||||
private updateQrCodeText(newQrCodeText: string): void {
|
private updateQrCodeText(newQrCodeText: string): void {
|
||||||
if (this.qrCodeText !== newQrCodeText) {
|
if (this.qrCodeText !== newQrCodeText) {
|
||||||
this.qrCodeText = newQrCodeText;
|
this.qrCodeText = newQrCodeText;
|
||||||
|
if (!(isObject(newQrCodeText) || isNumber(newQrCodeText))) {
|
||||||
|
this.invalidQrCodeText = false;
|
||||||
if (this.qrCodeText) {
|
if (this.qrCodeText) {
|
||||||
this.updateCanvas();
|
this.updateCanvas();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.invalidQrCodeText = true;
|
||||||
|
}
|
||||||
this.cd.detectChanges();
|
this.cd.detectChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateCanvas() {
|
private updateCanvas() {
|
||||||
if (this.viewInited) {
|
if (this.viewInited) {
|
||||||
|
import('qrcode').then((QRCode) => {
|
||||||
QRCode.toCanvas(this.canvasRef.nativeElement, this.qrCodeText);
|
QRCode.toCanvas(this.canvasRef.nativeElement, this.qrCodeText);
|
||||||
this.canvasRef.nativeElement.style.width = 'auto';
|
this.canvasRef.nativeElement.style.width = 'auto';
|
||||||
this.canvasRef.nativeElement.style.height = 'auto';
|
this.canvasRef.nativeElement.style.height = 'auto';
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
this.scheduleUpdateCanvas = true;
|
this.scheduleUpdateCanvas = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3123,7 +3123,8 @@
|
|||||||
"update-attribute": "Update attribute",
|
"update-attribute": "Update attribute",
|
||||||
"update-timeseries": "Update timeseries",
|
"update-timeseries": "Update timeseries",
|
||||||
"value": "Value"
|
"value": "Value"
|
||||||
}
|
},
|
||||||
|
"invalid-qr-code-text": "Invalid input text for QR code. Input should have a string type"
|
||||||
},
|
},
|
||||||
"icon": {
|
"icon": {
|
||||||
"icon": "Icon",
|
"icon": "Icon",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user