update voice script
This commit is contained in:
parent
56b82414de
commit
cf0fd24940
|
@ -411,6 +411,7 @@
|
|||
<Compile Include="Sync\ISyncProvider.cs" />
|
||||
<Compile Include="Sync\ISyncRepository.cs" />
|
||||
<Compile Include="Sync\SyncedFileInfo.cs" />
|
||||
<Compile Include="Sync\SyncedItemProgress.cs" />
|
||||
<Compile Include="Themes\IAppThemeManager.cs" />
|
||||
<Compile Include="Themes\InternalThemeImage.cs" />
|
||||
<Compile Include="TV\ITVSeriesManager.cs" />
|
||||
|
|
|
@ -152,7 +152,7 @@ namespace MediaBrowser.Controller.Sync
|
|||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <returns>QueryResult<System.String>.</returns>
|
||||
QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query);
|
||||
QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Reports the synchronize job item transfer beginning.
|
||||
|
|
|
@ -74,6 +74,6 @@ namespace MediaBrowser.Controller.Sync
|
|||
/// </summary>
|
||||
/// <param name="query">The query.</param>
|
||||
/// <returns>QueryResult<System.String>.</returns>
|
||||
QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query);
|
||||
QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query);
|
||||
}
|
||||
}
|
||||
|
|
10
MediaBrowser.Controller/Sync/SyncedItemProgress.cs
Normal file
10
MediaBrowser.Controller/Sync/SyncedItemProgress.cs
Normal file
|
@ -0,0 +1,10 @@
|
|||
using MediaBrowser.Model.Sync;
|
||||
|
||||
namespace MediaBrowser.Controller.Sync
|
||||
{
|
||||
public class SyncedItemProgress
|
||||
{
|
||||
public string ItemId { get; set; }
|
||||
public SyncJobItemStatus Status { get; set; }
|
||||
}
|
||||
}
|
|
@ -100,6 +100,11 @@ namespace MediaBrowser.Model.Dto
|
|||
/// </summary>
|
||||
/// <value>The synchronize status.</value>
|
||||
public SyncJobItemStatus? SyncStatus { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the synchronize percent.
|
||||
/// </summary>
|
||||
/// <value>The synchronize percent.</value>
|
||||
public double? SyncPercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the DVD season number.
|
||||
|
|
|
@ -87,13 +87,14 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
|
||||
public IEnumerable<BaseItemDto> GetBaseItemDtos(IEnumerable<BaseItem> items, DtoOptions options, User user = null, BaseItem owner = null)
|
||||
{
|
||||
var tuple = GetItemIdsWithSyncJobs(options);
|
||||
var syncJobItems = GetSyncedItemProgress(options);
|
||||
var syncDictionary = syncJobItems.ToDictionary(i => i.ItemId);
|
||||
|
||||
var list = new List<BaseItemDto>();
|
||||
|
||||
foreach (var item in items)
|
||||
{
|
||||
var dto = GetBaseItemDtoInternal(item, options, user, owner);
|
||||
var dto = GetBaseItemDtoInternal(item, options, syncDictionary, user, owner);
|
||||
|
||||
var byName = item as IItemByName;
|
||||
|
||||
|
@ -111,7 +112,7 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
}
|
||||
}
|
||||
|
||||
FillSyncInfo(dto, item, tuple.Item1, tuple.Item2, options, user);
|
||||
FillSyncInfo(dto, item, syncJobItems, options, user);
|
||||
|
||||
list.Add(dto);
|
||||
}
|
||||
|
@ -121,7 +122,9 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
|
||||
public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
||||
{
|
||||
var dto = GetBaseItemDtoInternal(item, options, user, owner);
|
||||
var syncProgress = GetSyncedItemProgress(options);
|
||||
|
||||
var dto = GetBaseItemDtoInternal(item, options, syncProgress.ToDictionary(i => i.ItemId), user, owner);
|
||||
|
||||
var byName = item as IItemByName;
|
||||
|
||||
|
@ -138,35 +141,35 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
SetItemByNameInfo(item, dto, libraryItems.ToList(), user);
|
||||
}
|
||||
|
||||
FillSyncInfo(dto, item, options, user);
|
||||
FillSyncInfo(dto, item, options, user, syncProgress);
|
||||
return dto;
|
||||
}
|
||||
|
||||
FillSyncInfo(dto, item, options, user);
|
||||
FillSyncInfo(dto, item, options, user, syncProgress);
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
private Tuple<IEnumerable<string>, IEnumerable<string>> GetItemIdsWithSyncJobs(DtoOptions options)
|
||||
private SyncedItemProgress[] GetSyncedItemProgress(DtoOptions options)
|
||||
{
|
||||
if (!options.Fields.Contains(ItemFields.SyncInfo))
|
||||
{
|
||||
return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>());
|
||||
return new SyncedItemProgress[]{};
|
||||
}
|
||||
|
||||
var deviceId = options.DeviceId;
|
||||
if (string.IsNullOrWhiteSpace(deviceId))
|
||||
{
|
||||
return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>());
|
||||
return new SyncedItemProgress[] { };
|
||||
}
|
||||
|
||||
var caps = _deviceManager().GetCapabilities(deviceId);
|
||||
if (caps == null || !caps.SupportsSync)
|
||||
{
|
||||
return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>());
|
||||
return new SyncedItemProgress[] { };
|
||||
}
|
||||
|
||||
var result1 = _syncManager.GetLibraryItemIds(new SyncJobItemQuery
|
||||
return _syncManager.GetSyncedItemProgresses(new SyncJobItemQuery
|
||||
{
|
||||
TargetId = deviceId,
|
||||
Statuses = new[]
|
||||
|
@ -174,38 +177,28 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
SyncJobItemStatus.Converting,
|
||||
SyncJobItemStatus.Queued,
|
||||
SyncJobItemStatus.Transferring,
|
||||
SyncJobItemStatus.ReadyToTransfer
|
||||
}
|
||||
});
|
||||
|
||||
var result2 = _syncManager.GetLibraryItemIds(new SyncJobItemQuery
|
||||
{
|
||||
TargetId = deviceId,
|
||||
Statuses = new[]
|
||||
{
|
||||
SyncJobItemStatus.ReadyToTransfer,
|
||||
SyncJobItemStatus.Synced
|
||||
}
|
||||
});
|
||||
|
||||
return new Tuple<IEnumerable<string>, IEnumerable<string>>(result1.Items, result2.Items);
|
||||
}).Items;
|
||||
}
|
||||
|
||||
public void FillSyncInfo(IEnumerable<IHasSyncInfo> dtos, DtoOptions options, User user)
|
||||
{
|
||||
if (options.Fields.Contains(ItemFields.SyncInfo))
|
||||
{
|
||||
var tuple = GetItemIdsWithSyncJobs(options);
|
||||
var syncProgress = GetSyncedItemProgress(options);
|
||||
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
var item = _libraryManager.GetItemById(dto.Id);
|
||||
|
||||
FillSyncInfo(dto, item, tuple.Item1, tuple.Item2, options, user);
|
||||
FillSyncInfo(dto, item, syncProgress, options, user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, DtoOptions options, User user)
|
||||
private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, DtoOptions options, User user, SyncedItemProgress[] syncProgress)
|
||||
{
|
||||
if (options.Fields.Contains(ItemFields.SyncInfo))
|
||||
{
|
||||
|
@ -215,10 +208,8 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
|
||||
if (dto.SupportsSync ?? false)
|
||||
{
|
||||
var tuple = GetItemIdsWithSyncJobs(options);
|
||||
|
||||
dto.HasSyncJob = tuple.Item1.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
|
||||
dto.IsSynced = tuple.Item2.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
|
||||
dto.HasSyncJob = syncProgress.Any(i => i.Status != SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase));
|
||||
dto.IsSynced = syncProgress.Any(i => i.Status == SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
if (dto.IsSynced.Value)
|
||||
{
|
||||
|
@ -232,7 +223,7 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
}
|
||||
}
|
||||
|
||||
private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, IEnumerable<string> itemIdsWithPendingSyncJobs, IEnumerable<string> syncedItemIds, DtoOptions options, User user)
|
||||
private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, SyncedItemProgress[] syncProgress, DtoOptions options, User user)
|
||||
{
|
||||
if (options.Fields.Contains(ItemFields.SyncInfo))
|
||||
{
|
||||
|
@ -242,8 +233,8 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
|
||||
if (dto.SupportsSync ?? false)
|
||||
{
|
||||
dto.HasSyncJob = itemIdsWithPendingSyncJobs.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
|
||||
dto.IsSynced = syncedItemIds.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
|
||||
dto.HasSyncJob = syncProgress.Any(i => i.Status != SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase));
|
||||
dto.IsSynced = syncProgress.Any(i => i.Status == SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
if (dto.IsSynced.Value)
|
||||
{
|
||||
|
@ -257,7 +248,7 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
}
|
||||
}
|
||||
|
||||
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null)
|
||||
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, Dictionary<string,SyncedItemProgress> syncProgress, User user = null, BaseItem owner = null)
|
||||
{
|
||||
var fields = options.Fields;
|
||||
|
||||
|
@ -301,7 +292,7 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
|
||||
if (user != null)
|
||||
{
|
||||
AttachUserSpecificInfo(dto, item, user, fields);
|
||||
AttachUserSpecificInfo(dto, item, user, fields, syncProgress);
|
||||
}
|
||||
|
||||
var hasMediaSources = item as IHasMediaSources;
|
||||
|
@ -368,14 +359,16 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
public BaseItemDto GetItemByNameDto<T>(T item, DtoOptions options, List<BaseItem> taggedItems, User user = null)
|
||||
where T : BaseItem, IItemByName
|
||||
{
|
||||
var dto = GetBaseItemDtoInternal(item, options, user);
|
||||
var syncProgress = GetSyncedItemProgress(options);
|
||||
|
||||
var dto = GetBaseItemDtoInternal(item, options, syncProgress.ToDictionary(i => i.ItemId), user);
|
||||
|
||||
if (options.Fields.Contains(ItemFields.ItemCounts))
|
||||
{
|
||||
SetItemByNameInfo(item, dto, taggedItems, user);
|
||||
}
|
||||
|
||||
FillSyncInfo(dto, item, options, user);
|
||||
FillSyncInfo(dto, item, options, user, syncProgress);
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
@ -415,7 +408,8 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
/// <param name="item">The item.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <param name="fields">The fields.</param>
|
||||
private void AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> fields)
|
||||
/// <param name="syncProgress">The synchronize progress.</param>
|
||||
private void AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> fields, Dictionary<string, SyncedItemProgress> syncProgress)
|
||||
{
|
||||
if (item.IsFolder)
|
||||
{
|
||||
|
@ -433,7 +427,7 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
// TODO: Disable for CollectionFolder
|
||||
if (!(folder is UserRootFolder) && !(folder is UserView))
|
||||
{
|
||||
SetSpecialCounts(folder, user, dto, fields);
|
||||
SetSpecialCounts(folder, user, dto, fields, syncProgress);
|
||||
}
|
||||
|
||||
dto.UserData.Played = dto.UserData.PlayedPercentage.HasValue && dto.UserData.PlayedPercentage.Value >= 100;
|
||||
|
@ -1599,8 +1593,9 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
/// <param name="user">The user.</param>
|
||||
/// <param name="dto">The dto.</param>
|
||||
/// <param name="fields">The fields.</param>
|
||||
/// <param name="syncProgress">The synchronize progress.</param>
|
||||
/// <returns>Task.</returns>
|
||||
private void SetSpecialCounts(Folder folder, User user, BaseItemDto dto, List<ItemFields> fields)
|
||||
private void SetSpecialCounts(Folder folder, User user, BaseItemDto dto, List<ItemFields> fields, Dictionary<string,SyncedItemProgress> syncProgress)
|
||||
{
|
||||
var recursiveItemCount = 0;
|
||||
var unplayed = 0;
|
||||
|
@ -1608,6 +1603,8 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
|
||||
DateTime? dateLastMediaAdded = null;
|
||||
double totalPercentPlayed = 0;
|
||||
double totalSyncPercent = 0;
|
||||
var addSyncInfo = fields.Contains(ItemFields.SyncInfo);
|
||||
|
||||
IEnumerable<BaseItem> children;
|
||||
|
||||
|
@ -1666,6 +1663,27 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
}
|
||||
|
||||
runtime += child.RunTimeTicks ?? 0;
|
||||
|
||||
if (addSyncInfo)
|
||||
{
|
||||
double percent = 0;
|
||||
SyncedItemProgress syncItemProgress;
|
||||
if (syncProgress.TryGetValue(dto.Id, out syncItemProgress))
|
||||
{
|
||||
switch (syncItemProgress.Status)
|
||||
{
|
||||
case SyncJobItemStatus.Synced:
|
||||
percent = 100;
|
||||
break;
|
||||
case SyncJobItemStatus.Converting:
|
||||
case SyncJobItemStatus.ReadyToTransfer:
|
||||
case SyncJobItemStatus.Transferring:
|
||||
percent = 50;
|
||||
break;
|
||||
}
|
||||
}
|
||||
totalSyncPercent += percent;
|
||||
}
|
||||
}
|
||||
|
||||
dto.RecursiveItemCount = recursiveItemCount;
|
||||
|
@ -1674,6 +1692,11 @@ namespace MediaBrowser.Server.Implementations.Dto
|
|||
if (recursiveItemCount > 0)
|
||||
{
|
||||
dto.UserData.PlayedPercentage = totalPercentPlayed / recursiveItemCount;
|
||||
|
||||
if (addSyncInfo)
|
||||
{
|
||||
dto.SyncPercent = totalSyncPercent / recursiveItemCount;
|
||||
}
|
||||
}
|
||||
|
||||
if (runtime > 0 && fields.Contains(ItemFields.CumulativeRunTimeTicks))
|
||||
|
|
|
@ -1131,9 +1131,9 @@ namespace MediaBrowser.Server.Implementations.Sync
|
|||
await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query)
|
||||
public QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query)
|
||||
{
|
||||
return _repo.GetLibraryItemIds(query);
|
||||
return _repo.GetSyncedItemProgresses(query);
|
||||
}
|
||||
|
||||
public SyncJobOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job)
|
||||
|
|
|
@ -627,9 +627,9 @@ namespace MediaBrowser.Server.Implementations.Sync
|
|||
}
|
||||
}
|
||||
|
||||
public QueryResult<string> GetLibraryItemIds(SyncJobItemQuery query)
|
||||
public QueryResult<SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query)
|
||||
{
|
||||
return GetJobItemReader(query, "select ItemId from SyncJobItems", GetItemId);
|
||||
return GetJobItemReader(query, "select ItemId,Status from SyncJobItems", GetSyncedItemProgress);
|
||||
}
|
||||
|
||||
public QueryResult<SyncJobItem> GetJobItems(SyncJobItemQuery query)
|
||||
|
@ -788,9 +788,18 @@ namespace MediaBrowser.Server.Implementations.Sync
|
|||
return info;
|
||||
}
|
||||
|
||||
private string GetItemId(IDataReader reader)
|
||||
private SyncedItemProgress GetSyncedItemProgress(IDataReader reader)
|
||||
{
|
||||
return reader.GetString(0);
|
||||
var item = new SyncedItemProgress();
|
||||
|
||||
item.ItemId = reader.GetString(0);
|
||||
|
||||
if (!reader.IsDBNull(1))
|
||||
{
|
||||
item.Status = (SyncJobItemStatus)Enum.Parse(typeof(SyncJobItemStatus), reader.GetString(1), true);
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
<Content Include="dashboard-ui\css\materialize.css">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="dashboard-ui\css\voice.css">
|
||||
<Content Include="dashboard-ui\voice\voice.css">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="dashboard-ui\dashboardhosting.html">
|
||||
|
@ -201,7 +201,7 @@
|
|||
<Content Include="dashboard-ui\scripts\userpassword.js">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="dashboard-ui\scripts\voice.js">
|
||||
<Content Include="dashboard-ui\voice\voice.js">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="dashboard-ui\scripts\wizardagreement.js">
|
||||
|
|
Loading…
Reference in New Issue
Block a user