UI Improvements

This commit is contained in:
Claudio Schaad 2025-08-21 20:44:56 +02:00
parent 2530e729ce
commit d26b3319b9
2 changed files with 40 additions and 25 deletions

View file

@ -230,11 +230,11 @@ namespace ShiftScheduler.Client.Pages
var morningTransport = shiftWithTransport.GetMorningTransportSummary(); var morningTransport = shiftWithTransport.GetMorningTransportSummary();
if (!string.IsNullOrEmpty(morningTransport)) if (!string.IsNullOrEmpty(morningTransport))
summaries.Add($"🌅 {morningTransport}"); summaries.Add($"🚂 {morningTransport}");
var afternoonTransport = shiftWithTransport.GetAfternoonTransportSummary(); var afternoonTransport = shiftWithTransport.GetAfternoonTransportSummary();
if (!string.IsNullOrEmpty(afternoonTransport)) if (!string.IsNullOrEmpty(afternoonTransport))
summaries.Add($"🌆 {afternoonTransport}"); summaries.Add($"🚂 {afternoonTransport}");
return string.Join(" | ", summaries); return string.Join(" | ", summaries);
} }
@ -250,10 +250,12 @@ namespace ShiftScheduler.Client.Pages
return string.Empty; return string.Empty;
var times = new List<string>(); var times = new List<string>();
if (!string.IsNullOrEmpty(shift.MorningTime)) if (!string.IsNullOrEmpty(shift.MorningTime))
times.Add(shift.MorningTime); times.Add($"🌅 {shift.MorningTime}");
if (!string.IsNullOrEmpty(shift.AfternoonTime)) if (!string.IsNullOrEmpty(shift.AfternoonTime))
times.Add(shift.AfternoonTime); times.Add($"🌆 {shift.AfternoonTime}");
return string.Join(" | ", times); return string.Join(" | ", times);
} }

View file

@ -72,6 +72,7 @@ namespace ShiftScheduler.Services
foreach (var week in weeks) foreach (var week in weeks)
{ {
RenderShiftForWeek(table, week, scheduleDictionary); RenderShiftForWeek(table, week, scheduleDictionary);
RenderEmptyRow(table);
} }
}); });
} }
@ -81,6 +82,8 @@ namespace ShiftScheduler.Services
{ {
var weekDates = week.ToList(); var weekDates = week.ToList();
var dayInWeek = weekDates.Count; var dayInWeek = weekDates.Count;
// Date
foreach (var day in Enumerable.Range(0, dayInWeek)) foreach (var day in Enumerable.Range(0, dayInWeek))
{ {
var dddd = weekDates.ElementAtOrDefault(day).ToString("dd.MM.yyyy (ddd)"); var dddd = weekDates.ElementAtOrDefault(day).ToString("dd.MM.yyyy (ddd)");
@ -91,39 +94,7 @@ namespace ShiftScheduler.Services
RenderEmptyCell(table); RenderEmptyCell(table);
} }
foreach (var day in Enumerable.Range(0, dayInWeek)) // Icon
{
var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day));
var shiftName = shiftWithTransport?.Shift.Name ?? "";
table.Cell().Element(CellStyleMiddle).Text(shiftName);
}
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 morningTime = shiftWithTransport?.Shift.MorningTime ?? "";
table.Cell().Element(CellStyleMiddle).Text(morningTime);
}
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 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)) foreach (var day in Enumerable.Range(0, dayInWeek))
{ {
var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day));
@ -135,6 +106,43 @@ namespace ShiftScheduler.Services
RenderEmptyCell(table); RenderEmptyCell(table);
} }
// Shifname
foreach (var day in Enumerable.Range(0, dayInWeek))
{
var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day));
var shiftName = shiftWithTransport?.Shift.Name ?? "";
table.Cell().Element(CellStyleMiddle).Text(shiftName);
}
foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek))
{
RenderEmptyCell(table);
}
// Morning times
foreach (var day in Enumerable.Range(0, dayInWeek))
{
var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day));
var morningTime = $"🌅 {shiftWithTransport?.Shift.MorningTime}";
table.Cell().Element(CellStyleMiddle).Text(morningTime);
}
foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek))
{
RenderEmptyCell(table);
}
// Afternoon times
foreach (var day in Enumerable.Range(0, dayInWeek))
{
var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day));
var afternoonTime = $"🌆 {shiftWithTransport?.Shift.AfternoonTime}";
table.Cell().Element(CellStyleMiddle).Text(afternoonTime);
}
foreach (var day in Enumerable.Range(dayInWeek, 7 - dayInWeek))
{
RenderEmptyCell(table);
}
// Transport
foreach (var day in Enumerable.Range(0, dayInWeek)) foreach (var day in Enumerable.Range(0, dayInWeek))
{ {
var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day)); var shiftWithTransport = shiftsWithTransport.GetValueOrDefault(weekDates.ElementAtOrDefault(day));
@ -147,6 +155,14 @@ namespace ShiftScheduler.Services
} }
} }
private static void RenderEmptyRow(TableDescriptor table)
{
foreach (var day in Enumerable.Range(0, 7))
{
RenderEmptyCell(table);
}
}
private static string GetTransportSummary(ShiftWithTransport? shiftWithTransport) private static string GetTransportSummary(ShiftWithTransport? shiftWithTransport)
{ {
if (shiftWithTransport == null) return "-"; if (shiftWithTransport == null) return "-";
@ -155,28 +171,25 @@ namespace ShiftScheduler.Services
if (shiftWithTransport.MorningTransport != null && !string.IsNullOrEmpty(shiftWithTransport.MorningTransport.DepartureTime)) if (shiftWithTransport.MorningTransport != null && !string.IsNullOrEmpty(shiftWithTransport.MorningTransport.DepartureTime))
{ {
var morningInfo = FormatTransportConnection(shiftWithTransport.MorningTransport, "Morning"); var morningInfo = FormatTransportConnection(shiftWithTransport.MorningTransport);
transportLines.Add(morningInfo); transportLines.Add(morningInfo);
} }
if (shiftWithTransport.AfternoonTransport != null && !string.IsNullOrEmpty(shiftWithTransport.AfternoonTransport.DepartureTime)) if (shiftWithTransport.AfternoonTransport != null && !string.IsNullOrEmpty(shiftWithTransport.AfternoonTransport.DepartureTime))
{ {
var afternoonInfo = FormatTransportConnection(shiftWithTransport.AfternoonTransport, "Afternoon"); var afternoonInfo = FormatTransportConnection(shiftWithTransport.AfternoonTransport);
transportLines.Add(afternoonInfo); transportLines.Add(afternoonInfo);
} }
return transportLines.Count > 0 ? string.Join("\n", transportLines) : "-"; 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 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 arrival = DateTime.TryParse(transport.ArrivalTime, out var arr) ? arr.ToString("HH:mm") : transport.ArrivalTime;
var mainJourney = transport.Sections?.FirstOrDefault()?.Journey; return $"🚂 {departure}→{arrival}";
var trainInfo = mainJourney != null ? $"{mainJourney.Category} {mainJourney.Number}" : "Train";
return $"{timeOfDay}: {trainInfo} {departure}→{arrival}";
} }
private static void RenderEmptyCell(TableDescriptor table) private static void RenderEmptyCell(TableDescriptor table)