|
|
|
@ -1,8 +1,47 @@ |
|
|
|
|
class RepeatingTableHeaders extends Paged.Handler { |
|
|
|
|
var UID = { |
|
|
|
|
_current: 0, |
|
|
|
|
getNew: function(){ |
|
|
|
|
this._current++; |
|
|
|
|
return this._current; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
HTMLElement.prototype.pseudoStyle = function(element,prop,value){ |
|
|
|
|
var _this = this; |
|
|
|
|
var _sheetId = "pseudoStyles"; |
|
|
|
|
var _head = document.head || document.getElementsByTagName('head')[0]; |
|
|
|
|
var _sheet = document.getElementById(_sheetId) || document.createElement('style'); |
|
|
|
|
_sheet.id = _sheetId; |
|
|
|
|
var className = "pseudoStyle" + UID.getNew(); |
|
|
|
|
|
|
|
|
|
_this.className += " "+className;
|
|
|
|
|
|
|
|
|
|
_sheet.innerHTML += " ."+className+":"+element+"{"+prop+":"+value+"}"; |
|
|
|
|
_head.appendChild(_sheet); |
|
|
|
|
return this; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class Sandpoints extends Paged.Handler { |
|
|
|
|
constructor(chunker, polisher, caller) { |
|
|
|
|
super(chunker, polisher, caller); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
beforeParsed(content) { |
|
|
|
|
var d = {}; |
|
|
|
|
content.querySelectorAll('*').forEach((n, i)=> { |
|
|
|
|
if (n.classList.length > 0 ) { |
|
|
|
|
n.classList.forEach((c, i)=>{ |
|
|
|
|
if (c.startsWith("css-")) { |
|
|
|
|
(c in d) ? d[c]++ : d[c] = 1 |
|
|
|
|
let s = "" |
|
|
|
|
Object.keys(d).filter(ks => ks.startsWith(c.slice(0, -1))).forEach((t, i)=> {if (c >= t) {s += `${d[t]}.`}})
|
|
|
|
|
n.pseudoStyle('before','content', `"${s} "`) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
afterPageLayout(pageElement, page, breakToken, chunker) { |
|
|
|
|
// Find all split table elements
|
|
|
|
|
let tables = pageElement.querySelectorAll("table[data-split-from]"); |
|
|
|
@ -24,7 +63,6 @@ class RepeatingTableHeaders extends Paged.Handler { |
|
|
|
|
// Find if there is a header
|
|
|
|
|
let sourceHeader = sourceTable.querySelector("thead"); |
|
|
|
|
if (sourceHeader) { |
|
|
|
|
console.log("Table header was cloned, because it is splitted."); |
|
|
|
|
// Clone the header element
|
|
|
|
|
let clonedHeader = sourceHeader.cloneNode(true); |
|
|
|
|
// Insert the header at the start of the split table
|
|
|
|
@ -55,4 +93,4 @@ class RepeatingTableHeaders extends Paged.Handler { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Paged.registerHandlers(RepeatingTableHeaders); |
|
|
|
|
Paged.registerHandlers(Sandpoints); |