From 619e22827fe9e242bf55c9761edc1f961ac64092 Mon Sep 17 00:00:00 2001 From: Jamie Rees Date: Tue, 12 Mar 2019 13:10:06 +0000 Subject: [PATCH] Fixed up the episode request modal a bit --- src/Ombi.Helpers/GlobalMutex.cs | 2 +- .../components/tv/tv-details.component.html | 7 - .../components/tv/tv-details.component.ts | 2 +- .../episode-request.component.html | 124 ++++++----- .../episode-request.component.ts | 30 ++- .../ClientApp/src/app/shared/shared.module.ts | 1 + src/Ombi/wwwroot/translations/en.json | 198 +++++++++--------- 7 files changed, 191 insertions(+), 173 deletions(-) diff --git a/src/Ombi.Helpers/GlobalMutex.cs b/src/Ombi.Helpers/GlobalMutex.cs index ecf9cdf15..d7d3f7816 100644 --- a/src/Ombi.Helpers/GlobalMutex.cs +++ b/src/Ombi.Helpers/GlobalMutex.cs @@ -9,7 +9,7 @@ namespace Ombi.Helpers { const string mutexId = "Global\\OMBI"; - using (var mutex = new Mutex(false, mutexId, out __)) + using (var mutex = new Mutex(false, mutexId, out var __)) { var hasHandle = false; try 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 8e107554f..26292fa79 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 @@ -150,11 +150,4 @@ - - - - - - - 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 326594d98..aa5aad6ee 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 @@ -51,7 +51,7 @@ export class TvDetailsComponent { } public async request() { - this.dialog.open(EpisodeRequestComponent, { width: "700px", data: this.tv }) + this.dialog.open(EpisodeRequestComponent, { width: "800px", data: this.tv }) } public openDialog() { diff --git a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html index 4165fbdb0..11962184e 100644 --- a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html +++ b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html @@ -1,73 +1,83 @@
- +
-
-
- - - - Season {{season.seasonNumber}} - Season {{season.seasonNumber}} - - - Description - - +
+
+ -
-
-
- - -
-
-
- {{ep.episodeNumber}} -
-
- {{ep.title}} -
-
- {{ep.airDate | amLocal | amDateFormat: 'L' }} -
-
- {{ep.airDateDisplay }} -
-
- Available - Processing Request - Selected - Pending Approval - - Not Requested -
- -
- - - + + +
+
+
+
+ + + + + Season {{season.seasonNumber}} + Season {{season.seasonNumber}} + + + Description + + +
+
+
+ + +
+
+
+ {{ep.episodeNumber}} +
+
+ {{ep.title}} +
+
+ {{ep.airDate | amLocal | amDateFormat: 'L' }} +
+
+ {{ep.airDateDisplay }} +
+
+ Available + Processing + Request + Selected + Pending Approval + + Not Requested +
+
+ + +
+ + +
-
-
- +
+ + -
-
-
\ No newline at end of file +
+
diff --git a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts index 8b03556f5..c4ecb45fd 100644 --- a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts +++ b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts @@ -29,8 +29,8 @@ export class EpisodeRequestComponent implements OnInit { return ep.selected; }); }); - - if (!selected) { + debugger; + if (!selected && !this.series.requestAll && !this.series.firstSeason && !this.series.latestSeason) { this.notificationService.send("You need to select some episodes!", "OK"); return; } @@ -41,15 +41,14 @@ export class EpisodeRequestComponent implements OnInit { viewModel.seasons = []; this.series.seasonRequests.forEach((season) => { const seasonsViewModel = { seasonNumber: season.seasonNumber, episodes: [] }; - season.episodes.forEach(ep => { - if (!this.series.latestSeason || !this.series.requestAll || !this.series.firstSeason) { + if (!this.series.latestSeason && !this.series.requestAll && !this.series.firstSeason) { + season.episodes.forEach(ep => { if (ep.selected) { ep.requested = true; seasonsViewModel.episodes.push({ episodeNumber: ep.episodeNumber }); } - } - }); - + }); + } viewModel.seasons.push(seasonsViewModel); }); @@ -81,11 +80,26 @@ export class EpisodeRequestComponent implements OnInit { public seasonChanged(checkbox: MatCheckboxChange, season: INewSeasonRequests) { season.episodes.forEach((ep) => { - if (checkbox.checked) { + if (checkbox.checked && (!ep.available && !ep.requested && !ep.approved)) { this.addRequest(ep) } else { this.removeRequest(ep); } }); } + + public async requestAllSeasons() { + this.series.requestAll = true; + await this.submitRequests(); + } + + public async requestFirstSeason() { + this.series.firstSeason = true; + await this.submitRequests(); + } + + public async requestLatestSeason() { + this.series.latestSeason = true; + await this.submitRequests(); + } } diff --git a/src/Ombi/ClientApp/src/app/shared/shared.module.ts b/src/Ombi/ClientApp/src/app/shared/shared.module.ts index e488cedd2..e9ad2f4b1 100644 --- a/src/Ombi/ClientApp/src/app/shared/shared.module.ts +++ b/src/Ombi/ClientApp/src/app/shared/shared.module.ts @@ -43,6 +43,7 @@ import { EpisodeRequestComponent } from "./episode-request/episode-request.compo TranslateModule, MatExpansionModule, MatDialogModule, + MatTooltipModule, ], entryComponents: [ EpisodeRequestComponent diff --git a/src/Ombi/wwwroot/translations/en.json b/src/Ombi/wwwroot/translations/en.json index 025bc7a07..513c67336 100644 --- a/src/Ombi/wwwroot/translations/en.json +++ b/src/Ombi/wwwroot/translations/en.json @@ -17,14 +17,14 @@ "NotAvailable": "Not Available", "ProcessingRequest": "Processing Request", "PendingApproval": "Pending Approval", - "RequestDenied":"Request Denied", + "RequestDenied": "Request Denied", "NotRequested": "Not Requested", "Requested": "Requested", "Request": "Request", - "Denied":"Denied", - "Approve":"Approve", + "Denied": "Denied", + "Approve": "Approve", "PartlyAvailable": "Partly Available", - "ViewDetails": "View Details", + "ViewDetails": "View Details", "Errors": { "Validation": "Please check your entered values" } @@ -38,49 +38,45 @@ "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}}.", + "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", + "Discover": "Discover", "Search": "Search", "Requests": "Requests", "UserManagement": "User Management", - "Issues":"Issues", - "Vote":"Vote", + "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 ;)", + "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" + "OpenMobileApp": "Open Mobile App", + "RecentlyAdded": "Recently Added" }, "Search": { "Title": "Search", - "Paragraph": - "Want to watch something that is not currently available? No problem, just search for it below and request it!", + "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", + "MusicTab": "Music", "Suggestions": "Suggestions", "NoResults": "Sorry, we didn't find any results!", "DigitalDate": "Digital Release: {{date}}", - "TheatricalRelease":"Theatrical 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", + "Similar": "Similar", + "Refine": "Refine", "Movies": { "PopularMovies": "Popular Movies", "UpcomingMovies": "Upcoming Movies", @@ -90,28 +86,27 @@ "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}}" + "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.", + "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", + "MusicTab": "Music", "RequestedBy": "Requested By:", "Status": "Status:", "RequestStatus": "Request status:", @@ -123,27 +118,27 @@ "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 ▼", + "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 ▼", + "SortStatusAsc": "Status ▲", + "SortStatusDesc": "Status ▼", "Remaining": { "Quota": "{{remaining}}/{{total}} requests remaining", "NextDays": "Another request will be added in {{time}} days", @@ -152,30 +147,30 @@ "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", + "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" + "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" }, - "Filter":{ - "ClearFilter":"Clear Filter", - "FilterHeaderAvailability":"Availability", - "FilterHeaderRequestStatus":"Status", - "Approved":"Approved", + "Filter": { + "ClearFilter": "Clear Filter", + "FilterHeaderAvailability": "Availability", + "FilterHeaderRequestStatus": "Status", + "Approved": "Approved", "PendingApproval": "Pending Approval" }, "UserManagment": { @@ -192,30 +187,35 @@ }, "MediaDetails": { "Denied": "Denied", - "RecommendationsTitle":"Recommendations", - "SimilarTitle":"Similar", - "VideosTitle":"Videos", + "RecommendationsTitle": "Recommendations", + "SimilarTitle": "Similar", + "VideosTitle": "Videos", "Casts": { - "CastTitle":"Cast", - "Character":"Character", - "Actor":"Actor" + "CastTitle": "Cast", + "Character": "Character", + "Actor": "Actor" }, - "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" - } + "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", + "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" } } }