Skip to content
Snippets Groups Projects
Commit b7a23f78 authored by Jiří Setnička's avatar Jiří Setnička
Browse files

Skeny: Omezený preload skenů při jejich zpracování

Preloadovat všechno může být u větších zpracování docela brutální operace,
ale preload nejvýše 3 předchozích a následujících skenů zní rozumně.

Issue #279
parent dd4b97f3
Branches
No related tags found
1 merge request!126Vylepšení skenování - prázdné stránky, otáčení, vylepšení UI
......@@ -224,6 +224,7 @@ var pages = [
},
img_full: "{{ png_full(page) }}",
img_small: "{{ png_small(page) }}",
img_preloaded: false,
},
{% endfor %}
];
......@@ -253,6 +254,8 @@ PAGE_PROBABLY_EMPTY = 'probably_empty';
PAGE_UNKNOWN = 'unknown';
PAGE_UFO = 'ufo';
PRELOAD_COUNT = 3;
function isChanged(p) {
for (k of keys) {
if (p[k] != p.orig[k]) { return true; }
......@@ -375,6 +378,16 @@ function refreshCurrentData(page) {
}
}
function preloadImg(i) {
page = pages[i];
if (page.img_preloaded) {
return;
}
var preloadImg = new Image();
preloadImg.src = page.img_full;
page.img_preloaded = true;
}
var activeRow = 0;
function selectRow(i) {
page = pages[i];
......@@ -386,12 +399,23 @@ function selectRow(i) {
rows[i].classList.add('active');
activeRow = i;
loader.style.opacity = 0.7;
img.onload = function() {
// Correct closure to avoid changing page param
onLoadFactory = function(page) {
return function() {
loader.style.opacity = 0;
refreshCurrentData(page);
}
}
loader.style.opacity = 0.7;
img.onload = onLoadFactory(page);
img.src = page.img_full;
page.img_preloaded = true;
// Preload previous and next images (if not preloaded yet)
for (let j = 1; j <= PRELOAD_COUNT; j++) {
if (i-j >= 0) { preloadImg(i-j); }
if (i+j < pages.length) { preloadImg(i+j); }
}
}
function refreshActiveRow() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment