Files
rossa-tech/rossa-tech-cli/src/app/components/dashboard/dashboard.component.ts
2023-05-23 19:43:12 +02:00

108 lines
3.2 KiB
TypeScript

import { HttpErrorResponse } from '@angular/common/http';
import { Component } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { LoaderService } from 'src/app/components/loader/loader.service';
import { MeterData } from 'src/app/core/dataModels/Meterdata';
import { UsageType } from 'src/app/core/dataModels/UsageType';
import { DatabaseService } from 'src/app/core/services/database.service';
import { ErrorService } from 'src/app/core/services/error.service';
import { GlobalService } from 'src/app/core/services/global.service';
import { MeterDataAddDialogComponent } from 'src/app/dialogs/meter-data-add-dialog/meter-data-add-dialog.component';
@Component({
selector: 'app-dashboard',
templateUrl: './dashboard.component.html',
styleUrls: ['./dashboard.component.scss'],
})
export class DashboardComponent {
usageTypes = UsageType;
meterDataEnergy: MeterData[] = [];
meterDataWater: MeterData[] = [];
meterDataEnergyDTO: MeterData[] = [];
meterDataWaterDTO: MeterData[] = [];
energyAverageAmountLastYear1Log: number = 0;
energyAverageAmountLastYear1Hem: number = 0;
waterAverageAmountLastYear: number = 0;
displayedColumns: string[] = ['date', 'amount', 'meter'];
constructor(
private dataService: DatabaseService,
private loaderService: LoaderService,
private globalService: GlobalService,
private errorService: ErrorService,
private dialog: MatDialog
) {
this.loadMeterData();
}
loadMeterData(): void {
this.loaderService.show();
this.dataService.getMeterData().subscribe({
next: (data) => {
this.splitMeterData(data);
this.loaderService.hide();
console.log('Meter data:', data);
},
error: (error: HttpErrorResponse) => {
this.errorService.handleError(error);
this.loaderService.hide();
},
});
}
splitMeterData(meterData: MeterData[]): void {
if (meterData) {
meterData.forEach((data) => {
if (data.type === this.usageTypes.ENERGY) {
this.meterDataEnergy.push(data);
} else if (data.type === this.usageTypes.WATER) {
this.meterDataWater.push(data);
}
});
this.initEnergyMeterData();
this.initWaterMeterDate();
}
}
initEnergyMeterData(): void {
this.meterDataEnergy = this.globalService.sortMeterData(
this.meterDataEnergy
);
this.meterDataEnergyDTO = this.meterDataEnergy;
}
initWaterMeterDate(): void {
this.meterDataWater = this.globalService.sortMeterData(this.meterDataWater);
this.meterDataWaterDTO = this.meterDataWater;
}
addMeterData(): void {
const dialogRef = this.dialog.open(MeterDataAddDialogComponent, {
width: '400px',
data: {},
restoreFocus: false,
});
dialogRef.afterClosed().subscribe((newMeterData: MeterData) => {
console.log({ newMeterData });
if (newMeterData) {
this.dataService.addMeterData(newMeterData).subscribe({
next: (meterData: MeterData) => {
console.log({ meterData });
},
error: (error: HttpErrorResponse) => {
this.errorService.handleError(error);
this.loaderService.hide();
},
});
}
});
}
}