Infinite scrolling index mode

Close #236
This commit is contained in:
Jordan 2014-01-12 09:46:36 -07:00
parent e5fd95158b
commit a1cc8dab01
2 changed files with 24 additions and 16 deletions

View File

@ -2141,6 +2141,10 @@
el: $.el('label', { el: $.el('label', {
innerHTML: '<input type=radio name="Index Mode" value="paged"> Paged' innerHTML: '<input type=radio name="Index Mode" value="paged"> Paged'
}) })
}, {
el: $.el('label', {
innerHTML: '<input type=radio name="Index Mode" value="infinite"> Infinite scrolling'
})
}, { }, {
el: $.el('label', { el: $.el('label', {
innerHTML: '<input type=radio name="Index Mode" value="all pages"> All threads' innerHTML: '<input type=radio name="Index Mode" value="all pages"> All threads'
@ -2276,7 +2280,7 @@
}, },
scroll: $.debounce(100, function() { scroll: $.debounce(100, function() {
var nodes, nodesPerPage, pageNum; var nodes, nodesPerPage, pageNum;
if (Conf['Index Mode'] !== 'paged' || ((d.body.scrollTop || doc.scrollTop) <= doc.scrollHeight - (300 + window.innerHeight))) { if (Index.req || Conf['Index Mode'] !== 'infinite' || ((d.body.scrollTop || doc.scrollTop) <= doc.scrollHeight - (300 + window.innerHeight))) {
return; return;
} }
pageNum = Index.getCurrentPage() + 1; pageNum = Index.getCurrentPage() + 1;
@ -2365,7 +2369,7 @@
return +window.location.pathname.split('/')[2]; return +window.location.pathname.split('/')[2];
}, },
userPageNav: function(pageNum) { userPageNav: function(pageNum) {
if (Conf['Refreshed Navigation'] && Conf['Index Mode'] === 'paged') { if (Conf['Refreshed Navigation'] && Conf['Index Mode'] !== 'all pages') {
return Index.update(pageNum); return Index.update(pageNum);
} else { } else {
return Index.pageNav(pageNum); return Index.pageNav(pageNum);
@ -2380,7 +2384,7 @@
}, },
pageLoad: function(pageNum) { pageLoad: function(pageNum) {
Index.currentPage = pageNum; Index.currentPage = pageNum;
if (Conf['Index Mode'] !== 'paged') { if (Conf['Index Mode'] === 'all pages') {
return; return;
} }
Index.buildIndex(); Index.buildIndex();
@ -2398,7 +2402,7 @@
return Math.max(0, Index.getPagesNum() - 1); return Math.max(0, Index.getPagesNum() - 1);
}, },
togglePagelist: function() { togglePagelist: function() {
return Index.pagelist.hidden = Conf['Index Mode'] !== 'paged'; return Index.pagelist.hidden = Conf['Index Mode'] === 'all pages';
}, },
buildPagelist: function() { buildPagelist: function() {
var a, i, maxPageNum, nodes, pagesRoot, _i; var a, i, maxPageNum, nodes, pagesRoot, _i;
@ -2686,7 +2690,7 @@
}, },
buildIndex: function() { buildIndex: function() {
var nodes, nodesPerPage, pageNum; var nodes, nodesPerPage, pageNum;
if (Conf['Index Mode'] === 'paged') { if (Conf['Index Mode'] !== 'all pages') {
pageNum = Index.getCurrentPage(); pageNum = Index.getCurrentPage();
nodesPerPage = Index.threadsNumPerPage * 2; nodesPerPage = Index.threadsNumPerPage * 2;
nodes = Index.sortedNodes.slice(nodesPerPage * pageNum, nodesPerPage * (pageNum + 1)); nodes = Index.sortedNodes.slice(nodesPerPage * pageNum, nodesPerPage * (pageNum + 1));
@ -2723,7 +2727,7 @@
Index.searchInput.removeAttribute('data-searching'); Index.searchInput.removeAttribute('data-searching');
} }
Index.sort(); Index.sort();
if (Conf['Index Mode'] === 'paged') { if (Conf['Index Mode'] !== 'all pages') {
pageNum = Math.min(pageNum, Index.getMaxPageNum()); pageNum = Math.min(pageNum, Index.getMaxPageNum());
} }
Index.buildPagelist(); Index.buildPagelist();
@ -11150,13 +11154,13 @@
$.open("/" + g.BOARD + "/"); $.open("/" + g.BOARD + "/");
break; break;
case Conf['Next page']: case Conf['Next page']:
if (!(g.VIEW === 'index' && Conf['Index Mode'] === 'paged')) { if (!(g.VIEW === 'index' && Conf['Index Mode'] !== 'all pages')) {
return; return;
} }
$('.next button', Index.pagelist).click(); $('.next button', Index.pagelist).click();
break; break;
case Conf['Previous page']: case Conf['Previous page']:
if (!(g.VIEW === 'index' && Conf['Index Mode'] === 'paged')) { if (!(g.VIEW === 'index' && Conf['Index Mode'] !== 'all pages')) {
return; return;
} }
$('.prev button', Index.pagelist).click(); $('.prev button', Index.pagelist).click();

View File

@ -2151,6 +2151,10 @@
el: $.el('label', { el: $.el('label', {
innerHTML: '<input type=radio name="Index Mode" value="paged"> Paged' innerHTML: '<input type=radio name="Index Mode" value="paged"> Paged'
}) })
}, {
el: $.el('label', {
innerHTML: '<input type=radio name="Index Mode" value="infinite"> Infinite scrolling'
})
}, { }, {
el: $.el('label', { el: $.el('label', {
innerHTML: '<input type=radio name="Index Mode" value="all pages"> All threads' innerHTML: '<input type=radio name="Index Mode" value="all pages"> All threads'
@ -2286,7 +2290,7 @@
}, },
scroll: $.debounce(100, function() { scroll: $.debounce(100, function() {
var nodes, nodesPerPage, pageNum; var nodes, nodesPerPage, pageNum;
if (Conf['Index Mode'] !== 'paged' || ((d.body.scrollTop || doc.scrollTop) <= doc.scrollHeight - (300 + window.innerHeight))) { if (Index.req || Conf['Index Mode'] !== 'infinite' || ((d.body.scrollTop || doc.scrollTop) <= doc.scrollHeight - (300 + window.innerHeight))) {
return; return;
} }
pageNum = Index.getCurrentPage() + 1; pageNum = Index.getCurrentPage() + 1;
@ -2375,7 +2379,7 @@
return +window.location.pathname.split('/')[2]; return +window.location.pathname.split('/')[2];
}, },
userPageNav: function(pageNum) { userPageNav: function(pageNum) {
if (Conf['Refreshed Navigation'] && Conf['Index Mode'] === 'paged') { if (Conf['Refreshed Navigation'] && Conf['Index Mode'] !== 'all pages') {
return Index.update(pageNum); return Index.update(pageNum);
} else { } else {
return Index.pageNav(pageNum); return Index.pageNav(pageNum);
@ -2390,7 +2394,7 @@
}, },
pageLoad: function(pageNum) { pageLoad: function(pageNum) {
Index.currentPage = pageNum; Index.currentPage = pageNum;
if (Conf['Index Mode'] !== 'paged') { if (Conf['Index Mode'] === 'all pages') {
return; return;
} }
Index.buildIndex(); Index.buildIndex();
@ -2408,7 +2412,7 @@
return Math.max(0, Index.getPagesNum() - 1); return Math.max(0, Index.getPagesNum() - 1);
}, },
togglePagelist: function() { togglePagelist: function() {
return Index.pagelist.hidden = Conf['Index Mode'] !== 'paged'; return Index.pagelist.hidden = Conf['Index Mode'] === 'all pages';
}, },
buildPagelist: function() { buildPagelist: function() {
var a, i, maxPageNum, nodes, pagesRoot, _i; var a, i, maxPageNum, nodes, pagesRoot, _i;
@ -2696,7 +2700,7 @@
}, },
buildIndex: function() { buildIndex: function() {
var nodes, nodesPerPage, pageNum; var nodes, nodesPerPage, pageNum;
if (Conf['Index Mode'] === 'paged') { if (Conf['Index Mode'] !== 'all pages') {
pageNum = Index.getCurrentPage(); pageNum = Index.getCurrentPage();
nodesPerPage = Index.threadsNumPerPage * 2; nodesPerPage = Index.threadsNumPerPage * 2;
nodes = Index.sortedNodes.slice(nodesPerPage * pageNum, nodesPerPage * (pageNum + 1)); nodes = Index.sortedNodes.slice(nodesPerPage * pageNum, nodesPerPage * (pageNum + 1));
@ -2733,7 +2737,7 @@
delete Index.searchInput.dataset.searching; delete Index.searchInput.dataset.searching;
} }
Index.sort(); Index.sort();
if (Conf['Index Mode'] === 'paged') { if (Conf['Index Mode'] !== 'all pages') {
pageNum = Math.min(pageNum, Index.getMaxPageNum()); pageNum = Math.min(pageNum, Index.getMaxPageNum());
} }
Index.buildPagelist(); Index.buildPagelist();
@ -11139,13 +11143,13 @@
$.open("/" + g.BOARD + "/"); $.open("/" + g.BOARD + "/");
break; break;
case Conf['Next page']: case Conf['Next page']:
if (!(g.VIEW === 'index' && Conf['Index Mode'] === 'paged')) { if (!(g.VIEW === 'index' && Conf['Index Mode'] !== 'all pages')) {
return; return;
} }
$('.next button', Index.pagelist).click(); $('.next button', Index.pagelist).click();
break; break;
case Conf['Previous page']: case Conf['Previous page']:
if (!(g.VIEW === 'index' && Conf['Index Mode'] === 'paged')) { if (!(g.VIEW === 'index' && Conf['Index Mode'] !== 'all pages')) {
return; return;
} }
$('.prev button', Index.pagelist).click(); $('.prev button', Index.pagelist).click();