diff --git a/data/interfaces/default/css/style.css b/data/interfaces/default/css/style.css index e171b4db..635eb14b 100644 --- a/data/interfaces/default/css/style.css +++ b/data/interfaces/default/css/style.css @@ -876,6 +876,10 @@ div#artistheader h2 a { min-width: 300px; text-align: left; } +#artist_table th#albumart{ + width:50px; +} + #artist_table th#status, #artist_table th#albumart, #artist_table th#lastupdated { diff --git a/data/interfaces/default/index.html b/data/interfaces/default/index.html index f63a2cad..09e09b00 100644 --- a/data/interfaces/default/index.html +++ b/data/interfaces/default/index.html @@ -8,10 +8,10 @@ - Artist Name - Status - Latest Album - Have + Artist Name + Status + Latest Album + Have @@ -49,15 +49,79 @@ return '
'; } }, - {"aTargets":[1],"mDataProp":"ArtistSortName"}, + { + "aTargets":[1], + "mDataProp":"ArtistSortName", + "mRender":function (data,type,full) { + + return '' + data + '' + } + }, {"aTargets":[2],"mDataProp":"Status"}, - {"aTargets":[3],"mDataProp":"LatestAlbum"}, - {"aTargets":[4],"mDataProp":"HaveTracks"}, + { + "aTargets":[3], + "mDataProp":"LatestAlbum", + "mRender":function(data,type,full){ + artist = full; + if (artist['ReleaseDate'] && artist['LatestAlbum']) + { + releasedate = artist['ReleaseDate']; + albumdisplay = '' + artist['LatestAlbum'] + ' (' + artist['ReleaseDate'] + ')'; + } + else if(artist['LatestAlbum']) + { + releasedate = ''; + albumdisplay = '' + artist['LatestAlbum'] + ''; + } + else + { + releasedate = ''; + albumdisplay = 'None'; + } + if (artist['ReleaseInFuture'] === 'True') + { + grade = 'gradeA'; + } + else + { + grade = 'gradeZ'; + } + artist['Grade'] = grade; + return '' + albumdisplay + '' + } + + + }, + { + "aTargets":[4], + "mDataProp":"HaveTracks", + "mRender":function(data,type,full){ + if(full['TotalTracks'] > 0) + { + percent = (full['HaveTracks']*100.0)/full['TotalTracks'] + if(percent > 100){ + percent = 100; + } + } + else + { + full['TotalTracks'] = '?'; + percent = 0; + } + + return '
' + full['HaveTracks'] + '/' + full['TotalTracks'] + '
'; + + }}, ], "oLanguage": { - "sSearch": ""}, + "sSearch": "", + "sLengthMenu":"Show _MENU_ artists per page", + "sInfo":"Showing _START_ to _END_ of _TOTAL_ artists", + "sInfoEmpty":"Showing 0 to 0 of 0 artists", + "sInfoFiltered":"(filtered from _MAX_ total artists)" + }, "bStateSave": true, "iDisplayLength": 50, "sPaginationType": "full_numbers", @@ -65,6 +129,12 @@ "bServerSide": true, "sAjaxSource": 'getArtists.json', "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ){ + $('td', nRow).closest('tr').addClass(aData['Grade']) + nRow.children[0].id = 'albumart'; + nRow.children[1].id = 'name'; + nRow.children[2].id = 'status' + nRow.children[3].id = 'album' + nRow.children[4].id = 'have' return nRow; }, "fnServerData": function ( sSource, aoData, fnCallback ) { diff --git a/headphones/webserve.py b/headphones/webserve.py index 5926dfe9..5899ab4c 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -26,7 +26,7 @@ import threading import headphones from headphones import logger, searcher, db, importer, mb, lastfm, librarysync -from headphones.helpers import checked, radio +from headphones.helpers import checked, radio,today import lib.simplejson as simplejson import json @@ -451,8 +451,8 @@ class WebInterface(object): filtered = myDB.select('SELECT * from artists order by ArtistSortName COLLATE NOCASE') totalcount = len(filtered) else: - filtered = myDB.select('SELECT * from artists order by ArtistSortName WHERE ArtistSortName LIKE %s OR LatestAlbum LIKE %s COLLATE NOCASE' % (sSearch,sSearch)) - totalcount = myDB.select('SELECT COUNT(*) from artists') + filtered = myDB.select('SELECT * from artists WHERE ArtistSortName LIKE "%' + sSearch + '%" OR LatestAlbum LIKE "%' + sSearch +'%" order by ArtistSortName COLLATE NOCASE') + totalcount = myDB.select('SELECT COUNT(*) from artists')[0][0] sortcolumn = 0 if iSortCol_0 == '1': @@ -470,14 +470,20 @@ class WebInterface(object): "HaveTracks":artist["HaveTracks"] if 'HaveTracks' in artist else 0, "LatestAlbum":"", "ReleaseDate":"", + "ReleaseInFuture":"False", + "AlbumID":"", } if artist['ReleaseDate'] and artist['LatestAlbum']: row['ReleaseDate'] = artist['ReleaseDate'] row['LatestAlbum'] = artist['LatestAlbum'] + row['AlbumID'] = artist['AlbumID'] + if artist['ReleaseDate'] > today(): + row['ReleaseInFuture'] = "True" elif artist['LatestAlbum']: row['ReleaseDate'] = '' row['LatestAlbum'] = artist['LatestAlbum'] + row['AlbumID'] = artist['AlbumID'] rows.append(row)