mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-14 02:37:08 -07:00
Tweak Wanted Page, Missing Query (#15)
Fix wanted page query so it only pulls albums with missing tracks, Correct Album header on wanted page, Implement albumtitle cell to allow click on album.
This commit is contained in:
parent
f12e27a702
commit
66ad301892
3 changed files with 91 additions and 14 deletions
|
@ -48,7 +48,9 @@ namespace NzbDrone.Core.Music
|
|||
{
|
||||
var currentTime = DateTime.UtcNow;
|
||||
|
||||
pagingSpec.TotalRecords = GetMissingAlbumsQuery(pagingSpec, currentTime).GetRowCount();
|
||||
//pagingSpec.TotalRecords = GetMissingAlbumsQuery(pagingSpec, currentTime).GetRowCount(); Cant Use GetRowCount with a Manual Query
|
||||
|
||||
pagingSpec.TotalRecords = GetMissingAlbumsQueryCount(pagingSpec, currentTime);
|
||||
pagingSpec.Records = GetMissingAlbumsQuery(pagingSpec, currentTime).ToList();
|
||||
|
||||
return pagingSpec;
|
||||
|
@ -70,21 +72,67 @@ namespace NzbDrone.Core.Music
|
|||
return query.ToList();
|
||||
}
|
||||
|
||||
private SortBuilder<Album> GetMissingAlbumsQuery(PagingSpec<Album> pagingSpec, DateTime currentTime)
|
||||
private QueryBuilder<Album> GetMissingAlbumsQuery(PagingSpec<Album> pagingSpec, DateTime currentTime)
|
||||
{
|
||||
return Query.Join<Album, Artist>(JoinType.Inner, e => e.Artist, (e, s) => e.ArtistId == s.Id)
|
||||
.Where<Album>(pagingSpec.FilterExpression)
|
||||
|
||||
.AndWhere(BuildReleaseDateCutoffWhereClause(currentTime))
|
||||
//.Where<Track>(t => t.TrackFileId == 0)
|
||||
.OrderBy(pagingSpec.OrderByClause(), pagingSpec.ToSortDirection())
|
||||
.Skip(pagingSpec.PagingOffset())
|
||||
.Take(pagingSpec.PageSize);
|
||||
string sortKey;
|
||||
int monitored = 0;
|
||||
|
||||
if (pagingSpec.FilterExpression.ToString().Contains("True"))
|
||||
{
|
||||
monitored = 1;
|
||||
}
|
||||
|
||||
if (pagingSpec.SortKey == "releaseDate")
|
||||
{
|
||||
sortKey = "[t0]." + pagingSpec.SortKey;
|
||||
}
|
||||
else if (pagingSpec.SortKey == "artist.sortName")
|
||||
{
|
||||
sortKey = "[t1]." + pagingSpec.SortKey.Split('.').Last();
|
||||
}
|
||||
else
|
||||
{
|
||||
sortKey = "[t0].releaseDate";
|
||||
}
|
||||
|
||||
string query = string.Format("SELECT * FROM Albums [t0] INNER JOIN Artists [t1] ON ([t0].[ArtistId] = [t1].[Id])" +
|
||||
"WHERE (([t0].[Monitored] = {0}) AND ([t1].[Monitored] = {0})) AND {1}" +
|
||||
" AND NOT EXISTS (SELECT 1 from Tracks [t2] WHERE [t2].albumId = [t0].id AND [t2].trackFileId <> 0) ORDER BY {2} {3} LIMIT {4} OFFSET {5}",
|
||||
monitored, BuildReleaseDateCutoffWhereClause(currentTime), sortKey, pagingSpec.ToSortDirection(), pagingSpec.PageSize, pagingSpec.PagingOffset());
|
||||
|
||||
return Query.QueryText(query);
|
||||
|
||||
//Use Manual Query until we find a way to "NOT EXIST(SELECT 1 from Tracks WHERE [t2].trackFileId <> 0)"
|
||||
|
||||
//return Query.Join<Album, Artist>(JoinType.Inner, e => e.Artist, (e, s) => e.ArtistId == s.Id)
|
||||
// .Where<Album>(pagingSpec.FilterExpression)
|
||||
// .AndWhere(BuildReleaseDateCutoffWhereClause(currentTime))
|
||||
// //.Where<Track>(t => t.TrackFileId == 0)
|
||||
// .OrderBy(pagingSpec.OrderByClause(), pagingSpec.ToSortDirection())
|
||||
// .Skip(pagingSpec.PagingOffset())
|
||||
// .Take(pagingSpec.PageSize);
|
||||
}
|
||||
|
||||
private int GetMissingAlbumsQueryCount(PagingSpec<Album> pagingSpec, DateTime currentTime)
|
||||
{
|
||||
var monitored = 0;
|
||||
|
||||
if (pagingSpec.FilterExpression.ToString().Contains("True"))
|
||||
{
|
||||
monitored = 1;
|
||||
}
|
||||
|
||||
string query = string.Format("SELECT * FROM Albums [t0] INNER JOIN Artists [t1] ON ([t0].[ArtistId] = [t1].[Id])" +
|
||||
"WHERE (([t0].[Monitored] = {0}) AND ([t1].[Monitored] = {0})) AND {1}" +
|
||||
" AND NOT EXISTS (SELECT 1 from Tracks [t2] WHERE [t2].albumId = [t0].id AND [t2].trackFileId <> 0)",
|
||||
monitored, BuildReleaseDateCutoffWhereClause(currentTime));
|
||||
|
||||
return Query.QueryText(query).Count();
|
||||
}
|
||||
|
||||
private string BuildReleaseDateCutoffWhereClause(DateTime currentTime)
|
||||
{
|
||||
return string.Format("WHERE datetime(strftime('%s', [t0].[ReleaseDate]), 'unixepoch') <= '{0}'",
|
||||
return string.Format("datetime(strftime('%s', [t0].[ReleaseDate]), 'unixepoch') <= '{0}'",
|
||||
currentTime.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
}
|
||||
|
||||
|
|
29
src/UI/Cells/AlbumTitleCell.js
Normal file
29
src/UI/Cells/AlbumTitleCell.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
var vent = require('vent');
|
||||
var NzbDroneCell = require('./NzbDroneCell');
|
||||
|
||||
module.exports = NzbDroneCell.extend({
|
||||
className : 'album-title-cell',
|
||||
|
||||
events : {
|
||||
'click' : '_showDetails'
|
||||
},
|
||||
|
||||
render : function() {
|
||||
var title = this.cellValue.get('title');
|
||||
|
||||
if (!title || title === '') {
|
||||
title = 'TBA';
|
||||
}
|
||||
|
||||
this.$el.html(title);
|
||||
return this;
|
||||
},
|
||||
|
||||
_showDetails : function() {
|
||||
var hideArtistLink = this.column.get('hideArtistLink');
|
||||
vent.trigger(vent.Commands.ShowAlbumDetails, {
|
||||
album : this.cellValue,
|
||||
hideArtistLink : hideArtistLink
|
||||
});
|
||||
}
|
||||
});
|
|
@ -7,7 +7,7 @@ var MissingCollection = require('./MissingCollection');
|
|||
var SelectAllCell = require('../../Cells/SelectAllCell');
|
||||
var ArtistTitleCell = require('../../Cells/ArtistTitleCell');
|
||||
var EpisodeNumberCell = require('../../Cells/EpisodeNumberCell');
|
||||
var EpisodeTitleCell = require('../../Cells/EpisodeTitleCell');
|
||||
var AlbumTitleCell = require('../../Cells/AlbumTitleCell');
|
||||
var RelativeDateCell = require('../../Cells/RelativeDateCell');
|
||||
var EpisodeStatusCell = require('../../Cells/EpisodeStatusCell');
|
||||
var GridPager = require('../../Shared/Grid/Pager');
|
||||
|
@ -53,8 +53,8 @@ module.exports = Marionette.Layout.extend({
|
|||
// },
|
||||
{
|
||||
name : 'this',
|
||||
label : 'Track Title',
|
||||
cell : EpisodeTitleCell,
|
||||
label : 'Album Title',
|
||||
cell : AlbumTitleCell,
|
||||
sortable : false
|
||||
},
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue