add button to copy block item (#1562)
This commit is contained in:
@@ -17,7 +17,7 @@ public class BlockPlayoutBuilder(
|
||||
ILogger<BlockPlayoutBuilder> logger)
|
||||
: IBlockPlayoutBuilder
|
||||
{
|
||||
public async Task<Playout> Build(Playout playout, PlayoutBuildMode mode, CancellationToken cancellationToken)
|
||||
public virtual async Task<Playout> Build(Playout playout, PlayoutBuildMode mode, CancellationToken cancellationToken)
|
||||
{
|
||||
Logger.LogDebug(
|
||||
"Building block playout {PlayoutId} for channel {ChannelNumber} - {ChannelName}",
|
||||
|
||||
@@ -19,8 +19,24 @@ public class BlockPlayoutPreviewBuilder(
|
||||
artistRepository,
|
||||
logger), IBlockPlayoutPreviewBuilder
|
||||
{
|
||||
private readonly Dictionary<Guid, System.Collections.Generic.HashSet<CollectionKey>> _randomizedCollections = [];
|
||||
|
||||
protected override ILogger Logger => NullLogger.Instance;
|
||||
|
||||
public override async Task<Playout> Build(
|
||||
Playout playout,
|
||||
PlayoutBuildMode mode,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
_randomizedCollections.Add(playout.Channel.UniqueId, []);
|
||||
|
||||
Playout result = await base.Build(playout, mode, cancellationToken);
|
||||
|
||||
_randomizedCollections.Remove(playout.Channel.UniqueId);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
protected override Task<int> GetDaysToBuild() => Task.FromResult(1);
|
||||
|
||||
protected override IMediaCollectionEnumerator GetEnumerator(
|
||||
@@ -30,16 +46,25 @@ public class BlockPlayoutPreviewBuilder(
|
||||
string historyKey,
|
||||
Map<CollectionKey, List<MediaItem>> collectionMediaItems)
|
||||
{
|
||||
IMediaCollectionEnumerator enumerator = base.GetEnumerator(playout, blockItem, currentTime, historyKey, collectionMediaItems);
|
||||
IMediaCollectionEnumerator enumerator = base.GetEnumerator(
|
||||
playout,
|
||||
blockItem,
|
||||
currentTime,
|
||||
historyKey,
|
||||
collectionMediaItems);
|
||||
|
||||
var collectionKey = CollectionKey.ForBlockItem(blockItem);
|
||||
if (!_randomizedCollections[playout.Channel.UniqueId].Contains(collectionKey))
|
||||
{
|
||||
enumerator.ResetState(
|
||||
new CollectionEnumeratorState
|
||||
{
|
||||
Seed = new Random().Next(),
|
||||
Index = new Random().Next(collectionMediaItems[collectionKey].Count)
|
||||
});
|
||||
|
||||
enumerator.ResetState(
|
||||
new CollectionEnumeratorState
|
||||
{
|
||||
Seed = new Random().Next(),
|
||||
Index = new Random().Next(collectionMediaItems[collectionKey].Count)
|
||||
});
|
||||
_randomizedCollections[playout.Channel.UniqueId].Add(collectionKey);
|
||||
}
|
||||
|
||||
return enumerator;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
<col style="width: 60px;"/>
|
||||
<col style="width: 60px;"/>
|
||||
<col style="width: 60px;"/>
|
||||
<col style="width: 60px;"/>
|
||||
</ColGroup>
|
||||
<HeaderContent>
|
||||
<MudTh>Collection</MudTh>
|
||||
@@ -60,6 +61,7 @@
|
||||
<MudTh/>
|
||||
<MudTh/>
|
||||
<MudTh/>
|
||||
<MudTh/>
|
||||
</HeaderContent>
|
||||
<RowTemplate>
|
||||
<MudTd DataLabel="Collection">
|
||||
@@ -72,6 +74,11 @@
|
||||
@context.PlaybackOrder
|
||||
</MudText>
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy"
|
||||
OnClick="@(_ => CopyItem(context))">
|
||||
</MudIconButton>
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ArrowUpward"
|
||||
OnClick="@(_ => MoveItemUp(context))"
|
||||
@@ -390,6 +397,28 @@
|
||||
_selectedItem = item;
|
||||
}
|
||||
|
||||
private void CopyItem(BlockItemEditViewModel item)
|
||||
{
|
||||
var newItem = new BlockItemEditViewModel
|
||||
{
|
||||
Index = item.Index + 1,
|
||||
PlaybackOrder = item.PlaybackOrder,
|
||||
CollectionType = item.CollectionType,
|
||||
Collection = item.Collection,
|
||||
MultiCollection = item.MultiCollection,
|
||||
SmartCollection = item.SmartCollection,
|
||||
MediaItem = item.MediaItem
|
||||
};
|
||||
|
||||
foreach (BlockItemEditViewModel i in _block.Items.Filter(bi => bi.Index >= newItem.Index))
|
||||
{
|
||||
i.Index += 1;
|
||||
}
|
||||
|
||||
_block.Items.Add(newItem);
|
||||
_selectedItem = newItem;
|
||||
}
|
||||
|
||||
private void RemoveBlockItem(BlockItemEditViewModel item)
|
||||
{
|
||||
_selectedItem = null;
|
||||
|
||||
Reference in New Issue
Block a user