From e90d77cbbdaa1318a7a4628abbf7ca219219bdc5 Mon Sep 17 00:00:00 2001 From: TheJoeCoder <joe@radialbog9.uk> Date: Sun, 25 Aug 2024 19:21:53 +0100 Subject: [PATCH] PDF Reader progress update and improvements --- reader/static/css/reader_toolbar.css | 26 ++++++++++++ .../reader/book_read/pdf_viewer.html | 40 ++++++++++++++++++- reader/templates/reader/book_read/viewer.mjs | 4 +- 3 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 reader/static/css/reader_toolbar.css diff --git a/reader/static/css/reader_toolbar.css b/reader/static/css/reader_toolbar.css new file mode 100644 index 0000000..70fd952 --- /dev/null +++ b/reader/static/css/reader_toolbar.css @@ -0,0 +1,26 @@ +.reading-toolbar-top { + height: 5%; + table { + width: 100%; + height: 100%; + } + background-color: #ccc; + color: #1c1b22; +} + +.ta-left { + float: left; +} + +.ta-right { + float: right; +} + +.ta-text { + padding: 1rem; + font-family: "Inter", "SF Pro", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Helvetica Neue", "Helvetica", "Arial", sans-serif; +} + +#outerContainer { + height: 95% !important; +} \ No newline at end of file diff --git a/reader/templates/reader/book_read/pdf_viewer.html b/reader/templates/reader/book_read/pdf_viewer.html index c077701..5fce1a9 100644 --- a/reader/templates/reader/book_read/pdf_viewer.html +++ b/reader/templates/reader/book_read/pdf_viewer.html @@ -36,16 +36,34 @@ See https://github.com/adobe-type-tools/cmap-resources <link rel="resource" type="application/l10n" href="{% static "pdfjs/locale/locale.json" %}"> <script src="{% static "pdfjs/pdf.mjs" %}" type="module"></script> + <script src="{% static "js/jquery-3.7.1.min.js" %}"></script> + <link rel="stylesheet" href="{% static "pdfjs/viewer.css" %}"> + <link rel="stylesheet" href="{% static "css/reader_toolbar.css" %}"> + <script type="module"> {% include "reader/book_read/viewer.mjs" %} </script> </head> <body tabindex="1"> + <div class="reading-toolbar-top"> + <table> + <tbody> + <tr> + <td class="ta-left"> + <span class="ta-text">Now reading: {{ book.title }}</span> + </td> + <td></td> + <td class="ta-right"> + <span class="ta-text"><a href="{% url 'view_book' book.id %}" class="btn btn-primary">Back to book</a></span> + </td> + </tr> + </tbody> + </table> + </div> <div id="outerContainer"> - <div id="sidebarContainer"> <div id="toolbarSidebar"> <div id="toolbarSidebarLeft"> @@ -620,16 +638,34 @@ See https://github.com/adobe-type-tools/cmap-resources </div> <!-- outerContainer --> <div id="printContainer"></div> - <script> + PDFViewerApplicationOptions.set("disablehistory", true); document.addEventListener("webviewerloaded", () => { PDFViewerApplication.initializedPromise.then(() => { + {% if pagenumber %} + PDFViewerApplication.pdfViewer.currentPageNumber = {{ pagenumber }}; + {% endif %} PDFViewerApplication.eventBus.on("documentloaded", (e) => { console.log("The document has now been loaded"); }); PDFViewerApplication.eventBus.on("pagechanging", (e) => { console.log('pagechanging, from ' + e.previous + ' to ' + e.pageNumber); + if (e.pageNumber === {{ pagenumber }}) { + return; + } + $.ajax( + "{% url 'update_progress' book_id=book.id %}", + { + method: "POST", + data: { + csrfmiddlewaretoken: "{{ csrf_token }}", + last_progress_cfi: e.pageNumber, + last_progress_device: "Web Viewer", + percentage_read: e.pageNumber / PDFViewerApplication.pagesCount + } + } + ); }); PDFViewerApplication.eventBus.on("scalechanging", (e) => { diff --git a/reader/templates/reader/book_read/viewer.mjs b/reader/templates/reader/book_read/viewer.mjs index d9d94c0..0ab897b 100644 --- a/reader/templates/reader/book_read/viewer.mjs +++ b/reader/templates/reader/book_read/viewer.mjs @@ -636,7 +636,7 @@ const defaultOptions = { kind: OptionKind.VIEWER + OptionKind.PREFERENCE }, debuggerSrc: { - value: "./debugger.mjs", + value: "{% static 'pdfjs/debugger.mjs' %}", kind: OptionKind.VIEWER }, defaultZoomDelay: { @@ -648,7 +648,7 @@ const defaultOptions = { kind: OptionKind.VIEWER + OptionKind.PREFERENCE }, disableHistory: { - value: false, + value: true, kind: OptionKind.VIEWER }, disablePageLabels: { -- GitLab