DiscDialogTrackSetTable.razor 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. @code {
  2. [Parameter, Required] public FeTrackSet TrackSet { get; set; }
  3. [Parameter] public EventCallback<FeTrack> OnClickAddTrackToList { get; set; } = EventCallback<FeTrack>.Empty;
  4. }
  5. <table class="table">
  6. <thead>
  7. <tr>
  8. <th scope="col" class="p-1 text-center">
  9. <i class="bi bi-file-earmark-music"></i>
  10. </th>
  11. <th scope="col" class="p-1">
  12. <a href="@TrackSet?.M3U8Path" target="@FnzConst.PlaylistPageTarget" onclick="return BlockDownloadAndOpenHtmlPage(this)">Play all</a>
  13. </th>
  14. <th scope="col" class="p-1 text-center">@TrackSet?.TotalDuration.SecondToDur()</th>
  15. <th scope="col" class="p-1 text-center">@TrackSet?.TotalBytes.BytesToFileSize()</th>
  16. <th scope="col" class="p-1 text-center">
  17. <i class="bi bi-list-ul"></i>
  18. </th>
  19. </tr>
  20. </thead>
  21. <tbody>
  22. @foreach (var t in (TrackSet?.Tracks).KeepNoEmpty())
  23. {
  24. <tr>
  25. <td scope="col" class="p-1 text-center">
  26. <FileIcon FileName="@t?.Key"></FileIcon>
  27. </td>
  28. <td scope="row" class="p-0">
  29. <a href="@t?.Path" target="@FnzConst.PlaylistPageTarget">@((t?.Tag?.Title).NullOrEmptyEscape(t?.Name))</a>
  30. </td>
  31. <td class="p-0 text-center">@(t?.Tag?.Duration.SecondToDur() ?? "?")</td>
  32. <td class="p-0 text-center">@(t?.Tag?.Length.BytesToFileSize() ?? "?")</td>
  33. <td class="p-0 text-center">
  34. <button type="button" class="btn btn-link" style="padding:0.1rem" @onclick="()=>OnClickAddTrackToList.InvokeAsync(t)">
  35. <i class="bi bi-folder-plus"></i>
  36. </button>
  37. </td>
  38. </tr>
  39. }
  40. </tbody>
  41. </table>