From 0ba78430b862958b436d712f8a1042182f8a33c2 Mon Sep 17 00:00:00 2001 From: "aditya.chandel" <> Date: Tue, 18 Feb 2025 07:55:58 -0700 Subject: [PATCH] Revert "Remove pdf sidebar for good" This reverts commit 95913b591c463fe819d72f2c78f96dcd996aca65. --- .../model/entity/PdfViewerPreferencesEntity.java | 3 +++ .../adityachandel/booklore/service/BooksService.java | 1 + .../migration/V1__Create_Library_and_Book_Tables.sql | 11 ++++++----- .../components/pdf-viewer/pdf-viewer.component.html | 3 ++- .../components/pdf-viewer/pdf-viewer.component.ts | 12 ++++++++++++ booklore-ui/src/app/book/model/book.model.ts | 1 + 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/booklore-api/src/main/java/com/adityachandel/booklore/model/entity/PdfViewerPreferencesEntity.java b/booklore-api/src/main/java/com/adityachandel/booklore/model/entity/PdfViewerPreferencesEntity.java index d6f2a60d8..e63cbc1bd 100644 --- a/booklore-api/src/main/java/com/adityachandel/booklore/model/entity/PdfViewerPreferencesEntity.java +++ b/booklore-api/src/main/java/com/adityachandel/booklore/model/entity/PdfViewerPreferencesEntity.java @@ -24,6 +24,9 @@ public class PdfViewerPreferencesEntity { @Column(name = "zoom") private String zoom; + @Column(name = "sidebar_visible") + private Boolean sidebarVisible; + @Column(name = "spread") private String spread; } \ No newline at end of file diff --git a/booklore-api/src/main/java/com/adityachandel/booklore/service/BooksService.java b/booklore-api/src/main/java/com/adityachandel/booklore/service/BooksService.java index 365201101..84d8dd67b 100644 --- a/booklore-api/src/main/java/com/adityachandel/booklore/service/BooksService.java +++ b/booklore-api/src/main/java/com/adityachandel/booklore/service/BooksService.java @@ -68,6 +68,7 @@ public class BooksService { PdfViewerPreferencesEntity viewerPrefs = bookEntity.getPdfViewerPrefs(); viewerPrefs.setZoom(pdfSettings.getZoom()); viewerPrefs.setSpread(pdfSettings.getSpread()); + viewerPrefs.setSidebarVisible(pdfSettings.getSidebarVisible()); pdfViewerPreferencesRepository.save(viewerPrefs); } else if (bookEntity.getBookType() == BookFileType.EPUB) { EpubViewerPreferences epubSettings = bookViewerSettings.getEpubSettings(); diff --git a/booklore-api/src/main/resources/db/migration/V1__Create_Library_and_Book_Tables.sql b/booklore-api/src/main/resources/db/migration/V1__Create_Library_and_Book_Tables.sql index 3cd2512ec..9e3774c78 100644 --- a/booklore-api/src/main/resources/db/migration/V1__Create_Library_and_Book_Tables.sql +++ b/booklore-api/src/main/resources/db/migration/V1__Create_Library_and_Book_Tables.sql @@ -35,9 +35,9 @@ CREATE INDEX IF NOT EXISTS idx_library_id ON book (library_id); CREATE TABLE IF NOT EXISTS book_metadata ( book_id BIGINT NOT NULL PRIMARY KEY, - title VARCHAR(1024), - subtitle VARCHAR(1024), - publisher VARCHAR(1024), + title VARCHAR(255), + subtitle VARCHAR(255), + publisher VARCHAR(255), published_date DATE, description TEXT, isbn_13 VARCHAR(20), @@ -47,9 +47,9 @@ CREATE TABLE IF NOT EXISTS book_metadata language VARCHAR(10), rating FLOAT, review_count INT, - cover VARCHAR(1024), + cover VARCHAR(255), cover_updated_on TIMESTAMP NULL, - series_name VARCHAR(1024), + series_name VARCHAR(255), series_number INT, series_total INT, all_fields_locked BOOLEAN DEFAULT FALSE, @@ -103,6 +103,7 @@ CREATE TABLE IF NOT EXISTS pdf_viewer_preference ( book_id BIGINT PRIMARY KEY, zoom VARCHAR(16) NULL, + sidebar_visible BOOLEAN NULL, spread VARCHAR(16) NULL, CONSTRAINT fk_pdf_viewer_setting FOREIGN KEY (book_id) REFERENCES book (id) ON DELETE CASCADE ); diff --git a/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.html b/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.html index a510d7ead..14c274f30 100644 --- a/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.html +++ b/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.html @@ -5,11 +5,12 @@ [page]="page" [rotation]="rotation" [scrollMode]="scrollMode" + [sidebarVisible]="sidebarVisible" [zoom]="zoom" [spread]="spread" - [sidebarVisible]="false" (pageChange)="onPageChange($event)" (zoomChange)="onZoomChange($event)" + (sidebarVisibleChange)="onSidebarVisibleChange($event)" (pdfLoaded)="onPdfLoaded($event)" (spreadChange)="onSpreadChange($event)"> diff --git a/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.ts b/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.ts index f62f059d4..66912fdfb 100644 --- a/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.ts +++ b/booklore-ui/src/app/book/components/pdf-viewer/pdf-viewer.component.ts @@ -18,6 +18,7 @@ export class PdfViewerComponent implements OnInit, OnDestroy { rotation: 0 | 90 | 180 | 270 = 0; scrollMode: ScrollModeType = ScrollModeType.page; + sidebarVisible!: boolean; page!: number; spread!: 'off' | 'even' | 'odd'; zoom!: number | string; @@ -78,6 +79,14 @@ export class PdfViewerComponent implements OnInit, OnDestroy { } } + onSidebarVisibleChange(visible: boolean): void { + if (!this.pdfLoaded) return; + if (visible !== this.sidebarVisible) { + this.sidebarVisible = visible; + this.updateViewerSetting(); + } + } + onSpreadChange(spread: 'off' | 'even' | 'odd'): void { if (!this.pdfLoaded) return; if (spread !== this.spread) { @@ -90,6 +99,7 @@ export class PdfViewerComponent implements OnInit, OnDestroy { if (!this.pdfLoaded) return; const bookSetting: BookSetting = { pdfSettings: { + sidebarVisible: this.sidebarVisible, spread: this.spread, zoom: this.zoom, } @@ -113,9 +123,11 @@ export class PdfViewerComponent implements OnInit, OnDestroy { this.updateProgress(); if (this.pdfScope === 'global') { this.zoom = this.globalPdfSettings?.zoom || 'page-fit'; + this.sidebarVisible = this.globalPdfSettings?.sidebar ?? true; this.spread = this.globalPdfSettings?.spread || 'odd'; } else { this.zoom = this.individualPdfSettings?.zoom || this.globalPdfSettings?.zoom || 'page-fit'; + this.sidebarVisible = this.individualPdfSettings?.sidebarVisible ?? this.globalPdfSettings?.sidebar ?? true; this.spread = this.individualPdfSettings?.spread || this.globalPdfSettings?.spread || 'odd'; } } diff --git a/booklore-ui/src/app/book/model/book.model.ts b/booklore-ui/src/app/book/model/book.model.ts index ee95c744b..fca95c0bc 100644 --- a/booklore-ui/src/app/book/model/book.model.ts +++ b/booklore-ui/src/app/book/model/book.model.ts @@ -72,6 +72,7 @@ export interface Award { export interface PdfViewerSetting { zoom: string | number; + sidebarVisible: boolean; spread: 'off' | 'even' | 'odd'; }