UNPKG

scichart-angular

Version:

Angular wrapper for SciChart JS

108 lines 14.7 kB
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ScichartFallbackComponent } from './scichart-fallback.component'; import { createChartFromConfig, createChartRoot } from "./utils"; import { wrongInitResultMessage } from './constants'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class ScichartAngularComponent { constructor() { this.title = 'lib-scichart-angular'; this.config = ''; //TODO: type the config this.innerContainerStyles = null; this.onInit = new EventEmitter(); this.onDelete = new EventEmitter(); this.innerContainerStylesMerged = { height: '100%', width: '100%', }; this.isInitialized = false; this.hasCustomFallback = false; this.isCancelled = false; this.chartRoot = createChartRoot(); this.sciChartSurfaceRef = null; this.initResultRef = null; } ngOnInit() { if (this.innerContainerStyles) { this.innerContainerStylesMerged = { ...this.innerContainerStylesMerged, ...this.innerContainerStyles }; } } ngAfterViewInit() { const rootElement = this.innerContainerRef.nativeElement; rootElement.appendChild(this.chartRoot); const fallbackElement = this.fallbackContainer.nativeElement; if (fallbackElement.childNodes.length > 0) { this.hasCustomFallback = true; } const initializationFunction = this.initChart ? (this.initChart) : createChartFromConfig(this.config); const runInit = async () => new Promise((resolve, reject) => initializationFunction(this.chartRoot) .then((initResult) => { if (!initResult.sciChartSurface) { throw new Error(wrongInitResultMessage); } this.sciChartSurfaceRef = initResult.sciChartSurface; this.initResultRef = initResult; if (!this.isCancelled) { this.isInitialized = true; } resolve(initResult); }) .catch(reject)); runInit().then(initResult => { if (this.onInit && this.isInitialized) { this.onInit.emit(initResult); } }); } ngOnDestroy() { this.isCancelled = true; if (this.onDelete && this.isInitialized) { this.onDelete.emit(this.initResultRef); } this.sciChartSurfaceRef?.delete(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ScichartAngularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ScichartAngularComponent, isStandalone: true, selector: "scichart-angular", inputs: { initChart: "initChart", config: "config", innerContainerStyles: "innerContainerStyles" }, outputs: { onInit: "onInit", onDelete: "onDelete" }, viewQueries: [{ propertyName: "innerContainerRef", first: true, predicate: ["innerContainerRef"], descendants: true }, { propertyName: "fallbackContainer", first: true, predicate: ["fallbackContainer"], descendants: true }], ngImport: i0, template: ` <div style="position: relative; height: 100%; width: 100%;"> <div #innerContainerRef [ngStyle]="innerContainerStylesMerged"></div> <ng-content *ngIf="isInitialized"></ng-content> <div *ngIf="!isInitialized" #fallbackContainer> <ng-content select="[fallback]"></ng-content> </div> <scichart-fallback *ngIf="!hasCustomFallback && !isInitialized"></scichart-fallback> </div> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ScichartFallbackComponent, selector: "scichart-fallback" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ScichartAngularComponent, decorators: [{ type: Component, args: [{ selector: 'scichart-angular', standalone: true, imports: [CommonModule, ScichartFallbackComponent], template: ` <div style="position: relative; height: 100%; width: 100%;"> <div #innerContainerRef [ngStyle]="innerContainerStylesMerged"></div> <ng-content *ngIf="isInitialized"></ng-content> <div *ngIf="!isInitialized" #fallbackContainer> <ng-content select="[fallback]"></ng-content> </div> <scichart-fallback *ngIf="!hasCustomFallback && !isInitialized"></scichart-fallback> </div> ` }] }], propDecorators: { innerContainerRef: [{ type: ViewChild, args: ['innerContainerRef'] }], fallbackContainer: [{ type: ViewChild, args: ['fallbackContainer'] }], initChart: [{ type: Input }], config: [{ type: Input }], innerContainerStyles: [{ type: Input }], onInit: [{ type: Output }], onDelete: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NpY2hhcnQtYW5ndWxhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2ljaGFydC1hbmd1bGFyL3NyYy9saWIvc2NpY2hhcnQtYW5ndWxhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFrQnJELE1BQU0sT0FBTyx3QkFBd0I7SUFoQnJDO1FBb0JFLFVBQUssR0FBRyxzQkFBc0IsQ0FBQztRQU10QixXQUFNLEdBQVEsRUFBRSxDQUFDLENBQUMsdUJBQXVCO1FBQ3pDLHlCQUFvQixHQUFrQixJQUFJLENBQUM7UUFFMUMsV0FBTSxHQUE4QixJQUFJLFlBQVksRUFBZSxDQUFDO1FBQ3BFLGFBQVEsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUV6RSwrQkFBMEIsR0FBVztZQUMxQyxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxNQUFNO1NBQ2QsQ0FBQztRQUNLLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNsQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFFOUIsdUJBQWtCLEdBQW9CLElBQUksQ0FBQztRQUMzQyxrQkFBYSxHQUF1QixJQUFJLENBQUM7S0F3RGxEO0lBdERDLFFB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QUFvQjtzQkFBNUIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIElTY2lDaGFydFN1cmZhY2VCYXNlLFxyXG59IGZyb20gXCJzY2ljaGFydFwiO1xyXG5pbXBvcnQgeyBJSW5pdFJlc3VsdCwgVEluaXRGdW5jdGlvbiB9IGZyb20gXCIuL3R5cGVzXCI7XHJcbmltcG9ydCB7IFNjaWNoYXJ0RmFsbGJhY2tDb21wb25lbnQgfSBmcm9tICcuL3NjaWNoYXJ0LWZhbGxiYWNrLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0RnJvbUNvbmZpZywgY3JlYXRlQ2hhcnRSb290IH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgd3JvbmdJbml0UmVzdWx0TWVzc2FnZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2NpY2hhcnQtYW5ndWxhcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZSwgU2NpY2hhcnRGYWxsYmFja0NvbXBvbmVudCBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICA8ZGl2ICNpbm5lckNvbnRhaW5lclJlZiBbbmdTdHlsZV09XCJpbm5lckNvbnRhaW5lclN0eWxlc01lcmdlZFwiPjwvZGl2PlxyXG4gICAgICA8bmctY29udGVudCAqbmdJZj1cImlzSW5pdGlhbGl6ZWRcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNJbml0aWFsaXplZFwiICNmYWxsYmFja0NvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZmFsbGJhY2tdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHNjaWNoYXJ0LWZhbGxiYWNrICpuZ0lmPVwiIWhhc0N1c3RvbUZhbGxiYWNrICYmICFpc0luaXRpYWxpemVkXCI+PC9zY2ljaGFydC1mYWxsYmFjaz5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NpY2hhcnRBbmd1bGFyQ29tcG9uZW50PFxyXG4gICAgVFN1cmZhY2UgZXh0ZW5kcyBJU2NpQ2hhcnRTdXJmYWNlQmFzZSA9IElTY2lDaGFydFN1cmZhY2VCYXNlLFxyXG4gICAgVEluaXRSZXN1bHQgZXh0ZW5kcyBJSW5pdFJlc3VsdDxUU3VyZmFjZT4gPSBJSW5pdFJlc3VsdDxUU3VyZmFjZT5cclxuPiB7XHJcbiAgdGl0bGUgPSAnbGliLXNjaWNoYXJ0LWFuZ3VsYXInO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbm5lckNvbnRhaW5lclJlZicpIGlubmVyQ29udGFpbmVyUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZmFsbGJhY2tDb250YWluZXInKSBmYWxsYmFja0NvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBASW5wdXQoKSBpbml0Q2hhcnQhOiBUSW5pdEZ1bmN0aW9uPFRTdXJmYWNlLCBUSW5pdFJlc3VsdD47XHJcbiAgQElucHV0KCkgY29uZmlnOiBhbnkgPSAnJzsgLy9UT0RPOiB0eXBlIHRoZSBjb25maWdcclxuICBASW5wdXQoKSBpbm5lckNvbnRhaW5lclN0eWxlczogT2JqZWN0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkluaXQ6IEV2ZW50RW1pdHRlcjxUSW5pdFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRJbml0UmVzdWx0PigpO1xyXG4gIEBPdXRwdXQoKSBvbkRlbGV0ZTogRXZlbnRFbWl0dGVyPFRJbml0UmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8VEluaXRSZXN1bHQ+KCk7XHJcblxyXG4gIHB1YmxpYyBpbm5lckNvbnRhaW5lclN0eWxlc01lcmdlZDogT2JqZWN0ID0ge1xyXG4gICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gIH07XHJcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaGFzQ3VzdG9tRmFsbGJhY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGlzQ2FuY2VsbGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBjaGFydFJvb3QgPSBjcmVhdGVDaGFydFJvb3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBzY2lDaGFydFN1cmZhY2VSZWY6IFRTdXJmYWNlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpbml0UmVzdWx0UmVmOiBUSW5pdFJlc3VsdCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlubmVyQ29udGFpbmVyU3R5bGVzKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250YWluZXJTdHlsZXNNZXJnZWQgPSB7IC4uLnRoaXMuaW5uZXJDb250YWluZXJTdHlsZXNNZXJnZWQsIC4uLnRoaXMuaW5uZXJDb250YWluZXJTdHlsZXMgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gdGhpcy5pbm5lckNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgcm9vdEVsZW1lbnQhLmFwcGVuZENoaWxkKHRoaXMuY2hhcnRSb290IGFzIE5vZGUpO1xyXG5cclxuICAgIGNvbnN0IGZhbGxiYWNrRWxlbWVudCA9IHRoaXMuZmFsbGJhY2tDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChmYWxsYmFja0VsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFzQ3VzdG9tRmFsbGJhY2sgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uRnVuY3Rpb24gPSB0aGlzLmluaXRDaGFydFxyXG4gICAgICA/ICh0aGlzLmluaXRDaGFydClcclxuICAgICAgOiBjcmVhdGVDaGFydEZyb21Db25maWc8VFN1cmZhY2U+KHRoaXMuY29uZmlnKSBhcyBUSW5pdEZ1bmN0aW9uPFRTdXJmYWNlLCBUSW5pdFJlc3VsdD47XHJcblxyXG4gICAgY29uc3QgcnVuSW5pdCA9IGFzeW5jICgpOiBQcm9taXNlPFRJbml0UmVzdWx0PiA9PlxyXG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxyXG4gICAgICAgIGluaXRpYWxpemF0aW9uRnVuY3Rpb24odGhpcy5jaGFydFJvb3QgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAgICAgICAudGhlbigoaW5pdFJlc3VsdDogVEluaXRSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpbml0UmVzdWx0LnNjaUNoYXJ0U3VyZmFjZSkge1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih3cm9uZ0luaXRSZXN1bHRNZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNjaUNoYXJ0U3VyZmFjZVJlZiA9IGluaXRSZXN1bHQuc2NpQ2hhcnRTdXJmYWNlIGFzIFRTdXJmYWNlO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRSZXN1bHRSZWYgPSBpbml0UmVzdWx0IGFzIFRJbml0UmVzdWx0O1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShpbml0UmVzdWx0KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2gocmVqZWN0KVxyXG4gICAgICApO1xyXG5cclxuICAgIHJ1bkluaXQoKS50aGVuKGluaXRSZXN1bHQgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vbkluaXQgJiYgdGhpcy5pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgdGhpcy5vbkluaXQuZW1pdChpbml0UmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNDYW5jZWxsZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLm9uRGVsZXRlICYmIHRoaXMuaXNJbml0aWFsaXplZCkge1xyXG4gICAgICB0aGlzLm9uRGVsZXRlLmVtaXQodGhpcy5pbml0UmVzdWx0UmVmIGFzIFRJbml0UmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNjaUNoYXJ0U3VyZmFjZVJlZj8uZGVsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==