Багфиксы. Обработка особенностей поведения mopidy и mpd. Обработка пустых и малознача...
[mpd-lua.git] / mpd.js
diff --git a/mpd.js b/mpd.js
index 78d9c8bb4697dd8955182c74e5476c24546930cb..b5ff51305aa12cd321aa5b7f38e3a2951246fca3 100644 (file)
--- a/mpd.js
+++ b/mpd.js
@@ -1,4 +1,4 @@
-urlbase="mpd.lua?"
+urlbase="/cgi-bin/mpd.cgi?"
 minScrollHeight=200
 
 currentState=""
@@ -48,8 +48,12 @@ function toHHMMSS(seconds) {
 function RefreshTime() {
   if (currentSeconds) {
     currentTime = toHHMMSS(currentSeconds)
-    trackTime = toHHMMSS(trackSeconds)
-    nowPlayingTime = currentTime+"/"+trackTime
+    if (trackSeconds) {
+      trackTime = toHHMMSS(trackSeconds)
+      nowPlayingTime = currentTime+"/"+trackTime
+    } else {
+      nowPlayingTime = currentTime
+    }
   } else {
     nowPlayingTime = "-:--/-:--"
   }
@@ -61,7 +65,7 @@ function PeriodicRefreshTime() {
     nowTime = Date.now()
     delta = (nowTime - updateTime)/1000
     currentSeconds = updateSeconds + Math.round(delta)
-    if (currentSeconds > trackSeconds) {
+    if (trackSeconds && (currentSeconds > trackSeconds)) {
       currentSeconds = trackSeconds
     }
     RefreshTime()
@@ -76,7 +80,14 @@ function RefreshPageStatus() {
     if (this.readyState != 4 || this.status != 200) return;
     var returnedData = JSON.parse(this.responseText);
     trackName = GetFilename(returnedData['current_playing']);
+    try {
+      var trackName=decodeURI(trackName).replace(/%2C/g,",")
+    }  
+    catch(e) {
+      console.log(trackName)
+    }
     trackNo = returnedData['song'];
+    trackId = returnedData['songid']
     currentState = returnedData['state'];
     document.title='MPD Player: '+trackName;
     if (trackNo) {
@@ -121,7 +132,7 @@ function RefreshPageStatus() {
 
     var items = document.getElementById('items');
     var table = items.getElementsByClassName('track');
-    var current_track="track_"+trackNo;
+    var current_track="track_"+trackId;
     for (var i = 0; i < table.length; i++) {
       if (table[i].id==current_track) {
         table[i].classList.add("itemActive");
@@ -162,7 +173,13 @@ req.onreadystatechange = function () {
   var even = 0;
   for (var key in returnedData) {
        var rec=returnedData[key];
-       var name=GetFilename(rec["name"]);
+       var name=GetFilename(rec["title"]);
+       try {
+         var name=decodeURI(name).replace(/%2C/g,",")
+       }  
+       catch(e) {
+         console.log(name)
+       }
        var id=rec["id"];
 
        if (even) { 
@@ -175,7 +192,7 @@ req.onreadystatechange = function () {
 
        itemsText = itemsText + "<tr id=\"track_"+id+"\" class=\"track "+evText+"\">\
   <td class=\"track_number\">\
-  <a name=\""+id+"\">"+(Number(id)+1)+"</a></td>\
+  <a name=\""+id+"\">"+(Number(key)+1)+"</a></td>\
   </td>\
   <td class=\"file\">\
   <span class=\"link\" onclick=\"PlaylistCommand('playitem',"+id+")\">"+name+"</span>\
@@ -214,7 +231,7 @@ req.onreadystatechange = function () {
 
   var playlistMenuText = "<table>\
   <tr>\
-  <td><span onclick=\"RefreshPlaylist()\"><img class=\"medium-button\" title=\"Home\" src=\"images/list.svg\"></span><td>\
+  <td><span onclick=\"RefreshPageContent()\"><img class=\"medium-button\" title=\"Home\" src=\"images/list.svg\"></span><td>\
   <td><span onclick=\"return confirm('Add all to the list, are you sure?') ? PlaylistEditCommand('add','"+EscapeStr(dir)+"') : false;\" ><img class=\"medium-button\" title=\"Add all\" src=\"images/plus.svg\"></span><td>\
   </tr>\
   </table>";
@@ -250,6 +267,12 @@ req.onreadystatechange = function () {
        } else {
          var tailName=name
        };
+       try {
+         var tailName=decodeURI(tailName).replace(/%2C/g,",")
+       }  
+       catch(e) {
+         console.log(tailName)
+       }
 
        if (type == "directory" || type == "file") {
          if (even) { 
@@ -306,7 +329,7 @@ req.onreadystatechange = function () {
   var returnedData = JSON.parse(this.responseText);
   playlistMenuText="<table>\
     <tr>\
-      <td><span onclick=\"RefreshPlaylist()\"><img class=\"medium-button\" title=\"Home\" src=\"images/list.svg\"></span><td>\
+      <td><span onclick=\"RefreshPageContent()\"><img class=\"medium-button\" title=\"Home\" src=\"images/list.svg\"></span><td>\
       <td><span onclick=\"confirm('Clear current playlist, are you sure?') ? PlaylistCommandRefStatus('clear') : false;\" ><img class=\"medium-button\" title=\"Clear all\" src=\"images/cancel.svg\"></span><td>\
     </tr>\
     </table>";