UNPKG

@ngx-performance-ui/ui

Version:
180 lines (179 loc) 16 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core'; import { GoogleChartComponent } from '../google-chart/google-chart.component'; import { Store } from '@ngxs/store'; import { ToasterShow } from '../../actions'; export class AnnotationChartComponent { /** * @param {?} store */ constructor(store) { this.store = store; // https://developers.google.com/chart/interactive/docs/gallery/annotationchart this.annotationChartColumns = [ { type: 'date', label: 'Date' }, { type: 'number', label: 'Kepler-22b mission' }, { type: 'string', label: 'Kepler title' }, { type: 'string', label: 'Kepler text' }, { type: 'number', label: 'Gliese 163 mission' }, { type: 'string', label: 'Gliese title' }, { type: 'string', label: 'Gliese text' }, ]; this.annotationChartRows = [ [new Date(2314, 2, 15), 12400, undefined, undefined, 10645, undefined, undefined], [new Date(2314, 2, 16), 24045, 'Lalibertines', 'First encounter', 12374, undefined, undefined], [new Date(2314, 2, 17), 35022, 'Lalibertines', 'They are very tall', 15766, 'Gallantors', 'First Encounter'], [ new Date(2314, 2, 18), 12284, 'Lalibertines', 'Attack on our crew!', 34334, 'Gallantors', 'Statement of shared principles', ], [new Date(2314, 2, 19), 8476, 'Lalibertines', 'Heavy casualties', 66467, 'Gallantors', 'Mysteries revealed'], [new Date(2314, 2, 20), 0, 'Lalibertines', 'All crew lost', 79463, 'Gallantors', 'Omniscience achieved'], ]; this.annotationChartOptions = { displayAnnotations: true, }; } /** * @return {?} */ get chart() { return this.annotationChart.chart; } /** * @return {?} */ rangeChangeHandler() { google.visualization.events.addListener(this.chart, 'rangechange', (/** * @param {?} event * @return {?} */ event => { console.log('You changed the range to ', event['start'], ' and ', event['end']); })); } /** * @return {?} */ clearChart() { this.chart.clearChart(); } /** * @return {?} */ getContainer() { console.log(this.chart.getContainer()); this.showToaster(); } /** * @return {?} */ getSelection() { console.log(this.chart.getSelection()); this.showToaster(); } /** * @return {?} */ getVisibleChartRange() { console.log(this.chart.getVisibleChartRange()); this.showToaster(); } /** * @param {?} index * @return {?} */ hideDataColumns(index) { this.chart.hideDataColumns(index); } /** * @param {?} index * @return {?} */ showDataColumns(index) { this.chart.showDataColumns(index); } /** * @param {?} start * @param {?} end * @return {?} */ setVisibleChartRange(start, end) { this.chart.setVisibleChartRange(start, end); } /** * @return {?} */ showToaster() { this.store.dispatch(new ToasterShow({ body: 'Check the console' })); } } AnnotationChartComponent.decorators = [ { type: Component, args: [{ selector: 'p-annotation-chart', template: ` <p-google-chart #annotationChart chartType="AnnotationChart" [columns]="annotationChartColumns" [rows]="annotationChartRows" [options]="annotationChartOptions" (ready)="rangeChangeHandler()" ></p-google-chart> <div *ngIf="chart" class="row mt-2"> <div class="col-12"> <h4>Methods</h4> <button (click)="clearChart()" class="btn btn-sm btn-secondary m-1">clearChart()</button> <button (click)="hideDataColumns([1, 2, 3])" class="btn btn-sm btn-secondary m-1"> hideDataColumns(columnIndexes) </button> <button (click)="showDataColumns([1, 2, 3])" class="btn btn-sm btn-secondary m-1"> showDataColumns(columnIndexes) </button> <button (click)="getContainer()" class="btn btn-sm btn-secondary m-1">getContainer()</button> <button (click)="getSelection()" class="btn btn-sm btn-secondary m-1">getSelection()</button> <button (click)="getVisibleChartRange()" class="btn btn-sm btn-secondary m-1">getVisibleChartRange()</button> <button (click)="setVisibleChartRange(annotationChartRows[0][0], annotationChartRows[1][0])" class="btn btn-sm btn-secondary m-1" > setVisibleChartRange(start, end) </button> </div> </div> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ AnnotationChartComponent.ctorParameters = () => [ { type: Store } ]; AnnotationChartComponent.propDecorators = { annotationChart: [{ type: ViewChild, args: ['annotationChart',] }] }; if (false) { /** @type {?} */ AnnotationChartComponent.prototype.annotationChartColumns; /** @type {?} */ AnnotationChartComponent.prototype.annotationChartRows; /** @type {?} */ AnnotationChartComponent.prototype.annotationChartOptions; /** @type {?} */ AnnotationChartComponent.prototype.annotationChart; /** * @type {?} * @private */ AnnotationChartComponent.prototype.store; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXBlcmZvcm1hbmNlLXVpL3VpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhcnRzL2Fubm90YXRpb24tY2hhcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF5QzVDLE1BQU0sT0FBTyx3QkFBd0I7Ozs7SUF1Q25DLFlBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPOztRQXJDaEMsMkJBQXNCLEdBQXlCO1lBQzdDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQy9CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7WUFDL0MsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7WUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDeEMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtZQUMvQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUN6QyxDQUFDO1FBRUYsd0JBQW1CLEdBQWlCO1lBQ2xDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFB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RyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs7WUFySEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozs7WUF6Q1EsS0FBSzs7OzhCQTJFWCxTQUFTLFNBQUMsaUJBQWlCOzs7O0lBL0I1QiwwREFRRTs7SUFFRix1REFlRTs7SUFFRiwwREFFRTs7SUFFRixtREFBb0U7Ozs7O0lBTXhELHlDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdvb2dsZUNoYXJ0IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEdvb2dsZUNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vZ29vZ2xlLWNoYXJ0L2dvb2dsZS1jaGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2hvdyB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xuXG5kZWNsYXJlIHZhciBnb29nbGU7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3AtYW5ub3RhdGlvbi1jaGFydCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHAtZ29vZ2xlLWNoYXJ0XG4gICAgICAjYW5ub3RhdGlvbkNoYXJ0XG4gICAgICBjaGFydFR5cGU9XCJBbm5vdGF0aW9uQ2hhcnRcIlxuICAgICAgW2NvbHVtbnNdPVwiYW5ub3RhdGlvbkNoYXJ0Q29sdW1uc1wiXG4gICAgICBbcm93c109XCJhbm5vdGF0aW9uQ2hhcnRSb3dzXCJcbiAgICAgIFtvcHRpb25zXT1cImFubm90YXRpb25DaGFydE9wdGlvbnNcIlxuICAgICAgKHJlYWR5KT1cInJhbmdlQ2hhbmdlSGFuZGxlcigpXCJcbiAgICA+PC9wLWdvb2dsZS1jaGFydD5cblxuICAgIDxkaXYgKm5nSWY9XCJjaGFydFwiIGNsYXNzPVwicm93IG10LTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPGg0Pk1ldGhvZHM8L2g0PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhckNoYXJ0KClcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBtLTFcIj5jbGVhckNoYXJ0KCk8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGlkZURhdGFDb2x1bW5zKFsxLCAyLCAzXSlcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBtLTFcIj5cbiAgICAgICAgICBoaWRlRGF0YUNvbHVtbnMoY29sdW1uSW5kZXhlcylcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNob3dEYXRhQ29sdW1ucyhbMSwgMiwgM10pXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgbS0xXCI+XG4gICAgICAgICAgc2hvd0RhdGFDb2x1bW5zKGNvbHVtbkluZGV4ZXMpXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnZXRDb250YWluZXIoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IG0tMVwiPmdldENvbnRhaW5lcigpPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdldFNlbGVjdGlvbigpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgbS0xXCI+Z2V0U2VsZWN0aW9uKCk8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ2V0VmlzaWJsZUNoYXJ0UmFuZ2UoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IG0tMVwiPmdldFZpc2libGVDaGFydFJhbmdlKCk8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJzZXRWaXNpYmxlQ2hhcnRSYW5nZShhbm5vdGF0aW9uQ2hhcnRSb3dzWzBdWzBdLCBhbm5vdGF0aW9uQ2hhcnRSb3dzWzFdWzBdKVwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgbS0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIHNldFZpc2libGVDaGFydFJhbmdlKHN0YXJ0LCBlbmQpXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBbm5vdGF0aW9uQ2hhcnRDb21wb25lbnQge1xuICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9jaGFydC9pbnRlcmFjdGl2ZS9kb2NzL2dhbGxlcnkvYW5ub3RhdGlvbmNoYXJ0XG4gIGFubm90YXRpb25DaGFydENvbHVtbnM6IEdvb2dsZUNoYXJ0LkNvbHVtbltdID0gW1xuICAgIHsgdHlwZTogJ2RhdGUnLCBsYWJlbDogJ0RhdGUnIH0sXG4gICAgeyB0eXBlOiAnbnVtYmVyJywgbGFiZWw6ICdLZXBsZXItMjJiIG1pc3Npb24nIH0sXG4gICAgeyB0eXBlOiAnc3RyaW5nJywgbGFiZWw6ICdLZXBsZXIgdGl0bGUnIH0sXG4gICAgeyB0eXBlOiAnc3RyaW5nJywgbGFiZWw6ICdLZXBsZXIgdGV4dCcgfSxcbiAgICB7IHR5cGU6ICdudW1iZXInLCBsYWJlbDogJ0dsaWVzZSAxNjMgbWlzc2lvbicgfSxcbiAgICB7IHR5cGU6ICdzdHJpbmcnLCBsYWJlbDogJ0dsaWVzZSB0aXRsZScgfSxcbiAgICB7IHR5cGU6ICdzdHJpbmcnLCBsYWJlbDogJ0dsaWVzZSB0ZXh0JyB9LFxuICBdO1xuXG4gIGFubm90YXRpb25DaGFydFJvd3M6IEFycmF5PGFueVtdPiA9IFtcbiAgICBbbmV3IERhdGUoMjMxNCwgMiwgMTUpLCAxMjQwMCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEwNjQ1LCB1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgW25ldyBEYXRlKDIzMTQsIDIsIDE2KSwgMjQwNDUsICdMYWxpYmVydGluZXMnLCAnRmlyc3QgZW5jb3VudGVyJywgMTIzNzQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICBbbmV3IERhdGUoMjMxNCwgMiwgMTcpLCAzNTAyMiwgJ0xhbGliZXJ0aW5lcycsICdUaGV5IGFyZSB2ZXJ5IHRhbGwnLCAxNTc2NiwgJ0dhbGxhbnRvcnMnLCAnRmlyc3QgRW5jb3VudGVyJ10sXG4gICAgW1xuICAgICAgbmV3IERhdGUoMjMxNCwgMiwgMTgpLFxuICAgICAgMTIyODQsXG4gICAgICAnTGFsaWJlcnRpbmVzJyxcbiAgICAgICdBdHRhY2sgb24gb3VyIGNyZXchJyxcbiAgICAgIDM0MzM0LFxuICAgICAgJ0dhbGxhbnRvcnMnLFxuICAgICAgJ1N0YXRlbWVudCBvZiBzaGFyZWQgcHJpbmNpcGxlcycsXG4gICAgXSxcbiAgICBbbmV3IERhdGUoMjMxNCwgMiwgMTkpLCA4NDc2LCAnTGFsaWJlcnRpbmVzJywgJ0hlYXZ5IGNhc3VhbHRpZXMnLCA2NjQ2NywgJ0dhbGxhbnRvcnMnLCAnTXlzdGVyaWVzIHJldmVhbGVkJ10sXG4gICAgW25ldyBEYXRlKDIzMTQsIDIsIDIwKSwgMCwgJ0xhbGliZXJ0aW5lcycsICdBbGwgY3JldyBsb3N0JywgNzk0NjMsICdHYWxsYW50b3JzJywgJ09tbmlzY2llbmNlIGFjaGlldmVkJ10sXG4gIF07XG5cbiAgYW5ub3RhdGlvbkNoYXJ0T3B0aW9uczogR29vZ2xlQ2hhcnQuQW5ub3RhdGlvbk9wdGlvbiA9IHtcbiAgICBkaXNwbGF5QW5ub3RhdGlvbnM6IHRydWUsXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnYW5ub3RhdGlvbkNoYXJ0JykgYW5ub3RhdGlvbkNoYXJ0OiBHb29nbGVDaGFydENvbXBvbmVudDtcblxuICBnZXQgY2hhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5ub3RhdGlvbkNoYXJ0LmNoYXJ0O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgcmFuZ2VDaGFuZ2VIYW5kbGVyKCkge1xuICAgIGdvb2dsZS52aXN1YWxpemF0aW9uLmV2ZW50cy5hZGRMaXN0ZW5lcih0aGlzLmNoYXJ0LCAncmFuZ2VjaGFuZ2UnLCBldmVudCA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnWW91IGNoYW5nZWQgdGhlIHJhbmdlIHRvICcsIGV2ZW50WydzdGFydCddLCAnIGFuZCAnLCBldmVudFsnZW5kJ10pO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYXJDaGFydCgpIHtcbiAgICB0aGlzLmNoYXJ0LmNsZWFyQ2hhcnQoKTtcbiAgfVxuXG4gIGdldENvbnRhaW5lcigpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNoYXJ0LmdldENvbnRhaW5lcigpKTtcbiAgICB0aGlzLnNob3dUb2FzdGVyKCk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb24oKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5jaGFydC5nZXRTZWxlY3Rpb24oKSk7XG4gICAgdGhpcy5zaG93VG9hc3RlcigpO1xuICB9XG5cbiAgZ2V0VmlzaWJsZUNoYXJ0UmFuZ2UoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5jaGFydC5nZXRWaXNpYmxlQ2hhcnRSYW5nZSgpKTtcbiAgICB0aGlzLnNob3dUb2FzdGVyKCk7XG4gIH1cblxuICBoaWRlRGF0YUNvbHVtbnMoaW5kZXg6IG51bWJlciB8IG51bWJlcltdKSB7XG4gICAgdGhpcy5jaGFydC5oaWRlRGF0YUNvbHVtbnMoaW5kZXgpO1xuICB9XG5cbiAgc2hvd0RhdGFDb2x1bW5zKGluZGV4OiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIHRoaXMuY2hhcnQuc2hvd0RhdGFDb2x1bW5zKGluZGV4KTtcbiAgfVxuXG4gIHNldFZpc2libGVDaGFydFJhbmdlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpIHtcbiAgICB0aGlzLmNoYXJ0LnNldFZpc2libGVDaGFydFJhbmdlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgc2hvd1RvYXN0ZXIoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVG9hc3RlclNob3coeyBib2R5OiAnQ2hlY2sgdGhlIGNvbnNvbGUnIH0pKTtcbiAgfVxufVxuIl19