From 4ca42c9c11614799d1e08ee8d14916376a6747fc Mon Sep 17 00:00:00 2001 From: rembo10 Date: Fri, 18 Apr 2014 00:59:35 -0700 Subject: [PATCH 1/5] Initial changes to stop artist page from refreshing when artist is loading --- data/interfaces/default/artist.html | 59 ++++++++++++++++++++--------- headphones/webserve.py | 6 +++ 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index 423fa014..beb3695d 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -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
@@ -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,41 @@ }); } + var loadingMessage = false; + var spinner_active = false; + var loadingtext_active = false; + + function checkArtistStatus() { + $.ajax({ + url: "getArtistStatus?ArtistID=${artist['ArtistID']}", + complete: function(result) { + if (result.responseText == "Loading"){ + refreshTable(); + 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').remove() + spinner_active = false + loadingtext_active = false + loadingMessage = false + } + } + }); + } + function initThisPage() { $('#menu_link_getextra').click(function() { $('#dialog').dialog(); @@ -248,10 +273,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 +312,12 @@ initThisPage(); getArtistBio(); if( ${songkick_enabled} ){ - getArtistsCalendar(); - } + getArtistsCalendar(); + } + checkArtistStatus(); + setInterval(function(){ + checkArtistStatus(); + }, 3000); }); diff --git a/headphones/webserve.py b/headphones/webserve.py index 39ddb88f..81b06f8a 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -854,6 +854,12 @@ class WebInterface(object): return json_albums getAlbumsByArtist_json.exposed=True + def getArtistStatus(self, ArtistID): + myDB = db.DBConnection() + artist = myDB.action('SELECT Status FROM artists WHERE ArtistID=?', [ArtistID]).fetchone() + return artist['Status'] + getArtistStatus.exposed=True + def clearhistory(self, type=None, date_added=None, title=None): myDB = db.DBConnection() if type: From d80fc36b29cb6ab60be3a4d84a74d3deb8da0034 Mon Sep 17 00:00:00 2001 From: rembo10 Date: Mon, 5 May 2014 15:40:01 -0700 Subject: [PATCH 2/5] Move to json so we can get the artist name as well --- data/interfaces/default/artist.html | 8 +++++--- headphones/webserve.py | 12 ++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index beb3695d..b3d9ad2a 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -43,7 +43,7 @@

- ${artist['ArtistName']} + ${artist['ArtistName']}

@@ -236,10 +236,12 @@ function checkArtistStatus() { $.ajax({ - url: "getArtistStatus?ArtistID=${artist['ArtistID']}", + url: "getArtistjson?ArtistID=${artist['ArtistID']}", + dataType: "jsonp", complete: function(result) { - if (result.responseText == "Loading"){ + if (result.Status == "Loading"){ refreshTable(); + $('#artistnamelink').text(result.ArtistName); if (loadingMessage == false){ showMsg("Getting artist information",true); loadingMessage = true; diff --git a/headphones/webserve.py b/headphones/webserve.py index 81b06f8a..6db4c1f3 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -854,11 +854,15 @@ class WebInterface(object): return json_albums getAlbumsByArtist_json.exposed=True - def getArtistStatus(self, ArtistID): + def getArtistjson(self, ArtistID, **kwargs): myDB = db.DBConnection() - artist = myDB.action('SELECT Status FROM artists WHERE ArtistID=?', [ArtistID]).fetchone() - return artist['Status'] - getArtistStatus.exposed=True + 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() From 0f5aeea345a9790fa8c2286f00dcf0c643684c73 Mon Sep 17 00:00:00 2001 From: rembo10 Date: Mon, 5 May 2014 15:59:47 -0700 Subject: [PATCH 3/5] some fixes --- data/interfaces/default/artist.html | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index b3d9ad2a..e0b0a8f9 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -235,13 +235,11 @@ var loadingtext_active = false; function checkArtistStatus() { - $.ajax({ - url: "getArtistjson?ArtistID=${artist['ArtistID']}", - dataType: "jsonp", - complete: function(result) { - if (result.Status == "Loading"){ + $.getJSON("getArtistjson?ArtistID=${artist['ArtistID']}", function(data) { + if (data['Status'] == "Loading"){ refreshTable(); - $('#artistnamelink').text(result.ArtistName); + showMsg("Getting artist information",true) + $('#artistnamelink').text(data["ArtistName"]); if (loadingMessage == false){ showMsg("Getting artist information",true); loadingMessage = true; @@ -263,8 +261,7 @@ loadingtext_active = false loadingMessage = false } - } - }); + }); } function initThisPage() { From 75b38df3d693285a8bbd4d941e582396ff47b7a7 Mon Sep 17 00:00:00 2001 From: rembo10 Date: Mon, 5 May 2014 16:46:58 -0700 Subject: [PATCH 4/5] Typo --- data/interfaces/default/artist.html | 1 - 1 file changed, 1 deletion(-) diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index e0b0a8f9..c55954bf 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -238,7 +238,6 @@ $.getJSON("getArtistjson?ArtistID=${artist['ArtistID']}", function(data) { if (data['Status'] == "Loading"){ refreshTable(); - showMsg("Getting artist information",true) $('#artistnamelink').text(data["ArtistName"]); if (loadingMessage == false){ showMsg("Getting artist information",true); From f52ec56a0f377d06ae62901c90ddd5cd5b4b4db3 Mon Sep 17 00:00:00 2001 From: rembo10 Date: Mon, 5 May 2014 17:38:18 -0700 Subject: [PATCH 5/5] Couple fixes to get everything looking nice --- data/interfaces/default/artist.html | 7 ++++--- data/interfaces/default/js/script.js | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index c55954bf..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 @@ -255,7 +255,8 @@ else{ $('#artistnamespinner').remove() $('#loadingtext').remove() - $('#ajaxMsg').remove() + $('#ajaxMsg').empty() + $('#ajaxMsg').removeAttr('style') spinner_active = false loadingtext_active = false loadingMessage = false @@ -315,7 +316,7 @@ checkArtistStatus(); setInterval(function(){ checkArtistStatus(); - }, 3000); + }, 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 + "");