1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-04-20 21:55:03 -04:00

Fixed: Improve sorting movies by release dates

This commit is contained in:
Bogdan
2024-08-23 03:21:19 +03:00
parent bf84471509
commit df77474314
15 changed files with 99 additions and 34 deletions
@@ -106,7 +106,7 @@ function MovieIndexSortMenu(props: MovieIndexSortMenuProps) {
sortDirection={sortDirection}
onPress={onSortSelect}
>
{translate('ReleaseDates')}
{translate('ReleaseDate')}
</SortMenuItem>
<SortMenuItem
@@ -75,6 +75,7 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
inCinemas,
physicalRelease,
digitalRelease,
releaseDate,
path,
movieFile,
ratings,
@@ -142,20 +143,6 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
height: `${posterHeight}px`,
};
let releaseDate = '';
let releaseDateType = '';
if (physicalRelease && digitalRelease) {
releaseDate =
physicalRelease < digitalRelease ? physicalRelease : digitalRelease;
releaseDateType = physicalRelease < digitalRelease ? 'Released' : 'Digital';
} else if (physicalRelease && !digitalRelease) {
releaseDate = physicalRelease;
releaseDateType = 'Released';
} else if (digitalRelease && !physicalRelease) {
releaseDate = digitalRelease;
releaseDateType = 'Digital';
}
return (
<div className={styles.content}>
<div className={styles.posterContainer} title={title}>
@@ -262,10 +249,8 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
) : null}
{showReleaseDate && releaseDate ? (
<div className={styles.title}>
<Icon
name={releaseDateType === 'Digital' ? icons.MOVIE_FILE : icons.DISC}
/>{' '}
<div className={styles.title} title={translate('ReleaseDate')}>
<Icon name={icons.CALENDAR} />{' '}
{getRelativeDate(releaseDate, shortDateFormat, showRelativeDates, {
timeFormat,
timeForToday: false,
@@ -314,6 +299,7 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
inCinemas={inCinemas}
physicalRelease={physicalRelease}
digitalRelease={digitalRelease}
releaseDate={releaseDate}
ratings={ratings}
sizeOnDisk={sizeOnDisk}
sortKey={sortKey}
@@ -23,6 +23,7 @@ interface MovieIndexPosterInfoProps {
inCinemas?: string;
digitalRelease?: string;
physicalRelease?: string;
releaseDate?: string;
path: string;
ratings: Ratings;
certification: string;
@@ -53,6 +54,7 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
inCinemas,
digitalRelease,
physicalRelease,
releaseDate,
path,
ratings,
certification,
@@ -152,7 +154,7 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
);
return (
<div className={styles.info}>
<div className={styles.info} title={translate('DigitalRelease')}>
<Icon name={icons.MOVIE_FILE} /> {digitalReleaseDate}
</div>
);
@@ -170,12 +172,24 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
);
return (
<div className={styles.info}>
<div className={styles.info} title={translate('PhysicalRelease')}>
<Icon name={icons.DISC} /> {physicalReleaseDate}
</div>
);
}
if (sortKey === 'releaseDate' && releaseDate && !showReleaseDate) {
return (
<div className={styles.info} title={translate('ReleaseDate')}>
<Icon name={icons.CALENDAR} />{' '}
{getRelativeDate(releaseDate, shortDateFormat, showRelativeDates, {
timeFormat,
timeForToday: false,
})}
</div>
);
}
if (!showTmdbRating && sortKey === 'tmdbRating' && !!ratings.tmdb) {
return (
<div className={styles.info}>
@@ -218,6 +218,7 @@ export default function MovieIndexPosters(props: MovieIndexPostersProps) {
break;
case 'digitalRelease':
case 'physicalRelease':
case 'releaseDate':
if (!showReleaseDate) {
heights.push(19);
}
@@ -42,6 +42,7 @@
.inCinemas,
.physicalRelease,
.digitalRelease,
.releaseDate,
.genres {
composes: cell;
+1
View File
@@ -20,6 +20,7 @@ interface CssExports {
'physicalRelease': string;
'popularity': string;
'qualityProfileId': string;
'releaseDate': string;
'releaseGroups': string;
'rottenTomatoesRating': string;
'runtime': string;
@@ -66,6 +66,7 @@ function MovieIndexRow(props: MovieIndexRowProps) {
inCinemas,
digitalRelease,
physicalRelease,
releaseDate,
runtime,
minimumAvailability,
path,
@@ -278,6 +279,19 @@ function MovieIndexRow(props: MovieIndexRowProps) {
);
}
if (name === 'releaseDate') {
return (
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore ts(2739)
<RelativeDateCellConnector
key={name}
className={styles[name]}
date={releaseDate}
component={VirtualTableRowCell}
/>
);
}
if (name === 'runtime') {
return (
<VirtualTableRowCell key={name} className={styles[name]}>
@@ -35,6 +35,7 @@
.inCinemas,
.physicalRelease,
.digitalRelease,
.releaseDate,
.genres {
composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css';
@@ -17,6 +17,7 @@ interface CssExports {
'physicalRelease': string;
'popularity': string;
'qualityProfileId': string;
'releaseDate': string;
'releaseGroups': string;
'rottenTomatoesRating': string;
'runtime': string;