Last active
March 27, 2017 02:00
-
-
Save SergProduction/10adee1e14bd47f6146ed3328ef4b7c8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let tableSource = document.getElementById('tableSource') | |
let addEqualIf = document.getElementById('addEqualIf') | |
let addEqualThen = document.getElementById('addEqualThen') | |
let clearEqual = document.getElementById('clearEqual') | |
let saveEqual = document.getElementById('saveEqual') | |
let divEqual = document.getElementById('divEqual') | |
const base1 = [ | |
['id','name','lvl'], | |
['1584 sdf','serg','80'], | |
['1756 gh','alex','15'], | |
['1756 we','ivan','18'], | |
]; | |
const base2 = [ | |
['id','prof','work'], | |
['1584 df','develop','y'], | |
['1756 ty','manager','y'], | |
['1756 yu','desinger','n'], | |
] | |
const folder = ['1','2','3','4']; | |
const fileName = ['1.jpg','2.jpg','3.jpg','4.jpg']; | |
const base = ['base1','base2','folder','file_name'] | |
createTable(base1, tableSource) | |
createTable(base2, tableSource) | |
//var afi= addFromsIf(divEqual, base) | |
addEqualIf.addEventListener('click', ()=>{ | |
addFromsIf(divEqual, base).add() | |
//afi().add() | |
}) | |
//var aft = addFromsThen(divEqual, base) | |
addEqualThen.addEventListener('click', ()=>{ | |
addFromsThen(divEqual, base).add() | |
//aft().add() | |
}) | |
clearEqual.addEventListener('click', ()=>{ | |
divEqual.innerHTML = ''; | |
}) | |
saveEqual.addEventListener('click', ()=>{ | |
}) | |
function createCode(){ | |
let result = [] | |
for( let p of divEqual.children){ | |
for( let form of p.children){ | |
if( form.name == 'if' ){ | |
let base1 = form.elements.base1.value | |
let val1 = form.elements.val1.value | |
let val1split = form.elements.val1split.value | |
let equal = form.elements.equal.value | |
let base2 = form.elements.base2.value | |
let val2 = form.elements.val2.value | |
let val2split = form.elements.val2split.value | |
let boolean = form.elements.boolean.value | |
result.push({type:'if', data: createUserIf(base1, val1, val1split, equal, base2, val2, val2split, boolean)}) | |
} | |
if( form.name == 'then' ){ | |
let what = form.elements.what.value //пременная, база | |
let val1 = form.elements.val1.value //имя переменной | |
let base = form.elements.base.value //откуда | |
let val2 = form.elements.val2.value //какой столбец | |
let val2split = form.elements.val2split.value //разделитель | |
let boolean = form.elements.boolean.value //логическое И, ИЛИ | |
result.push({type:'if', data:createUserThen(what, val1, base, val2, val2split, boolean) }) | |
} | |
} | |
} | |
return result | |
} | |
//if(form.elements.val1.value == 'variable') | |
function createUserIf(base1, val1, val1split, equal, base2, val2, val2split, boolean){ | |
if( base1 == 'folder'){ | |
let result = 'return '; | |
let split1 = val1split.split(';') | |
let split2 = val2split.split(';') | |
if(val1split) result += `folderOrFile.split('${split1[0]}')[ ${split1[1]} ]` | |
else result += `folderOrFile` | |
result += ` ${equal} `; | |
if(val2split) result += `${base2}[${val2}].split('${split2[0]}')[ ${split2[1]} ]` | |
else result += `${base2}[${val2}]` | |
result += ` ${boolean} `; | |
return {type:'folder', base:base2, function:new Function(`folderOrFile, ${base2}`, result)} | |
} | |
else if(base1 == 'file_name' ){ | |
let result = 'return '; | |
let split1 = val1split.split(';') | |
let split2 = val2split.split(';') | |
if(val1split) result += `folderOrFile.split('${split1[0]}')[ ${split1[1]} ]` | |
else result += `folderOrFile` | |
result += ` ${equal} `; | |
if(val2split) result += `${base2}[${val2}].split('${split2[0]}')[ ${split2[1]} ]` | |
else result += `${base2}[${val2}]` | |
result += ` ${boolean} `; | |
return {type:'file', base:base2, function:new Function(`folderOrFile, ${base2}`, result)} | |
} | |
else{ | |
let result = 'return '; | |
let split1 = val1split.split(';') | |
let split2 = val2split.split(';') | |
if(val1split) result += `${base1}[${val1}].split('${split1[0]}')[ ${split1[1]} ]` | |
else result += `${base1}[${val1}]` | |
result += ` ${equal} `; | |
if(val2split) result += `${base2}[${val2}].split('${split2[0]}')[ ${split2[1]} ]` | |
else result += `${base2}[${val2}]` | |
result += ` ${boolean} `; | |
return {type:'base', function: new Function('base1,base2', result )} | |
} | |
} | |
function createUserThen(what, val1, base, val2, val2split, boolean){ | |
if(what == 'variable'){ | |
let sp = val2split.split(';') | |
if(val2split) variable[val1] = base[val2].split( sp[0] )[ sp[1] ] | |
else variable[val1] = base[val2] | |
} | |
if(what == 'table'){ | |
readXlsx(base, val2, data => { | |
}) | |
} | |
if(what == 'renameFolder'){ | |
let sp = val2split.split(';') | |
if( val2split ) newFolder = val1 || val2.split( sp[0] )[ sp[1] ] | |
else newFolder = val1 || val2 | |
} | |
if(what == 'renameFile'){ | |
let sp = val2split.split(';') | |
if( val2split ) newNameFile = val1 || val2.split( sp[0] )[ sp[1] ] | |
else newNameFile = val1 || val2 | |
} | |
} | |
function start(){} | |
function readXlsx(pathToXlsx, column){ | |
let workbook = new Excel.Workbook(); | |
workbook.xlsx.readFile( pathToXlsx ) | |
.then( e => { | |
let worksheet = workbook.getWorksheet(1); | |
let ids = []; | |
let col_ids = worksheet.getColumn(column); | |
col_ids.eachCell((cell, rowNum) => { | |
let text = cell.value.text | |
ids.push( text ? text : '' ) | |
}) | |
ids = _uniq(ids) | |
ids = ids.filter( el => el.length == ID_LENGTH && el != '[object object]') | |
}) | |
.catch(error => { | |
}) | |
} | |
/* | |
function cv(){ | |
let userEqual = createCode() | |
if(userEqual.type == 'folder'){ | |
let currentBaseIndex = base.indexOf(userEqual.base) | |
return userEqual.function(folder[0], base[currentBaseIndex]) | |
} | |
else if(userEqual.type == 'file'){ | |
let currentFileListIndex = fileList.indexOf(userEqual.base) | |
return userEqual.function(file[0], base[currentFileListIndex]) | |
} | |
else{ | |
return userEqual.function(base1[1], base2[1]) | |
} | |
} | |
*/ | |
function* generatorFolder(arrFolder){ | |
for(let i=0; i<arrFolder.length; i++) | |
yield arrFolder[i] | |
} | |
function* generatorFileInFilder(){ | |
let iterFolder = generatorFolder(folder) | |
for( let dir of iterFolder){ | |
//let fileList = fs.readdirSync(path.join(__dirname, dir)) | |
//for(let i=0; i<fileList.length; i++){ | |
// yield {dir:dir, file:fileList[i]} | |
//} | |
} | |
} | |
let iterFile = generatorFileInFilder() | |
function* generatorEequalBase(base1, base2){ | |
for(let i=0; i<base1.length; i++){ | |
for(let z=0; z<base2.length; z++){ | |
if( userIf(base1[i], base2[z]) ){ | |
yield userThen() | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function addFromsIf(where, base){ | |
let count = 0; | |
let description = document.createElement('p') | |
description.textContent = 'если'; | |
(where || document.body).appendChild(description) | |
let watchAdd = function(e){ | |
let forms = description || document.body | |
forms = forms.getElementsByTagName('form') | |
let lastForm = forms[forms.length - 1] | |
if( lastForm.elements.val1.value && | |
lastForm.elements.val2.value && | |
e.target.value ){ | |
add() | |
} | |
}; | |
let watchRemove = function(e){ | |
let forms = description || document.body | |
forms = forms.getElementsByTagName('form') | |
let del = false; | |
let arrDel = [] | |
for(let form of forms){ | |
if(del) | |
arrDel.push(form) | |
if( !e.target.value ){ | |
if( form.elements.boolean === e.target ){ | |
del = true | |
form.elements.boolean.addEventListener('change', watchAdd) | |
} | |
} | |
} | |
arrDel.map(el => { | |
el.parentElement.removeChild(el) | |
return null | |
}) | |
}; | |
function addOrDelete(){ | |
let forms = description || document.body | |
forms = forms.getElementsByTagName('form') | |
for(let form of forms){ | |
form.elements.boolean.removeEventListener('change', watchAdd) | |
form.elements.boolean.addEventListener('change', watchRemove) | |
} | |
let lastForm = forms[forms.length - 1] | |
lastForm.elements.boolean.addEventListener('change', watchAdd) | |
} | |
function optionBase(name, ...ne){ | |
let optStr = `<select name="base${name}">`; | |
base.forEach( el => { | |
if( ne.includes(el) ) return false | |
optStr += `<option value="${el}" > ${el} </option>\n` | |
}) | |
optStr += '</select>' | |
return optStr | |
} | |
function add(name, where){ | |
count+=1; | |
let newName = name || count | |
let form = document.createElement('form') | |
form.name = 'if' | |
let newForms = ` | |
${optionBase(1)} | |
<input type="text" name="val1" placeholder="имя/столбец"> | |
<input type="text" name="val1split" placeholder="разделитель"> | |
<select name="equal"> | |
<option value=">" > > </option> | |
<option value="<" > < </option> | |
<option value="=="> = </option> | |
</select> | |
${optionBase(2, 'folder', 'file_name')} | |
<input type="text" name="val2" placeholder="имя/столбец"> | |
<input type="text" name="val2split" placeholder="разделитель"> | |
<select name="boolean"> | |
<option value="" ></option> | |
<option value="&&" > && </option> | |
<option value="||" > || </option> | |
</select>`; | |
form.innerHTML = newForms | |
where = description || where || document.body | |
where.appendChild(form) | |
addOrDelete() | |
} | |
function remove(where){ | |
where = description || where || document.body | |
} | |
return {add} | |
} | |
function addFromsThen(where, base){ | |
let count = '_'; | |
let countNum = 0; | |
let description = document.createElement('p') | |
description.textContent = 'тогда'; | |
(where || document.body).appendChild(description) | |
let watchAdd = function(e){ | |
let forms = description.getElementsByTagName('form') | |
let lastForm = forms[forms.length - 1] | |
if( lastForm.elements.val2.value && | |
e.target.value ){ | |
add() | |
} | |
}; | |
let watchRemove = function(e){ | |
let forms = description.getElementsByTagName('form') | |
let del = false; | |
let arrDel = [] | |
for(let form of forms){ | |
if(del) | |
arrDel.push(form) | |
if( !e.target.value ){ | |
if( form.elements.boolean === e.target ){ | |
del = true | |
form.elements.boolean.addEventListener('change', watchAdd) | |
} | |
} | |
} | |
arrDel.map(el => { | |
el.parentElement.removeChild(el) | |
return null | |
}) | |
}; | |
function addOrDelete(){ | |
let forms = description.getElementsByTagName('form') | |
for(let form of forms){ | |
form.elements.boolean.removeEventListener('change', watchAdd) | |
form.elements.boolean.addEventListener('change', watchRemove) | |
} | |
let lastForm = forms[forms.length - 1] | |
lastForm.elements.boolean.addEventListener('change', watchAdd) | |
} | |
function optionBase(name, ...ne){ | |
let optStr = `<select name="base${name}">`; | |
base.forEach( el => { | |
optStr += `<option value="${el}" > ${el} </option>\n` | |
}) | |
optStr += '</select>' | |
return optStr | |
} | |
function add(name, where){ | |
countNum+=1; | |
let newName = name || count + countNum | |
let form = document.createElement('form') | |
form.name = 'then' | |
let newForms = ` | |
<select name="what"> | |
<option value="variable" > сохранить в переменную </option> | |
<option value="table" > сохранить из таблицы xlsx </option> | |
<option value="renameFolder" > положить в папку </option> | |
<option value="renameFile"> переименовать файл </option> | |
</select> | |
<input type="text" name="val1" placeholder="имя"> | |
<span>значение из</span> | |
${optionBase(1)} | |
<input type="text" name="val2" placeholder="имя/столбец"> | |
<input type="text" name="val2split" placeholder="разделитель"> | |
<select name="boolean"> | |
<option value="" ></option> | |
<option value="&&" > && </option> | |
<option value="||" > || </option> | |
</select>`; | |
form.innerHTML = newForms | |
where = description || where || document.body | |
where.appendChild(form) | |
addOrDelete() | |
} | |
function remove(where){ | |
where = description || where || document.body | |
} | |
return {add} | |
} | |
//addFroms(divEqual).add() | |
function createTable(arr, where){ | |
let table = document.createElement('table') | |
table.border = '1'; | |
table.style.borderSpacing = '0'; | |
table.style.display = 'inline-block'; | |
table.style.marginLeft = '20px'; | |
let tableOuter = ''; | |
for(let i=0; i<arr.length; i++){ | |
tableOuter += '<tr>'; | |
for(let z=0; z<arr[i].length; z++){ | |
tableOuter += '<td>' + arr[i][z] + '</td>'; | |
} | |
tableOuter += '</tr>'; | |
} | |
table.innerHTML = tableOuter | |
where.appendChild(table) | |
} | |
function getFunctionBoolean(where0){ | |
let forms = where0 || document.body | |
forms = forms.getElementsByTagName('form') | |
let result = 'return '; | |
for(let form of forms){ | |
result += 'a[' + form.elements.val1.value + ']' | |
result += ' ' + form.elements.equal.value + ' ' | |
result += 'b[' + form.elements.val2.value + ']' | |
result += ' ' + form.elements.boolean.value + ' ' | |
//result += '\n'; | |
} | |
return result | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<meta charset="utf8"> | |
<style type="text/css"> | |
input{ | |
width: 50px | |
} | |
</style> | |
</head> | |
<body> | |
<div id="tableSource"></div> | |
<button id="addEqualIf">если</button> | |
<button id="addEqualThen">тогда</button> | |
<button id="clearEqual">очистить</button> | |
<button id="saveEqual">сохранить конфигурацию</button> | |
<div id="divEqual"></div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment