diff --git a/WatchIt.Website/WatchIt.Website/Components/Common/Subcomponents/RoleListComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/Common/Subcomponents/RoleListComponent.razor.cs index a44624f..8e5f918 100644 --- a/WatchIt.Website/WatchIt.Website/Components/Common/Subcomponents/RoleListComponent.razor.cs +++ b/WatchIt.Website/WatchIt.Website/Components/Common/Subcomponents/RoleListComponent.razor.cs @@ -84,9 +84,6 @@ public partial class RoleListComponent : ComponentBa // END await Task.WhenAll(endTasks); - - _loaded = true; - StateHasChanged(); } } @@ -95,12 +92,9 @@ public partial class RoleListComponent : ComponentBa _rolesFetching = true; await GetRolesAction(Id, Query, async data => { - List newRolesArray = data.ToList(); - Dictionary newRoles = new Dictionary(); - await Parallel.ForEachAsync(data, new ParallelOptions { MaxDegreeOfParallelism = 4 }, async (item, _) => await GetRoleParentMethod(ParentItemIdSource(item), parent => newRoles[item] = parent)); - foreach (KeyValuePair kvp in newRoles.OrderBy(x => newRolesArray.IndexOf(x.Key))) + foreach (TRole item in data) { - _roles[kvp.Key] = kvp.Value; + await GetRoleParentMethod(ParentItemIdSource(item), parent => _roles[item] = parent); } if (data.Count() < _pageSize) { @@ -115,6 +109,8 @@ public partial class RoleListComponent : ComponentBa } Query.After += data.Count(); _rolesFetching = false; + + _loaded = true; StateHasChanged(); }); } diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/MediaPage/Panels/ActorRolesPanelComponent.razor b/WatchIt.Website/WatchIt.Website/Components/Pages/MediaPage/Panels/MediaActorRolesPanelComponent.razor similarity index 94% rename from WatchIt.Website/WatchIt.Website/Components/Pages/MediaPage/Panels/ActorRolesPanelComponent.razor rename to WatchIt.Website/WatchIt.Website/Components/Pages/MediaPage/Panels/MediaActorRolesPanelComponent.razor index 9f1a1df..80804ab 100644 --- a/WatchIt.Website/WatchIt.Website/Components/Pages/MediaPage/Panels/ActorRolesPanelComponent.razor +++ b/WatchIt.Website/WatchIt.Website/Components/Pages/MediaPage/Panels/MediaActorRolesPanelComponent.razor @@ -3,7 +3,7 @@ -
+
Actors +
+ Actor + +
+
\ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonActorRolesPanelComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonActorRolesPanelComponent.razor.cs new file mode 100644 index 0000000..4b87639 --- /dev/null +++ b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonActorRolesPanelComponent.razor.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Components; +using WatchIt.Website.Services.WebAPI.Media; +using WatchIt.Website.Services.WebAPI.Persons; +using WatchIt.Website.Services.WebAPI.Roles; + +namespace WatchIt.Website.Components.Pages.PersonPage.Panels; + +public partial class PersonActorRolesPanelComponent : ComponentBase +{ + #region SERVICES + + [Inject] private IMediaWebAPIService MediaWebAPIService { get; set; } = default!; + [Inject] private IPersonsWebAPIService PersonsWebAPIService { get; set; } = default!; + [Inject] private IRolesWebAPIService RolesWebAPIService { get; set; } = default!; + + #endregion + + + + #region PARAMETERS + + [Parameter] public string Class { get; set; } = string.Empty; + [Parameter] public required long Id { get; set; } + [Parameter] public Action? OnRatingChanged { get; set; } + + #endregion +} \ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonCreatorRolesPanelComponent.razor b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonCreatorRolesPanelComponent.razor new file mode 100644 index 0000000..609b18a --- /dev/null +++ b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonCreatorRolesPanelComponent.razor @@ -0,0 +1,43 @@ +@using WatchIt.Common.Model.Persons +@using WatchIt.Common.Model.Roles + + + +
+ @if (_loaded) + { +
+ Creators +
+ + @foreach (RoleTypeResponse roleType in _roleTypes) + { + @roleType.Name + } + +
+ +
+ } + else + { + + } +
\ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonCreatorRolesPanelComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonCreatorRolesPanelComponent.razor.cs new file mode 100644 index 0000000..ac6f353 --- /dev/null +++ b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonCreatorRolesPanelComponent.razor.cs @@ -0,0 +1,76 @@ +using Microsoft.AspNetCore.Components; +using WatchIt.Common.Model.Media; +using WatchIt.Common.Model.Roles; +using WatchIt.Website.Components.Common.Subcomponents; +using WatchIt.Website.Services.WebAPI.Media; +using WatchIt.Website.Services.WebAPI.Persons; +using WatchIt.Website.Services.WebAPI.Roles; + +namespace WatchIt.Website.Components.Pages.PersonPage.Panels; + +public partial class PersonCreatorRolesPanelComponent : ComponentBase +{ + #region SERVICES + + [Inject] private IPersonsWebAPIService PersonsWebAPIService { get; set; } = default!; + [Inject] private IMediaWebAPIService MediaWebAPIService { get; set; } = default!; + [Inject] private IRolesWebAPIService RolesWebAPIService { get; set; } = default!; + + #endregion + + + + #region PARAMETERS + + [Parameter] public string Class { get; set; } = string.Empty; + [Parameter] public required long Id { get; set; } + [Parameter] public Action? OnRatingChanged { get; set; } + + #endregion + + + + #region FIELDS + + private RoleListComponent _roleListComponent; + + private bool _loaded; + + private IEnumerable _roleTypes; + private CreatorRolePersonQueryParameters _query; + + #endregion + + + + #region PRIVATE METHODS + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + List endTasks = new List(); + + // STEP 0 + endTasks.AddRange( + [ + RolesWebAPIService.GetAllCreatorRoleTypes(successAction: data => _roleTypes = data) + ]); + + // END + await Task.WhenAll(endTasks); + _query = new CreatorRolePersonQueryParameters { TypeId = _roleTypes.First().Id }; + + _loaded = true; + StateHasChanged(); + } + } + + private async Task CheckedTypeChanged(short value) + { + _query.TypeId = value; + await _roleListComponent.Refresh(); + } + + #endregion +} \ No newline at end of file diff --git a/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonRatingPanel.razor.cs b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonRatingPanel.razor.cs index 2393a2c..4e57c54 100644 --- a/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonRatingPanel.razor.cs +++ b/WatchIt.Website/WatchIt.Website/Components/Pages/PersonPage/Panels/PersonRatingPanel.razor.cs @@ -37,7 +37,11 @@ public partial class PersonRatingPanel : ComponentBase #region PUBLIC METHODS - public async Task UpdateRating() => await Task.WhenAll(UpdateGlobalRating(), UpdateUserRating()); + public async Task UpdateRating() + { + await Task.WhenAll(UpdateGlobalRating(), UpdateUserRating()); + StateHasChanged(); + } #endregion diff --git a/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor b/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor index a295da4..2dde4a8 100644 --- a/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor +++ b/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor @@ -177,12 +177,12 @@ else
- +
- +
diff --git a/WatchIt.Website/WatchIt.Website/Pages/PersonPage.razor b/WatchIt.Website/WatchIt.Website/Pages/PersonPage.razor index 7e6d327..d88eb16 100644 --- a/WatchIt.Website/WatchIt.Website/Pages/PersonPage.razor +++ b/WatchIt.Website/WatchIt.Website/Pages/PersonPage.razor @@ -52,12 +52,14 @@
- +
- +