]> git.mdlowis.com Git - proto/atv.git/commitdiff
added queue commands
authorMike Lowis <mike.lowis@gentex.com>
Thu, 18 Jan 2024 21:30:07 +0000 (16:30 -0500)
committerMike Lowis <mike.lowis@gentex.com>
Thu, 18 Jan 2024 21:30:07 +0000 (16:30 -0500)
atv/assets/client.js
atv/assets/control.html
atv/lib/atv/server.rb

index b4844fbd6ccf796182d4a7396935edc18894a863..6522cd61ed5027fc557a9a7fd5d7fe92c549954c 100644 (file)
@@ -9,12 +9,13 @@ const Client = ((self = {})=>{
             "ws://" + window.location.host + ":3000");
 
         ws.onopen = (event)=>{
-          send("get_items", {});
+            self.send("get_items", {});
+            self.send("get_queue", {});
         }
 
         ws.onmessage = (event)=>{
             cmd = JSON.parse(event.data);
-            if (cmd.cmd !== "items")
+            if (cmd.cmd !== "items" && cmd.cmd !== "queue")
             {
                 self.state = cmd;
             }
@@ -26,45 +27,37 @@ const Client = ((self = {})=>{
         };
     };
 
-    const send = (cmd, data = {})=>{
+    self.send = (cmd, data = {})=>{
         const blob = Object.assign({ cmd: cmd}, data);
         console.log(blob);
         ws.send(JSON.stringify(blob));
     };
 
     self.skip = (data)=>{
-        send("skip");
+        self.send("skip");
     };
 
     self.play_pause = (data)=>{
         if (self.state["playing"])
         {
-            send("pause");
+            self.send("pause");
         }
         else
         {
-            send("play");
+            self.send("play");
         }
     };
 
     self.pause = (data)=>{
-        send("pause");
+        self.send("pause");
     };
 
     self.chan_next = (data)=>{
-        send("chan_next");
+        self.send("chan_next");
     };
 
     self.chan_prev = (data)=>{
-        send("chan_prev");
-    };
-
-    self.play_next = (path)=>{
-
-    };
-
-    self.play_now = (path)=>{
-
+        self.send("chan_prev");
     };
 
     return self;
index e4deb3c4b8ebc583658cc9d137e616f8f1596d0c..a62a0477f56395611633a066a9675a62e370d3f0 100644 (file)
   <input type="button" value="Skip" onclick="javscript:Client.skip()"/>
   <input type="button" value="Chan +" onclick="javscript:Client.chan_next()"/>
   <input type="button" value="Chan -" onclick="javscript:Client.chan_prev()"/>
-  <input type="button" value="Queue" onclick="javscript:Client.chan_prev()"/>
+  <input type="button" value="Enqueue" onclick="javscript:Client.enqueue()"/>
 </div>
 <script type="text/javascript" src="client.js"></script>
 <script>
 (()=>{
+    let items = []
     Client.connect((data)=>{
         console.log(data);
-        if (cmd.cmd !== "items")
+        if (cmd.cmd === "items")
         {
-            currVid.innerText = data["curr"]["path"]
-            nextVid.innerText = data["next"]["path"]
-            playBtn.value = (data["playing"] ? "Pause" : "Play");
+            console.log("received items");
+            console.log(data);
+            items = data["items"];
         }
-        else
+        else if (cmd.cmd === "queue")
         {
-            console.log("received items");
+            console.log("received queue");
             console.log(data);
         }
+        else
+        {
+            currVid.innerText = data["curr"]["path"]
+            nextVid.innerText = data["next"]["path"]
+            playBtn.value = (data["playing"] ? "Pause" : "Play");
+        }
     });
+
+    Client.enqueue = ()=>{
+        console.log("enqueue");
+        Client.send("enqueue", { path: items[0]["path"] });
+    };
 })();
 </script>
 </body>
index d8b771479a6a7e24634a1aad7291ab590e1b7675..5fe6a3e9d5a33af05c1c48e9fff65df531351e21 100644 (file)
@@ -15,6 +15,7 @@ module ATV
       Iodine.run_every(1000) do
         if player.update
           broadcast("play", @@player.state)
+          broadcast("queue", {"queue" => @@player.queue})
         end
       end
       Iodine.threads = 1
@@ -56,6 +57,7 @@ module ATV
 
     def on_skip(client, data)
       @@player.skip
+      broadcast("queue", {"queue" => @@player.queue})
     end
 
     def on_play(client, data)
@@ -68,16 +70,27 @@ module ATV
 
     def on_chan_next(client, data)
       @@player.chan_next
+      broadcast("queue", {"queue" => @@player.queue})
     end
 
     def on_chan_prev(client, data)
       @@player.chan_prev
+      broadcast("queue", {"queue" => @@player.queue})
     end
 
     def on_get_items(client, data)
       client_send(client, "items", @@player.items)
     end
 
+    def on_get_queue(client, data)
+      client_send(client, "queue", {"queue" => @@player.queue})
+    end
+
+    def on_enqueue(client, data)
+      @@player.enqueue(data["path"])
+      broadcast("queue", {"queue" => @@player.queue})
+    end
+
     extend self
   end
 end