From e1d2d1da20fd871cb625a2fae88e3dfae6651ef5 Mon Sep 17 00:00:00 2001 From: Jamie Rees Date: Mon, 18 Mar 2019 13:47:44 +0000 Subject: [PATCH] Done the TV Request Grid --- .../Engine/Interfaces/ITvRequestEngine.cs | 2 +- src/Ombi.Core/Engine/TvRequestEngine.cs | 26 +++++------ .../src/app/my-nav/my-nav.component.ts | 1 - .../components/tv-grid/tv-grid.component.html | 43 +++++++++++-------- .../components/tv-grid/tv-grid.component.ts | 8 ++-- .../src/app/services/requestV2.service.ts | 6 +-- src/Ombi/Controllers/V2/RequestsController.cs | 2 +- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/Ombi.Core/Engine/Interfaces/ITvRequestEngine.cs b/src/Ombi.Core/Engine/Interfaces/ITvRequestEngine.cs index f726f1b4c..ded696c0f 100644 --- a/src/Ombi.Core/Engine/Interfaces/ITvRequestEngine.cs +++ b/src/Ombi.Core/Engine/Interfaces/ITvRequestEngine.cs @@ -23,6 +23,6 @@ namespace Ombi.Core.Engine.Interfaces Task> GetRequestsLite(); Task UpdateQualityProfile(int requestId, int profileId); Task UpdateRootPath(int requestId, int rootPath); - Task> GetRequests(int count, int position, string sortProperty, string sortOrder); + Task> GetRequests(int count, int position, string sortProperty, string sortOrder); } } \ No newline at end of file diff --git a/src/Ombi.Core/Engine/TvRequestEngine.cs b/src/Ombi.Core/Engine/TvRequestEngine.cs index b62f7f96a..69337b390 100644 --- a/src/Ombi.Core/Engine/TvRequestEngine.cs +++ b/src/Ombi.Core/Engine/TvRequestEngine.cs @@ -226,44 +226,38 @@ namespace Ombi.Core.Engine } - public async Task> GetRequests(int count, int position, string sortProperty, string sortOrder) + public async Task> GetRequests(int count, int position, string sortProperty, string sortOrder) { var shouldHide = await HideFromOtherUsers(); - List allRequests = null; + List allRequests; if (shouldHide.Hide) { - var tv = TvRepository.GetLite(shouldHide.UserId); - if (tv.Any() && tv.Select(x => x.ChildRequests).Any()) - { - allRequests = await tv.OrderByDescending(x => x.ChildRequests.Select(y => y.RequestedDate).FirstOrDefault()).Skip(position).Take(count).ToListAsync(); - } + allRequests = await TvRepository.GetChild(shouldHide.UserId).ToListAsync(); // Filter out children + FilterChildren(allRequests, shouldHide); } else { - var tv = TvRepository.GetLite(); - if (tv.Any() && tv.Select(x => x.ChildRequests).Any()) - { - allRequests = await tv.OrderByDescending(x => x.ChildRequests.Select(y => y.RequestedDate).FirstOrDefault()).Skip(position).Take(count).ToListAsync(); - } + allRequests = await TvRepository.GetChild().ToListAsync(); + } if (allRequests == null) { - return new RequestsViewModel(); + return new RequestsViewModel(); } var total = allRequests.Count; - var prop = TypeDescriptor.GetProperties(typeof(TvRequests)).Find(sortProperty, true); + var prop = TypeDescriptor.GetProperties(typeof(ChildRequests)).Find(sortProperty, true); if (sortProperty.Contains('.')) { // This is a navigation property currently not supported - prop = TypeDescriptor.GetProperties(typeof(TvRequests)).Find("Title", true); + prop = TypeDescriptor.GetProperties(typeof(ChildRequests)).Find("Title", true); //var properties = sortProperty.Split(new []{'.'}, StringSplitOptions.RemoveEmptyEntries); //var firstProp = TypeDescriptor.GetProperties(typeof(MovieRequests)).Find(properties[0], true); //var propType = firstProp.PropertyType; @@ -275,7 +269,7 @@ namespace Ombi.Core.Engine allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); }); - return new RequestsViewModel + return new RequestsViewModel { Collection = allRequests, Total = total, diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts index 183f81184..b79a356a9 100644 --- a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts @@ -28,7 +28,6 @@ export class MyNavComponent { public navItems: INavBar[] = [ { name: "NavigationBar.Discover", icon: "find_replace", link: "/discover" }, - { name: "NavigationBar.Search", icon: "search", link: "/search" }, { name: "NavigationBar.Requests", icon: "list", link: "/requests" }, { name: "NavigationBar.Settings", icon: "settings", link: "/Settings/About" }, ] diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html index 6664ec19c..77edd131d 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html @@ -15,42 +15,49 @@ matSortDisableClear matSortDirection="desc"> - - Title - {{element.title}} + + Series + {{element.parentRequest.title}} - - Request Count - {{element.childRequests.length}} + + Requested By + {{element.requestedUser.userAlias}} - - Overview - - {{element.overview}} - - - Status + Status - {{element.status}} + {{element.parentRequest.status}} - - Release Date + + Requested Date - {{element.releaseDate | amLocal | amDateFormat: 'LL'}} + {{element.requestedDate | amLocal | amDateFormat: 'LL'}} + + Request Status + +
{{'Common.ProcessingRequest' | translate}}
+
{{'Common.PendingApproval' | + translate}} +
+
{{'Common.NotRequested' | + translate}} +
+ +
+ - + diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts index f14f9a25c..536265622 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts +++ b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.ts @@ -1,5 +1,5 @@ import { Component, AfterViewInit, ViewChild } from "@angular/core"; -import { IRequestsViewModel, ITvRequests } from "../../../interfaces"; +import { IRequestsViewModel, ITvRequests, IChildRequests } from "../../../interfaces"; import { MatPaginator, MatSort } from "@angular/material"; import { merge, Observable, of as observableOf } from 'rxjs'; import { catchError, map, startWith, switchMap } from 'rxjs/operators'; @@ -12,10 +12,10 @@ import { RequestServiceV2 } from "../../../services/requestV2.service"; styleUrls: ["../requests-list.component.scss"] }) export class TvGridComponent implements AfterViewInit { - public dataSource: ITvRequests[] = []; + public dataSource: IChildRequests[] = []; public resultsLength: number; public isLoadingResults = true; - public displayedColumns: string[] = ['title', 'overview', 'status', 'requestCount', 'releaseDate','actions']; + public displayedColumns: string[] = ['series', 'requestedBy', 'status', 'requestStatus', 'requestedDate','actions']; public gridCount: string = "15"; @ViewChild(MatPaginator) paginator: MatPaginator; @@ -37,7 +37,7 @@ export class TvGridComponent implements AfterViewInit { this.isLoadingResults = true; return this.requestService.getTvRequests(+this.gridCount, this.paginator.pageIndex * +this.gridCount, this.sort.active, this.sort.direction); }), - map((data: IRequestsViewModel) => { + map((data: IRequestsViewModel) => { // Flip flag to show that loading has finished. this.isLoadingResults = false; this.resultsLength = data.total; diff --git a/src/Ombi/ClientApp/src/app/services/requestV2.service.ts b/src/Ombi/ClientApp/src/app/services/requestV2.service.ts index b95c3d2f0..1eca2d6b4 100644 --- a/src/Ombi/ClientApp/src/app/services/requestV2.service.ts +++ b/src/Ombi/ClientApp/src/app/services/requestV2.service.ts @@ -4,7 +4,7 @@ import { Injectable } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { Observable } from "rxjs"; import { ServiceHelpers } from "./service.helpers"; -import { IRequestsViewModel, IMovieRequests, ITvRequests } from "../interfaces"; +import { IRequestsViewModel, IMovieRequests, ITvRequests, IChildRequests } from "../interfaces"; @Injectable() @@ -17,8 +17,8 @@ export class RequestServiceV2 extends ServiceHelpers { return this.http.get>(`${this.url}movie/${count}/${position}/${sortProperty}/${order}`, {headers: this.headers}); } - public getTvRequests(count: number, position: number, sortProperty: string , order: string): Observable> { - return this.http.get>(`${this.url}tv/${count}/${position}/${sortProperty}/${order}`, {headers: this.headers}); + public getTvRequests(count: number, position: number, sortProperty: string , order: string): Observable> { + return this.http.get>(`${this.url}tv/${count}/${position}/${sortProperty}/${order}`, {headers: this.headers}); } } diff --git a/src/Ombi/Controllers/V2/RequestsController.cs b/src/Ombi/Controllers/V2/RequestsController.cs index 2446d9fae..322b63b83 100644 --- a/src/Ombi/Controllers/V2/RequestsController.cs +++ b/src/Ombi/Controllers/V2/RequestsController.cs @@ -45,7 +45,7 @@ namespace Ombi.Controllers.V2 /// The item to sort on e.g. "requestDate" /// asc or desc [HttpGet("tv/{count:int}/{position:int}/{sort}/{sortOrder}")] - public async Task> GetTvRequests(int count, int position, string sort, string sortOrder) + public async Task> GetTvRequests(int count, int position, string sort, string sortOrder) { return await _tvRequestEngine.GetRequests(count, position, sort, sortOrder); }