2019-07-09 11:41:17 +00:00
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
|
|
import { ChartOptions, ChartType, ChartDataSets } from 'chart.js';
|
|
|
|
import { Color } from 'ng2-charts';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'app-bubble-chart',
|
2019-07-12 16:12:01 +00:00
|
|
|
templateUrl: './bubble-panel.component.html',
|
2019-07-09 11:41:17 +00:00
|
|
|
})
|
|
|
|
export class BubbleChartComponent implements OnInit {
|
|
|
|
public bubbleChartOptions: ChartOptions = {
|
|
|
|
responsive: true,
|
|
|
|
scales: {
|
|
|
|
xAxes: [
|
|
|
|
{
|
|
|
|
ticks: {
|
|
|
|
min: 0,
|
|
|
|
max: 30,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
yAxes: [
|
|
|
|
{
|
|
|
|
ticks: {
|
|
|
|
min: 0,
|
|
|
|
max: 30,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
};
|
|
|
|
public bubbleChartType: ChartType = 'bubble';
|
|
|
|
public bubbleChartLegend = true;
|
|
|
|
|
|
|
|
public bubbleChartData: ChartDataSets[] = [
|
|
|
|
{
|
|
|
|
data: [
|
|
|
|
{ x: 10, y: 10, r: 10 },
|
|
|
|
{ x: 15, y: 5, r: 15 },
|
|
|
|
{ x: 26, y: 12, r: 23 },
|
|
|
|
{ x: 7, y: 8, r: 8 },
|
|
|
|
],
|
|
|
|
label: 'Series A',
|
|
|
|
backgroundColor: 'green',
|
|
|
|
borderColor: 'blue',
|
|
|
|
hoverBackgroundColor: 'purple',
|
|
|
|
hoverBorderColor: 'red',
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
public bubbleChartColors: Color[] = [
|
|
|
|
{
|
|
|
|
backgroundColor: [
|
|
|
|
'red',
|
|
|
|
'green',
|
|
|
|
'blue',
|
|
|
|
'purple',
|
|
|
|
'yellow',
|
|
|
|
'brown',
|
|
|
|
'magenta',
|
|
|
|
'cyan',
|
|
|
|
'orange',
|
|
|
|
'pink'
|
|
|
|
]
|
|
|
|
}
|
|
|
|
];
|
|
|
|
|
|
|
|
constructor() { }
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
}
|
|
|
|
|
|
|
|
// events
|
|
|
|
public chartClicked({ event, active }: { event: MouseEvent, active: {}[] }): void {
|
|
|
|
console.log(event, active);
|
|
|
|
}
|
|
|
|
|
|
|
|
public chartHovered({ event, active }: { event: MouseEvent, active: {}[] }): void {
|
|
|
|
console.log(event, active);
|
|
|
|
}
|
|
|
|
|
|
|
|
private rand(max: number) {
|
|
|
|
return Math.trunc(Math.random() * max);
|
|
|
|
}
|
|
|
|
|
|
|
|
private randomPoint(maxCoordinate: number) {
|
|
|
|
const x = this.rand(maxCoordinate);
|
|
|
|
const y = this.rand(maxCoordinate);
|
|
|
|
const r = this.rand(30) + 5;
|
|
|
|
return { x, y, r };
|
|
|
|
}
|
|
|
|
|
|
|
|
public randomize(): void {
|
|
|
|
const numberOfPoints = this.rand(5) + 5;
|
|
|
|
const data = Array.apply(null, { length: numberOfPoints }).map(r => this.randomPoint(30));
|
|
|
|
this.bubbleChartData[0].data = data;
|
|
|
|
}
|
2019-07-12 16:12:01 +00:00
|
|
|
}
|