diff --git a/main.py b/main.py index a242d52c0..4f7bb65bf 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,16 @@ import threading import heapq import traceback +if __name__ == "__main__": + if '--help' in sys.argv: + print("Valid Command line Arguments:") + print("\t--listen\t\t\tListen on 0.0.0.0 so the UI can be accessed from other computers.") + print("\t--port 8188\t\t\tSet the listen port.") + print("\t--dont-upcast-attention\t\tDisable upcasting of attention \n\t\t\t\t\tcan boost speed but increase the chances of black images.\n") + print("\t--use-split-cross-attention\tUse the split cross attention optimization instead of the sub-quadratic one.\n\t\t\t\t\tIgnored when xformers is used.") + print() + exit() + if '--dont-upcast-attention' in sys.argv: print("disabling upcasting of attention") os.environ['ATTN_PRECISION'] = "fp16" @@ -449,6 +459,14 @@ if __name__ == "__main__": address = '0.0.0.0' else: address = '127.0.0.1' - run(q, address=address, port=8188) + + port = 8188 + try: + p_index = sys.argv.index('--port') + port = int(sys.argv[p_index + 1]) + except: + pass + + run(q, address=address, port=port) diff --git a/webshit/index.html b/webshit/index.html index 3cdddc93b..683d96480 100644 --- a/webshit/index.html +++ b/webshit/index.html @@ -368,6 +368,7 @@ function promptPosted(data) } canvas.draw(true, true); + loadQueueIfVisible(); } function postPrompt(number) { @@ -533,15 +534,145 @@ document.addEventListener('paste', e=>{ } }); +function deleteQueueElement(delete_id, then) { + fetch('/queue', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({"delete":[delete_id]}) + }) + .then(data => { + console.log(data); + then(); + }) + .catch(error => console.error(error)) +} + + +function loadQueue() { + fetch('/queue') + .then(response => response.json()) + .then(data => { + var queue_div = document.getElementById("queuebutton-content"); + queue_div.style.display = 'block'; + var see_queue_button = document.getElementById("seequeuebutton"); + let old_w = see_queue_button.style.width; + see_queue_button.innerHTML = "Close"; + + let runningcontents = document.getElementById("runningcontents"); + runningcontents.innerHTML = ''; + let queuecontents = document.getElementById("queuecontents"); + queuecontents.innerHTML = ''; + function append_to_list(list_element, append_to_element, append_delete) { + let number = list_element[0]; + let id = list_element[1]; + let prompt = list_element[2]; + let workflow = list_element[3].extra_pnginfo.workflow; + let a = document.createElement("a"); + a.innerHTML = number + ": "; + append_to_element.appendChild(a); + let button = document.createElement("button"); + button.innerHTML = "Load"; + button.style.fontSize = "10px"; + button.workflow = workflow; + button.onclick = function(event) { + loadGraphData(graph, event.target.workflow); + }; + + append_to_element.appendChild(button); + if (append_delete) { + let button = document.createElement("button"); + button.innerHTML = "Delete"; + button.style.fontSize = "10px"; + button.delete_id = id; + button.onclick = function(event) { + deleteQueueElement(event.target.delete_id, loadQueue); + }; + append_to_element.appendChild(button); + } + append_to_element.appendChild(document.createElement("br")); + } + for (let x in data.queue_running) { + append_to_list(data.queue_running[x], runningcontents, false); + } + + data.queue_pending.sort((a, b) => a[0] - b[0]); + for (let x in data.queue_pending) { + append_to_list(data.queue_pending[x], queuecontents, true); + } + }).catch((response) => {console.log(response)}); +} + +function loadQueueIfVisible() +{ + var queue_div = document.getElementById("queuebutton-content"); + if (queue_div.style.display == 'block') { + loadQueue(); + } +} + +function seeQueue() { + var queue_div = document.getElementById("queuebutton-content"); + if (queue_div.style.display == 'block') { + queue_div.style.display = 'none'; + var see_queue_button = document.getElementById("seequeuebutton"); + see_queue_button.innerHTML = "See Queue" + } else { + loadQueue(); + } +} + +function closeQueue() { + var queue_div = document.getElementById("queuebutton-content"); + queue_div.style.display = 'none'; +} + +function clearQueue() { + fetch('/queue', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({"clear":true}) + }).then(data => { + loadQueue(); + }) + .catch(error => console.error(error)); +} + - + Queue size: X
-
- -
+
+ + + +
+ +