mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-14 02:26:55 -07:00
Added the option to filter between movies and tv shows or combined on the discover page
This commit is contained in:
parent
46497b4603
commit
c663d6c4c0
6 changed files with 415 additions and 299 deletions
|
@ -1,30 +1,27 @@
|
|||
<div class="small-middle-container">
|
||||
|
||||
<div class="row justify-content-md-center top-spacing">
|
||||
<div class="btn-group" role="group" aria-label="Basic example">
|
||||
<button type="button" (click)="popular()" [attr.color]="popularActive ? 'accent' : 'primary'"
|
||||
[ngClass]="popularActive ? 'mat-accent' : 'mat-primary'" mat-raised-button
|
||||
class="btn grow">{{'Discovery.PopularTab' | translate}}</button>
|
||||
<button type="button" (click)="trending()" [attr.color]="trendingActive ? 'accent' : 'primary'"
|
||||
[ngClass]="trendingActive ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow"
|
||||
color="primary">{{'Discovery.TrendingTab' | translate}}</button>
|
||||
<button type="button" (click)="upcoming()" [attr.color]="upcomingActive ? 'accent' : 'primary'"
|
||||
[ngClass]="upcomingActive ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow"
|
||||
color="primary">{{'Discovery.UpcomingTab' | translate}}</button>
|
||||
<div class="row justify-content-md-center top-spacing">
|
||||
<div class="btn-group" role="group">
|
||||
<button type="button" (click)="switchDiscoverMode(DiscoverOption.Movie)" [attr.color]="popularActive ? 'accent' : 'primary'" [ngClass]="discoverOptions === DiscoverOption.Movie ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow">{{'Discovery.Movies' | translate}}</button>
|
||||
<button type="button" (click)="switchDiscoverMode(DiscoverOption.Combined)" [attr.color]="trendingActive ? 'accent' : 'primary'" [ngClass]="discoverOptions === DiscoverOption.Combined ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow"
|
||||
color="primary">{{'Discovery.Combined' | translate}}</button>
|
||||
<button type="button" (click)="switchDiscoverMode(DiscoverOption.Tv)" [attr.color]="upcomingActive ? 'accent' : 'primary'" [ngClass]="discoverOptions === DiscoverOption.Tv ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow" color="primary">{{'Discovery.Tv' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="discoverResults" class="row full-height discoverResults"
|
||||
infiniteScroll
|
||||
[fromRoot]="false"
|
||||
[infiniteScrollDistance]="0.5"
|
||||
[infiniteScrollDisabled]="scrollDisabled"
|
||||
(scrolled)="onScroll()">
|
||||
<div class="col-xl-2 col-lg-3 col-md-3 col-6 col-sm-4 small-padding" *ngFor="let result of discoverResults">
|
||||
<discover-card [result]="result"></discover-card>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="loadingFlag" class="row justify-content-md-center top-spacing loading-spinner">
|
||||
<mat-spinner [color]="'accent'"></mat-spinner>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-md-center small-space">
|
||||
<div class="btn-group" role="group" aria-label="Basic example">
|
||||
<button type="button" (click)="popular()" [attr.color]="popularActive ? 'accent' : 'primary'" [ngClass]="popularActive ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow">{{'Discovery.PopularTab' | translate}}</button>
|
||||
<button type="button" (click)="trending()" [attr.color]="trendingActive ? 'accent' : 'primary'" [ngClass]="trendingActive ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow" color="primary">{{'Discovery.TrendingTab' | translate}}</button>
|
||||
<button type="button" (click)="upcoming()" [attr.color]="upcomingActive ? 'accent' : 'primary'" [ngClass]="upcomingActive ? 'mat-accent' : 'mat-primary'" mat-raised-button class="btn grow" color="primary">{{'Discovery.UpcomingTab' | translate}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="discoverResults" class="row full-height discoverResults" infiniteScroll [fromRoot]="false" [infiniteScrollDistance]="0.5" [infiniteScrollDisabled]="scrollDisabled" (scrolled)="onScroll()">
|
||||
<div class="col-xl-2 col-lg-3 col-md-3 col-6 col-sm-4 small-padding" *ngFor="let result of discoverResults">
|
||||
<discover-card [result]="result"></discover-card>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="loadingFlag" class="row justify-content-md-center top-spacing loading-spinner">
|
||||
<mat-spinner [color]="'accent'"></mat-spinner>
|
||||
</div>
|
||||
</div>
|
|
@ -2,10 +2,9 @@
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
|
||||
.small-middle-container{
|
||||
margin: auto;
|
||||
width: 80%;
|
||||
.small-middle-container {
|
||||
margin: auto;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.small-padding {
|
||||
|
@ -17,7 +16,12 @@
|
|||
.loading-spinner {
|
||||
margin: 10%;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
height: 100vh;
|
||||
overflow: scroll;
|
||||
}
|
||||
}
|
||||
|
||||
.small-space {
|
||||
padding-top: 1%;
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
import { Component, OnInit } from "@angular/core";
|
||||
import { SearchV2Service } from "../../../services";
|
||||
import { ISearchMovieResult, ISearchTvResult, RequestType } from "../../../interfaces";
|
||||
import { IDiscoverCardResult } from "../../interfaces";
|
||||
import { IDiscoverCardResult, DiscoverOption } from "../../interfaces";
|
||||
import { trigger, transition, style, animate } from "@angular/animations";
|
||||
|
||||
@Component({
|
||||
|
@ -21,6 +21,9 @@ export class DiscoverComponent implements OnInit {
|
|||
public discoverResults: IDiscoverCardResult[] = [];
|
||||
public movies: ISearchMovieResult[] = [];
|
||||
public tvShows: ISearchTvResult[] = [];
|
||||
|
||||
public discoverOptions: DiscoverOption = DiscoverOption.Combined;
|
||||
public DiscoverOption = DiscoverOption;
|
||||
|
||||
public defaultTvPoster: string;
|
||||
|
||||
|
@ -39,8 +42,18 @@ export class DiscoverComponent implements OnInit {
|
|||
public async ngOnInit() {
|
||||
this.loading()
|
||||
this.scrollDisabled = true;
|
||||
this.movies = await this.searchService.popularMoviesByPage(0,12);
|
||||
this.tvShows = await this.searchService.popularTvByPage(0,12);
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.popularMoviesByPage(0,12);
|
||||
this.tvShows = await this.searchService.popularTvByPage(0,12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.popularMoviesByPage(0,12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.popularTvByPage(0,12);
|
||||
break;
|
||||
}
|
||||
|
||||
this.contentLoaded = 12;
|
||||
|
||||
|
@ -56,16 +69,46 @@ export class DiscoverComponent implements OnInit {
|
|||
this.isScrolling = true;
|
||||
this.loading();
|
||||
if (this.popularActive) {
|
||||
this.movies = await this.searchService.popularMoviesByPage(this.contentLoaded, 12);
|
||||
this.tvShows = await this.searchService.popularTvByPage(this.contentLoaded, 12);
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.popularMoviesByPage(this.contentLoaded, 12);
|
||||
this.tvShows = await this.searchService.popularTvByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.popularMoviesByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.popularTvByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(this.trendingActive) {
|
||||
this.movies = await this.searchService.nowPlayingMoviesByPage(this.contentLoaded, 12);
|
||||
this.tvShows = await this.searchService.trendingTvByPage(this.contentLoaded, 12);
|
||||
if (this.trendingActive) {
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.nowPlayingMoviesByPage(this.contentLoaded, 12);
|
||||
this.tvShows = await this.searchService.trendingTvByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.nowPlayingMoviesByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.trendingTvByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(this.upcomingActive) {
|
||||
this.movies = await this.searchService.upcomingMoviesByPage(this.contentLoaded, 12);
|
||||
this.tvShows = await this.searchService.anticipatedTvByPage(this.contentLoaded, 12);
|
||||
if (this.upcomingActive) {
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.upcomingMoviesByPage(this.contentLoaded, 12);
|
||||
this.tvShows = await this.searchService.anticipatedTvByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.upcomingMoviesByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.anticipatedTvByPage(this.contentLoaded, 12);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.contentLoaded += 12;
|
||||
|
||||
|
@ -83,8 +126,18 @@ export class DiscoverComponent implements OnInit {
|
|||
this.popularActive = true;
|
||||
this.trendingActive = false;
|
||||
this.upcomingActive = false;
|
||||
this.movies = await this.searchService.popularMoviesByPage(0, 12);
|
||||
this.tvShows = await this.searchService.popularTvByPage(0, 12);
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.popularMoviesByPage(0, 12);
|
||||
this.tvShows = await this.searchService.popularTvByPage(0, 12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.popularMoviesByPage(0, 12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.popularTvByPage(0, 12);
|
||||
break;
|
||||
}
|
||||
|
||||
this.createModel();
|
||||
this.scrollDisabled = false;
|
||||
|
@ -100,8 +153,18 @@ export class DiscoverComponent implements OnInit {
|
|||
this.popularActive = false;
|
||||
this.trendingActive = true;
|
||||
this.upcomingActive = false;
|
||||
this.movies = await this.searchService.nowPlayingMoviesByPage(0, 12);
|
||||
this.tvShows = await this.searchService.trendingTvByPage(0, 12);
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.nowPlayingMoviesByPage(0, 12);
|
||||
this.tvShows = await this.searchService.trendingTvByPage(0, 12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.nowPlayingMoviesByPage(0, 12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.trendingTvByPage(0, 12);
|
||||
break;
|
||||
}
|
||||
|
||||
this.createModel();
|
||||
this.scrollDisabled = false;
|
||||
|
@ -116,15 +179,55 @@ export class DiscoverComponent implements OnInit {
|
|||
this.popularActive = false;
|
||||
this.trendingActive = false;
|
||||
this.upcomingActive = true;
|
||||
this.movies = await this.searchService.upcomingMoviesByPage(0, 12);
|
||||
this.tvShows = await this.searchService.anticipatedTvByPage(0, 12);
|
||||
switch (this.discoverOptions) {
|
||||
case DiscoverOption.Combined:
|
||||
this.movies = await this.searchService.upcomingMoviesByPage(0, 12);
|
||||
this.tvShows = await this.searchService.anticipatedTvByPage(0, 12);
|
||||
break;
|
||||
case DiscoverOption.Movie:
|
||||
this.movies = await this.searchService.upcomingMoviesByPage(0, 12);
|
||||
break;
|
||||
case DiscoverOption.Tv:
|
||||
this.tvShows = await this.searchService.anticipatedTvByPage(0, 12);
|
||||
break;
|
||||
}
|
||||
|
||||
this.createModel();
|
||||
this.scrollDisabled = false;
|
||||
}
|
||||
|
||||
public async switchDiscoverMode(newMode: DiscoverOption) {
|
||||
this.loading();
|
||||
this.clear();
|
||||
this.discoverOptions = newMode;
|
||||
await this.ngOnInit();
|
||||
this.finishLoading();
|
||||
}
|
||||
|
||||
private createModel() {
|
||||
const tempResults = <IDiscoverCardResult[]>[];
|
||||
|
||||
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);
|
||||
|
||||
this.finishLoading();
|
||||
}
|
||||
|
||||
private mapMovieModel(): IDiscoverCardResult[] {
|
||||
const tempResults = <IDiscoverCardResult[]>[];
|
||||
this.movies.forEach(m => {
|
||||
tempResults.push({
|
||||
available: m.available,
|
||||
|
@ -140,6 +243,11 @@ export class DiscoverComponent implements OnInit {
|
|||
imdbid: m.imdbId
|
||||
});
|
||||
});
|
||||
return tempResults;
|
||||
}
|
||||
|
||||
private mapTvModel(): IDiscoverCardResult[] {
|
||||
const tempResults = <IDiscoverCardResult[]>[];
|
||||
this.tvShows.forEach(m => {
|
||||
tempResults.push({
|
||||
available: m.available,
|
||||
|
@ -155,10 +263,7 @@ export class DiscoverComponent implements OnInit {
|
|||
imdbid: m.imdbId
|
||||
});
|
||||
});
|
||||
this.shuffle(tempResults);
|
||||
this.discoverResults.push(...tempResults);
|
||||
|
||||
this.finishLoading();
|
||||
return tempResults;
|
||||
}
|
||||
|
||||
private createInitialModel() {
|
||||
|
|
|
@ -12,4 +12,10 @@ export interface IDiscoverCardResult {
|
|||
rating: number;
|
||||
overview: string;
|
||||
imdbid: string;
|
||||
}
|
||||
}
|
||||
|
||||
export enum DiscoverOption {
|
||||
Combined = 1,
|
||||
Movie = 2,
|
||||
Tv = 3
|
||||
}
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
.top-spacing {
|
||||
padding-top: 10%;
|
||||
}
|
||||
.modal-panel {
|
||||
max-height: 100vh !important;
|
||||
max-width: 100vw !important;
|
||||
height: 100%;
|
||||
.modal-panel {
|
||||
max-height: 100vh !important;
|
||||
max-width: 100vw !important;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ body {
|
|||
height: 50px;
|
||||
}
|
||||
|
||||
|
||||
/* Scrollbar */
|
||||
|
||||
::-webkit-scrollbar {
|
||||
|
@ -60,7 +61,7 @@ body {
|
|||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.loading-spinner {
|
||||
|
|
|
@ -1,245 +1,248 @@
|
|||
{
|
||||
"Login": {
|
||||
"SignInButton": "Sign in",
|
||||
"UsernamePlaceholder": "Username",
|
||||
"PasswordPlaceholder": "Password",
|
||||
"RememberMe": "Remember Me",
|
||||
"SignInWith": "Sign in with {{appName}}",
|
||||
"SignInWithPlex": "Sign in with Plex",
|
||||
"ForgottenPassword": "Forgot your password?",
|
||||
"Errors": {
|
||||
"IncorrectCredentials": "Incorrect username or password"
|
||||
}
|
||||
},
|
||||
"Common": {
|
||||
"ContinueButton": "Continue",
|
||||
"Available": "Available",
|
||||
"PartiallyAvailable": "Partially Available",
|
||||
"Monitored": "Monitored",
|
||||
"NotAvailable": "Not Available",
|
||||
"ProcessingRequest": "Processing Request",
|
||||
"PendingApproval": "Pending Approval",
|
||||
"RequestDenied": "Request Denied",
|
||||
"NotRequested": "Not Requested",
|
||||
"Requested": "Requested",
|
||||
"Request": "Request",
|
||||
"Denied": "Denied",
|
||||
"Approve": "Approve",
|
||||
"PartlyAvailable": "Partly Available",
|
||||
"ViewDetails": "View Details",
|
||||
"Errors": {
|
||||
"Validation": "Please check your entered values"
|
||||
"Login": {
|
||||
"SignInButton": "Sign in",
|
||||
"UsernamePlaceholder": "Username",
|
||||
"PasswordPlaceholder": "Password",
|
||||
"RememberMe": "Remember Me",
|
||||
"SignInWith": "Sign in with {{appName}}",
|
||||
"SignInWithPlex": "Sign in with Plex",
|
||||
"ForgottenPassword": "Forgot your password?",
|
||||
"Errors": {
|
||||
"IncorrectCredentials": "Incorrect username or password"
|
||||
}
|
||||
},
|
||||
"Cancel":"Cancel",
|
||||
"Submit":"Submit"
|
||||
},
|
||||
"PasswordReset": {
|
||||
"EmailAddressPlaceholder": "Email Address",
|
||||
"ResetPasswordButton": "Reset Password"
|
||||
},
|
||||
"LandingPage": {
|
||||
"OnlineHeading": "Currently Online",
|
||||
"OnlineParagraph": "The media server is currently online",
|
||||
"PartiallyOnlineHeading": "Partially Online",
|
||||
"PartiallyOnlineParagraph": "The media server is partially online.",
|
||||
"MultipleServersUnavailable": "There are {{serversUnavailable}} servers offline out of {{totalServers}}.",
|
||||
"SingleServerUnavailable": "There is {{serversUnavailable}} server offline out of {{totalServers}}.",
|
||||
"OfflineHeading": "Currently Offline",
|
||||
"OfflineParagraph": "The media server is currently offline.",
|
||||
"CheckPageForUpdates": "Check this page for continuous site updates."
|
||||
},
|
||||
"NavigationBar": {
|
||||
"Discover": "Discover",
|
||||
"Search": "Search",
|
||||
"Requests": "Requests",
|
||||
"UserManagement": "User Management",
|
||||
"Issues": "Issues",
|
||||
"Vote": "Vote",
|
||||
"Donate": "Donate!",
|
||||
"DonateLibraryMaintainer": "Donate to Library Maintainer",
|
||||
"DonateTooltip": "This is how I convince my wife to let me spend my spare time developing Ombi ;)",
|
||||
"UpdateAvailableTooltip": "Update Available!",
|
||||
"Settings": "Settings",
|
||||
"Welcome": "Welcome {{username}}",
|
||||
"UpdateDetails": "Update Details",
|
||||
"Logout": "Logout",
|
||||
"OpenMobileApp": "Open Mobile App",
|
||||
"RecentlyAdded": "Recently Added",
|
||||
"ChangeTheme":"Change Theme",
|
||||
"Calendar":"Calendar",
|
||||
"UserPreferences": "Preferences"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Search",
|
||||
"Paragraph": "Want to watch something that is not currently available? No problem, just search for it below and request it!",
|
||||
"MoviesTab": "Movies",
|
||||
"TvTab": "TV Shows",
|
||||
"MusicTab": "Music",
|
||||
"Suggestions": "Suggestions",
|
||||
"NoResults": "Sorry, we didn't find any results!",
|
||||
"DigitalDate": "Digital Release: {{date}}",
|
||||
"TheatricalRelease": "Theatrical Release: {{date}}",
|
||||
"ViewOnPlex": "View On Plex",
|
||||
"ViewOnEmby": "View On Emby",
|
||||
"RequestAdded": "Request for {{title}} has been added successfully",
|
||||
"Similar":"Similar",
|
||||
"Refine":"Refine",
|
||||
"SearchBarPlaceholder":"Type Here to Search",
|
||||
"Movies": {
|
||||
"PopularMovies": "Popular Movies",
|
||||
"UpcomingMovies": "Upcoming Movies",
|
||||
"TopRatedMovies": "Top Rated Movies",
|
||||
"NowPlayingMovies": "Now Playing Movies",
|
||||
"HomePage": "Home Page",
|
||||
"Trailer": "Trailer"
|
||||
"Common": {
|
||||
"ContinueButton": "Continue",
|
||||
"Available": "Available",
|
||||
"PartiallyAvailable": "Partially Available",
|
||||
"Monitored": "Monitored",
|
||||
"NotAvailable": "Not Available",
|
||||
"ProcessingRequest": "Processing Request",
|
||||
"PendingApproval": "Pending Approval",
|
||||
"RequestDenied": "Request Denied",
|
||||
"NotRequested": "Not Requested",
|
||||
"Requested": "Requested",
|
||||
"Request": "Request",
|
||||
"Denied": "Denied",
|
||||
"Approve": "Approve",
|
||||
"PartlyAvailable": "Partly Available",
|
||||
"ViewDetails": "View Details",
|
||||
"Errors": {
|
||||
"Validation": "Please check your entered values"
|
||||
},
|
||||
"Cancel": "Cancel",
|
||||
"Submit": "Submit"
|
||||
},
|
||||
"TvShows": {
|
||||
"Popular": "Popular",
|
||||
"Trending": "Trending",
|
||||
"MostWatched": "Most Watched",
|
||||
"MostAnticipated": "Most Anticipated",
|
||||
"Results": "Results",
|
||||
"AirDate": "Air Date:",
|
||||
"AllSeasons": "All Seasons",
|
||||
"FirstSeason": "First Season",
|
||||
"LatestSeason": "Latest Season",
|
||||
"Select": "Select ...",
|
||||
"SubmitRequest": "Submit Request",
|
||||
"Season": "Season: {{seasonNumber}}",
|
||||
"SelectAllInSeason": "Select All in Season {{seasonNumber}}"
|
||||
}
|
||||
},
|
||||
"Requests": {
|
||||
"Title": "Requests",
|
||||
"Paragraph": "Below you can see yours and all other requests, as well as their download and approval status.",
|
||||
"MoviesTab": "Movies",
|
||||
"TvTab": "TV Shows",
|
||||
"MusicTab": "Music",
|
||||
"RequestedBy": "Requested By:",
|
||||
"Status": "Status:",
|
||||
"RequestStatus": "Request status:",
|
||||
"Denied": " Denied:",
|
||||
"TheatricalRelease": "Theatrical Release: {{date}}",
|
||||
"ReleaseDate": "Released: {{date}}",
|
||||
"TheatricalReleaseSort": "Theatrical Release",
|
||||
"DigitalRelease": "Digital Release: {{date}}",
|
||||
"RequestDate": "Request Date:",
|
||||
"QualityOverride": "Quality Override:",
|
||||
"RootFolderOverride": "Root Folder Override:",
|
||||
"ChangeRootFolder": "Root Folder",
|
||||
"ChangeQualityProfile": "Quality Profile",
|
||||
"MarkUnavailable": "Mark Unavailable",
|
||||
"MarkAvailable": "Mark Available",
|
||||
"Remove": "Remove",
|
||||
"Deny": "Deny",
|
||||
"DenyReason": "Deny Reason",
|
||||
"Season": "Season:",
|
||||
"GridTitle": "Title",
|
||||
"AirDate": "AirDate",
|
||||
"GridStatus": "Status",
|
||||
"ReportIssue": "Report Issue",
|
||||
"Filter": "Filter",
|
||||
"Sort": "Sort",
|
||||
"SeasonNumberHeading": "Season: {seasonNumber}",
|
||||
"SortTitleAsc": "Title ▲",
|
||||
"SortTitleDesc": "Title ▼",
|
||||
"SortRequestDateAsc": "Request Date ▲",
|
||||
"SortRequestDateDesc": "Request Date ▼",
|
||||
"SortStatusAsc": "Status ▲",
|
||||
"SortStatusDesc": "Status ▼",
|
||||
"Remaining": {
|
||||
"Quota": "{{remaining}}/{{total}} requests remaining",
|
||||
"NextDays": "Another request will be added in {{time}} days",
|
||||
"NextHours": "Another request will be added in {{time}} hours",
|
||||
"NextMinutes": "Another request will be added in {{time}} minutes",
|
||||
"NextMinute": "Another request will be added in {{time}} minute"
|
||||
}
|
||||
},
|
||||
"Issues": {
|
||||
"Title": "Issues",
|
||||
"PendingTitle": "Pending Issues",
|
||||
"InProgressTitle": "In Progress Issues",
|
||||
"ResolvedTitle": "Resolved Issues",
|
||||
"ColumnTitle": "Title",
|
||||
"Category": "Category",
|
||||
"Status": "Status",
|
||||
"Details": "Details",
|
||||
"Description": "Description",
|
||||
"NoComments": "No Comments!",
|
||||
"MarkInProgress": "Mark In Progress",
|
||||
"MarkResolved": "Mark Resolved",
|
||||
"SendMessageButton": "Send",
|
||||
"Subject": "Subject",
|
||||
"Comments": "Comments",
|
||||
"WriteMessagePlaceholder": "Write your message here...",
|
||||
"ReportedBy": "Reported By",
|
||||
"IssueDialog": {
|
||||
"Title":"Report an issue",
|
||||
"DescriptionPlaceholder":"Please describe the issue",
|
||||
"TitlePlaceholder":"Short title of your issue",
|
||||
"SelectCategory": "Select Category",
|
||||
"IssueCreated":"Issue has been created"
|
||||
}
|
||||
},
|
||||
"Filter": {
|
||||
"ClearFilter": "Clear Filter",
|
||||
"FilterHeaderAvailability": "Availability",
|
||||
"FilterHeaderRequestStatus": "Status",
|
||||
"Approved": "Approved",
|
||||
"PendingApproval": "Pending Approval"
|
||||
},
|
||||
"UserManagment": {
|
||||
"TvRemaining": "TV: {{remaining}}/{{total}} remaining",
|
||||
"MovieRemaining": "Movies: {{remaining}}/{{total}} remaining",
|
||||
"MusicRemaining": "Music: {{remaining}}/{{total}} remaining",
|
||||
"TvDue": "TV: {{date}}",
|
||||
"MovieDue": "Movie: {{date}}",
|
||||
"MusicDue": "Music: {{date}}"
|
||||
},
|
||||
"Votes": {
|
||||
"CompletedVotesTab": "Voted",
|
||||
"VotesTab": "Votes Needed"
|
||||
},
|
||||
"MediaDetails": {
|
||||
"Denied": "Denied",
|
||||
"RecommendationsTitle": "Recommendations",
|
||||
"SimilarTitle": "Similar",
|
||||
"VideosTitle": "Videos",
|
||||
"AlbumsTitle":"Albums",
|
||||
"RequestAllAlbums":"Request All Albums",
|
||||
"ClearSelection":"Clear Selection",
|
||||
"RequestSelectedAlbums":"Request Selected Albums",
|
||||
"Casts": {
|
||||
"CastTitle": "Cast",
|
||||
"Character": "Character",
|
||||
"Actor": "Actor"
|
||||
"PasswordReset": {
|
||||
"EmailAddressPlaceholder": "Email Address",
|
||||
"ResetPasswordButton": "Reset Password"
|
||||
},
|
||||
"EpisodeSelector":{
|
||||
"AllSeasonsTooltip":"This will request every season for this show",
|
||||
"FirstSeasonTooltip":"This will only request the First Season for this show",
|
||||
"LatestSeasonTooltip":"This will only request the Latest Season for this show"
|
||||
"LandingPage": {
|
||||
"OnlineHeading": "Currently Online",
|
||||
"OnlineParagraph": "The media server is currently online",
|
||||
"PartiallyOnlineHeading": "Partially Online",
|
||||
"PartiallyOnlineParagraph": "The media server is partially online.",
|
||||
"MultipleServersUnavailable": "There are {{serversUnavailable}} servers offline out of {{totalServers}}.",
|
||||
"SingleServerUnavailable": "There is {{serversUnavailable}} server offline out of {{totalServers}}.",
|
||||
"OfflineHeading": "Currently Offline",
|
||||
"OfflineParagraph": "The media server is currently offline.",
|
||||
"CheckPageForUpdates": "Check this page for continuous site updates."
|
||||
},
|
||||
"NavigationBar": {
|
||||
"Discover": "Discover",
|
||||
"Search": "Search",
|
||||
"Requests": "Requests",
|
||||
"UserManagement": "User Management",
|
||||
"Issues": "Issues",
|
||||
"Vote": "Vote",
|
||||
"Donate": "Donate!",
|
||||
"DonateLibraryMaintainer": "Donate to Library Maintainer",
|
||||
"DonateTooltip": "This is how I convince my wife to let me spend my spare time developing Ombi ;)",
|
||||
"UpdateAvailableTooltip": "Update Available!",
|
||||
"Settings": "Settings",
|
||||
"Welcome": "Welcome {{username}}",
|
||||
"UpdateDetails": "Update Details",
|
||||
"Logout": "Logout",
|
||||
"OpenMobileApp": "Open Mobile App",
|
||||
"RecentlyAdded": "Recently Added",
|
||||
"ChangeTheme": "Change Theme",
|
||||
"Calendar": "Calendar",
|
||||
"UserPreferences": "Preferences"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Search",
|
||||
"Paragraph": "Want to watch something that is not currently available? No problem, just search for it below and request it!",
|
||||
"MoviesTab": "Movies",
|
||||
"TvTab": "TV Shows",
|
||||
"MusicTab": "Music",
|
||||
"Suggestions": "Suggestions",
|
||||
"NoResults": "Sorry, we didn't find any results!",
|
||||
"DigitalDate": "Digital Release: {{date}}",
|
||||
"TheatricalRelease": "Theatrical Release: {{date}}",
|
||||
"ViewOnPlex": "View On Plex",
|
||||
"ViewOnEmby": "View On Emby",
|
||||
"RequestAdded": "Request for {{title}} has been added successfully",
|
||||
"Similar": "Similar",
|
||||
"Refine": "Refine",
|
||||
"SearchBarPlaceholder": "Type Here to Search",
|
||||
"Movies": {
|
||||
"PopularMovies": "Popular Movies",
|
||||
"UpcomingMovies": "Upcoming Movies",
|
||||
"TopRatedMovies": "Top Rated Movies",
|
||||
"NowPlayingMovies": "Now Playing Movies",
|
||||
"HomePage": "Home Page",
|
||||
"Trailer": "Trailer"
|
||||
},
|
||||
"TvShows": {
|
||||
"Popular": "Popular",
|
||||
"Trending": "Trending",
|
||||
"MostWatched": "Most Watched",
|
||||
"MostAnticipated": "Most Anticipated",
|
||||
"Results": "Results",
|
||||
"AirDate": "Air Date:",
|
||||
"AllSeasons": "All Seasons",
|
||||
"FirstSeason": "First Season",
|
||||
"LatestSeason": "Latest Season",
|
||||
"Select": "Select ...",
|
||||
"SubmitRequest": "Submit Request",
|
||||
"Season": "Season: {{seasonNumber}}",
|
||||
"SelectAllInSeason": "Select All in Season {{seasonNumber}}"
|
||||
}
|
||||
},
|
||||
"Requests": {
|
||||
"Title": "Requests",
|
||||
"Paragraph": "Below you can see yours and all other requests, as well as their download and approval status.",
|
||||
"MoviesTab": "Movies",
|
||||
"TvTab": "TV Shows",
|
||||
"MusicTab": "Music",
|
||||
"RequestedBy": "Requested By:",
|
||||
"Status": "Status:",
|
||||
"RequestStatus": "Request status:",
|
||||
"Denied": " Denied:",
|
||||
"TheatricalRelease": "Theatrical Release: {{date}}",
|
||||
"ReleaseDate": "Released: {{date}}",
|
||||
"TheatricalReleaseSort": "Theatrical Release",
|
||||
"DigitalRelease": "Digital Release: {{date}}",
|
||||
"RequestDate": "Request Date:",
|
||||
"QualityOverride": "Quality Override:",
|
||||
"RootFolderOverride": "Root Folder Override:",
|
||||
"ChangeRootFolder": "Root Folder",
|
||||
"ChangeQualityProfile": "Quality Profile",
|
||||
"MarkUnavailable": "Mark Unavailable",
|
||||
"MarkAvailable": "Mark Available",
|
||||
"Remove": "Remove",
|
||||
"Deny": "Deny",
|
||||
"DenyReason": "Deny Reason",
|
||||
"Season": "Season:",
|
||||
"GridTitle": "Title",
|
||||
"AirDate": "AirDate",
|
||||
"GridStatus": "Status",
|
||||
"ReportIssue": "Report Issue",
|
||||
"Filter": "Filter",
|
||||
"Sort": "Sort",
|
||||
"SeasonNumberHeading": "Season: {seasonNumber}",
|
||||
"SortTitleAsc": "Title ▲",
|
||||
"SortTitleDesc": "Title ▼",
|
||||
"SortRequestDateAsc": "Request Date ▲",
|
||||
"SortRequestDateDesc": "Request Date ▼",
|
||||
"SortStatusAsc": "Status ▲",
|
||||
"SortStatusDesc": "Status ▼",
|
||||
"Remaining": {
|
||||
"Quota": "{{remaining}}/{{total}} requests remaining",
|
||||
"NextDays": "Another request will be added in {{time}} days",
|
||||
"NextHours": "Another request will be added in {{time}} hours",
|
||||
"NextMinutes": "Another request will be added in {{time}} minutes",
|
||||
"NextMinute": "Another request will be added in {{time}} minute"
|
||||
}
|
||||
},
|
||||
"Issues": {
|
||||
"Title": "Issues",
|
||||
"PendingTitle": "Pending Issues",
|
||||
"InProgressTitle": "In Progress Issues",
|
||||
"ResolvedTitle": "Resolved Issues",
|
||||
"ColumnTitle": "Title",
|
||||
"Category": "Category",
|
||||
"Status": "Status",
|
||||
"Details": "Details",
|
||||
"Description": "Description",
|
||||
"NoComments": "No Comments!",
|
||||
"MarkInProgress": "Mark In Progress",
|
||||
"MarkResolved": "Mark Resolved",
|
||||
"SendMessageButton": "Send",
|
||||
"Subject": "Subject",
|
||||
"Comments": "Comments",
|
||||
"WriteMessagePlaceholder": "Write your message here...",
|
||||
"ReportedBy": "Reported By",
|
||||
"IssueDialog": {
|
||||
"Title": "Report an issue",
|
||||
"DescriptionPlaceholder": "Please describe the issue",
|
||||
"TitlePlaceholder": "Short title of your issue",
|
||||
"SelectCategory": "Select Category",
|
||||
"IssueCreated": "Issue has been created"
|
||||
}
|
||||
},
|
||||
"Filter": {
|
||||
"ClearFilter": "Clear Filter",
|
||||
"FilterHeaderAvailability": "Availability",
|
||||
"FilterHeaderRequestStatus": "Status",
|
||||
"Approved": "Approved",
|
||||
"PendingApproval": "Pending Approval"
|
||||
},
|
||||
"UserManagment": {
|
||||
"TvRemaining": "TV: {{remaining}}/{{total}} remaining",
|
||||
"MovieRemaining": "Movies: {{remaining}}/{{total}} remaining",
|
||||
"MusicRemaining": "Music: {{remaining}}/{{total}} remaining",
|
||||
"TvDue": "TV: {{date}}",
|
||||
"MovieDue": "Movie: {{date}}",
|
||||
"MusicDue": "Music: {{date}}"
|
||||
},
|
||||
"Votes": {
|
||||
"CompletedVotesTab": "Voted",
|
||||
"VotesTab": "Votes Needed"
|
||||
},
|
||||
"MediaDetails": {
|
||||
"Denied": "Denied",
|
||||
"RecommendationsTitle": "Recommendations",
|
||||
"SimilarTitle": "Similar",
|
||||
"VideosTitle": "Videos",
|
||||
"AlbumsTitle": "Albums",
|
||||
"RequestAllAlbums": "Request All Albums",
|
||||
"ClearSelection": "Clear Selection",
|
||||
"RequestSelectedAlbums": "Request Selected Albums",
|
||||
"Casts": {
|
||||
"CastTitle": "Cast",
|
||||
"Character": "Character",
|
||||
"Actor": "Actor"
|
||||
},
|
||||
"EpisodeSelector": {
|
||||
"AllSeasonsTooltip": "This will request every season for this show",
|
||||
"FirstSeasonTooltip": "This will only request the First Season for this show",
|
||||
"LatestSeasonTooltip": "This will only request the Latest Season for this show"
|
||||
}
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popular",
|
||||
"TrendingTab": "Trending",
|
||||
"UpcomingTab": "Upcoming",
|
||||
"Movies": "Movies",
|
||||
"Combined": "Combined",
|
||||
"Tv": "Tv",
|
||||
"CardDetails": {
|
||||
"Availability": "Availability",
|
||||
"Studio": "Studio",
|
||||
"Network": "Network",
|
||||
"UnknownNetwork": "Unknown",
|
||||
"RequestStatus": "Request Status",
|
||||
"Director": "Director",
|
||||
"InCinemas": "In Cinemas",
|
||||
"FirstAired": "First Aired",
|
||||
"Writer": "Writer",
|
||||
"ExecProducer": "Exec Producer"
|
||||
}
|
||||
},
|
||||
"UserPreferences": {
|
||||
"Welcome": "Welcome {{username}}!",
|
||||
"OmbiLanguage": "Language",
|
||||
"DarkMode": "Dark Mode"
|
||||
}
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popular",
|
||||
"TrendingTab": "Trending",
|
||||
"UpcomingTab": "Upcoming",
|
||||
"CardDetails": {
|
||||
"Availability": "Availability",
|
||||
"Studio": "Studio",
|
||||
"Network": "Network",
|
||||
"UnknownNetwork": "Unknown",
|
||||
"RequestStatus": "Request Status",
|
||||
"Director": "Director",
|
||||
"InCinemas": "In Cinemas",
|
||||
"FirstAired": "First Aired",
|
||||
"Writer": "Writer",
|
||||
"ExecProducer": "Exec Producer"
|
||||
}
|
||||
},
|
||||
"UserPreferences": {
|
||||
"Welcome":"Welcome {{username}}!",
|
||||
"OmbiLanguage":"Language",
|
||||
"DarkMode":"Dark Mode"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue