| import {TransformsFactory} from "./transforms-factory"; | import {TransformsFactory} from "./transforms-factory"; | ||||
| import parameters from "./parameters/parameters"; | import parameters from "./parameters/parameters"; | ||||
| import $ from 'jquery'; | import $ from 'jquery'; | ||||
| import { NoValueParameter } from "./parameters/no-value-parameter"; | |||||
| function core(){ | function core(){ | ||||
| // atribute parameters | // atribute parameters | ||||
| // code = ' ' | // code = ' ' | ||||
| for(let i = 0; i < parametars.length; i++){ | for(let i = 0; i < parametars.length; i++){ | ||||
| parametars[i].fillTargets(); | |||||
| parametars[i].targets = $(`[code*="${parametars[i].code}"]`); | |||||
| // console.log("Results for " + `[code*="${parametars[i].code}"]`) | |||||
| // console.log(parametars[i].targets); | |||||
| } | } | ||||
| for(let i=0;i<par.targets.length;i++) | for(let i=0;i<par.targets.length;i++) | ||||
| { | { | ||||
| const transformFactory = new TransformsFactory(); | const transformFactory = new TransformsFactory(); | ||||
| console.log(par.targets[i]); // Namerno ostavljeno zbog demonstracije problema | |||||
| let selector = (par.targets[i]).tagName; | |||||
| // Problem koji je izbio kod value i no value | |||||
| if(selector === undefined) | |||||
| selector =(par.targets[i][0]).tagName; | |||||
| // Provera da li selector odgovara listi selektora za taj code | |||||
| if(par.checkSelector(selector)) | |||||
| { | |||||
| try{ | |||||
| const arrayCode = (par.targets[i][0].getAttribute("code")).split('-'); | |||||
| if(arrayCode.length > 2) | |||||
| par.value = arrayCode[2]; | |||||
| } | |||||
| catch{} | |||||
| const transform = transformFactory.produce(par.code, par.targets[i], par.value); | |||||
| transforms.push(transform); | |||||
| } | |||||
| const transform = transformFactory.produce(par.code,par.targets[i],par.selectors); | |||||
| transforms.push(transform); | |||||
| } | } | ||||
| }); | }); | ||||
| // perform transform | // perform transform | ||||
| for(let i = 0; i < transforms.length; i++){ | for(let i = 0; i < transforms.length; i++){ | ||||
| const transform = transforms[i]; | const transform = transforms[i]; | ||||
| if(transform.validate()){ | |||||
| transform.execute(); | transform.execute(); | ||||
| } | |||||
| } | } | ||||
| // prepare print (optioning) | // prepare print (optioning) |
| import { Param } from "./parameter"; | |||||
| import $ from 'jquery'; | |||||
| export class NoValueParameter extends Param | |||||
| { | |||||
| constructor(code,selectors) | |||||
| { | |||||
| super(code,selectors); | |||||
| } | |||||
| // Check for selector exists in array of selectors | |||||
| // If exists return true, else return false | |||||
| checkSelector(selector) { | |||||
| return (this.selectors.indexOf(selector.toLowerCase()) > -1); | |||||
| } | |||||
| fillTargets(){ | |||||
| this.targets = $(`[code=${this.code}]`); | |||||
| } | |||||
| } |
| import { Param } from "./parameter"; | |||||
| import $ from 'jquery'; | |||||
| export class OneValueParameter extends Param | |||||
| { | |||||
| constructor(code,selectors) | |||||
| { | |||||
| super(code,selectors); | |||||
| } | |||||
| // Check for selector exists in array of selectors | |||||
| // If exists return true, else return false | |||||
| checkSelector(selector) { | |||||
| return (this.selectors.indexOf(selector.toLowerCase()) > -1); | |||||
| } | |||||
| fillTargets(){ | |||||
| let code = ""; | |||||
| for(let j = 0;j < this.selectors.length;j++){ | |||||
| let thisCode = this.code; | |||||
| let targets=[]; | |||||
| const result = ($(this.selectors[j]) | |||||
| .filter(function() { | |||||
| if(this.hasAttribute("code")){ | |||||
| const regex = new RegExp(`^(${thisCode}-)([0-9])+$`,'g'); | |||||
| code = this.getAttribute("code"); | |||||
| const arrayThisCode = thisCode.split('-'); | |||||
| const arrayCode = code.split('-'); | |||||
| if(arrayThisCode[0] == arrayCode[0] && arrayThisCode[1] == arrayCode[1]) | |||||
| { | |||||
| targets.push($(`${this.tagName.toLowerCase()}[code=${code}]`)); | |||||
| } | |||||
| return this.getAttribute("code").match(regex); | |||||
| } | |||||
| return false; | |||||
| })); | |||||
| if(result.length > 0) | |||||
| this.targets = targets; | |||||
| } | |||||
| } | |||||
| } |
| { | { | ||||
| constructor(code,selectors) | constructor(code,selectors) | ||||
| { | { | ||||
| // br-removecolumn | |||||
| this.code = code; | this.code = code; | ||||
| // br-removecolumn-2 | |||||
| this.codeFull=''; | |||||
| // true | |||||
| this.codeHaveVars; | |||||
| // table | |||||
| this.selectors = selectors; | this.selectors = selectors; | ||||
| // <table></table>,<table></table>...] | |||||
| this.targets = []; | 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.toLowerCase()) > -1); | |||||
| } | |||||
| fillTargets(){ | |||||
| } | } | ||||
| } | } |
| import { NoValueParameter } from "./no-value-parameter"; | |||||
| import { OneValueParameter } from "./one-value-parameter"; | |||||
| import { Param } from "./parameter"; | import { Param } from "./parameter"; | ||||
| const parameters = () => | const parameters = () => | ||||
| { | { | ||||
| // var parametarsFiles = readeFiles('/parameters'); | |||||
| // parametarsFiles.map(p => new Param(p)); | |||||
| return [ | return [ | ||||
| new NoValueParameter("br-size",["p","span"]), | |||||
| new OneValueParameter("br-shownumberrows",["table"]), | |||||
| new OneValueParameter("br-removerow",["table"]), | |||||
| new NoValueParameter("br-removeheader",["table"]), | |||||
| new OneValueParameter("br-removecolumn",["table"]), | |||||
| new NoValueParameter("br-hide",["table","p","span"]), | |||||
| new NoValueParameter("br-color",["h1","p","h4"]), | |||||
| new NoValueParameter("br-bordercolor",["table","div"]) | |||||
| new Param("br-size",["p","span"]), | |||||
| new Param("br-shownumberrows",["table"]), | |||||
| new Param("br-removerow",["table"]), | |||||
| new Param("br-removeheader",["table"]), | |||||
| new Param("br-removecolumn",["table"]), | |||||
| new Param("br-hide",["table","p","span"]), | |||||
| new Param("br-color",["h1","p","h4"]), | |||||
| new Param("br-bordercolor",["table","div"]) | |||||
| ]; | ]; | ||||
| } | } | ||||
| import $ from "jquery"; | import $ from "jquery"; | ||||
| export class BorderColorTransform extends Transform { | export class BorderColorTransform extends Transform { | ||||
| constructor(object){ | |||||
| super(); | |||||
| this.object = object; | |||||
| constructor(param){ | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| $(this.object).addClass("border-red"); | $(this.object).addClass("border-red"); | ||||
| } | } | ||||
| rolback(){ | rolback(){ | ||||
| $(this.object).removeClass("border-red"); | $(this.object).removeClass("border-red"); | ||||
| } | } |
| import $ from "jquery"; | import $ from "jquery"; | ||||
| export class ColorTransform extends Transform { | export class ColorTransform extends Transform { | ||||
| constructor(object){ | |||||
| super(); | |||||
| this.object = object; | |||||
| constructor(param){ | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| $(this.object).addClass("color-transform"); | $(this.object).addClass("color-transform"); | ||||
| } | } |
| /* @media print { */ | |||||
| @media print { | |||||
| .color-transform{ | .color-transform{ | ||||
| color: blue; | color: blue; | ||||
| } | } | ||||
| /* } */ | |||||
| } |
| import $ from "jquery"; | import $ from "jquery"; | ||||
| export class HideTransform extends Transform { | export class HideTransform extends Transform { | ||||
| constructor(object){ | |||||
| super(); | |||||
| this.object = object; | |||||
| constructor(param){ | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| // Zbog !important u CSS React app morali smo odraditi na ovaj nacin | // Zbog !important u CSS React app morali smo odraditi na ovaj nacin | ||||
| $(this.object).attr("style", "display: none !important"); | $(this.object).attr("style", "display: none !important"); | ||||
| // $(this.object).hide(); | // $(this.object).hide(); | ||||
| } | } | ||||
| rolback(){ | rolback(){ | ||||
| $(this.object).show(); | $(this.object).show(); | ||||
| } | } |
| export class RemoveTableColumnTransform extends Transform | export class RemoveTableColumnTransform extends Transform | ||||
| { | { | ||||
| constructor(object,column) | |||||
| constructor(param) | |||||
| { | { | ||||
| super(); | |||||
| this.object = object; | |||||
| this.column = column; | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| const column = this.column; | |||||
| const column = this.value; | |||||
| // (`${this.object}`).find("tbody").find("tr").each(function () { | // (`${this.object}`).find("tbody").find("tr").each(function () { | ||||
| (($(this.object).find("thead")).find("tr")).find("th").eq(column).remove(); | (($(this.object).find("thead")).find("tr")).find("th").eq(column).remove(); | ||||
| ($(this.object).find("tbody")).find("tr").each(function () { | ($(this.object).find("tbody")).find("tr").each(function () { |
| export class RemoveTableHeaderTransform extends Transform | export class RemoveTableHeaderTransform extends Transform | ||||
| { | { | ||||
| constructor(object) | |||||
| constructor(param) | |||||
| { | { | ||||
| super(); | |||||
| this.object = object; | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| // ($(this.object).find("tbody")).find("tr").eq(this.row).remove(); | // ($(this.object).find("tbody")).find("tr").eq(this.row).remove(); |
| export class RemoveTableRowTransform extends Transform | export class RemoveTableRowTransform extends Transform | ||||
| { | { | ||||
| constructor(object,row) | |||||
| constructor(param) | |||||
| { | { | ||||
| super(); | |||||
| this.object = object; | |||||
| this.row = row; | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| const row = this.row; | |||||
| const row = this.value; | |||||
| // ($(this.object).find("tbody")).find("tr").eq(this.row).remove(); | // ($(this.object).find("tbody")).find("tr").eq(this.row).remove(); | ||||
| $(this.object).find("tbody").each(function () { | $(this.object).find("tbody").each(function () { | ||||
| $(this).find('tr').eq(row).remove(); | $(this).find('tr').eq(row).remove(); |
| export class ShowNumberRowsTransformation extends Transform | export class ShowNumberRowsTransformation extends Transform | ||||
| { | { | ||||
| constructor(object,rows) | |||||
| constructor(param) | |||||
| { | { | ||||
| super(); | |||||
| this.object = object; | |||||
| this.rows = rows; | |||||
| super(param); | |||||
| } | } | ||||
| execute(){ | execute(){ | ||||
| const rows = this.rows; | |||||
| const rows = this.value; | |||||
| const count = ($(this.object).find("tbody")).children('tr').length; | const count = ($(this.object).find("tbody")).children('tr').length; | ||||
| $this.object.find("tbody").each(function () { | $this.object.find("tbody").each(function () { | ||||
| for(let i=rows;i<count;i++) | for(let i=rows;i<count;i++) | ||||
| }); | }); | ||||
| }; | }; | ||||
| rolback(){ | rolback(){ | ||||
| const rows = this.rows; | |||||
| const rows = this.value; | |||||
| const count = ($(this.object).find("tbody")).children('tr').length; | const count = ($(this.object).find("tbody")).children('tr').length; | ||||
| $this.object.find("tbody").each(function () { | $this.object.find("tbody").each(function () { | ||||
| for(let i=rows;i<count;i++) | for(let i=rows;i<count;i++) |
| export class Transform{ | export class Transform{ | ||||
| constructor(param) | |||||
| { | |||||
| this.object = param.object; | |||||
| this.selectors = param.selectors; | |||||
| this.selector = this.object.tagName; | |||||
| const arrayCode = this.object.getAttribute("code").split('-'); | |||||
| if(arrayCode.length > 2) | |||||
| { | |||||
| this.value = arrayCode[2]; | |||||
| } | |||||
| } | |||||
| validate(){ | |||||
| return (this.selectors.indexOf(this.selector.toLowerCase()) > -1); | |||||
| }; | |||||
| execute(){}; | execute(){}; | ||||
| rolback(){}; | rolback(){}; | ||||
| } | } |
| import { BorderColorTransform } from "./transformations/border-color-transformation/border-color-transformation"; | import { BorderColorTransform } from "./transformations/border-color-transformation/border-color-transformation"; | ||||
| import { RemoveTableHeaderTransform } from "./transformations/remove-table-header-transform"; | import { RemoveTableHeaderTransform } from "./transformations/remove-table-header-transform"; | ||||
| export class TransformsFactory{ | export class TransformsFactory{ | ||||
| produce(code,object,value) | |||||
| produce(code,object,selectors) | |||||
| { | { | ||||
| if(code == null){ | if(code == null){ | ||||
| return null; | return null; | ||||
| } | } | ||||
| const param = {code: code, object: object, selectors: selectors}; | |||||
| if(code === ("br-hide")){ | if(code === ("br-hide")){ | ||||
| // Ovo ne sme nikako preko atributa | // Ovo ne sme nikako preko atributa | ||||
| return new HideTransform(object); | |||||
| return new HideTransform(param); | |||||
| } else if(code === ("br-color")){ | } else if(code === ("br-color")){ | ||||
| return new ColorTransform(object); | |||||
| return new ColorTransform(param); | |||||
| } else if(code === ("br-removecolumn")){ | } else if(code === ("br-removecolumn")){ | ||||
| return new RemoveTableColumnTransform(object,value); | |||||
| return new RemoveTableColumnTransform(param); | |||||
| } else if(code === ("br-removerow")){ | } else if(code === ("br-removerow")){ | ||||
| return new RemoveTableRowTransform(object,value); | |||||
| return new RemoveTableRowTransform(param); | |||||
| } else if(code === ("br-removeheader")){ | } else if(code === ("br-removeheader")){ | ||||
| return new RemoveTableHeaderTransform(object); | |||||
| return new RemoveTableHeaderTransform(param); | |||||
| } else if(code === ("br-shownumberrows")){ | } else if(code === ("br-shownumberrows")){ | ||||
| return new ShowNumberRowsTransformation(object,value); | |||||
| return new ShowNumberRowsTransformation(param); | |||||
| } else if(code === ("br-bordercolor")){ | } else if(code === ("br-bordercolor")){ | ||||
| return new BorderColorTransform(object); | |||||
| return new BorderColorTransform(param); | |||||
| } | } | ||||
| return null; | return null; | ||||
| } | } |