diff --git a/src/Ombi.Core/Engine/RecentlyAddedEngine.cs b/src/Ombi.Core/Engine/RecentlyAddedEngine.cs index d721cc768..d597ec80b 100644 --- a/src/Ombi.Core/Engine/RecentlyAddedEngine.cs +++ b/src/Ombi.Core/Engine/RecentlyAddedEngine.cs @@ -26,6 +26,8 @@ namespace Ombi.Core.Engine private readonly IJellyfinContentRepository _jellyfin; private readonly IRepository _recentlyAddedLog; + + public IEnumerable GetRecentlyAddedMovies(DateTime from, DateTime to) { var plexMovies = _plex.GetAll().Where(x => x.Type == PlexMediaTypeEntity.Movie && x.AddedAt > from && x.AddedAt < to); diff --git a/src/Ombi/ClientApp/angular.json b/src/Ombi/ClientApp/angular.json index 4038c9a56..cd17cccc0 100644 --- a/src/Ombi/ClientApp/angular.json +++ b/src/Ombi/ClientApp/angular.json @@ -25,7 +25,7 @@ "src/assets" ], "styles": [ - "./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "src/styles/_imports.scss", "node_modules/bootstrap/scss/bootstrap.scss", "node_modules/primeng/resources/themes/md-dark-deeppurple/theme.css", diff --git a/src/Ombi/ClientApp/package.json b/src/Ombi/ClientApp/package.json index 82c946672..777dcfe8c 100644 --- a/src/Ombi/ClientApp/package.json +++ b/src/Ombi/ClientApp/package.json @@ -52,8 +52,9 @@ "please-wait": "^0.0.5", "popper.js": "^1.14.3", "primeicons": "^4.0.0", - "primeng": "^10.0.3", + "primeng": "^11.0.0", "rxjs": "^6.5.2", + "sass-recursive-map-merge": "^1.0.1", "spinkit": "^1.2.5", "store": "^2.0.12", "ts-md5": "^1.2.7", diff --git a/src/Ombi/ClientApp/src/app/app.component.html b/src/Ombi/ClientApp/src/app/app.component.html index d4297aeb4..f5f2d82eb 100644 --- a/src/Ombi/ClientApp/src/app/app.component.html +++ b/src/Ombi/ClientApp/src/app/app.component.html @@ -170,7 +170,7 @@
- + diff --git a/src/Ombi/ClientApp/src/app/app.component.ts b/src/Ombi/ClientApp/src/app/app.component.ts index f6f9fe62a..40ece5d31 100644 --- a/src/Ombi/ClientApp/src/app/app.component.ts +++ b/src/Ombi/ClientApp/src/app/app.component.ts @@ -85,8 +85,6 @@ export class AppComponent implements OnInit { public ngOnInit() { window["loading_screen"].finish(); - const theme = this.storage.get("theme"); - this.onSetTheme(theme); this.settingsService.getCustomization().subscribe(x => { this.customizationSettings = x; @@ -131,11 +129,4 @@ export class AppComponent implements OnInit { this.authService.logout(); this.router.navigate(["login"]); } - - public onSetTheme(theme: string) { - if (theme) { - this.overlayContainer.getContainerElement().classList.add(theme); - this.componentCssClass = theme; - } - } } diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.scss b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.scss index 27079acbf..e7fe00c60 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.scss +++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.scss @@ -42,4 +42,4 @@ h3 strong { .overview { height:300px; overflow-y: auto; -} +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.ts b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.ts index 883add54a..804e0e9ec 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.ts @@ -77,7 +77,7 @@ export class DiscoverCardDetailsComponent implements OnInit { this.messageService.send(result.errorMessage, "Ok"); } } else if (this.data.type === RequestType.tvShow) { - this.dialog.open(EpisodeRequestComponent, { width: "700px", data: this.tv, panelClass: 'modal-panel' }) + this.dialog.open(EpisodeRequestComponent, { width: "700px", data: {series: this.tv }, panelClass: 'modal-panel' }) } this.loading = false; diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.html b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.html index b32bb98d8..3ca931c60 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.html +++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.html @@ -1,18 +1,24 @@ -
- -
- {{getAvailbilityStatus()}} -
- - {{result.title}} - - + -
{{result.title}}
-
{{result.title | truncate:20}}
-
- {{result.overview | truncate: 75}} + \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.scss b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.scss index 5f232a48e..cd486afd4 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.scss +++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.scss @@ -2,8 +2,9 @@ $ombi-primary:#3f3f3f; $card-background: #2b2b2b; #cardImage { - border-radius: 5px 5px 0px 0px; - height: 75%; + border-radius: 5px; + height: 315px; + object-fit:cover; } .dark-card { @@ -61,8 +62,12 @@ small { } @media (min-width: 2000px) { + .ombi-card{ + height:100%; + } + #cardImage { - height: 80%; + height: 100%; object-fit: cover; display: block; } @@ -77,93 +82,148 @@ small { /* common */ .ribbon { - width: 118px; + width: 100px; height: 96px; overflow: hidden; position: absolute; + text-align:right; } - .ribbon::before, - .ribbon::after { - position: absolute; - z-index: -1; - content: ''; - display: none; - border: 5px solid black; - } + .ribbon span { position: absolute; display: none; - width: 180px; - padding: 10px 0; - background-color: black; - box-shadow: 0 5px 10px rgba(0,0,0,.1); + background-color: transparent; color: #fff; - font: 500 11px/1 'Lato', sans-serif; text-shadow: 0 1px 1px rgba(0,0,0,.2); text-transform: uppercase; - text-align: center; + text-align: right; + font-size: 14px; } - .ribbon.available span { - background-color: #1DE9B6 !important; - display: block; - color: #2f2f2f; + .ribbon.available span{ + display:block; } - .ribbon.available::before, - .ribbon.available::after { - border: 5px solid #1DE9B6 !important; - display: block; + .ribbon.available span:before{ + content: ''; + display: inline-block; + width: 10px; + height: 10px; + -moz-border-radius: 7.5px; + -webkit-border-radius: 7.5px; + border-radius: 7.5px; + background-color: #1DE9B6; } .ribbon.approved span { - background-color: #ff5722 !important; display: block; - color: #2f2f2f; } - .ribbon.approved::before, - .ribbon.approved::after { - border: 5px solid #ff5722 !important; - display: block; + .ribbon.approved span:before{ + content: ''; + display: inline-block; + width: 10px; + height: 10px; + -moz-border-radius: 7.5px; + -webkit-border-radius: 7.5px; + border-radius: 7.5px; + background-color: #ff5722; } .ribbon.requested span { - background-color: #ffd740 !important; display: block; - color: #2f2f2f; } - .ribbon.requested::before, - .ribbon.requested::after { - border: 5px solid #ffd740 !important; - display: block; + .ribbon.requested span:before{ + content: ''; + display: inline-block; + width: 10px; + height: 10px; + -moz-border-radius: 7.5px; + -webkit-border-radius: 7.5px; + border-radius: 7.5px; + background-color: #ffd740; } /* top right*/ .ribbon-top-right { - top: -10px; - right: -10px; - } - .ribbon-top-right::before, - .ribbon-top-right::after { - border-top-color: transparent; - border-right-color: transparent; + top: 13px; + right: 0px; + z-index: 999999; + } + +.ombi-card { + padding: 5px; +} +::ng-deep .p-carousel-indicators { + display: none !important; } - .ribbon-top-right::before { - top: 0; - left: 40px; + + +.image { + border-radius: 10px; + opacity: 1; + display: block; + width: 100%; + height: auto; + transition: .5s ease; + backface-visibility: hidden; +} + + +.middle { + transition: .5s ease; + opacity: 0; + position: absolute; + top: 67%; + width: 90%; + left: 50%; + transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); +} + + +.c { + position: relative; +} + +.c:hover .image { + opacity: 0.3; +} + +.c:hover .middle { + opacity: 1; +} + +.small-text { + font-size: 11px; +} +.title { + font-size: 18px; } - .ribbon-top-right::after { - bottom: 18px; - right: 0; + .top-left { + font-size: 14px; + position: absolute; + text-transform: uppercase; + top: 0px; + width: 100%; + background-color: rgba(15,23,31,0.6); + padding-left: 1em; + padding-top: 1em; + padding-bottom: 0.5em;font-size: 14px; + position: absolute; + text-transform: uppercase; + } - .ribbon-top-right span { - left: 0px; - top: 13px; - transform: rotate(45deg); + .full-width { + width: 100%; } - .ribbon-icon { - transform: translateX(0%) translateY(0%) rotate(-45deg); - } \ No newline at end of file + + .ellipsis { + display: -webkit-box; + -webkit-line-clamp: 6; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts index 6512ca3a8..1bb4f4359 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts @@ -1,11 +1,12 @@ import { Component, OnInit, Input } from "@angular/core"; import { IDiscoverCardResult } from "../../interfaces"; import { RequestType } from "../../../interfaces"; -import { SearchService, SearchV2Service } from "../../../services"; +import { MessageService, RequestService, SearchV2Service } from "../../../services"; import { MatDialog } from "@angular/material/dialog"; import { DiscoverCardDetailsComponent } from "./discover-card-details.component"; import { ISearchTvResultV2 } from "../../../interfaces/ISearchTvResultV2"; import { ISearchMovieResultV2 } from "../../../interfaces/ISearchMovieResultV2"; +import { EpisodeRequestComponent } from "../../../shared/episode-request/episode-request.component"; @Component({ selector: "discover-card", @@ -17,8 +18,14 @@ export class DiscoverCardComponent implements OnInit { @Input() public result: IDiscoverCardResult; public RequestType = RequestType; public hide: boolean; + public fullyLoaded = false; + public loading: boolean; - constructor(private searchService: SearchV2Service, private v1Search: SearchService, private dialog: MatDialog) { } + // This data is needed to open the dialog + private tvSearchResult: ISearchTvResultV2; + + constructor(private searchService: SearchV2Service, private dialog: MatDialog, private requestService: RequestService, + public messageService: MessageService) { } public ngOnInit() { if (this.result.type == RequestType.tvShow) { @@ -38,16 +45,17 @@ export class DiscoverCardComponent implements OnInit { public async getExtraTvInfo() { if (this.result.tvMovieDb) { - var result = await this.searchService.getTvInfoWithMovieDbId(+this.result.id); + this.tvSearchResult = await this.searchService.getTvInfoWithMovieDbId(+this.result.id); } else { - var result = await this.searchService.getTvInfo(+this.result.id); + this.tvSearchResult = await this.searchService.getTvInfo(+this.result.id); } - if(result.status === "404") { + if (!this.tvSearchResult || this.tvSearchResult?.status.length > 0 && this.tvSearchResult?.status === "404") { this.hide = true; return; } - this.setTvDefaults(result); - this.updateTvItem(result); + + this.setTvDefaults(this.tvSearchResult); + this.updateTvItem(this.tvSearchResult); } @@ -55,10 +63,13 @@ export class DiscoverCardComponent implements OnInit { this.searchService.getArtistInformation(this.result.id.toString()).subscribe(x => { if (x.poster) { this.result.posterPath = x.poster; + this.fullyLoaded = true; } else { this.searchService.getReleaseGroupArt(this.result.id.toString()).subscribe(art => { - if(art.image) { + if (art.image) { this.result.posterPath = art.image; + + this.fullyLoaded = true; } }) } @@ -68,8 +79,7 @@ export class DiscoverCardComponent implements OnInit { } public generateDetailsLink(): string { - let link = ""; - switch(this.result.type){ + switch (this.result.type) { case RequestType.movie: return `/details/movie/${this.result.id}`; case RequestType.tvShow: @@ -105,12 +115,36 @@ export class DiscoverCardComponent implements OnInit { return ""; } + public request(event: any) { + event.preventDefault(); + this.loading = true; + switch (this.result.type) { + case RequestType.tvShow: + const dia = this.dialog.open(EpisodeRequestComponent, { width: "700px", data: { series: this.tvSearchResult }, panelClass: 'modal-panel' }); + dia.afterClosed().subscribe(x => this.loading = false); + return; + case RequestType.movie: + this.requestService.requestMovie({ theMovieDbId: +this.result.id, languageCode: null, requestOnBehalf: null }).subscribe(x => { + if (x.result) { + this.result.requested = true; + this.messageService.send(x.message, "Ok"); + } else { + this.messageService.send(x.errorMessage, "Ok"); + } + this.loading = false; + }); + return; + } + } + private getExtraMovieInfo() { if (!this.result.imdbid) { this.searchService.getFullMovieDetails(+this.result.id) .subscribe(m => { this.updateMovieItem(m); }); + } else { + this.fullyLoaded = true; } } @@ -122,6 +156,8 @@ export class DiscoverCardComponent implements OnInit { this.result.rating = updated.voteAverage; this.result.overview = updated.overview; this.result.imdbid = updated.imdbId; + + this.fullyLoaded = true; } @@ -142,6 +178,8 @@ export class DiscoverCardComponent implements OnInit { this.result.url = updated.imdbId; this.result.overview = updated.overview; this.result.approved = updated.approved; + + this.fullyLoaded = true; } } diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html new file mode 100644 index 000000000..4b7767721 --- /dev/null +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.html @@ -0,0 +1,13 @@ +
+ + {{'Discovery.Combined' | translate}} + {{'Discovery.Movies' | translate}} + {{'Discovery.Tv' | translate}} + +
+ + + + + + \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss new file mode 100644 index 000000000..2e3161ede --- /dev/null +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.scss @@ -0,0 +1,98 @@ +@import "~styles/variables.scss"; + +.ombi-card { + padding: 5px; +} +::ng-deep .p-carousel-indicators { + display: none !important; + } + + +.image { + border-radius: 10px; + opacity: 1; + display: block; + width: 100%; + height: auto; + transition: .5s ease; + backface-visibility: hidden; + } + + +.middle { + transition: .5s ease; + opacity: 0; + position: absolute; + top: 75%; + width: 90%; + left: 50%; + transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + } + + + .c { + position: relative; + } + +.c:hover .image { + opacity: 0.3; + } + + .c:hover .middle { + opacity: 1; + } + +.small-text { + font-size: 11px; +} +.title { + font-size: 16px; +} +.top-left { + font-size: 14px; + position: absolute; + top: 8px; + left: 16px; +} + + +.right { + text-align: right; + margin-top:-61px; +} + +.discover-filter-buttons-group { + background: $ombi-background-primary; + border: 1px solid $ombi-background-primary-accent; + border-radius: 30px; + color:#fff; + margin-bottom:10px; + margin-right: 30px; + + .discover-filter-button{ + background:inherit; + color:inherit; + padding:0 0px; + border-radius: 30px; + padding-left: 20px; + padding-right: 20px; + } + + ::ng-deep .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{ + line-height:40px; + } + + .button-active{ + background:$ombi-active; + } + + +} +::ng-deep .discover-filter-button .mat-button-toggle-button:focus{ + outline:none; +} + +.card-skeleton { + padding: 5px; +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts new file mode 100644 index 000000000..0279fbd06 --- /dev/null +++ b/src/Ombi/ClientApp/src/app/discover/components/carousel-list/carousel-list.component.ts @@ -0,0 +1,258 @@ +import { Component, OnInit, Input, ViewChild } from "@angular/core"; +import { DiscoverOption, IDiscoverCardResult } from "../../interfaces"; +import { ISearchMovieResult, ISearchTvResult, RequestType } from "../../../interfaces"; +import { SearchV2Service } from "../../../services"; +import { StorageService } from "../../../shared/storage/storage-service"; +import { MatButtonToggleChange } from '@angular/material/button-toggle'; +import { Carousel } from 'primeng/carousel'; + +export enum DiscoverType { + Upcoming, + Trending, + Popular, +} + +@Component({ + selector: "carousel-list", + templateUrl: "./carousel-list.component.html", + styleUrls: ["./carousel-list.component.scss"], +}) +export class CarouselListComponent implements OnInit { + + @Input() public discoverType: DiscoverType; + @ViewChild('carousel', {static: false}) carousel: Carousel; + + public DiscoverOption = DiscoverOption; + public discoverOptions: DiscoverOption = DiscoverOption.Combined; + public discoverResults: IDiscoverCardResult[] = []; + public movies: ISearchMovieResult[] = []; + public tvShows: ISearchTvResult[] = []; + public responsiveOptions: any; + public RequestType = RequestType; + public loadingFlag: boolean; + + get mediaTypeStorageKey() { + return "DiscoverOptions" + this.discoverType.toString(); + }; + private amountToLoad = 14; + private currentlyLoaded = 0; + + constructor(private searchService: SearchV2Service, + private storageService: StorageService) { + this.responsiveOptions = [ + { + breakpoint: '2559px', + numVisible: 7, + numScroll: 7 + }, + { + breakpoint: '1024px', + numVisible: 4, + numScroll: 4 + }, + { + breakpoint: '768px', + numVisible: 2, + numScroll: 2 + }, + { + breakpoint: '560px', + numVisible: 1, + numScroll: 1 + } + ]; + } + + public async ngOnInit() { + this.currentlyLoaded = 0; + const localDiscoverOptions = +this.storageService.get(this.mediaTypeStorageKey); + if (localDiscoverOptions) { + this.discoverOptions = DiscoverOption[DiscoverOption[localDiscoverOptions]]; + } + + var moviePromise: Promise; + var tvPromise: Promise; + switch (this.discoverOptions) { + case DiscoverOption.Combined: + moviePromise = this.loadMovies(); + tvPromise = this.loadTv(); + break; + case DiscoverOption.Movie: + moviePromise = this.loadMovies(); + break; + case DiscoverOption.Tv: + tvPromise = this.loadTv(); + break; + } + + await moviePromise; + await tvPromise; + + this.createInitialModel(); + } + + public async toggleChanged(event: MatButtonToggleChange) { + await this.switchDiscoverMode(event.value); + } + + public async newPage() { + // Note this is using the internal carousel APIs + // https://github.com/primefaces/primeng/blob/master/src/app/components/carousel/carousel.ts + var end = this.carousel._page >= (this.carousel.totalDots() - 1); + if (end) { + var moviePromise: Promise; + var tvPromise: Promise; + switch (this.discoverOptions) { + case DiscoverOption.Combined: + moviePromise = this.loadMovies(); + tvPromise = this.loadTv(); + break; + case DiscoverOption.Movie: + moviePromise = this.loadMovies(); + break; + case DiscoverOption.Tv: + tvPromise = this.loadTv(); + break; + } + await moviePromise; + await tvPromise; + + this.createModel(); + } + } + + private async switchDiscoverMode(newMode: DiscoverOption) { + if (this.discoverOptions === newMode) { + return; + } + this.loading(); + this.discoverOptions = newMode; + this.storageService.save(this.mediaTypeStorageKey, newMode.toString()); + await this.ngOnInit(); + this.finishLoading(); + } + + private async loadMovies() { + switch (this.discoverType) { + case DiscoverType.Popular: + this.movies = await this.searchService.popularMoviesByPage(this.currentlyLoaded, this.amountToLoad); + break; + case DiscoverType.Trending: + this.movies = await this.searchService.nowPlayingMoviesByPage(this.currentlyLoaded, this.amountToLoad); + break; + case DiscoverType.Upcoming: + this.movies = await this.searchService.upcomingMoviesByPage(this.currentlyLoaded, this.amountToLoad); + break + } + this.currentlyLoaded += this.amountToLoad; + } + + private async loadTv() { + switch (this.discoverType) { + case DiscoverType.Popular: + this.tvShows = await this.searchService.popularTvByPage(this.currentlyLoaded, this.amountToLoad); + break; + case DiscoverType.Trending: + this.tvShows = await this.searchService.trendingTvByPage(this.currentlyLoaded, this.amountToLoad); + break; + case DiscoverType.Upcoming: + this.tvShows = await this.searchService.anticipatedTvByPage(this.currentlyLoaded, this.amountToLoad); + break + } + this.currentlyLoaded += this.amountToLoad; + } + + private createInitialModel() { + this.clear(); + this.createModel(); + } + + private createModel() { + const tempResults = []; + + switch (this.discoverOptions) { + case DiscoverOption.Combined: + tempResults.push(...this.mapMovieModel()); + tempResults.push(...this.mapTvModel()); + this.shuffle(tempResults); + break; + case DiscoverOption.Movie: + tempResults.push(...this.mapMovieModel()); + break; + case DiscoverOption.Tv: + tempResults.push(...this.mapTvModel()); + break; + } + + this.discoverResults.push(...tempResults); + this.carousel.ngAfterContentInit(); + + this.finishLoading(); + } + + private mapMovieModel(): IDiscoverCardResult[] { + const tempResults = []; + this.movies.forEach(m => { + tempResults.push({ + available: m.available, + posterPath: m.posterPath ? `https://image.tmdb.org/t/p/w500/${m.posterPath}` : "../../../images/default_movie_poster.png", + requested: m.requested, + title: m.title, + type: RequestType.movie, + id: m.id, + url: `http://www.imdb.com/title/${m.imdbId}/`, + rating: m.voteAverage, + overview: m.overview, + approved: m.approved, + imdbid: m.imdbId, + denied: false, + background: m.backdropPath + }); + }); + return tempResults; + } + + private mapTvModel(): IDiscoverCardResult[] { + const tempResults = []; + this.tvShows.forEach(m => { + tempResults.push({ + available: m.available, + posterPath: "../../../images/default_tv_poster.png", + requested: m.requested, + title: m.title, + type: RequestType.tvShow, + id: m.id, + url: undefined, + rating: +m.rating, + overview: m.overview, + approved: m.approved || m.partlyAvailable, + imdbid: m.imdbId, + denied: false, + background: m.background + }); + }); + return tempResults; + } + + private clear() { + this.discoverResults = []; + } + + private shuffle(discover: IDiscoverCardResult[]): IDiscoverCardResult[] { + for (let i = discover.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [discover[i], discover[j]] = [discover[j], discover[i]]; + } + return discover; + } + + private loading() { + this.loadingFlag = true; + } + + private finishLoading() { + this.loadingFlag = false; + } + + +} diff --git a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html index f105b23ab..ee52f371c 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html +++ b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html @@ -1,42 +1,27 @@
-
-
- - dashboard - calendar_view_day - -
+
-
-
- - - +
+

Popular

+
+
- -
-
- - - +
+

Trending

+
+
-
-
-
- -
-
-
- + +
+

Upcoming

+
+
+
-
- -
-
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss index c2386ae8f..d95586507 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss +++ b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.scss @@ -1,210 +1,12 @@ -.full-height { - height: 100%; +.section { + margin: 20px; } - -.small-middle-container { - margin: auto; - width: 85%; -} - -.small-padding { - padding-left: 20px; - padding-right: 20px; - margin-bottom: 28px; -} - -.loading-spinner { - margin: 10%; -} - -#scroller { - height: 100vh; - overflow: scroll; -} - -.small-space { - padding-top: 1%; -} - -.discover-layout { - position: absolute; - float: right; - margin-right: 36px; - z-index: 1; -} - -::ng-deep .mat-card-image { - height: 75%; - object-fit: cover; - display: block; -} - -.card-spacing { - height: 100%; -} - -.mat-card-content h6 { - overflow: hidden; - white-space: nowrap; - font-weight: 500; - font-size: 1.1rem; -} - -@media (min-width: 300px) { - - .small-middle-container { - margin: inherit; - } - - .col-xl-2 { - flex: 0 0 100%; - max-width: 100%; - min-width: 100%; - } - - .btn-group { - width: 100%; - } - - mat-button-base { - width: 100%; - } - - .col { - padding-right: 10px !important; - padding-left: 10px !important; - } - - .row { - margin-left: 0px; - } - - .small-padding { - padding-left: 5px !important; - padding-right: 0px !important; - height: 40em; - } - - ::ng-deep .mat-card-image { - height: 85% !important; - } -} - -@media (min-width: 600px) { - .justify-content-md-center { - justify-content: center !important; - } - - .small-middle-container { - width: auto; - } - - .btn-group { - width: auto; +::ng-deep .p-carousel-indicators { + display: none !important; } - mat-button-base { - width: auto; - } - - ::ng-deep .mat-card-image { - height: 75% !important; - } -} - -@media (min-width: 660px) { - .col-xl-2 { - flex: 0 0 50%; - max-width: 50%; - min-width: 50%; - } - - .col { - padding-right: 15px !important; - padding-left: 15px !important; - } - - .small-padding { - padding-left: 20px !important; - padding-right: 20px !important; - height: auto; - } - - .row { - margin-left: 0px; - } - - .small-middle-container { - width: auto; - overflow: hidden; - } - - .btn-group { - width: auto; - } - - mat-button-base { - width: auto; - } -} - -@media (min-width: 870px) { - .col-xl-2 { - flex: 0 0 33.33333%; - max-width: 33.33333%; - min-width: 33.33333%; - } -} - -@media (min-width: 1100px) { - .col-xl-2 { - flex: 0 0 20%; - max-width: 25%; - min-width: 25%; - } -} - -@media (min-width: 1300px) { - .col-xl-2 { - flex: 0 0 18%; - max-width: 20%; - min-width: 20%; - } -} - -@media (min-width: 1600px) { - .col-xl-2 { - flex: 0 0 16.66666667%; - max-width: 16.66666667%; - min-width: 16.66666667%; - } -} - -@media (min-width: 1900px) { - .col-xl-2 { - flex: 0 0 14.285713%; - max-width: 14.285713%; - min-width: 14.285713%; - } -} - -@media (min-width: 2200px) { - .col-xl-2 { - flex: 0 0 12.5%; - max-width: 12.5%; - min-width: 12.5%; - } -} - -@media (min-width: 2500px) { - .col-xl-2 { - flex: 0 0 11.111111%; - max-width: 11.111111%; - min-width: 11.111111%; - } -} -@media (max-width: 420px) { - .discover-layout{ - display: none; - } +h2{ + margin-top:40px; + margin-left:40px; + font-size: 24px; } \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.ts b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.ts index c1ed3bc63..7b4fc291b 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.ts @@ -5,6 +5,8 @@ import { IDiscoverCardResult, DiscoverOption, DisplayOption } from "../../interf import { trigger, transition, style, animate } from "@angular/animations"; import { StorageService } from "../../../shared/storage/storage-service"; import { DOCUMENT } from "@angular/common"; +import { ISearchTvResultV2 } from "../../../interfaces/ISearchTvResultV2"; +import { DiscoverType } from "../carousel-list/carousel-list.component"; @Component({ templateUrl: "./discover.component.html", @@ -20,11 +22,16 @@ import { DOCUMENT } from "@angular/common"; }) export class DiscoverComponent implements OnInit { + public upcomingMovies: IDiscoverCardResult[] = []; + public trendingMovies: IDiscoverCardResult[] = []; + + public discoverResults: IDiscoverCardResult[] = []; public movies: ISearchMovieResult[] = []; public tvShows: ISearchTvResult[] = []; public discoverOptions: DiscoverOption = DiscoverOption.Combined; + public DiscoverType = DiscoverType; public DiscoverOption = DiscoverOption; public displayOption: DisplayOption = DisplayOption.Card; public DisplayOption = DisplayOption; @@ -45,6 +52,8 @@ export class DiscoverComponent implements OnInit { private mediaTypeStorageKey = "DiscoverOptions"; private displayOptionsKey = "DiscoverDisplayOptions"; + + constructor(private searchService: SearchV2Service, private storageService: StorageService, @Inject(DOCUMENT) private container: Document) { } @@ -52,35 +61,38 @@ export class DiscoverComponent implements OnInit { public async ngOnInit() { this.loading() - const localDiscoverOptions = +this.storageService.get(this.mediaTypeStorageKey); - if (localDiscoverOptions) { - this.discoverOptions = DiscoverOption[DiscoverOption[localDiscoverOptions]]; - } - const localDisplayOptions = +this.storageService.get(this.displayOptionsKey); - if (localDisplayOptions) { - this.displayOption = DisplayOption[DisplayOption[localDisplayOptions]]; - } - this.scrollDisabled = true; - switch (this.discoverOptions) { - case DiscoverOption.Combined: - this.movies = await this.searchService.popularMoviesByPage(0, this.amountToLoad); - this.tvShows = await this.searchService.popularTvByPage(0, this.amountToLoad); - break; - case DiscoverOption.Movie: - this.movies = await this.searchService.popularMoviesByPage(0, this.amountToLoad); - break; - case DiscoverOption.Tv: - this.tvShows = await this.searchService.popularTvByPage(0, this.amountToLoad); - break; - } - - this.contentLoaded = this.amountToLoad; - - this.createInitialModel(); - this.scrollDisabled = false; - if (!this.containerHasScrollBar()) { - await this.onScroll(); - } + // this.upcomingMovies = this.mapTvModel(await this.searchService.popularTvByPage(0, 14)); + // this.trendingMovies = this.mapMovieModel(await this.searchService.popularMoviesByPage(0, 14)); +this.finishLoading(); + // const localDiscoverOptions = +this.storageService.get(this.mediaTypeStorageKey); + // if (localDiscoverOptions) { + // this.discoverOptions = DiscoverOption[DiscoverOption[localDiscoverOptions]]; + // } + // const localDisplayOptions = +this.storageService.get(this.displayOptionsKey); + // if (localDisplayOptions) { + // this.displayOption = DisplayOption[DisplayOption[localDisplayOptions]]; + // } + // this.scrollDisabled = true; + // switch (this.discoverOptions) { + // case DiscoverOption.Combined: + // this.movies = await this.searchService.popularMoviesByPage(0, this.amountToLoad); + // this.tvShows = await this.searchService.popularTvByPage(0, this.amountToLoad); + // break; + // case DiscoverOption.Movie: + // this.movies = await this.searchService.popularMoviesByPage(0, this.amountToLoad); + // break; + // case DiscoverOption.Tv: + // this.tvShows = await this.searchService.popularTvByPage(0, this.amountToLoad); + // break; + // } + + // this.contentLoaded = this.amountToLoad; + + // this.createInitialModel(); + // this.scrollDisabled = false; + // if (!this.containerHasScrollBar()) { + // await this.onScroll(); + // } } public async onScroll() { @@ -236,18 +248,18 @@ export class DiscoverComponent implements OnInit { private createModel() { const tempResults = []; - switch (this.discoverOptions) { - case DiscoverOption.Combined: - tempResults.push(...this.mapMovieModel()); - tempResults.push(...this.mapTvModel()); - break; - case DiscoverOption.Movie: - tempResults.push(...this.mapMovieModel()); - break; - case DiscoverOption.Tv: - tempResults.push(...this.mapTvModel()); - break; - } + // switch (this.discoverOptions) { + // case DiscoverOption.Combined: + // tempResults.push(...this.mapMovieModel()); + // tempResults.push(...this.mapTvModel()); + // break; + // case DiscoverOption.Movie: + // tempResults.push(...this.mapMovieModel()); + // break; + // case DiscoverOption.Tv: + // tempResults.push(...this.mapTvModel()); + // break; + // } this.shuffle(tempResults); this.discoverResults.push(...tempResults); @@ -255,9 +267,9 @@ export class DiscoverComponent implements OnInit { this.finishLoading(); } - private mapMovieModel(): IDiscoverCardResult[] { + private mapMovieModel(movies: ISearchMovieResult[]): IDiscoverCardResult[] { const tempResults = []; - this.movies.forEach(m => { + movies.forEach(m => { tempResults.push({ available: m.available, posterPath: m.posterPath ? `https://image.tmdb.org/t/p/w500/${m.posterPath}` : "../../../images/default_movie_poster.png", @@ -277,9 +289,9 @@ export class DiscoverComponent implements OnInit { return tempResults; } - private mapTvModel(): IDiscoverCardResult[] { + private mapTvModel(tv: ISearchTvResult[]): IDiscoverCardResult[] { const tempResults = []; - this.tvShows.forEach(m => { + tv.forEach(m => { tempResults.push({ available: m.available, posterPath: "../../../images/default_tv_poster.png", diff --git a/src/Ombi/ClientApp/src/app/discover/components/index.ts b/src/Ombi/ClientApp/src/app/discover/components/index.ts index 11ce07d50..c0f3a7141 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/index.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/index.ts @@ -9,6 +9,7 @@ import { SearchService, RequestService } from "../../services"; import { MatDialog } from "@angular/material/dialog"; import { DiscoverGridComponent } from "./grid/discover-grid.component"; import { DiscoverSearchResultsComponent } from "./search-results/search-results.component"; +import { CarouselListComponent } from "./carousel-list/carousel-list.component"; export const components: any[] = [ @@ -19,6 +20,7 @@ export const components: any[] = [ DiscoverActorComponent, DiscoverGridComponent, DiscoverSearchResultsComponent, + CarouselListComponent, ]; diff --git a/src/Ombi/ClientApp/src/app/discover/discover.module.ts b/src/Ombi/ClientApp/src/app/discover/discover.module.ts index e40cf102a..931a0861b 100644 --- a/src/Ombi/ClientApp/src/app/discover/discover.module.ts +++ b/src/Ombi/ClientApp/src/app/discover/discover.module.ts @@ -5,6 +5,8 @@ import {MatButtonToggleModule} from '@angular/material/button-toggle'; import { SharedModule } from "../shared/shared.module"; import { PipeModule } from "../pipes/pipe.module"; +import { CarouselModule } from 'primeng/carousel'; +import { SkeletonModule } from 'primeng/skeleton'; import * as fromComponents from './components'; @@ -14,8 +16,10 @@ import * as fromComponents from './components'; RouterModule.forChild(fromComponents.routes), SharedModule, PipeModule, + CarouselModule, MatButtonToggleModule, InfiniteScrollModule, + SkeletonModule, ], declarations: [ ...fromComponents.components diff --git a/src/Ombi/ClientApp/src/app/login/login.component.scss b/src/Ombi/ClientApp/src/app/login/login.component.scss index aa285a957..295384166 100644 --- a/src/Ombi/ClientApp/src/app/login/login.component.scss +++ b/src/Ombi/ClientApp/src/app/login/login.component.scss @@ -231,4 +231,4 @@ div.bg { } .login-card { background: #424242; -} \ No newline at end of file +} diff --git a/src/Ombi/ClientApp/src/app/login/login.component.ts b/src/Ombi/ClientApp/src/app/login/login.component.ts index bdb57d403..0c2c00852 100644 --- a/src/Ombi/ClientApp/src/app/login/login.component.ts +++ b/src/Ombi/ClientApp/src/app/login/login.component.ts @@ -73,7 +73,7 @@ export class LoginComponent implements OnDestroy, OnInit { }); this.form = this.fb.group({ - username: ["", [Validators.required]], + username: [""], password: [""], rememberMe: [false], }); diff --git a/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html b/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html index e3fd88067..d62cad6f0 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html @@ -28,8 +28,6 @@ - - @@ -64,6 +62,8 @@ + +
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 index 661c11e86..b45d9cc7a 100644 --- 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 @@ -50,7 +50,7 @@ -
diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html index 4a212ef8e..368341b3d 100644 --- a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html @@ -3,7 +3,7 @@ [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'" [mode]="(isHandset$ | async) ? 'over' : 'side'" [opened]="!(isHandset$ | async)"> - {{applicationName}} + {{applicationName}} - - + + -
+ -
+
diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.scss b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.scss index b8abd28dc..b81f4ed90 100644 --- a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.scss +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.scss @@ -5,10 +5,6 @@ overflow:auto; } -.sidenav { - width: 220px; -} - .sidenav .mat-toolbar { background: inherit; } @@ -44,11 +40,6 @@ padding: 0px 5px; } -.active-list-item { - background: $accent !important; - color:white; -} - ::ng-deep .dark .active-list-item { background: $accent-dark !important; color:black !important; @@ -100,16 +91,9 @@ } .profile-img img { - border-radius: 6px; - box-shadow: 4px 3px 6px 0 rgba(0,0,0,.2); width: 45px; } -.outer-profile { - background-color: #303030; - box-shadow: inset 0 0 3px #000000; - padding: 1px; -} .full { width: 100%; @@ -119,4 +103,75 @@ bottom: 0; left: 0; text-align: center; +} +// New CSS for new style // + +.sidenav-container .sidenav{ + background: $ombi-background-accent; + color:#FFF; + font-family: 'Montserrat', sans-serif; + + .application-name{ + font-family: 'Montserrat', sans-serif; + text-transform: uppercase; + color: $ombi-active; + align-items:center; + justify-content: center; + font-weight: 700; + font-size:24px; + padding:40px 20px; + height:auto; + } + + .outer-profile { + background: inherit; + box-shadow:none; + } + + .mat-list-item{ + color:#FFF; + font-family:Roboto, sans-serif; + font-size: 14px; + font-weight: 400; + padding:10px 20px; + height:auto; + width:20rem; + margin-bottom:1rem; + } + + .active-list-item{ + color:$ombi-background-accent; + background: $ombi-active; + border-radius:0px 30px 30px 0px; + padding:10px 20px; + height:auto; + width:20rem; + } +} + +.outer-profile .profile-img-container { + background: inherit; +} + +.content-container{ + background: $ombi-background-primary; + color:#FFF; + + .top-bar-container{ + background: $ombi-background-primary; + color:$ombi-background-primary-accent; + } + +} + +.top-search-bar{ + margin-left: 30px; +} + +::ng-deep .mat-toolbar-row, .mat-toolbar-single-row{ + height:auto; +} + +.top-search-bar{ + height:84px; } \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts index cafef32a8..9a5ec794c 100644 --- a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts @@ -37,7 +37,6 @@ export class MyNavComponent implements OnInit { @Input() public isAdmin: string; @Input() public email: string; @Output() public logoutClick = new EventEmitter(); - @Output() public themeChange = new EventEmitter(); public theme: string; public issuesEnabled: boolean = false; public navItems: INavBar[]; @@ -98,20 +97,6 @@ export class MyNavComponent implements OnInit { this.logoutClick.emit(); } - public switchTheme() { - if (this.theme) { - let newTheme = ""; - if (this.theme === "dark") { - newTheme = "light"; - } else { - newTheme = "dark"; - } - this.store.save("theme", newTheme) - this.theme = newTheme; - this.themeChange.emit(newTheme); - } - } - public changeFilter(event: MatSlideToggleChange, searchFilterType: SearchFilterType) { switch (searchFilterType) { case SearchFilterType.Movie: diff --git a/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.scss b/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.scss index 31245eb0e..3cd5021ed 100644 --- a/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.scss +++ b/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.scss @@ -31,17 +31,45 @@ $ombi-accent: #258a6d; background-color: white; } -::ng-deep .mat-form-field-underline{ - bottom:0.5em; + +::ng-deep .top-search-bar .mat-form-field-underline{ + display:none; +} + +::ng-deep .top-search-bar .mat-form-field-flex{ + border: 1px solid #35465c; + border-radius:30px; + margin-top:20px; + height:50px; } +::ng-deep .top-search-bar .mat-form-field-infix{ + margin-left:20px; + border-top:0px; + margin-top:5px; +} + +::ng-deep .top-search-bar .mat-form-field-appearance-legacy .mat-form-field-wrapper{ + padding-bottom:0px; +} .option-img { vertical-align: middle; margin-right: 8px; } - .options { - margin-bottom: 5px; - } +.options { + margin-bottom: 5px; +} + +::ng-deep .discoverResults{ + margin-top:40px; +} + +::ng-deep button:focus{ + outline:none; +} +::ng-deep .col-2.top-filter{ + margin-top:10px; +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.scss b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.scss index fd5a5e47c..c911bec1b 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.scss +++ b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.scss @@ -4,7 +4,7 @@ background: $accent-dark !important; font-size: 1em; font-weight: bold; - color: #303030; + color: $ombi-background-primary-accent; } .mat-form-field { @@ -23,7 +23,7 @@ ::ng-deep .dark .mat-tab-label-active{ background: $accent-dark !important; - color: #303030 !important; + color: $ombi-background-primary-accent !important; font-weight:bold; } diff --git a/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.html b/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.html index 1d6b6f5d3..5a51201cd 100644 --- a/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.html +++ b/src/Ombi/ClientApp/src/app/settings/authentication/authentication.component.html @@ -1,6 +1,6 @@ 
- +
Authentication
diff --git a/src/Ombi/ClientApp/src/app/settings/customization/customization.component.html b/src/Ombi/ClientApp/src/app/settings/customization/customization.component.html index 55f4a1b42..c98cf65fc 100644 --- a/src/Ombi/ClientApp/src/app/settings/customization/customization.component.html +++ b/src/Ombi/ClientApp/src/app/settings/customization/customization.component.html @@ -1,6 +1,6 @@ 
- +
Customization diff --git a/src/Ombi/ClientApp/src/app/settings/dognzb/dognzb.component.html b/src/Ombi/ClientApp/src/app/settings/dognzb/dognzb.component.html index 6587c07d1..43de0ce74 100644 --- a/src/Ombi/ClientApp/src/app/settings/dognzb/dognzb.component.html +++ b/src/Ombi/ClientApp/src/app/settings/dognzb/dognzb.component.html @@ -1,7 +1,7 @@ 
- +
DogNzb Settings diff --git a/src/Ombi/ClientApp/src/app/settings/issues/issues.component.html b/src/Ombi/ClientApp/src/app/settings/issues/issues.component.html index 702ca6915..e42dd3182 100644 --- a/src/Ombi/ClientApp/src/app/settings/issues/issues.component.html +++ b/src/Ombi/ClientApp/src/app/settings/issues/issues.component.html @@ -1,6 +1,6 @@ 
- +
Issues diff --git a/src/Ombi/ClientApp/src/app/settings/jobs/jobs.component.html b/src/Ombi/ClientApp/src/app/settings/jobs/jobs.component.html index 612f9eaf8..f51c5626e 100644 --- a/src/Ombi/ClientApp/src/app/settings/jobs/jobs.component.html +++ b/src/Ombi/ClientApp/src/app/settings/jobs/jobs.component.html @@ -1,5 +1,5 @@  - +
Job Settings diff --git a/src/Ombi/ClientApp/src/app/settings/landingpage/landingpage.component.html b/src/Ombi/ClientApp/src/app/settings/landingpage/landingpage.component.html index 91b923833..fbec2a300 100644 --- a/src/Ombi/ClientApp/src/app/settings/landingpage/landingpage.component.html +++ b/src/Ombi/ClientApp/src/app/settings/landingpage/landingpage.component.html @@ -1,6 +1,6 @@ 
- +
Landing Page Configuration
diff --git a/src/Ombi/ClientApp/src/app/settings/massemail/massemail.component.html b/src/Ombi/ClientApp/src/app/settings/massemail/massemail.component.html index 0e87cd7ba..225e4b860 100644 --- a/src/Ombi/ClientApp/src/app/settings/massemail/massemail.component.html +++ b/src/Ombi/ClientApp/src/app/settings/massemail/massemail.component.html @@ -1,6 +1,6 @@
- +
Mass Email diff --git a/src/Ombi/ClientApp/src/app/settings/notifications/newsletter.component.html b/src/Ombi/ClientApp/src/app/settings/notifications/newsletter.component.html index 80aeba34f..4da0689eb 100644 --- a/src/Ombi/ClientApp/src/app/settings/notifications/newsletter.component.html +++ b/src/Ombi/ClientApp/src/app/settings/notifications/newsletter.component.html @@ -1,6 +1,6 @@  - +
Newsletter diff --git a/src/Ombi/ClientApp/src/app/settings/notifications/notificationtemplate.component.html b/src/Ombi/ClientApp/src/app/settings/notifications/notificationtemplate.component.html index 02551a345..50d4b5c32 100644 --- a/src/Ombi/ClientApp/src/app/settings/notifications/notificationtemplate.component.html +++ b/src/Ombi/ClientApp/src/app/settings/notifications/notificationtemplate.component.html @@ -1,4 +1,4 @@ - +

diff --git a/src/Ombi/ClientApp/src/app/settings/ombi/ombi.component.html b/src/Ombi/ClientApp/src/app/settings/ombi/ombi.component.html index 63d9ce2a1..26d7681a6 100644 --- a/src/Ombi/ClientApp/src/app/settings/ombi/ombi.component.html +++ b/src/Ombi/ClientApp/src/app/settings/ombi/ombi.component.html @@ -1,6 +1,6 @@ 
- +
Ombi Configuration
diff --git a/src/Ombi/ClientApp/src/app/settings/settingsmenu.component.html b/src/Ombi/ClientApp/src/app/settings/settingsmenu.component.html index ce97ee200..e3d2d9257 100644 --- a/src/Ombi/ClientApp/src/app/settings/settingsmenu.component.html +++ b/src/Ombi/ClientApp/src/app/settings/settingsmenu.component.html @@ -7,7 +7,7 @@ - + @@ -59,7 +59,7 @@ - + diff --git a/src/Ombi/ClientApp/src/app/settings/update/update.component.html b/src/Ombi/ClientApp/src/app/settings/update/update.component.html index 6d0688697..52cf9c19e 100644 --- a/src/Ombi/ClientApp/src/app/settings/update/update.component.html +++ b/src/Ombi/ClientApp/src/app/settings/update/update.component.html @@ -1,6 +1,6 @@  - +
Update Settings diff --git a/src/Ombi/ClientApp/src/app/settings/usermanagement/usermanagement.component.html b/src/Ombi/ClientApp/src/app/settings/usermanagement/usermanagement.component.html index ba5ae4842..20bd9a970 100644 --- a/src/Ombi/ClientApp/src/app/settings/usermanagement/usermanagement.component.html +++ b/src/Ombi/ClientApp/src/app/settings/usermanagement/usermanagement.component.html @@ -1,6 +1,6 @@ 
- +
User Importer Settings
diff --git a/src/Ombi/ClientApp/src/app/settings/vote/vote.component.html b/src/Ombi/ClientApp/src/app/settings/vote/vote.component.html index a556fa048..c126bec0d 100644 --- a/src/Ombi/ClientApp/src/app/settings/vote/vote.component.html +++ b/src/Ombi/ClientApp/src/app/settings/vote/vote.component.html @@ -1,6 +1,6 @@ 
- +
Vote diff --git a/src/Ombi/ClientApp/src/app/settings/wiki.component.html b/src/Ombi/ClientApp/src/app/settings/wiki.component.html index 52cedf6ea..fe12a1a19 100644 --- a/src/Ombi/ClientApp/src/app/settings/wiki.component.html +++ b/src/Ombi/ClientApp/src/app/settings/wiki.component.html @@ -1,6 +1,6 @@ 
- + diff --git a/src/Ombi/ClientApp/src/app/settings/wiki.component.ts b/src/Ombi/ClientApp/src/app/settings/wiki.component.ts index d2187bb8a..f391713cd 100644 --- a/src/Ombi/ClientApp/src/app/settings/wiki.component.ts +++ b/src/Ombi/ClientApp/src/app/settings/wiki.component.ts @@ -5,6 +5,7 @@ templateUrl: "./wiki.component.html", }) export class WikiComponent { - @Input() public url: string; + @Input() public path: string; @Input() public text: string; + public domain: string = "http://docs.ombi.app/" } diff --git a/src/Ombi/ClientApp/src/index.html b/src/Ombi/ClientApp/src/index.html index f7804c77f..5659be377 100644 --- a/src/Ombi/ClientApp/src/index.html +++ b/src/Ombi/ClientApp/src/index.html @@ -57,7 +57,7 @@ - +