diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index 423fa014..863a4717 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -8,7 +8,7 @@ <%def name="headerIncludes()">
- Refresh Artist + Refresh Artist Delete Artist %if artist['Status'] == 'Paused': Resume Artist @@ -42,14 +42,8 @@
-

- %if artist['Status'] == 'Loading': - - %endif - ${artist['ArtistName']} - %if artist['Status'] == 'Loading': -

(Album information for this artist is currently being loaded)

- %endif +

+ ${artist['ArtistName']}

@@ -156,9 +150,6 @@ <%def name="headIncludes()"> - %if artist['Status'] == 'Loading': - - %endif <%def name="javascriptIncludes()"> @@ -171,7 +162,6 @@ getInfo(elem,id,'artist'); } - <% if headphones.SONGKICK_FILTER_ENABLED: songkick_filter_enabled = "true" @@ -240,6 +230,40 @@ }); } + var loadingMessage = false; + var spinner_active = false; + var loadingtext_active = false; + + function checkArtistStatus() { + $.getJSON("getArtistjson?ArtistID=${artist['ArtistID']}", function(data) { + if (data['Status'] == "Loading"){ + refreshTable(); + $('#artistnamelink').text(data["ArtistName"]); + if (loadingMessage == false){ + showMsg("Getting artist information",true); + loadingMessage = true; + } + if (spinner_active == false){ + $('#artistname').prepend('') + spinner_active = true; + } + if (loadingtext_active == false){ + $('#artistname').append('

(Album information for this artist is currently being loaded)

') + loadingtext_active = true; + } + } + else{ + $('#artistnamespinner').remove() + $('#loadingtext').remove() + $('#ajaxMsg').empty() + $('#ajaxMsg').removeAttr('style') + spinner_active = false + loadingtext_active = false + loadingMessage = false + } + }); + } + function initThisPage() { $('#menu_link_getextra').click(function() { $('#dialog').dialog(); @@ -248,10 +272,6 @@ $('#menu_link_modifyextra').click(function() { $('#dialog').dialog(); }); - - %if artist['Status'] == 'Loading': - showMsg("Getting artist information",true); - %endif $('#album_table').dataTable({ "bDestroy": true, "aoColumns": [ @@ -291,8 +311,12 @@ initThisPage(); getArtistBio(); if( ${songkick_enabled} ){ - getArtistsCalendar(); - } + getArtistsCalendar(); + } + checkArtistStatus(); + setInterval(function(){ + checkArtistStatus(); + }, 1500); }); diff --git a/data/interfaces/default/js/script.js b/data/interfaces/default/js/script.js index c28faf15..b2e56b52 100644 --- a/data/interfaces/default/js/script.js +++ b/data/interfaces/default/js/script.js @@ -334,6 +334,10 @@ function doAjaxCall(url,elem,reload,form) { }); } +function doSimpleAjaxCall(url) { + $.ajax(url); +} + function resetFilters(text){ if ( $(".dataTables_filter").length > 0 ) { $(".dataTables_filter input").attr("placeholder","filter " + text + ""); diff --git a/headphones/webserve.py b/headphones/webserve.py index 39ddb88f..6db4c1f3 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -854,6 +854,16 @@ class WebInterface(object): return json_albums getAlbumsByArtist_json.exposed=True + def getArtistjson(self, ArtistID, **kwargs): + myDB = db.DBConnection() + artist = myDB.action('SELECT * FROM artists WHERE ArtistID=?', [ArtistID]).fetchone() + artist_json = json.dumps({ + 'ArtistName': artist['ArtistName'], + 'Status': artist['Status'] + }) + return artist_json + getArtistjson.exposed=True + def clearhistory(self, type=None, date_added=None, title=None): myDB = db.DBConnection() if type: