| @@ -1,113 +1,172 @@ | |||
| import { Transform } from "./transform"; | |||
| import $ from 'jquery'; | |||
| import $, { param } from 'jquery'; | |||
| export class RootTransformation extends Transform | |||
| { | |||
| constructor(param){ | |||
| export class RootTransformation extends Transform { | |||
| constructor(param) { | |||
| super(param); | |||
| this.before = {}; | |||
| } | |||
| execute(){ | |||
| execute() { | |||
| let array = []; | |||
| this.before = $('#root'); | |||
| // const v = $(':eq(0)'); // za root element | |||
| const va = $('div.fade').children().toArray(); // gledamo div-fade kao root | |||
| let i = 1, temp = 0; | |||
| const divRootElement = document.createElement('div'); | |||
| divRootElement.className = 'root'; | |||
| const divElementPageBreak = document.createElement('div'); | |||
| divElementPageBreak.style.pageBreakBefore = "always"; | |||
| va.forEach(element => { | |||
| // 59.338582677165356 is sum of default top and bottom print margins | |||
| // 842 is height in pixels for A4 format | |||
| if(!element.hasAttribute('code') || (element.hasAttribute('code') && element.getAttribute('code') != 'br-hide')) | |||
| { | |||
| const razlika = element.clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| if (razlika < 0) { | |||
| temp += element.clientHeight; | |||
| divRootElement.append(element); | |||
| console.log(temp); | |||
| } | |||
| else if (razlika === 0) { | |||
| i++; | |||
| temp = 0; | |||
| divRootElement.append(divElementPageBreak); | |||
| console.log(temp); | |||
| } | |||
| else { | |||
| if (element.hasChildNodes && element.childNodes.length === 1) { | |||
| const node = element.childNodes[0]; | |||
| if (node.hasChildNodes && node.childNodes.length === 1) { | |||
| const subNode = node.childNodes[0]; | |||
| if (subNode.hasChildNodes) { | |||
| const nodes = subNode.childNodes; | |||
| for (let j = 0; j < nodes.length; j++) { | |||
| const razlikaNodes = nodes[j].clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| if (razlikaNodes < 0) { | |||
| temp += nodes[j].clientHeight; | |||
| console.log("bez apenda" + temp); | |||
| console.log(nodes[j]); | |||
| // divRootElement.append(nodes[j]); | |||
| array.push(nodes[j]); | |||
| } | |||
| else if (razlikaNodes === 0) { | |||
| i++; | |||
| temp = 0; | |||
| divRootElement.append(nodes[j]); | |||
| console.log(temp); | |||
| } | |||
| else { | |||
| if (nodes[j].hasChildNodes && nodes[j].childNodes.length > 1) { | |||
| const subNodes = nodes[j].childNodes; | |||
| for (let k = 0; k < subNodes.length; k++) { | |||
| const razlikaSubNodes = subNodes[k].clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| if (razlikaSubNodes < 0) { | |||
| temp += subNodes[k].clientHeight; | |||
| divRootElement.append(subNodes[k]); | |||
| console.log(temp); | |||
| } | |||
| else { | |||
| i++; | |||
| temp = 0; | |||
| divRootElement.append(divElementPageBreak); | |||
| console.log(temp); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| let arrayHeights = []; | |||
| this.before = $('#root'); | |||
| // const v = $(':eq(0)'); // za root element | |||
| const va = $('div.fade').children().toArray(); // gledamo div-fade kao root | |||
| let i = 1, temp = 0; | |||
| const divRootElement = document.createElement('div'); | |||
| divRootElement.className = 'root'; | |||
| const divElementPageBreak = document.createElement('div'); | |||
| divElementPageBreak.style.pageBreakBefore = "always"; | |||
| va.forEach(element => { | |||
| // 59.338582677165356 is sum of default top and bottom print margins | |||
| // 842 is height in pixels for A4 format | |||
| if (!element.hasAttribute('code') || (element.hasAttribute('code') && element.getAttribute('code') != 'br-hide')) { | |||
| const razlika = element.clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| if (razlika < 0) { | |||
| temp += element.clientHeight; | |||
| // divRootElement.append(element); | |||
| array.push(element); | |||
| arrayHeights.push(temp); | |||
| } | |||
| } | |||
| else if (element.hasChildNodes && element.childNodes.length > 1) { | |||
| const nodes = element.childNodes; | |||
| for (let i = 0; i < nodes.length; i++) { | |||
| if (nodes[i].clientHeight + temp < (i * 842 - 59.338582677165356)) { | |||
| temp += nodes[i].clientHeight; | |||
| divRootElement.append(nodes[i]); | |||
| console.log(temp); | |||
| } | |||
| else { | |||
| i++; | |||
| temp = 0; | |||
| console.log("bez apenda" + temp); | |||
| } | |||
| else if (razlika === 0) { | |||
| i++; | |||
| temp = 0; | |||
| //divRootElement.append(divElementPageBreak); | |||
| array.push(element); | |||
| arrayHeights.push(temp); | |||
| } | |||
| else { | |||
| i++; | |||
| temp = 0; | |||
| array.push(divElementPageBreak); | |||
| array.push(element); | |||
| } | |||
| } | |||
| } | |||
| }); | |||
| array.forEach(element => { | |||
| divRootElement.append(element); | |||
| }); | |||
| $('#root').empty(); | |||
| $('#root').append(divRootElement); | |||
| // let array = []; | |||
| // let arrayHeights = []; | |||
| // this.before = $('#root'); | |||
| // // const v = $(':eq(0)'); // za root element | |||
| // const va = $('div.fade').children().toArray(); // gledamo div-fade kao root | |||
| // let i = 1, temp = 0; | |||
| // const divRootElement = document.createElement('div'); | |||
| // divRootElement.className = 'root'; | |||
| // const divElementPageBreak = document.createElement('div'); | |||
| // divElementPageBreak.style.pageBreakBefore = "always"; | |||
| // va.forEach(element => { | |||
| // // 59.338582677165356 is sum of default top and bottom print margins | |||
| // // 842 is height in pixels for A4 format | |||
| // if(!element.hasAttribute('code') || (element.hasAttribute('code') && element.getAttribute('code') != 'br-hide')) | |||
| // { | |||
| // const razlika = element.clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| // if (razlika < 0) { | |||
| // temp += element.clientHeight; | |||
| // // divRootElement.append(element); | |||
| // console.log(temp); | |||
| // array.push(element); | |||
| // arrayHeights.push(temp); | |||
| // } | |||
| // else if (razlika === 0) { | |||
| // i++; | |||
| // temp = 0; | |||
| // //divRootElement.append(divElementPageBreak); | |||
| // array.push(element); | |||
| // arrayHeights.push(temp); | |||
| // console.log(temp); | |||
| // } | |||
| // else { | |||
| // if (element.hasChildNodes && element.childNodes.length === 1) { | |||
| // const node = element.childNodes[0]; | |||
| // if (node.hasChildNodes && node.childNodes.length === 1) { | |||
| // const subNode = node.childNodes[0]; | |||
| // if (subNode.hasChildNodes) { | |||
| // const nodes = subNode.childNodes; | |||
| // for (let j = 0; j < nodes.length; j++) { | |||
| // const razlikaNodes = nodes[j].clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| // if (razlikaNodes < 0) { | |||
| // temp += nodes[j].clientHeight; | |||
| // console.log("bez apenda" + temp); | |||
| // console.log(nodes[j]); | |||
| // // divRootElement.append(nodes[j]); | |||
| // array.push(nodes[j]); | |||
| // arrayHeights.push(temp); | |||
| // } | |||
| // else if (razlikaNodes === 0) { | |||
| // i++; | |||
| // temp = 0; | |||
| // //divRootElement.append(nodes[j]); | |||
| // array.push(nodes[j]); | |||
| // arrayHeights.push(temp); | |||
| // console.log(temp); | |||
| // } | |||
| // else { | |||
| // if (nodes[j].hasChildNodes && nodes[j].childNodes.length > 1) { | |||
| // const subNodes = nodes[j].childNodes; | |||
| // for (let k = 0; k < subNodes.length; k++) { | |||
| // const razlikaSubNodes = subNodes[k].clientHeight + temp - (i * 842 - 59.338582677165356); | |||
| // if (razlikaSubNodes < 0) { | |||
| // temp += subNodes[k].clientHeight; | |||
| // // divRootElement.append(subNodes[k]); | |||
| // console.log(temp); | |||
| // array.push(subNodes[k]); | |||
| // arrayHeights.push(temp); | |||
| // } | |||
| // else { | |||
| // i++; | |||
| // temp = 0; | |||
| // // divRootElement.append(divElementPageBreak); | |||
| // console.log(temp); | |||
| // array.push(divElementPageBreak); | |||
| // arrayHeights.push(temp); | |||
| // } | |||
| // } | |||
| // } | |||
| // } | |||
| // } | |||
| // } | |||
| // } | |||
| // } | |||
| // else if (element.hasChildNodes && element.childNodes.length > 1) { | |||
| // const nodes = element.childNodes; | |||
| // for (let i = 0; i < nodes.length; i++) { | |||
| // if (nodes[i].clientHeight + temp < (i * 842 - 59.338582677165356)) { | |||
| // temp += nodes[i].clientHeight; | |||
| // // divRootElement.append(nodes[i]); | |||
| // array.push(nodes[i]); | |||
| // arrayHeights.push(temp); | |||
| // console.log(temp); | |||
| // } | |||
| // else { | |||
| // i++; | |||
| // temp = 0; | |||
| // console.log("bez apenda nisam nista uradio" + temp); | |||
| // } | |||
| // } | |||
| // } | |||
| // } | |||
| }}); | |||
| $('#root').empty(); | |||
| $('#root').append(divRootElement); | |||
| array.forEach(element => { | |||
| console.log(element); | |||
| }); | |||
| console.log(divRootElement); | |||
| // }}); | |||
| // temp = 0; | |||
| // array.forEach(element => { | |||
| // divRootElement.append(element); | |||
| // let param = document.createElement('p'); | |||
| // param.innerHTML = arrayHeights[temp++]; | |||
| // divRootElement.append(param); | |||
| // }); | |||
| // $('#root').empty(); | |||
| // $('#root').append(divRootElement); | |||
| // console.log(divRootElement); | |||
| } | |||
| rolback(){ | |||
| rolback() { | |||
| $('#root').empty(); | |||
| $('#root').append(this.before); | |||
| } | |||