);
@@ -89,26 +140,41 @@ function ArtistIndexPosterInfo(props) {
if (sortKey === 'sizeOnDisk') {
return (
-
+
{formatBytes(sizeOnDisk)}
);
}
+ if (sortKey === 'tags') {
+ return (
+
+
+
+ );
+ }
+
return null;
}
ArtistIndexPosterInfo.propTypes = {
+ artistType: PropTypes.string,
qualityProfile: PropTypes.object.isRequired,
showQualityProfile: PropTypes.bool.isRequired,
- previousAiring: PropTypes.string,
+ showNextAlbum: PropTypes.bool.isRequired,
+ nextAlbum: PropTypes.object,
+ lastAlbum: PropTypes.object,
added: PropTypes.string,
albumCount: PropTypes.number.isRequired,
path: PropTypes.string.isRequired,
sizeOnDisk: PropTypes.number,
+ tags: PropTypes.arrayOf(PropTypes.number).isRequired,
sortKey: PropTypes.string.isRequired,
showRelativeDates: PropTypes.bool.isRequired,
shortDateFormat: PropTypes.string.isRequired,
+ longDateFormat: PropTypes.string.isRequired,
timeFormat: PropTypes.string.isRequired
};
diff --git a/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js b/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js
index db54e4108..69df97c7c 100644
--- a/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js
+++ b/frontend/src/Artist/Index/Posters/ArtistIndexPosters.js
@@ -38,7 +38,8 @@ function calculateRowHeight(posterHeight, sortKey, isSmallScreen, posterOptions)
detailedProgressBar,
showTitle,
showMonitored,
- showQualityProfile
+ showQualityProfile,
+ showNextAlbum
} = posterOptions;
const nextAiringHeight = 19;
@@ -62,12 +63,19 @@ function calculateRowHeight(posterHeight, sortKey, isSmallScreen, posterOptions)
heights.push(19);
}
+ if (showNextAlbum) {
+ heights.push(19);
+ }
+
switch (sortKey) {
+ case 'artistType':
+ case 'lastAlbum':
case 'seasons':
- case 'previousAiring':
case 'added':
+ case 'albumCount':
case 'path':
case 'sizeOnDisk':
+ case 'tags':
heights.push(19);
break;
case 'qualityProfileId':
@@ -75,6 +83,11 @@ function calculateRowHeight(posterHeight, sortKey, isSmallScreen, posterOptions)
heights.push(19);
}
break;
+ case 'nextAlbum':
+ if (!showNextAlbum) {
+ heights.push(19);
+ }
+ break;
default:
// No need to add a height of 0
}
@@ -197,6 +210,7 @@ class ArtistIndexPosters extends Component {
posterOptions,
showRelativeDates,
shortDateFormat,
+ longDateFormat,
timeFormat
} = this.props;
@@ -210,7 +224,8 @@ class ArtistIndexPosters extends Component {
detailedProgressBar,
showTitle,
showMonitored,
- showQualityProfile
+ showQualityProfile,
+ showNextAlbum
} = posterOptions;
const artist = items[rowIndex * columnCount + columnIndex];
@@ -237,8 +252,10 @@ class ArtistIndexPosters extends Component {
showTitle={showTitle}
showMonitored={showMonitored}
showQualityProfile={showQualityProfile}
+ showNextAlbum={showNextAlbum}
showRelativeDates={showRelativeDates}
shortDateFormat={shortDateFormat}
+ longDateFormat={longDateFormat}
timeFormat={timeFormat}
style={style}
artistId={artist.id}
@@ -326,8 +343,9 @@ ArtistIndexPosters.propTypes = {
scroller: PropTypes.instanceOf(Element).isRequired,
showRelativeDates: PropTypes.bool.isRequired,
shortDateFormat: PropTypes.string.isRequired,
- isSmallScreen: PropTypes.bool.isRequired,
- timeFormat: PropTypes.string.isRequired
+ longDateFormat: PropTypes.string.isRequired,
+ timeFormat: PropTypes.string.isRequired,
+ isSmallScreen: PropTypes.bool.isRequired
};
export default ArtistIndexPosters;
diff --git a/frontend/src/Artist/Index/Posters/ArtistIndexPostersConnector.js b/frontend/src/Artist/Index/Posters/ArtistIndexPostersConnector.js
index c2b380389..bff8bef81 100644
--- a/frontend/src/Artist/Index/Posters/ArtistIndexPostersConnector.js
+++ b/frontend/src/Artist/Index/Posters/ArtistIndexPostersConnector.js
@@ -14,6 +14,7 @@ function createMapStateToProps() {
posterOptions,
showRelativeDates: uiSettings.showRelativeDates,
shortDateFormat: uiSettings.shortDateFormat,
+ longDateFormat: uiSettings.longDateFormat,
timeFormat: uiSettings.timeFormat,
isSmallScreen: dimensions.isSmallScreen
};
diff --git a/frontend/src/Artist/Index/Posters/Options/ArtistIndexPosterOptionsModalContent.js b/frontend/src/Artist/Index/Posters/Options/ArtistIndexPosterOptionsModalContent.js
index 58a4e7555..d0bc50baa 100644
--- a/frontend/src/Artist/Index/Posters/Options/ArtistIndexPosterOptionsModalContent.js
+++ b/frontend/src/Artist/Index/Posters/Options/ArtistIndexPosterOptionsModalContent.js
@@ -33,6 +33,7 @@ class ArtistIndexPosterOptionsModalContent extends Component {
showTitle: props.showTitle,
showMonitored: props.showMonitored,
showQualityProfile: props.showQualityProfile,
+ showNextAlbum: props.showNextAlbum,
showSearchAction: props.showSearchAction
};
}
@@ -44,6 +45,7 @@ class ArtistIndexPosterOptionsModalContent extends Component {
showTitle,
showMonitored,
showQualityProfile,
+ showNextAlbum,
showSearchAction
} = this.props;
@@ -69,6 +71,10 @@ class ArtistIndexPosterOptionsModalContent extends Component {
state.showQualityProfile = showQualityProfile;
}
+ if (showNextAlbum !== prevProps.showNextAlbum) {
+ state.showNextAlbum = showNextAlbum;
+ }
+
if (showSearchAction !== prevProps.showSearchAction) {
state.showSearchAction = showSearchAction;
}
@@ -103,6 +109,7 @@ class ArtistIndexPosterOptionsModalContent extends Component {
showTitle,
showMonitored,
showQualityProfile,
+ showNextAlbum,
showSearchAction
} = this.state;
@@ -184,6 +191,20 @@ class ArtistIndexPosterOptionsModalContent extends Component {
/>
+
+
+ {translate('ShowNextAlbum')}
+
+
+
+
+
{translate('ShowSearch')}
@@ -217,6 +238,7 @@ ArtistIndexPosterOptionsModalContent.propTypes = {
showTitle: PropTypes.bool.isRequired,
showMonitored: PropTypes.bool.isRequired,
showQualityProfile: PropTypes.bool.isRequired,
+ showNextAlbum: PropTypes.bool.isRequired,
detailedProgressBar: PropTypes.bool.isRequired,
showSearchAction: PropTypes.bool.isRequired,
onChangePosterOption: PropTypes.func.isRequired,
diff --git a/frontend/src/Store/Actions/artistActions.js b/frontend/src/Store/Actions/artistActions.js
index 23246330b..9c145e79c 100644
--- a/frontend/src/Store/Actions/artistActions.js
+++ b/frontend/src/Store/Actions/artistActions.js
@@ -89,11 +89,11 @@ export const filterPredicates = {
},
nextAlbum: function(item, filterValue, type) {
- return dateFilterPredicate(item.nextAlbum, filterValue, type);
+ return dateFilterPredicate(item.nextAlbum?.releaseDate, filterValue, type);
},
lastAlbum: function(item, filterValue, type) {
- return dateFilterPredicate(item.lastAlbum, filterValue, type);
+ return dateFilterPredicate(item.lastAlbum?.releaseDate, filterValue, type);
},
added: function(item, filterValue, type) {
diff --git a/frontend/src/Store/Actions/artistIndexActions.js b/frontend/src/Store/Actions/artistIndexActions.js
index e74a47a70..8bb523c1c 100644
--- a/frontend/src/Store/Actions/artistIndexActions.js
+++ b/frontend/src/Store/Actions/artistIndexActions.js
@@ -29,6 +29,7 @@ export const defaultState = {
showTitle: true,
showMonitored: true,
showQualityProfile: true,
+ showNextAlbum: true,
showSearchAction: false
},
diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json
index b6b202fe2..4b0b18793 100644
--- a/src/NzbDrone.Core/Localization/Core/en.json
+++ b/src/NzbDrone.Core/Localization/Core/en.json
@@ -157,6 +157,7 @@
"CopyUsingHardlinksHelpText": "Hardlinks allow Lidarr to import seeding torrents to the the series folder without taking extra disk space or copying the entire contents of the file. Hardlinks will only work if the source and destination are on the same volume",
"CopyUsingHardlinksHelpTextWarning": "Occasionally, file locks may prevent renaming files that are being seeded. You may temporarily disable seeding and use Lidarr's rename function as a work around.",
"CouldntFindAnyResultsForTerm": "Couldn't find any results for '{0}'",
+ "CountAlbums": "{0} albums",
"Country": "Country",
"CreateEmptyArtistFolders": "Create empty artist folders",
"CreateEmptyArtistFoldersHelpText": "Create missing artist folders during disk scan",
@@ -545,6 +546,7 @@
"NewAlbums": "New Albums",
"NextAlbum": "Next Album",
"NextExecution": "Next Execution",
+ "NoAlbums": "No albums",
"NoBackupsAreAvailable": "No backups are available",
"NoHistory": "No history.",
"NoLeaveIt": "No, Leave It",
@@ -584,6 +586,7 @@
"OnTrackRetagHelpText": "On Track Retag",
"OnUpgrade": "On Upgrade",
"OnUpgradeHelpText": "On Upgrade",
+ "OneAlbum": "1 album",
"OnlyTorrent": "Only Torrent",
"OnlyUsenet": "Only Usenet",
"OpenBrowserOnStart": "Open browser on start",
@@ -804,6 +807,8 @@
"ShowMonitored": "Show Monitored",
"ShowMonitoredHelpText": "Show monitored status under poster",
"ShowName": "Show Name",
+ "ShowNextAlbum": "Show Next Album",
+ "ShowNextAlbumHelpText": "Show next album under poster",
"ShowPath": "Show Path",
"ShowQualityProfile": "Show Quality Profile",
"ShowQualityProfileHelpText": "Show quality profile under poster",