mirror of
https://github.com/Radarr/Radarr
synced 2025-12-06 16:32:36 +01:00
Display long date tooltips for release dates
This commit is contained in:
parent
68dfa55b35
commit
c43bd77dae
4 changed files with 101 additions and 28 deletions
|
|
@ -422,14 +422,15 @@ class MovieDetails extends Component {
|
||||||
<div className={styles.details}>
|
<div className={styles.details}>
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
!!certification &&
|
certification ?
|
||||||
<span className={styles.certification}>
|
<span className={styles.certification}>
|
||||||
{certification}
|
{certification}
|
||||||
</span>
|
</span> :
|
||||||
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
year > 0 &&
|
year > 0 ?
|
||||||
<span className={styles.year}>
|
<span className={styles.year}>
|
||||||
<Popover
|
<Popover
|
||||||
anchor={
|
anchor={
|
||||||
|
|
@ -445,14 +446,16 @@ class MovieDetails extends Component {
|
||||||
}
|
}
|
||||||
position={tooltipPositions.BOTTOM}
|
position={tooltipPositions.BOTTOM}
|
||||||
/>
|
/>
|
||||||
</span>
|
</span> :
|
||||||
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
!!runtime &&
|
runtime ?
|
||||||
<span className={styles.runtime}>
|
<span className={styles.runtime}>
|
||||||
{formatRuntime(runtime, movieRuntimeFormat)}
|
{formatRuntime(runtime, movieRuntimeFormat)}
|
||||||
</span>
|
</span> :
|
||||||
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,25 @@ import React from 'react';
|
||||||
import { useSelector } from 'react-redux';
|
import { useSelector } from 'react-redux';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import { icons } from 'Helpers/Props';
|
import { icons } from 'Helpers/Props';
|
||||||
|
import Movie from 'Movie/Movie';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
|
import formatDate from 'Utilities/Date/formatDate';
|
||||||
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
||||||
import translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
import styles from './MovieReleaseDates.css';
|
import styles from './MovieReleaseDates.css';
|
||||||
|
|
||||||
interface MovieReleaseDatesProps {
|
type MovieReleaseDatesProps = Pick<
|
||||||
inCinemas?: string;
|
Movie,
|
||||||
digitalRelease?: string;
|
'inCinemas' | 'digitalRelease' | 'physicalRelease'
|
||||||
physicalRelease?: string;
|
>;
|
||||||
}
|
|
||||||
|
|
||||||
function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
function MovieReleaseDates({
|
||||||
const { inCinemas, digitalRelease, physicalRelease } = props;
|
inCinemas,
|
||||||
|
digitalRelease,
|
||||||
const { showRelativeDates, shortDateFormat, timeFormat } = useSelector(
|
physicalRelease,
|
||||||
createUISettingsSelector()
|
}: MovieReleaseDatesProps) {
|
||||||
);
|
const { showRelativeDates, shortDateFormat, longDateFormat, timeFormat } =
|
||||||
|
useSelector(createUISettingsSelector());
|
||||||
|
|
||||||
if (!inCinemas && !physicalRelease && !digitalRelease) {
|
if (!inCinemas && !physicalRelease && !digitalRelease) {
|
||||||
return (
|
return (
|
||||||
|
|
@ -34,10 +36,16 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{inCinemas ? (
|
{inCinemas ? (
|
||||||
<div title={translate('InCinemas')}>
|
<div
|
||||||
|
title={`${translate('InCinemas')}: ${formatDate(
|
||||||
|
inCinemas,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<div className={styles.dateIcon}>
|
<div className={styles.dateIcon}>
|
||||||
<Icon name={icons.IN_CINEMAS} />
|
<Icon name={icons.IN_CINEMAS} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: inCinemas,
|
date: inCinemas,
|
||||||
shortDateFormat,
|
shortDateFormat,
|
||||||
|
|
@ -49,10 +57,16 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{digitalRelease ? (
|
{digitalRelease ? (
|
||||||
<div title={translate('DigitalRelease')}>
|
<div
|
||||||
|
title={`${translate('DigitalRelease')}: ${formatDate(
|
||||||
|
digitalRelease,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<div className={styles.dateIcon}>
|
<div className={styles.dateIcon}>
|
||||||
<Icon name={icons.MOVIE_FILE} />
|
<Icon name={icons.MOVIE_FILE} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: digitalRelease,
|
date: digitalRelease,
|
||||||
shortDateFormat,
|
shortDateFormat,
|
||||||
|
|
@ -64,10 +78,16 @@ function MovieReleaseDates(props: MovieReleaseDatesProps) {
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{physicalRelease ? (
|
{physicalRelease ? (
|
||||||
<div title={translate('PhysicalRelease')}>
|
<div
|
||||||
|
title={`${translate('PhysicalRelease')}: ${formatDate(
|
||||||
|
physicalRelease,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<div className={styles.dateIcon}>
|
<div className={styles.dateIcon}>
|
||||||
<Icon name={icons.DISC} />
|
<Icon name={icons.DISC} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: physicalRelease,
|
date: physicalRelease,
|
||||||
shortDateFormat,
|
shortDateFormat,
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import { Statistics } from 'Movie/Movie';
|
||||||
import MoviePoster from 'Movie/MoviePoster';
|
import MoviePoster from 'Movie/MoviePoster';
|
||||||
import { executeCommand } from 'Store/Actions/commandActions';
|
import { executeCommand } from 'Store/Actions/commandActions';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
|
import formatDate from 'Utilities/Date/formatDate';
|
||||||
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
||||||
import translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
import createMovieIndexItemSelector from '../createMovieIndexItemSelector';
|
import createMovieIndexItemSelector from '../createMovieIndexItemSelector';
|
||||||
|
|
@ -243,7 +244,13 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{showCinemaRelease && inCinemas ? (
|
{showCinemaRelease && inCinemas ? (
|
||||||
<div className={styles.title} title={translate('InCinemas')}>
|
<div
|
||||||
|
className={styles.title}
|
||||||
|
title={`${translate('InCinemas')}: ${formatDate(
|
||||||
|
inCinemas,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.IN_CINEMAS} />{' '}
|
<Icon name={icons.IN_CINEMAS} />{' '}
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: inCinemas,
|
date: inCinemas,
|
||||||
|
|
@ -256,7 +263,13 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{showDigitalRelease && digitalRelease ? (
|
{showDigitalRelease && digitalRelease ? (
|
||||||
<div className={styles.title} title={translate('DigitalRelease')}>
|
<div
|
||||||
|
className={styles.title}
|
||||||
|
title={`${translate('DigitalRelease')}: ${formatDate(
|
||||||
|
digitalRelease,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.MOVIE_FILE} />{' '}
|
<Icon name={icons.MOVIE_FILE} />{' '}
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: digitalRelease,
|
date: digitalRelease,
|
||||||
|
|
@ -269,7 +282,13 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{showPhysicalRelease && physicalRelease ? (
|
{showPhysicalRelease && physicalRelease ? (
|
||||||
<div className={styles.title} title={translate('PhysicalRelease')}>
|
<div
|
||||||
|
className={styles.title}
|
||||||
|
title={`${translate('PhysicalRelease')}: ${formatDate(
|
||||||
|
physicalRelease,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.DISC} />{' '}
|
<Icon name={icons.DISC} />{' '}
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: physicalRelease,
|
date: physicalRelease,
|
||||||
|
|
@ -282,7 +301,13 @@ function MovieIndexPoster(props: MovieIndexPosterProps) {
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{showReleaseDate && releaseDate ? (
|
{showReleaseDate && releaseDate ? (
|
||||||
<div className={styles.title} title={translate('ReleaseDate')}>
|
<div
|
||||||
|
className={styles.title}
|
||||||
|
title={`${translate('ReleaseDate')}: ${formatDate(
|
||||||
|
releaseDate,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.CALENDAR} />{' '}
|
<Icon name={icons.CALENDAR} />{' '}
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: releaseDate,
|
date: releaseDate,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import { icons } from 'Helpers/Props';
|
||||||
import Language from 'Language/Language';
|
import Language from 'Language/Language';
|
||||||
import { Ratings } from 'Movie/Movie';
|
import { Ratings } from 'Movie/Movie';
|
||||||
import QualityProfile from 'typings/QualityProfile';
|
import QualityProfile from 'typings/QualityProfile';
|
||||||
|
import formatDate from 'Utilities/Date/formatDate';
|
||||||
import formatDateTime from 'Utilities/Date/formatDateTime';
|
import formatDateTime from 'Utilities/Date/formatDateTime';
|
||||||
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
import getRelativeDate from 'Utilities/Date/getRelativeDate';
|
||||||
import formatBytes from 'Utilities/Number/formatBytes';
|
import formatBytes from 'Utilities/Number/formatBytes';
|
||||||
|
|
@ -139,7 +140,13 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.info} title={translate('InCinemas')}>
|
<div
|
||||||
|
className={styles.info}
|
||||||
|
title={`${translate('InCinemas')}: ${formatDate(
|
||||||
|
inCinemas,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.IN_CINEMAS} /> {inCinemasDate}
|
<Icon name={icons.IN_CINEMAS} /> {inCinemasDate}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -155,7 +162,13 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.info} title={translate('DigitalRelease')}>
|
<div
|
||||||
|
className={styles.info}
|
||||||
|
title={`${translate('DigitalRelease')}: ${formatDate(
|
||||||
|
digitalRelease,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.MOVIE_FILE} /> {digitalReleaseDate}
|
<Icon name={icons.MOVIE_FILE} /> {digitalReleaseDate}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -175,7 +188,13 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.info} title={translate('PhysicalRelease')}>
|
<div
|
||||||
|
className={styles.info}
|
||||||
|
title={`${translate('PhysicalRelease')}: ${formatDate(
|
||||||
|
physicalRelease,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.DISC} /> {physicalReleaseDate}
|
<Icon name={icons.DISC} /> {physicalReleaseDate}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -183,7 +202,13 @@ function MovieIndexPosterInfo(props: MovieIndexPosterInfoProps) {
|
||||||
|
|
||||||
if (sortKey === 'releaseDate' && releaseDate && !showReleaseDate) {
|
if (sortKey === 'releaseDate' && releaseDate && !showReleaseDate) {
|
||||||
return (
|
return (
|
||||||
<div className={styles.info} title={translate('ReleaseDate')}>
|
<div
|
||||||
|
className={styles.info}
|
||||||
|
title={`${translate('ReleaseDate')}: ${formatDate(
|
||||||
|
releaseDate,
|
||||||
|
longDateFormat
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
<Icon name={icons.CALENDAR} />{' '}
|
<Icon name={icons.CALENDAR} />{' '}
|
||||||
{getRelativeDate({
|
{getRelativeDate({
|
||||||
date: releaseDate,
|
date: releaseDate,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue