ngx-admin/src/app/theme/components/baAmChart/baAmChart.component.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2017-01-21 16:46:34 +03:00
import {Component, ViewChild, Input, Output, ElementRef, EventEmitter} from '@angular/core';
2016-05-06 13:28:11 +03:00
import {BaThemePreloader} from '../../../theme/services';
2016-05-06 13:28:11 +03:00
import './baAmChart.loader.ts';
import {BaAmChartThemeService} from './baAmChartTheme.service';
2016-05-06 13:28:11 +03:00
2017-01-21 16:46:34 +03:00
import 'style-loader!./baAmChart.scss';
2016-05-06 13:28:11 +03:00
@Component({
selector: 'ba-am-chart',
templateUrl: './baAmChart.html',
providers: [BaAmChartThemeService],
2016-05-06 13:28:11 +03:00
})
export class BaAmChart {
@Input() baAmChartConfiguration:Object;
@Input() baAmChartClass:string;
@Output() onChartReady = new EventEmitter<any>();
@ViewChild('baAmChart') public _selector:ElementRef;
constructor (private _baAmChartThemeService:BaAmChartThemeService) {
this._loadChartsLib();
}
ngOnInit() {
AmCharts.themes.blur = this._baAmChartThemeService.getTheme();
2016-05-06 13:28:11 +03:00
}
ngAfterViewInit() {
let chart = AmCharts.makeChart(this._selector.nativeElement, this.baAmChartConfiguration);
2016-05-06 13:28:11 +03:00
this.onChartReady.emit(chart);
}
private _loadChartsLib():void {
BaThemePreloader.registerLoader(new Promise((resolve, reject) => {
2016-08-29 17:33:12 +03:00
let amChartsReadyMsg = 'AmCharts ready';
if (AmCharts.isReady) {
resolve(amChartsReadyMsg);
} else {
AmCharts.ready(function () {
resolve(amChartsReadyMsg);
});
}
}));
}
2016-05-06 13:28:11 +03:00
}