Skip to content

Commit

Permalink
New: Custom Format Score column in queue
Browse files Browse the repository at this point in the history
(cherry picked from commit a6f2db9139c4a6b01d162ccf8884fc02c874b4cf)

Closes #3843
Closes #3852
  • Loading branch information
jack-mil authored and mynameisbogdan committed Jul 11, 2023
1 parent 5903f57 commit bdea4bf
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 2 deletions.
6 changes: 6 additions & 0 deletions frontend/src/Activity/Queue/QueueRow.css
Expand Up @@ -16,6 +16,12 @@
width: 150px;
}

.customFormatScore {
composes: cell from '~Components/Table/Cells/TableRowCell.css';

width: 55px;
}

.actions {
composes: cell from '~Components/Table/Cells/TableRowCell.css';

Expand Down
1 change: 1 addition & 0 deletions frontend/src/Activity/Queue/QueueRow.css.d.ts
Expand Up @@ -2,6 +2,7 @@
// Please do not change this file!
interface CssExports {
'actions': string;
'customFormatScore': string;
'progress': string;
'protocol': string;
'quality': string;
Expand Down
14 changes: 14 additions & 0 deletions frontend/src/Activity/Queue/QueueRow.js
Expand Up @@ -17,6 +17,7 @@ import Popover from 'Components/Tooltip/Popover';
import { icons, kinds, tooltipPositions } from 'Helpers/Props';
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
import formatBytes from 'Utilities/Number/formatBytes';
import formatPreferredWordScore from 'Utilities/Number/formatPreferredWordScore';
import translate from 'Utilities/String/translate';
import QueueStatusCell from './QueueStatusCell';
import RemoveQueueItemModal from './RemoveQueueItemModal';
Expand Down Expand Up @@ -91,6 +92,7 @@ class QueueRow extends Component {
album,
quality,
customFormats,
customFormatScore,
protocol,
indexer,
outputPath,
Expand Down Expand Up @@ -226,6 +228,17 @@ class QueueRow extends Component {
);
}

if (name === 'customFormatScore') {
return (
<TableRowCell
key={name}
className={styles.customFormatScore}
>
{formatPreferredWordScore(customFormatScore)}
</TableRowCell>
);
}

if (name === 'protocol') {
return (
<TableRowCell key={name}>
Expand Down Expand Up @@ -395,6 +408,7 @@ QueueRow.propTypes = {
album: PropTypes.object,
quality: PropTypes.object.isRequired,
customFormats: PropTypes.arrayOf(PropTypes.object),
customFormatScore: PropTypes.number.isRequired,
protocol: PropTypes.string.isRequired,
indexer: PropTypes.string,
outputPath: PropTypes.string,
Expand Down
13 changes: 12 additions & 1 deletion frontend/src/Store/Actions/queueActions.js
@@ -1,7 +1,9 @@
import _ from 'lodash';
import React from 'react';
import { createAction } from 'redux-actions';
import { batchActions } from 'redux-batched-actions';
import { sortDirections } from 'Helpers/Props';
import Icon from 'Components/Icon';
import { icons, sortDirections } from 'Helpers/Props';
import { createThunk, handleThunks } from 'Store/thunks';
import createAjaxRequest from 'Utilities/createAjaxRequest';
import serverSideCollectionHandlers from 'Utilities/serverSideCollectionHandlers';
Expand Down Expand Up @@ -93,6 +95,15 @@ export const defaultState = {
isSortable: false,
isVisible: true
},
{
name: 'customFormatScore',
columnLabel: translate('CustomFormatScore'),
label: React.createElement(Icon, {
name: icons.SCORE,
title: translate('CustomFormatScore')
}),
isVisible: false
},
{
name: 'protocol',
label: translate('Protocol'),
Expand Down
7 changes: 6 additions & 1 deletion src/Lidarr.Api.V1/Queue/QueueResource.cs
Expand Up @@ -20,6 +20,7 @@ public class QueueResource : RestResource
public AlbumResource Album { get; set; }
public QualityModel Quality { get; set; }
public List<CustomFormatResource> CustomFormats { get; set; }
public int CustomFormatScore { get; set; }
public decimal Size { get; set; }
public string Title { get; set; }
public decimal Sizeleft { get; set; }
Expand Down Expand Up @@ -47,6 +48,9 @@ public static QueueResource ToResource(this NzbDrone.Core.Queue.Queue model, boo
return null;
}

var customFormats = model.RemoteAlbum?.CustomFormats;
var customFormatScore = model.Artist?.QualityProfile?.Value?.CalculateCustomFormatScore(customFormats) ?? 0;

return new QueueResource
{
Id = model.Id,
Expand All @@ -55,7 +59,8 @@ public static QueueResource ToResource(this NzbDrone.Core.Queue.Queue model, boo
Artist = includeArtist && model.Artist != null ? model.Artist.ToResource() : null,
Album = includeAlbum && model.Album != null ? model.Album.ToResource() : null,
Quality = model.Quality,
CustomFormats = model.RemoteAlbum?.CustomFormats?.ToResource(false),
CustomFormats = customFormats?.ToResource(false),
CustomFormatScore = customFormatScore,
Size = model.Size,
Title = model.Title,
Sizeleft = model.Sizeleft,
Expand Down

0 comments on commit bdea4bf

Please sign in to comment.