diff --git a/frontend/src/Components/Filter/Builder/FilterBuilderRow.js b/frontend/src/Components/Filter/Builder/FilterBuilderRow.js index ffbf5c784..0560b76b0 100644 --- a/frontend/src/Components/Filter/Builder/FilterBuilderRow.js +++ b/frontend/src/Components/Filter/Builder/FilterBuilderRow.js @@ -206,9 +206,11 @@ class FilterBuilderRow extends Component { const selectedFilterBuilderProp = this.selectedFilterBuilderProp; const keyOptions = filterBuilderProps.map((availablePropFilter) => { + const { name, label } = availablePropFilter; + return { - key: availablePropFilter.name, - value: availablePropFilter.label + key: name, + value: typeof label === 'function' ? label() : label }; }).sort((a, b) => a.value.localeCompare(b.value)); diff --git a/frontend/src/Components/Form/SelectInput.js b/frontend/src/Components/Form/SelectInput.js index 422b7330c..553501afc 100644 --- a/frontend/src/Components/Form/SelectInput.js +++ b/frontend/src/Components/Form/SelectInput.js @@ -61,7 +61,7 @@ class SelectInput extends Component { value={key} {...otherOptionProps} > - {optionValue} + {typeof optionValue === 'function' ? optionValue() : optionValue} ); }) @@ -75,7 +75,7 @@ SelectInput.propTypes = { className: PropTypes.string, disabledClassName: PropTypes.string, name: PropTypes.string.isRequired, - value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired, values: PropTypes.arrayOf(PropTypes.object).isRequired, isDisabled: PropTypes.bool, hasError: PropTypes.bool, diff --git a/frontend/src/Components/Menu/FilterMenuContent.js b/frontend/src/Components/Menu/FilterMenuContent.js index 1fdb2476f..516fbb648 100644 --- a/frontend/src/Components/Menu/FilterMenuContent.js +++ b/frontend/src/Components/Menu/FilterMenuContent.js @@ -33,7 +33,7 @@ class FilterMenuContent extends Component { selectedFilterKey={selectedFilterKey} onPress={onFilterSelect} > - {filter.label} + {typeof filter.label === 'function' ? filter.label() : filter.label} ); }) diff --git a/frontend/src/Components/Table/Column.ts b/frontend/src/Components/Table/Column.ts index 8c2122c65..31a696df7 100644 --- a/frontend/src/Components/Table/Column.ts +++ b/frontend/src/Components/Table/Column.ts @@ -1,8 +1,10 @@ import React from 'react'; +type PropertyFunction = () => T; + interface Column { name: string; - label: string | React.ReactNode; + label: string | PropertyFunction | React.ReactNode; columnLabel?: string; isSortable?: boolean; isVisible: boolean; diff --git a/frontend/src/Components/Table/Table.js b/frontend/src/Components/Table/Table.js index befc8219a..8afbf9ea0 100644 --- a/frontend/src/Components/Table/Table.js +++ b/frontend/src/Components/Table/Table.js @@ -107,7 +107,7 @@ function Table(props) { {...getTableHeaderCellProps(otherProps)} {...column} > - {column.label} + {typeof column.label === 'function' ? column.label() : column.label} ); }) diff --git a/frontend/src/Components/Table/TableHeaderCell.js b/frontend/src/Components/Table/TableHeaderCell.js index 21766978b..b0ed5c571 100644 --- a/frontend/src/Components/Table/TableHeaderCell.js +++ b/frontend/src/Components/Table/TableHeaderCell.js @@ -30,6 +30,7 @@ class TableHeaderCell extends Component { const { className, name, + label, columnLabel, isSortable, isVisible, @@ -53,7 +54,8 @@ class TableHeaderCell extends Component { {...otherProps} component="th" className={className} - title={columnLabel} + label={typeof label === 'function' ? label() : label} + title={typeof columnLabel === 'function' ? columnLabel() : columnLabel} onPress={this.onPress} > {children} @@ -77,7 +79,8 @@ class TableHeaderCell extends Component { TableHeaderCell.propTypes = { className: PropTypes.string, 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, isVisible: PropTypes.bool, isModifiable: PropTypes.bool, diff --git a/frontend/src/Components/Table/TableOptions/TableOptionsColumn.js b/frontend/src/Components/Table/TableOptions/TableOptionsColumn.js index 2d91c7c63..402ef5ae1 100644 --- a/frontend/src/Components/Table/TableOptions/TableOptionsColumn.js +++ b/frontend/src/Components/Table/TableOptions/TableOptionsColumn.js @@ -35,7 +35,7 @@ function TableOptionsColumn(props) { isDisabled={isModifiable === false} onChange={onVisibleChange} /> - {label} + {typeof label === 'function' ? label() : label} { @@ -56,7 +56,7 @@ function TableOptionsColumn(props) { TableOptionsColumn.propTypes = { name: PropTypes.string.isRequired, - label: PropTypes.string.isRequired, + label: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired, isVisible: PropTypes.bool.isRequired, isModifiable: PropTypes.bool.isRequired, index: PropTypes.number.isRequired, diff --git a/frontend/src/Components/Table/TableOptions/TableOptionsColumnDragSource.js b/frontend/src/Components/Table/TableOptions/TableOptionsColumnDragSource.js index 100559660..77d18463f 100644 --- a/frontend/src/Components/Table/TableOptions/TableOptionsColumnDragSource.js +++ b/frontend/src/Components/Table/TableOptions/TableOptionsColumnDragSource.js @@ -112,7 +112,7 @@ class TableOptionsColumnDragSource extends Component { translate('Monitored'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'title', - label: translate('Title'), + label: () => translate('Title'), isSortable: true, isVisible: true }, { name: 'releaseDate', - label: translate('ReleaseDate'), + label: () => translate('ReleaseDate'), isSortable: true, isVisible: true }, { name: 'secondaryTypes', - label: translate('SecondaryTypes'), + label: () => translate('SecondaryTypes'), isSortable: true, isVisible: false }, { name: 'mediumCount', - label: translate('MediaCount'), + label: () => translate('MediaCount'), isVisible: false }, { name: 'trackCount', - label: translate('TrackCount'), + label: () => translate('TrackCount'), isVisible: false }, { name: 'duration', - label: translate('Duration'), + label: () => translate('Duration'), isSortable: true, isVisible: false }, { name: 'rating', - label: translate('Rating'), + label: () => translate('Rating'), isSortable: true, isVisible: true }, { name: 'status', - label: translate('Status'), + label: () => translate('Status'), isVisible: true }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } diff --git a/frontend/src/Store/Actions/albumStudioActions.js b/frontend/src/Store/Actions/albumStudioActions.js index 174208932..0f543a7d6 100644 --- a/frontend/src/Store/Actions/albumStudioActions.js +++ b/frontend/src/Store/Actions/albumStudioActions.js @@ -32,41 +32,41 @@ export const defaultState = { filterBuilderProps: [ { name: 'monitored', - label: translate('Monitored'), + label: () => translate('Monitored'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.BOOL }, { name: 'status', - label: translate('Status'), + label: () => translate('Status'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.ARTIST_STATUS }, { name: 'artistType', - label: translate('ArtistType'), + label: () => translate('ArtistType'), type: filterBuilderTypes.EXACT }, { name: 'qualityProfileId', - label: translate('QualityProfile'), + label: () => translate('QualityProfile'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY_PROFILE }, { name: 'metadataProfileId', - label: translate('MetadataProfile'), + label: () => translate('MetadataProfile'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.METADATA_PROFILE }, { name: 'rootFolderPath', - label: translate('RootFolderPath'), + label: () => translate('RootFolderPath'), type: filterBuilderTypes.EXACT }, { name: 'tags', - label: translate('Tags'), + label: () => translate('Tags'), type: filterBuilderTypes.ARRAY, valueType: filterBuilderValueTypes.TAG } diff --git a/frontend/src/Store/Actions/artistActions.js b/frontend/src/Store/Actions/artistActions.js index 9c145e79c..ee81624e0 100644 --- a/frontend/src/Store/Actions/artistActions.js +++ b/frontend/src/Store/Actions/artistActions.js @@ -21,12 +21,12 @@ export const section = 'artist'; export const filters = [ { key: 'all', - label: translate('All'), + label: () => translate('All'), filters: [] }, { key: 'monitored', - label: translate('MonitoredOnly'), + label: () => translate('MonitoredOnly'), filters: [ { key: 'monitored', @@ -37,7 +37,7 @@ export const filters = [ }, { key: 'unmonitored', - label: translate('UnmonitoredOnly'), + label: () => translate('UnmonitoredOnly'), filters: [ { key: 'monitored', @@ -48,7 +48,7 @@ export const filters = [ }, { key: 'continuing', - label: translate('ContinuingOnly'), + label: () => translate('ContinuingOnly'), filters: [ { key: 'status', @@ -59,7 +59,7 @@ export const filters = [ }, { key: 'ended', - label: translate('EndedOnly'), + label: () => translate('EndedOnly'), filters: [ { key: 'status', @@ -70,7 +70,7 @@ export const filters = [ }, { key: 'missing', - label: translate('MissingTracks'), + label: () => translate('MissingTracks'), filters: [ { key: 'missing', diff --git a/frontend/src/Store/Actions/artistEditorActions.js b/frontend/src/Store/Actions/artistEditorActions.js index fab600df1..2e3d5d1f7 100644 --- a/frontend/src/Store/Actions/artistEditorActions.js +++ b/frontend/src/Store/Actions/artistEditorActions.js @@ -35,50 +35,50 @@ export const defaultState = { columns: [ { name: 'status', - columnLabel: translate('Status'), + columnLabel: () => translate('Status'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'sortName', - label: translate('Name'), + label: () => translate('Name'), isSortable: true, isVisible: true }, { name: 'monitorNewItems', - label: translate('MonitorNewItems'), + label: () => translate('MonitorNewItems'), isSortable: true, isVisible: true }, { name: 'qualityProfileId', - label: translate('QualityProfile'), + label: () => translate('QualityProfile'), isSortable: true, isVisible: true }, { name: 'metadataProfileId', - label: translate('MetadataProfile'), + label: () => translate('MetadataProfile'), isSortable: true, isVisible: true }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), isSortable: true, isVisible: true }, { name: 'sizeOnDisk', - label: translate('SizeOnDisk'), + label: () => translate('SizeOnDisk'), isSortable: true, isVisible: false }, { name: 'tags', - label: translate('Tags'), + label: () => translate('Tags'), isSortable: true, isVisible: true } @@ -87,47 +87,47 @@ export const defaultState = { filterBuilderProps: [ { name: 'monitored', - label: translate('Monitored'), + label: () => translate('Monitored'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.BOOL }, { name: 'status', - label: translate('Status'), + label: () => translate('Status'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.ARTIST_STATUS }, { name: 'qualityProfileId', - label: translate('QualityProfile'), + label: () => translate('QualityProfile'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY_PROFILE }, { name: 'metadataProfileId', - label: translate('MetadataProfile'), + label: () => translate('MetadataProfile'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.METADATA_PROFILE }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), type: filterBuilderTypes.STRING }, { name: 'rootFolderPath', - label: translate('RootFolderPath'), + label: () => translate('RootFolderPath'), type: filterBuilderTypes.EXACT }, { name: 'sizeOnDisk', - label: translate('SizeOnDisk'), + label: () => translate('SizeOnDisk'), type: filterBuilderTypes.NUMBER, valueType: filterBuilderValueTypes.BYTES }, { name: 'tags', - label: translate('Tags'), + label: () => translate('Tags'), type: filterBuilderTypes.ARRAY, valueType: filterBuilderValueTypes.TAG } diff --git a/frontend/src/Store/Actions/artistIndexActions.js b/frontend/src/Store/Actions/artistIndexActions.js index 8bb523c1c..e54b38df6 100644 --- a/frontend/src/Store/Actions/artistIndexActions.js +++ b/frontend/src/Store/Actions/artistIndexActions.js @@ -63,105 +63,105 @@ export const defaultState = { columns: [ { name: 'status', - columnLabel: translate('Status'), + columnLabel: () => translate('Status'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'sortName', - label: translate('ArtistName'), + label: () => translate('ArtistName'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'artistType', - label: translate('Type'), + label: () => translate('Type'), isSortable: true, isVisible: true }, { name: 'qualityProfileId', - label: translate('QualityProfile'), + label: () => translate('QualityProfile'), isSortable: true, isVisible: true }, { name: 'metadataProfileId', - label: translate('MetadataProfile'), + label: () => translate('MetadataProfile'), isSortable: true, isVisible: false }, { name: 'nextAlbum', - label: translate('NextAlbum'), + label: () => translate('NextAlbum'), isSortable: true, isVisible: true }, { name: 'lastAlbum', - label: translate('LastAlbum'), + label: () => translate('LastAlbum'), isSortable: true, isVisible: false }, { name: 'added', - label: translate('Added'), + label: () => translate('Added'), isSortable: true, isVisible: false }, { name: 'albumCount', - label: translate('Albums'), + label: () => translate('Albums'), isSortable: true, isVisible: true }, { name: 'trackProgress', - label: translate('Tracks'), + label: () => translate('Tracks'), isSortable: true, isVisible: true }, { name: 'trackCount', - label: translate('TrackCount'), + label: () => translate('TrackCount'), isSortable: true, isVisible: false }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), isSortable: true, isVisible: false }, { name: 'sizeOnDisk', - label: translate('SizeOnDisk'), + label: () => translate('SizeOnDisk'), isSortable: true, isVisible: false }, { name: 'genres', - label: translate('Genres'), + label: () => translate('Genres'), isSortable: false, isVisible: false }, { name: 'ratings', - label: translate('Rating'), + label: () => translate('Rating'), isSortable: true, isVisible: false }, { name: 'tags', - label: translate('Tags'), + label: () => translate('Tags'), isSortable: true, isVisible: false }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } @@ -244,70 +244,70 @@ export const defaultState = { filterBuilderProps: [ { name: 'monitored', - label: translate('Monitored'), + label: () => translate('Monitored'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.BOOL }, { name: 'status', - label: translate('Status'), + label: () => translate('Status'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.ARTIST_STATUS }, { name: 'qualityProfileId', - label: translate('QualityProfile'), + label: () => translate('QualityProfile'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY_PROFILE }, { name: 'metadataProfileId', - label: translate('MetadataProfile'), + label: () => translate('MetadataProfile'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.METADATA_PROFILE }, { name: 'nextAlbum', - label: translate('NextAlbum'), + label: () => translate('NextAlbum'), type: filterBuilderTypes.DATE, valueType: filterBuilderValueTypes.DATE }, { name: 'lastAlbum', - label: translate('LastAlbum'), + label: () => translate('LastAlbum'), type: filterBuilderTypes.DATE, valueType: filterBuilderValueTypes.DATE }, { name: 'added', - label: translate('Added'), + label: () => translate('Added'), type: filterBuilderTypes.DATE, valueType: filterBuilderValueTypes.DATE }, { name: 'albumCount', - label: translate('AlbumCount'), + label: () => translate('AlbumCount'), type: filterBuilderTypes.NUMBER }, { name: 'trackProgress', - label: translate('TrackProgress'), + label: () => translate('TrackProgress'), type: filterBuilderTypes.NUMBER }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), type: filterBuilderTypes.STRING }, { name: 'sizeOnDisk', - label: translate('SizeOnDisk'), + label: () => translate('SizeOnDisk'), type: filterBuilderTypes.NUMBER, valueType: filterBuilderValueTypes.BYTES }, { name: 'genres', - label: translate('Genres'), + label: () => translate('Genres'), type: filterBuilderTypes.ARRAY, optionsSelector: function(items) { const tagList = items.reduce((acc, artist) => { @@ -326,12 +326,12 @@ export const defaultState = { }, { name: 'ratings', - label: translate('Rating'), + label: () => translate('Rating'), type: filterBuilderTypes.NUMBER }, { name: 'tags', - label: translate('Tags'), + label: () => translate('Tags'), type: filterBuilderTypes.ARRAY, valueType: filterBuilderValueTypes.TAG } diff --git a/frontend/src/Store/Actions/blocklistActions.js b/frontend/src/Store/Actions/blocklistActions.js index 06d870983..217ee7f64 100644 --- a/frontend/src/Store/Actions/blocklistActions.js +++ b/frontend/src/Store/Actions/blocklistActions.js @@ -33,19 +33,19 @@ export const defaultState = { columns: [ { name: 'artists.sortName', - label: translate('ArtistName'), + label: () => translate('ArtistName'), isSortable: true, isVisible: true }, { name: 'sourceTitle', - label: translate('SourceTitle'), + label: () => translate('SourceTitle'), isSortable: true, isVisible: true }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isVisible: true }, { @@ -56,19 +56,19 @@ export const defaultState = { }, { name: 'date', - label: translate('Date'), + label: () => translate('Date'), isSortable: true, isVisible: true }, { name: 'indexer', - label: translate('Indexer'), + label: () => translate('Indexer'), isSortable: true, isVisible: false }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } diff --git a/frontend/src/Store/Actions/calendarActions.js b/frontend/src/Store/Actions/calendarActions.js index b7215ea76..d473f1368 100644 --- a/frontend/src/Store/Actions/calendarActions.js +++ b/frontend/src/Store/Actions/calendarActions.js @@ -51,7 +51,7 @@ export const defaultState = { filters: [ { key: 'all', - label: translate('All'), + label: () => translate('All'), filters: [ { key: 'monitored', @@ -62,7 +62,7 @@ export const defaultState = { }, { key: 'monitored', - label: translate('MonitoredOnly'), + label: () => translate('MonitoredOnly'), filters: [ { key: 'monitored', diff --git a/frontend/src/Store/Actions/historyActions.js b/frontend/src/Store/Actions/historyActions.js index 86e4c984e..9dc212645 100644 --- a/frontend/src/Store/Actions/historyActions.js +++ b/frontend/src/Store/Actions/historyActions.js @@ -32,30 +32,30 @@ export const defaultState = { columns: [ { name: 'eventType', - columnLabel: translate('EventType'), + columnLabel: () => translate('EventType'), isVisible: true, isModifiable: false }, { name: 'artists.sortName', - label: translate('Artist'), + label: () => translate('Artist'), isSortable: true, isVisible: true }, { name: 'albums.title', - label: translate('AlbumTitle'), + label: () => translate('AlbumTitle'), isSortable: true, isVisible: true }, { name: 'trackTitle', - label: translate('TrackTitle'), + label: () => translate('TrackTitle'), isVisible: true }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isVisible: true }, { @@ -66,28 +66,28 @@ export const defaultState = { }, { name: 'date', - label: translate('Date'), + label: () => translate('Date'), isSortable: true, isVisible: true }, { name: 'downloadClient', - label: translate('DownloadClient'), + label: () => translate('DownloadClient'), isVisible: false }, { name: 'indexer', - label: translate('Indexer'), + label: () => translate('Indexer'), isVisible: false }, { name: 'releaseGroup', - label: translate('ReleaseGroup'), + label: () => translate('ReleaseGroup'), isVisible: false }, { name: 'sourceTitle', - label: translate('SourceTitle'), + label: () => translate('SourceTitle'), isVisible: false }, { @@ -106,7 +106,7 @@ export const defaultState = { }, { name: 'details', - columnLabel: translate('Details'), + columnLabel: () => translate('Details'), isVisible: true, isModifiable: false } @@ -117,12 +117,12 @@ export const defaultState = { filters: [ { key: 'all', - label: translate('All'), + label: () => translate('All'), filters: [] }, { key: 'grabbed', - label: translate('Grabbed'), + label: () => translate('Grabbed'), filters: [ { key: 'eventType', @@ -133,7 +133,7 @@ export const defaultState = { }, { key: 'trackFileImported', - label: translate('TrackImported'), + label: () => translate('TrackImported'), filters: [ { key: 'eventType', @@ -144,7 +144,7 @@ export const defaultState = { }, { key: 'failed', - label: translate('DownloadFailed'), + label: () => translate('DownloadFailed'), filters: [ { key: 'eventType', @@ -155,7 +155,7 @@ export const defaultState = { }, { key: 'importFailed', - label: translate('ImportFailed'), + label: () => translate('ImportFailed'), filters: [ { key: 'eventType', @@ -166,7 +166,7 @@ export const defaultState = { }, { key: 'downloadImported', - label: translate('DownloadImported'), + label: () => translate('DownloadImported'), filters: [ { key: 'eventType', @@ -177,7 +177,7 @@ export const defaultState = { }, { key: 'deleted', - label: translate('Deleted'), + label: () => translate('Deleted'), filters: [ { key: 'eventType', @@ -188,7 +188,7 @@ export const defaultState = { }, { key: 'renamed', - label: translate('Renamed'), + label: () => translate('Renamed'), filters: [ { key: 'eventType', @@ -199,7 +199,7 @@ export const defaultState = { }, { key: 'retagged', - label: translate('Retagged'), + label: () => translate('Retagged'), filters: [ { key: 'eventType', @@ -210,7 +210,7 @@ export const defaultState = { }, { key: 'ignored', - label: translate('Ignored'), + label: () => translate('Ignored'), filters: [ { key: 'eventType', diff --git a/frontend/src/Store/Actions/queueActions.js b/frontend/src/Store/Actions/queueActions.js index 0a72718d9..dc20da73d 100644 --- a/frontend/src/Store/Actions/queueActions.js +++ b/frontend/src/Store/Actions/queueActions.js @@ -60,32 +60,32 @@ export const defaultState = { columns: [ { name: 'status', - columnLabel: translate('Status'), + columnLabel: () => translate('Status'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'artists.sortName', - label: translate('Artist'), + label: () => translate('Artist'), isSortable: true, isVisible: true }, { name: 'albums.title', - label: translate('AlbumTitle'), + label: () => translate('AlbumTitle'), isSortable: true, isVisible: true }, { name: 'albums.releaseDate', - label: translate('AlbumReleaseDate'), + label: () => translate('AlbumReleaseDate'), isSortable: true, isVisible: false }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isSortable: true, isVisible: true }, @@ -97,7 +97,7 @@ export const defaultState = { }, { name: 'customFormatScore', - columnLabel: translate('CustomFormatScore'), + columnLabel: () => translate('CustomFormatScore'), label: React.createElement(Icon, { name: icons.SCORE, title: () => translate('CustomFormatScore') @@ -106,55 +106,55 @@ export const defaultState = { }, { name: 'protocol', - label: translate('Protocol'), + label: () => translate('Protocol'), isSortable: true, isVisible: false }, { name: 'indexer', - label: translate('Indexer'), + label: () => translate('Indexer'), isSortable: true, isVisible: false }, { name: 'downloadClient', - label: translate('DownloadClient'), + label: () => translate('DownloadClient'), isSortable: true, isVisible: false }, { name: 'title', - label: translate('ReleaseTitle'), + label: () => translate('ReleaseTitle'), isSortable: true, isVisible: false }, { name: 'size', - label: translate('Size'), + label: () => translate('Size'), isSortable: true, isVisibile: false }, { name: 'outputPath', - label: translate('OutputPath'), + label: () => translate('OutputPath'), isSortable: false, isVisible: false }, { name: 'estimatedCompletionTime', - label: translate('TimeLeft'), + label: () => translate('TimeLeft'), isSortable: true, isVisible: true }, { name: 'progress', - label: translate('Progress'), + label: () => translate('Progress'), isSortable: true, isVisible: true }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } diff --git a/frontend/src/Store/Actions/releaseActions.js b/frontend/src/Store/Actions/releaseActions.js index c4729368a..1c9b6f5ef 100644 --- a/frontend/src/Store/Actions/releaseActions.js +++ b/frontend/src/Store/Actions/releaseActions.js @@ -52,12 +52,12 @@ export const defaultState = { filters: [ { key: 'all', - label: translate('All'), + label: () => translate('All'), filters: [] }, { key: 'discography-pack', - label: translate('Discography'), + label: () => translate('Discography'), filters: [ { key: 'discography', @@ -68,7 +68,7 @@ export const defaultState = { }, { key: 'not-discography-pack', - label: translate('NotDiscography'), + label: () => translate('NotDiscography'), filters: [ { key: 'discography', @@ -155,56 +155,56 @@ export const defaultState = { filterBuilderProps: [ { name: 'title', - label: translate('Title'), + label: () => translate('Title'), type: filterBuilderTypes.STRING }, { name: 'age', - label: translate('Age'), + label: () => translate('Age'), type: filterBuilderTypes.NUMBER }, { name: 'protocol', - label: translate('Protocol'), + label: () => translate('Protocol'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.PROTOCOL }, { name: 'indexerId', - label: translate('Indexer'), + label: () => translate('Indexer'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.INDEXER }, { name: 'size', - label: translate('Size'), + label: () => translate('Size'), type: filterBuilderTypes.NUMBER, valueType: filterBuilderValueTypes.BYTES }, { name: 'seeders', - label: translate('Seeders'), + label: () => translate('Seeders'), type: filterBuilderTypes.NUMBER }, { name: 'leechers', - label: translate('Peers'), + label: () => translate('Peers'), type: filterBuilderTypes.NUMBER }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), type: filterBuilderTypes.EXACT, valueType: filterBuilderValueTypes.QUALITY }, { name: 'customFormatScore', - label: translate('CustomFormatScore'), + label: () => translate('CustomFormatScore'), type: filterBuilderTypes.NUMBER }, { name: 'rejectionCount', - label: translate('RejectionCount'), + label: () => translate('RejectionCount'), type: filterBuilderTypes.NUMBER } ], diff --git a/frontend/src/Store/Actions/systemActions.js b/frontend/src/Store/Actions/systemActions.js index 4910e462d..92360b589 100644 --- a/frontend/src/Store/Actions/systemActions.js +++ b/frontend/src/Store/Actions/systemActions.js @@ -82,34 +82,34 @@ export const defaultState = { columns: [ { name: 'level', - columnLabel: translate('Level'), + columnLabel: () => translate('Level'), isSortable: false, isVisible: true, isModifiable: false }, { name: 'time', - label: translate('Time'), + label: () => translate('Time'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'logger', - label: translate('Component'), + label: () => translate('Component'), isSortable: false, isVisible: true, isModifiable: false }, { name: 'message', - label: translate('Message'), + label: () => translate('Message'), isVisible: true, isModifiable: false }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isSortable: true, isVisible: true, isModifiable: false @@ -121,12 +121,12 @@ export const defaultState = { filters: [ { key: 'all', - label: translate('All'), + label: () => translate('All'), filters: [] }, { key: 'info', - label: translate('Info'), + label: () => translate('Info'), filters: [ { key: 'level', @@ -137,7 +137,7 @@ export const defaultState = { }, { key: 'warn', - label: translate('Warn'), + label: () => translate('Warn'), filters: [ { key: 'level', @@ -148,7 +148,7 @@ export const defaultState = { }, { key: 'error', - label: translate('Error'), + label: () => translate('Error'), filters: [ { key: 'level', diff --git a/frontend/src/Store/Actions/trackActions.js b/frontend/src/Store/Actions/trackActions.js index 03b6dab29..3522939eb 100644 --- a/frontend/src/Store/Actions/trackActions.js +++ b/frontend/src/Store/Actions/trackActions.js @@ -30,32 +30,32 @@ export const defaultState = { columns: [ { name: 'medium', - label: translate('Medium'), + label: () => translate('Medium'), isVisible: false }, { name: 'absoluteTrackNumber', - label: translate('Track'), + label: () => translate('Track'), isVisible: true }, { name: 'title', - label: translate('Title'), + label: () => translate('Title'), isVisible: true }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), isVisible: false }, { name: 'duration', - label: translate('Duration'), + label: () => translate('Duration'), isVisible: true }, { name: 'audioInfo', - label: translate('AudioInfo'), + label: () => translate('AudioInfo'), isVisible: true }, { @@ -65,7 +65,7 @@ export const defaultState = { }, { name: 'customFormatScore', - columnLabel: translate('CustomFormatScore'), + columnLabel: () => translate('CustomFormatScore'), label: React.createElement(Icon, { name: icons.SCORE, title: () => translate('CustomFormatScore') @@ -74,12 +74,12 @@ export const defaultState = { }, { name: 'status', - label: translate('Status'), + label: () => translate('Status'), isVisible: true }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } diff --git a/frontend/src/Store/Actions/trackFileActions.js b/frontend/src/Store/Actions/trackFileActions.js index 2530c5879..f4af704ee 100644 --- a/frontend/src/Store/Actions/trackFileActions.js +++ b/frontend/src/Store/Actions/trackFileActions.js @@ -52,32 +52,32 @@ export const defaultState = { }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), isSortable: true, isVisible: true, isModifiable: false }, { name: 'size', - label: translate('Size'), + label: () => translate('Size'), isSortable: true, isVisible: true }, { name: 'dateAdded', - label: translate('DateAdded'), + label: () => translate('DateAdded'), isSortable: true, isVisible: true }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isSortable: true, isVisible: true }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } diff --git a/frontend/src/Store/Actions/wantedActions.js b/frontend/src/Store/Actions/wantedActions.js index da7fd2162..35aa162d4 100644 --- a/frontend/src/Store/Actions/wantedActions.js +++ b/frontend/src/Store/Actions/wantedActions.js @@ -30,25 +30,25 @@ export const defaultState = { columns: [ { name: 'artists.sortName', - label: translate('ArtistName'), + label: () => translate('ArtistName'), isSortable: true, isVisible: true }, { name: 'albums.title', - label: translate('AlbumTitle'), + label: () => translate('AlbumTitle'), isSortable: true, isVisible: true }, { name: 'albumType', - label: translate('AlbumType'), + label: () => translate('AlbumType'), isSortable: true, isVisible: true }, { name: 'releaseDate', - label: translate('ReleaseDate'), + label: () => translate('ReleaseDate'), isSortable: true, isVisible: true }, @@ -59,7 +59,7 @@ export const defaultState = { // }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } @@ -70,7 +70,7 @@ export const defaultState = { filters: [ { key: 'monitored', - label: translate('Monitored'), + label: () => translate('Monitored'), filters: [ { key: 'monitored', @@ -81,7 +81,7 @@ export const defaultState = { }, { key: 'unmonitored', - label: translate('Unmonitored'), + label: () => translate('Unmonitored'), filters: [ { key: 'monitored', @@ -104,25 +104,25 @@ export const defaultState = { columns: [ { name: 'artists.sortName', - label: translate('ArtistName'), + label: () => translate('ArtistName'), isSortable: true, isVisible: true }, { name: 'albums.title', - label: translate('AlbumTitle'), + label: () => translate('AlbumTitle'), isSortable: true, isVisible: true }, { name: 'albumType', - label: translate('AlbumType'), + label: () => translate('AlbumType'), isSortable: true, isVisible: true }, { name: 'releaseDate', - label: translate('ReleaseDate'), + label: () => translate('ReleaseDate'), isSortable: true, isVisible: true }, @@ -133,7 +133,7 @@ export const defaultState = { // }, { name: 'actions', - columnLabel: translate('Actions'), + columnLabel: () => translate('Actions'), isVisible: true, isModifiable: false } @@ -144,7 +144,7 @@ export const defaultState = { filters: [ { key: 'monitored', - label: translate('Monitored'), + label: () => translate('Monitored'), filters: [ { key: 'monitored', @@ -155,7 +155,7 @@ export const defaultState = { }, { key: 'unmonitored', - label: translate('Unmonitored'), + label: () => translate('Unmonitored'), filters: [ { key: 'monitored',