From 21bd21b70cfc1baa6ab1f7ae882ec3690a5dae63 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 27 Aug 2024 01:45:13 +0300 Subject: [PATCH] New: Digital and Physical release dates for Poster options --- frontend/src/App/State/MoviesAppState.ts | 4 +- frontend/src/Movie/Details/MovieDetails.js | 2 +- .../src/Movie/Details/MovieReleaseDates.tsx | 6 ++- .../Movie/Index/Menus/MovieIndexSortMenu.tsx | 8 +-- .../Movie/Index/Posters/MovieIndexPoster.tsx | 29 +++++++++++ .../Index/Posters/MovieIndexPosterInfo.tsx | 12 ++++- .../Movie/Index/Posters/MovieIndexPosters.tsx | 18 +++++++ .../MovieIndexPosterOptionsModalContent.tsx | 52 ++++++++++++++----- .../src/Store/Actions/movieIndexActions.js | 2 + src/NzbDrone.Core/Localization/Core/en.json | 6 ++- 10 files changed, 115 insertions(+), 24 deletions(-) diff --git a/frontend/src/App/State/MoviesAppState.ts b/frontend/src/App/State/MoviesAppState.ts index 2c0904fea..24c0493bf 100644 --- a/frontend/src/App/State/MoviesAppState.ts +++ b/frontend/src/App/State/MoviesAppState.ts @@ -20,8 +20,10 @@ export interface MovieIndexAppState { showTitle: boolean; showMonitored: boolean; showQualityProfile: boolean; - showReleaseDate: boolean; showCinemaRelease: boolean; + showDigitalRelease: boolean; + showPhysicalRelease: boolean; + showReleaseDate: boolean; showTmdbRating: boolean; showImdbRating: boolean; showRottenTomatoesRating: boolean; diff --git a/frontend/src/Movie/Details/MovieDetails.js b/frontend/src/Movie/Details/MovieDetails.js index e609a0b4f..d90b190b3 100644 --- a/frontend/src/Movie/Details/MovieDetails.js +++ b/frontend/src/Movie/Details/MovieDetails.js @@ -438,8 +438,8 @@ class MovieDetails extends Component { body={ } position={tooltipPositions.BOTTOM} diff --git a/frontend/src/Movie/Details/MovieReleaseDates.tsx b/frontend/src/Movie/Details/MovieReleaseDates.tsx index 5a0144f8f..d9604358b 100644 --- a/frontend/src/Movie/Details/MovieReleaseDates.tsx +++ b/frontend/src/Movie/Details/MovieReleaseDates.tsx @@ -32,7 +32,7 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) { } return ( -
+ <> {inCinemas ? (
@@ -44,6 +44,7 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) { })}
) : null} + {digitalRelease ? (
@@ -55,6 +56,7 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) { })}
) : null} + {physicalRelease ? (
@@ -68,7 +70,7 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) { )}
) : null} -
+ ); } diff --git a/frontend/src/Movie/Index/Menus/MovieIndexSortMenu.tsx b/frontend/src/Movie/Index/Menus/MovieIndexSortMenu.tsx index 390263a6f..6c8e23df7 100644 --- a/frontend/src/Movie/Index/Menus/MovieIndexSortMenu.tsx +++ b/frontend/src/Movie/Index/Menus/MovieIndexSortMenu.tsx @@ -83,21 +83,21 @@ function MovieIndexSortMenu(props: MovieIndexSortMenuProps) { - {translate('PhysicalRelease')} + {translate('DigitalRelease')} - {translate('DigitalRelease')} + {translate('PhysicalRelease')} ) : null} + {showDigitalRelease && digitalRelease ? ( +
+ {' '} + {getRelativeDate(digitalRelease, shortDateFormat, showRelativeDates, { + timeFormat, + timeForToday: false, + })} +
+ ) : null} + + {showPhysicalRelease && physicalRelease ? ( +
+ {' '} + {getRelativeDate( + physicalRelease, + shortDateFormat, + showRelativeDates, + { + timeFormat, + timeForToday: false, + } + )} +
+ ) : null} + {showReleaseDate && releaseDate ? (
{' '} @@ -291,6 +318,8 @@ function MovieIndexPoster(props: MovieIndexPosterProps) { year={year} showQualityProfile={showQualityProfile} showCinemaRelease={showCinemaRelease} + showDigitalRelease={showDigitalRelease} + showPhysicalRelease={showPhysicalRelease} showReleaseDate={showReleaseDate} showRelativeDates={showRelativeDates} shortDateFormat={shortDateFormat} diff --git a/frontend/src/Movie/Index/Posters/MovieIndexPosterInfo.tsx b/frontend/src/Movie/Index/Posters/MovieIndexPosterInfo.tsx index 70ed4bb72..db4697924 100644 --- a/frontend/src/Movie/Index/Posters/MovieIndexPosterInfo.tsx +++ b/frontend/src/Movie/Index/Posters/MovieIndexPosterInfo.tsx @@ -34,6 +34,8 @@ interface MovieIndexPosterInfoProps { sortKey: string; showRelativeDates: boolean; showCinemaRelease: boolean; + showDigitalRelease: boolean; + showPhysicalRelease: boolean; showReleaseDate: boolean; shortDateFormat: string; longDateFormat: string; @@ -65,6 +67,8 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) { sortKey, showRelativeDates, showCinemaRelease, + showDigitalRelease, + showPhysicalRelease, showReleaseDate, shortDateFormat, longDateFormat, @@ -142,7 +146,7 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) { ); } - if (sortKey === 'digitalRelease' && digitalRelease && !showReleaseDate) { + if (sortKey === 'digitalRelease' && digitalRelease && !showDigitalRelease) { const digitalReleaseDate = getRelativeDate( digitalRelease, shortDateFormat, @@ -160,7 +164,11 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) { ); } - if (sortKey === 'physicalRelease' && physicalRelease && !showReleaseDate) { + if ( + sortKey === 'physicalRelease' && + physicalRelease && + !showPhysicalRelease + ) { const physicalReleaseDate = getRelativeDate( physicalRelease, shortDateFormat, diff --git a/frontend/src/Movie/Index/Posters/MovieIndexPosters.tsx b/frontend/src/Movie/Index/Posters/MovieIndexPosters.tsx index e8ca631fe..afa7bf07f 100644 --- a/frontend/src/Movie/Index/Posters/MovieIndexPosters.tsx +++ b/frontend/src/Movie/Index/Posters/MovieIndexPosters.tsx @@ -144,6 +144,8 @@ export default function MovieIndexPosters(props: MovieIndexPostersProps) { showMonitored, showQualityProfile, showCinemaRelease, + showDigitalRelease, + showPhysicalRelease, showReleaseDate, showTmdbRating, showImdbRating, @@ -173,6 +175,14 @@ export default function MovieIndexPosters(props: MovieIndexPostersProps) { heights.push(19); } + if (showDigitalRelease) { + heights.push(19); + } + + if (showPhysicalRelease) { + heights.push(19); + } + if (showReleaseDate) { heights.push(19); } @@ -214,7 +224,15 @@ export default function MovieIndexPosters(props: MovieIndexPostersProps) { } break; case 'digitalRelease': + if (!showDigitalRelease) { + heights.push(19); + } + break; case 'physicalRelease': + if (!showPhysicalRelease) { + heights.push(19); + } + break; case 'releaseDate': if (!showReleaseDate) { heights.push(19); diff --git a/frontend/src/Movie/Index/Posters/Options/MovieIndexPosterOptionsModalContent.tsx b/frontend/src/Movie/Index/Posters/Options/MovieIndexPosterOptionsModalContent.tsx index ff1f9e717..85d33eeae 100644 --- a/frontend/src/Movie/Index/Posters/Options/MovieIndexPosterOptionsModalContent.tsx +++ b/frontend/src/Movie/Index/Posters/Options/MovieIndexPosterOptionsModalContent.tsx @@ -9,7 +9,7 @@ import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; -import { inputTypes } from 'Helpers/Props'; +import { inputTypes, sizes } from 'Helpers/Props'; import { setMoviePosterOption } from 'Store/Actions/movieIndexActions'; import translate from 'Utilities/String/translate'; import selectPosterOptions from '../selectPosterOptions'; @@ -53,6 +53,8 @@ function MovieIndexPosterOptionsModalContent( showMonitored, showQualityProfile, showCinemaRelease, + showDigitalRelease, + showPhysicalRelease, showReleaseDate, showTmdbRating, showImdbRating, @@ -76,7 +78,7 @@ function MovieIndexPosterOptionsModalContent(
- + {translate('PosterSize')} - + {translate('DetailedProgressBar')} - + {translate('ShowTitle')} - + {translate('ShowMonitored')} - + {translate('ShowQualityProfile')} - + {translate('ShowCinemaRelease')} - + + {translate('ShowDigitalRelease')} + + + + + + {translate('ShowPhysicalRelease')} + + + + + {translate('ShowReleaseDate')} - + {translate('ShowTmdbRating')} - + {translate('ShowImdbRating')} - + {translate('ShowRottenTomatoesRating')} - + {translate('ShowTags')} - + {translate('ShowSearch')}