blob: bdf04ecd22fcbbb51c1841fe5f3640ae24977a62 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/* Icinga PDF Export | (c) 2021 Icinga GmbH | GPLv2 */
"use strict";
(() => {
Layout.registerPlugin('page-breaker', () => {
let pageBreaksFor = document.querySelector('[data-pdfexport-page-breaks-at]');
if (! pageBreaksFor) {
return;
}
let pageBreaksAt = pageBreaksFor.dataset.pdfexportPageBreaksAt;
if (! pageBreaksAt) {
return;
}
let contentHeight = document.body.dataset.contentHeight;
let items = Array.from(pageBreaksFor.querySelectorAll(':scope > ' + pageBreaksAt));
let remainingHeight = contentHeight;
items.forEach((item, i) => {
let requiredHeight;
if (i < items.length - 1) {
requiredHeight = items[i + 1].getBoundingClientRect().top - item.getBoundingClientRect().top;
} else {
requiredHeight = item.parentElement.getBoundingClientRect().bottom - item.getBoundingClientRect().top;
}
if (remainingHeight < requiredHeight) {
if (!! item.previousElementSibling) {
item.previousElementSibling.style.pageBreakAfter = 'always';
item.previousElementSibling.classList.add('page-break-follows');
} else {
item.style.pageBreakAfter = 'always';
item.classList.add('page-break-follows');
}
remainingHeight = contentHeight;
}
remainingHeight -= requiredHeight;
});
});
})();
|