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