diff --git a/src/Ombi/ClientApp/app/requests/requests.module.ts b/src/Ombi/ClientApp/app/requests/requests.module.ts index 776da325e..eaedf9618 100644 --- a/src/Ombi/ClientApp/app/requests/requests.module.ts +++ b/src/Ombi/ClientApp/app/requests/requests.module.ts @@ -15,6 +15,7 @@ import { TvRequestsComponent } from './tvrequests.component'; import { TvRequestManageComponent } from './tvrequest-manage.component'; //import { RequestGridComponent } from '../request-grid/request-grid.component'; // import { RequestCardComponent } from '../request-grid/request-card.component'; +import { TreeTableModule } from 'primeng/primeng'; import { IdentityService } from '../services/identity.service'; import { RequestService } from '../services/request.service'; @@ -35,6 +36,7 @@ const routes: Routes = [ InfiniteScrollModule, ButtonModule, DialogModule, + TreeTableModule ], declarations: [ RequestComponent, @@ -49,6 +51,6 @@ const routes: Routes = [ IdentityService, RequestService ], - + }) export class RequestsModule { } \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.html b/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.html index 76ab3384d..649cdbebf 100644 --- a/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.html +++ b/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.html @@ -1,11 +1,17 @@ 
- +
Requested By: {{child.requestedUser.userName}} -
+ + + + + + +
-
+ +
+
@@ -28,8 +36,75 @@
+
+ + +
+ + +

Season: {{season.seasonNumber}}

+ + + + + + + + + + + + + + + + + + + + +
+ + # + + + + Title + + + + Air Date + + + + Status + +
+ {{ep.episodeNumber}} + + {{ep.title}} + + {{ep.airDate | date: 'dd/MM/yyyy' }} + + Available + Processing Request +
+ + Pending Approval + + + + Not Yet Requested + +
+
+
+
+
+



+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.ts b/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.ts index 99de17d90..d55e614e5 100644 --- a/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.ts +++ b/src/Ombi/ClientApp/app/requests/tvrequest-manage.component.ts @@ -4,7 +4,7 @@ import { ActivatedRoute } from '@angular/router'; import { RequestService } from '../services/request.service'; import { IdentityService } from '../services/identity.service'; -import { IChildRequests, IEpisodesRequests } from '../interfaces/IRequestModel'; +import { IChildRequests, IEpisodesRequests, INewSeasonRequests } from '../interfaces/IRequestModel'; @Component({ templateUrl: './tvrequest-manage.component.html' @@ -17,7 +17,7 @@ export class TvRequestManageComponent { .subscribe(params => { this.tvId = +params['id']; // (+) converts string 'id' to a number this.requestService.getChildRequests(this.tvId).subscribe(x => { - this.childRequests = x; + this.childRequests = this.fixEpisodeSort(x); }); }); @@ -27,7 +27,16 @@ export class TvRequestManageComponent { tvId: number; childRequests: IChildRequests[]; isAdmin: boolean; - + public fixEpisodeSort(items: IChildRequests[]) { + items.forEach(function (value) { + value.seasonRequests.forEach(function (requests: INewSeasonRequests) { + requests.episodes.sort(function (a: IEpisodesRequests, b: IEpisodesRequests) { + return a.episodeNumber - b.episodeNumber; + }) + }) + }) + return items; + } public removeRequest(request: IChildRequests) { this.requestService.deleteChild(request) .subscribe(); @@ -49,7 +58,7 @@ export class TvRequestManageComponent { request.approved = true; request.denied = false; this.requestService.updateChild(request) - .subscribe(); + .subscribe(); } public denySeasonRequest(request: IChildRequests) { @@ -60,12 +69,10 @@ export class TvRequestManageComponent { } public getColour(ep: IEpisodesRequests): string { - if (ep.available) - { + if (ep.available) { return "lime"; } - if (ep.approved) - { + if (ep.approved) { return "#00c0ff"; } return "white"; diff --git a/src/Ombi/ClientApp/app/requests/tvrequests.component.html b/src/Ombi/ClientApp/app/requests/tvrequests.component.html index 4f874559d..892c5bd94 100644 --- a/src/Ombi/ClientApp/app/requests/tvrequests.component.html +++ b/src/Ombi/ClientApp/app/requests/tvrequests.component.html @@ -9,48 +9,201 @@ [infiniteScrollDistance]="1" [infiniteScrollThrottle]="100" (scrolled)="loadMore()"> + + + -
+ + + Results + + + +
+
+
+ poster -
-
+
- poster +
+ +
+
+ Status: + {{node.data.status}} +
-
+
+ Request status: + Available + Processing Request + Request Denied + + Pending Approval -
- -
-
- Status: - {{request.status}} +
+
Release Date: {{node.data.releaseDate | date}}
+
+
Requested Date: {{node.data.requestedDate | date}}
+
+
+ + +
+
+ +
+
+
+
+
+ +
+ Requested By: {{child.requestedUser.userName}} +
+ + +
+ +
+ +
+
+ +
+
+ +
+
+
+
+ + +
+ + +

Season: {{season.seasonNumber}}

+ + + + + + + + + + + + + + + + + -
- Request status: - Available - Processing Request - Request Denied - - Pending Approval +
+ +
+ + # + + + + Title + + + + Air Date + + + + Status + +
+ {{ep.episodeNumber}} + + {{ep.title}} + + {{ep.airDate | date: 'dd/MM/yyyy' }} + + Available + Processing Request +
+ + Pending Approval + + + + Not Yet Requested + +
+
+
+
+
+
+
+
+
+
+
-
Release Date: {{request.releaseDate | date}}
-
-
Requested Date: {{request.requestedDate | date}}
+ + + + + + + +
diff --git a/src/Ombi/ClientApp/app/requests/tvrequests.component.ts b/src/Ombi/ClientApp/app/requests/tvrequests.component.ts index bc48fc6bc..3c21ed4cc 100644 --- a/src/Ombi/ClientApp/app/requests/tvrequests.component.ts +++ b/src/Ombi/ClientApp/app/requests/tvrequests.component.ts @@ -12,7 +12,8 @@ import 'rxjs/add/operator/map'; import { RequestService } from '../services/request.service'; import { IdentityService } from '../services/identity.service'; -import { ITvRequests, IChildRequests } from '../interfaces/IRequestModel'; +import { ITvRequests, IChildRequests, INewSeasonRequests, IEpisodesRequests } from '../interfaces/IRequestModel'; +import { /*TreeTableModule,*/ TreeNode, /*SharedModule*/ } from "primeng/primeng"; @Component({ selector: 'tv-requests', @@ -32,11 +33,24 @@ export class TvRequestsComponent implements OnInit, OnDestroy { } this.requestService.searchTvRequests(this.searchText) .takeUntil(this.subscriptions) - .subscribe(m => this.tvRequests = m); + .subscribe(m => this.tvRequests = this.transformData(m)); }); } - + transformData(datain: ITvRequests[]): any { + var temp: TreeNode[] = []; + datain.forEach(function (value) { + temp.push({ + "data": value, + "children": [{ + "data": this.fixEpisodeSort(value.childRequests), leaf: true + }], + leaf: false + }); + }, this) + console.log(temp); + return temp; + } private subscriptions = new Subject(); tvRequests: ITvRequests[]; @@ -52,15 +66,23 @@ export class TvRequestsComponent implements OnInit, OnDestroy { public showChildDialogue = false; // This is for the child modal popup public selectedSeason: ITvRequests; - + fixEpisodeSort(items: IChildRequests[]) { + items.forEach(function (value) { + value.seasonRequests.forEach(function (requests: INewSeasonRequests) { + requests.episodes.sort(function (a: IEpisodesRequests, b: IEpisodesRequests) { + return a.episodeNumber - b.episodeNumber; + }) + }) + }) + return items; + } ngOnInit() { this.amountToLoad = 5; this.currentlyLoaded = 5; + this.tvRequests = []; this.loadInit(); } - - public loadMore() { this.requestService.getTvRequests(this.amountToLoad, this.currentlyLoaded + 1) .takeUntil(this.subscriptions) @@ -78,6 +100,11 @@ export class TvRequestsComponent implements OnInit, OnDestroy { this.requestService.removeTvRequest(request); this.removeRequestFromUi(request); } + public removeChildRequest(request: IChildRequests) { + this.requestService.deleteChild(request) + .subscribe(); + this.removeChildRequestFromUi(request); + } public changeAvailability(request: IChildRequests, available: boolean) { request.available = available; @@ -85,16 +112,29 @@ export class TvRequestsComponent implements OnInit, OnDestroy { //this.updateRequest(request); } + //Was already here but not sure what's using it...' + //public approve(request: IChildRequests) { + // request.approved = true; + // request.denied = false; + // //this.updateRequest(request); + //} public approve(request: IChildRequests) { request.approved = true; request.denied = false; - //this.updateRequest(request); + this.requestService.updateChild(request) + .subscribe(); } - + //Was already here but not sure what's using it...' + //public deny(request: IChildRequests) { + // request.approved = false; + // request.denied = true; + // //this.updateRequest(request); + //} public deny(request: IChildRequests) { request.approved = false; request.denied = true; - //this.updateRequest(request); + this.requestService.updateChild(request) + .subscribe(); } public approveSeasonRequest(request: IChildRequests) { @@ -110,12 +150,28 @@ export class TvRequestsComponent implements OnInit, OnDestroy { this.requestService.updateTvRequest(this.selectedSeason) .subscribe(); } + public denyChildSeasonRequest(request: IChildRequests) { + request.approved = false; + request.denied = true; + this.requestService.updateChild(request) + .subscribe(); + } public showChildren(request: ITvRequests) { this.selectedSeason = request; this.showChildDialogue = true; } + public getColour(ep: IEpisodesRequests): string { + if (ep.available) { + return "lime"; + } + if (ep.approved) { + return "#00c0ff"; + } + return "white"; + } + //private updateRequest(request: ITvRequests) { // this.requestService.updateTvRequest(request) // .takeUntil(this.subscriptions) @@ -126,7 +182,7 @@ export class TvRequestsComponent implements OnInit, OnDestroy { this.requestService.getTvRequests(this.amountToLoad, 0) .takeUntil(this.subscriptions) .subscribe(x => { - this.tvRequests = x; + this.tvRequests = this.transformData(x); }); this.isAdmin = this.identityService.hasRole("Admin"); } @@ -142,6 +198,14 @@ export class TvRequestsComponent implements OnInit, OnDestroy { this.tvRequests.splice(index, 1); } } + private removeChildRequestFromUi(key: IChildRequests) { + //var index = this.childRequests.indexOf(key, 0); + //if (index > -1) { + // this.childRequests.splice(index, 1); + //} + //TODO FIX THIS + } + ngOnDestroy(): void { this.subscriptions.next();