2026-01-05 19:33:15 +01:00
|
|
|
document.addEventListener('DOMContentLoaded', (event) => {
|
|
|
|
|
let p = includeHTML();
|
|
|
|
|
p.then(() => {
|
|
|
|
|
interfaceEvents();
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let flowBook = document.querySelector("#book-content");
|
|
|
|
|
let book_content = flowBook.content;
|
|
|
|
|
let paged = new Paged.Previewer();
|
|
|
|
|
// paged.preview(book_content, ["/assets/css/print-template.css", "/assets/css/main.css", "/assets/css/print.css"], document.querySelector("#renderbook")).then((flow) => {
|
|
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
paged.preview(book_content, ["assets/css/print-template.css", "assets/css/main.css", "assets/css/print.css"], document.querySelector("#renderbook")).then((flow) => {
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function interfaceEvents(){
|
|
|
|
|
|
|
|
|
|
let body = document.getElementsByTagName("body")[0];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// set a "unique" filename based on title element, in case several books are opened
|
|
|
|
|
var fileTitle = document.getElementsByTagName("title")[0].text;
|
|
|
|
|
|
|
|
|
|
/* BASELINE ----------------------------------------------------------------------------------------------------
|
|
|
|
|
----------------------------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
/* Set baseline onload */
|
|
|
|
|
let baselineToggle = localStorage.getItem('baselineToggle' + fileTitle);
|
|
|
|
|
let baselineButton = document.querySelector('#label-baseline-toggle');
|
|
|
|
|
let baselineSize = localStorage.getItem('baselineSize' + fileTitle);
|
|
|
|
|
let baselinePosition = localStorage.getItem('baselinePosition');
|
|
|
|
|
let baselineSizeInput = document.querySelector('#size-baseline');
|
|
|
|
|
let baselinePositionInput = document.querySelector('#position-baseline');
|
|
|
|
|
|
|
|
|
|
if(baselineToggle == "no-baseline"){
|
|
|
|
|
body.classList.add('no-baseline');
|
|
|
|
|
baselineButton.innerHTML = "Afficher";
|
|
|
|
|
}else if(baselineToggle == "baseline"){
|
|
|
|
|
body.classList.remove('no-baseline');
|
|
|
|
|
document.querySelector("#baseline-toggle").checked = "checked";
|
|
|
|
|
baselineButton.innerHTML = "Masquer";
|
|
|
|
|
}else{
|
|
|
|
|
body.classList.add('no-baseline');
|
|
|
|
|
localStorage.setItem('baselineToggle' + fileTitle, 'no-baseline');
|
|
|
|
|
baselineButton.innerHTML = "Afficher";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Get baseline size and position on load*/
|
|
|
|
|
if(baselineSize){
|
|
|
|
|
baselineSizeInput.value = baselineSize;
|
|
|
|
|
document.documentElement.style.setProperty('--pagedjs-baseline', baselineSize + 'px');
|
|
|
|
|
}else{
|
|
|
|
|
localStorage.setItem('baselineSize' + fileTitle, baselineSizeInput.value);
|
|
|
|
|
}
|
|
|
|
|
baselinePositionInput.addEventListener("input", (e) => {
|
|
|
|
|
});
|
|
|
|
|
if(baselinePosition){
|
|
|
|
|
baselinePositionInput.value = baselinePosition;
|
|
|
|
|
document.documentElement.style.setProperty('--pagedjs-baseline-position', baselinePosition + 'px');
|
|
|
|
|
}else{
|
|
|
|
|
localStorage.setItem('baselineSPosition', baselinePositionInput.value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Toggle baseline */
|
|
|
|
|
document.querySelector("#baseline-toggle").addEventListener("input", (e) => {
|
|
|
|
|
if(e.target.checked){
|
|
|
|
|
/* see baseline */
|
|
|
|
|
body.classList.remove('no-baseline');
|
|
|
|
|
localStorage.setItem('baselineToggle' + fileTitle, 'baseline');
|
|
|
|
|
baselineButton.innerHTML = "Masquer";
|
|
|
|
|
}else{
|
|
|
|
|
/* hide baseline */
|
|
|
|
|
body.classList.add('no-baseline');
|
|
|
|
|
localStorage.setItem('baselineToggle' + fileTitle, 'no-baseline');
|
|
|
|
|
baselineButton.innerHTML = "Afficher";
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Change baseline size on input */
|
|
|
|
|
document.querySelector("#size-baseline").addEventListener("input", (e) => {
|
|
|
|
|
document.documentElement.style.setProperty('--pagedjs-baseline', e.target.value + 'px');
|
|
|
|
|
localStorage.setItem('baselineSize' + fileTitle, baselineSizeInput.value);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Change baseline position on input */
|
|
|
|
|
document.querySelector("#position-baseline").addEventListener("input", (e) => {
|
|
|
|
|
document.documentElement.style.setProperty('--pagedjs-baseline-position', e.target.value + 'px');
|
|
|
|
|
localStorage.setItem('baselinePosition', baselinePositionInput.value);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* MARGIN BOXES ----------------------------------------------------------------------------------------------------
|
|
|
|
|
----------------------------------------------------------------------------------------------------------------*/
|
|
|
|
|
let marginButton = document.querySelector('#label-marginbox-toggle');
|
|
|
|
|
|
|
|
|
|
body.classList.add('no-marginboxes');
|
|
|
|
|
|
|
|
|
|
document.querySelector("#marginbox-toggle").addEventListener("input", (e) => {
|
|
|
|
|
if(e.target.checked){
|
|
|
|
|
/* see baseline */
|
|
|
|
|
body.classList.remove('no-marginboxes');
|
|
|
|
|
marginButton.innerHTML = "Masquer";
|
|
|
|
|
}else{
|
|
|
|
|
/* hide baseline */
|
|
|
|
|
body.classList.add('no-marginboxes');
|
|
|
|
|
marginButton.innerHTML = "Afficher";
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Preview ----------------------------------------------------------------------------------------------------
|
|
|
|
|
----------------------------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
document.querySelector("#preview-toggle").addEventListener("input", (e) => {
|
|
|
|
|
if(e.target.checked){
|
|
|
|
|
/* preview mode */
|
|
|
|
|
body.classList.add('interface-preview');
|
|
|
|
|
}else{
|
|
|
|
|
body.classList.remove('interface-preview');
|
|
|
|
|
}
|
|
|
|
|
});
|
2026-02-21 17:52:13 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
/* LAYER SELECTOR ------------------------------------------------------------*/
|
|
|
|
|
document.querySelector("#layer-select").addEventListener("change", (e) => {
|
|
|
|
|
const layers = ["red-layer", "green-layer", "blue-layer", "black-layer"];
|
|
|
|
|
const selected = e.target.value;
|
|
|
|
|
|
|
|
|
|
layers.forEach(layer => {
|
|
|
|
|
body.classList.remove("isolate-" + layer);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (selected) {
|
|
|
|
|
body.classList.add("isolate-" + selected);
|
|
|
|
|
// Active automatiquement le mode noir et blanc
|
|
|
|
|
body.classList.add("mode-black");
|
|
|
|
|
document.querySelector("#black-toggle").checked = true;
|
|
|
|
|
} else {
|
|
|
|
|
// Repasse en couleur si on revient sur "Toutes"
|
|
|
|
|
body.classList.remove("mode-black");
|
|
|
|
|
document.querySelector("#black-toggle").checked = false;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Passer le PDF en noir et blanc ----------------------------------------------------------------------------------------------------
|
|
|
|
|
----------------------------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
document.querySelector("#black-toggle").addEventListener("input", (e) => {
|
|
|
|
|
if(e.target.checked){
|
|
|
|
|
/* black mode */
|
|
|
|
|
body.classList.add('mode-black');
|
|
|
|
|
}else{
|
|
|
|
|
body.classList.remove('mode-black');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* PRINT SPREAD ----------------------------------------------------------------------------------------------------
|
|
|
|
|
----------------------------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
window.enableBooklet = false;
|
|
|
|
|
document.querySelector("#button-print-spread").addEventListener("click", (e) => {
|
|
|
|
|
// not working
|
|
|
|
|
// body.style.setProperty("--paged-layout", "booklet");
|
|
|
|
|
// window.print();
|
|
|
|
|
window.enableBooklet = true;
|
|
|
|
|
window.print();
|
|
|
|
|
});
|
2026-01-05 19:33:15 +01:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function includeHTML() {
|
|
|
|
|
var z, i, file, xhttp;
|
|
|
|
|
/* Loop through a collection of all HTML elements: */
|
|
|
|
|
/*search for elements with a certain atrribute:*/
|
|
|
|
|
let elmnt = document.getElementById("interface-header")
|
|
|
|
|
file = elmnt.getAttribute("w3-include-html");
|
|
|
|
|
let a = new Promise((resolve, reject) => {
|
|
|
|
|
if (file) {
|
|
|
|
|
/* Make an HTTP request using the attribute value as the file name: */
|
|
|
|
|
xhttp = new XMLHttpRequest();
|
|
|
|
|
xhttp.onreadystatechange = function() {
|
|
|
|
|
if (this.readyState == 4) {
|
|
|
|
|
if (this.status == 200) {elmnt.innerHTML = this.responseText;}
|
|
|
|
|
if (this.status == 404) {elmnt.innerHTML = "Page not found.";}
|
|
|
|
|
/* Remove the attribute, and call this function once more: */
|
|
|
|
|
elmnt.removeAttribute("w3-include-html");
|
|
|
|
|
resolve();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
xhttp.open("GET", file, true);
|
|
|
|
|
xhttp.send();
|
|
|
|
|
/* Exit the function: */
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return a;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class interfacePaged extends Paged.Handler {
|
|
|
|
|
constructor(chunker, polisher, caller) {
|
|
|
|
|
super(chunker, polisher, caller);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
afterPageLayout(pageElement, page, breakToken){
|
|
|
|
|
let nbr = page.id.replace('page-', '');
|
2026-02-21 17:52:13 +01:00
|
|
|
// let span = document.querySelector("#nrb-pages");
|
|
|
|
|
// span.innerHTML = nbr;
|
2026-01-05 19:33:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
afterRendered(pages){
|
|
|
|
|
let print = document.querySelector("#button-print");
|
|
|
|
|
print.dataset.ready = 'true';
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-02-21 17:52:13 +01:00
|
|
|
Paged.registerHandlers(interfacePaged);
|