ag-charts-angular
Version:
<picture><source media="(prefers-color-scheme: dark)" srcset="./.github/banner-dark.png"><source media="(prefers-color-scheme: light)" srcset="./.github/banner-light.png"><img alt="AG Charts canvas-based charting trusted by the community, built for enterp
69 lines • 9.72 kB
JavaScript
import { Component } from '@angular/core';
import * as i0 from "@angular/core";
export class AgChartsBase {
chart;
_nativeElement;
_initialised = false;
ngZone;
ngAfterViewInit() {
const options = this.patchChartOptions(this.options);
this.chart = this.runOutsideAngular(() => this.createChart(options));
this._initialised = true;
this.chart.chart.waitForUpdate().then(() => {
this.onChartReady.emit(this.chart);
});
}
// noinspection JSUnusedGlobalSymbols,JSUnusedLocalSymbols
ngOnChanges(_changes) {
this.runOutsideAngular(() => {
if (!this._initialised || !this.chart) {
return;
}
this.chart.update(this.patchChartOptions(this.options));
});
}
ngOnDestroy() {
if (this._initialised && this.chart) {
this.chart.destroy();
this.chart = undefined;
this._initialised = false;
}
}
patchChartOptions(propsOptions) {
const patchListeners = (listenerConfig) => {
const config = listenerConfig ?? {};
for (const listenerName of Object.keys(config)) {
const listener = config[listenerName];
if (typeof listener !== 'function')
continue;
config[listenerName] = (...args) => {
this.runInsideAngular(() => listener(...args));
};
}
};
patchListeners(propsOptions?.legend?.listeners);
patchListeners(propsOptions?.listeners);
propsOptions.series?.forEach((series) => {
patchListeners(series.listeners);
});
if (propsOptions.container) {
return propsOptions;
}
return { ...propsOptions, container: this._nativeElement };
}
runOutsideAngular(callback) {
return this.ngZone ? this.ngZone.runOutsideAngular(callback) : callback();
}
runInsideAngular(callback) {
return this.ngZone ? this.ngZone.run(callback) : callback();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AgChartsBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AgChartsBase, selector: "ng-component", usesOnChanges: true, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AgChartsBase, decorators: [{
type: Component,
args: [{
template: '',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctY2hhcnRzLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZy1jaGFydHMtYW5ndWxhci9zcmMvbGliL2FnLWNoYXJ0cy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUE4QyxNQUFNLGVBQWUsQ0FBQzs7QUFPckcsTUFBTSxPQUFnQixZQUFZO0lBQ3ZCLEtBQUssQ0FBbUI7SUFJckIsY0FBYyxDQUFNO0lBQ3BCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsTUFBTSxDQUFVO0lBSTFCLGVBQWU7UUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBYSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsV0FBVyxDQUFDLFFBQWE7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ25DLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxZQUFpQjtRQUN2QyxNQUFNLGNBQWMsR0FBRyxDQUNuQixjQUF1RyxFQUN6RyxFQUFFO1lBQ0EsTUFBTSxNQUFNLEdBQUcsY0FBYyxJQUFLLEVBQVUsQ0FBQztZQUM3QyxLQUFLLE1BQU0sWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVO29CQUFFLFNBQVM7Z0JBRTdDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBUyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQztRQUVGLGNBQWMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELGNBQWMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUN6QyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFO1lBQ3hCLE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO1FBRUQsT0FBTyxFQUFFLEdBQUcsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVPLGlCQUFpQixDQUFJLFFBQWlCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUVPLGdCQUFnQixDQUFJLFFBQWlCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hFLENBQUM7d0dBMUVpQixZQUFZOzRGQUFaLFlBQVkseUVBRnBCLEVBQUU7OzRGQUVNLFlBQVk7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZ0Jhc2VDaGFydExpc3RlbmVycywgQWdDaGFydEluc3RhbmNlLCBBZ0NoYXJ0TGVnZW5kTGlzdGVuZXJzLCBBZ1Nlcmllc0xpc3RlbmVycyB9IGZyb20gJ2FnLWNoYXJ0cy1jb21tdW5pdHknO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFnQ2hhcnRzQmFzZTxPcHRpb25zIGV4dGVuZHMge30+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBjaGFydD86IEFnQ2hhcnRJbnN0YW5jZTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb3B0aW9uczogT3B0aW9ucztcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb25DaGFydFJlYWR5OiBFdmVudEVtaXR0ZXI8QWdDaGFydEluc3RhbmNlPjtcblxuICAgIHByb3RlY3RlZCBfbmF0aXZlRWxlbWVudDogYW55O1xuICAgIHByb3RlY3RlZCBfaW5pdGlhbGlzZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgbmdab25lITogTmdab25lO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZUNoYXJ0KG9wdGlvbnM6IE9wdGlvbnMpOiBhbnk7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnBhdGNoQ2hhcnRPcHRpb25zKHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5jaGFydCA9IHRoaXMucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5jcmVhdGVDaGFydChvcHRpb25zKSk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpc2VkID0gdHJ1ZTtcblxuICAgICAgICAodGhpcy5jaGFydCBhcyBhbnkpLmNoYXJ0LndhaXRGb3JVcGRhdGUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25DaGFydFJlYWR5LmVtaXQodGhpcy5jaGFydCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VudXNlZEdsb2JhbFN5bWJvbHMsSlNVbnVzZWRMb2NhbFN5bWJvbHNcbiAgICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXNlZCB8fCAhdGhpcy5jaGFydCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhcnQudXBkYXRlKHRoaXMucGF0Y2hDaGFydE9wdGlvbnModGhpcy5vcHRpb25zKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2luaXRpYWxpc2VkICYmIHRoaXMuY2hhcnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jaGFydCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhdGNoQ2hhcnRPcHRpb25zKHByb3BzT3B0aW9uczogYW55KTogYW55IHtcbiAgICAgICAgY29uc3QgcGF0Y2hMaXN0ZW5lcnMgPSAoXG4gICAgICAgICAgICBsaXN0ZW5lckNvbmZpZzogdW5kZWZpbmVkIHwgQWdDaGFydExlZ2VuZExpc3RlbmVycyB8IEFnU2VyaWVzTGlzdGVuZXJzPGFueT4gfCBBZ0Jhc2VDaGFydExpc3RlbmVyczxhbnk+XG4gICAgICAgICkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gbGlzdGVuZXJDb25maWcgPz8gKHt9IGFzIGFueSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyTmFtZSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSBjb25maWdbbGlzdGVuZXJOYW1lXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIGNvbmZpZ1tsaXN0ZW5lck5hbWVdID0gKC4uLmFyZ3M6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bkluc2lkZUFuZ3VsYXIoKCkgPT4gbGlzdGVuZXIoLi4uYXJncykpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcGF0Y2hMaXN0ZW5lcnMocHJvcHNPcHRpb25zPy5sZWdlbmQ/Lmxpc3RlbmVycyk7XG4gICAgICAgIHBhdGNoTGlzdGVuZXJzKHByb3BzT3B0aW9ucz8ubGlzdGVuZXJzKTtcbiAgICAgICAgcHJvcHNPcHRpb25zLnNlcmllcz8uZm9yRWFjaCgoc2VyaWVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHBhdGNoTGlzdGVuZXJzKHNlcmllcy5saXN0ZW5lcnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocHJvcHNPcHRpb25zLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzT3B0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IC4uLnByb3BzT3B0aW9ucywgY29udGFpbmVyOiB0aGlzLl9uYXRpdmVFbGVtZW50IH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBydW5PdXRzaWRlQW5ndWxhcjxUPihjYWxsYmFjazogKCkgPT4gVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ1pvbmUgPyB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihjYWxsYmFjaykgOiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcnVuSW5zaWRlQW5ndWxhcjxUPihjYWxsYmFjazogKCkgPT4gVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ1pvbmUgPyB0aGlzLm5nWm9uZS5ydW4oY2FsbGJhY2spIDogY2FsbGJhY2soKTtcbiAgICB9XG59XG4iXX0=