123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- @inherits FnzComponentBase
- @code {
- [Parameter, Required] public FeDisc Disc { get; set; }
- private FnzBoostrapModal modalDisc { get; set; }
- private FnzBoostrapModal modalAddList { get; set; }
- private FeTrack PendingAddTrack { get; set; }
- private bool CreatingNewList { get; set; }
- private string NewListName { get; set; }
- private string NewListNameClass => string.IsNullOrWhiteSpace(NewListName) ? "border-warning border-4 w-100" : "w-100";
- }
- <FnzBoostrapModal @ref="modalDisc" CssClass="modal-xl">
- <Title>@Disc?.Name</Title>
- <Body>
- <div class="container-fluid">
- <div class="row">
- <div class="col-md-4 mb-1"><img class="card-img-top" src="@Disc?.CoverPath" onerror="this.src='blazor-192.png'"></div>
- <div class="col-md-8">
- <ul class="nav nav-tabs justify-content-center nav-fill" id="ModalDiscTab" role="tablist">
- @foreach (var subSet in (Disc?.TrackSets).KeepNoEmpty().WithIndex())
- {
- <li class="nav-item " role="presentation">
- <button class="nav-link" id="main-tab" data-bs-toggle="tab" data-bs-target="#tracks-@subSet.index" type="button">
- @subSet.item?.Name
- </button>
- </li>
- }
- @if (Disc?.Bks != null)
- {
- <li class="nav-item " role="presentation">
- <button class="nav-link" id="main-tab" data-bs-toggle="tab" data-bs-target="#tracks-BK" type="button">
- BK
- </button>
- </li>
- }
- </ul>
- <div class="tab-content" id="ModalDiscTabContent">
- @foreach (var subSet in (Disc?.TrackSets).KeepNoEmpty().WithIndex())
- {
- <div class="tab-pane fade" id="tracks-@subSet.index" role="tabpanel">
- <DiscDialogTrackSetTable TrackSet="subSet.item" OnClickAddTrackToList="ShowAddList"></DiscDialogTrackSetTable>
- </div>
- }
- @if (Disc?.Bks != null)
- {
- <div class="tab-pane fade p-2" id="tracks-BK" role="tabpanel">
- <DiscDialogBkSilder Bks="Disc.Bks"></DiscDialogBkSilder>
- </div>
- }
- </div>
- </div>
- </div>
- </div>
- </Body>
- </FnzBoostrapModal>
- <FnzBoostrapModal @ref="modalAddList" CssClass="modal-md">
- <Title>Add to playlist</Title>
- <Body>
- <div class="row w-100 text-center p-2">
- <span>
- <div>
- @((PendingAddTrack?.Tag?.Title).NullOrEmptyEscape(PendingAddTrack?.Name))
- </div>
- <small>
- @PendingAddTrack?.Tag?.Artist
- (@PendingAddTrack?.Tag?.Duration.SecondToDur())
- </small>
- </span>
- </div>
- <table class="table w-100">
- <tbody>
- @foreach (var item in PlaylistHelper.PlayListLoadSave.KeepNoEmpty())
- {
- if (item.Value != null)
- {
- var arr = PlaylistHelper[item.Key];
- var existX = arr.Count(p => p == PendingAddTrack?.Path);
- <tr class="col">
- <td class="w-min">
- <button type="button" class="btn btn-primary p-2" @onclick="()=>AddToPlaylist(item.Key)">
- <i class="bi bi-folder-plus"></i>
- </button>
- </td>
- <td class="text-left w-100 align-middle">@item.Value</td>
- <td class="align-middle">(@arr.Count)</td>
- <td class="align-middle text-nowrap">
- @if (existX == 1)
- {
- <span>Exist</span>
- }
- else if (existX > 1)
- {
- <span>Dup x @existX</span>
- }
- </td>
- </tr>
- }
- else
- {
- <tr>
- <td>😒No playlist created</td>
- </tr>
- }
- }
- </tbody>
- </table>
- </Body>
- <Footer>
- @if (CreatingNewList)
- {
- <div class="form-group row w-100">
- <label>Name</label>
- <InputText class="@NewListNameClass" placeholder="Input new playlist name" @oninput="NewPlaylistNameChanged" Value="@NewListName" ValueExpression="()=>NewListName"></InputText>
- @if (string.IsNullOrEmpty(NewListName))
- {
- <small class="text-warning">Required</small>
- }
- </div>
- <button type="button" class="btn btn-link text-decoration-none" @onclick="CreateNewPlaylist">
- Create
- </button>
- }
- else
- {
- <div class="w-100">
- <button type="button" class="btn btn-link text-decoration-none" @onclick="ShowCreateNewPlaylist">
- <i class="bi bi-plus"></i>
- Create New playlist
- </button>
- </div>
- }
- </Footer>
- </FnzBoostrapModal>
- @code {
- public void Show()
- {
- JSRuntime.InvokeVoidAsync("ResetModalDisc");
- modalDisc.Show();
- }
- private void ShowAddList(FeTrack track)
- {
- PendingAddTrack = track;
- CreatingNewList = false;
- StateHasChanged();
- modalAddList.Show();
- }
- private void ShowCreateNewPlaylist()
- {
- CreatingNewList = true;
- NewListName = string.Empty;
- StateHasChanged();
- }
- void NewPlaylistNameChanged(ChangeEventArgs e)
- {
- NewListName = e.Value.ToString().Trim();
- StateHasChanged();
- }
- private void CreateNewPlaylist()
- {
- if (string.IsNullOrWhiteSpace(NewListName) == false)
- {
- PlaylistHelper.CreateNewPlaylist(NewListName);
- CreatingNewList = false;
- StateHasChanged();
- }
- }
- private void AddToPlaylist(Guid playlistId)
- {
- PlaylistHelper.AddTrackToPlaylist(PendingAddTrack.Path, playlistId);
- StateHasChanged();
- }
- }
|