@swimlane/ngx-charts
Version:
Declarative Charting Framework for Angular2 and beyond!
94 lines (80 loc) • 1.75 kB
text/typescript
import {
Component,
Input,
Output,
EventEmitter,
OnChanges,
SimpleChanges,
ChangeDetectionStrategy,
NgZone
} from '@angular/core';
export interface CardModel {
x;
y;
width: number;
height: number;
color: string;
label: string;
data;
tooltipText: string;
}
export class CardSeriesComponent implements OnChanges {
data;
dims;
colors;
select = new EventEmitter();
cards: CardModel[];
constructor(private zone: NgZone) { }
ngOnChanges(changes: SimpleChanges): void {
this.update();
}
update(): void {
this.zone.run(() => {
this.cards = this.getCards();
});
}
getCards(): any[] {
return this.data
.map((d, index) => {
let label = d.data.name;
if (label.constructor.name === 'Date') {
label = label.toLocaleDateString();
} else {
label = label.toLocaleString();
}
d.data.name = label;
let value = d.data.value;
return {
x: d.x,
y: d.y,
width: d.width,
height: d.height,
color: this.colors.getColor(label),
label,
data: d.data,
tooltipText: `${label}: ${value}`
};
});
}
trackBy(index, card): string {
return card.label;
}
onClick(data): void {
this.select.emit(data);
}
}