Remove unused frontend stuff

pull/1141/head
ta264 3 years ago
parent 7f8dc3d2b4
commit 71a34c7650

@ -27,7 +27,6 @@ class AuthorEditorRow extends Component {
status,
titleSlug,
authorName,
authorType,
monitored,
metadataProfile,
qualityProfile,
@ -62,7 +61,6 @@ class AuthorEditorRow extends Component {
return (
<AuthorStatusCell
key={name}
authorType={authorType}
monitored={monitored}
status={status}
/>
@ -137,7 +135,6 @@ AuthorEditorRow.propTypes = {
status: PropTypes.string.isRequired,
titleSlug: PropTypes.string.isRequired,
authorName: PropTypes.string.isRequired,
authorType: PropTypes.string,
monitored: PropTypes.bool.isRequired,
metadataProfile: PropTypes.object.isRequired,
qualityProfile: PropTypes.object.isRequired,

@ -18,12 +18,6 @@
flex-grow: 1;
}
.authorType {
composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css';
flex: 0 0 100px;
}
.qualityProfileId,
.metadataProfileId {
composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css';

@ -17,12 +17,6 @@
flex: 4 0 110px;
}
.authorType {
composes: cell;
flex: 0 0 100px;
}
.banner {
flex: 0 0 379px;
}

@ -28,7 +28,6 @@ function createMapStateToProps() {
return {
authorMonitored: author.monitored,
authorType: author.authorType,
isSearching
};
}

@ -1,7 +0,0 @@
.absoluteEpisodeNumber {
margin-left: 5px;
}
.warning {
margin-left: 8px;
}

@ -1,108 +0,0 @@
import PropTypes from 'prop-types';
import React from 'react';
import Icon from 'Components/Icon';
import Popover from 'Components/Tooltip/Popover';
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import SceneInfo from './SceneInfo';
import styles from './EpisodeNumber.css';
function EpisodeNumber(props) {
const {
episodeNumber,
absoluteEpisodeNumber,
sceneSeasonNumber,
sceneEpisodeNumber,
sceneAbsoluteEpisodeNumber,
unverifiedSceneNumbering,
alternateTitles,
authorType
} = props;
const hasSceneInformation = sceneSeasonNumber !== undefined ||
sceneEpisodeNumber !== undefined ||
(authorType === 'anime' && sceneAbsoluteEpisodeNumber !== undefined) ||
!!alternateTitles.length;
return (
<span>
{
hasSceneInformation ?
<Popover
anchor={
<span>
{episodeNumber}
{
authorType === 'anime' && !!absoluteEpisodeNumber &&
<span className={styles.absoluteEpisodeNumber}>
({absoluteEpisodeNumber})
</span>
}
</span>
}
title={translate('SceneInformation')}
body={
<SceneInfo
sceneSeasonNumber={sceneSeasonNumber}
sceneEpisodeNumber={sceneEpisodeNumber}
sceneAbsoluteEpisodeNumber={sceneAbsoluteEpisodeNumber}
alternateTitles={alternateTitles}
authorType={authorType}
/>
}
position={tooltipPositions.RIGHT}
/> :
<span>
{episodeNumber}
{
authorType === 'anime' && !!absoluteEpisodeNumber &&
<span className={styles.absoluteEpisodeNumber}>
({absoluteEpisodeNumber})
</span>
}
</span>
}
{
unverifiedSceneNumbering &&
<Icon
className={styles.warning}
name={icons.WARNING}
kind={kinds.WARNING}
title={translate('SceneNumberHasntBeenVerifiedYet')}
/>
}
{
authorType === 'anime' && !absoluteEpisodeNumber &&
<Icon
className={styles.warning}
name={icons.WARNING}
kind={kinds.WARNING}
title={translate('EpisodeDoesNotHaveAnAbsoluteEpisodeNumber')}
/>
}
</span>
);
}
EpisodeNumber.propTypes = {
seasonNumber: PropTypes.number.isRequired,
episodeNumber: PropTypes.number.isRequired,
absoluteEpisodeNumber: PropTypes.number,
sceneSeasonNumber: PropTypes.number,
sceneEpisodeNumber: PropTypes.number,
sceneAbsoluteEpisodeNumber: PropTypes.number,
unverifiedSceneNumbering: PropTypes.bool.isRequired,
alternateTitles: PropTypes.arrayOf(PropTypes.object).isRequired,
authorType: PropTypes.string
};
EpisodeNumber.defaultProps = {
unverifiedSceneNumbering: false,
alternateTitles: []
};
export default EpisodeNumber;

@ -1,4 +0,0 @@
.center {
display: flex;
justify-content: center;
}

@ -1,128 +0,0 @@
import PropTypes from 'prop-types';
import React from 'react';
import QueueDetails from 'Activity/Queue/QueueDetails';
import Icon from 'Components/Icon';
import ProgressBar from 'Components/ProgressBar';
import { icons, kinds, sizes } from 'Helpers/Props';
import isBefore from 'Utilities/Date/isBefore';
import translate from 'Utilities/String/translate';
import BookQuality from './BookQuality';
import styles from './EpisodeStatus.css';
function EpisodeStatus(props) {
const {
airDateUtc,
monitored,
grabbed,
queueItem,
bookFile
} = props;
const hasBookFile = !!bookFile;
const isQueued = !!queueItem;
const hasAired = isBefore(airDateUtc);
if (isQueued) {
const {
sizeleft,
size
} = queueItem;
const progress = (100 - sizeleft / size * 100);
return (
<div className={styles.center}>
<QueueDetails
{...queueItem}
progressBar={
<ProgressBar
title={translate('BookIsDownloadingInterp', [progress.toFixed(1), queueItem.title])}
progress={progress}
kind={kinds.PURPLE}
size={sizes.MEDIUM}
/>
}
/>
</div>
);
}
if (grabbed) {
return (
<div className={styles.center}>
<Icon
name={icons.DOWNLOADING}
title={translate('BookIsDownloading')}
/>
</div>
);
}
if (hasBookFile) {
const quality = bookFile.quality;
const isCutoffNotMet = bookFile.qualityCutoffNotMet;
return (
<div className={styles.center}>
<BookQuality
quality={quality}
size={bookFile.size}
isCutoffNotMet={isCutoffNotMet}
title={translate('BookDownloaded')}
/>
</div>
);
}
if (!airDateUtc) {
return (
<div className={styles.center}>
<Icon
name={icons.TBA}
title={translate('TBA')}
/>
</div>
);
}
if (!monitored) {
return (
<div className={styles.center}>
<Icon
name={icons.UNMONITORED}
title={translate('BookIsNotMonitored')}
/>
</div>
);
}
if (hasAired) {
return (
<div className={styles.center}>
<Icon
name={icons.MISSING}
title={translate('BookMissingFromDisk')}
/>
</div>
);
}
return (
<div className={styles.center}>
<Icon
name={icons.NOT_AIRED}
title={translate('BookHasNotAired')}
/>
</div>
);
}
EpisodeStatus.propTypes = {
airDateUtc: PropTypes.string,
monitored: PropTypes.bool,
grabbed: PropTypes.bool,
queueItem: PropTypes.object,
bookFile: PropTypes.object
};
export default EpisodeStatus;

@ -1,53 +0,0 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import createBookFileSelector from 'Store/Selectors/createBookFileSelector';
import createBookSelector from 'Store/Selectors/createBookSelector';
import createQueueItemSelector from 'Store/Selectors/createQueueItemSelector';
import EpisodeStatus from './EpisodeStatus';
function createMapStateToProps() {
return createSelector(
createBookSelector(),
createQueueItemSelector(),
createBookFileSelector(),
(book, queueItem, bookFile) => {
const result = _.pick(book, [
'airDateUtc',
'monitored',
'grabbed'
]);
result.queueItem = queueItem;
result.bookFile = bookFile;
return result;
}
);
}
const mapDispatchToProps = {
};
class EpisodeStatusConnector extends Component {
//
// Render
render() {
return (
<EpisodeStatus
{...this.props}
/>
);
}
}
EpisodeStatusConnector.propTypes = {
bookId: PropTypes.number.isRequired,
bookFileId: PropTypes.number.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(EpisodeStatusConnector);

@ -1,17 +0,0 @@
.descriptionList {
composes: descriptionList from '~Components/DescriptionList/DescriptionList.css';
margin-right: 10px;
}
.title {
composes: title from '~Components/DescriptionList/DescriptionListItemTitle.css';
width: 80px;
}
.description {
composes: title from '~Components/DescriptionList/DescriptionListItemDescription.css';
margin-left: 100px;
}

@ -1,84 +0,0 @@
import PropTypes from 'prop-types';
import React from 'react';
import DescriptionList from 'Components/DescriptionList/DescriptionList';
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
import translate from 'Utilities/String/translate';
import styles from './SceneInfo.css';
function SceneInfo(props) {
const {
sceneSeasonNumber,
sceneEpisodeNumber,
sceneAbsoluteEpisodeNumber,
alternateTitles,
authorType
} = props;
return (
<DescriptionList className={styles.descriptionList}>
{
sceneSeasonNumber !== undefined &&
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title={translate('Season')}
data={sceneSeasonNumber}
/>
}
{
sceneEpisodeNumber !== undefined &&
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title={translate('Episode')}
data={sceneEpisodeNumber}
/>
}
{
authorType === 'anime' && sceneAbsoluteEpisodeNumber !== undefined &&
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title={translate('Absolute')}
data={sceneAbsoluteEpisodeNumber}
/>
}
{
!!alternateTitles.length &&
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title={alternateTitles.length === 1 ? translate('AlternateTitleslength1Title') : translate('AlternateTitleslength1Titles')}
data={
<div>
{
alternateTitles.map((alternateTitle) => {
return (
<div
key={alternateTitle.title}
>
{alternateTitle.title}
</div>
);
})
}
</div>
}
/>
}
</DescriptionList>
);
}
SceneInfo.propTypes = {
sceneSeasonNumber: PropTypes.number,
sceneEpisodeNumber: PropTypes.number,
sceneAbsoluteEpisodeNumber: PropTypes.number,
alternateTitles: PropTypes.arrayOf(PropTypes.object).isRequired,
authorType: PropTypes.string
};
export default SceneInfo;

@ -1,32 +0,0 @@
import PropTypes from 'prop-types';
import React from 'react';
import EpisodeNumber from './EpisodeNumber';
function SeasonEpisodeNumber(props) {
const {
airDate,
authorType,
...otherProps
} = props;
if (authorType === 'daily' && airDate) {
return (
<span>{airDate}</span>
);
}
return (
<EpisodeNumber
seriesType={authorType}
showSeasonNumber={true}
{...otherProps}
/>
);
}
SeasonEpisodeNumber.propTypes = {
airDate: PropTypes.string,
authorType: PropTypes.string
};
export default SeasonEpisodeNumber;

@ -47,7 +47,6 @@ function createMapStateToProps() {
return {
...schema,
items: bookFiles.items,
authorType: author.authorType,
isDeleting: bookFiles.isDeleting,
isSaving: bookFiles.isSaving
};

@ -22,7 +22,6 @@ import PasswordInput from './PasswordInput';
import PathInputConnector from './PathInputConnector';
import QualityProfileSelectInputConnector from './QualityProfileSelectInputConnector';
import RootFolderSelectInputConnector from './RootFolderSelectInputConnector';
import SeriesTypeSelectInput from './SeriesTypeSelectInput';
import TagInputConnector from './TagInputConnector';
import TextInput from './TextInput';
import TextTagInputConnector from './TextTagInputConnector';
@ -85,9 +84,6 @@ function getComponent(type) {
case inputTypes.DYNAMIC_SELECT:
return EnhancedSelectInputConnector;
case inputTypes.SERIES_TYPE_SELECT:
return SeriesTypeSelectInput;
case inputTypes.TAG:
return TagInputConnector;

@ -1,53 +0,0 @@
import PropTypes from 'prop-types';
import React from 'react';
import SelectInput from './SelectInput';
const authorTypeOptions = [
{ key: 'standard', value: 'Standard' },
{ key: 'daily', value: 'Daily' },
{ key: 'anime', value: 'Anime' }
];
function SeriesTypeSelectInput(props) {
const values = [...authorTypeOptions];
const {
includeNoChange,
includeMixed
} = props;
if (includeNoChange) {
values.unshift({
key: 'noChange',
value: 'No Change',
disabled: true
});
}
if (includeMixed) {
values.unshift({
key: 'mixed',
value: '(Mixed)',
disabled: true
});
}
return (
<SelectInput
{...props}
values={values}
/>
);
}
SeriesTypeSelectInput.propTypes = {
includeNoChange: PropTypes.bool.isRequired,
includeMixed: PropTypes.bool.isRequired
};
SeriesTypeSelectInput.defaultProps = {
includeNoChange: false,
includeMixed: false
};
export default SeriesTypeSelectInput;

@ -15,7 +15,6 @@ export const BOOK_EDITION_SELECT = 'bookEditionSelect';
export const INDEXER_SELECT = 'indexerSelect';
export const ROOT_FOLDER_SELECT = 'rootFolderSelect';
export const SELECT = 'select';
export const SERIES_TYPE_SELECT = 'authorTypeSelect';
export const DYNAMIC_SELECT = 'dynamicSelect';
export const TAG = 'tag';
export const TEXT = 'text';
@ -41,7 +40,6 @@ export const all = [
ROOT_FOLDER_SELECT,
SELECT,
DYNAMIC_SELECT,
SERIES_TYPE_SELECT,
TAG,
TEXT,
TEXT_TAG,

@ -41,11 +41,6 @@ export const defaultState = {
type: filterBuilderTypes.EXACT,
valueType: filterBuilderValueTypes.AUTHOR_STATUS
},
{
name: 'authorType',
label: 'Author Type',
type: filterBuilderTypes.EXACT
},
{
name: 'qualityProfileId',
label: 'Quality Profile',

@ -5,7 +5,6 @@ function getNewAuthor(author, payload) {
monitor,
qualityProfileId,
metadataProfileId,
authorType,
tags,
searchForMissingBooks = false
} = payload;
@ -20,7 +19,6 @@ function getNewAuthor(author, payload) {
author.qualityProfileId = qualityProfileId;
author.metadataProfileId = metadataProfileId;
author.rootFolderPath = rootFolderPath;
author.authorType = authorType;
author.tags = tags;
return author;

@ -1,6 +0,0 @@
.episode,
.status {
composes: cell from '~Components/Table/Cells/TableRowCell.css';
width: 100px;
}

@ -4,17 +4,14 @@ import AuthorNameLink from 'Author/AuthorNameLink';
import bookEntities from 'Book/bookEntities';
import BookSearchCellConnector from 'Book/BookSearchCellConnector';
import BookTitleLink from 'Book/BookTitleLink';
import EpisodeStatusConnector from 'Book/EpisodeStatusConnector';
import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector';
import TableRowCell from 'Components/Table/Cells/TableRowCell';
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
import TableRow from 'Components/Table/TableRow';
import styles from './CutoffUnmetRow.css';
function CutoffUnmetRow(props) {
const {
id,
bookFileId,
author,
releaseDate,
titleSlug,
@ -80,21 +77,6 @@ function CutoffUnmetRow(props) {
);
}
if (name === 'status') {
return (
<TableRowCell
key={name}
className={styles.status}
>
<EpisodeStatusConnector
bookId={id}
bookFileId={bookFileId}
bookEntity={bookEntities.WANTED_CUTOFF_UNMET}
/>
</TableRowCell>
);
}
if (name === 'actions') {
return (
<BookSearchCellConnector

Loading…
Cancel
Save