From 18acb186031204fe4ac75b95919239966d8439e0 Mon Sep 17 00:00:00 2001 From: Greg Kempe Date: Wed, 9 Aug 2023 08:16:00 +0000 Subject: [PATCH 1/2] jump to pdf page anchor --- .../js/components/DocumentContent/index.ts | 2 +- .../{ => DocumentContent}/pdf-renderer.ts | 22 ++++++++++++++----- peachjam/js/components/index.ts | 2 -- 3 files changed, 18 insertions(+), 8 deletions(-) rename peachjam/js/components/{ => DocumentContent}/pdf-renderer.ts (92%) diff --git a/peachjam/js/components/DocumentContent/index.ts b/peachjam/js/components/DocumentContent/index.ts index be95f5b1e..b3720e915 100644 --- a/peachjam/js/components/DocumentContent/index.ts +++ b/peachjam/js/components/DocumentContent/index.ts @@ -1,5 +1,5 @@ import DocumentSearch from '../DocumentSearch/index.vue'; -import PdfRenderer from '../pdf-renderer'; +import PdfRenderer from './pdf-renderer'; import debounce from 'lodash/debounce'; import { createAndMountApp } from '../../utils/vue-utils'; import { vueI18n } from '../../i18n'; diff --git a/peachjam/js/components/pdf-renderer.ts b/peachjam/js/components/DocumentContent/pdf-renderer.ts similarity index 92% rename from peachjam/js/components/pdf-renderer.ts rename to peachjam/js/components/DocumentContent/pdf-renderer.ts index 01baba129..96ee0e890 100644 --- a/peachjam/js/components/pdf-renderer.ts +++ b/peachjam/js/components/DocumentContent/pdf-renderer.ts @@ -1,8 +1,8 @@ import debounce from 'lodash/debounce'; -import items from '../items.json'; // @ts-ignore -import { markRange, rangeToTarget, targetToRange } from '../dom'; -import { scrollToElement } from '../utils/function'; +import { markRange, rangeToTarget, targetToRange } from '../../dom'; +import { scrollToElement } from '../../utils/function'; +import {startsWith} from "lodash"; type GlobalWorkerOptionsType = { [key: string]: any, @@ -46,8 +46,16 @@ class PdfRenderer { } loadPdf () { + // should we jump to a specific page? + let initialPage = null; + if ((document.location.hash || '').startsWith('#page-')) { + try { + initialPage = parseInt(document.location.hash.substring(6)); + } catch {} + } + this.root.removeAttribute('data-large-pdf'); - this.setupPdfAndPreviewPanels().then(() => { + this.setupPdfAndPreviewPanels(initialPage).then(() => { this.setupPreviewSyncing(); this.onPdfLoaded(); }).catch((e:ErrorEvent) => { @@ -92,6 +100,7 @@ class PdfRenderer { if (!e.currentTarget) return; this.activatePreviewPanel(e.currentTarget); if (!(e.currentTarget instanceof HTMLElement)) return; + document.location.hash = `#page-${e.currentTarget.dataset.page}`; this.scrollToPage(e.currentTarget.dataset.page); } @@ -111,7 +120,7 @@ class PdfRenderer { this.scrollToPage(pageNumber); } - async setupPdfAndPreviewPanels () { + async setupPdfAndPreviewPanels (initialPage: number | null) { const docElement = document.querySelector('.content-and-enrichments .content'); if (!docElement) return; const containerWidth = docElement.clientWidth || 0; @@ -138,6 +147,9 @@ class PdfRenderer { for (let i = 0; i < pdf.numPages; i++) { const page = await pdf.getPage(i + 1); await this.renderSinglePage(page, i, scale, containerWidth); + if (initialPage && initialPage === i + 1) { + this.scrollToPage(i + 1); + } } } catch (e) { console.log(e); diff --git a/peachjam/js/components/index.ts b/peachjam/js/components/index.ts index eac51578d..344e0d561 100644 --- a/peachjam/js/components/index.ts +++ b/peachjam/js/components/index.ts @@ -1,5 +1,4 @@ import { CopyToClipboard } from './clipboard'; -import PdfRenderer from './pdf-renderer'; import { RelationshipEnrichments } from './RelationshipEnrichment'; import DocumentList from './document-list'; import DocumentContent from './DocumentContent/index'; @@ -17,7 +16,6 @@ const components: Record = { DocumentContent, DocumentList, NavigationSelect, - PdfRenderer, RelationshipEnrichments, ToggleTab, TaxonomyTree, From 141422a6ed85a98b2b09716deef21b3253942a97 Mon Sep 17 00:00:00 2001 From: Greg Kempe Date: Wed, 16 Aug 2023 16:38:34 +0200 Subject: [PATCH 2/2] remove unused import --- peachjam/js/components/DocumentContent/pdf-renderer.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/peachjam/js/components/DocumentContent/pdf-renderer.ts b/peachjam/js/components/DocumentContent/pdf-renderer.ts index 5e05fb53a..02dd74d86 100644 --- a/peachjam/js/components/DocumentContent/pdf-renderer.ts +++ b/peachjam/js/components/DocumentContent/pdf-renderer.ts @@ -3,7 +3,6 @@ import peachJam from '../../peachjam'; // @ts-ignore import { markRange, rangeToTarget, targetToRange } from '../../dom'; import { scrollToElement } from '../../utils/function'; -import {startsWith} from "lodash"; type GlobalWorkerOptionsType = { [key: string]: any,