@page "/user-insights" @using LibraryManagement.Shared.Models @using BlazorWebAssembly.Services @inject LibraryApiClient ApiClient @inject NavigationManager Navigation @using Microsoft.AspNetCore.Authorization @attribute [Authorize(Roles = "Librarian")]
Analytics and data-driven visibility into library membership and reading patterns.
No data available yet.
} @foreach (var (user, index) in _activeReaders.Take(5).Select((u, i) => (u, i))) { var maxRaw = _activeReaders.Max(u => u.RawValue); var pct = maxRaw > 0 ? (user.RawValue / maxRaw) * 100 : 0;@user.Name
@user.ValueLabel
No data available yet.
} @foreach (var (user, index) in _loyalty.Take(5).Select((u, i) => (u, i))) {@user.Name
@user.ValueLabel
No data available yet.
} @foreach (var (user, index) in _subscribers.Take(5).Select((u, i) => (u, i))) {@user.Name
@user.ValueLabel
| Member | Joined Date | Lifetime Points | Books Read |
|---|---|---|---|
|
@(user.FullName?.Substring(0, Math.Min(2, user.FullName.Length)).ToUpper() ?? "U")
@user.FullName |
@user.CreatedAt.ToString("MMM dd, yyyy") | @points.ToString("N0") | @books.ToString("N0") |