| import { Transform } from "./transform"; | 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); | super(param); | ||||
| this.before = {}; | this.before = {}; | ||||
| } | } | ||||
| execute(){ | |||||
| execute() { | |||||
| let array = []; | 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').empty(); | ||||
| $('#root').append(this.before); | $('#root').append(this.before); | ||||
| } | } |