now shows correct numbers, still needs bugfixes

This commit is contained in:
quarz12 2023-05-23 14:31:37 +02:00
parent 47aa3254c7
commit 617ee3d781

View File

@ -62,9 +62,10 @@ class EpubParser {
/** /**
returns the sum of the bytesize of all html files that are located before it in the spine returns the sum of the bytesize of all html files that are located before it in the spine
@param {string} currentFile idref of the current file, also part of the CFI, e.g. here: #epubcfi(/6/2[titlepage]!/4/1:0) it would be "titlepage" @param {string} filepath path of the current file, also part of the CFI, e.g. here: #epubcfi(/6/2[titlepage]!/4/1:0) it would be "titlepage"
*/ */
getPreviousFilesSize(currentFile) { getPreviousFilesSize(filepath) {
let currentFile=this.getIdRef(filepath);
let bytesize = 0; let bytesize = 0;
for (let file of this.getSpine()) { for (let file of this.getSpine()) {
if (file !== currentFile) { if (file !== currentFile) {
@ -80,7 +81,9 @@ class EpubParser {
} }
return bytesize; return bytesize;
} }
getIdRef(filepath){
return this.opfXml.querySelector(`[href="${filepath}"]`).getAttribute("id");
}
/** /**
* resolves the given cfi to the xml node it points to * resolves the given cfi to the xml node it points to
* @param {string} cfi epub-cfi string in the form: epubcfi(/6/16[id13]!/4[id2]/4/2[doc12]/1:0) * @param {string} cfi epub-cfi string in the form: epubcfi(/6/16[id13]!/4[id2]/4/2[doc12]/1:0)
@ -161,11 +164,19 @@ class EpubParser {
return size; return size;
} }
/**
* @param currentFile filepath
* @param CFI
* @return {number} percentage
*/
getProgress(currentFile, CFI) { getProgress(currentFile, CFI) {
let percentage = (this.getPreviousFilesSize(currentFile) + this.getCurrentFileProgress(CFI))/this.getTotalByteLength(); let percentage = (this.getPreviousFilesSize(currentFile) + this.getCurrentFileProgress(CFI))/this.getTotalByteLength();
if (percentage === Infinity) { if (percentage === Infinity) {
return 0; return 0;
} else { } else if (percentage>1){
return 1;
}
else{
return percentage; return percentage;
} }
} }
@ -185,7 +196,7 @@ function waitFor(variable, callback) {
*/ */
function calculateProgress(){ function calculateProgress(){
let data=reader.rendition.currentLocation().end; let data=reader.rendition.currentLocation().end;
return Math.round(epubParser.getProgress(epubParser.absPath(data.href),data.cfi)*100); return Math.round(epubParser.getProgress(data.href,data.cfi)*100);
} }
var epubParser; var epubParser;
waitFor(reader.book,()=>{ waitFor(reader.book,()=>{