mirror of
https://github.com/futurepress/epub.js.git
synced 2025-10-04 15:09:16 +02:00
Added getRenderedPagesLeft
This commit is contained in:
parent
d0aea65fc7
commit
315312a89c
11 changed files with 190 additions and 22 deletions
File diff suppressed because one or more lines are too long
50
reader/js/epub.min.js
vendored
50
reader/js/epub.min.js
vendored
|
@ -3558,7 +3558,8 @@ EPUBJS.Chapter.prototype.cfiFromRange = function(_range) {
|
|||
var range;
|
||||
var startXpath, endXpath;
|
||||
var startContainer, endContainer;
|
||||
|
||||
var cleanTextContent, cleanEndTextContent;
|
||||
|
||||
// Check for Contents
|
||||
if(!this.contents) return;
|
||||
|
||||
|
@ -3589,16 +3590,18 @@ EPUBJS.Chapter.prototype.cfiFromRange = function(_range) {
|
|||
// Fuzzy Match
|
||||
if(!startContainer) {
|
||||
// console.log("not found, try fuzzy match");
|
||||
startXpath = "//text()[contains(.,'" + _range.startContainer.textContent + "')]";
|
||||
endXpath = "//text()[contains(.,'" + _range.startContainer.textContent + "')]";
|
||||
cleanStartTextContent = EPUBJS.core.cleanStringForXpath(_range.startContainer.textContent);
|
||||
startXpath = "//text()[contains(.," + cleanStartTextContent + ")]";
|
||||
|
||||
startContainer = this.contents.evaluate(startXpath, this.contents, EPUBJS.core.nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
||||
|
||||
|
||||
if(startContainer){
|
||||
// console.log("Found with Fuzzy");
|
||||
range.setStart(startContainer, _range.startOffset);
|
||||
|
||||
if(!_range.collapsed) {
|
||||
cleanEndTextContent = EPUBJS.core.cleanStringForXpath(_range.endContainer.textContent);
|
||||
endXpath = "//text()[contains(.," + cleanEndTextContent + ")]";
|
||||
endContainer = this.contents.evaluate(endXpath, this.contents, EPUBJS.core.nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
||||
if(endContainer) {
|
||||
range.setEnd(endContainer, _range.endOffset);
|
||||
|
@ -4092,6 +4095,22 @@ EPUBJS.core.nsResolver = function(prefix) {
|
|||
};
|
||||
return ns[prefix] || null;
|
||||
};
|
||||
|
||||
//https://stackoverflow.com/questions/13482352/xquery-looking-for-text-with-single-quote/13483496#13483496
|
||||
EPUBJS.core.cleanStringForXpath = function(str) {
|
||||
var parts = str.match(/[^'"]+|['"]/g);
|
||||
parts = parts.map(function(part){
|
||||
if (part === "'") {
|
||||
return '\"\'\"'; // output "'"
|
||||
}
|
||||
|
||||
if (part === '"') {
|
||||
return "\'\"\'"; // output '"'
|
||||
}
|
||||
return "\'" + part + "\'";
|
||||
});
|
||||
return "concat(\'\'," + parts.join(",") + ")";
|
||||
};
|
||||
EPUBJS.EpubCFI = function(cfiStr){
|
||||
if(cfiStr) return this.parse(cfiStr);
|
||||
};
|
||||
|
@ -6435,6 +6454,29 @@ EPUBJS.Renderer.prototype.getVisibleRangeCfi = function(prevEl){
|
|||
};
|
||||
*/
|
||||
|
||||
EPUBJS.Renderer.prototype.getRenderedPagesLeft = function(){
|
||||
var pg;
|
||||
var lastPage;
|
||||
var pagesLeft;
|
||||
|
||||
if(!this.pageMap) {
|
||||
console.warn("page map not loaded");
|
||||
return false;
|
||||
}
|
||||
|
||||
lastPage = this.pageMap.length;
|
||||
|
||||
if (this.spreads) {
|
||||
pg = this.chapterPos*2;
|
||||
} else {
|
||||
pg = this.chapterPos;
|
||||
}
|
||||
|
||||
pagesLeft = lastPage - pg;
|
||||
return pagesLeft;
|
||||
|
||||
};
|
||||
|
||||
EPUBJS.Renderer.prototype.getVisibleRangeCfi = function(){
|
||||
var pg;
|
||||
var startRange, endRange;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue