New: More translations for columns
This commit is contained in:
parent
cda9cf726a
commit
aee8579d18
|
@ -206,9 +206,11 @@ class FilterBuilderRow extends Component {
|
||||||
const selectedFilterBuilderProp = this.selectedFilterBuilderProp;
|
const selectedFilterBuilderProp = this.selectedFilterBuilderProp;
|
||||||
|
|
||||||
const keyOptions = filterBuilderProps.map((availablePropFilter) => {
|
const keyOptions = filterBuilderProps.map((availablePropFilter) => {
|
||||||
|
const { name, label } = availablePropFilter;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
key: availablePropFilter.name,
|
key: name,
|
||||||
value: availablePropFilter.label
|
value: typeof label === 'function' ? label() : label
|
||||||
};
|
};
|
||||||
}).sort((a, b) => a.value.localeCompare(b.value));
|
}).sort((a, b) => a.value.localeCompare(b.value));
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ class SelectInput extends Component {
|
||||||
value={key}
|
value={key}
|
||||||
{...otherOptionProps}
|
{...otherOptionProps}
|
||||||
>
|
>
|
||||||
{optionValue}
|
{typeof optionValue === 'function' ? optionValue() : optionValue}
|
||||||
</option>
|
</option>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
@ -75,7 +75,7 @@ SelectInput.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
disabledClassName: PropTypes.string,
|
disabledClassName: PropTypes.string,
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired,
|
||||||
values: PropTypes.arrayOf(PropTypes.object).isRequired,
|
values: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||||
isDisabled: PropTypes.bool,
|
isDisabled: PropTypes.bool,
|
||||||
hasError: PropTypes.bool,
|
hasError: PropTypes.bool,
|
||||||
|
|
|
@ -32,7 +32,7 @@ class FilterMenuContent extends Component {
|
||||||
selectedFilterKey={selectedFilterKey}
|
selectedFilterKey={selectedFilterKey}
|
||||||
onPress={onFilterSelect}
|
onPress={onFilterSelect}
|
||||||
>
|
>
|
||||||
{filter.label}
|
{typeof filter.label === 'function' ? filter.label() : filter.label}
|
||||||
</FilterMenuItem>
|
</FilterMenuItem>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
type PropertyFunction<T> = () => T;
|
||||||
|
|
||||||
interface Column {
|
interface Column {
|
||||||
name: string;
|
name: string;
|
||||||
label: string | React.ReactNode;
|
label: string | PropertyFunction<string> | React.ReactNode;
|
||||||
columnLabel?: string;
|
columnLabel?: string;
|
||||||
isSortable?: boolean;
|
isSortable?: boolean;
|
||||||
isVisible: boolean;
|
isVisible: boolean;
|
||||||
|
|
|
@ -107,7 +107,7 @@ function Table(props) {
|
||||||
{...getTableHeaderCellProps(otherProps)}
|
{...getTableHeaderCellProps(otherProps)}
|
||||||
{...column}
|
{...column}
|
||||||
>
|
>
|
||||||
{column.label}
|
{typeof column.label === 'function' ? column.label() : column.label}
|
||||||
</TableHeaderCell>
|
</TableHeaderCell>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|
|
@ -30,6 +30,7 @@ class TableHeaderCell extends Component {
|
||||||
const {
|
const {
|
||||||
className,
|
className,
|
||||||
name,
|
name,
|
||||||
|
label,
|
||||||
columnLabel,
|
columnLabel,
|
||||||
isSortable,
|
isSortable,
|
||||||
isVisible,
|
isVisible,
|
||||||
|
@ -53,7 +54,8 @@ class TableHeaderCell extends Component {
|
||||||
{...otherProps}
|
{...otherProps}
|
||||||
component="th"
|
component="th"
|
||||||
className={className}
|
className={className}
|
||||||
title={columnLabel}
|
label={typeof label === 'function' ? label() : label}
|
||||||
|
title={typeof columnLabel === 'function' ? columnLabel() : columnLabel}
|
||||||
onPress={this.onPress}
|
onPress={this.onPress}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
@ -77,7 +79,8 @@ class TableHeaderCell extends Component {
|
||||||
TableHeaderCell.propTypes = {
|
TableHeaderCell.propTypes = {
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
columnLabel: PropTypes.string,
|
label: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.node]),
|
||||||
|
columnLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
|
||||||
isSortable: PropTypes.bool,
|
isSortable: PropTypes.bool,
|
||||||
isVisible: PropTypes.bool,
|
isVisible: PropTypes.bool,
|
||||||
isModifiable: PropTypes.bool,
|
isModifiable: PropTypes.bool,
|
||||||
|
|
|
@ -35,7 +35,7 @@ function TableOptionsColumn(props) {
|
||||||
isDisabled={isModifiable === false}
|
isDisabled={isModifiable === false}
|
||||||
onChange={onVisibleChange}
|
onChange={onVisibleChange}
|
||||||
/>
|
/>
|
||||||
{label}
|
{typeof label === 'function' ? label() : label}
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -56,7 +56,7 @@ function TableOptionsColumn(props) {
|
||||||
|
|
||||||
TableOptionsColumn.propTypes = {
|
TableOptionsColumn.propTypes = {
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,
|
||||||
isVisible: PropTypes.bool.isRequired,
|
isVisible: PropTypes.bool.isRequired,
|
||||||
isModifiable: PropTypes.bool.isRequired,
|
isModifiable: PropTypes.bool.isRequired,
|
||||||
index: PropTypes.number.isRequired,
|
index: PropTypes.number.isRequired,
|
||||||
|
|
|
@ -112,7 +112,7 @@ class TableOptionsColumnDragSource extends Component {
|
||||||
|
|
||||||
<TableOptionsColumn
|
<TableOptionsColumn
|
||||||
name={name}
|
name={name}
|
||||||
label={label}
|
label={typeof label === 'function' ? label() : label}
|
||||||
isVisible={isVisible}
|
isVisible={isVisible}
|
||||||
isModifiable={isModifiable}
|
isModifiable={isModifiable}
|
||||||
index={index}
|
index={index}
|
||||||
|
@ -138,7 +138,7 @@ class TableOptionsColumnDragSource extends Component {
|
||||||
|
|
||||||
TableOptionsColumnDragSource.propTypes = {
|
TableOptionsColumnDragSource.propTypes = {
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,
|
||||||
isVisible: PropTypes.bool.isRequired,
|
isVisible: PropTypes.bool.isRequired,
|
||||||
isModifiable: PropTypes.bool.isRequired,
|
isModifiable: PropTypes.bool.isRequired,
|
||||||
index: PropTypes.number.isRequired,
|
index: PropTypes.number.isRequired,
|
||||||
|
|
|
@ -110,7 +110,7 @@ function SeriesIndexTableHeader(props: SeriesIndexTableHeaderProps) {
|
||||||
isSortable={isSortable}
|
isSortable={isSortable}
|
||||||
onSortPress={onSortPress}
|
onSortPress={onSortPress}
|
||||||
>
|
>
|
||||||
{label}
|
{typeof label === 'function' ? label() : label}
|
||||||
</VirtualTableHeaderCell>
|
</VirtualTableHeaderCell>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { sortDirections } from 'Helpers/Props';
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import { set, updateItem } from './baseActions';
|
import { set, updateItem } from './baseActions';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createRemoveItemHandler from './Creators/createRemoveItemHandler';
|
import createRemoveItemHandler from './Creators/createRemoveItemHandler';
|
||||||
|
@ -32,47 +33,47 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'series.sortTitle',
|
name: 'series.sortTitle',
|
||||||
label: 'Series Title',
|
label: () => translate('SeriesTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sourceTitle',
|
name: 'sourceTitle',
|
||||||
label: 'Source Title',
|
label: () => translate('SourceTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languages',
|
name: 'languages',
|
||||||
label: 'Languages',
|
label: () => translate('Languages'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'quality',
|
name: 'quality',
|
||||||
label: 'Quality',
|
label: () => translate('Quality'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormats',
|
name: 'customFormats',
|
||||||
label: 'Formats',
|
label: () => translate('Formats'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'date',
|
name: 'date',
|
||||||
label: 'Date',
|
label: () => translate('Date'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'indexer',
|
name: 'indexer',
|
||||||
label: 'Indexer',
|
label: () => translate('Indexer'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { filterBuilderTypes, filterBuilderValueTypes, filterTypes } from 'Helper
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import findSelectedFilters from 'Utilities/Filter/findSelectedFilters';
|
import findSelectedFilters from 'Utilities/Filter/findSelectedFilters';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import { set, update } from './baseActions';
|
import { set, update } from './baseActions';
|
||||||
import { executeCommandHelper } from './commandActions';
|
import { executeCommandHelper } from './commandActions';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
|
@ -56,7 +57,7 @@ export const defaultState = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'all',
|
key: 'all',
|
||||||
label: 'All',
|
label: () => translate('All'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'unmonitored',
|
key: 'unmonitored',
|
||||||
|
@ -67,7 +68,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
label: 'Monitored Only',
|
label: () => translate('MonitoredOnly'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'unmonitored',
|
key: 'unmonitored',
|
||||||
|
@ -81,13 +82,13 @@ export const defaultState = {
|
||||||
filterBuilderProps: [
|
filterBuilderProps: [
|
||||||
{
|
{
|
||||||
name: 'unmonitored',
|
name: 'unmonitored',
|
||||||
label: 'Include Unmonitored',
|
label: () => translate('IncludeUnmonitored'),
|
||||||
type: filterBuilderTypes.EQUAL,
|
type: filterBuilderTypes.EQUAL,
|
||||||
valueType: filterBuilderValueTypes.BOOL
|
valueType: filterBuilderValueTypes.BOOL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'tags',
|
name: 'tags',
|
||||||
label: 'Tags',
|
label: () => translate('Tags'),
|
||||||
type: filterBuilderTypes.CONTAINS,
|
type: filterBuilderTypes.CONTAINS,
|
||||||
valueType: filterBuilderValueTypes.TAG
|
valueType: filterBuilderValueTypes.TAG
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'monitored',
|
name: 'monitored',
|
||||||
columnLabel: 'Monitored',
|
columnLabel: () => translate('Monitored'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
|
@ -44,94 +44,91 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'title',
|
name: 'title',
|
||||||
label: 'Title',
|
label: () => translate('Title'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'path',
|
name: 'path',
|
||||||
label: 'Path',
|
label: () => translate('Path'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'relativePath',
|
name: 'relativePath',
|
||||||
label: 'Relative Path',
|
label: () => translate('RelativePath'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'airDateUtc',
|
name: 'airDateUtc',
|
||||||
label: 'Air Date',
|
label: () => translate('AirDate'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'runtime',
|
name: 'runtime',
|
||||||
label: 'Runtime',
|
label: () => translate('Runtime'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languages',
|
name: 'languages',
|
||||||
label: 'Languages',
|
label: () => translate('Languages'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'audioInfo',
|
name: 'audioInfo',
|
||||||
label: 'Audio Info',
|
label: () => translate('AudioInfo'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'videoCodec',
|
name: 'videoCodec',
|
||||||
label: 'Video Codec',
|
label: () => translate('VideoCodec'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'videoDynamicRangeType',
|
name: 'videoDynamicRangeType',
|
||||||
label: 'Video Dynamic Range',
|
label: () => translate('VideoDynamicRange'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'audioLanguages',
|
name: 'audioLanguages',
|
||||||
label: 'Audio Languages',
|
label: () => translate('AudioLanguages'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'subtitleLanguages',
|
name: 'subtitleLanguages',
|
||||||
label: 'Subtitle Languages',
|
label: () => translate('SubtitleLanguages'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'size',
|
name: 'size',
|
||||||
label: 'Size',
|
label: () => translate('Size'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'releaseGroup',
|
name: 'releaseGroup',
|
||||||
label: 'Release Group',
|
label: () => translate('ReleaseGroup'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormats',
|
name: 'customFormats',
|
||||||
label: 'Formats',
|
label: () => translate('Formats'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormatScore',
|
name: 'customFormatScore',
|
||||||
get columnLabel() {
|
columnLabel: () => translate('CustomFormatScore'),
|
||||||
return translate('CustomFormatScore');
|
|
||||||
},
|
|
||||||
label: React.createElement(Icon, {
|
label: React.createElement(Icon, {
|
||||||
name: icons.SCORE,
|
name: icons.SCORE,
|
||||||
title: () => translate('CustomFormatScore')
|
title: () => translate('CustomFormatScore')
|
||||||
|
|
||||||
}),
|
}),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'status',
|
name: 'status',
|
||||||
label: 'Status',
|
label: () => translate('Status'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { filterTypes, icons, sortDirections } from 'Helpers/Props';
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import { updateItem } from './baseActions';
|
import { updateItem } from './baseActions';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
|
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
|
||||||
|
@ -31,80 +32,80 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'eventType',
|
name: 'eventType',
|
||||||
columnLabel: 'Event Type',
|
columnLabel: () => translate('EventType'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'series.sortTitle',
|
name: 'series.sortTitle',
|
||||||
label: 'Series',
|
label: () => translate('Series'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episode',
|
name: 'episode',
|
||||||
label: 'Episode',
|
label: () => translate('Episode'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.title',
|
name: 'episodes.title',
|
||||||
label: 'Episode Title',
|
label: () => translate('EpisodeTitle'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languages',
|
name: 'languages',
|
||||||
label: 'Languages',
|
label: () => translate('Languages'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'quality',
|
name: 'quality',
|
||||||
label: 'Quality',
|
label: () => translate('Quality'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormats',
|
name: 'customFormats',
|
||||||
label: 'Formats',
|
label: () => translate('Formats'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'date',
|
name: 'date',
|
||||||
label: 'Date',
|
label: () => translate('Date'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'downloadClient',
|
name: 'downloadClient',
|
||||||
label: 'Download Client',
|
label: () => translate('DownloadClient'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'indexer',
|
name: 'indexer',
|
||||||
label: 'Indexer',
|
label: () => translate('Indexer'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'releaseGroup',
|
name: 'releaseGroup',
|
||||||
label: 'Release Group',
|
label: () => translate('ReleaseGroup'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sourceTitle',
|
name: 'sourceTitle',
|
||||||
label: 'Source Title',
|
label: () => translate('SourceTitle'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormatScore',
|
name: 'customFormatScore',
|
||||||
columnLabel: 'Custom Format Score',
|
columnLabel: () => translate('CustomFormatScore'),
|
||||||
label: React.createElement(Icon, {
|
label: React.createElement(Icon, {
|
||||||
name: icons.SCORE,
|
name: icons.SCORE,
|
||||||
title: 'Custom format score'
|
title: () => translate('CustomFormatScore')
|
||||||
}),
|
}),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'details',
|
name: 'details',
|
||||||
columnLabel: 'Details',
|
columnLabel: () => translate('Details'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
@ -115,12 +116,12 @@ export const defaultState = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'all',
|
key: 'all',
|
||||||
label: 'All',
|
label: () => translate('All'),
|
||||||
filters: []
|
filters: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'grabbed',
|
key: 'grabbed',
|
||||||
label: 'Grabbed',
|
label: () => translate('Grabbed'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'eventType',
|
key: 'eventType',
|
||||||
|
@ -131,7 +132,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'imported',
|
key: 'imported',
|
||||||
label: 'Imported',
|
label: () => translate('Imported'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'eventType',
|
key: 'eventType',
|
||||||
|
@ -142,7 +143,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'failed',
|
key: 'failed',
|
||||||
label: 'Failed',
|
label: () => translate('Failed'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'eventType',
|
key: 'eventType',
|
||||||
|
@ -153,7 +154,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'deleted',
|
key: 'deleted',
|
||||||
label: 'Deleted',
|
label: () => translate('Deleted'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'eventType',
|
key: 'eventType',
|
||||||
|
@ -164,7 +165,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'renamed',
|
key: 'renamed',
|
||||||
label: 'Renamed',
|
label: () => translate('Renamed'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'eventType',
|
key: 'eventType',
|
||||||
|
@ -175,7 +176,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'ignored',
|
key: 'ignored',
|
||||||
label: 'Ignored',
|
label: () => translate('Ignored'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'eventType',
|
key: 'eventType',
|
||||||
|
|
|
@ -7,6 +7,7 @@ import { icons, sortDirections } from 'Helpers/Props';
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import { set, updateItem } from './baseActions';
|
import { set, updateItem } from './baseActions';
|
||||||
import createFetchHandler from './Creators/createFetchHandler';
|
import createFetchHandler from './Creators/createFetchHandler';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
|
@ -59,113 +60,113 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'status',
|
name: 'status',
|
||||||
columnLabel: 'Status',
|
columnLabel: () => translate('Status'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'series.sortTitle',
|
name: 'series.sortTitle',
|
||||||
label: 'Series',
|
label: () => translate('Series'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episode',
|
name: 'episode',
|
||||||
label: 'Episode',
|
label: () => translate('Episode'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.title',
|
name: 'episodes.title',
|
||||||
label: 'Episode Title',
|
label: () => translate('EpisodeTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.airDateUtc',
|
name: 'episodes.airDateUtc',
|
||||||
label: 'Episode Air Date',
|
label: () => translate('EpisodeAirDate'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languages',
|
name: 'languages',
|
||||||
label: 'Languages',
|
label: () => translate('Languages'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'quality',
|
name: 'quality',
|
||||||
label: 'Quality',
|
label: () => translate('Quality'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormats',
|
name: 'customFormats',
|
||||||
label: 'Formats',
|
label: () => translate('Formats'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormatScore',
|
name: 'customFormatScore',
|
||||||
columnLabel: 'Custom Format Score',
|
columnLabel: () => translate('CustomFormatScore'),
|
||||||
label: React.createElement(Icon, {
|
label: React.createElement(Icon, {
|
||||||
name: icons.SCORE,
|
name: icons.SCORE,
|
||||||
title: 'Custom format score'
|
title: () => translate('CustomFormatScore')
|
||||||
}),
|
}),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'protocol',
|
name: 'protocol',
|
||||||
label: 'Protocol',
|
label: () => translate('Protocol'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'indexer',
|
name: 'indexer',
|
||||||
label: 'Indexer',
|
label: () => translate('Indexer'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'downloadClient',
|
name: 'downloadClient',
|
||||||
label: 'Download Client',
|
label: () => translate('DownloadClient'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'title',
|
name: 'title',
|
||||||
label: 'Release Title',
|
label: () => translate('ReleaseTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'size',
|
name: 'size',
|
||||||
label: 'Size',
|
label: () => translate('Size'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisibile: false
|
isVisibile: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'outputPath',
|
name: 'outputPath',
|
||||||
label: 'Output Path',
|
label: () => translate('OutputPath'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'estimatedCompletionTime',
|
name: 'estimatedCompletionTime',
|
||||||
label: 'Time Left',
|
label: () => translate('TimeLeft'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'progress',
|
name: 'progress',
|
||||||
label: 'Progress',
|
label: () => translate('Progress'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ import { filterBuilderTypes, filterBuilderValueTypes, filterTypePredicates, filt
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import sortByName from 'Utilities/Array/sortByName';
|
import sortByName from 'Utilities/Array/sortByName';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import createFetchHandler from './Creators/createFetchHandler';
|
import createFetchHandler from './Creators/createFetchHandler';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer';
|
import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer';
|
||||||
|
@ -62,12 +63,12 @@ export const defaultState = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'all',
|
key: 'all',
|
||||||
label: 'All',
|
label: () => translate('All'),
|
||||||
filters: []
|
filters: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'season-pack',
|
key: 'season-pack',
|
||||||
label: 'Season Pack',
|
label: () => translate('SeasonPack'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'fullSeason',
|
key: 'fullSeason',
|
||||||
|
@ -78,7 +79,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'not-season-pack',
|
key: 'not-season-pack',
|
||||||
label: 'Not Season Pack',
|
label: () => translate('NotSeasonPack'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'fullSeason',
|
key: 'fullSeason',
|
||||||
|
@ -173,51 +174,51 @@ export const defaultState = {
|
||||||
filterBuilderProps: [
|
filterBuilderProps: [
|
||||||
{
|
{
|
||||||
name: 'title',
|
name: 'title',
|
||||||
label: 'Title',
|
label: () => translate('Title'),
|
||||||
type: filterBuilderTypes.STRING
|
type: filterBuilderTypes.STRING
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'age',
|
name: 'age',
|
||||||
label: 'Age',
|
label: () => translate('Age'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'protocol',
|
name: 'protocol',
|
||||||
label: 'Protocol',
|
label: () => translate('Protocol'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.PROTOCOL
|
valueType: filterBuilderValueTypes.PROTOCOL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'indexerId',
|
name: 'indexerId',
|
||||||
label: 'Indexer',
|
label: () => translate('Indexer'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.INDEXER
|
valueType: filterBuilderValueTypes.INDEXER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'size',
|
name: 'size',
|
||||||
label: 'Size',
|
label: () => translate('Size'),
|
||||||
type: filterBuilderTypes.NUMBER,
|
type: filterBuilderTypes.NUMBER,
|
||||||
valueType: filterBuilderValueTypes.BYTES
|
valueType: filterBuilderValueTypes.BYTES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'seeders',
|
name: 'seeders',
|
||||||
label: 'Seeders',
|
label: () => translate('Seeders'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'peers',
|
name: 'peers',
|
||||||
label: 'Peers',
|
label: () => translate('Peers'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'quality',
|
name: 'quality',
|
||||||
label: 'Quality',
|
label: () => translate('Quality'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.QUALITY
|
valueType: filterBuilderValueTypes.QUALITY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languages',
|
name: 'languages',
|
||||||
label: 'Languages',
|
label: () => translate('Languages'),
|
||||||
type: filterBuilderTypes.ARRAY,
|
type: filterBuilderTypes.ARRAY,
|
||||||
optionsSelector: function(items) {
|
optionsSelector: function(items) {
|
||||||
const genreList = items.reduce((acc, release) => {
|
const genreList = items.reduce((acc, release) => {
|
||||||
|
@ -236,17 +237,17 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'customFormatScore',
|
name: 'customFormatScore',
|
||||||
label: 'Custom Format Score',
|
label: () => translate('CustomFormatScore'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'rejectionCount',
|
name: 'rejectionCount',
|
||||||
label: 'Rejection Count',
|
label: () => translate('RejectionCount'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'fullSeason',
|
name: 'fullSeason',
|
||||||
label: 'Season Pack',
|
label: () => translate('SeasonPack'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.BOOL
|
valueType: filterBuilderValueTypes.BOOL
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import sortByName from 'Utilities/Array/sortByName';
|
import sortByName from 'Utilities/Array/sortByName';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import dateFilterPredicate from 'Utilities/Date/dateFilterPredicate';
|
import dateFilterPredicate from 'Utilities/Date/dateFilterPredicate';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import { set, updateItem } from './baseActions';
|
import { set, updateItem } from './baseActions';
|
||||||
import createFetchHandler from './Creators/createFetchHandler';
|
import createFetchHandler from './Creators/createFetchHandler';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
|
@ -29,12 +30,12 @@ export const section = 'series';
|
||||||
export const filters = [
|
export const filters = [
|
||||||
{
|
{
|
||||||
key: 'all',
|
key: 'all',
|
||||||
label: 'All',
|
label: () => translate('All'),
|
||||||
filters: []
|
filters: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
label: 'Monitored Only',
|
label: () => translate('MonitoredOnly'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
|
@ -45,7 +46,7 @@ export const filters = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'unmonitored',
|
key: 'unmonitored',
|
||||||
label: 'Unmonitored Only',
|
label: () => translate('UnmonitoredOnly'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
|
@ -56,7 +57,7 @@ export const filters = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'continuing',
|
key: 'continuing',
|
||||||
label: 'Continuing Only',
|
label: () => translate('ContinuingOnly'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'status',
|
key: 'status',
|
||||||
|
@ -67,7 +68,7 @@ export const filters = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'ended',
|
key: 'ended',
|
||||||
label: 'Ended Only',
|
label: () => translate('EndedOnly'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'status',
|
key: 'status',
|
||||||
|
@ -78,7 +79,7 @@ export const filters = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'missing',
|
key: 'missing',
|
||||||
label: 'Missing Episodes',
|
label: () => translate('MissingEpisodes'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'missing',
|
key: 'missing',
|
||||||
|
@ -194,25 +195,25 @@ export const filterPredicates = {
|
||||||
export const filterBuilderProps = [
|
export const filterBuilderProps = [
|
||||||
{
|
{
|
||||||
name: 'monitored',
|
name: 'monitored',
|
||||||
label: 'Monitored',
|
label: () => translate('Monitored'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.BOOL
|
valueType: filterBuilderValueTypes.BOOL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'status',
|
name: 'status',
|
||||||
label: 'Status',
|
label: () => translate('Status'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.SERIES_STATUS
|
valueType: filterBuilderValueTypes.SERIES_STATUS
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'seriesType',
|
name: 'seriesType',
|
||||||
label: 'Type',
|
label: () => translate('Type'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.SERIES_TYPES
|
valueType: filterBuilderValueTypes.SERIES_TYPES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'network',
|
name: 'network',
|
||||||
label: 'Network',
|
label: () => translate('Network'),
|
||||||
type: filterBuilderTypes.STRING,
|
type: filterBuilderTypes.STRING,
|
||||||
optionsSelector: function(items) {
|
optionsSelector: function(items) {
|
||||||
const tagList = items.reduce((acc, series) => {
|
const tagList = items.reduce((acc, series) => {
|
||||||
|
@ -231,57 +232,57 @@ export const filterBuilderProps = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'qualityProfileId',
|
name: 'qualityProfileId',
|
||||||
label: 'Quality Profile',
|
label: () => translate('QualityProfile'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
valueType: filterBuilderValueTypes.QUALITY_PROFILE
|
valueType: filterBuilderValueTypes.QUALITY_PROFILE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'nextAiring',
|
name: 'nextAiring',
|
||||||
label: 'Next Airing',
|
label: () => translate('NextAiring'),
|
||||||
type: filterBuilderTypes.DATE,
|
type: filterBuilderTypes.DATE,
|
||||||
valueType: filterBuilderValueTypes.DATE
|
valueType: filterBuilderValueTypes.DATE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'previousAiring',
|
name: 'previousAiring',
|
||||||
label: 'Previous Airing',
|
label: () => translate('PreviousAiring'),
|
||||||
type: filterBuilderTypes.DATE,
|
type: filterBuilderTypes.DATE,
|
||||||
valueType: filterBuilderValueTypes.DATE
|
valueType: filterBuilderValueTypes.DATE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'added',
|
name: 'added',
|
||||||
label: 'Added',
|
label: () => translate('Added'),
|
||||||
type: filterBuilderTypes.DATE,
|
type: filterBuilderTypes.DATE,
|
||||||
valueType: filterBuilderValueTypes.DATE
|
valueType: filterBuilderValueTypes.DATE
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'seasonCount',
|
name: 'seasonCount',
|
||||||
label: 'Season Count',
|
label: () => translate('SeasonCount'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodeProgress',
|
name: 'episodeProgress',
|
||||||
label: 'Episode Progress',
|
label: () => translate('EpisodeProgress'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'path',
|
name: 'path',
|
||||||
label: 'Path',
|
label: () => translate('Path'),
|
||||||
type: filterBuilderTypes.STRING
|
type: filterBuilderTypes.STRING
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'rootFolderPath',
|
name: 'rootFolderPath',
|
||||||
label: 'Root Folder Path',
|
label: () => translate('RootFolderPath'),
|
||||||
type: filterBuilderTypes.EXACT
|
type: filterBuilderTypes.EXACT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sizeOnDisk',
|
name: 'sizeOnDisk',
|
||||||
label: 'Size on Disk',
|
label: () => translate('SizeOnDisk'),
|
||||||
type: filterBuilderTypes.NUMBER,
|
type: filterBuilderTypes.NUMBER,
|
||||||
valueType: filterBuilderValueTypes.BYTES
|
valueType: filterBuilderValueTypes.BYTES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'genres',
|
name: 'genres',
|
||||||
label: 'Genres',
|
label: () => translate('Genres'),
|
||||||
type: filterBuilderTypes.ARRAY,
|
type: filterBuilderTypes.ARRAY,
|
||||||
optionsSelector: function(items) {
|
optionsSelector: function(items) {
|
||||||
const tagList = items.reduce((acc, series) => {
|
const tagList = items.reduce((acc, series) => {
|
||||||
|
@ -300,7 +301,7 @@ export const filterBuilderProps = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'originalLanguage',
|
name: 'originalLanguage',
|
||||||
label: 'Original Language',
|
label: () => translate('OriginalLanguage'),
|
||||||
type: filterBuilderTypes.EXACT,
|
type: filterBuilderTypes.EXACT,
|
||||||
optionsSelector: function(items) {
|
optionsSelector: function(items) {
|
||||||
const languageList = items.reduce((acc, series) => {
|
const languageList = items.reduce((acc, series) => {
|
||||||
|
@ -319,33 +320,33 @@ export const filterBuilderProps = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'releaseGroups',
|
name: 'releaseGroups',
|
||||||
label: 'Release Groups',
|
label: () => translate('ReleaseGroups'),
|
||||||
type: filterBuilderTypes.ARRAY
|
type: filterBuilderTypes.ARRAY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ratings',
|
name: 'ratings',
|
||||||
label: 'Rating',
|
label: () => translate('Rating'),
|
||||||
type: filterBuilderTypes.NUMBER
|
type: filterBuilderTypes.NUMBER
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'certification',
|
name: 'certification',
|
||||||
label: 'Certification',
|
label: () => translate('Certification'),
|
||||||
type: filterBuilderTypes.EXACT
|
type: filterBuilderTypes.EXACT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'tags',
|
name: 'tags',
|
||||||
label: 'Tags',
|
label: () => translate('Tags'),
|
||||||
type: filterBuilderTypes.ARRAY,
|
type: filterBuilderTypes.ARRAY,
|
||||||
valueType: filterBuilderValueTypes.TAG
|
valueType: filterBuilderValueTypes.TAG
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'useSceneNumbering',
|
name: 'useSceneNumbering',
|
||||||
label: 'Scene Numbering',
|
label: () => translate('SceneNumbering'),
|
||||||
type: filterBuilderTypes.EXACT
|
type: filterBuilderTypes.EXACT
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'hasMissingSeason',
|
name: 'hasMissingSeason',
|
||||||
label: 'Has Missing Season',
|
label: () => translate('HasMissingSeason'),
|
||||||
type: filterBuilderTypes.EXACT
|
type: filterBuilderTypes.EXACT
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import { createAction } from 'redux-actions';
|
import { createAction } from 'redux-actions';
|
||||||
import { sortDirections } from 'Helpers/Props';
|
import { sortDirections } from 'Helpers/Props';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer';
|
import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer';
|
||||||
import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer';
|
import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer';
|
||||||
|
@ -53,147 +54,147 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'status',
|
name: 'status',
|
||||||
columnLabel: 'Status',
|
columnLabel: () => translate('Status'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sortTitle',
|
name: 'sortTitle',
|
||||||
label: 'Series Title',
|
label: () => translate('SeriesTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'seriesType',
|
name: 'seriesType',
|
||||||
label: 'Type',
|
label: () => translate('Type'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'network',
|
name: 'network',
|
||||||
label: 'Network',
|
label: () => translate('Network'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'qualityProfileId',
|
name: 'qualityProfileId',
|
||||||
label: 'Quality Profile',
|
label: () => translate('QualityProfile'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'nextAiring',
|
name: 'nextAiring',
|
||||||
label: 'Next Airing',
|
label: () => translate('NextAiring'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'previousAiring',
|
name: 'previousAiring',
|
||||||
label: 'Previous Airing',
|
label: () => translate('PreviousAiring'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'originalLanguage',
|
name: 'originalLanguage',
|
||||||
label: 'Original Language',
|
label: () => translate('OriginalLanguage'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'added',
|
name: 'added',
|
||||||
label: 'Added',
|
label: () => translate('Added'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'seasonCount',
|
name: 'seasonCount',
|
||||||
label: 'Seasons',
|
label: () => translate('Seasons'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'seasonFolder',
|
name: 'seasonFolder',
|
||||||
label: 'Season Folder',
|
label: () => translate('SeasonFolder'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodeProgress',
|
name: 'episodeProgress',
|
||||||
label: 'Episodes',
|
label: () => translate('Episodes'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodeCount',
|
name: 'episodeCount',
|
||||||
label: 'Episode Count',
|
label: () => translate('EpisodeCount'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'latestSeason',
|
name: 'latestSeason',
|
||||||
label: 'Latest Season',
|
label: () => translate('LatestSeason'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'year',
|
name: 'year',
|
||||||
label: 'Year',
|
label: () => translate('Year'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'path',
|
name: 'path',
|
||||||
label: 'Path',
|
label: () => translate('Path'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sizeOnDisk',
|
name: 'sizeOnDisk',
|
||||||
label: 'Size on Disk',
|
label: () => translate('SizeOnDisk'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'genres',
|
name: 'genres',
|
||||||
label: 'Genres',
|
label: () => translate('Genres'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ratings',
|
name: 'ratings',
|
||||||
label: 'Rating',
|
label: () => translate('Rating'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'certification',
|
name: 'certification',
|
||||||
label: 'Certification',
|
label: () => translate('Certification'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'releaseGroups',
|
name: 'releaseGroups',
|
||||||
label: 'Release Groups',
|
label: () => translate('ReleaseGroups'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'tags',
|
name: 'tags',
|
||||||
label: 'Tags',
|
label: () => translate('Tags'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'useSceneNumbering',
|
name: 'useSceneNumbering',
|
||||||
label: 'Scene Numbering',
|
label: () => translate('SceneNumbering'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { setAppValue } from 'Store/Actions/appActions';
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
import createAjaxRequest from 'Utilities/createAjaxRequest';
|
||||||
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import { pingServer } from './appActions';
|
import { pingServer } from './appActions';
|
||||||
import { set } from './baseActions';
|
import { set } from './baseActions';
|
||||||
import createFetchHandler from './Creators/createFetchHandler';
|
import createFetchHandler from './Creators/createFetchHandler';
|
||||||
|
@ -81,34 +82,34 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'level',
|
name: 'level',
|
||||||
columnLabel: 'Level',
|
columnLabel: () => translate('Level'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'time',
|
name: 'time',
|
||||||
label: 'Time',
|
label: () => translate('Time'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'logger',
|
name: 'logger',
|
||||||
label: 'Component',
|
label: () => translate('Component'),
|
||||||
isSortable: false,
|
isSortable: false,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'message',
|
name: 'message',
|
||||||
label: 'Message',
|
label: () => translate('Message'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
|
@ -120,12 +121,12 @@ export const defaultState = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'all',
|
key: 'all',
|
||||||
label: 'All',
|
label: () => translate('All'),
|
||||||
filters: []
|
filters: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'info',
|
key: 'info',
|
||||||
label: 'Info',
|
label: () => translate('Info'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'level',
|
key: 'level',
|
||||||
|
@ -136,7 +137,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'warn',
|
key: 'warn',
|
||||||
label: 'Warn',
|
label: () => translate('Warn'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'level',
|
key: 'level',
|
||||||
|
@ -147,7 +148,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'error',
|
key: 'error',
|
||||||
label: 'Error',
|
label: () => translate('Error'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'level',
|
key: 'level',
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { createAction } from 'redux-actions';
|
||||||
import { filterTypes, sortDirections } from 'Helpers/Props';
|
import { filterTypes, sortDirections } from 'Helpers/Props';
|
||||||
import { createThunk, handleThunks } from 'Store/thunks';
|
import { createThunk, handleThunks } from 'Store/thunks';
|
||||||
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import createBatchToggleEpisodeMonitoredHandler from './Creators/createBatchToggleEpisodeMonitoredHandler';
|
import createBatchToggleEpisodeMonitoredHandler from './Creators/createBatchToggleEpisodeMonitoredHandler';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
|
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
|
||||||
|
@ -29,34 +30,34 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'series.sortTitle',
|
name: 'series.sortTitle',
|
||||||
label: 'Series Title',
|
label: () => translate('SeriesTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episode',
|
name: 'episode',
|
||||||
label: 'Episode',
|
label: () => translate('Episode'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.title',
|
name: 'episodes.title',
|
||||||
label: 'Episode Title',
|
label: () => translate('EpisodeTitle'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.airDateUtc',
|
name: 'episodes.airDateUtc',
|
||||||
label: 'Air Date',
|
label: () => translate('AirDate'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'status',
|
name: 'status',
|
||||||
label: 'Status',
|
label: () => translate('Status'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
@ -67,7 +68,7 @@ export const defaultState = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
label: 'Monitored',
|
label: () => translate('Monitored'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
|
@ -78,7 +79,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'unmonitored',
|
key: 'unmonitored',
|
||||||
label: 'Unmonitored',
|
label: () => translate('Unmonitored'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
|
@ -101,39 +102,39 @@ export const defaultState = {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
name: 'series.sortTitle',
|
name: 'series.sortTitle',
|
||||||
label: 'Series Title',
|
label: () => translate('SeriesTitle'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episode',
|
name: 'episode',
|
||||||
label: 'Episode',
|
label: () => translate('Episode'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.title',
|
name: 'episodes.title',
|
||||||
label: 'Episode Title',
|
label: () => translate('EpisodeTitle'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'episodes.airDateUtc',
|
name: 'episodes.airDateUtc',
|
||||||
label: 'Air Date',
|
label: () => translate('AirDate'),
|
||||||
isSortable: true,
|
isSortable: true,
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'languages',
|
name: 'languages',
|
||||||
label: 'Languages',
|
label: () => translate('Languages'),
|
||||||
isVisible: false
|
isVisible: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'status',
|
name: 'status',
|
||||||
label: 'Status',
|
label: () => translate('Status'),
|
||||||
isVisible: true
|
isVisible: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'actions',
|
name: 'actions',
|
||||||
columnLabel: 'Actions',
|
columnLabel: () => translate('Actions'),
|
||||||
isVisible: true,
|
isVisible: true,
|
||||||
isModifiable: false
|
isModifiable: false
|
||||||
}
|
}
|
||||||
|
@ -144,7 +145,7 @@ export const defaultState = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
label: 'Monitored',
|
label: () => translate('Monitored'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
|
@ -155,7 +156,7 @@ export const defaultState = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'unmonitored',
|
key: 'unmonitored',
|
||||||
label: 'Unmonitored',
|
label: () => translate('Unmonitored'),
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
key: 'monitored',
|
key: 'monitored',
|
||||||
|
|
|
@ -4,10 +4,12 @@
|
||||||
"Actions": "Actions",
|
"Actions": "Actions",
|
||||||
"Activity": "Activity",
|
"Activity": "Activity",
|
||||||
"Add": "Add",
|
"Add": "Add",
|
||||||
|
"AddNew": "Add New",
|
||||||
"Added": "Added",
|
"Added": "Added",
|
||||||
"AddingTag": "Adding tag",
|
"AddingTag": "Adding tag",
|
||||||
"AddNew": "Add New",
|
"Age": "Age",
|
||||||
"AirDate": "Air Date",
|
"AirDate": "Air Date",
|
||||||
|
"All": "All",
|
||||||
"AllTitles": "All Titles",
|
"AllTitles": "All Titles",
|
||||||
"ApiKeyValidationHealthCheckMessage": "Please update your API key to be at least {0} characters long. You can do this via settings or the config file",
|
"ApiKeyValidationHealthCheckMessage": "Please update your API key to be at least {0} characters long. You can do this via settings or the config file",
|
||||||
"AppDataDirectory": "AppData directory",
|
"AppDataDirectory": "AppData directory",
|
||||||
|
@ -24,6 +26,8 @@
|
||||||
"ApplyTagsHelpTextRemove": "Remove: Remove the entered tags",
|
"ApplyTagsHelpTextRemove": "Remove: Remove the entered tags",
|
||||||
"ApplyTagsHelpTextReplace": "Replace: Replace the tags with the entered tags (enter no tags to clear all tags)",
|
"ApplyTagsHelpTextReplace": "Replace: Replace the tags with the entered tags (enter no tags to clear all tags)",
|
||||||
"AptUpdater": "Use apt to install the update",
|
"AptUpdater": "Use apt to install the update",
|
||||||
|
"AudioInfo": "Audio Info",
|
||||||
|
"AudioLanguages": "Audio Languages",
|
||||||
"AutoAdd": "Auto Add",
|
"AutoAdd": "Auto Add",
|
||||||
"AutomaticAdd": "Automatic Add",
|
"AutomaticAdd": "Automatic Add",
|
||||||
"Backup": "Backup",
|
"Backup": "Backup",
|
||||||
|
@ -38,20 +42,24 @@
|
||||||
"Calendar": "Calendar",
|
"Calendar": "Calendar",
|
||||||
"Cancel": "Cancel",
|
"Cancel": "Cancel",
|
||||||
"CancelPendingTask": "Are you sure you want to cancel this pending task?",
|
"CancelPendingTask": "Are you sure you want to cancel this pending task?",
|
||||||
|
"Certification": "Certification",
|
||||||
"Clear": "Clear",
|
"Clear": "Clear",
|
||||||
"CloneCondition": "Clone Condition",
|
"CloneCondition": "Clone Condition",
|
||||||
"CloneCustomFormat": "Clone Custom Format",
|
"CloneCustomFormat": "Clone Custom Format",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
|
"Component": "Component",
|
||||||
"Connect": "Connect",
|
"Connect": "Connect",
|
||||||
|
"ContinuingOnly": "Continuing Only",
|
||||||
"CountDownloadClientsSelected": "{count} download client(s) selected",
|
"CountDownloadClientsSelected": "{count} download client(s) selected",
|
||||||
"CountImportListsSelected": "{count} import list(s) selected",
|
"CountImportListsSelected": "{count} import list(s) selected",
|
||||||
"CountIndexersSelected": "{count} indexer(s) selected",
|
"CountIndexersSelected": "{count} indexer(s) selected",
|
||||||
"CountSeasons": "{count} seasons",
|
"CountSeasons": "{count} seasons",
|
||||||
"CurrentlyInstalled": "Currently Installed",
|
"CurrentlyInstalled": "Currently Installed",
|
||||||
"CustomFormats": "Custom Formats",
|
|
||||||
"CustomFormatScore": "Custom Format Score",
|
"CustomFormatScore": "Custom Format Score",
|
||||||
|
"CustomFormats": "Custom Formats",
|
||||||
"CutoffUnmet": "Cutoff Unmet",
|
"CutoffUnmet": "Cutoff Unmet",
|
||||||
"Daily": "Daily",
|
"Daily": "Daily",
|
||||||
|
"Date": "Date",
|
||||||
"Delete": "Delete",
|
"Delete": "Delete",
|
||||||
"DeleteBackup": "Delete Backup",
|
"DeleteBackup": "Delete Backup",
|
||||||
"DeleteBackupMessageText": "Are you sure you want to delete the backup '{name}'?",
|
"DeleteBackupMessageText": "Are you sure you want to delete the backup '{name}'?",
|
||||||
|
@ -65,6 +73,7 @@
|
||||||
"DeleteSelectedImportListsMessageText": "Are you sure you want to delete {count} selected import list(s)?",
|
"DeleteSelectedImportListsMessageText": "Are you sure you want to delete {count} selected import list(s)?",
|
||||||
"DeleteSelectedIndexers": "Delete Indexer(s)",
|
"DeleteSelectedIndexers": "Delete Indexer(s)",
|
||||||
"DeleteSelectedIndexersMessageText": "Are you sure you want to delete {count} selected indexer(s)?",
|
"DeleteSelectedIndexersMessageText": "Are you sure you want to delete {count} selected indexer(s)?",
|
||||||
|
"Deleted": "Deleted",
|
||||||
"Details": "Details",
|
"Details": "Details",
|
||||||
"Disabled": "Disabled",
|
"Disabled": "Disabled",
|
||||||
"Discord": "Discord",
|
"Discord": "Discord",
|
||||||
|
@ -74,13 +83,14 @@
|
||||||
"Donations": "Donations",
|
"Donations": "Donations",
|
||||||
"DotNetVersion": ".NET",
|
"DotNetVersion": ".NET",
|
||||||
"Download": "Download",
|
"Download": "Download",
|
||||||
|
"DownloadClient": "Download Client",
|
||||||
"DownloadClientCheckNoneAvailableHealthCheckMessage": "No download client is available",
|
"DownloadClientCheckNoneAvailableHealthCheckMessage": "No download client is available",
|
||||||
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Unable to communicate with {0}.",
|
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Unable to communicate with {0}.",
|
||||||
"DownloadClientRootFolderHealthCheckMessage": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
|
"DownloadClientRootFolderHealthCheckMessage": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
|
||||||
"DownloadClients": "Download Clients",
|
|
||||||
"DownloadClientSortingHealthCheckMessage": "Download client {0} has {1} sorting enabled for Sonarr's category. You should disable sorting in your download client to avoid import issues.",
|
"DownloadClientSortingHealthCheckMessage": "Download client {0} has {1} sorting enabled for Sonarr's category. You should disable sorting in your download client to avoid import issues.",
|
||||||
"DownloadClientStatusAllClientHealthCheckMessage": "All download clients are unavailable due to failures",
|
"DownloadClientStatusAllClientHealthCheckMessage": "All download clients are unavailable due to failures",
|
||||||
"DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {0}",
|
"DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {0}",
|
||||||
|
"DownloadClients": "Download Clients",
|
||||||
"Duration": "Duration",
|
"Duration": "Duration",
|
||||||
"Edit": "Edit",
|
"Edit": "Edit",
|
||||||
"EditSelectedDownloadClients": "Edit Selected Download Clients",
|
"EditSelectedDownloadClients": "Edit Selected Download Clients",
|
||||||
|
@ -88,64 +98,84 @@
|
||||||
"EditSelectedIndexers": "Edit Selected Indexers",
|
"EditSelectedIndexers": "Edit Selected Indexers",
|
||||||
"EditSeries": "Edit Series",
|
"EditSeries": "Edit Series",
|
||||||
"EnableAutomaticSearch": "Enable Automatic Search",
|
"EnableAutomaticSearch": "Enable Automatic Search",
|
||||||
"Enabled": "Enabled",
|
|
||||||
"EnableInteractiveSearch": "Enable Interactive Search",
|
"EnableInteractiveSearch": "Enable Interactive Search",
|
||||||
"EnableRSS": "Enable RSS",
|
"EnableRSS": "Enable RSS",
|
||||||
|
"Enabled": "Enabled",
|
||||||
"Ended": "Ended",
|
"Ended": "Ended",
|
||||||
|
"EndedOnly": "Ended Only",
|
||||||
|
"Episode": "Episode",
|
||||||
|
"EpisodeAirDate": "Episode Air Date",
|
||||||
|
"EpisodeCount": "Episode Count",
|
||||||
"EpisodeInfo": "Episode Info",
|
"EpisodeInfo": "Episode Info",
|
||||||
"EpisodeNumbers": "Episode Number(s)",
|
"EpisodeNumbers": "Episode Number(s)",
|
||||||
|
"EpisodeProgress": "Episode Progress",
|
||||||
|
"EpisodeTitle": "Episode Title",
|
||||||
|
"Episodes": "Episodes",
|
||||||
|
"Error": "Error",
|
||||||
"ErrorRestoringBackup": "Error restoring backup",
|
"ErrorRestoringBackup": "Error restoring backup",
|
||||||
|
"EventType": "Event Type",
|
||||||
"Events": "Events",
|
"Events": "Events",
|
||||||
"Exception": "Exception",
|
"Exception": "Exception",
|
||||||
"ExistingTag": "Existing tag",
|
"ExistingTag": "Existing tag",
|
||||||
"ExportCustomFormat": "Export Custom Format",
|
"ExportCustomFormat": "Export Custom Format",
|
||||||
"ExternalUpdater": "Sonarr is configured to use an external update mechanism",
|
"ExternalUpdater": "Sonarr is configured to use an external update mechanism",
|
||||||
|
"Failed": "Failed",
|
||||||
"FailedToFetchUpdates": "Failed to fetch updates",
|
"FailedToFetchUpdates": "Failed to fetch updates",
|
||||||
"FailedToUpdateSettings": "Failed to update settings",
|
"FailedToUpdateSettings": "Failed to update settings",
|
||||||
"FeatureRequests": "Feature Requests",
|
"FeatureRequests": "Feature Requests",
|
||||||
"Filename": "Filename",
|
"Filename": "Filename",
|
||||||
"Fixed": "Fixed",
|
"Fixed": "Fixed",
|
||||||
|
"Formats": "Formats",
|
||||||
"Forums": "Forums",
|
"Forums": "Forums",
|
||||||
"FreeSpace": "Free Space",
|
"FreeSpace": "Free Space",
|
||||||
"From": "From",
|
"From": "From",
|
||||||
"FullSeason": "Full Season",
|
"FullSeason": "Full Season",
|
||||||
"General": "General",
|
"General": "General",
|
||||||
"GeneralSettings": "General Settings",
|
"GeneralSettings": "General Settings",
|
||||||
|
"Genres": "Genres",
|
||||||
|
"Grabbed": "Grabbed",
|
||||||
|
"HasMissingSeason": "Has Missing Season",
|
||||||
"Health": "Health",
|
"Health": "Health",
|
||||||
"HiddenClickToShow": "Hidden, click to show",
|
"HiddenClickToShow": "Hidden, click to show",
|
||||||
"HideAdvanced": "Hide Advanced",
|
"HideAdvanced": "Hide Advanced",
|
||||||
"History": "History",
|
"History": "History",
|
||||||
"HomePage": "Home Page",
|
"HomePage": "Home Page",
|
||||||
|
"IRC": "IRC",
|
||||||
|
"IRCLinkText": "#sonarr on Libera",
|
||||||
|
"Ignored": "Ignored",
|
||||||
"Implementation": "Implementation",
|
"Implementation": "Implementation",
|
||||||
"ImportListRootFolderMissingRootHealthCheckMessage": "Missing root folder for import list(s): {0}",
|
"ImportListRootFolderMissingRootHealthCheckMessage": "Missing root folder for import list(s): {0}",
|
||||||
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Multiple root folders are missing for import lists: {0}",
|
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Multiple root folders are missing for import lists: {0}",
|
||||||
"ImportLists": "Import Lists",
|
|
||||||
"ImportListStatusAllUnavailableHealthCheckMessage": "All lists are unavailable due to failures",
|
"ImportListStatusAllUnavailableHealthCheckMessage": "All lists are unavailable due to failures",
|
||||||
"ImportListStatusUnavailableHealthCheckMessage": "Lists unavailable due to failures: {0}",
|
"ImportListStatusUnavailableHealthCheckMessage": "Lists unavailable due to failures: {0}",
|
||||||
|
"ImportLists": "Import Lists",
|
||||||
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Enable Completed Download Handling if possible",
|
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Enable Completed Download Handling if possible",
|
||||||
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Enable Completed Download Handling if possible (Multi-Computer unsupported)",
|
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Enable Completed Download Handling if possible (Multi-Computer unsupported)",
|
||||||
"ImportMechanismHandlingDisabledHealthCheckMessage": "Enable Completed Download Handling",
|
"ImportMechanismHandlingDisabledHealthCheckMessage": "Enable Completed Download Handling",
|
||||||
|
"Imported": "Imported",
|
||||||
|
"IncludeUnmonitored": "Include Unmonitored",
|
||||||
|
"Indexer": "Indexer",
|
||||||
"IndexerJackettAllHealthCheckMessage": "Indexers using the unsupported Jackett 'all' endpoint: {0}",
|
"IndexerJackettAllHealthCheckMessage": "Indexers using the unsupported Jackett 'all' endpoint: {0}",
|
||||||
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures for more than 6 hours",
|
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures for more than 6 hours",
|
||||||
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures for more than 6 hours: {0}",
|
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures for more than 6 hours: {0}",
|
||||||
"IndexerRssNoIndexersAvailableHealthCheckMessage": "All rss-capable indexers are temporarily unavailable due to recent indexer errors",
|
"IndexerRssNoIndexersAvailableHealthCheckMessage": "All rss-capable indexers are temporarily unavailable due to recent indexer errors",
|
||||||
"IndexerRssNoIndexersEnabledHealthCheckMessage": "No indexers available with RSS sync enabled, Sonarr will not grab new releases automatically",
|
"IndexerRssNoIndexersEnabledHealthCheckMessage": "No indexers available with RSS sync enabled, Sonarr will not grab new releases automatically",
|
||||||
"Indexers": "Indexers",
|
|
||||||
"IndexerSearchNoAutomaticHealthCheckMessage": "No indexers available with Automatic Search enabled, Sonarr will not provide any automatic search results",
|
"IndexerSearchNoAutomaticHealthCheckMessage": "No indexers available with Automatic Search enabled, Sonarr will not provide any automatic search results",
|
||||||
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "All search-capable indexers are temporarily unavailable due to recent indexer errors",
|
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "All search-capable indexers are temporarily unavailable due to recent indexer errors",
|
||||||
"IndexerSearchNoInteractiveHealthCheckMessage": "No indexers available with Interactive Search enabled, Sonarr will not provide any interactive search results",
|
"IndexerSearchNoInteractiveHealthCheckMessage": "No indexers available with Interactive Search enabled, Sonarr will not provide any interactive search results",
|
||||||
"IndexerStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures",
|
"IndexerStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures",
|
||||||
"IndexerStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures: {0}",
|
"IndexerStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures: {0}",
|
||||||
|
"Indexers": "Indexers",
|
||||||
|
"Info": "Info",
|
||||||
"InstallLatest": "Install Latest",
|
"InstallLatest": "Install Latest",
|
||||||
"Interval": "Interval",
|
"Interval": "Interval",
|
||||||
"IRC": "IRC",
|
|
||||||
"IRCLinkText": "#sonarr on Libera",
|
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Language that Sonarr will use for UI": "Language that Sonarr will use for UI",
|
"Language that Sonarr will use for UI": "Language that Sonarr will use for UI",
|
||||||
"Languages": "Languages",
|
"Languages": "Languages",
|
||||||
"LastDuration": "Last Duration",
|
"LastDuration": "Last Duration",
|
||||||
"LastExecution": "Last Execution",
|
"LastExecution": "Last Execution",
|
||||||
"LastWriteTime": "Last Write Time",
|
"LastWriteTime": "Last Write Time",
|
||||||
|
"LatestSeason": "Latest Season",
|
||||||
"LiberaWebchat": "Libera Webchat",
|
"LiberaWebchat": "Libera Webchat",
|
||||||
"LibraryImport": "Library Import",
|
"LibraryImport": "Library Import",
|
||||||
"Location": "Location",
|
"Location": "Location",
|
||||||
|
@ -167,8 +197,10 @@
|
||||||
"Metadata": "Metadata",
|
"Metadata": "Metadata",
|
||||||
"MetadataSource": "Metadata Source",
|
"MetadataSource": "Metadata Source",
|
||||||
"Missing": "Missing",
|
"Missing": "Missing",
|
||||||
|
"MissingEpisodes": "Missing Episodes",
|
||||||
"Mode": "Mode",
|
"Mode": "Mode",
|
||||||
"Monitored": "Monitored",
|
"Monitored": "Monitored",
|
||||||
|
"MonitoredOnly": "Monitored Only",
|
||||||
"MoreInfo": "More Info",
|
"MoreInfo": "More Info",
|
||||||
"MountHealthCheckMessage": "Mount containing a series path is mounted read-only: ",
|
"MountHealthCheckMessage": "Mount containing a series path is mounted read-only: ",
|
||||||
"MultiSeason": "Multi-Season",
|
"MultiSeason": "Multi-Season",
|
||||||
|
@ -190,19 +222,24 @@
|
||||||
"NoLogFiles": "No log files",
|
"NoLogFiles": "No log files",
|
||||||
"NoSeasons": "No seasons",
|
"NoSeasons": "No seasons",
|
||||||
"NoUpdatesAreAvailable": "No updates are available",
|
"NoUpdatesAreAvailable": "No updates are available",
|
||||||
"OneSeason": "1 season",
|
"NotSeasonPack": "Not Season Pack",
|
||||||
"OnLatestVersion": "The latest version of Sonarr is already installed",
|
"OnLatestVersion": "The latest version of Sonarr is already installed",
|
||||||
|
"OneSeason": "1 season",
|
||||||
"Options": "Options",
|
"Options": "Options",
|
||||||
"OriginalLanguage": "Original Language",
|
"OriginalLanguage": "Original Language",
|
||||||
|
"OutputPath": "Output Path",
|
||||||
"PackageVersion": "Package Version",
|
"PackageVersion": "Package Version",
|
||||||
"PackageVersionInfo": "{packageVersion} by {packageAuthor}",
|
"PackageVersionInfo": "{packageVersion} by {packageAuthor}",
|
||||||
"PartialSeason": "Partial Season",
|
"PartialSeason": "Partial Season",
|
||||||
"Path": "Path",
|
"Path": "Path",
|
||||||
|
"Peers": "Peers",
|
||||||
"PreviousAiring": "Previous Airing",
|
"PreviousAiring": "Previous Airing",
|
||||||
"PreviouslyInstalled": "Previously Installed",
|
"PreviouslyInstalled": "Previously Installed",
|
||||||
"Priority": "Priority",
|
"Priority": "Priority",
|
||||||
"Profiles": "Profiles",
|
"Profiles": "Profiles",
|
||||||
|
"Progress": "Progress",
|
||||||
"Proper": "Proper",
|
"Proper": "Proper",
|
||||||
|
"Protocol": "Protocol",
|
||||||
"ProxyBadRequestHealthCheckMessage": "Failed to test proxy. Status Code: {0}",
|
"ProxyBadRequestHealthCheckMessage": "Failed to test proxy. Status Code: {0}",
|
||||||
"ProxyFailedToTestHealthCheckMessage": "Failed to test proxy: {0}",
|
"ProxyFailedToTestHealthCheckMessage": "Failed to test proxy: {0}",
|
||||||
"ProxyResolveIpHealthCheckMessage": "Failed to resolve the IP Address for the Configured Proxy Host {0}",
|
"ProxyResolveIpHealthCheckMessage": "Failed to resolve the IP Address for the Configured Proxy Host {0}",
|
||||||
|
@ -210,13 +247,17 @@
|
||||||
"QualityProfile": "Quality Profile",
|
"QualityProfile": "Quality Profile",
|
||||||
"Queue": "Queue",
|
"Queue": "Queue",
|
||||||
"Queued": "Queued",
|
"Queued": "Queued",
|
||||||
|
"Rating": "Rating",
|
||||||
"ReadTheWikiForMoreInformation": "Read the Wiki for more information",
|
"ReadTheWikiForMoreInformation": "Read the Wiki for more information",
|
||||||
"Real": "Real",
|
"Real": "Real",
|
||||||
"RecycleBinUnableToWriteHealthCheckMessage": "Unable to write to configured recycling bin folder: {0}. Ensure this path exists and is writable by the user running Sonarr",
|
"RecycleBinUnableToWriteHealthCheckMessage": "Unable to write to configured recycling bin folder: {0}. Ensure this path exists and is writable by the user running Sonarr",
|
||||||
"Refresh": "Refresh",
|
"Refresh": "Refresh",
|
||||||
"RefreshSeries": "Refresh Series",
|
"RefreshSeries": "Refresh Series",
|
||||||
|
"RejectionCount": "Rejection Count",
|
||||||
|
"RelativePath": "Relative Path",
|
||||||
"Release": "Release",
|
"Release": "Release",
|
||||||
"ReleaseGroup": "Release Group",
|
"ReleaseGroup": "Release Group",
|
||||||
|
"ReleaseGroups": "Release Groups",
|
||||||
"ReleaseHash": "Release Hash",
|
"ReleaseHash": "Release Hash",
|
||||||
"ReleaseTitle": "Release Title",
|
"ReleaseTitle": "Release Title",
|
||||||
"Reload": "Reload",
|
"Reload": "Reload",
|
||||||
|
@ -238,9 +279,6 @@
|
||||||
"Remove": "Remove",
|
"Remove": "Remove",
|
||||||
"RemoveCompleted": "Remove Completed",
|
"RemoveCompleted": "Remove Completed",
|
||||||
"RemoveCompletedDownloads": "Remove Completed Downloads",
|
"RemoveCompletedDownloads": "Remove Completed Downloads",
|
||||||
"RemovedFromTaskQueue": "Removed from task queue",
|
|
||||||
"RemovedSeriesMultipleRemovedHealthCheckMessage": "Series {0} were removed from TheTVDB",
|
|
||||||
"RemovedSeriesSingleRemovedHealthCheckMessage": "Series {0} was removed from TheTVDB",
|
|
||||||
"RemoveFailed": "Remove Failed",
|
"RemoveFailed": "Remove Failed",
|
||||||
"RemoveFailedDownloads": "Remove Failed Downloads",
|
"RemoveFailedDownloads": "Remove Failed Downloads",
|
||||||
"RemoveFromDownloadClient": "Remove From Download Client",
|
"RemoveFromDownloadClient": "Remove From Download Client",
|
||||||
|
@ -249,7 +287,11 @@
|
||||||
"RemoveSelectedItemQueueMessageText": "Are you sure you want to remove 1 item from the queue?",
|
"RemoveSelectedItemQueueMessageText": "Are you sure you want to remove 1 item from the queue?",
|
||||||
"RemoveSelectedItems": "Remove Selected Items",
|
"RemoveSelectedItems": "Remove Selected Items",
|
||||||
"RemoveSelectedItemsQueueMessageText": "Are you sure you want to remove {0} items from the queue?",
|
"RemoveSelectedItemsQueueMessageText": "Are you sure you want to remove {0} items from the queue?",
|
||||||
|
"RemovedFromTaskQueue": "Removed from task queue",
|
||||||
|
"RemovedSeriesMultipleRemovedHealthCheckMessage": "Series {0} were removed from TheTVDB",
|
||||||
|
"RemovedSeriesSingleRemovedHealthCheckMessage": "Series {0} was removed from TheTVDB",
|
||||||
"RemovingTag": "Removing tag",
|
"RemovingTag": "Removing tag",
|
||||||
|
"Renamed": "Renamed",
|
||||||
"Repack": "Repack",
|
"Repack": "Repack",
|
||||||
"Replace": "Replace",
|
"Replace": "Replace",
|
||||||
"Required": "Required",
|
"Required": "Required",
|
||||||
|
@ -266,9 +308,17 @@
|
||||||
"RootFolder": "Root Folder",
|
"RootFolder": "Root Folder",
|
||||||
"RootFolderMissingHealthCheckMessage": "Missing root folder: {0}",
|
"RootFolderMissingHealthCheckMessage": "Missing root folder: {0}",
|
||||||
"RootFolderMultipleMissingHealthCheckMessage": "Multiple root folders are missing: {0}",
|
"RootFolderMultipleMissingHealthCheckMessage": "Multiple root folders are missing: {0}",
|
||||||
|
"RootFolderPath": "Root Folder Path",
|
||||||
|
"Runtime": "Runtime",
|
||||||
|
"SceneNumbering": "Scene Numbering",
|
||||||
"Scheduled": "Scheduled",
|
"Scheduled": "Scheduled",
|
||||||
"SearchForMonitoredEpisodes": "Search for monitored episodes",
|
"SearchForMonitoredEpisodes": "Search for monitored episodes",
|
||||||
|
"SeasonCount": "Season Count",
|
||||||
|
"SeasonFolder": "Season Folder",
|
||||||
"SeasonNumber": "Season Number",
|
"SeasonNumber": "Season Number",
|
||||||
|
"SeasonPack": "Season Pack",
|
||||||
|
"Seasons": "Seasons",
|
||||||
|
"Seeders": "Seeders",
|
||||||
"Series": "Series",
|
"Series": "Series",
|
||||||
"SeriesEditor": "Series Editor",
|
"SeriesEditor": "Series Editor",
|
||||||
"SeriesTitle": "Series Title",
|
"SeriesTitle": "Series Title",
|
||||||
|
@ -278,40 +328,50 @@
|
||||||
"ShownClickToHide": "Shown, click to hide",
|
"ShownClickToHide": "Shown, click to hide",
|
||||||
"Size": "Size",
|
"Size": "Size",
|
||||||
"SizeOnDisk": "Size on disk",
|
"SizeOnDisk": "Size on disk",
|
||||||
"SkipRedownloadHelpText": "Prevents Sonarr from trying to download an alternative release for this item",
|
|
||||||
"SkipRedownload": "Skip Redownload",
|
"SkipRedownload": "Skip Redownload",
|
||||||
|
"SkipRedownloadHelpText": "Prevents Sonarr from trying to download an alternative release for this item",
|
||||||
"Source": "Source",
|
"Source": "Source",
|
||||||
|
"SourceTitle": "Source Title",
|
||||||
"Special": "Special",
|
"Special": "Special",
|
||||||
"Started": "Started",
|
"Started": "Started",
|
||||||
"StartupDirectory": "Startup directory",
|
"StartupDirectory": "Startup directory",
|
||||||
"Status": "Status",
|
"Status": "Status",
|
||||||
|
"SubtitleLanguages": "Subtitle Languages",
|
||||||
"System": "System",
|
"System": "System",
|
||||||
"SystemTimeHealthCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
|
"SystemTimeHealthCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
|
||||||
"Tags": "Tags",
|
"Tags": "Tags",
|
||||||
"Tasks": "Tasks",
|
|
||||||
"TaskUserAgentTooltip": "User-Agent provided by the app that called the API",
|
"TaskUserAgentTooltip": "User-Agent provided by the app that called the API",
|
||||||
|
"Tasks": "Tasks",
|
||||||
"TestAll": "Test All",
|
"TestAll": "Test All",
|
||||||
"TestParsing": "Test Parsing",
|
"TestParsing": "Test Parsing",
|
||||||
"TheLogLevelDefault": "The log level defaults to 'Info' and can be changed in [General Settings](/settings/general)",
|
"TheLogLevelDefault": "The log level defaults to 'Info' and can be changed in [General Settings](/settings/general)",
|
||||||
"Time": "Time",
|
"Time": "Time",
|
||||||
|
"TimeLeft": "Time Left",
|
||||||
|
"Title": "Title",
|
||||||
"TotalSpace": "Total Space",
|
"TotalSpace": "Total Space",
|
||||||
"Twitter": "Twitter",
|
"Twitter": "Twitter",
|
||||||
|
"Type": "Type",
|
||||||
"UI": "UI",
|
"UI": "UI",
|
||||||
"UI Language": "UI Language",
|
"UI Language": "UI Language",
|
||||||
"UnableToLoadBackups": "Unable to load backups",
|
"UnableToLoadBackups": "Unable to load backups",
|
||||||
"UnableToUpdateSonarrDirectly": "Unable to update Sonarr directly,",
|
"UnableToUpdateSonarrDirectly": "Unable to update Sonarr directly,",
|
||||||
"Unmonitored": "Unmonitored",
|
"Unmonitored": "Unmonitored",
|
||||||
|
"UnmonitoredOnly": "Unmonitored Only",
|
||||||
"UpdateAvailableHealthCheckMessage": "New update is available",
|
"UpdateAvailableHealthCheckMessage": "New update is available",
|
||||||
"UpdaterLogFiles": "Updater Log Files",
|
|
||||||
"Updates": "Updates",
|
|
||||||
"UpdateStartupNotWritableHealthCheckMessage": "Cannot install update because startup folder '{0}' is not writable by the user '{1}'.",
|
"UpdateStartupNotWritableHealthCheckMessage": "Cannot install update because startup folder '{0}' is not writable by the user '{1}'.",
|
||||||
"UpdateStartupTranslocationHealthCheckMessage": "Cannot install update because startup folder '{0}' is in an App Translocation folder.",
|
"UpdateStartupTranslocationHealthCheckMessage": "Cannot install update because startup folder '{0}' is in an App Translocation folder.",
|
||||||
"UpdateUINotWritableHealthCheckMessage": "Cannot install update because UI folder '{0}' is not writable by the user '{1}'.",
|
"UpdateUINotWritableHealthCheckMessage": "Cannot install update because UI folder '{0}' is not writable by the user '{1}'.",
|
||||||
|
"UpdaterLogFiles": "Updater Log Files",
|
||||||
|
"Updates": "Updates",
|
||||||
"Uptime": "Uptime",
|
"Uptime": "Uptime",
|
||||||
"Version": "Version",
|
"Version": "Version",
|
||||||
|
"VideoCodec": "Video Codec",
|
||||||
|
"VideoDynamicRange": "Video Dynamic Range",
|
||||||
"Wanted": "Wanted",
|
"Wanted": "Wanted",
|
||||||
|
"Warn": "Warn",
|
||||||
"Wiki": "Wiki",
|
"Wiki": "Wiki",
|
||||||
"WouldYouLikeToRestoreBackup": "Would you like to restore the backup '{name}'?",
|
"WouldYouLikeToRestoreBackup": "Would you like to restore the backup '{name}'?",
|
||||||
|
"Year": "Year",
|
||||||
"Yes": "Yes",
|
"Yes": "Yes",
|
||||||
"YesCancel": "Yes, Cancel"
|
"YesCancel": "Yes, Cancel"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue