@thachnuida/ngx-uplot
Version:
Angular wrapper for uplot.
76 lines • 9.29 kB
JavaScript
import { Component, Input } from '@angular/core';
import * as _uPlot from 'uplot';
import * as i0 from "@angular/core";
import * as i1 from "./ngx-uplot.service";
const uPlot = _uPlot.default ? _uPlot.default : _uPlot;
export class NgxUplotComponent {
constructor(_element, service) {
this._element = _element;
this.service = service;
/**
* Flag controlling whether to reset the scales on data change. Defaults to true.
*/
this.resetScales = true;
}
ngOnChanges(changes) {
if (changes['options']) {
this.addChartSize();
const optionState = this.service.optionsUpdateState(changes['options'].previousValue, this.options);
if (this.chartElm || optionState === 'create') {
this.create();
}
else if (optionState === 'update') {
this.chartElm.setSize({ width: this.options.width, height: this.options.height });
}
}
if (changes['data']) {
if (!this.chartElm) {
this.create();
}
else if (!this.service.dataMatch(changes['data'].previousValue, this.data)) {
if (this.resetScales) {
this.chartElm.setData(this.data, true);
}
else {
this.chartElm.setData(this.data, false);
this.chartElm.redraw();
}
}
}
}
addChartSize() {
if (!this.options.width) {
this.options.width = this._element.nativeElement.clientWidth;
}
if (!this.options.height) {
this.options.height = this._element.nativeElement.clientHeight || 600;
}
}
ngOnDestroy() {
this.destroy();
}
destroy() {
if (this.chartElm) {
this.chartElm.destroy();
}
}
create() {
this.destroy();
if (this.options && this.data) {
this.chartElm = new uPlot(this.options, this.data, this._element.nativeElement);
}
}
}
NgxUplotComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgxUplotComponent, deps: [{ token: i0.ElementRef }, { token: i1.NgxUplotService }], target: i0.ɵɵFactoryTarget.Component });
NgxUplotComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgxUplotComponent, selector: "ngx-uplot", inputs: { options: "options", data: "data", resetScales: "resetScales" }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, styles: [":host{display:block}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgxUplotComponent, decorators: [{
type: Component,
args: [{ selector: 'ngx-uplot', template: ``, styles: [":host{display:block}\n"] }]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgxUplotService }]; }, propDecorators: { options: [{
type: Input
}], data: [{
type: Input
}], resetScales: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXVwbG90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC11cGxvdC9zcmMvbGliL25neC11cGxvdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTJELE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sS0FBSyxNQUFNLE1BQU0sT0FBTyxDQUFDOzs7QUFHaEMsTUFBTSxLQUFLLEdBQUksTUFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsTUFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBV3pFLE1BQU0sT0FBTyxpQkFBaUI7SUFXNUIsWUFDVSxRQUFvQixFQUNwQixPQUF3QjtRQUR4QixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBVGxDOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxJQUFJLENBQUM7SUFPeEIsQ0FBQztJQUVMLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxLQUFLLFFBQVEsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2Y7aUJBQU0sSUFBSSxXQUFXLEtBQUssUUFBUSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsUUFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUM5RjtTQUVGO1FBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNmO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUN4QjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQztTQUN2RTtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDakY7SUFDSCxDQUFDOzsrR0FsRVUsaUJBQWlCO21HQUFqQixpQkFBaUIsZ0pBUGxCLEVBQUU7NEZBT0QsaUJBQWlCO2tCQVQ3QixTQUFTOytCQUNFLFdBQVcsWUFDWCxFQUFFOytIQVNILE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIF91UGxvdCBmcm9tICd1cGxvdCc7XG5pbXBvcnQgeyBOZ3hVcGxvdFNlcnZpY2UgfSBmcm9tICcuL25neC11cGxvdC5zZXJ2aWNlJztcblxuY29uc3QgdVBsb3QgPSAoX3VQbG90IGFzIGFueSkuZGVmYXVsdCA/IChfdVBsb3QgYXMgYW55KS5kZWZhdWx0IDogX3VQbG90O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtdXBsb3QnLFxuICB0ZW1wbGF0ZTogYGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICA6aG9zdCB7ZGlzcGxheTogYmxvY2s7fVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hVcGxvdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBvcHRpb25zITogYW55O1xuICBASW5wdXQoKSBkYXRhITogdVBsb3QuQWxpZ25lZERhdGE7XG4gIC8qKlxuICAgKiBGbGFnIGNvbnRyb2xsaW5nIHdoZXRoZXIgdG8gcmVzZXQgdGhlIHNjYWxlcyBvbiBkYXRhIGNoYW5nZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHJlc2V0U2NhbGVzID0gdHJ1ZTtcblxuICBjaGFydEVsbSE6IHVQbG90O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBOZ3hVcGxvdFNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgdGhpcy5hZGRDaGFydFNpemUoKTtcbiAgICAgIGNvbnN0IG9wdGlvblN0YXRlID0gdGhpcy5zZXJ2aWNlLm9wdGlvbnNVcGRhdGVTdGF0ZShjaGFuZ2VzWydvcHRpb25zJ10ucHJldmlvdXNWYWx1ZSwgdGhpcy5vcHRpb25zKTtcbiAgICAgIGlmICh0aGlzLmNoYXJ0RWxtIHx8IG9wdGlvblN0YXRlID09PSAnY3JlYXRlJykge1xuICAgICAgICB0aGlzLmNyZWF0ZSgpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25TdGF0ZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgKHRoaXMuY2hhcnRFbG0gYXMgdVBsb3QpLnNldFNpemUoeyB3aWR0aDogdGhpcy5vcHRpb25zLndpZHRoLCBoZWlnaHQ6IHRoaXMub3B0aW9ucy5oZWlnaHQgfSk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICBpZiAoIXRoaXMuY2hhcnRFbG0pIHtcbiAgICAgICAgdGhpcy5jcmVhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VydmljZS5kYXRhTWF0Y2goY2hhbmdlc1snZGF0YSddLnByZXZpb3VzVmFsdWUsIHRoaXMuZGF0YSkpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzZXRTY2FsZXMpIHtcbiAgICAgICAgICB0aGlzLmNoYXJ0RWxtLnNldERhdGEodGhpcy5kYXRhLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNoYXJ0RWxtLnNldERhdGEodGhpcy5kYXRhLCBmYWxzZSk7XG4gICAgICAgICAgdGhpcy5jaGFydEVsbS5yZWRyYXcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZENoYXJ0U2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy53aWR0aCkge1xuICAgICAgdGhpcy5vcHRpb25zLndpZHRoID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5oZWlnaHQpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDYwMDtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY2hhcnRFbG0pIHtcbiAgICAgIHRoaXMuY2hhcnRFbG0uZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZSgpIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jaGFydEVsbSA9IG5ldyB1UGxvdCh0aGlzLm9wdGlvbnMsIHRoaXMuZGF0YSwgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxufVxuIl19