]> git.cworth.org Git - zombocom-ai/blobdiff - index.html
Don't show any images until the user generates a new one
[zombocom-ai] / index.html
index bc6e61eb8556619858cbd27ecd0f7d7453be3767..a1f4e51955dc0d15096494ea3327d9a56399c738 100644 (file)
       </form>
     </p>
 
-    <div id="images">
+    <div id="images" style="display: none">
     </div>
 
-    <dl id="comments">
-    </dl>
-
-    <p>
-      <form action="" id="comment-form">
-        <input id="comment" type="text" style="width:100%" autocomplete="off" placeholder="Add a comment" />
-      </form>
-    </p>
-
     <audio loop="" src="/zombo_words.mp3" type="audio/mpeg"></audio>
     <button id="mute" class="menu-button fade volume">
       <div>🔊</div>
@@ -119,12 +110,9 @@ mute.addEventListener("click", () => {
   <script>
     var socket = io();
 
-    const name = document.querySelector("#name");
+    const name_input = 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");
@@ -133,35 +121,19 @@ mute.addEventListener("click", () => {
     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) {
-            socket.emit('comment', comment.value);
-            comment.value = '';
-        }
+        socket.emit('set-name', name_input.value);
     });
 
     socket.on('comment', function(comment) {
+        const comments = document.querySelector("#" + comment.comments_id);
         const dt = document.createElement('dt');
         const dd = document.createElement('dd');
-        dt.textContent = comment.name;
+        dt.textContent = comment.name + ':';
         dd.textContent = comment.text;
         comments.appendChild(dt);
         comments.appendChild(dd);
@@ -169,7 +141,7 @@ mute.addEventListener("click", () => {
 
     socket.on('inform-name', (name) => {
         console.log("Received inform-name event: " + name);
-        name.value = name;
+        name_input.value = name;
     });
 
     socket.on('reset', () => {
@@ -178,13 +150,58 @@ mute.addEventListener("click", () => {
 
     socket.on('image', (image) => {
         const figure = document.createElement('figure');
+
         const img = document.createElement('img');
         img.src = image.filename;
+        figure.appendChild(img);
+
         const figcaption = document.createElement('figcaption');
-        const caption_text = document.createTextNode(`${image.prompt} (${image.code})`);
+        const caption_text = document.createTextNode(`${image.prompt} (${image.code}) `);
         figcaption.appendChild(caption_text);
-        figure.appendChild(img);
+
+        const reuse_button = document.createElement('button');
+        reuse_button.appendChild(document.createTextNode("Reuse"));
+        figcaption.appendChild(reuse_button);
+
+        reuse_button.addEventListener('click', () => {
+            prompt.value = image.prompt;
+            window.scrollTo(0,0);
+        });
+
         figure.appendChild(figcaption);
+
+        const dl_comments = document.createElement('dl');
+        const comments_id = "comments_" + image.index;
+        dl_comments.className = "comments";
+        dl_comments.id = comments_id;
+        figure.appendChild(dl_comments);
+
+        const comment_form = document.createElement('form');
+        const comment_input = document.createElement('input')
+        comment_input.type = "text";
+        comment_input.className = "comment";
+        comment_input.placeholder = "Add a comment";
+        comment_form.appendChild(comment_input);
+        figure.appendChild(comment_form);
+
+        comment_input.addEventListener('focus', () => {
+            /* Do nothing if name is already set. */
+            if (name_input.value)
+                return;
+
+            /* Otherwise, bring up the modal dialog to set the name. */
+            name_dialog.showModal();
+        });
+
+        comment_form.addEventListener('submit', function(e) {
+            e.preventDefault();
+            if (comment_input.value) {
+                socket.emit('comment', {comments_id: comments_id,
+                                        text: comment_input.value});
+                comment_input.value = '';
+            }
+        });
+
         images.prepend(figure);
     });
 
@@ -207,6 +224,8 @@ mute.addEventListener("click", () => {
         /* Re-display the form and hide spinner now that generation is over. */
         clearTimeout(spinner_timeout);
         hide_spinner();
+        /* Also display all of the images. */
+        images.style.display = "block";
     });
 
     function random_from(items) {