Files
hudozka/client/document.js
T
2014-11-04 21:50:09 +03:00

132 lines
3.7 KiB
JavaScript

var Doc = (function(){
var Document = function(baseURL){
this.pages = [];
this.baseURL = baseURL;
}
Document.prototype.hasPage = function(index){
return index >= 0 && index < this.pages.length;
}
Document.prototype.getPageURL = function(pageNumber){
var s = pageNumber <2 ? "" : "/" + pageNumber;
return this.baseURL + s;
}
Document.prototype.page = function(index){
return index + 1;
}
return Document;
})();
(function(){
const PAGES = [];
var currentPageIndex = 0;
var doc = new Doc(location.pathname.replace(/\/\d+$/, ""));
$(document).ready(function(){
try{
var hrefPage = /\/(\d+)$/.exec(location.href)[1];
currentPageIndex = parseInt(hrefPage) - 1;
}catch(error){
}
$("#buttonNext").click(function(event){
loadNext();
});
$("#buttonPrev").click(function(event){
loadPrevious();
});
$("#page-container .pf").each(function(index, elem){
var url = $(elem).data("page-url");
doc.pages.push(url);
});
$("#currentPage").attr("max", doc.pages.length);
$("#totalPages").text(doc.pages.length);
$("#currentPage").change(function(){
var i = parseInt($(this).val()) - 1;
if(i && doc.hasPage(i)){
loadPage(i);
}
});
$("#page-container").html("");
loadPage(currentPageIndex);
window.addEventListener("popstate", function(event){
console.log("pops");
console.log(event);
var i = event.state;
loadPage(i);
});
});
function loadNext(){
var i = currentPageIndex + 1;
if(doc.hasPage(i)){
loadPage(i);
}else{
}
}
function loadPrevious(){
var i = currentPageIndex - 1;
if(doc.hasPage(i)){
loadPage(i);
}else{
}
}
function loadPage(index){
if(doc.hasPage(index)){
var url = doc.pages[index];
// $.ajax(
// url,
// {
// xhrFields: {
// crossDomain: true,
// withCredentials: true
// },
// success: function(data, status){
// currentPageIndex = index;
// $("#currentPage").val(doc.page(currentPageIndex));
// $("#page-container").html(data);
// var p = doc.page(currentPageIndex);
// console.log("look at page ", p);
// window.history.pushState(
// currentPageIndex,
// "State 2013 — " + p,
// doc.getPageURL(p)
// );
// },
// error: function(xhr, aaa, error){
// console.log(error);
// }
// }
// );
$.get(url, function(data){
currentPageIndex = index;
$("#currentPage").val(doc.page(currentPageIndex));
$("#page-container").html(data);
var p = doc.page(currentPageIndex);
console.log("look at page ", p);
window.history.pushState(
currentPageIndex,
"State 2013 — " + p,
doc.getPageURL(p)
);
});
}
}
})();