| @@ -1,7 +1,15 @@ | |||
| import core from './src/core'; | |||
| import './src/PDFEngine.css'; | |||
| // import './src/PDFEngine.css'; | |||
| (() => | |||
| // (() => | |||
| // { | |||
| // core(); | |||
| // })() | |||
| const PDFEngine = () => | |||
| { | |||
| core(); | |||
| })() | |||
| } | |||
| export default PDFEngine; | |||
| @@ -576,6 +576,12 @@ | |||
| "supports-color": "^8.0.0" | |||
| } | |||
| }, | |||
| "jquery": { | |||
| "version": "3.6.0", | |||
| "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", | |||
| "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", | |||
| "dev": true | |||
| }, | |||
| "json-parse-better-errors": { | |||
| "version": "1.0.2", | |||
| "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", | |||
| @@ -609,6 +615,12 @@ | |||
| "p-locate": "^4.1.0" | |||
| } | |||
| }, | |||
| "lodash": { | |||
| "version": "4.17.21", | |||
| "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | |||
| "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", | |||
| "dev": true | |||
| }, | |||
| "lru-cache": { | |||
| "version": "6.0.0", | |||
| "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", | |||
| @@ -652,9 +664,9 @@ | |||
| "dev": true | |||
| }, | |||
| "nanoid": { | |||
| "version": "3.1.28", | |||
| "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.28.tgz", | |||
| "integrity": "sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==", | |||
| "version": "3.1.29", | |||
| "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", | |||
| "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", | |||
| "dev": true | |||
| }, | |||
| "neo-async": { | |||
| @@ -740,6 +752,12 @@ | |||
| "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", | |||
| "dev": true | |||
| }, | |||
| "picocolors": { | |||
| "version": "0.2.1", | |||
| "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", | |||
| "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", | |||
| "dev": true | |||
| }, | |||
| "pkg-dir": { | |||
| "version": "4.2.0", | |||
| "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", | |||
| @@ -750,22 +768,14 @@ | |||
| } | |||
| }, | |||
| "postcss": { | |||
| "version": "8.3.8", | |||
| "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.8.tgz", | |||
| "integrity": "sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA==", | |||
| "version": "8.3.9", | |||
| "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", | |||
| "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", | |||
| "dev": true, | |||
| "requires": { | |||
| "nanocolors": "^0.2.2", | |||
| "nanoid": "^3.1.25", | |||
| "nanoid": "^3.1.28", | |||
| "picocolors": "^0.2.1", | |||
| "source-map-js": "^0.6.2" | |||
| }, | |||
| "dependencies": { | |||
| "nanocolors": { | |||
| "version": "0.2.12", | |||
| "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", | |||
| "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", | |||
| "dev": true | |||
| } | |||
| } | |||
| }, | |||
| "postcss-modules-extract-imports": { | |||
| @@ -16,11 +16,11 @@ | |||
| "license": "ISC", | |||
| "devDependencies": { | |||
| "css-loader": "^6.3.0", | |||
| "jquery": "^3.6.0", | |||
| "lodash": "^4.17.21", | |||
| "style-loader": "^3.3.0", | |||
| "webpack": "^5.55.0", | |||
| "webpack-cli": "^4.8.0" | |||
| }, | |||
| "dependencies": { | |||
| "jquery": "^3.6.0" | |||
| } | |||
| "dependencies": {} | |||
| } | |||
| @@ -3,7 +3,5 @@ | |||
| { | |||
| display: none; | |||
| } | |||
| h4{ | |||
| color:purple; | |||
| } | |||
| } | |||
| @@ -1,34 +1,22 @@ | |||
| import {TransformsFactory} from "./transforms-factory"; | |||
| import {HideTransform} from './transformations/hide-transform'; | |||
| import { HideParam } from "./parameters/hide-parameter"; | |||
| import parameters from "./parameters/parameters"; | |||
| function core(){ | |||
| // scrape parametara | |||
| const param1 = { | |||
| code: "br-hide", | |||
| selector: "table" | |||
| }; | |||
| const param2 = { | |||
| code: "br-color", | |||
| selector: "h4" | |||
| }; | |||
| const param3 = { | |||
| code: "br-size", // br-size-100 br-size-50 ... | |||
| selector: "table", | |||
| size: "" | |||
| }; | |||
| const parametars = [param1]; | |||
| const parametars = parameters(); | |||
| // Izvlacenje targets iz DOM strane | |||
| // for(let i = 0; i < parametars.length; i++){ | |||
| // const param = parametars[i]; | |||
| // param.targets = $(param.code); | |||
| // } | |||
| // atribute parameters | |||
| // 2 atributa: (za vise naknadno istraziti) | |||
| // code | |||
| // selector | |||
| const elementsByAttrs = []; | |||
| // 1 atribut: | |||
| // code = ' ' | |||
| // css class parameters | |||
| // inicijalizacija transformacija | |||
| @@ -41,11 +29,6 @@ function core(){ | |||
| const transform = transformFactory.produce(param.code, param.selector); | |||
| transforms.push(transform); | |||
| }); | |||
| // const hideT = new HideTransform("table"); | |||
| // const hideT = new HideTransform("table"); | |||
| // const hideT1 = new HideTransform("table1"); | |||
| // const hideT2 = new HideTransform("table1"); | |||
| // const hideT3 = new HideTransform("table1"); | |||
| // perform transform | |||
| //const transforms = [hideT]; //, hideT1, hideT2, hideT3]; | |||
| @@ -0,0 +1,10 @@ | |||
| import { Param } from "./parameter"; | |||
| export class BorderColorParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-bordercolor"; | |||
| this.selectors = ["table","div"]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,9 @@ | |||
| import { Param } from "./parameter"; | |||
| export class ColorParam extends Param { | |||
| constructor() { | |||
| super(); | |||
| this.code = "br-color", | |||
| this.selectors = ["h1", "h4", "p"]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,9 @@ | |||
| import { Param } from "./parameter"; | |||
| export class HideParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-hide"; | |||
| this.selectors = ["table","p","h4"]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,16 @@ | |||
| export class Param | |||
| { | |||
| constructor() | |||
| { | |||
| this.code = ""; | |||
| this.selectors = []; | |||
| this.targets = []; | |||
| this.value = null; | |||
| } | |||
| // Check for selector exists in array of selectors | |||
| // If exists return true, else return false | |||
| checkSelector = selector => { | |||
| return (this.selectors.indexOf(selector) > -1); | |||
| }; | |||
| } | |||
| @@ -0,0 +1,24 @@ | |||
| import { BorderColorParam } from "./border-color-parameter"; | |||
| import { ColorParam } from "./color-parameter"; | |||
| import { HideParam } from "./hide-parameter"; | |||
| import { RemoveColumnParam } from "./remove-column-parameter"; | |||
| import { RemoveHeaderParam } from "./remove-header-parameter"; | |||
| import { RemoveRowParam } from "./remove-row-parameter"; | |||
| import { ShowNumberRowsParam } from "./show-number-rows-parameters"; | |||
| import { SizeParam } from "./size-parameter"; | |||
| const parameters = () => | |||
| { | |||
| return [ | |||
| new BorderColorParam(), | |||
| new ColorParam(), | |||
| new HideParam(), | |||
| new RemoveColumnParam(), | |||
| new RemoveHeaderParam(), | |||
| new RemoveRowParam(), | |||
| new ShowNumberRowsParam(), | |||
| new SizeParam() | |||
| ]; | |||
| } | |||
| export default parameters; | |||
| @@ -0,0 +1,10 @@ | |||
| import { Param } from "./parameter"; | |||
| export class RemoveColumnParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-removecolumn-1"; | |||
| this.selectors = ["table"]; | |||
| this.value = +(this.code.split('-')[2]); | |||
| } | |||
| } | |||
| @@ -0,0 +1,9 @@ | |||
| import { Param } from "./parameter"; | |||
| export class RemoveHeaderParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-removeheader"; | |||
| this.selectors = ["table"]; | |||
| } | |||
| } | |||
| @@ -0,0 +1,10 @@ | |||
| import { Param } from "./parameter"; | |||
| export class RemoveRowParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-removerow-1"; | |||
| this.selectors = ["table"]; | |||
| this.value = +(this.code.split('-')[2]); | |||
| } | |||
| } | |||
| @@ -0,0 +1,10 @@ | |||
| import { Param } from "./parameter"; | |||
| export class ShowNumberRowsParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-shownumberrows-4"; | |||
| this.selectors = ["table"]; | |||
| this.value = +(this.code.split('-')[2]); | |||
| } | |||
| } | |||
| @@ -0,0 +1,10 @@ | |||
| import { Param } from "./parameter"; | |||
| export class SizeParam extends Param | |||
| { | |||
| constructor(){ | |||
| super(); | |||
| this.code = "br-size-15"; | |||
| this.selectors = ["p","span"]; | |||
| this.value = +(this.code.split('-')[2]); | |||
| } | |||
| } | |||
| @@ -0,0 +1,5 @@ | |||
| @media print{ | |||
| .border-red{ | |||
| border-color: red; | |||
| } | |||
| } | |||
| @@ -0,0 +1,18 @@ | |||
| import './border-color-transformation.css'; | |||
| import {Transform} from "../transform"; | |||
| import $ from "jquery"; | |||
| export class BorderColorTransform extends Transform { | |||
| constructor(selector){ | |||
| super(); | |||
| this.selector = selector; | |||
| } | |||
| execute(){ | |||
| $(this.selector).addClass("border-red"); | |||
| } | |||
| rolback(){ | |||
| $(this.selector).removeClass("border-red"); | |||
| } | |||
| } | |||
| @@ -4,14 +4,15 @@ import $ from "jquery"; | |||
| export class ColorTransform extends Transform { | |||
| constructor(selector){ | |||
| super(); | |||
| this.selector = selector; | |||
| } | |||
| execute(){ | |||
| $(this.selector).addClass(".color-transform"); | |||
| $(this.selector).addClass("color-transform"); | |||
| } | |||
| rolback(){ | |||
| $(this.selector).removeClass(".color-transform"); | |||
| $(this.selector).removeClass("color-transform"); | |||
| } | |||
| } | |||
| @@ -1,5 +1,5 @@ | |||
| @media print { | |||
| /* @media print { */ | |||
| .color-transform{ | |||
| color: blue; | |||
| } | |||
| } | |||
| /* } */ | |||
| @@ -2,17 +2,18 @@ import {Transform} from "./transform"; | |||
| import $ from "jquery"; | |||
| export class HideTransform extends Transform { | |||
| constructor(selector){ | |||
| constructor(object){ | |||
| super(); | |||
| this.selector = selector; | |||
| this.object = object; | |||
| } | |||
| execute(){ | |||
| $(this.selector).hide(); | |||
| var $div = $('<p> '+this.selector+' </p>').appendTo('body'); | |||
| // Zbog !important u CSS React app morali smo odraditi na ovaj nacin | |||
| // $(this.object).attr("style", "display: none !important"); | |||
| $(this.object).hide(); | |||
| } | |||
| rolback(){ | |||
| $(this.selector).show(); | |||
| $(this.object).show(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| import { Transform } from "./transform"; | |||
| import _ from "lodash"; | |||
| export class NumberRowsTransform extends Transform | |||
| { | |||
| constructor(array,number){ | |||
| super(); | |||
| this.array = array; | |||
| this.number = number; | |||
| } | |||
| execute() | |||
| { | |||
| return _(this.array).take(this.number).value(); | |||
| } | |||
| rolback() | |||
| { | |||
| return this.array; | |||
| } | |||
| } | |||
| @@ -0,0 +1,32 @@ | |||
| import { Transform } from "./transform"; | |||
| import $ from 'jquery'; | |||
| export class RemoveTableColumnTransform extends Transform | |||
| { | |||
| constructor(selector,column) | |||
| { | |||
| super(); | |||
| this.selector = selector; | |||
| this.column = column; | |||
| } | |||
| execute(){ | |||
| const column = this.column; | |||
| $(`${this.selector} > tbody > tr`).each(function () { | |||
| $(this).find('td').eq(column).remove(); | |||
| }); | |||
| $(`${this.selector} > thead > tr`).each(function () { | |||
| $(this).find('th').eq(column).remove(); | |||
| }); | |||
| }; | |||
| rolback(){ | |||
| // TODO IMPLEMENT ROLBACK | |||
| // HINT: SAVE LAST CELLS IN PROPERTIES | |||
| // const column = this.column; | |||
| // $(`${this.selector} > tbody > tr`).each(function () { | |||
| // $(this).find('td').eq(column).show(); | |||
| // }); | |||
| // $(`${this.selector} > thead > tr`).each(function () { | |||
| // $(this).find('th').eq(column).show(); | |||
| // }); | |||
| }; | |||
| } | |||
| @@ -0,0 +1,26 @@ | |||
| import { Transform } from "./transform"; | |||
| import $ from 'jquery'; | |||
| export class RemoveTableRowTransform extends Transform | |||
| { | |||
| constructor(selector,row) | |||
| { | |||
| super(); | |||
| this.selector = selector; | |||
| this.row = row; | |||
| } | |||
| execute(){ | |||
| const row = this.row; | |||
| $(`${this.selector}`).each(function () { | |||
| $(this).find('tr').eq(row).remove(); | |||
| }); | |||
| }; | |||
| rolback(){ | |||
| // TODO IMPLEMENT ROLBACK | |||
| // HINT: SAVE LAST ROW IN PROPERTIES | |||
| // const row = this.row; | |||
| // $(`${this.selector} > tbody > tr`).each(function () { | |||
| // $(this).find('td').eq(row).show(); | |||
| // }); | |||
| }; | |||
| } | |||
| @@ -0,0 +1,32 @@ | |||
| import { Transform } from "./transform"; | |||
| import $ from 'jquery'; | |||
| export class ShowNumberRowsTransformation extends Transform | |||
| { | |||
| constructor(selector,rows) | |||
| { | |||
| super(); | |||
| this.selector = selector; | |||
| this.rows = rows; | |||
| } | |||
| execute(){ | |||
| const rows = this.rows; | |||
| const count = $(`${this.selector} > tbody`).children('tr').length; | |||
| $(`${this.selector} > tbody`).each(function () { | |||
| for(let i=rows;i<count;i++) | |||
| { | |||
| $(this).find('tr').eq(i).hide(); | |||
| } | |||
| }); | |||
| }; | |||
| rolback(){ | |||
| const rows = this.rows; | |||
| const count = $(`${this.selector} > tbody`).children('tr').length; | |||
| $(`${this.selector} > tbody`).each(function () { | |||
| for(let i=rows;i<count;i++) | |||
| { | |||
| $(this).find('tr').eq(i).show(); | |||
| } | |||
| }); | |||
| }; | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| export class Transform{ | |||
| execute(){}; | |||
| rolback(){}; | |||
| } | |||
| @@ -1,19 +1,34 @@ | |||
| import { HideTransform } from "./transformations/hide-transform"; | |||
| import { Transform } from "./transformations/transform"; | |||
| import { ColorTransform } from "./transformations/color-transformation/color-transforamtion"; | |||
| import { RemoveTableColumnTransform } from "./transformations/remove-table-column-transform"; | |||
| import { RemoveTableRowTransform } from "./transformations/remove-table-row-transform"; | |||
| import { ShowNumberRowsTransformation } from "./transformations/show-number-rows-transformation"; | |||
| import { BorderColorTransform } from "./transformations/border-color-transformation/border-color-transformation"; | |||
| export class TransformsFactory{ | |||
| produce(code,selector) | |||
| produce(code,object) | |||
| { | |||
| const arrayCode = code.split('-'); | |||
| code = `${arrayCode[0]}-${arrayCode[1]}`; | |||
| if(code == null){ | |||
| return null; | |||
| } | |||
| if(code === ("br-hide")){ | |||
| return new HideTransform(selector); | |||
| // Ovo ne sme nikako preko atributa | |||
| return new HideTransform(object); | |||
| } else if(code === ("br-color")){ | |||
| return new ColorTransform(selector); | |||
| return new ColorTransform(object); | |||
| } else if(code === ("br-removecolumn")){ | |||
| return new RemoveTableColumnTransform(object,arrayCode[2]); | |||
| } else if(code === ("br-removerow")){ | |||
| return new RemoveTableRowTransform(`${object} > tbody`,arrayCode[2]); | |||
| } else if(code === ("br-removeheader")){ | |||
| return new RemoveTableRowTransform(`${object} > thead`,0); | |||
| } else if(code === ("br-shownumberrows")){ | |||
| return new ShowNumberRowsTransformation(object,arrayCode[2]); | |||
| } else if(code === ("br-bordercolor")){ | |||
| return new BorderColorTransform(object); | |||
| } | |||
| return null; | |||
| } | |||