|
1 | 1 | @using PocketDDD.BlazorClient.Features.Home.Store |
2 | | -@using Session = PocketDDD.BlazorClient.Features.Home.Store.Session |
3 | 2 | @inherits FluxorComponent |
4 | 3 |
|
5 | 4 | @inject NavigationManager NavigationManager |
6 | 5 | @inject IState<HomeState> State |
7 | 6 | @inject IDispatcher Dispatcher |
8 | 7 |
|
9 | | -<MudList Clickable="true"> |
10 | | - @foreach (var timeSlot in State.Value.EventMetaData) |
| 8 | +<MudList Class="pt-0 mud-background-gray" Dense="true"> |
| 9 | + @foreach (var timeSlot in State.Value.Timeslots) |
11 | 10 | { |
12 | | - <MudListSubheader Class="pb-0 pl-1 border-b border-solid mud-border-primary"> |
13 | | - <MudText Typo="Typo.h6"> |
14 | | - @timeSlot.From.ToString("h:mm") |
15 | | - @timeSlot.From.ToString("tt").ToLowerInvariant() |
16 | | - </MudText> |
| 11 | + <MudListSubheader Class="pt-2 pb-1"> |
| 12 | + <MudPaper Width="fit-content" Class="mud-theme-primary border-solid py-2 px-6 my-0"> |
| 13 | + <MudText Typo="Typo.h6" Align="Align.Center"> |
| 14 | + @timeSlot.From.LocalDateTime.ToString("h:mm") |
| 15 | + @timeSlot.From.LocalDateTime.ToString("tt").ToLowerInvariant() |
| 16 | + </MudText> |
| 17 | + </MudPaper> |
17 | 18 | </MudListSubheader> |
18 | | - @if (timeSlot.Info is not null) |
| 19 | + |
| 20 | + if (timeSlot.Info is not null) |
19 | 21 | { |
20 | | - <MudListItem Class="ml-6"> |
21 | | - <MudText Typo="Typo.h5">@timeSlot.Info</MudText> |
| 22 | + <MudListItem> |
| 23 | + <MudPaper Outlined="true" Class="px-4 py-2"> |
| 24 | + <MudText Typo="Typo.h6">@timeSlot.Info</MudText> |
| 25 | + </MudPaper> |
22 | 26 | </MudListItem> |
23 | 27 | } |
24 | 28 |
|
25 | | - @foreach (var sessionItem in timeSlot.Sessions.Select((session, index) => (session, index))) |
| 29 | + foreach (var room in timeSlot.Rooms) |
26 | 30 | { |
27 | 31 | <MudListItem> |
28 | | - <MudCard> |
29 | | - <MudCardHeader> |
| 32 | + <MudCard Outlined="true"> |
| 33 | + <MudCardHeader Class="pb-0"> |
30 | 34 | <CardHeaderContent> |
31 | | - <MudText Typo="Typo.h6"> |
32 | | - @sessionItem.session.Title |
| 35 | + <MudText Typo="Typo.body1"> |
| 36 | + @room.RoomName |
33 | 37 | </MudText> |
| 38 | + <MudDivider Class="@GetTrackDividerStylesForRoom(room)" |
| 39 | + DividerType="DividerType.FullWidth"/> |
34 | 40 | </CardHeaderContent> |
35 | | - <CardHeaderActions> |
36 | | - <MudToggleIconButton |
37 | | - ToggledChanged="@(_ => HandleToggleSessionBookmarked(sessionItem.session))" |
38 | | - Toggled="@sessionItem.session.IsBookmarked" |
39 | | - Icon="@Icons.Material.Filled.BookmarkBorder" |
40 | | - Color="@Color.Default" |
41 | | - ToggledIcon="@Icons.Material.Filled.Bookmark" |
42 | | - ToggledColor="@Color.Primary" |
43 | | - title="@(sessionItem.session.IsBookmarked ? "Unbookmark session" : "Bookmark session")"/> |
44 | | - </CardHeaderActions> |
45 | 41 | </MudCardHeader> |
46 | | - <MudCardContent Class="d-flex flex-row justify-space-between"> |
47 | | - <MudContainer Class="px-0"> |
48 | | - <MudText Typo="Typo.subtitle2">@sessionItem.session.SpeakerName</MudText> |
49 | | - <MudText Typo="Typo.subtitle2">@sessionItem.session.RoomName</MudText> |
50 | | - </MudContainer> |
51 | | - @ShowSessionLength(sessionItem.session) |
| 42 | + <MudCardContent Class="py-2"> |
| 43 | + @for (var i = 0; i < room.Sessions.Count; i++) |
| 44 | + { |
| 45 | + var session = room.Sessions[i]; |
| 46 | + <MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Stretch"> |
| 47 | + <MudStack> |
| 48 | + <MudText Typo="Typo.h6">@session.Title</MudText> |
| 49 | + <MudText Typo="Typo.subtitle1">@session.SpeakerName</MudText> |
| 50 | + </MudStack> |
| 51 | + <MudStack Justify="Justify.SpaceBetween" AlignItems="AlignItems.End" Spacing="0"> |
| 52 | + <MudToggleIconButton |
| 53 | + ToggledChanged="@(_ => HandleToggleSessionBookmarked(session))" |
| 54 | + Toggled="@session.IsBookmarked" |
| 55 | + Color="@Color.Default" |
| 56 | + Icon="@Icons.Material.Filled.BookmarkBorder" |
| 57 | + ToggledIcon="@Icons.Material.Filled.Bookmark" |
| 58 | + ToggledColor="@Color.Primary" |
| 59 | + title="@(session.IsBookmarked ? "Unbookmark session" : "Bookmark session")"/> |
| 60 | + @ShowSessionLength(session) |
| 61 | + </MudStack> |
| 62 | + </MudStack> |
| 63 | + <MudButton OnClick="() => HandleViewSession(session.Id)" FullWidth="true" |
| 64 | + Variant="Variant.Outlined" Class="my-2"> |
| 65 | + More details |
| 66 | + </MudButton> |
| 67 | + @if (i < room.Sessions.Count - 1) |
| 68 | + { |
| 69 | + <MudDivider Class="@GetMultiTalkDividerStylesForRoom(room)" |
| 70 | + DividerType="DividerType.Middle"/> |
| 71 | + } |
| 72 | + } |
52 | 73 | </MudCardContent> |
53 | | - <MudCardActions> |
54 | | - <MudButton OnClick="() => HandleViewSession(sessionItem.session.Id)" Variant="Variant.Outlined" Color="Color.Primary" FullWidth="true"> |
55 | | - More details |
56 | | - </MudButton> |
57 | | - </MudCardActions> |
58 | 74 | </MudCard> |
59 | 75 | </MudListItem> |
60 | | - |
61 | | - @if (sessionItem.index != timeSlot.Sessions.Count - 1) |
62 | | - { |
63 | | - <MudDivider/> |
64 | | - } |
65 | 76 | } |
66 | 77 | } |
67 | | - |
68 | 78 | </MudList> |
69 | 79 |
|
70 | 80 | @code{ |
|
81 | 91 | return @<MudChip Color="@colour" Variant="Variant.Outlined">@GetTimeSpanDisplayText(session.Length)</MudChip>; |
82 | 92 | } |
83 | 93 |
|
84 | | -} |
85 | | - |
86 | | -@code { |
| 94 | + private string GetBorderColourForRoom(Room room) |
| 95 | + { |
| 96 | + string colour; |
| 97 | + |
| 98 | + if (room.RoomName.Contains('1')) |
| 99 | + colour = "mud-border-tertiary"; |
| 100 | + else if (room.RoomName.Contains('2')) |
| 101 | + colour = "mud-border-primary"; |
| 102 | + else if (room.RoomName.Contains('3')) |
| 103 | + colour = "mud-border-secondary"; |
| 104 | + else |
| 105 | + colour = "mud-border-info"; |
| 106 | + |
| 107 | + return colour; |
| 108 | + } |
87 | 109 |
|
88 | | - void HandleViewSession(int sessionId) |
| 110 | + private string GetTrackDividerStylesForRoom(Room room) |
89 | 111 | { |
90 | | - NavigationManager.NavigateTo($"session/{sessionId}"); |
| 112 | + return $"{GetBorderColourForRoom(room)}"; |
91 | 113 | } |
92 | 114 |
|
93 | | - void HandleToggleSessionBookmarked(Session session) |
| 115 | + private string GetMultiTalkDividerStylesForRoom(Room room) |
94 | 116 | { |
95 | | - Dispatcher.Dispatch(new ToggleBookmarkedAction(session.Id, !session.IsBookmarked)); |
| 117 | + return $"{GetBorderColourForRoom(room)} ma-4"; |
96 | 118 | } |
97 | 119 |
|
98 | 120 | private static string GetTimeSpanDisplayText(TimeSpan timeSpan) |
|
106 | 128 | } |
107 | 129 |
|
108 | 130 | } |
| 131 | + |
| 132 | +@code { |
| 133 | + |
| 134 | + void HandleViewSession(int sessionId) |
| 135 | + { |
| 136 | + NavigationManager.NavigateTo($"session/{sessionId}"); |
| 137 | + } |
| 138 | + |
| 139 | + void HandleToggleSessionBookmarked(Session session) |
| 140 | + { |
| 141 | + Dispatcher.Dispatch(new ToggleBookmarkedAction(session.Id, !session.IsBookmarked)); |
| 142 | + } |
| 143 | + |
| 144 | +} |
0 commit comments