From 201e43f56b2d4c6a91e6d8fabd2a2ecba83711cb Mon Sep 17 00:00:00 2001 From: Rob Garrison Date: Sat, 23 Dec 2017 10:25:09 -0600 Subject: [PATCH] Use performance in updateSort --- manage/sort.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/manage/sort.js b/manage/sort.js index d1427c89..1c253f5c 100644 --- a/manage/sort.js +++ b/manage/sort.js @@ -92,7 +92,6 @@ function addSortOptions() { }; const optgroupRegex = /\{\w+\}/; sortSelectOptions.forEach(sort => { - const opt = option.cloneNode(); if (optgroupRegex.test(sort)) { if (container) { renderBin.appendChild(container); @@ -102,6 +101,7 @@ function addSortOptions() { return; } let lastTag = ''; + const opt = option.cloneNode(); opt.textContent = sort.split(sortByRegex).reduce((acc, val) => { if (tagData[val]) { lastTag = val; @@ -152,8 +152,21 @@ function manageSort(event) { function updateSort() { const renderBin = document.createDocumentFragment(); const entries = sortStyles({parser: 'entry'}); - for (const entry of entries) { - renderBin.appendChild(entry); + let index = 0; + moveEntries(); + function moveEntries() { + const t0 = performance.now(); + let moved = 0; + while ( + index < entries.length && + (++moved < 10 || performance.now() - t0 < 10) + ) { + renderBin.appendChild(entries[index++]); + } + if (index < entries.length) { + requestAnimationFrame(moveEntries); + return; + } } installed.appendChild(renderBin); updateStripes();