mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
New: Aphrodite Language Improvements
This commit is contained in:
@@ -6,7 +6,7 @@ function MovieAlternateTitles({ alternateTitles }) {
|
||||
return (
|
||||
<ul>
|
||||
{
|
||||
alternateTitles.map((alternateTitle) => {
|
||||
alternateTitles.filter((x, i, a) => a.indexOf(x) === i).map((alternateTitle) => {
|
||||
return (
|
||||
<li
|
||||
key={alternateTitle}
|
||||
|
@@ -243,7 +243,7 @@ class MovieDetails extends Component {
|
||||
collection,
|
||||
overview,
|
||||
youTubeTrailerId,
|
||||
inCinemas,
|
||||
isAvailable,
|
||||
images,
|
||||
tags,
|
||||
isSaving,
|
||||
@@ -483,7 +483,7 @@ class MovieDetails extends Component {
|
||||
<MovieStatusLabel
|
||||
hasMovieFiles={hasMovieFiles}
|
||||
monitored={monitored}
|
||||
inCinemas={inCinemas}
|
||||
isAvailable={isAvailable}
|
||||
/>
|
||||
</span>
|
||||
</InfoLabel>
|
||||
@@ -722,6 +722,7 @@ MovieDetails.propTypes = {
|
||||
studio: PropTypes.string,
|
||||
collection: PropTypes.object,
|
||||
youTubeTrailerId: PropTypes.string,
|
||||
isAvailable: PropTypes.bool.isRequired,
|
||||
inCinemas: PropTypes.string,
|
||||
overview: PropTypes.string.isRequired,
|
||||
images: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
|
@@ -1,10 +1,8 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import moment from 'moment';
|
||||
import styles from './MovieStatusLabel.css';
|
||||
|
||||
function getMovieStatus(hasFile, isMonitored, inCinemas) {
|
||||
const currentTime = moment();
|
||||
function getMovieStatus(hasFile, isMonitored, isAvailable) {
|
||||
|
||||
if (hasFile) {
|
||||
return 'Downloaded';
|
||||
@@ -14,7 +12,7 @@ function getMovieStatus(hasFile, isMonitored, inCinemas) {
|
||||
return 'Unmonitored';
|
||||
}
|
||||
|
||||
if (inCinemas.isBefore(currentTime) && !hasFile) {
|
||||
if (isAvailable && !hasFile) {
|
||||
return 'Missing';
|
||||
}
|
||||
|
||||
@@ -25,10 +23,10 @@ function MovieStatusLabel(props) {
|
||||
const {
|
||||
hasMovieFiles,
|
||||
monitored,
|
||||
inCinemas
|
||||
isAvailable
|
||||
} = props;
|
||||
|
||||
const status = getMovieStatus(hasMovieFiles, monitored, moment(inCinemas));
|
||||
const status = getMovieStatus(hasMovieFiles, monitored, isAvailable);
|
||||
|
||||
return (
|
||||
<span
|
||||
@@ -42,7 +40,7 @@ function MovieStatusLabel(props) {
|
||||
MovieStatusLabel.propTypes = {
|
||||
hasMovieFiles: PropTypes.bool.isRequired,
|
||||
monitored: PropTypes.bool.isRequired,
|
||||
inCinemas: PropTypes.string
|
||||
isAvailable: PropTypes.bool.isRequired
|
||||
};
|
||||
|
||||
MovieStatusLabel.defaultProps = {
|
||||
|
@@ -1,5 +1,6 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React, { Component } from 'react';
|
||||
import titleCase from 'Utilities/String/titleCase';
|
||||
import TableRow from 'Components/Table/TableRow';
|
||||
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||
import MovieLanguage from 'Movie/MovieLanguage';
|
||||
@@ -12,7 +13,8 @@ class MovieTitlesRow extends Component {
|
||||
render() {
|
||||
const {
|
||||
title,
|
||||
language
|
||||
language,
|
||||
sourceType
|
||||
} = this.props;
|
||||
|
||||
// TODO - Fix languages to all take arrays
|
||||
@@ -31,6 +33,10 @@ class MovieTitlesRow extends Component {
|
||||
/>
|
||||
</TableRowCell>
|
||||
|
||||
<TableRowCell>
|
||||
{titleCase(sourceType)}
|
||||
</TableRowCell>
|
||||
|
||||
</TableRow>
|
||||
);
|
||||
}
|
||||
@@ -39,7 +45,8 @@ class MovieTitlesRow extends Component {
|
||||
MovieTitlesRow.propTypes = {
|
||||
id: PropTypes.number.isRequired,
|
||||
title: PropTypes.string.isRequired,
|
||||
language: PropTypes.object.isRequired
|
||||
language: PropTypes.object.isRequired,
|
||||
sourceType: PropTypes.object.isRequired
|
||||
};
|
||||
|
||||
export default MovieTitlesRow;
|
||||
|
@@ -16,6 +16,11 @@ const columns = [
|
||||
name: 'language',
|
||||
label: 'Language',
|
||||
isVisible: true
|
||||
},
|
||||
{
|
||||
name: 'sourceType',
|
||||
label: 'Type',
|
||||
isVisible: true
|
||||
}
|
||||
];
|
||||
|
||||
|
@@ -18,11 +18,14 @@ function createMapStateToProps() {
|
||||
items
|
||||
} = languages;
|
||||
|
||||
const filterItems = ['Any', 'Unknown'];
|
||||
const filteredLanguages = items.filter((lang) => !filterItems.includes(lang.name));
|
||||
|
||||
return {
|
||||
isFetching,
|
||||
isPopulated,
|
||||
error,
|
||||
items
|
||||
items: filteredLanguages
|
||||
};
|
||||
}
|
||||
);
|
||||
|
@@ -55,6 +55,7 @@ class UISettings extends Component {
|
||||
hasSettings,
|
||||
onInputChange,
|
||||
onSavePress,
|
||||
languages,
|
||||
...otherProps
|
||||
} = this.props;
|
||||
|
||||
@@ -174,6 +175,22 @@ class UISettings extends Component {
|
||||
/>
|
||||
</FormGroup>
|
||||
</FieldSet>
|
||||
|
||||
<FieldSet
|
||||
legend="Language"
|
||||
>
|
||||
<FormGroup>
|
||||
<FormLabel>Movie Info Language</FormLabel>
|
||||
<FormInputGroup
|
||||
type={inputTypes.SELECT}
|
||||
name="movieInfoLanguage"
|
||||
values={languages}
|
||||
helpText="Language that Radarr will use to display Movie Title in UI"
|
||||
onChange={onInputChange}
|
||||
{...settings.movieInfoLanguage}
|
||||
/>
|
||||
</FormGroup>
|
||||
</FieldSet>
|
||||
</Form>
|
||||
}
|
||||
</PageContentBody>
|
||||
@@ -189,6 +206,7 @@ UISettings.propTypes = {
|
||||
settings: PropTypes.object.isRequired,
|
||||
hasSettings: PropTypes.bool.isRequired,
|
||||
onSavePress: PropTypes.func.isRequired,
|
||||
languages: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
onInputChange: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
|
@@ -9,13 +9,38 @@ import UISettings from './UISettings';
|
||||
|
||||
const SECTION = 'ui';
|
||||
|
||||
function createLanguagesSelector() {
|
||||
return createSelector(
|
||||
(state) => state.settings.languages,
|
||||
(languages) => {
|
||||
const items = languages.items;
|
||||
const filterItems = ['Any', 'Unknown'];
|
||||
|
||||
if (!items) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const newItems = items.filter((lang) => !filterItems.includes(lang.name)).map((item) => {
|
||||
return {
|
||||
key: item.id,
|
||||
value: item.name
|
||||
};
|
||||
});
|
||||
|
||||
return newItems;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createMapStateToProps() {
|
||||
return createSelector(
|
||||
(state) => state.settings.advancedSettings,
|
||||
createSettingsSectionSelector(SECTION),
|
||||
(advancedSettings, sectionSettings) => {
|
||||
createLanguagesSelector(),
|
||||
(advancedSettings, sectionSettings, languages) => {
|
||||
return {
|
||||
advancedSettings,
|
||||
languages,
|
||||
...sectionSettings
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user