New: Use absolute timestamps for series and episode history
This commit is contained in:
parent
c81ae65461
commit
23839d6e13
|
@ -66,6 +66,8 @@ class EpisodeHistory extends Component {
|
||||||
isPopulated,
|
isPopulated,
|
||||||
error,
|
error,
|
||||||
items,
|
items,
|
||||||
|
timeFormat,
|
||||||
|
shortDateFormat,
|
||||||
onMarkAsFailedPress
|
onMarkAsFailedPress
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
|
@ -101,6 +103,8 @@ class EpisodeHistory extends Component {
|
||||||
<EpisodeHistoryRow
|
<EpisodeHistoryRow
|
||||||
key={item.id}
|
key={item.id}
|
||||||
{...item}
|
{...item}
|
||||||
|
timeFormat={timeFormat}
|
||||||
|
shortDateFormat={shortDateFormat}
|
||||||
onMarkAsFailedPress={onMarkAsFailedPress}
|
onMarkAsFailedPress={onMarkAsFailedPress}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
@ -120,6 +124,8 @@ EpisodeHistory.propTypes = {
|
||||||
isPopulated: PropTypes.bool.isRequired,
|
isPopulated: PropTypes.bool.isRequired,
|
||||||
error: PropTypes.object,
|
error: PropTypes.object,
|
||||||
items: PropTypes.arrayOf(PropTypes.object).isRequired,
|
items: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||||
|
timeFormat: PropTypes.string.isRequired,
|
||||||
|
shortDateFormat: PropTypes.string.isRequired,
|
||||||
onMarkAsFailedPress: PropTypes.func.isRequired
|
onMarkAsFailedPress: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,13 +3,19 @@ import React, { Component } from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import { clearEpisodeHistory, episodeHistoryMarkAsFailed, fetchEpisodeHistory } from 'Store/Actions/episodeHistoryActions';
|
import { clearEpisodeHistory, episodeHistoryMarkAsFailed, fetchEpisodeHistory } from 'Store/Actions/episodeHistoryActions';
|
||||||
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import EpisodeHistory from './EpisodeHistory';
|
import EpisodeHistory from './EpisodeHistory';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
(state) => state.episodeHistory,
|
(state) => state.episodeHistory,
|
||||||
(episodeHistory) => {
|
createUISettingsSelector(),
|
||||||
return episodeHistory;
|
(episodeHistory, uiSettings) => {
|
||||||
|
return {
|
||||||
|
...episodeHistory,
|
||||||
|
timeFormat: uiSettings.timeFormat,
|
||||||
|
shortDateFormat: uiSettings.shortDateFormat
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import HistoryEventTypeCell from 'Activity/History/HistoryEventTypeCell';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
||||||
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
import TableRow from 'Components/Table/TableRow';
|
import TableRow from 'Components/Table/TableRow';
|
||||||
import Popover from 'Components/Tooltip/Popover';
|
import Popover from 'Components/Tooltip/Popover';
|
||||||
|
@ -13,6 +12,7 @@ import EpisodeFormats from 'Episode/EpisodeFormats';
|
||||||
import EpisodeLanguages from 'Episode/EpisodeLanguages';
|
import EpisodeLanguages from 'Episode/EpisodeLanguages';
|
||||||
import EpisodeQuality from 'Episode/EpisodeQuality';
|
import EpisodeQuality from 'Episode/EpisodeQuality';
|
||||||
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
||||||
|
import formatDateTime from 'Utilities/Date/formatDateTime';
|
||||||
import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore';
|
import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore';
|
||||||
import translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
import styles from './EpisodeHistoryRow.css';
|
import styles from './EpisodeHistoryRow.css';
|
||||||
|
@ -72,7 +72,9 @@ class EpisodeHistoryRow extends Component {
|
||||||
customFormatScore,
|
customFormatScore,
|
||||||
date,
|
date,
|
||||||
data,
|
data,
|
||||||
downloadId
|
downloadId,
|
||||||
|
timeFormat,
|
||||||
|
shortDateFormat
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -109,9 +111,9 @@ class EpisodeHistoryRow extends Component {
|
||||||
{formatCustomFormatScore(customFormatScore, customFormats.length)}
|
{formatCustomFormatScore(customFormatScore, customFormats.length)}
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
|
|
||||||
<RelativeDateCellConnector
|
<TableRowCell>
|
||||||
date={date}
|
{formatDateTime(date, shortDateFormat, timeFormat, { includeSeconds: true })}
|
||||||
/>
|
</TableRowCell>
|
||||||
|
|
||||||
<TableRowCell className={styles.actions}>
|
<TableRowCell className={styles.actions}>
|
||||||
<Popover
|
<Popover
|
||||||
|
@ -169,6 +171,8 @@ EpisodeHistoryRow.propTypes = {
|
||||||
date: PropTypes.string.isRequired,
|
date: PropTypes.string.isRequired,
|
||||||
data: PropTypes.object.isRequired,
|
data: PropTypes.object.isRequired,
|
||||||
downloadId: PropTypes.string,
|
downloadId: PropTypes.string,
|
||||||
|
timeFormat: PropTypes.string.isRequired,
|
||||||
|
shortDateFormat: PropTypes.string.isRequired,
|
||||||
onMarkAsFailedPress: PropTypes.func.isRequired
|
onMarkAsFailedPress: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ function SeriesHistoryModal(props) {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
size={sizes.EXTRA_LARGE}
|
size={sizes.EXTRA_EXTRA_LARGE}
|
||||||
onModalClose={onModalClose}
|
onModalClose={onModalClose}
|
||||||
>
|
>
|
||||||
<SeriesHistoryModalContentConnector
|
<SeriesHistoryModalContentConnector
|
||||||
|
|
|
@ -5,7 +5,6 @@ import HistoryEventTypeCell from 'Activity/History/HistoryEventTypeCell';
|
||||||
import Icon from 'Components/Icon';
|
import Icon from 'Components/Icon';
|
||||||
import IconButton from 'Components/Link/IconButton';
|
import IconButton from 'Components/Link/IconButton';
|
||||||
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
import ConfirmModal from 'Components/Modal/ConfirmModal';
|
||||||
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
|
|
||||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||||
import TableRow from 'Components/Table/TableRow';
|
import TableRow from 'Components/Table/TableRow';
|
||||||
import Popover from 'Components/Tooltip/Popover';
|
import Popover from 'Components/Tooltip/Popover';
|
||||||
|
@ -15,6 +14,7 @@ import EpisodeNumber from 'Episode/EpisodeNumber';
|
||||||
import EpisodeQuality from 'Episode/EpisodeQuality';
|
import EpisodeQuality from 'Episode/EpisodeQuality';
|
||||||
import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber';
|
import SeasonEpisodeNumber from 'Episode/SeasonEpisodeNumber';
|
||||||
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
|
||||||
|
import formatDateTime from 'Utilities/Date/formatDateTime';
|
||||||
import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore';
|
import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore';
|
||||||
import translate from 'Utilities/String/translate';
|
import translate from 'Utilities/String/translate';
|
||||||
import styles from './SeriesHistoryRow.css';
|
import styles from './SeriesHistoryRow.css';
|
||||||
|
@ -77,7 +77,9 @@ class SeriesHistoryRow extends Component {
|
||||||
fullSeries,
|
fullSeries,
|
||||||
series,
|
series,
|
||||||
episode,
|
episode,
|
||||||
customFormatScore
|
customFormatScore,
|
||||||
|
timeFormat,
|
||||||
|
shortDateFormat
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -129,9 +131,9 @@ class SeriesHistoryRow extends Component {
|
||||||
{formatCustomFormatScore(customFormatScore, customFormats.length)}
|
{formatCustomFormatScore(customFormatScore, customFormats.length)}
|
||||||
</TableRowCell>
|
</TableRowCell>
|
||||||
|
|
||||||
<RelativeDateCellConnector
|
<TableRowCell>
|
||||||
date={date}
|
{formatDateTime(date, shortDateFormat, timeFormat, { includeSeconds: true })}
|
||||||
/>
|
</TableRowCell>
|
||||||
|
|
||||||
<TableRowCell className={styles.actions}>
|
<TableRowCell className={styles.actions}>
|
||||||
<Popover
|
<Popover
|
||||||
|
@ -192,6 +194,8 @@ SeriesHistoryRow.propTypes = {
|
||||||
series: PropTypes.object.isRequired,
|
series: PropTypes.object.isRequired,
|
||||||
episode: PropTypes.object.isRequired,
|
episode: PropTypes.object.isRequired,
|
||||||
customFormatScore: PropTypes.number.isRequired,
|
customFormatScore: PropTypes.number.isRequired,
|
||||||
|
timeFormat: PropTypes.string.isRequired,
|
||||||
|
shortDateFormat: PropTypes.string.isRequired,
|
||||||
onMarkAsFailedPress: PropTypes.func.isRequired
|
onMarkAsFailedPress: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,20 @@ import { createSelector } from 'reselect';
|
||||||
import { fetchHistory, markAsFailed } from 'Store/Actions/historyActions';
|
import { fetchHistory, markAsFailed } from 'Store/Actions/historyActions';
|
||||||
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
|
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
|
||||||
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
|
||||||
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
import SeriesHistoryRow from './SeriesHistoryRow';
|
import SeriesHistoryRow from './SeriesHistoryRow';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
createSeriesSelector(),
|
createSeriesSelector(),
|
||||||
createEpisodeSelector(),
|
createEpisodeSelector(),
|
||||||
(series, episode) => {
|
createUISettingsSelector(),
|
||||||
|
(series, episode, uiSettings) => {
|
||||||
return {
|
return {
|
||||||
series,
|
series,
|
||||||
episode
|
episode,
|
||||||
|
timeFormat: uiSettings.timeFormat,
|
||||||
|
shortDateFormat: uiSettings.shortDateFormat
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue