New: Aphrodite Language Improvements

This commit is contained in:
Qstick
2020-05-25 21:55:10 -04:00
parent 965ed041ae
commit 10322a1867
69 changed files with 1173 additions and 288 deletions

View File

@@ -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}

View File

@@ -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,

View File

@@ -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 = {

View File

@@ -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;

View File

@@ -16,6 +16,11 @@ const columns = [
name: 'language',
label: 'Language',
isVisible: true
},
{
name: 'sourceType',
label: 'Type',
isVisible: true
}
];

View File

@@ -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
};
}
);

View File

@@ -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
};

View File

@@ -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
};
}