From d26b3319b9243e69cceb71e48441640197798391 Mon Sep 17 00:00:00 2001 From: Claudio Schaad Date: Thu, 21 Aug 2025 20:44:56 +0200 Subject: [PATCH] UI Improvements --- Client/Pages/Index.razor.cs | 10 ++++--- Services/PdfExportService.cs | 55 ++++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/Client/Pages/Index.razor.cs b/Client/Pages/Index.razor.cs index 7110f75..8535be2 100644 --- a/Client/Pages/Index.razor.cs +++ b/Client/Pages/Index.razor.cs @@ -230,11 +230,11 @@ namespace ShiftScheduler.Client.Pages var morningTransport = shiftWithTransport.GetMorningTransportSummary(); if (!string.IsNullOrEmpty(morningTransport)) - summaries.Add($"🌅 {morningTransport}"); + summaries.Add($"🚂 {morningTransport}"); var afternoonTransport = shiftWithTransport.GetAfternoonTransportSummary(); if (!string.IsNullOrEmpty(afternoonTransport)) - summaries.Add($"🌆 {afternoonTransport}"); + summaries.Add($"🚂 {afternoonTransport}"); return string.Join(" | ", summaries); } @@ -250,10 +250,12 @@ namespace ShiftScheduler.Client.Pages return string.Empty; var times = new List(); + if (!string.IsNullOrEmpty(shift.MorningTime)) - times.Add(shift.MorningTime); + times.Add($"🌅 {shift.MorningTime}"); + if (!string.IsNullOrEmpty(shift.AfternoonTime)) - times.Add(shift.AfternoonTime); + times.Add($"🌆 {shift.AfternoonTime}"); return string.Join(" | ", times); } diff --git a/Services/PdfExportService.cs b/Services/PdfExportService.cs index 02f570f..84e6b6d 100644 --- a/Services/PdfExportService.cs +++ b/Services/PdfExportService.cs @@ -72,6 +72,7 @@ namespace ShiftScheduler.Services foreach (var week in weeks) { RenderShiftForWeek(table, week, scheduleDictionary); + RenderEmptyRow(table); } }); } @@ -81,6 +82,8 @@ namespace ShiftScheduler.Services { var weekDates = week.ToList(); var dayInWeek = weekDates.Count; + + // Date foreach (var day in Enumerable.Range(0, dayInWeek)) { var dddd = weekDates.ElementAtOrDefault(day).ToString("dd.MM.yyyy (ddd)"); @@ -90,7 +93,20 @@ namespace ShiftScheduler.Services { RenderEmptyCell(table); } + + // Icon + foreach (var day in Enumerable.Range(0, dayInWeek)) + { + var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); + var icon = shiftWithTransport?.Shift.Icon ?? ""; + table.Cell().Element(CellStyleMiddle).Text(icon); + } + foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek)) + { + RenderEmptyCell(table); + } + // Shifname foreach (var day in Enumerable.Range(0, dayInWeek)) { var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); @@ -102,10 +118,11 @@ namespace ShiftScheduler.Services RenderEmptyCell(table); } + // Morning times foreach (var day in Enumerable.Range(0, dayInWeek)) { var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); - var morningTime = shiftWithTransport?.Shift.MorningTime ?? ""; + var morningTime = $"🌅 {shiftWithTransport?.Shift.MorningTime}"; table.Cell().Element(CellStyleMiddle).Text(morningTime); } foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek)) @@ -113,28 +130,19 @@ namespace ShiftScheduler.Services RenderEmptyCell(table); } + // Afternoon times foreach (var day in Enumerable.Range(0, dayInWeek)) { var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); - var afternoonTime = shiftWithTransport?.Shift.AfternoonTime ?? ""; + var afternoonTime = $"🌆 {shiftWithTransport?.Shift.AfternoonTime}"; table.Cell().Element(CellStyleMiddle).Text(afternoonTime); } foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek)) { RenderEmptyCell(table); } - - foreach (var day in Enumerable.Range(0, dayInWeek)) - { - var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); - var icon = shiftWithTransport?.Shift.Icon ?? ""; - table.Cell().Element(CellStyleMiddle).Text(icon); - } - foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek)) - { - RenderEmptyCell(table); - } + // Transport foreach (var day in Enumerable.Range(0, dayInWeek)) { var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); @@ -146,6 +154,14 @@ namespace ShiftScheduler.Services RenderEmptyCell(table); } } + + private static void RenderEmptyRow(TableDescriptor table) + { + foreach (var day in Enumerable.Range(0, 7)) + { + RenderEmptyCell(table); + } + } private static string GetTransportSummary(ShiftWithTransport? shiftWithTransport) { @@ -155,28 +171,25 @@ namespace ShiftScheduler.Services if (shiftWithTransport.MorningTransport != null && !string.IsNullOrEmpty(shiftWithTransport.MorningTransport.DepartureTime)) { - var morningInfo = FormatTransportConnection(shiftWithTransport.MorningTransport, "Morning"); + var morningInfo = FormatTransportConnection(shiftWithTransport.MorningTransport); transportLines.Add(morningInfo); } if (shiftWithTransport.AfternoonTransport != null && !string.IsNullOrEmpty(shiftWithTransport.AfternoonTransport.DepartureTime)) { - var afternoonInfo = FormatTransportConnection(shiftWithTransport.AfternoonTransport, "Afternoon"); + var afternoonInfo = FormatTransportConnection(shiftWithTransport.AfternoonTransport); transportLines.Add(afternoonInfo); } return transportLines.Count > 0 ? string.Join("\n", transportLines) : "-"; } - private static string FormatTransportConnection(TransportConnection transport, string timeOfDay) + private static string FormatTransportConnection(TransportConnection transport) { var departure = DateTime.TryParse(transport.DepartureTime, out var dep) ? dep.ToString("HH:mm") : transport.DepartureTime; var arrival = DateTime.TryParse(transport.ArrivalTime, out var arr) ? arr.ToString("HH:mm") : transport.ArrivalTime; - - var mainJourney = transport.Sections?.FirstOrDefault()?.Journey; - var trainInfo = mainJourney != null ? $"{mainJourney.Category} {mainJourney.Number}" : "Train"; - - return $"{timeOfDay}: {trainInfo} {departure}→{arrival}"; + + return $"🚂 {departure}→{arrival}"; } private static void RenderEmptyCell(TableDescriptor table)