From e55eb48f45f1b701679178400587237da86b3b09 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Tue, 28 Jan 2025 09:37:33 +0100 Subject: [PATCH] improve comments system --- public/site/plugins/classes/Position.php | 2 +- src/components/comments/Comment.vue | 16 +++--- src/components/comments/Comments.vue | 8 +-- src/components/project/PdfViewer.vue | 15 +++--- src/stores/dialog.js | 63 +++++++++++++++--------- 5 files changed, 63 insertions(+), 41 deletions(-) diff --git a/public/site/plugins/classes/Position.php b/public/site/plugins/classes/Position.php index 29c8dca..3e95783 100644 --- a/public/site/plugins/classes/Position.php +++ b/public/site/plugins/classes/Position.php @@ -22,7 +22,7 @@ class Position public function toArray() { $array = []; - if ($this->pageIndex) { + if (isset($this->pageIndex)) { $array["pageIndex"] = $this->pageIndex; } diff --git a/src/components/comments/Comment.vue b/src/components/comments/Comment.vue index 5803e9b..273386a 100644 --- a/src/components/comments/Comment.vue +++ b/src/components/comments/Comment.vue @@ -101,7 +101,7 @@ const route = useRoute(); const userStore = useUserStore(); const api = useApiStore(); const dialog = useDialogStore(); -const { activeTracks, openedComment } = storeToRefs(useDialogStore()); +const { activeTracks, openedComment, vpvRef } = storeToRefs(useDialogStore()); const draftText = ref(comment.text); const editField = ref(null); const commentNode = useTemplateRef("comment-node"); @@ -157,11 +157,15 @@ async function read() { } function scrollTo() { - const correspondingMarker = document.querySelector( - `.comment-marker[href="#comment-${comment.id}"]` - ); - if (!correspondingMarker) return; - correspondingMarker.scrollIntoView(); + vpvRef.value.goToPage(comment.position.pageIndex); + setTimeout(() => { + const correspondingMarker = document.querySelector( + `.comment-marker[href="#comment-${comment.id}"]` + ); + console.log(correspondingMarker); + if (!correspondingMarker) return; + correspondingMarker.scrollIntoView(); + }, 1000); } async function deleteComment(event) { diff --git a/src/components/comments/Comments.vue b/src/components/comments/Comments.vue index 24501cf..5a947b0 100644 --- a/src/components/comments/Comments.vue +++ b/src/components/comments/Comments.vue @@ -219,6 +219,7 @@ async function addComment(newComment) { /projects\/.*?(?=\/[^/]+\/[^/]+$)/ ); newComment.fileParentUri = matchFileParentUri ? matchFileParentUri[0] : null; + console.log(newComment); const newFile = await api.addComment(newComment); resetDraftComment(); isAddOpen.value = false; @@ -271,10 +272,7 @@ function prepareDraftCommentInPdf(event) { const pageContainer = event.target.closest(".page-inner-container"); if (!pageContainer || !viewContainer) return; - const pageLabel = pageContainer - .closest(".vpv-page-inner-container") - .getAttribute("aria-label"); - const pageIndex = pageLabel.charAt(pageLabel.length - 1); + const pageIndex = parseInt(pageContainer.dataset.pageIndex) + 1; const viewRect = viewContainer.getBoundingClientRect(); const pageRect = pageContainer.getBoundingClientRect(); @@ -287,8 +285,6 @@ function prepareDraftCommentInPdf(event) { const relativeX = (x / pageRect.width) * 100; const relativeY = (y / pageRect.height) * 100; - console.log(pageIndex); - draftComment.value.position = { x: relativeX, y: relativeY, diff --git a/src/components/project/PdfViewer.vue b/src/components/project/PdfViewer.vue index 82c872c..72f7aef 100644 --- a/src/components/project/PdfViewer.vue +++ b/src/components/project/PdfViewer.vue @@ -6,6 +6,7 @@ :src="openedFile.url" local="fr_FR" @loaded="onPdfLoaded" + ref="vpvRef" />