From d32eec514e9139fb338692a8bc1a1af97ed75779 Mon Sep 17 00:00:00 2001 From: KanjiEater Date: Sun, 24 Sep 2023 08:18:40 -0500 Subject: [PATCH 1/3] Double Page (No Cover) now keeps opposite flow of Double Page flow --- komga-webui/src/functions/book-spreads.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/komga-webui/src/functions/book-spreads.ts b/komga-webui/src/functions/book-spreads.ts index 54a86458..a1b02a78 100644 --- a/komga-webui/src/functions/book-spreads.ts +++ b/komga-webui/src/functions/book-spreads.ts @@ -28,6 +28,10 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay const p = pagesClone.shift() as PageDtoWithUrl if (isPageLandscape(p)) { spreads.push([p]) + if (pageLayout === PagedReaderLayout.DOUBLE_NO_COVER) { + const p2 = pagesClone.shift() as PageDtoWithUrl + spreads.push([createEmptyPage(p2), p2]) + } } else { if (pagesClone.length > 0) { const p2 = pagesClone.shift() as PageDtoWithUrl From 172404a21254ffa977c400d0abe68fd7e2d4119f Mon Sep 17 00:00:00 2001 From: KanjiEater Date: Sun, 24 Sep 2023 11:37:15 -0500 Subject: [PATCH 2/3] Simplified DPNC layout adding it's empty page --- komga-webui/src/functions/book-spreads.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/komga-webui/src/functions/book-spreads.ts b/komga-webui/src/functions/book-spreads.ts index a1b02a78..3f527bb4 100644 --- a/komga-webui/src/functions/book-spreads.ts +++ b/komga-webui/src/functions/book-spreads.ts @@ -28,18 +28,19 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay const p = pagesClone.shift() as PageDtoWithUrl if (isPageLandscape(p)) { spreads.push([p]) - if (pageLayout === PagedReaderLayout.DOUBLE_NO_COVER) { - const p2 = pagesClone.shift() as PageDtoWithUrl - spreads.push([createEmptyPage(p2), p2]) - } } else { if (pagesClone.length > 0) { - const p2 = pagesClone.shift() as PageDtoWithUrl - if (isPageLandscape(p2)) { - spreads.push([p, createEmptyPage(p)]) - spreads.push([p2]) + const [prevPage] = spreads[spreads.length - 1] as PageDtoWithUrl[] + if (pageLayout === PagedReaderLayout.DOUBLE_NO_COVER && isPageLandscape(prevPage)){ + spreads.push([createEmptyPage(p), p]) } else { - spreads.push([p, p2]) + const p2 = pagesClone.shift() as PageDtoWithUrl + if (isPageLandscape(p2)) { + spreads.push([p, createEmptyPage(p)]) + spreads.push([p2]) + } else { + spreads.push([p, p2]) + } } } else { spreads.push([p, createEmptyPage(p)]) From 9c38bdf1b22384b9f6cdc56c44c561dc8993a946 Mon Sep 17 00:00:00 2001 From: KanjiEater Date: Sun, 24 Sep 2023 13:03:44 -0500 Subject: [PATCH 3/3] Fixed the additional issue in 803 where last two double spreads could both have one empty, when they should have been together --- komga-webui/src/functions/book-spreads.ts | 11 +---------- komga-webui/tests/unit/functions/book-spreads.spec.ts | 11 ++++------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/komga-webui/src/functions/book-spreads.ts b/komga-webui/src/functions/book-spreads.ts index 3f527bb4..7071419c 100644 --- a/komga-webui/src/functions/book-spreads.ts +++ b/komga-webui/src/functions/book-spreads.ts @@ -9,20 +9,12 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay if (pageLayout !== PagedReaderLayout.SINGLE_PAGE) { const spreads = [] as PageDtoWithUrl[][] const pagesClone = cloneDeep(pages) - let lastPages = undefined if (pageLayout === PagedReaderLayout.DOUBLE_PAGES) { const firstPage = pagesClone.shift() as PageDtoWithUrl if (isPageLandscape(firstPage)) spreads.push([firstPage] as PageDtoWithUrl[]) else spreads.push([createEmptyPage(firstPage), firstPage] as PageDtoWithUrl[]) - if (pagesClone.length > 0) { - const lastPage = pagesClone.pop() as PageDtoWithUrl - if(isPageLandscape(lastPage)) - lastPages = [lastPage] as PageDtoWithUrl[] - else - lastPages = [lastPage, createEmptyPage(lastPage)] as PageDtoWithUrl[] - } } while (pagesClone.length > 0) { const p = pagesClone.shift() as PageDtoWithUrl @@ -30,7 +22,7 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay spreads.push([p]) } else { if (pagesClone.length > 0) { - const [prevPage] = spreads[spreads.length - 1] as PageDtoWithUrl[] + const [prevPage] = spreads.length > 0 ? (spreads[spreads.length - 1] as PageDtoWithUrl[]) : [] if (pageLayout === PagedReaderLayout.DOUBLE_NO_COVER && isPageLandscape(prevPage)){ spreads.push([createEmptyPage(p), p]) } else { @@ -47,7 +39,6 @@ export function buildSpreads(pages: PageDtoWithUrl[], pageLayout: PagedReaderLay } } } - if (lastPages) spreads.push(lastPages) return spreads } else { return pages.map(p => [p]) diff --git a/komga-webui/tests/unit/functions/book-spreads.spec.ts b/komga-webui/tests/unit/functions/book-spreads.spec.ts index df382912..7b2c85dd 100644 --- a/komga-webui/tests/unit/functions/book-spreads.spec.ts +++ b/komga-webui/tests/unit/functions/book-spreads.spec.ts @@ -95,12 +95,12 @@ describe('Double Pages', () => { ] as PageDtoWithUrl[] const spreads = buildSpreads(pages, pageLayout) - - expect(spreads.length).toEqual(4) + // Expecting [E, 1], [2, 3], [4, 5] + expect(spreads.length).toEqual(3) expect(spreads[0].length).toEqual(2) - expect(spreads[0][1].number).toEqual(1) expect(spreads[0][0].number).toEqual(0) // empty page + expect(spreads[0][1].number).toEqual(1) expect(spreads[1].length).toEqual(2) expect(spreads[1][0].number).toEqual(2) @@ -108,10 +108,7 @@ describe('Double Pages', () => { expect(spreads[2].length).toEqual(2) expect(spreads[2][0].number).toEqual(4) - - expect(spreads[3].length).toEqual(2) - expect(spreads[3][0].number).toEqual(5) - expect(spreads[3][1].number).toEqual(0) // empty page + expect(spreads[2][1].number).toEqual(5) }) })