118 lines
3.3 KiB
JavaScript
118 lines
3.3 KiB
JavaScript
Miniflux.Nav = (function() {
|
|
|
|
function scrollPageTo(item)
|
|
{
|
|
var clientHeight = pageYOffset + document.documentElement.clientHeight;
|
|
var itemPosition = item.offsetTop + item.offsetHeight;
|
|
|
|
if (clientHeight - itemPosition < 0 || clientHeight - item.offsetTop > document.documentElement.clientHeight) {
|
|
window.scrollTo(0, item.offsetTop - 10);
|
|
}
|
|
}
|
|
|
|
function findNextItem()
|
|
{
|
|
var items = document.getElementsByTagName("article");
|
|
|
|
if (! document.getElementById("current-item")) {
|
|
|
|
items[0].id = "current-item";
|
|
scrollPageTo(items[0]);
|
|
}
|
|
else {
|
|
|
|
for (var i = 0, ilen = items.length; i < ilen; i++) {
|
|
|
|
if (items[i].id === "current-item") {
|
|
|
|
if (i + 1 < ilen) {
|
|
items[i].id = "item-" + items[i].getAttribute("data-item-id");
|
|
|
|
items[i + 1].id = "current-item";
|
|
scrollPageTo(items[i + 1]);
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function findPreviousItem()
|
|
{
|
|
var items = document.getElementsByTagName("article");
|
|
|
|
if (! document.getElementById("current-item")) {
|
|
|
|
items[items.length - 1].id = "current-item";
|
|
scrollPageTo(items[items.length - 1]);
|
|
}
|
|
else {
|
|
|
|
for (var i = items.length - 1; i >= 0; i--) {
|
|
|
|
if (items[i].id === "current-item") {
|
|
|
|
if (i - 1 >= 0) {
|
|
items[i].id = "item-" + items[i].getAttribute("data-item-id");
|
|
items[i - 1].id = "current-item";
|
|
scrollPageTo(items[i - 1]);
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function isListing()
|
|
{
|
|
return !!document.getElementById("listing");
|
|
}
|
|
|
|
return {
|
|
OpenNextPage: function() {
|
|
var link = document.getElementById("next-page");
|
|
if (link) link.click();
|
|
},
|
|
OpenPreviousPage: function() {
|
|
var link = document.getElementById("previous-page");
|
|
if (link) link.click();
|
|
},
|
|
SelectNextItem: function() {
|
|
var link = document.getElementById("next-item");
|
|
|
|
if (link) {
|
|
link.click();
|
|
}
|
|
else if (isListing()) {
|
|
findNextItem();
|
|
}
|
|
},
|
|
SelectPreviousItem: function() {
|
|
var link = document.getElementById("previous-item");
|
|
|
|
if (link) {
|
|
link.click();
|
|
}
|
|
else if (isListing()) {
|
|
findPreviousItem();
|
|
}
|
|
},
|
|
ShowHelp: function() {
|
|
var help_layer = document.getElementById("help-layer");
|
|
help_layer.removeAttribute("class");
|
|
},
|
|
CloseHelp: function() {
|
|
var help_layer = document.getElementById("help-layer");
|
|
help_layer.setAttribute("class", "hide");
|
|
},
|
|
ShowSearch: function() {
|
|
document.getElementById("search-opener").setAttribute("class", "hide");
|
|
document.getElementById("search-form").removeAttribute("class")
|
|
},
|
|
IsListing: isListing
|
|
};
|
|
|
|
})();
|