diff options
| author | Bobby <[email protected]> | 2025-07-17 09:27:20 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-07-17 09:27:20 +0530 |
| commit | 74543cd6dfc1a6d00c0bacbe07408d9ffbb73082 (patch) | |
| tree | ab9092052e316c5a31d774073389e3980e404f95 /static/scripts | |
| parent | 84681514bb5a15b6a4a08a6ea21dbbc7969d4202 (diff) | |
| download | imageboard-74543cd6dfc1a6d00c0bacbe07408d9ffbb73082.tar.xz imageboard-74543cd6dfc1a6d00c0bacbe07408d9ffbb73082.zip | |
upload spinner and tidying up the ui
Diffstat (limited to 'static/scripts')
| -rw-r--r-- | static/scripts/upload.js | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/static/scripts/upload.js b/static/scripts/upload.js index 5d0f3ec..6342aa2 100644 --- a/static/scripts/upload.js +++ b/static/scripts/upload.js @@ -123,9 +123,43 @@ function setUploadLoadingIndicator(show) { indicator = document.createElement('div'); indicator.id = '_uploadLoadingIndicator'; indicator.className = 'upload-loading-indicator'; - indicator.innerHTML = '<span class="upload-loading-icon">✦</span>'; + // Segmented ring spinner markup, no text + indicator.innerHTML = ` + <div class="upload-loading-icon"> + <div class="ib-loader-spinner"> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + <div class="ib-loader-seg"></div> + </div> + </div> + `; dragBox.appendChild(indicator); } + // Animation logic for retro ring spinner + const spinner = indicator.querySelector('.ib-loader-spinner'); + const segments = spinner ? spinner.querySelectorAll('.ib-loader-seg') : []; + if (show && segments.length) { + let frame = 0; + if (!indicator._retroAnimInterval) { + indicator._retroAnimInterval = setInterval(() => { + segments.forEach((seg, idx) => seg.classList.toggle('active', idx === frame)); + frame = (frame + 1) % segments.length; + }, 80); + } + } else if (!show && indicator._retroAnimInterval) { + clearInterval(indicator._retroAnimInterval); + indicator._retroAnimInterval = null; + segments.forEach(seg => seg.classList.remove('active')); + } indicator.style.display = show ? 'flex' : 'none'; } @@ -337,4 +371,3 @@ function handleFiles(files) { } setupLocalImageUpload(); - |
