FEATURE signature: show full pages - UI and turn pages

This commit is contained in:
nobohan 2024-11-25 16:29:20 +01:00 committed by Julien Fastré
parent 96dfddc55f
commit bd3198e42b
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
2 changed files with 29 additions and 18 deletions

View File

@ -26,9 +26,9 @@
</template> </template>
</modal> </modal>
</teleport> </teleport>
<div class="col-12 m-auto"> <div class="col-12 m-auto sticky-top">
<div class="row justify-content-center border-bottom pdf-tools d-md-none"> <div class="row justify-content-center border-bottom pdf-tools d-md-none">
<div class="col text-center turn-page"> <div class="col-5 text-center turn-page">
<select <select
class="form-select form-select-sm" class="form-select form-select-sm"
id="zoomSelect" id="zoomSelect"
@ -75,10 +75,13 @@
</button> </button>
<input <input
type="checkbox" type="checkbox"
id="checkbox" id="checkboxMulti"
v-model="multiPage" v-model="multiPage"
@change="toggleMultiPage" @change="toggleMultiPage"
/> />
<label class="form-check-label" for="checkboxMulti">
{{ $t("all_pages") }}
</label>
</template> </template>
</div> </div>
<div <div
@ -143,7 +146,7 @@
<div <div
class="row justify-content-center border-bottom pdf-tools d-none d-md-flex" class="row justify-content-center border-bottom pdf-tools d-none d-md-flex"
> >
<div class="col-3 text-center turn-page ps-3"> <div class="col-5 text-center turn-page ps-3">
<select <select
class="form-select form-select-sm" class="form-select form-select-sm"
id="zoomSelect" id="zoomSelect"
@ -173,10 +176,13 @@
</button> </button>
<input <input
type="checkbox" type="checkbox"
id="checkbox" id="checkboxMulti"
v-model="multiPage" v-model="multiPage"
@change="toggleMultiPage" @change="toggleMultiPage"
/> />
<label class="form-check-label" for="checkboxMulti">
{{ $t("see_all_pages") }}
</label>
</template> </template>
</div> </div>
<div <div
@ -263,15 +269,10 @@
</div> </div>
<div <div
v-if="multiPage" v-if="multiPage"
class="col-xs-12 col-md-12 col-lg-9 m-auto my-5 text-center" class="col-xs-12 col-md-12 col-lg-9 m-auto my-5 text-center d-flex flex-column"
:class="{ onAddZone: canvasEvent === 'add' }" :class="{ onAddZone: canvasEvent === 'add' }"
> >
<canvas <canvas v-for="p in pageCount" :key="p" :id="`canvas-${p}`"></canvas>
v-for="p in pageCount"
:key="p"
class="m-auto"
:id="`canvas-${p}`"
></canvas>
</div> </div>
<div <div
v-else v-else
@ -339,7 +340,7 @@ import {download_and_decrypt_doc, download_doc_as_pdf} from "../StoredObjectButt
pdfjsLib.GlobalWorkerOptions.workerSrc = "pdfjs-dist/build/pdf.worker.mjs"; pdfjsLib.GlobalWorkerOptions.workerSrc = "pdfjs-dist/build/pdf.worker.mjs";
const multiPage: Ref<boolean> = ref(false); const multiPage: Ref<boolean> = ref(true);
const modalOpen: Ref<boolean> = ref(false); const modalOpen: Ref<boolean> = ref(false);
const loading: Ref<boolean> = ref(false); const loading: Ref<boolean> = ref(false);
const adding: Ref<boolean> = ref(false); const adding: Ref<boolean> = ref(false);
@ -405,7 +406,6 @@ declare global {
const $toast = useToast(); const $toast = useToast();
const signature = window.signature; const signature = window.signature;
console.log("signature", signature);
const setZoomLevel = async (zoomLevel: string) => { const setZoomLevel = async (zoomLevel: string) => {
zoom.value = Number.parseFloat(zoomLevel); zoom.value = Number.parseFloat(zoomLevel);
@ -545,7 +545,6 @@ const selectZoneEvent = (e: PointerEvent, canvas: HTMLCanvasElement) =>
selectZone(z, canvas); selectZone(z, canvas);
} else { } else {
if (userSignatureZone.value.index === z.index) { if (userSignatureZone.value.index === z.index) {
console.log("going to sign zone: ", z.index);
sign(); sign();
} }
} }
@ -558,10 +557,14 @@ const canvasClick = (e: PointerEvent, canvas: HTMLCanvasElement) =>
: addZoneEvent(e, canvas); : addZoneEvent(e, canvas);
const turnPage = async (upOrDown: number) => { const turnPage = async (upOrDown: number) => {
//userSignatureZone.value = null; // desactivate the reset of the zone when turning page
page.value = page.value + upOrDown; page.value = page.value + upOrDown;
await setPage(page.value); if (multiPage.value) {
setTimeout(drawAllZones, 200); const canvas = getCanvas(page.value);
canvas.scrollIntoView();
} else {
await setPage(page.value);
setTimeout(drawAllZones, 200);
}
}; };
const turnSignature = async (upOrDown: number) => { const turnSignature = async (upOrDown: number) => {
@ -579,6 +582,7 @@ const turnSignature = async (upOrDown: number) => {
page.value = currentZone.PDFPage.index + 1; page.value = currentZone.PDFPage.index + 1;
const canvas = getCanvas(currentZone.PDFPage.index + 1); const canvas = getCanvas(currentZone.PDFPage.index + 1);
selectZone(currentZone, canvas); selectZone(currentZone, canvas);
canvas.scrollIntoView();
} }
}; };
@ -786,6 +790,7 @@ init();
<style scoped lang="scss"> <style scoped lang="scss">
canvas { canvas {
box-shadow: 0 20px 20px rgba(0, 0, 0, 0.2); box-shadow: 0 20px 20px rgba(0, 0, 0, 0.2);
margin: 1rem auto;
} }
.onAddZone { .onAddZone {
@ -805,6 +810,10 @@ div#action-buttons {
div.pdf-tools { div.pdf-tools {
background-color: #f3f3f3; background-color: #f3f3f3;
font-size: 0.6rem; font-size: 0.6rem;
label {
font-size: 0.75rem !important;
margin: auto 0 auto 0.3rem;
}
button { button {
font-size: 0.75rem !important; font-size: 0.75rem !important;
} }

View File

@ -24,6 +24,8 @@ const appMessages = {
loading: 'Chargement...', loading: 'Chargement...',
remove_sign_zone: 'Enlever la zone', remove_sign_zone: 'Enlever la zone',
return: 'Retour', return: 'Retour',
see_all_pages: 'Voir toutes les pages',
all_pages: 'Toutes les pages',
} }
} }