diff --git a/frontend/src/AddSeries/AddNewSeries/AddNewSeriesSearchResult.js b/frontend/src/AddSeries/AddNewSeries/AddNewSeriesSearchResult.js index 815447ca8..2efb480bc 100644 --- a/frontend/src/AddSeries/AddNewSeries/AddNewSeriesSearchResult.js +++ b/frontend/src/AddSeries/AddNewSeries/AddNewSeriesSearchResult.js @@ -145,6 +145,7 @@ class AddNewSeriesSearchResult extends Component { diff --git a/frontend/src/Components/HeartRating.js b/frontend/src/Components/HeartRating.js index fe53a4e5f..01744b143 100644 --- a/frontend/src/Components/HeartRating.js +++ b/frontend/src/Components/HeartRating.js @@ -1,29 +1,40 @@ import PropTypes from 'prop-types'; import React from 'react'; import Icon from 'Components/Icon'; -import { icons } from 'Helpers/Props'; +import Tooltip from 'Components/Tooltip/Tooltip'; +import { icons, kinds, tooltipPositions } from 'Helpers/Props'; +import translate from 'Utilities/String/translate'; import styles from './HeartRating.css'; -function HeartRating({ rating, iconSize }) { +function HeartRating({ rating, votes, iconSize }) { return ( - - + + - {rating * 10}% - + {rating * 10}% + + } + tooltip={translate('CountVotes', { votes })} + kind={kinds.INVERSE} + position={tooltipPositions.TOP} + /> ); } HeartRating.propTypes = { rating: PropTypes.number.isRequired, + votes: PropTypes.number.isRequired, iconSize: PropTypes.number.isRequired }; HeartRating.defaultProps = { + votes: 0, iconSize: 14 }; diff --git a/frontend/src/Series/Details/SeriesDetails.js b/frontend/src/Series/Details/SeriesDetails.js index c2fb80b8d..babc171f4 100644 --- a/frontend/src/Series/Details/SeriesDetails.js +++ b/frontend/src/Series/Details/SeriesDetails.js @@ -412,10 +412,12 @@ class SeriesDetails extends Component { ratings.value ? : null } + diff --git a/frontend/src/Series/Index/Table/SeriesIndexRow.tsx b/frontend/src/Series/Index/Table/SeriesIndexRow.tsx index 92d273c37..887776427 100644 --- a/frontend/src/Series/Index/Table/SeriesIndexRow.tsx +++ b/frontend/src/Series/Index/Table/SeriesIndexRow.tsx @@ -401,7 +401,7 @@ function SeriesIndexRow(props: SeriesIndexRowProps) { if (name === 'ratings') { return ( - + ); } diff --git a/frontend/src/Store/Actions/seriesActions.js b/frontend/src/Store/Actions/seriesActions.js index 54524ba38..b25a78220 100644 --- a/frontend/src/Store/Actions/seriesActions.js +++ b/frontend/src/Store/Actions/seriesActions.js @@ -128,8 +128,16 @@ export const filterPredicates = { ratings: function(item, filterValue, type) { const predicate = filterTypePredicates[type]; + const { value = 0 } = item.ratings; - return predicate(item.ratings.value * 10, filterValue); + return predicate(value * 10, filterValue); + }, + + ratingVotes: function(item, filterValue, type) { + const predicate = filterTypePredicates[type]; + const { votes = 0 } = item.ratings; + + return predicate(votes, filterValue); }, originalLanguage: function(item, filterValue, type) { @@ -347,6 +355,11 @@ export const filterBuilderProps = [ label: () => translate('Rating'), type: filterBuilderTypes.NUMBER }, + { + name: 'ratingVotes', + label: () => translate('RatingVotes'), + type: filterBuilderTypes.NUMBER + }, { name: 'certification', label: () => translate('Certification'), diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index aeb1d0a09..6c3f0edad 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -265,6 +265,7 @@ "CountSelectedFile": "{selectedCount} selected file", "CountSelectedFiles": "{selectedCount} selected files", "CountSeriesSelected": "{count} series selected", + "CountVotes": "{votes} votes", "CreateEmptySeriesFolders": "Create Empty Series Folders", "CreateEmptySeriesFoldersHelpText": "Create missing series folders during disk scan", "CreateGroup": "Create Group", @@ -1585,6 +1586,7 @@ "QuickSearch": "Quick Search", "Range": "Range", "Rating": "Rating", + "RatingVotes": "Rating Votes", "ReadTheWikiForMoreInformation": "Read the Wiki for more information", "Real": "Real", "Reason": "Reason",