@if (SelectedTrack is null) { Select a track from the list to edit its details. } else { @if (SelectedTrack.Id.HasValue) { @(string.IsNullOrEmpty(SelectedTrack.OriginalFileName) ? "—" : SelectedTrack.OriginalFileName) Existing track — audio is not editable. } else { @if (SelectedTrack.WavFile is { } wav) { @wav.Name (@FormatBytes(wav.Size)) } else { No WAV file selected. } } @if (SelectedTrack.Status == BatchRowStatus.Failed) { @SelectedTrack.ErrorMessage } } @code { [Parameter] public BatchRowModel? SelectedTrack { get; set; } [Parameter] public bool Disabled { get; set; } [Parameter] public EventCallback TrackNameChanged { get; set; } private static string FormatBytes(long bytes) { const long KB = 1024; const long MB = KB * 1024; const long GB = MB * 1024; if (bytes >= GB) return $"{bytes / (double)GB:F2} GB"; if (bytes >= MB) return $"{bytes / (double)MB:F2} MB"; if (bytes >= KB) return $"{bytes / (double)KB:F2} KB"; return $"{bytes} bytes"; } }