274 lines
8.4 KiB
TypeScript
274 lines
8.4 KiB
TypeScript
import { Component, OnDestroy, OnInit } from '@angular/core';
|
|
import { Subscription } from 'rxjs';
|
|
import { LayoutService } from 'src/app/layout/service/app.layout.service';
|
|
|
|
@Component({
|
|
templateUrl: './charts.component.html'
|
|
})
|
|
export class ChartsComponent implements OnInit, OnDestroy {
|
|
|
|
lineData: any;
|
|
|
|
barData: any;
|
|
|
|
pieData: any;
|
|
|
|
polarData: any;
|
|
|
|
radarData: any;
|
|
|
|
lineOptions: any;
|
|
|
|
barOptions: any;
|
|
|
|
pieOptions: any;
|
|
|
|
polarOptions: any;
|
|
|
|
radarOptions: any;
|
|
|
|
subscription!: Subscription;
|
|
|
|
constructor(public layoutService: LayoutService) {
|
|
this.subscription = this.layoutService.configUpdate$.subscribe(() => {
|
|
this.initCharts();
|
|
});
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.initCharts();
|
|
}
|
|
|
|
initCharts() {
|
|
const documentStyle = getComputedStyle(document.documentElement);
|
|
const textColor = documentStyle.getPropertyValue('--text-color');
|
|
const textColorSecondary = documentStyle.getPropertyValue('--text-color-secondary');
|
|
const surfaceBorder = documentStyle.getPropertyValue('--surface-border');
|
|
|
|
this.barData = {
|
|
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
|
datasets: [
|
|
{
|
|
label: 'My First dataset',
|
|
backgroundColor: documentStyle.getPropertyValue('--primary-500'),
|
|
borderColor: documentStyle.getPropertyValue('--primary-700'),
|
|
data: [65, 59, 80, 81, 56, 55, 40]
|
|
},
|
|
{
|
|
label: 'My Second dataset',
|
|
backgroundColor: documentStyle.getPropertyValue('--bluegray-500'),
|
|
borderColor: documentStyle.getPropertyValue('--bluegray-500'),
|
|
data: [28, 48, 40, 19, 86, 27, 90]
|
|
}
|
|
]
|
|
};
|
|
|
|
this.barOptions = {
|
|
plugins: {
|
|
legend: {
|
|
labels: {
|
|
color: textColor
|
|
}
|
|
}
|
|
},
|
|
scales: {
|
|
x: {
|
|
ticks: {
|
|
color: textColorSecondary,
|
|
font: {
|
|
weight: 500
|
|
}
|
|
},
|
|
grid: {
|
|
color:[surfaceBorder],
|
|
drawBorder: false
|
|
}
|
|
},
|
|
y: {
|
|
ticks: {
|
|
color: textColorSecondary
|
|
},
|
|
grid: {
|
|
color:[surfaceBorder],
|
|
drawBorder: false
|
|
}
|
|
},
|
|
}
|
|
};
|
|
|
|
this.pieData = {
|
|
labels: ['A', 'B', 'C'],
|
|
datasets: [
|
|
{
|
|
data: [540, 325, 702],
|
|
backgroundColor: [
|
|
documentStyle.getPropertyValue('--yellow-500'),
|
|
documentStyle.getPropertyValue('--blue-500'),
|
|
documentStyle.getPropertyValue('--pink-500')
|
|
],
|
|
hoverBackgroundColor: [
|
|
documentStyle.getPropertyValue('--yellow-400'),
|
|
documentStyle.getPropertyValue('--blue-400'),
|
|
documentStyle.getPropertyValue('--red-400')
|
|
],
|
|
borderColor: [surfaceBorder]
|
|
}]
|
|
};
|
|
|
|
this.pieOptions = {
|
|
plugins: {
|
|
legend: {
|
|
labels: {
|
|
usePointStyle: true,
|
|
color: textColor
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
this.lineData = {
|
|
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
|
datasets: [
|
|
{
|
|
label: 'First Dataset',
|
|
data: [65, 59, 80, 81, 56, 55, 40],
|
|
fill: false,
|
|
backgroundColor: documentStyle.getPropertyValue('--primary-700'),
|
|
borderColor: documentStyle.getPropertyValue('--primary-700'),
|
|
tension: .4
|
|
},
|
|
{
|
|
label: 'Second Dataset',
|
|
data: [28, 48, 40, 19, 86, 27, 90],
|
|
fill: false,
|
|
backgroundColor: documentStyle.getPropertyValue('--bluegray-600'),
|
|
borderColor: documentStyle.getPropertyValue('--bluegray-600'),
|
|
tension: .4
|
|
}
|
|
]
|
|
};
|
|
|
|
this.lineOptions = {
|
|
plugins: {
|
|
legend: {
|
|
labels: {
|
|
color: textColor
|
|
}
|
|
}
|
|
},
|
|
scales: {
|
|
x: {
|
|
ticks: {
|
|
color: textColorSecondary
|
|
},
|
|
grid: {
|
|
color: [surfaceBorder],
|
|
drawBorder: false
|
|
}
|
|
},
|
|
y: {
|
|
ticks: {
|
|
color: textColorSecondary
|
|
},
|
|
grid: {
|
|
color: [surfaceBorder],
|
|
drawBorder: false
|
|
}
|
|
},
|
|
}
|
|
};
|
|
|
|
this.polarData = {
|
|
datasets: [{
|
|
data: [
|
|
11,
|
|
16,
|
|
7,
|
|
3
|
|
],
|
|
backgroundColor: [
|
|
documentStyle.getPropertyValue('--red-500'),
|
|
documentStyle.getPropertyValue('--blue-500'),
|
|
documentStyle.getPropertyValue('--yellow-500'),
|
|
documentStyle.getPropertyValue('--green-500')
|
|
],
|
|
label: 'My dataset'
|
|
}],
|
|
labels: [
|
|
'Red',
|
|
'Blue',
|
|
'Yellow',
|
|
'Green'
|
|
]
|
|
};
|
|
|
|
this.polarOptions = {
|
|
plugins: {
|
|
legend: {
|
|
labels: {
|
|
color: textColor
|
|
}
|
|
}
|
|
},
|
|
scales: {
|
|
r: {
|
|
grid: {
|
|
color: surfaceBorder
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
this.radarData = {
|
|
labels: ['Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running'],
|
|
datasets: [
|
|
{
|
|
label: 'My First dataset',
|
|
borderColor: documentStyle.getPropertyValue('--red-500'),
|
|
pointBackgroundColor: documentStyle.getPropertyValue('--red-500'),
|
|
pointBorderColor: documentStyle.getPropertyValue('--red-500'),
|
|
pointHoverBackgroundColor: textColor,
|
|
pointHoverBorderColor: documentStyle.getPropertyValue('--red-500'),
|
|
data: [65, 59, 90, 81, 56, 55, 40]
|
|
},
|
|
{
|
|
label: 'My Second dataset',
|
|
borderColor: documentStyle.getPropertyValue('--bluegray-500'),
|
|
pointBackgroundColor: documentStyle.getPropertyValue('--bluegray-500'),
|
|
pointBorderColor: documentStyle.getPropertyValue('--bluegray-500'),
|
|
pointHoverBackgroundColor: textColor,
|
|
pointHoverBorderColor: documentStyle.getPropertyValue('--bluegray-500'),
|
|
data: [28, 48, 40, 19, 96, 27, 100]
|
|
}
|
|
]
|
|
};
|
|
|
|
this.radarOptions = {
|
|
plugins: {
|
|
legend: {
|
|
labels: {
|
|
color: textColor
|
|
}
|
|
}
|
|
},
|
|
scales: {
|
|
r: {
|
|
pointLabels: {
|
|
color: textColor
|
|
},
|
|
grid: {
|
|
color:[surfaceBorder],
|
|
drawBorder: false
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
if (this.subscription) {
|
|
this.subscription.unsubscribe();
|
|
}
|
|
}
|
|
}
|