Initial commit
This commit is contained in:
commit
388079e6bb
1108 changed files with 330121 additions and 0 deletions
191
assets/pagedjs/interface.js
Normal file
191
assets/pagedjs/interface.js
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
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');
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
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-', '');
|
||||
let span = document.querySelector("#nrb-pages");
|
||||
span.innerHTML = nbr;
|
||||
}
|
||||
|
||||
|
||||
afterRendered(pages){
|
||||
let print = document.querySelector("#button-print");
|
||||
print.dataset.ready = 'true';
|
||||
}
|
||||
}
|
||||
Paged.registerHandlers(interfacePaged);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue