From f431fb3e94a7a0c47216f673af5de37d6caf6274 Mon Sep 17 00:00:00 2001 From: ivan-pelly Date: Sat, 14 Mar 2026 18:22:49 -0700 Subject: [PATCH] UI bug fixes --- .../benchmark-card-full/benchmark-card-full.ts | 1 + .../components/goal-card-full/goal-card-full.html | 9 +++++---- .../components/goal-card-full/goal-card-full.ts | 2 +- .../src/app/desktop/components/goal-list/goal-list.ts | 1 + .../components/student-card-list/student-card-list.ts | 3 +++ .../src/app/desktop/pages/home/home.ts | 1 + .../src/app/mobile/pages/students/students.html | 9 ++++++++- .../src/app/mobile/pages/students/students.scss | 10 ++++++++++ .../src/app/mobile/pages/students/students.ts | 2 ++ 9 files changed, 32 insertions(+), 6 deletions(-) diff --git a/ui/winstudentgoaltracker/src/app/desktop/components/benchmark-card-full/benchmark-card-full.ts b/ui/winstudentgoaltracker/src/app/desktop/components/benchmark-card-full/benchmark-card-full.ts index 5b1a8e6..8635c82 100644 --- a/ui/winstudentgoaltracker/src/app/desktop/components/benchmark-card-full/benchmark-card-full.ts +++ b/ui/winstudentgoaltracker/src/app/desktop/components/benchmark-card-full/benchmark-card-full.ts @@ -82,6 +82,7 @@ export class BenchmarkCardFull implements OnDestroy { if (result.success) { this.successMessage.set('Benchmark created.'); this.savedBenchmarkText = this.benchmarkText; + this.studentService.notifyDataChanged(); if (result.payload?.benchmarkId) { this.router.navigate(['/students', this.studentId, 'goals', this.goalId, 'benchmarks', result.payload.benchmarkId]); } diff --git a/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.html b/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.html index 559646e..91b6622 100644 --- a/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.html +++ b/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.html @@ -15,8 +15,8 @@ @if (loaded()) {
- - + +
@@ -24,8 +24,9 @@ placeholder="Enter description...">
- - + +
diff --git a/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.ts b/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.ts index 51c09ac..1b04e65 100644 --- a/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.ts +++ b/ui/winstudentgoaltracker/src/app/desktop/components/goal-card-full/goal-card-full.ts @@ -113,7 +113,7 @@ export class GoalCardFull implements OnDestroy { } onBenchmarks() { - this.router.navigate(['/students', this.studentId, 'benchmarks']); + this.router.navigate(['/students', this.studentId, 'goals', this.goalId, 'benchmarks']); } ngOnDestroy() { diff --git a/ui/winstudentgoaltracker/src/app/desktop/components/goal-list/goal-list.ts b/ui/winstudentgoaltracker/src/app/desktop/components/goal-list/goal-list.ts index 027d533..4023964 100644 --- a/ui/winstudentgoaltracker/src/app/desktop/components/goal-list/goal-list.ts +++ b/ui/winstudentgoaltracker/src/app/desktop/components/goal-list/goal-list.ts @@ -50,6 +50,7 @@ export class GoalList implements OnDestroy { this.goals.update(list => [...list, goal]); this.showAddModal.set(false); this.studentService.notifyDataChanged(); + this.router.navigate(['/students', this.studentId, 'goals', goal.goalId]); } onModalCancelled() { diff --git a/ui/winstudentgoaltracker/src/app/desktop/components/student-card-list/student-card-list.ts b/ui/winstudentgoaltracker/src/app/desktop/components/student-card-list/student-card-list.ts index 3461932..ec01e41 100644 --- a/ui/winstudentgoaltracker/src/app/desktop/components/student-card-list/student-card-list.ts +++ b/ui/winstudentgoaltracker/src/app/desktop/components/student-card-list/student-card-list.ts @@ -1,4 +1,5 @@ import { Component, inject, signal } from '@angular/core'; +import { Router } from '@angular/router'; import { StudentCard } from '../student-card/student-card'; import { AddStudentModal } from '../add-student-modal/add-student-modal'; import { DummyStudentService } from '../../../shared/services/dummy-student.service'; @@ -24,6 +25,7 @@ export class StudentCardList { // ************************** Declarations ************************* private readonly studentService = inject(StudentService); + private readonly router = inject(Router); protected readonly students = signal([]); protected readonly displayMode = signal('card'); protected readonly showAddModal = signal(false); @@ -45,6 +47,7 @@ export class StudentCardList { this.students.update(list => this.sortByIdentifier([...list, student])); this.showAddModal.set(false); this.studentService.notifyDataChanged(); + this.router.navigate(['/students', student.studentId]); } onModalCancelled() { diff --git a/ui/winstudentgoaltracker/src/app/desktop/pages/home/home.ts b/ui/winstudentgoaltracker/src/app/desktop/pages/home/home.ts index 1a87ce3..0d78b4f 100644 --- a/ui/winstudentgoaltracker/src/app/desktop/pages/home/home.ts +++ b/ui/winstudentgoaltracker/src/app/desktop/pages/home/home.ts @@ -153,6 +153,7 @@ export class Home implements OnDestroy { .filter(b => b.goalId === goalId) .map(b => ({ label: b.benchmark, + routerLink: ['/students', studentId, 'goals', goalId, 'benchmarks', b.benchmarkId], })); } diff --git a/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.html b/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.html index 1fd2cc6..73297ca 100644 --- a/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.html +++ b/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.html @@ -1,5 +1,12 @@ +@if (loaded() && students().length === 0) { +
+

You don't currently have any students.

+

Please log into the desktop app to add your students.

+
+} @else {
@for (student of students(); track student.studentId) { } -
\ No newline at end of file +
+} \ No newline at end of file diff --git a/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.scss b/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.scss index 6e6e55e..a649541 100644 --- a/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.scss +++ b/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.scss @@ -6,4 +6,14 @@ display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; +} + +.empty-state { + padding: 1.5rem 1rem; + text-align: center; + color: #888; + font-size: 0.875rem; + background: #fff; + border-radius: 10px; + border: 1px solid #e5e5e5; } \ No newline at end of file diff --git a/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.ts b/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.ts index f9bb9dd..07a2b0c 100644 --- a/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.ts +++ b/ui/winstudentgoaltracker/src/app/mobile/pages/students/students.ts @@ -22,6 +22,7 @@ export class Students { private readonly studentService = inject(StudentService); protected readonly students = signal([]); + protected readonly loaded = signal(false); public errorMessage = signal(null); @@ -46,6 +47,7 @@ export class Students { else { this.students.set(data.payload || []); + this.loaded.set(true); } }); }