nx-primeng-sakai-v17/src/app/demo/components/uikit/charts/charts.component.ts
2022-10-13 13:12:26 +03:00

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();
}
}
}