@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
180 lines (179 loc) • 16 kB
JavaScript
/**
* @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