- @for (node of node.nodes | async | nodeFilter: 'name' : searchFilter; track node) {
-
+ @for (subNode of node().nodes | async | nodeFilter: 'name' : searchFilter(); track subNode) {
+
}
diff --git a/angular-client/src/pages/graph-page/graph-sidebar/node-display/node-display.component.ts b/angular-client/src/pages/graph-page/graph-sidebar/node-display/node-display.component.ts
index 7b90aa86..412da79d 100644
--- a/angular-client/src/pages/graph-page/graph-sidebar/node-display/node-display.component.ts
+++ b/angular-client/src/pages/graph-page/graph-sidebar/node-display/node-display.component.ts
@@ -1,5 +1,5 @@
import { animate, state, style, transition, trigger } from '@angular/animations';
-import { Component, Input, inject } from '@angular/core';
+import { Component, inject, input } from '@angular/core';
import { NodeWithVisibilityToggle } from 'src/utils/types.utils';
import { AsyncPipe } from '@angular/common';
@@ -64,9 +64,9 @@ import { TopicSelectionService } from 'src/services/topic-selection.service';
imports: [AsyncPipe, NodeFilterPipe, SidebarCardComponent]
})
export default class NodeDisplayComponent {
- @Input() node!: NodeWithVisibilityToggle;
- @Input() isDesktop: boolean = true;
- @Input() searchFilter: string = '';
+ node = input.required
();
+ isDesktop = input(true);
+ searchFilter = input('');
private topicSelection = inject(TopicSelectionService);
diff --git a/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.html b/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.html
index 14bb0a81..f6d3647e 100644
--- a/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.html
+++ b/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.html
@@ -1,6 +1,10 @@
-
- @if (dropDown) {
-
+ @if (dropDown()) {
+ arrow_right
}
@@ -8,12 +12,12 @@
-
+
diff --git a/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.ts b/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.ts
index ef2aa7cb..3897726c 100644
--- a/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.ts
+++ b/angular-client/src/pages/graph-page/graph-sidebar/sidebar-card/sidebar-card.component.ts
@@ -1,4 +1,4 @@
-import { Component, inject, Input, OnInit } from '@angular/core';
+import { Component, OnInit, inject, input, signal } from '@angular/core';
import Storage from 'src/services/storage.service';
import { decimalPipe } from 'src/utils/pipes.utils';
import { MatIcon } from '@angular/material/icon';
@@ -20,20 +20,20 @@ import TypographyComponent from 'src/components/typography/typography.component'
export default class SidebarCardComponent implements OnInit {
private storage = inject(Storage);
- @Input() title!: string;
- @Input() dropDown?: boolean;
- @Input() open?: boolean;
- @Input() dataValue?: string;
- @Input() topicName!: string;
- @Input() isDesktop: boolean = true;
+ title = input.required
();
+ dropDown = input(undefined);
+ open = input(undefined);
+ dataValue = signal(undefined);
+ topicName = input.required();
+ isDesktop = input(true);
iconId!: string;
ngOnInit(): void {
- this.iconId = `${this.title}-icon`;
+ this.iconId = `${this.title()}-icon`;
- this.storage.get(this.topicName.slice(0, -1)).subscribe((value) => {
+ this.storage.get(this.topicName().slice(0, -1)).subscribe((value) => {
const displayValue = decimalPipe(value.values[0], 3).toFixed(3) + value.unit;
- this.dataValue = displayValue;
+ this.dataValue.set(displayValue);
});
}
@@ -41,7 +41,7 @@ export default class SidebarCardComponent implements OnInit {
* Runs animation when card is selected
*/
selectCard() {
- const card = document.getElementById(this.title);
+ const card = document.getElementById(this.title());
if (card) {
card.classList.add('selected');
setTimeout(() => {
diff --git a/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.html b/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.html
index 4738273d..009e11e8 100644
--- a/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.html
+++ b/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.html
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.ts b/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.ts
index 2e2fa133..4d48bee6 100644
--- a/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.ts
+++ b/angular-client/src/pages/landing-page/landing-page-mobile/landing-page-mobile.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input } from '@angular/core';
+import { Component, input } from '@angular/core';
import { DriverComponent } from '../../../components/driver-component/driver-component';
import { AccelerationGraphsComponent } from '../../../components/acceleration-graphs/acceleration-graphs.component';
@@ -32,5 +32,5 @@ import SidebarToggleComponent from 'src/components/sidebar-toggle/sidebar-toggle
]
})
export default class LandingPageMobileComponent {
- @Input() time!: Date;
+ time = input.required();
}
diff --git a/angular-client/src/utils/pipes.utils.ts b/angular-client/src/utils/pipes.utils.ts
index c01b09ea..1fb69efe 100644
--- a/angular-client/src/utils/pipes.utils.ts
+++ b/angular-client/src/utils/pipes.utils.ts
@@ -22,3 +22,6 @@ export const decimalPipe = (value: string, places: number = 1): number => {
const decimalMultiplier = 10 ** places;
return Math.round(parseFloat(value) * decimalMultiplier) / decimalMultiplier;
};
+
+export const formatDisplayValue = (value: number | undefined, precision: number, unit: string): string =>
+ (value?.toFixed(precision) ?? '-') + (unit === 'C' ? '\u00B0' : '');