diff --git a/frontend/src/Movie/Index/Table/MovieIndexHeader.css b/frontend/src/Movie/Index/Table/MovieIndexHeader.css
index 31aac7112..cc771c8f4 100644
--- a/frontend/src/Movie/Index/Table/MovieIndexHeader.css
+++ b/frontend/src/Movie/Index/Table/MovieIndexHeader.css
@@ -31,6 +31,7 @@
flex: 0 0 180px;
}
+.movieStatus,
.certification {
composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css';
diff --git a/frontend/src/Movie/Index/Table/MovieIndexRow.css b/frontend/src/Movie/Index/Table/MovieIndexRow.css
index a75849059..2585cd57b 100644
--- a/frontend/src/Movie/Index/Table/MovieIndexRow.css
+++ b/frontend/src/Movie/Index/Table/MovieIndexRow.css
@@ -31,6 +31,7 @@
flex: 0 0 180px;
}
+.movieStatus,
.certification {
composes: cell from '~Components/Table/Cells/VirtualTableRowCell.css';
diff --git a/frontend/src/Movie/Index/Table/MovieIndexRow.js b/frontend/src/Movie/Index/Table/MovieIndexRow.js
index 7bb10e17a..939016435 100644
--- a/frontend/src/Movie/Index/Table/MovieIndexRow.js
+++ b/frontend/src/Movie/Index/Table/MovieIndexRow.js
@@ -15,6 +15,7 @@ import MovieTitleLink from 'Movie/MovieTitleLink';
import EditMovieModalConnector from 'Movie/Edit/EditMovieModalConnector';
import DeleteMovieModal from 'Movie/Delete/DeleteMovieModal';
import MovieStatusCell from './MovieStatusCell';
+import MovieStatusConnector from 'Movie/MovieStatusConnector';
import VirtualTableSelectCell from 'Components/Table/Cells/VirtualTableSelectCell';
import styles from './MovieIndexRow.css';
@@ -226,6 +227,19 @@ class MovieIndexRow extends Component {
);
}
+ if (name === 'movieStatus') {
+ return (
+
+
+
+ );
+ }
+
if (name === 'ratings') {
return (
+
+ }
+ />
+
+ );
+ }
+
+ if (grabbed) {
+ return (
+
+
+
+ );
+ }
+
+ if (hasMovieFile) {
+ const quality = movieFile.quality;
+ const isCutoffNotMet = movieFile.qualityCutoffNotMet;
+
+ return (
+
+
+
+ );
+ }
+
+ if (!inCinemas) {
+ return (
+
+
+
+ );
+ }
+
+ if (!monitored) {
+ return (
+
+
+
+ );
+ }
+
+ if (hasAired) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+}
+
+MovieStatus.propTypes = {
+ inCinemas: PropTypes.string,
+ monitored: PropTypes.bool.isRequired,
+ grabbed: PropTypes.bool,
+ queueItem: PropTypes.object,
+ movieFile: PropTypes.object
+};
+
+export default MovieStatus;
diff --git a/frontend/src/Movie/MovieStatusConnector.js b/frontend/src/Movie/MovieStatusConnector.js
new file mode 100644
index 000000000..91e934e96
--- /dev/null
+++ b/frontend/src/Movie/MovieStatusConnector.js
@@ -0,0 +1,50 @@
+import _ from 'lodash';
+import PropTypes from 'prop-types';
+import React, { Component } from 'react';
+import { connect } from 'react-redux';
+import { createSelector } from 'reselect';
+import createMovieSelector from 'Store/Selectors/createMovieSelector';
+import createQueueItemSelector from 'Store/Selectors/createQueueItemSelector';
+import MovieStatus from './MovieStatus';
+
+function createMapStateToProps() {
+ return createSelector(
+ createMovieSelector(),
+ createQueueItemSelector(),
+ (movie, queueItem) => {
+ const result = _.pick(movie, [
+ 'inCinemas',
+ 'monitored',
+ 'grabbed'
+ ]);
+
+ result.queueItem = queueItem;
+ result.movieFile = movie.movieFile;
+
+ return result;
+ }
+ );
+}
+
+const mapDispatchToProps = {
+};
+
+class MovieStatusConnector extends Component {
+
+ //
+ // Render
+
+ render() {
+ return (
+
+ );
+ }
+}
+
+MovieStatusConnector.propTypes = {
+ movieId: PropTypes.number.isRequired
+};
+
+export default connect(createMapStateToProps, mapDispatchToProps)(MovieStatusConnector);
diff --git a/frontend/src/Store/Actions/movieIndexActions.js b/frontend/src/Store/Actions/movieIndexActions.js
index ba65b0c67..ce46d9500 100644
--- a/frontend/src/Store/Actions/movieIndexActions.js
+++ b/frontend/src/Store/Actions/movieIndexActions.js
@@ -120,6 +120,12 @@ export const defaultState = {
isSortable: false,
isVisible: false
},
+ {
+ name: 'movieStatus',
+ label: 'Status',
+ isSortable: true,
+ isVisible: true
+ },
{
name: 'ratings',
label: 'Rating',