From 1d809f13a7f2a6983fb16aee3e58f840d5d5a857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Fri, 18 Oct 2024 11:23:03 +0200 Subject: [PATCH] centralized "now" timer into Dashboard --- .../air/dashboard-air-tile.component.html | 2 +- .../air/dashboard-air-tile.component.ts | 5 ++- .../pages/dashboard/dashboard.component.html | 4 +-- .../pages/dashboard/dashboard.component.ts | 19 ++++++++++-- .../dashboard-electricity-tile.component.html | 2 +- .../dashboard-electricity-tile.component.ts | 5 ++- .../values-tile/values-tile.component.ts | 31 ++++++++----------- 7 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.html b/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.html index a5b0a03..d28a7f6 100644 --- a/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.html +++ b/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.html @@ -1 +1 @@ - + diff --git a/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.ts b/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.ts index d67387a..0615e7e 100644 --- a/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.ts +++ b/src/main/angular/src/app/pages/dashboard/air/dashboard-air-tile.component.ts @@ -1,4 +1,4 @@ -import {Component} from '@angular/core'; +import {Component, Input} from '@angular/core'; import {ValuesTileComponent} from "../../../shared/values-tile/values-tile.component"; import {Display, DisplayOrSeparator} from "../../../api/series/IValue"; import {SeriesService} from "../../../api/series/series.service"; @@ -14,6 +14,9 @@ import {SeriesService} from "../../../api/series/series.service"; }) export class DashboardAirTileComponent { + @Input() + now!: Date; + constructor( protected readonly seriesService: SeriesService, ) { diff --git a/src/main/angular/src/app/pages/dashboard/dashboard.component.html b/src/main/angular/src/app/pages/dashboard/dashboard.component.html index ddf96d1..2337774 100644 --- a/src/main/angular/src/app/pages/dashboard/dashboard.component.html +++ b/src/main/angular/src/app/pages/dashboard/dashboard.component.html @@ -1,7 +1,7 @@
- +
- +
diff --git a/src/main/angular/src/app/pages/dashboard/dashboard.component.ts b/src/main/angular/src/app/pages/dashboard/dashboard.component.ts index 59b1031..5595350 100644 --- a/src/main/angular/src/app/pages/dashboard/dashboard.component.ts +++ b/src/main/angular/src/app/pages/dashboard/dashboard.component.ts @@ -1,8 +1,11 @@ -import {Component} from '@angular/core'; +import {Component, OnDestroy, OnInit} from '@angular/core'; import {JsonPipe, NgForOf} from "@angular/common"; import {ValuesTileComponent} from "../../shared/values-tile/values-tile.component"; import {DashboardElectricityTileComponent} from "./electricity/dashboard-electricity-tile.component"; import {DashboardAirTileComponent} from "./air/dashboard-air-tile.component"; +import {Subscription, timer} from "rxjs"; + +const UPDATE_INTERVAL_MILLIS = 1000; @Component({ selector: 'app-dashboard', @@ -17,6 +20,18 @@ import {DashboardAirTileComponent} from "./air/dashboard-air-tile.component"; templateUrl: './dashboard.component.html', styleUrl: './dashboard.component.less' }) -export class DashboardComponent { +export class DashboardComponent implements OnInit, OnDestroy { + + protected now: Date = new Date(); + + private timer?: Subscription; + + ngOnInit(): void { + this.timer = timer(0, UPDATE_INTERVAL_MILLIS).subscribe(() => this.now = new Date()); + } + + ngOnDestroy(): void { + this.timer?.unsubscribe(); + } } diff --git a/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.html b/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.html index c9aea84..639bd9c 100644 --- a/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.html +++ b/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.html @@ -1 +1 @@ - + diff --git a/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts b/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts index 21d1ef9..df2e146 100644 --- a/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts +++ b/src/main/angular/src/app/pages/dashboard/electricity/dashboard-electricity-tile.component.ts @@ -1,4 +1,4 @@ -import {Component} from '@angular/core'; +import {Component, Input} from '@angular/core'; import {ValuesTileComponent} from "../../../shared/values-tile/values-tile.component"; import {Display, DisplayOrSeparator} from "../../../api/series/IValue"; import {Value} from "../../../api/series/Value"; @@ -19,6 +19,9 @@ const PRODUCED_UNTIL_METER_CHANGE = 287.995; }) export class DashboardElectricityTileComponent { + @Input() + now!: Date; + constructor( protected readonly seriesService: SeriesService, ) { diff --git a/src/main/angular/src/app/shared/values-tile/values-tile.component.ts b/src/main/angular/src/app/shared/values-tile/values-tile.component.ts index 1ecc515..5c952dd 100644 --- a/src/main/angular/src/app/shared/values-tile/values-tile.component.ts +++ b/src/main/angular/src/app/shared/values-tile/values-tile.component.ts @@ -1,11 +1,8 @@ -import {Component, Input, OnDestroy, OnInit} from '@angular/core'; +import {Component, Input} from '@angular/core'; import {Series} from "../../api/series/Series"; import {DecimalPipe, NgForOf, NgIf} from "@angular/common"; -import {Subscription, timer} from "rxjs"; import {DisplayOrSeparator} from "../../api/series/IValue"; -const UPDATE_INTERVAL_MILLIS = 5000; - const TOO_OLD_MILLIS = 10000; @Component({ @@ -19,14 +16,21 @@ const TOO_OLD_MILLIS = 10000; templateUrl: './values-tile.component.html', styleUrl: './values-tile.component.less' }) -export class ValuesTileComponent implements OnInit, OnDestroy { - - private now: Date = new Date(); - - private timer?: Subscription; +export class ValuesTileComponent { protected valid: boolean = false; + protected _now: Date = new Date(); + + @Input() + set now(now: Date) { + this._now = now; + } + + get now(): Date { + return this._now; + } + @Input() title: string = ''; @@ -93,16 +97,7 @@ export class ValuesTileComponent implements OnInit, OnDestroy { return ''; } - ngOnInit(): void { - this.timer = timer(0, UPDATE_INTERVAL_MILLIS).subscribe(() => this.displayUpdate()); - } - - ngOnDestroy(): void { - this.timer?.unsubscribe(); - } - private displayUpdate() { - this.now = new Date(); this.valid = this.displayList.some(d => !!d && !!d.iValue && !!d.iValue.date && (this.now.getTime() - d.iValue.date.getTime()) <= TOO_OLD_MILLIS) }