diff --git a/frontend/src/Artist/Details/ArtistDetailsSeason.js b/frontend/src/Artist/Details/ArtistDetailsSeason.js
index f3d105dc0..aeeaf6529 100644
--- a/frontend/src/Artist/Details/ArtistDetailsSeason.js
+++ b/frontend/src/Artist/Details/ArtistDetailsSeason.js
@@ -1,7 +1,6 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
-import isAfter from 'Utilities/Date/isAfter';
import getToggledRange from 'Utilities/Table/getToggledRange';
import { icons, sortDirections } from 'Helpers/Props';
import Icon from 'Components/Icon';
@@ -51,13 +50,16 @@ class ArtistDetailsSeason extends Component {
const {
name,
onExpandPress,
- items
+ items,
+ uiSettings
} = this.props;
- const expand = _.some(items, (item) => {
- return isAfter(item.releaseDate) ||
- isAfter(item.releaseDate, { days: -365 });
- });
+ const expand = _.some(items, (item) =>
+ ((item.albumType === 'Album') && uiSettings.expandAlbumByDefault) ||
+ ((item.albumType === 'Single') && uiSettings.expandSingleByDefault) ||
+ ((item.albumType === 'EP') && uiSettings.expandEPByDefault) ||
+ ((item.albumType === 'Broadcast') && uiSettings.expandBroadcastByDefault) ||
+ ((item.albumType === 'Other') && uiSettings.expandOtherByDefault));
onExpandPress(name, expand);
}
@@ -199,7 +201,7 @@ class ArtistDetailsSeason extends Component {
:
- No albums in this group
+ No releases in this group
}
@@ -243,7 +245,8 @@ ArtistDetailsSeason.propTypes = {
onTableOptionChange: PropTypes.func.isRequired,
onExpandPress: PropTypes.func.isRequired,
onSortPress: PropTypes.func.isRequired,
- onMonitorAlbumPress: PropTypes.func.isRequired
+ onMonitorAlbumPress: PropTypes.func.isRequired,
+ uiSettings: PropTypes.object.isRequired
};
export default ArtistDetailsSeason;
diff --git a/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js b/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js
index 21e25a67d..ffb84ba2c 100644
--- a/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js
+++ b/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js
@@ -8,6 +8,7 @@ import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
import createArtistSelector from 'Store/Selectors/createArtistSelector';
import createCommandsSelector from 'Store/Selectors/createCommandsSelector';
import createClientSideCollectionSelector from 'Store/Selectors/createClientSideCollectionSelector';
+import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
import { toggleAlbumsMonitored, setAlbumsTableOption, setAlbumsSort } from 'Store/Actions/albumActions';
import { executeCommand } from 'Store/Actions/commandActions';
import ArtistDetailsSeason from './ArtistDetailsSeason';
@@ -19,7 +20,8 @@ function createMapStateToProps() {
createArtistSelector(),
createCommandsSelector(),
createDimensionsSelector(),
- (label, albums, artist, commands, dimensions) => {
+ createUISettingsSelector(),
+ (label, albums, artist, commands, dimensions, uiSettings) => {
const albumsInGroup = _.filter(albums.items, { albumType: label });
@@ -37,7 +39,8 @@ function createMapStateToProps() {
sortKey: albums.sortKey,
sortDirection: albums.sortDirection,
artistMonitored: artist.monitored,
- isSmallScreen: dimensions.isSmallScreen
+ isSmallScreen: dimensions.isSmallScreen,
+ uiSettings
};
}
);
diff --git a/frontend/src/Settings/UI/UISettings.css b/frontend/src/Settings/UI/UISettings.css
new file mode 100644
index 000000000..2e6213823
--- /dev/null
+++ b/frontend/src/Settings/UI/UISettings.css
@@ -0,0 +1,3 @@
+.columnGroup {
+ flex-direction: column;
+}
diff --git a/frontend/src/Settings/UI/UISettings.js b/frontend/src/Settings/UI/UISettings.js
index 71356a5f0..dc249487c 100644
--- a/frontend/src/Settings/UI/UISettings.js
+++ b/frontend/src/Settings/UI/UISettings.js
@@ -10,6 +10,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup';
+import styles from './UISettings.css';
export const firstDayOfWeekOptions = [
{ key: 0, value: 'Sunday' },
@@ -173,6 +174,51 @@ class UISettings extends Component {
{...settings.enableColorImpairedMode}
/>
+
+
+ Expand Items by Default
+
+
+
+
+
+
+
+
+
+
+
+
}
diff --git a/src/Lidarr.Api.V1/Config/UiConfigResource.cs b/src/Lidarr.Api.V1/Config/UiConfigResource.cs
index 6f66a1166..e04ab7c6a 100644
--- a/src/Lidarr.Api.V1/Config/UiConfigResource.cs
+++ b/src/Lidarr.Api.V1/Config/UiConfigResource.cs
@@ -16,6 +16,12 @@ namespace Lidarr.Api.V1.Config
public bool ShowRelativeDates { get; set; }
public bool EnableColorImpairedMode { get; set; }
+
+ public bool ExpandAlbumByDefault { get; set; }
+ public bool ExpandSingleByDefault { get; set; }
+ public bool ExpandEPByDefault { get; set; }
+ public bool ExpandBroadcastByDefault { get; set; }
+ public bool ExpandOtherByDefault { get; set; }
}
public static class UiConfigResourceMapper
@@ -33,6 +39,12 @@ namespace Lidarr.Api.V1.Config
ShowRelativeDates = model.ShowRelativeDates,
EnableColorImpairedMode = model.EnableColorImpairedMode,
+
+ ExpandAlbumByDefault = model.ExpandAlbumByDefault,
+ ExpandSingleByDefault = model.ExpandSingleByDefault,
+ ExpandEPByDefault = model.ExpandEPByDefault,
+ ExpandBroadcastByDefault = model.ExpandBroadcastByDefault,
+ ExpandOtherByDefault = model.ExpandOtherByDefault
};
}
}
diff --git a/src/NzbDrone.Core/Configuration/ConfigService.cs b/src/NzbDrone.Core/Configuration/ConfigService.cs
index e446f2f0a..be5765be4 100644
--- a/src/NzbDrone.Core/Configuration/ConfigService.cs
+++ b/src/NzbDrone.Core/Configuration/ConfigService.cs
@@ -314,6 +314,41 @@ namespace NzbDrone.Core.Configuration
set { SetValue("EnableColorImpairedMode", value); }
}
+ public bool ExpandAlbumByDefault
+ {
+ get { return GetValueBoolean("ExpandAlbumByDefault", false); }
+
+ set { SetValue("ExpandAlbumByDefault", value); }
+ }
+
+ public bool ExpandEPByDefault
+ {
+ get { return GetValueBoolean("ExpandEPByDefault", false); }
+
+ set { SetValue("ExpandEPByDefault", value); }
+ }
+
+ public bool ExpandSingleByDefault
+ {
+ get { return GetValueBoolean("ExpandSingleByDefault", false); }
+
+ set { SetValue("ExpandSingleByDefault", value); }
+ }
+
+ public bool ExpandBroadcastByDefault
+ {
+ get { return GetValueBoolean("ExpandBroadcastByDefault", false); }
+
+ set { SetValue("ExpandBroadcastByDefault", value); }
+ }
+
+ public bool ExpandOtherByDefault
+ {
+ get { return GetValueBoolean("ExpandOtherByDefault", false); }
+
+ set { SetValue("ExpandOtherByDefault", value); }
+ }
+
public bool CleanupMetadataImages
{
get { return GetValueBoolean("CleanupMetadataImages", true); }
diff --git a/src/NzbDrone.Core/Configuration/IConfigService.cs b/src/NzbDrone.Core/Configuration/IConfigService.cs
index f23d226db..3ba61b2ad 100644
--- a/src/NzbDrone.Core/Configuration/IConfigService.cs
+++ b/src/NzbDrone.Core/Configuration/IConfigService.cs
@@ -57,6 +57,12 @@ namespace NzbDrone.Core.Configuration
string TimeFormat { get; set; }
bool ShowRelativeDates { get; set; }
bool EnableColorImpairedMode { get; set; }
+
+ bool ExpandAlbumByDefault { get; set; }
+ bool ExpandSingleByDefault { get; set; }
+ bool ExpandEPByDefault { get; set; }
+ bool ExpandBroadcastByDefault { get; set; }
+ bool ExpandOtherByDefault { get; set; }
//Internal
bool CleanupMetadataImages { get; set; }