@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
127 lines • 11 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ElementRef, Input, ViewChild, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, } from '@angular/core';
import { take } from 'rxjs/operators';
import { LazyLoadScriptService } from '@ngx-performance-ui/core';
// https://developers.google.com/chart/interactive/docs/
export class GoogleChartComponent {
/**
* @param {?} lazyLoadScriptService
*/
constructor(lazyLoadScriptService) {
this.lazyLoadScriptService = lazyLoadScriptService;
this.chartType = 'AreaChart';
this.style = { width: '100%', height: 'auto' };
this.containerClasses = '';
this.drawFn = (/**
* @param {?} _
* @return {?}
*/
_ => {
if (this.dataTable && this.dataTable.length) {
this.data = google.visualization.arrayToDataTable(this.dataTable);
}
else if (this.columns && this.columns.length && this.rows && this.rows.length) {
this.data = new google.visualization.DataTable();
this.columns.forEach((/**
* @param {?} column
* @return {?}
*/
column => this.data.addColumn(column.type, column.label)));
this.data.addRows(this.rows);
}
else {
console.error('Must set datatable or columns and rows inputs');
return;
}
this.chart = new google.visualization[this.chartType](this.chartContainer.nativeElement);
this.chart.draw(this.data, this.options);
this.ready.emit();
});
this.ready = new EventEmitter();
}
/**
* @return {?}
*/
get packages() {
if (this.chartType === 'AnnotationChart')
return [this.chartType.toLowerCase()];
return ['corechart'];
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.lazyLoadScriptService
.loadScript('https://www.gstatic.com/charts/loader.js')
.pipe(take(1))
.subscribe((/**
* @param {?} _
* @return {?}
*/
_ => {
google.charts.load('current', { packages: this.packages });
google.charts.setOnLoadCallback(this.drawFn);
}));
}
}
GoogleChartComponent.decorators = [
{ type: Component, args: [{
selector: 'p-google-chart',
template: `
<div #chartContainer class="{{ containerClasses }}" [ngStyle]="style"></div>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
GoogleChartComponent.ctorParameters = () => [
{ type: LazyLoadScriptService }
];
GoogleChartComponent.propDecorators = {
chartType: [{ type: Input }],
dataTable: [{ type: Input }],
columns: [{ type: Input }],
rows: [{ type: Input }],
options: [{ type: Input }],
style: [{ type: Input }],
containerClasses: [{ type: Input }],
drawFn: [{ type: Input }],
ready: [{ type: Output }],
chartContainer: [{ type: ViewChild, args: ['chartContainer',] }]
};
if (false) {
/** @type {?} */
GoogleChartComponent.prototype.chartType;
/** @type {?} */
GoogleChartComponent.prototype.dataTable;
/** @type {?} */
GoogleChartComponent.prototype.columns;
/** @type {?} */
GoogleChartComponent.prototype.rows;
/** @type {?} */
GoogleChartComponent.prototype.options;
/** @type {?} */
GoogleChartComponent.prototype.style;
/** @type {?} */
GoogleChartComponent.prototype.containerClasses;
/** @type {?} */
GoogleChartComponent.prototype.drawFn;
/** @type {?} */
GoogleChartComponent.prototype.ready;
/** @type {?} */
GoogleChartComponent.prototype.chartContainer;
/** @type {?} */
GoogleChartComponent.prototype.chart;
/** @type {?} */
GoogleChartComponent.prototype.data;
/**
* @type {?}
* @private
*/
GoogleChartComponent.prototype.lazyLoadScriptService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcGVyZm9ybWFuY2UtdWkvdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9nb29nbGUtY2hhcnQvZ29vZ2xlLWNoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQWFqRSxNQUFNLE9BQU8sb0JBQW9COzs7O0lBd0QvQixZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXREaEUsY0FBUyxHQUFvQyxXQUFXLENBQUM7UUFlekQsVUFBSyxHQUF1QyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRzlFLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUc5QixXQUFNOzs7O1FBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDbkU7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7Z0JBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDO2dCQUMvRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPO2FBQ1I7WUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsRUFBQztRQUdGLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBY2tDLENBQUM7Ozs7SUFOcEUsSUFBSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGlCQUFpQjtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFaEYsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Ozs7SUFJRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLHFCQUFxQjthQUN2QixVQUFVLENBQUMsMENBQTBDLENBQUM7YUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVM7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRTtZQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7OztZQTFFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOztHQUVUO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7OztZQVpRLHFCQUFxQjs7O3dCQWMzQixLQUFLO3dCQUdMLEtBQUs7c0JBR0wsS0FBSzttQkFHTCxLQUFLO3NCQUdMLEtBQUs7b0JBR0wsS0FBSzsrQkFHTCxLQUFLO3FCQUdMLEtBQUs7b0JBbUJMLE1BQU07NkJBR04sU0FBUyxTQUFDLGdCQUFnQjs7OztJQTNDM0IseUNBQ3lEOztJQUV6RCx5Q0FDaUI7O0lBRWpCLHVDQUM4Qjs7SUFFOUIsb0NBQ21COztJQUVuQix1Q0FDc0M7O0lBRXRDLHFDQUM4RTs7SUFFOUUsZ0RBQzhCOztJQUU5QixzQ0FpQkU7O0lBRUYscUNBQ2lDOztJQUVqQyw4Q0FBd0Q7O0lBRXhELHFDQUFrQjs7SUFFbEIsb0NBQWlCOzs7OztJQVFMLHFEQUFvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR29vZ2xlQ2hhcnQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgTGF6eUxvYWRTY3JpcHRTZXJ2aWNlIH0gZnJvbSAnQG5neC1wZXJmb3JtYW5jZS11aS9jb3JlJztcblxuZGVjbGFyZSB2YXIgZ29vZ2xlO1xuXG4vLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9jaGFydC9pbnRlcmFjdGl2ZS9kb2NzL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncC1nb29nbGUtY2hhcnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgI2NoYXJ0Q29udGFpbmVyIGNsYXNzPVwie3sgY29udGFpbmVyQ2xhc3NlcyB9fVwiIFtuZ1N0eWxlXT1cInN0eWxlXCI+PC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBHb29nbGVDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKVxuICBjaGFydFR5cGU6ICdBbm5vdGF0aW9uQ2hhcnQnIHwgJ0FyZWFDaGFydCcgPSAnQXJlYUNoYXJ0JztcblxuICBASW5wdXQoKVxuICBkYXRhVGFibGU6IGFueVtdO1xuXG4gIEBJbnB1dCgpXG4gIGNvbHVtbnM6IEdvb2dsZUNoYXJ0LkNvbHVtbltdO1xuXG4gIEBJbnB1dCgpXG4gIHJvd3M6IEFycmF5PGFueVtdPjtcblxuICBASW5wdXQoKVxuICBvcHRpb25zOiBHb29nbGVDaGFydC5Bbm5vdGF0aW9uT3B0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9ID0geyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyB9O1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5lckNsYXNzZXM6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGRyYXdGbiA9IF8gPT4ge1xuICAgIGlmICh0aGlzLmRhdGFUYWJsZSAmJiB0aGlzLmRhdGFUYWJsZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGdvb2dsZS52aXN1YWxpemF0aW9uLmFycmF5VG9EYXRhVGFibGUodGhpcy5kYXRhVGFibGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggJiYgdGhpcy5yb3dzICYmIHRoaXMucm93cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTtcbiAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB0aGlzLmRhdGEuYWRkQ29sdW1uKGNvbHVtbi50eXBlLCBjb2x1bW4ubGFiZWwpKTtcbiAgICAgIHRoaXMuZGF0YS5hZGRSb3dzKHRoaXMucm93cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ011c3Qgc2V0IGRhdGF0YWJsZSBvciBjb2x1bW5zIGFuZCByb3dzIGlucHV0cycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb25bdGhpcy5jaGFydFR5cGVdKHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5jaGFydC5kcmF3KHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcblxuICAgIHRoaXMucmVhZHkuZW1pdCgpO1xuICB9O1xuXG4gIEBPdXRwdXQoKVxuICByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAVmlld0NoaWxkKCdjaGFydENvbnRhaW5lcicpIGNoYXJ0Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBjaGFydDogYW55O1xuXG4gIHB1YmxpYyBkYXRhOiBhbnk7XG5cbiAgZ2V0IHBhY2thZ2VzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5jaGFydFR5cGUgPT09ICdBbm5vdGF0aW9uQ2hhcnQnKSByZXR1cm4gW3RoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgcmV0dXJuIFsnY29yZWNoYXJ0J107XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhenlMb2FkU2NyaXB0U2VydmljZTogTGF6eUxvYWRTY3JpcHRTZXJ2aWNlKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmxhenlMb2FkU2NyaXB0U2VydmljZVxuICAgICAgLmxvYWRTY3JpcHQoJ2h0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2NoYXJ0cy9sb2FkZXIuanMnKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIGdvb2dsZS5jaGFydHMubG9hZCgnY3VycmVudCcsIHsgcGFja2FnZXM6IHRoaXMucGFja2FnZXMgfSk7XG4gICAgICAgIGdvb2dsZS5jaGFydHMuc2V0T25Mb2FkQ2FsbGJhY2sodGhpcy5kcmF3Rm4pO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==