mod Expense-Table, show time and chg order

This commit is contained in:
beo3000 2025-12-25 21:48:39 +01:00
parent 8d2222de8f
commit 1e9cf520f6
3 changed files with 42 additions and 17 deletions

View File

@ -9,7 +9,8 @@
"Bash(git commit:*)",
"Bash(mkdir:*)",
"WebSearch",
"Bash(git merge:*)"
"Bash(git merge:*)",
"Bash(findstr:*)"
]
}
}

View File

@ -1,5 +1,8 @@
## Optimierung Spieltag-Details
Blende die Erledigt-Kennzeichnung (Als bezahlt markieren) in der Tabelle mit den Staten (<!-- Expense Table -->) für Geldstrafen aus. Nur Sachstrafen sollen sich manuell erledigen lassen. Geldstrafen werden später zentral über die Abrechnung des gesamten Tages erledigt.
## Optimierung Spieltag-Details - done
Die Erfassung von Strafen muss möglichst schnell und komfortabel mögiich sein. Dafür muss die Seite DayDetails optimiert werden.
Es soll möglich sein eine Person in der Teilnehmerliste auszuwählen. Bei der Erfassung einer neuen Strafe soll diese Person direkt vorbelegt werden. Außerdem soll zusätzlich zum Button "Strafe hinzufügen" ein Menü-Button angezeigt werden, der eine Kurzwahl aller Strafen mit der Option "IsOneClick" ermöglicht.
Der Benutzer soll visuell leicht erkennen können, ob und welcher Teilnehmer aktuell markiert wurde.

View File

@ -220,7 +220,7 @@ else
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Class="mb-4">
<MudText Typo="Typo.h6">
<MudIcon Icon="@Icons.Material.Filled.AttachMoney" Class="mr-2" />
Strafen / Kosten (@Expenses.Count)
Strafen / Kosten (@FilteredExpenses.Count@(_selectedParticipantId.HasValue && Expenses.Count != FilteredExpenses.Count ? $"/{Expenses.Count}" : ""))
</MudText>
@if (Day.Status != DayStatus.Closed)
{
@ -268,9 +268,18 @@ else
Füge zuerst Teilnehmer hinzu, um Strafen zuweisen zu können.
</MudAlert>
}
else if (Expenses.Count == 0)
else if (FilteredExpenses.Count == 0)
{
<MudText Color="Color.Secondary">Keine Strafen zugewiesen</MudText>
<MudText Color="Color.Secondary">
@if (_selectedParticipantId.HasValue)
{
<text>Keine Strafen für @SelectedParticipant?.PersonName</text>
}
else
{
<text>Keine Strafen zugewiesen</text>
}
</MudText>
}
else
{
@ -303,24 +312,32 @@ else
</MudGrid>
<!-- Expense Table -->
<MudTable Items="@Expenses" Dense="true" Hover="true" Striped="true" Breakpoint="Breakpoint.Sm">
<MudTable Items="@FilteredExpenses" Dense="true" Hover="true" Striped="true" Breakpoint="Breakpoint.Sm">
<HeaderContent>
<MudTh>Person</MudTh>
@if (!_selectedParticipantId.HasValue)
{
<MudTh>Person</MudTh>
}
<MudTh>Strafe</MudTh>
<MudTh>Uhrzeit</MudTh>
<MudTh Style="text-align: right">Preis</MudTh>
<MudTh>Status</MudTh>
<MudTh Style="text-align: right">Aktionen</MudTh>
</HeaderContent>
<RowTemplate>
<MudTd DataLabel="Person">
<MudStack Row="true" AlignItems="AlignItems.Center">
<MudAvatar Size="Size.Small" Color="Color.Primary">
@context.PersonName[0]
</MudAvatar>
<MudText>@context.PersonName</MudText>
</MudStack>
</MudTd>
@if (!_selectedParticipantId.HasValue)
{
<MudTd DataLabel="Person">
<MudStack Row="true" AlignItems="AlignItems.Center">
<MudAvatar Size="Size.Small" Color="Color.Primary">
@context.PersonName[0]
</MudAvatar>
<MudText>@context.PersonName</MudText>
</MudStack>
</MudTd>
}
<MudTd DataLabel="Strafe">@context.Name</MudTd>
<MudTd DataLabel="Uhrzeit">@context.CreatedAt.ToString("HH:mm")</MudTd>
<MudTd DataLabel="Preis" Style="text-align: right">@context.Price.ToString("C")</MudTd>
<MudTd DataLabel="Status">
<MudChip T="string"
@ -377,9 +394,13 @@ else
private DayParticipantDto? SelectedParticipant => Day?.Participants.FirstOrDefault(p => p.PersonId == _selectedParticipantId);
private IReadOnlyList<ExpenseDto> OneClickExpenses => DayState.Value.AvailableExpenses.Where(e => e.IsOneClick && !e.IsVariable).ToList();
private decimal TotalExpenseAmount => Expenses.Sum(e => e.Price);
private decimal OpenExpenseAmount => Expenses.Where(e => e.PersonExpenseStatus == PersonExpenseStatus.Open).Sum(e => e.Price);
private decimal PaidExpenseAmount => Expenses.Where(e => e.PersonExpenseStatus == PersonExpenseStatus.Done).Sum(e => e.Price);
private IReadOnlyList<PersonExpenseDto> FilteredExpenses => (_selectedParticipantId.HasValue
? Expenses.Where(e => e.PersonId == _selectedParticipantId.Value)
: Expenses).OrderByDescending(e => e.CreatedAt).ToList();
private decimal TotalExpenseAmount => FilteredExpenses.Sum(e => e.Price);
private decimal OpenExpenseAmount => FilteredExpenses.Where(e => e.PersonExpenseStatus == PersonExpenseStatus.Open).Sum(e => e.Price);
private decimal PaidExpenseAmount => FilteredExpenses.Where(e => e.PersonExpenseStatus == PersonExpenseStatus.Done).Sum(e => e.Price);
protected override void OnInitialized()
{