You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ombi/src/Ombi/ClientApp/src/app/requests/movierequests.component.ts

387 lines
14 KiB

// import { PlatformLocation, APP_BASE_HREF } from "@angular/common";
// import { Component, Input, OnInit, Inject } from "@angular/core";
// import { DomSanitizer } from "@angular/platform-browser";
// import { Subject } from "rxjs";
// import { debounceTime, distinctUntilChanged } from "rxjs/operators";
// import { AuthService } from "../auth/auth.service";
// import { FilterType, IFilter, IIssueCategory, IMovieRequests, IPagenator, IRadarrProfile, IRadarrRootFolder, OrderType } from "../interfaces";
// import { NotificationService, RadarrService, RequestService } from "../services";
// @Component({
// selector: "movie-requests",
// templateUrl: "./movierequests.component.html",
// })
// export class MovieRequestsComponent implements OnInit {
// public movieRequests: IMovieRequests[];
// public defaultPoster: string;
// public searchChanged: Subject<string> = new Subject<string>();
// public searchText: string;
// public isAdmin: boolean; // Also PowerUser
// public radarrProfiles: IRadarrProfile[];
// public radarrRootFolders: IRadarrRootFolder[];
// @Input() public issueCategories: IIssueCategory[];
// @Input() public issuesEnabled: boolean;
// public issuesBarVisible = false;
// public issueRequest: IMovieRequests;
// public issueProviderId: string;
// public issueCategorySelected: IIssueCategory;
// public filterDisplay: boolean;
// public filter: IFilter;
// public filterType = FilterType;
// public orderType: OrderType = OrderType.RequestedDateDesc;
// public OrderType = OrderType;
// public denyDisplay: boolean;
// public requestToDeny: IMovieRequests;
// public rejectionReason: string;
// public totalMovies: number = 100;
// public currentlyLoaded: number;
// private amountToLoad: number;
// private href: string;
// constructor(
// private requestService: RequestService,
// private auth: AuthService,
// private notificationService: NotificationService,
// private radarrService: RadarrService,
// private sanitizer: DomSanitizer,
// @Inject(APP_BASE_HREF) href:string) {
// this.href = href;
// this.searchChanged.pipe(
// debounceTime(600), // Wait Xms after the last event before emitting last event
// distinctUntilChanged(), // only emit if value is different from previous value
// ).subscribe(x => {
// this.searchText = x as string;
// if (this.searchText === "") {
// this.resetSearch();
// return;
// }
// this.requestService.searchMovieRequests(this.searchText)
// .subscribe(m => {
// this.setOverrides(m);
// this.movieRequests = m;
// });
// });
// this.defaultPoster = "../../../images/default_movie_poster.png";
// const base = this.href;
// if (base) {
// this.defaultPoster = "../../.." + base + "/images/default_movie_poster.png";
// }
// }
// public ngOnInit() {
// this.amountToLoad = 10;
// this.currentlyLoaded = 10;
// this.filter = {
// availabilityFilter: FilterType.None,
// statusFilter: FilterType.None,
// };
// this.loadInit();
// this.isAdmin = this.auth.hasRole("admin") || this.auth.hasRole("poweruser");
// }
// public paginate(event: IPagenator) {
// const skipAmount = event.first;
// this.loadRequests(this.amountToLoad, skipAmount);
// }
// public search(text: any) {
// this.searchChanged.next(text.target.value);
// }
// public removeRequest(request: IMovieRequests) {
// this.requestService.removeMovieRequest(request.id);
// this.removeRequestFromUi(request);
// this.loadRequests(this.amountToLoad, this.currentlyLoaded = 0);
// }
// public changeAvailability(request: IMovieRequests, available: boolean) {
// request.available = available;
// if (available) {
// this.requestService.markMovieAvailable({ id: request.id }).subscribe(x => {
// if (x.result) {
// this.notificationService.success(
// `${request.title} Is now available`);
// } else {
// this.notificationService.warning("Request Available", x.message ? x.message : x.errorMessage);
// request.approved = false;
// }
// });
// } else {
// this.requestService.markMovieUnavailable({ id: request.id }).subscribe(x => {
// if (x.result) {
// this.notificationService.success(
// `${request.title} Is now unavailable`);
// } else {
// this.notificationService.warning("Request Available", x.message ? x.message : x.errorMessage);
// request.approved = false;
// }
// });
// }
// }
// public approve(request: IMovieRequests) {
// request.approved = true;
// this.approveRequest(request);
// }
// public deny(request: IMovieRequests) {
// this.requestToDeny = request;
// this.denyDisplay = true;
// }
// public denyRequest() {
// this.requestService.denyMovie({ id: this.requestToDeny.id, reason: this.rejectionReason })
// .subscribe(x => {
// this.denyDisplay = false;
// if (x.result) {
// this.notificationService.success(
// `Request for ${this.requestToDeny.title} has been denied successfully`);
// const index = this.movieRequests.indexOf(this.requestToDeny, 0);
// if (index > -1) {
// this.movieRequests[index].denied = true;
// }
// } else {
// this.notificationService.warning("Request Denied", x.message ? x.message : x.errorMessage);
// this.requestToDeny.denied = false;
// }
// });
// }
// public selectRootFolder(searchResult: IMovieRequests, rootFolderSelected: IRadarrRootFolder, event: any) {
// event.preventDefault();
// searchResult.rootPathOverride = rootFolderSelected.id;
// this.setOverride(searchResult);
// this.updateRequest(searchResult);
// }
// public selectQualityProfile(searchResult: IMovieRequests, profileSelected: IRadarrProfile, event: any) {
// event.preventDefault();
// searchResult.qualityOverride = profileSelected.id;
// this.setOverride(searchResult);
// this.updateRequest(searchResult);
// }
// public reportIssue(catId: IIssueCategory, req: IMovieRequests) {
// this.issueRequest = req;
// this.issueCategorySelected = catId;
// this.issuesBarVisible = true;
// this.issueProviderId = req.theMovieDbId.toString();
// }
// public ignore(event: any): void {
// event.preventDefault();
// }
// public clearFilter(el: any) {
// el = el.toElement || el.relatedTarget || el.target || el.srcElement;
// el = el.parentElement;
// el = el.querySelectorAll("INPUT");
// for (el of el) {
// el.checked = false;
// el.parentElement.classList.remove("active");
// }
// this.filterDisplay = false;
// this.filter.availabilityFilter = FilterType.None;
// this.filter.statusFilter = FilterType.None;
// this.resetSearch();
// }
// public filterAvailability(filter: FilterType, el: any) {
// this.filterActiveStyle(el);
// this.filter.availabilityFilter = filter;
// this.loadInit();
// }
// public filterStatus(filter: FilterType, el: any) {
// this.filterActiveStyle(el);
// this.filter.statusFilter = filter;
// this.loadInit();
// }
// public setOrder(value: OrderType, el: any) {
// el = el.toElement || el.relatedTarget || el.target || el.srcElement;
// const parent = el.parentElement;
// const previousFilter = parent.querySelector(".active");
// previousFilter.className = "";
// el.className = "active";
// this.orderType = value;
// this.loadInit();
// }
// public subscribe(request: IMovieRequests) {
// request.subscribed = true;
// this.requestService.subscribeToMovie(request.id)
// .subscribe(x => {
// this.notificationService.success("Subscribed To Movie!");
// });
// }
// public unSubscribe(request: IMovieRequests) {
// request.subscribed = false;
// this.requestService.unSubscribeToMovie(request.id)
// .subscribe(x => {
// this.notificationService.success("Unsubscribed Movie!");
// });
// }
// public isRequestUser(request: IMovieRequests) {
// if (request.requestedUser.userName === this.auth.claims().name) {
// return true;
// }
// return false;
// }
// private filterActiveStyle(el: any) {
// el = el.toElement || el.relatedTarget || el.target || el.srcElement;
// el = el.parentElement; //gets radio div
// el = el.parentElement; //gets form group div
// el = el.parentElement; //gets status filter div
// el = el.querySelectorAll("INPUT");
// for (el of el) {
// if (el.checked) {
// if (!el.parentElement.classList.contains("active")) {
// el.parentElement.className += " active";
// }
// } else {
// el.parentElement.classList.remove("active");
// }
// }
// }
// private loadRequests(amountToLoad: number, currentlyLoaded: number) {
// this.requestService.getMovieRequests(amountToLoad, currentlyLoaded, this.orderType, this.filter)
// .subscribe(x => {
// this.setOverrides(x.collection);
// if (!this.movieRequests) {
// this.movieRequests = [];
// }
// this.movieRequests = x.collection;
// this.totalMovies = x.total;
// this.currentlyLoaded = currentlyLoaded + amountToLoad;
// });
// }
// private updateRequest(request: IMovieRequests) {
// this.requestService.updateMovieRequest(request)
// .subscribe(x => {
// this.setOverride(x);
// request = x;
// });
// }
// private approveRequest(request: IMovieRequests) {
// this.requestService.approveMovie({ id: request.id })
// .subscribe(x => {
// request.approved = true;
// if (x.result) {
// this.notificationService.success(
// `Request for ${request.title} has been approved successfully`);
// } else {
// this.notificationService.warning("Request Approved", x.message ? x.message : x.errorMessage);
// request.approved = false;
// }
// });
// }
// private loadInit() {
// this.requestService.getMovieRequests(this.amountToLoad, 0, this.orderType, this.filter)
// .subscribe(x => {
// this.movieRequests = x.collection;
// this.totalMovies = x.total;
// this.movieRequests.forEach((req) => {
// this.setBackground(req);
// this.setPoster(req);
// });
// if (this.isAdmin) {
// this.radarrService.getQualityProfilesFromSettings().subscribe(c => {
// this.radarrProfiles = c;
// this.movieRequests.forEach((req) => this.setQualityOverrides(req));
// });
// this.radarrService.getRootFoldersFromSettings().subscribe(c => {
// this.radarrRootFolders = c;
// this.movieRequests.forEach((req) => this.setRootFolderOverrides(req));
// });
// }
// });
// }
// private resetSearch() {
// this.currentlyLoaded = 5;
// this.loadInit();
// }
// private removeRequestFromUi(key: IMovieRequests) {
// const index = this.movieRequests.indexOf(key, 0);
// if (index > -1) {
// this.movieRequests.splice(index, 1);
// }
// }
// private setOverrides(requests: IMovieRequests[]): void {
// requests.forEach((req) => {
// this.setOverride(req);
// });
// }
// private setQualityOverrides(req: IMovieRequests): void {
// if (this.radarrProfiles) {
// const profile = this.radarrProfiles.filter((p) => {
// return p.id === req.qualityOverride;
// });
// if (profile.length > 0) {
// req.qualityOverrideTitle = profile[0].name;
// }
// }
// }
// private setRootFolderOverrides(req: IMovieRequests): void {
// if (this.radarrRootFolders) {
// const path = this.radarrRootFolders.filter((folder) => {
// return folder.id === req.rootPathOverride;
// });
// if (path.length > 0) {
// req.rootPathOverrideTitle = path[0].path;
// }
// }
// }
// private setOverride(req: IMovieRequests): void {
// this.setPoster(req);
// this.setBackground(req);
// this.setQualityOverrides(req);
// this.setRootFolderOverrides(req);
// }
// private setPoster(req: IMovieRequests): void {
// if (req.posterPath === null) {
// req.posterPath = this.defaultPoster;
// } else {
// req.posterPath = "https://image.tmdb.org/t/p/w300/" + req.posterPath;
// }
// }
// private setBackground(req: IMovieRequests): void {
// req.backgroundPath = this.sanitizer.bypassSecurityTrustStyle
// ("url(" + "https://image.tmdb.org/t/p/w1280" + req.background + ")");
// }
// }