]> git.cworth.org Git - zombocom-ai/blobdiff - index.html
Add a new profile button that lives at the upper-right of the page
[zombocom-ai] / index.html
index f5eaea05170672ac01fc4f018f014223c6c2a8f7..9989e40608f5946a60353e6f85b6df2bde206410 100644 (file)
       all. The only limit is yourself!
     </p>
 
+    <dialog id="name-dialog">
+      <form method="dialog">
+        <p>
+          <label>Your name:
+            <input id="name" type="text">
+          </label>
+        </p>
+        <div>
+          <button value="cancel">Cancel</button>
+          <button id="confirm" value="default">Confirm</button>
+        </div>
+      </form>
+    </dialog>
+
     <p>
       <div id="spinner" align="center">
         <div class="animate-flicker">
@@ -74,7 +88,7 @@
     </p>
 
     <audio loop="" src="/zombo_words.mp3" type="audio/mpeg"></audio>
-    <button id="mute" class="fade volume">
+    <button id="mute" class="menu-button fade volume">
       <div>🔊</div>
       <script>
 const mute = document.querySelector("#mute");
@@ -96,27 +110,47 @@ mute.addEventListener("click", () => {
 
     </button>
 
+    <button id="profile" class="menu-button">
+      <div>👤</div>
+    </button>
+
   </div>
 
   <script src="/socket.io/socket.io.js"></script>
   <script>
     var socket = io();
 
+    const name = document.querySelector("#name");
+    const name_dialog = document.querySelector("#name-dialog");
     const images = document.querySelector("#images");
-
     const comments = document.querySelector("#comments");
     const comment_form = document.querySelector("#comment-form");
     const comment = document.querySelector("#comment");
-
     const zombo_form = document.querySelector("#zombo-form");
     const prompt = document.querySelector("#prompt");
     const code = document.querySelector("#code");
-
     const safety= document.querySelector("#safety");
-
     const spinner = document.querySelector("#spinner");
+    const profile = document.querySelector("#profile");
     var spinner_timeout;
 
+    comment.addEventListener('focus', () => {
+        /* Do nothing if name is already set. */
+        if (name.value)
+            return;
+
+        /* Otherwise, bring up the modal dialog to set the name. */
+        name_dialog.showModal();
+    });
+
+    profile.addEventListener('click', () => {
+        name_dialog.showModal();
+    });
+
+    name_dialog.addEventListener('close', () => {
+        socket.emit('set-name', name.value);
+    });
+
     comment_form.addEventListener('submit', function(e) {
         e.preventDefault();
         if (comment.value) {
@@ -131,6 +165,15 @@ mute.addEventListener("click", () => {
         comments.appendChild(item);
     });
 
+    socket.on('inform-name', (name) => {
+        console.log("Received inform-name event: " + name);
+        name.value = name;
+    });
+
+    socket.on('reset', () => {
+        images.replaceChildren();
+    });
+
     socket.on('image', (image) => {
         const figure = document.createElement('figure');
         const img = document.createElement('img');