Skip to content

Commit 2c6c1bb

Browse files
committed
Random Data
1 parent e619106 commit 2c6c1bb

File tree

1 file changed

+55
-6
lines changed

1 file changed

+55
-6
lines changed

Pages/Home.razor

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -278,15 +278,14 @@
278278
</div>
279279
<div>
280280
<h2 class="text-2xl sm:text-3xl font-bold font-cartoon text-amber-800 cartoon-text">Featured Episodes</h2>
281-
<p class="text-amber-900 font-comic text-base sm:text-lg font-semibold">Randomly selected classics that never get old! 🎭</p>
281+
<p class="text-amber-900 font-comic text-base sm:text-lg font-semibold">Selected classics that never get old! 🎭</p>
282282
</div>
283283
</div>
284284
<div class="flex items-center space-x-3">
285285
<button @onclick="RefreshFeaturedEpisodes"
286286
class="px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm bg-tom-blue text-white rounded-2xl font-bold font-comic hover:bg-tom-dark-blue transition-colors cartoon-rounded">
287287
🔄 Refresh Featured
288288
</button>
289-
<span class="hidden sm:inline text-sm text-amber-800 font-comic bg-cartoon-yellow px-3 py-1 rounded-full font-semibold">Random Selection</span>
290289
<div class="w-3 h-3 bg-cartoon-red rounded-full animate-pulse cartoon-rounded"></div>
291290
</div>
292291
</div>
@@ -349,21 +348,24 @@
349348

350349
<!-- Filter Options -->
351350
<div class="flex flex-wrap items-center gap-2 sm:gap-3">
352-
<button class="px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm bg-tom-blue text-white rounded-2xl font-bold font-comic hover:bg-tom-dark-blue transition-colors cartoon-rounded">
351+
<button @onclick="@(() => ApplyFilter("All"))"
352+
class="@GetFilterButtonClass("All")">
353353
All
354354
</button>
355-
<button class="px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm bg-soft-blue text-amber-800 rounded-2xl font-bold font-comic hover:bg-cartoon-yellow transition-colors border-2 border-amber-800 cartoon-rounded">
355+
<button @onclick="@(() => ApplyFilter("Classic"))"
356+
class="@GetFilterButtonClass("Classic")">
356357
Classic
357358
</button>
358-
<button class="px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm bg-soft-blue text-amber-800 rounded-2xl font-bold font-comic hover:bg-cartoon-yellow transition-colors border-2 border-amber-800 cartoon-rounded">
359+
<button @onclick="@(() => ApplyFilter("Modern"))"
360+
class="@GetFilterButtonClass("Modern")">
359361
Modern
360362
</button>
361363
</div>
362364
</div>
363365

364366
<!-- All Videos Grid -->
365367
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4 sm:gap-6">
366-
@foreach (var item in StateService.CurrentVideos)
368+
@foreach (var item in filteredVideos)
367369
{
368370
<Thumbnail VideoModel="@item"/>
369371
}
@@ -377,6 +379,8 @@
377379
@code
378380
{
379381
private string heroSearchTerm = string.Empty;
382+
private string activeFilter = "All";
383+
private IEnumerable<Video> filteredVideos = Enumerable.Empty<Video>();
380384

381385
public void GoTOPage(Video video)
382386
{
@@ -472,6 +476,48 @@
472476
await StateService.RefreshFeaturedVideosAsync(StateService.CurrentVideos, 10);
473477
}
474478

479+
private void ApplyFilter(string filter)
480+
{
481+
activeFilter = filter;
482+
483+
if (!StateService.CurrentVideos.Any())
484+
{
485+
filteredVideos = Enumerable.Empty<Video>();
486+
return;
487+
}
488+
489+
var videos = StateService.CurrentVideos.ToList();
490+
491+
switch (filter)
492+
{
493+
case "All":
494+
// Sequential order (by ID)
495+
filteredVideos = videos.OrderBy(v => int.Parse(v.Id)).ToList();
496+
break;
497+
case "Classic":
498+
// Random order
499+
var random = new Random();
500+
filteredVideos = videos.OrderBy(x => random.Next()).ToList();
501+
break;
502+
case "Modern":
503+
// Inverse order (newest first)
504+
filteredVideos = videos.OrderByDescending(v => int.Parse(v.Id)).ToList();
505+
break;
506+
default:
507+
filteredVideos = videos;
508+
break;
509+
}
510+
511+
StateHasChanged();
512+
}
513+
514+
private string GetFilterButtonClass(string filter)
515+
{
516+
return activeFilter == filter
517+
? "px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm bg-tom-blue text-white rounded-2xl font-bold font-comic hover:bg-tom-dark-blue transition-colors cartoon-rounded"
518+
: "px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm bg-soft-blue text-amber-800 rounded-2xl font-bold font-comic hover:bg-cartoon-yellow transition-colors border-2 border-amber-800 cartoon-rounded";
519+
}
520+
475521
protected override async Task OnInitializedAsync()
476522
{
477523
StateService.OnStateChanged += StateHasChanged;
@@ -486,6 +532,9 @@
486532

487533
// Set random featured videos
488534
await StateService.RefreshFeaturedVideosAsync(videos, 10);
535+
536+
// Apply initial filter (All - sequential order)
537+
ApplyFilter("All");
489538
}
490539
finally
491540
{

0 commit comments

Comments
 (0)