-
+
+
+
+
+ Status:
+ {{node.data.status}}
+
-
+
+ Request status:
+ Available
+ Processing Request
+ Request Denied
+
+ Pending Approval
-
+
+
Release Date: {{node.data.releaseDate | date}}
+
+
Requested Date: {{node.data.requestedDate | date}}
+
+
-
-
-
-
- Status:
- {{request.status}}
+
+
+
+
+
+
+
+
+
+
+
+
+ Requested By: {{child.requestedUser.userName}}
+
+
+
+
+
+
+
+
+
+
+
+
-
-
Request status:
-
Available
-
Processing Request
-
Request Denied
-
-
Pending Approval
+
+
+
+ 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
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
Release Date: {{request.releaseDate | date}}
-
-
Requested Date: {{request.requestedDate | date}}
+
+
+
+
+
+
+
+
diff --git a/src/Ombi/ClientApp/app/requests/tvrequests.component.scss b/src/Ombi/ClientApp/app/requests/tvrequests.component.scss
new file mode 100644
index 000000000..5fd85eddd
--- /dev/null
+++ b/src/Ombi/ClientApp/app/requests/tvrequests.component.scss
@@ -0,0 +1,14 @@
+table.ui-widget-content {
+ border: 1px solid #1f1f1f !important;
+ background: #1f1f1f !important;
+}
+.ui-widget-content {
+ color: #ffffff;
+}
+.ui-state-default.ui-unselectable-text{
+ display:none;
+}
+.ui-treetable-toggler.fa.fa-fw.ui-c.fa-caret-right,
+.ui-treetable-toggler.fa.fa-fw.ui-c.fa-caret-down {
+ display: none;
+}
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/app/requests/tvrequests.component.ts b/src/Ombi/ClientApp/app/requests/tvrequests.component.ts
index bc48fc6bc..70b922eba 100644
--- a/src/Ombi/ClientApp/app/requests/tvrequests.component.ts
+++ b/src/Ombi/ClientApp/app/requests/tvrequests.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
+import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
@@ -12,11 +12,17 @@ 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 { TreeNode, } from "primeng/primeng";
@Component({
selector: 'tv-requests',
- templateUrl: './tvrequests.component.html'
+ templateUrl: './tvrequests.component.html',
+ styleUrls: ['./tvrequests.component.scss'],
+ //Was required to turn off encapsulation since CSS only should be overridden for this component
+ //However when encapsulation is on angular injects prefixes to all classes so css selectors
+ //Stop working
+ encapsulation: ViewEncapsulation.None
})
export class TvRequestsComponent implements OnInit, OnDestroy {
constructor(private requestService: RequestService, private identityService: IdentityService) {
@@ -32,11 +38,50 @@ 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));
});
}
-
-
+ openClosestTab(el:any): void {
+ var rowclass = "undefined";
+ el = el.toElement;
+ while (el.className != rowclass) {
+ // Increment the loop to the parent node until we find the row we need
+ el = el.parentNode;
+ if (!el) {
+ }
+ }
+ // At this point, the while loop has stopped and `el` represents the element that has
+ // the class you specified
+
+ // Then we loop through the children to find the caret which we want to click
+ var caretright = "ui-treetable-toggler fa fa-fw ui-c fa-caret-right";
+ var caretdown = "ui-treetable-toggler fa fa-fw ui-c fa-caret-down";
+ for (var value of el.children) {
+ // the caret from the ui has 2 class selectors depending on if expanded or not
+ // we search for both since we want to still toggle the clicking
+ if (value.className === caretright || value.className === caretdown )
+ {
+ // Then we tell JS to click the element even though we hid it from the UI
+ value.click();
+ //Break from loop since we no longer need to continue looking
+ break;
+ }
+ };
+ }
+ 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 +97,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 +131,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 +143,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 +181,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 +213,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 +229,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();