diff --git a/src/app/pages/show-details/show-details.component.html b/src/app/pages/show-details/show-details.component.html
index 9e112673..d51ec73a 100644
--- a/src/app/pages/show-details/show-details.component.html
+++ b/src/app/pages/show-details/show-details.component.html
@@ -46,7 +46,8 @@
-
+
+
diff --git a/src/app/pages/show-details/show-details.component.ts b/src/app/pages/show-details/show-details.component.ts
index 157dce06..9509bd9b 100644
--- a/src/app/pages/show-details/show-details.component.ts
+++ b/src/app/pages/show-details/show-details.component.ts
@@ -1,27 +1,28 @@
-import { AfterViewInit, Component } from "@angular/core";
+import { AfterViewInit, Component, OnDestroy } from "@angular/core";
import { MatSnackBar } from "@angular/material/snack-bar";
-import { DomSanitizer, Title } from "@angular/platform-browser";
-import {ActivatedRoute, Router} from '@angular/router';
+import { DomSanitizer, SafeStyle, Title } from "@angular/platform-browser";
+import { ActivatedRoute, Router } from "@angular/router";
import { Episode } from "../../models/resources/episode";
import { Show } from "../../models/resources/show";
-import {MatDialog} from "@angular/material/dialog";
-import {TrailerDialogComponent} from "../trailer-dialog/trailer-dialog.component";
-import {MetadataEditComponent} from "../metadata-edit/metadata-edit.component";
-import {Season} from "../../models/resources/season";
-import {EpisodeService, PeopleService, SeasonService} from "../../services/api.service";
-import {Page} from "../../models/page";
-import {People} from "../../models/resources/people";
+import { MatDialog } from "@angular/material/dialog";
+import { TrailerDialogComponent } from "../trailer-dialog/trailer-dialog.component";
+import { MetadataEditComponent } from "../metadata-edit/metadata-edit.component";
+import { Season } from "../../models/resources/season";
+import { EpisodeService, PeopleService, SeasonService } from "../../services/api.service";
+import { Page } from "../../models/page";
+import { People } from "../../models/resources/people";
+import { HttpClient } from "@angular/common/http";
@Component({
- selector: 'app-show-details',
- templateUrl: './show-details.component.html',
- styleUrls: ['./show-details.component.scss']
+ selector: "app-show-details",
+ templateUrl: "./show-details.component.html",
+ styleUrls: ["./show-details.component.scss"]
})
-export class ShowDetailsComponent implements AfterViewInit
+export class ShowDetailsComponent implements AfterViewInit, OnDestroy
{
show: Show;
seasons: Season[];
- season: number = 1;
+ season = 1;
episodes: Page
[] = [];
people: Page;
@@ -35,13 +36,14 @@ export class ShowDetailsComponent implements AfterViewInit
private title: Title,
private router: Router,
private dialog: MatDialog,
+ private http: HttpClient,
private seasonService: SeasonService,
private episodeService: EpisodeService,
private peopleService: PeopleService)
{
this.route.queryParams.subscribe(params =>
{
- this.season = params["season"] ?? 1;
+ this.season = params.season ?? 1;
});
this.route.data.subscribe(data =>
@@ -51,22 +53,23 @@ export class ShowDetailsComponent implements AfterViewInit
this.peopleService.getFromShow(this.show.slug).subscribe(x => this.people = x);
- if (this.show.isMovie)
+ if (this.show.isMovie) {
return;
+ }
this.seasonService.getForShow(this.show.slug, {limit: 0}).subscribe(x =>
{
this.seasons = x.items;
- if (x.items.find(x => x.seasonNumber == this.season) == null)
+ if (x.items.find(y => y.seasonNumber === this.season) == null)
{
this.season = 1;
this.getEpisodes(1);
}
});
- this.getEpisodes(this.season);});
+ this.getEpisodes(this.season); });
}
- ngAfterViewInit()
+ ngAfterViewInit(): void
{
this.scrollZone = document.getElementById("main");
this.toolbar = document.getElementById("toolbar");
@@ -77,7 +80,7 @@ export class ShowDetailsComponent implements AfterViewInit
this.scrollZone.addEventListener("scroll", () => this.scroll());
}
- ngOnDestroy()
+ ngOnDestroy(): void
{
this.title.setTitle("Kyoo");
this.toolbar.setAttribute("style", `background-color: #000000 !important`);
@@ -86,31 +89,30 @@ export class ShowDetailsComponent implements AfterViewInit
this.scrollZone.removeEventListener("scroll", () => this.scroll());
}
- scroll()
+ scroll(): void
{
- let opacity: number = 2 * this.scrollZone.scrollTop / this.backdrop.clientHeight;
+ const opacity: number = 2 * this.scrollZone.scrollTop / this.backdrop.clientHeight;
this.toolbar.setAttribute("style", `background-color: rgba(0, 0, 0, ${opacity}) !important`);
- };
+ }
- getThumb(slug: string)
+ getThumb(slug: string): SafeStyle
{
return this.sanitizer.bypassSecurityTrustStyle("url(/poster/" + slug + ")");
}
- playClicked()
+ playClicked(): void
{
- if (this.show.isMovie)
+ if (this.show.isMovie) {
this.router.navigate(["/watch/" + this.show.slug]);
- else
+ }
+ else {
this.router.navigate(["/watch/" + this.show.slug + "-s1e1"]);
+ }
}
- getEpisodes(season: number)
+ getEpisodes(season: number): void
{
- if (season < 0)
- return;
-
- if (this.episodes[season] != undefined)
+ if (season < 0 || this.episodes[season])
return;
this.episodeService.getFromSeasonNumber(this.show.slug, this.season).subscribe(x =>
@@ -119,26 +121,44 @@ export class ShowDetailsComponent implements AfterViewInit
});
}
- openTrailer()
+ openTrailer(): void
{
this.dialog.open(TrailerDialogComponent, {width: "80%", height: "45vw", data: this.show.trailerUrl, panelClass: "panel"});
}
-
- editMetadata()
+
+ editMetadata(): void
{
this.dialog.open(MetadataEditComponent, {width: "80%", data: this.show}).afterClosed().subscribe((result: Show) =>
{
- if (result)
+ if (result) {
this.show = result;
+ }
});
}
- redownloadImages()
+ redownloadImages(): void
{
- // this.http.post("api/show/download-images/" + this.show.slug, undefined).subscribe(() => { }, error =>
- // {
- // console.log(error.status + " - " + error.message);
- // this.snackBar.open("An unknown error occured while re-downloading images.", null, { horizontalPosition: "left", panelClass: ['snackError'], duration: 2500 });
- // });
+ this.http.put(`api/task/extract/show/${this.show.slug}/thumbnails`, undefined).subscribe(() => { }, error =>
+ {
+ console.log(error.status + " - " + error.message);
+ this.snackBar.open("An unknown error occurred while re-downloading images.", null, {
+ horizontalPosition: "left",
+ panelClass: ["snackError"],
+ duration: 2500
+ });
+ });
+ }
+
+ extractSubs(): void
+ {
+ this.http.put(`api/task/extract/show/${this.show.slug}/subs`, undefined).subscribe(() => { }, error =>
+ {
+ console.log(error.status + " - " + error.message);
+ this.snackBar.open("An unknown error occurred while re-downloading images.", null, {
+ horizontalPosition: "left",
+ panelClass: ["snackError"],
+ duration: 2500
+ });
+ });
}
}
diff --git a/tslint.json b/tslint.json
index f9c1b866..fac0335c 100644
--- a/tslint.json
+++ b/tslint.json
@@ -12,17 +12,11 @@
},
"array-type": false,
"arrow-return-shorthand": true,
- "curly": true,
"deprecation": {
"severity": "warning"
},
"eofline": true,
"import-spacing": true,
- "indent": {
- "options": [
- "tabs"
- ]
- },
"max-classes-per-file": false,
"max-line-length": [
true,