Add line count
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
return;
|
||||
}
|
||||
const pageClamped = clamp(newPage, 1, pages?.length);
|
||||
const charCount = getCharCount(pages, pageClamped) || 0;
|
||||
const { charCount } = getCharCount(pages, pageClamped);
|
||||
|
||||
updateProgress(
|
||||
volume.mokuroData.volume_uuid,
|
||||
@@ -144,8 +144,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
$: charCount = $settings.charCount ? getCharCount(pages, page) : 0;
|
||||
$: maxCharCount = getCharCount(pages);
|
||||
$: charCount = $settings.charCount ? getCharCount(pages, page).charCount : 0;
|
||||
$: maxCharCount = getCharCount(pages).charCount;
|
||||
$: totalLineCount = getCharCount(pages).lineCount;
|
||||
|
||||
let startX = 0;
|
||||
let startY = 0;
|
||||
@@ -204,26 +205,34 @@
|
||||
|
||||
$: {
|
||||
if (volume) {
|
||||
const { charCount, lineCount } = getCharCount(pages, page);
|
||||
|
||||
fireExstaticEvent('mokuro-reader:page.change', {
|
||||
title: volume.mokuroData.title,
|
||||
volumeName: volume.mokuroData.volume,
|
||||
currentCharCount: getCharCount(pages, page) || 0,
|
||||
currentCharCount: charCount,
|
||||
currentPage: page,
|
||||
totalPages: pages.length,
|
||||
totalCharCount: maxCharCount || 0
|
||||
totalCharCount: maxCharCount || 0,
|
||||
currentlineCount: lineCount,
|
||||
totalLineCount
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
beforeNavigate(() => {
|
||||
if (volume) {
|
||||
const { charCount, lineCount } = getCharCount(pages, page);
|
||||
|
||||
fireExstaticEvent('mokuro-reader:reader.closed', {
|
||||
title: volume.mokuroData.title,
|
||||
volumeName: volume.mokuroData.volume,
|
||||
currentCharCount: getCharCount(pages, page) || 0,
|
||||
currentCharCount: charCount,
|
||||
currentPage: page,
|
||||
totalPages: pages.length,
|
||||
totalCharCount: maxCharCount || 0
|
||||
totalCharCount: maxCharCount || 0,
|
||||
currentlineCount: lineCount,
|
||||
totalLineCount
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -17,20 +17,23 @@ export function countChars(line: string) {
|
||||
}
|
||||
|
||||
export function getCharCount(pages: Page[], currentPage?: number) {
|
||||
let charCount = 0;
|
||||
let lineCount = 0;
|
||||
|
||||
if (pages && pages.length > 0) {
|
||||
const max = currentPage || pages.length
|
||||
let charCount = 0;
|
||||
|
||||
for (let i = 0; i < max; i++) {
|
||||
const blocks = pages[i].blocks;
|
||||
|
||||
blocks.forEach((block) => {
|
||||
lineCount += block.lines.length;
|
||||
block.lines.forEach((line) => {
|
||||
charCount += countChars(line);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return charCount;
|
||||
}
|
||||
return { charCount, lineCount };
|
||||
}
|
||||
@@ -39,7 +39,9 @@ type ExtaticPayload = {
|
||||
currentCharCount: number;
|
||||
totalCharCount: number;
|
||||
currentPage: number;
|
||||
totalPages: number
|
||||
totalPages: number;
|
||||
currentlineCount: number;
|
||||
totalLineCount: number;
|
||||
}
|
||||
|
||||
type ExtaticEvent = 'mokuro-reader:page.change' | 'mokuro-reader:reader.closed'
|
||||
|
||||
Reference in New Issue
Block a user