108 lines
3.2 KiB
TypeScript
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();
|
|
},
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|