diff --git a/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs b/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs
index 31fd458c5..4dd20926b 100644
--- a/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs
+++ b/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs
@@ -131,6 +131,7 @@ namespace Ombi.Core.Engine.V2
item.Available = oldModel.Available;
item.Approved = oldModel.Approved;
item.SeasonRequests = oldModel.SeasonRequests;
+ item.RequestId = oldModel.RequestId;
return await GetExtraInfo(showInfoTask, item);
}
diff --git a/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs b/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs
index 2d4482ba9..f2358a5f6 100644
--- a/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs
+++ b/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs
@@ -42,22 +42,11 @@ namespace Ombi.Core.Rule.Rules.Search
}
if (obj.Type == RequestType.TvShow)
{
- //var tvRequests = Tv.GetRequest(obj.Id);
- //if (tvRequests != null) // Do we already have a request for this?
- //{
-
- // obj.Requested = true;
- // obj.Approved = tvRequests.ChildRequests.Any(x => x.Approved);
- // obj.Available = tvRequests.ChildRequests.Any(x => x.Available);
-
- // return Task.FromResult(Success());
- //}
-
var request = (SearchTvShowViewModel)obj;
var tvRequests = Tv.GetRequest(obj.Id);
if (tvRequests != null) // Do we already have a request for this?
{
-
+ request.RequestId = tvRequests.Id;
request.Requested = true;
request.Approved = tvRequests.ChildRequests.Any(x => x.Approved);
diff --git a/src/Ombi/ClientApp/src/app/discover/card/discover-card-details.component.ts b/src/Ombi/ClientApp/src/app/discover/card/discover-card-details.component.ts
index 2c0776804..31fd2a8d0 100644
--- a/src/Ombi/ClientApp/src/app/discover/card/discover-card-details.component.ts
+++ b/src/Ombi/ClientApp/src/app/discover/card/discover-card-details.component.ts
@@ -78,7 +78,7 @@ export class DiscoverCardDetailsComponent implements OnInit {
}
} else if (this.data.type === RequestType.tvShow) {
- this.dialog.open(EpisodeRequestComponent, { width: "700px", data: this.tv })
+ this.dialog.open(EpisodeRequestComponent, { width: "700px", data: this.tv, panelClass: 'modal-panel' })
}
this.loading = false;
diff --git a/src/Ombi/ClientApp/src/app/discover/card/discover-card.component.ts b/src/Ombi/ClientApp/src/app/discover/card/discover-card.component.ts
index 4c958e77e..082b3b80e 100644
--- a/src/Ombi/ClientApp/src/app/discover/card/discover-card.component.ts
+++ b/src/Ombi/ClientApp/src/app/discover/card/discover-card.component.ts
@@ -27,7 +27,7 @@ export class DiscoverCardComponent implements OnInit {
}
public openDetails(details: IDiscoverCardResult) {
- const ref = this.dialog.open(DiscoverCardDetailsComponent, { width:"700px", data: details })
+ const ref = this.dialog.open(DiscoverCardDetailsComponent, { width:"700px", data: details, panelClass: 'modal-panel' })
ref.afterClosed().subscribe(result => {
console.log('The dialog was closed');
diff --git a/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts b/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts
index 7cba0d6ec..c34fb6c85 100644
--- a/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts
+++ b/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts
@@ -41,6 +41,7 @@ export interface ISearchTvResultV2 {
images: IImagesV2;
cast: ICast[];
crew: ICrew[];
+ requestId: number;
}
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/index.ts b/src/Ombi/ClientApp/src/app/media-details/components/index.ts
index 99d46d339..bb93feb82 100644
--- a/src/Ombi/ClientApp/src/app/media-details/components/index.ts
+++ b/src/Ombi/ClientApp/src/app/media-details/components/index.ts
@@ -2,12 +2,13 @@
import { YoutubeTrailerComponent } from "./shared/youtube-trailer.component";
import { TvDetailsComponent } from "./tv/tv-details.component";
import { MovieInformationPanelComponent } from "./movie/panels/movie-information-panel.component";
-import { TvInformationPanelComponent } from "./tv/panels/tv-information-panel.component";
+import { TvInformationPanelComponent } from "./tv/panels/tv-information-panel/tv-information-panel.component";
import { TopBannerComponent } from "./shared/top-banner/top-banner.component";
import { SocialIconsComponent } from "./shared/social-icons/social-icons.component";
import { MediaPosterComponent } from "./shared/media-poster/media-poster.component";
import { CastCarouselComponent } from "./shared/cast-carousel/cast-carousel.component";
import { DenyDialogComponent } from "./shared/deny-dialog/deny-dialog.component";
+import { TvRequestsPanelComponent } from "./tv/panels/tv-requests/tv-requests-panel.component";
export const components: any[] = [
MovieDetailsComponent,
@@ -20,6 +21,7 @@ export const components: any[] = [
MediaPosterComponent,
CastCarouselComponent,
DenyDialogComponent,
+ TvRequestsPanelComponent
];
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.html
similarity index 100%
rename from src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel.component.html
rename to src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.html
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel.component.ts b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.ts
similarity index 82%
rename from src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel.component.ts
rename to src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.ts
index 6f1b3773f..0e64c566a 100644
--- a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel.component.ts
+++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.ts
@@ -1,9 +1,9 @@
import { Component, ViewEncapsulation, Input, OnInit } from "@angular/core";
-import { ISearchTvResultV2 } from "../../../../interfaces/ISearchTvResultV2";
+import { ISearchTvResultV2 } from "../../../../../interfaces/ISearchTvResultV2";
@Component({
templateUrl: "./tv-information-panel.component.html",
- styleUrls: ["../../../media-details.component.scss"],
+ styleUrls: ["../../../../media-details.component.scss"],
selector: "tv-information-panel",
encapsulation: ViewEncapsulation.None
})
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html
new file mode 100644
index 000000000..c7631725c
--- /dev/null
+++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+ {{'Common.ProcessingRequest' | translate}}
+
+ {{'Common.PendingApproval' | translate}}
+
+
+ {{'Common.NotRequested' | translate}}
+
+ {{'Common.Available' | translate}}
+
+
+
+ Requested By '{{request.requestedUser.userAlias}}' on
+ {{request.requestedDate | amLocal | amDateFormat: 'LL' }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ 'Requests.Number' | translate }} |
+ {{element.episodeNumber}} |
+
+
+
+ {{ 'Requests.GridTitle' | translate }} |
+ {{element.title}} |
+
+
+
+ {{ 'Requests.AirDate' | translate }} |
+ {{element.airDate | amLocal | amDateFormat: 'L' }} |
+
+
+
+ {{ 'Requests.GridStatus' | translate }} |
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.scss b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.scss
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.ts b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.ts
new file mode 100644
index 000000000..784c2d50d
--- /dev/null
+++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.ts
@@ -0,0 +1,16 @@
+import { Component, ViewEncapsulation, Input, OnInit } from "@angular/core";
+import { IChildRequests } from "../../../../../interfaces";
+
+@Component({
+ templateUrl: "./tv-requests-panel.component.html",
+ styleUrls: ["./tv-requests-panel.component.scss"],
+ selector: "tv-requests-panel"
+})
+export class TvRequestsPanelComponent implements OnInit {
+ @Input() public tvRequest: IChildRequests[];
+
+ public displayedColumns: string[] = ['number', 'title', 'airDate', 'status'];
+ public ngOnInit(): void {
+ //
+ }
+}
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html
index 26292fa79..9439ac763 100644
--- a/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html
+++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html
@@ -13,19 +13,21 @@
+ [imdbId]="tv.imdbId" [available]="tv.available" [plexUrl]="tv.plexUrl" [embyUrl]="tv.embyUrl">
+
-
@@ -56,6 +58,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Requests
+
+
+
+
+
+
@@ -63,84 +89,7 @@
-
-
@@ -150,4 +99,4 @@
-
+
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.ts b/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.ts
index 4f56ee4b2..4a5c87365 100644
--- a/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.ts
+++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.ts
@@ -1,11 +1,12 @@
import { Component, ViewEncapsulation } from "@angular/core";
-import { ImageService, SearchV2Service, MessageService } from "../../../services";
+import { ImageService, SearchV2Service, MessageService, RequestService } from "../../../services";
import { ActivatedRoute } from "@angular/router";
import { DomSanitizer } from "@angular/platform-browser";
import { ISearchTvResultV2 } from "../../../interfaces/ISearchTvResultV2";
import { MatDialog } from "@angular/material";
import { YoutubeTrailerComponent } from "../shared/youtube-trailer.component";
import { EpisodeRequestComponent } from "../../../shared/episode-request/episode-request.component";
+import { IChildRequests } from "../../../interfaces";
@Component({
templateUrl: "./tv-details.component.html",
@@ -14,13 +15,14 @@ import { EpisodeRequestComponent } from "../../../shared/episode-request/episode
})
export class TvDetailsComponent {
public tv: ISearchTvResultV2;
+ public tvRequest: IChildRequests[];
public fromSearch: boolean;
private tvdbId: number;
constructor(private searchService: SearchV2Service, private route: ActivatedRoute,
private sanitizer: DomSanitizer, private imageService: ImageService,
- public dialog: MatDialog, public messageService: MessageService) {
+ public dialog: MatDialog, public messageService: MessageService, private requestService: RequestService) {
this.route.params.subscribe((params: any) => {
this.tvdbId = params.tvdbId;
this.fromSearch = params.search;
@@ -30,19 +32,23 @@ export class TvDetailsComponent {
}
public async load() {
- if(this.fromSearch) {
+ if (this.fromSearch) {
this.tv = await this.searchService.getTvInfoWithMovieDbId(this.tvdbId);
this.tvdbId = this.tv.id;
} else {
this.tv = await this.searchService.getTvInfo(this.tvdbId);
}
- const tvBanner = await this.imageService.getTvBanner(this.tvdbId).toPromise();
+ if(this.tv.requestId) {
+ this.tvRequest = await this.requestService.getChildRequests(this.tv.requestId).toPromise();
+ }
+
+ const tvBanner = await this.imageService.getTvBanner(this.tvdbId).toPromise();
this.tv.background = this.sanitizer.bypassSecurityTrustStyle("url(" + tvBanner + ")");
}
public async request() {
- this.dialog.open(EpisodeRequestComponent, { width: "800px", data: this.tv })
+ this.dialog.open(EpisodeRequestComponent, { width: "800px", data: this.tv, panelClass: 'modal-panel' })
}
public openDialog() {
diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html
index 639372201..bb9720294 100644
--- a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html
+++ b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html
@@ -52,7 +52,7 @@
|
- Details
+ Details
|
diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.scss b/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.scss
index eab4058e6..c875fa54c 100644
--- a/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.scss
+++ b/src/Ombi/ClientApp/src/app/requests-list/components/requests-list.component.scss
@@ -2,8 +2,3 @@
margin: auto;
width: 95%;
}
-
-.table {
- width: 100%;
- height:100%;
-}
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 aa9a1fcf4..f13a0feba 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
@@ -57,7 +57,7 @@
|
- Details
+ Details
|
diff --git a/src/Ombi/ClientApp/src/app/shared/shared.module.ts b/src/Ombi/ClientApp/src/app/shared/shared.module.ts
index 5998ff4fb..11d65d94a 100644
--- a/src/Ombi/ClientApp/src/app/shared/shared.module.ts
+++ b/src/Ombi/ClientApp/src/app/shared/shared.module.ts
@@ -10,7 +10,7 @@ import { IssuesReportComponent } from "./issues-report.component";
import { InputSwitchModule, SidebarModule } from "primeng/primeng";
import {
- MatButtonModule, MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule, MatTooltipModule, MatSelectModule, MatTableModule, MatPaginatorModule, MatSortModule} from '@angular/material';
+ MatButtonModule, MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule, MatTooltipModule, MatSelectModule, MatTableModule, MatPaginatorModule, MatSortModule, MatTreeModule} from '@angular/material';
import { MatCardModule, MatInputModule, MatTabsModule, MatAutocompleteModule, MatCheckboxModule, MatExpansionModule, MatDialogModule, MatProgressSpinnerModule,
MatChipsModule } from "@angular/material";
import { EpisodeRequestComponent } from "./episode-request/episode-request.component";
@@ -47,6 +47,7 @@ import { EpisodeRequestComponent } from "./episode-request/episode-request.compo
MatSelectModule,
MatPaginatorModule,
MatSortModule,
+ MatTreeModule,
],
entryComponents: [
EpisodeRequestComponent
@@ -62,6 +63,7 @@ import { EpisodeRequestComponent } from "./episode-request/episode-request.compo
EpisodeRequestComponent,
TruncateModule,
InputSwitchModule,
+ MatTreeModule,
MomentModule,MatCardModule,
MatInputModule,
MatTabsModule,
diff --git a/src/Ombi/ClientApp/src/styles/shared.scss b/src/Ombi/ClientApp/src/styles/shared.scss
index 14e94f4d0..171b833a2 100644
--- a/src/Ombi/ClientApp/src/styles/shared.scss
+++ b/src/Ombi/ClientApp/src/styles/shared.scss
@@ -1,54 +1,64 @@
@media (max-width: 978px) {
- .top-spacing {
- padding-top: 10%;
- }
+ .top-spacing {
+ padding-top: 10%;
+ }
+ .modal-panel {
+ max-height: 100vh !important;
+ max-width: 100vw !important;
+ height: 100%;
+ }
}
@media (min-width: 979px) {
- .top-spacing {
- padding-top: 4%;
- }
+ .top-spacing {
+ padding-top: 4%;
+ }
}
-html, body{
- min-height: 100vh;
- overflow: auto;
+html,
+body {
+ min-height: 100vh;
+ overflow: auto;
}
.spinner-container {
- position: relative;
- margin-left: 50%;
+ position: relative;
+ margin-left: 50%;
}
.bottom-page-gap {
- height: 50px;
+ height: 50px;
}
-
/* Scrollbar */
+
::-webkit-scrollbar {
- width: 7px;
- background: rgba(0, 0, 0, 0);
+ width: 7px;
+ background: rgba(0, 0, 0, 0);
}
::-webkit-scrollbar-track {
- background: rgba(0, 0, 0, 0);
+ background: rgba(0, 0, 0, 0);
}
::-webkit-scrollbar-thumb {
- border-radius: 3px;
- background: #41927b;
+ border-radius: 3px;
+ background: #41927b;
}
.sidenav ::-webkit-scrollbar-track {
- display: none;
+ display: none;
}
.grow {
- transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
}
.grow:hover {
- transform: scale(1.1);
- color: black;
+ transform: scale(1.1);
+ color: black;
}
+
+table {
+ width: 100%;
+}
\ No newline at end of file