This commit introduces a new feature to display meeting history for teams. It adds a `TeamMeetingHistoryDialog` component that shows the meeting history in a dialog format, including a loading state and error handling. Additionally, a `TeamMeetingHistoryBadge` component is created to display the count of meetings for each team, enhancing the user interface with tooltips for better interaction. The `Details` and `Index` components are updated to integrate these new features, allowing users to view meeting history directly from the team details and index pages. These changes improve the overall functionality and user experience in managing team meetings.
113 lines
4.1 KiB
Plaintext
113 lines
4.1 KiB
Plaintext
@using WebApp.Models
|
|
@using Core.Utility
|
|
@using WebApp.Components.Features.Teams.Components
|
|
|
|
@if (Title != null)
|
|
{
|
|
<MudText Typo="Typo.h4">@Title</MudText>
|
|
}
|
|
|
|
<MudToggleGroup T="Team"
|
|
SelectionMode="SelectionMode.MultiSelection"
|
|
Values="@SelectedTeams"
|
|
ValuesChanged="@OnSelectedTeamsChanged"
|
|
Vertical="true"
|
|
CheckMark>
|
|
@foreach (var team in Teams.OrderByEventFormatFirst().ThenBy(e => e.Event.Name))
|
|
{
|
|
<MudToggleItem Value="@team" Style="font-size: .75rem;">
|
|
<div style="display: flex; align-items: center; justify-content: space-between; gap: 4px; width: 100%;">
|
|
<MudTooltip Text="@TeamStudentNameFormatter.FormatStudentList(
|
|
team,
|
|
new TeamStudentNameFormatter.FormatOptions
|
|
{
|
|
CaptainIndicator = TeamStudentNameFormatter.CaptainIndicatorStyle.Captain,
|
|
Ordering = TeamStudentNameFormatter.OrderingStyle.None
|
|
})">
|
|
<span class="ellipsis" style="flex: 1; min-width: 0;">@team.ToString()</span>
|
|
</MudTooltip>
|
|
@if (IsSelected(team))
|
|
{
|
|
var isExtended = IsExtended(team);
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
|
<MudTooltip Text="@(isExtended ? "Remove from extended teams" : "Extend to 2 time slots")">
|
|
<MudIconButton Icon="@(isExtended ? Icons.Material.Filled.AddCircle : Icons.Material.Filled.Add)"
|
|
Size="Size.Small"
|
|
Color="@(isExtended ? Color.Primary : Color.Default)"
|
|
Variant="@(isExtended ? Variant.Filled : Variant.Text)"
|
|
OnClick="@(() => ToggleExtended(team))"
|
|
Style="margin-left: 4px; padding: 2px;" />
|
|
</MudTooltip>
|
|
<TeamMeetingHistoryBadge TeamId="@team.Id" TeamName="@team.ToString()" />
|
|
</MudStack>
|
|
}
|
|
@if (ShowEventAttributes)
|
|
{
|
|
<EventAttributes EventDefinition="@team.Event"></EventAttributes>
|
|
}
|
|
</div>
|
|
</MudToggleItem>
|
|
}
|
|
</MudToggleGroup>
|
|
|
|
@code {
|
|
[Parameter]
|
|
public IEnumerable<Team> Teams { get; set; } = [];
|
|
|
|
[Parameter]
|
|
public IEnumerable<Team> SelectedTeams { get; set; } = [];
|
|
|
|
[Parameter]
|
|
public EventCallback<IEnumerable<Team>> SelectedTeamsChanged { get; set; }
|
|
|
|
[Parameter]
|
|
public IEnumerable<Team> ExtendedTeams { get; set; } = [];
|
|
|
|
[Parameter]
|
|
public EventCallback<IEnumerable<Team>> ExtendedTeamsChanged { get; set; }
|
|
|
|
[Parameter]
|
|
public string? Title { get; set; }
|
|
|
|
[Parameter]
|
|
public bool ShowEventAttributes { get; set; } = true;
|
|
|
|
private bool IsSelected(Team team)
|
|
{
|
|
var selectedTeamIds = SelectedTeams.Select(t => t.Id).ToHashSet();
|
|
return selectedTeamIds.Contains(team.Id);
|
|
}
|
|
|
|
private bool IsExtended(Team team)
|
|
{
|
|
var extendedTeamIds = ExtendedTeams.Select(t => t.Id).ToHashSet();
|
|
return extendedTeamIds.Contains(team.Id);
|
|
}
|
|
|
|
private async Task OnSelectedTeamsChanged(IEnumerable<Team> value)
|
|
{
|
|
SelectedTeams = value;
|
|
await SelectedTeamsChanged.InvokeAsync(value);
|
|
}
|
|
|
|
private async Task ToggleExtended(Team team)
|
|
{
|
|
var extendedTeamIds = ExtendedTeams.Select(t => t.Id).ToHashSet();
|
|
IEnumerable<Team> newExtendedTeams;
|
|
|
|
if (extendedTeamIds.Contains(team.Id))
|
|
{
|
|
// Remove from extended teams
|
|
newExtendedTeams = ExtendedTeams.Where(t => t.Id != team.Id);
|
|
}
|
|
else
|
|
{
|
|
// Add to extended teams
|
|
newExtendedTeams = ExtendedTeams.Concat([team]);
|
|
}
|
|
|
|
ExtendedTeams = newExtendedTeams;
|
|
await ExtendedTeamsChanged.InvokeAsync(newExtendedTeams);
|
|
}
|
|
}
|