Thread viewer for Bluesky

show a proper progress bar when loading

+1 -1
index.html
··· 105 105 </p> 106 106 107 107 <p> 108 - <input type="submit" value="Start scan"> <output></output> 108 + <input type="submit" value="Start scan"> <progress></progress> 109 109 </p> 110 110 </form> 111 111
+19 -3
skythread.js
··· 480 480 let range = $(postingStatsPage.querySelector('input[type=range]'), HTMLInputElement); 481 481 let days = parseInt(range.value, 10); 482 482 483 - let output = $(postingStatsPage.querySelector('input[type=submit] + output')); 484 - output.innerText = ''; 483 + let progressBar = $(postingStatsPage.querySelector('input[type=submit] + progress'), HTMLProgressElement); 484 + progressBar.max = days; 485 + progressBar.value = 0; 486 + progressBar.style.display = 'inline'; 485 487 486 488 let tbody = $(postingStatsPage.querySelector('table.scan-result tbody')); 487 489 tbody.innerHTML = ''; 488 490 491 + let now = new Date().getTime(); 492 + 489 493 accountAPI.loadTimeline(days, { 490 - onPageLoad: (d) => { output.innerText += '.' } 494 + onPageLoad: (data) => { 495 + let minTime = now; 496 + 497 + for (let item of data) { 498 + let timestamp = item.reason ? item.reason.indexedAt : item.post.record.createdAt; 499 + let date = Date.parse(timestamp); 500 + minTime = Math.min(minTime, date); 501 + } 502 + 503 + let daysBack = (now - minTime) / 86400 / 1000; 504 + progressBar.value = daysBack; 505 + } 491 506 }).then(items => { 492 507 let users = {}; 493 508 let total = 0; ··· 536 551 } 537 552 538 553 submit.disabled = false; 554 + progressBar.style.display = 'none'; 539 555 }); 540 556 } 541 557
+7
style.css
··· 726 726 vertical-align: middle; 727 727 } 728 728 729 + #posting_stats_page progress { 730 + width: 300px; 731 + margin-left: 10px; 732 + vertical-align: middle; 733 + display: none; 734 + } 735 + 729 736 #posting_stats_page .scan-result { 730 737 border: 1px solid #333; 731 738 border-collapse: collapse;