create_image spinner

This commit is contained in:
Karl 2025-05-18 14:46:48 +01:00
parent 1abba32f18
commit 80f535be45

View File

@ -51,36 +51,66 @@
button:hover { button:hover {
background: #555; background: #555;
} }
/* ---------- spinner ---------- */
#spinner-overlay {
position: fixed;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.6);
visibility: hidden; /* toggled in JS */
z-index: 1000;
}
.spinner {
width: 50px;
height: 50px;
border: 6px solid #555;
border-top-color: white;
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
</style> </style>
</head> </head>
<body> <body>
<h1 style="margin-bottom: 20px;">Create An Image</h1> <h1 style="margin-bottom: 20px;">Create An Image</h1>
<textarea id="prompt-box" placeholder="Enter your custom prompt here..."></textarea> <textarea id="prompt-box" placeholder="Enter your custom prompt here..."></textarea>
<div class="button-group"> <div class="button-group">
<button onclick="location.href='/'">Back</button> <button onclick="showSpinner(); location.href='/'">Back</button>
<button onclick="sendPrompt()">Send Prompt</button> <button onclick="sendPrompt()">Send Prompt</button>
<button onclick="location.href='/create'">Random Prompt</button> <button onclick="showSpinner(); location.href='/create'">Random Prompt</button>
</div>
<!-- waiting overlay -->
<div id="spinner-overlay">
<div class="spinner"></div>
</div> </div>
<script> <script>
const overlay = document.getElementById('spinner-overlay');
function showSpinner() {
overlay.style.visibility = 'visible';
}
function sendPrompt() { function sendPrompt() {
showSpinner();
const prompt = document.getElementById('prompt-box').value; const prompt = document.getElementById('prompt-box').value;
const formData = new URLSearchParams(); const formData = new URLSearchParams();
formData.append('prompt', prompt); formData.append('prompt', prompt);
fetch('/create', { fetch('/create', {
method: 'POST', method: 'POST',
headers: { headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
'Content-Type': 'application/x-www-form-urlencoded',
},
body: formData.toString() body: formData.toString()
}).then(response => { })
if (response.redirected) { .then(response => {
window.location.href = response.url; // If server redirects, follow it; otherwise go to /create
} else { window.location.href = response.redirected ? response.url : '/create';
alert("Image creation request sent."); })
} .catch(error => {
}).catch(error => { overlay.style.visibility = 'hidden'; // hide spinner on failure
alert("Error sending prompt: " + error); alert("Error sending prompt: " + error);
}); });
} }