|
|
TotForm = function(instanceName, tableCount, itemCount) { |
|
|
this.name = instanceName; |
|
|
this.isTotDoc = false; |
|
|
this.tableCount = tableCount; |
|
|
this.itemCount = itemCount; |
|
|
this.itemList = new Array(); |
|
|
this.tableList = new Array(); |
|
|
for(var j=1; j <= tableCount && tableCount > 0 ; j++) |
|
|
this.tableList[j]= new TotTable(1); |
|
|
for(var i=0;i<itemCount;i++) |
|
|
this.itemList[i] = new TotItem('', 0, 0, 0, 0, |
|
|
'', '', '', |
|
|
false, false); |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
TotForm.prototype.Class = 'TotForm'; |
|
|
|
|
|
TotTable = function(type) { |
|
|
this.type = type; |
|
|
}; |
|
|
|
|
|
TotItem = function(name, tableNum, rowNum, colNum, size, |
|
|
desc, type, expr, |
|
|
dataItem, setWin) { |
|
|
this.itemName = name; |
|
|
this.tableNum = tableNum; |
|
|
this.rowNum = rowNum; |
|
|
this.colNum = colNum; |
|
|
this.size = size; |
|
|
this.desc = desc; |
|
|
this.type = type; |
|
|
this.expr = expr; |
|
|
this.dataItem = dataItem; |
|
|
this.setWin = setWin; |
|
|
|
|
|
}; |
|
|
|
|
|
TotForm.prototype.isValid = function() { |
|
|
return this.isTotDoc; |
|
|
}; |
|
|
|
|
|
// change all cell types in 'cellRange' to 'type' |
|
|
TotForm.prototype.changeTypes = function (cellRange, type) { |
|
|
if(cellRange == null) |
|
|
return false; |
|
|
|
|
|
if(/[A-Z]+\d+\s*:\s*[A-Z]+\d+/ig.test(cellRange)) { // cellName:cellName ÇüÅ |
|
|
for(var i = 0; i < this.itemCount; i++) { |
|
|
if(isContainedIn(this.itemList[i].itemName, cellRange)) { |
|
|
this.itemList[i].type = type; |
|
|
this.reShowValue(i); |
|
|
} |
|
|
} |
|
|
} else if(/[A-Z]+\d+(?:\s*[,\+\-\*\/=]\s*[A-Z]+\d+)*/ig.test(cellRange)) { // cellName, cellName, ... ÇüÅ |
|
|
var cellNameArray = cellRange[0].split(/\s*[,\+\-\*\/=]\s*/g); |
|
|
for(var i = 0; i < this.itemCount; i++) { |
|
|
for(var j = 0; j < cellNameArray.length; j++) { |
|
|
if(this.itemList[i].itemName.toUpperCase() == cellNameArray[j].toUpperCase().trim()) { |
|
|
this.itemList[i].type = type; |
|
|
this.reShowValue(i); |
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
alert('unexpected condition'); |
|
|
// FIXME : unexpected condition |
|
|
} |
|
|
}; |
|
|
|
|
|
TotForm.prototype.correctCellTypes = function() { |
|
|
for(var i = 0; i < this.itemCount; i++) { |
|
|
if(this.itemList[i].expr != '' && this.itemList[i].expr != null) { // if has formula |
|
|
//FIXME : this regexp can handle with neither incorrect cell range expression |
|
|
//nor composite expression like 'cellName:cellName, cellName:cellName' |
|
|
var cellRange = this.itemList[i].expr.match(/[A-Z]+\d+\s*:\s*[A-Z]+\d+|[A-Z]+\d+(?:\s*[,\+\-\*\/=]\s*[A-Z]+\d+)+/ig); |
|
|
this.itemList[i].type = '¼ýÀÚ'; |
|
|
this.reShowValue(i); |
|
|
this.changeTypes(cellRange, '¼ýÀÚ'); |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
TotForm.prototype.exprCheck = function(){ |
|
|
for(var i=0; i < this.itemList.length; i++){ |
|
|
if(isErrorExpr(this.itemList[i].expr, this.itemList[i].type)) { |
|
|
return true; |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
function isErrorExpr(expr, type){ |
|
|
//SUM¾È¿¡ +°¡ ÀÖ´Â °æ¿ì check |
|
|
if(expr != ""){ |
|
|
var sumIndex = expr.indexOf("SUM"); |
|
|
var plusIndex = 0; |
|
|
plusIndex += expr.indexOf("+"); |
|
|
plusIndex += expr.indexOf("-"); |
|
|
plusIndex += expr.indexOf("*"); |
|
|
plusIndex += expr.indexOf("/"); |
|
|
plusIndex += expr.indexOf("="); |
|
|
|
|
|
if(expr.indexOf("=")>-1) |
|
|
{ |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä. \nÁ¤ÀÇÇÑ ¼ö½ÄÁß SUM()¾È¿¡ '+', '-', '*', '/', '='°¡ ÀÖ´ÂÁö ´Ù½Ã È®ÀÎÇØ ÁÖ¼¼¿ä. "); |
|
|
return true; |
|
|
} |
|
|
|
|
|
if(sumIndex > -1 && plusIndex > -1){ |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä. \nÁ¤ÀÇÇÑ ¼ö½ÄÁß SUM()¾È¿¡ '+', '-', '*', '/', '='°¡ ÀÖ´ÂÁö ´Ù½Ã È®ÀÎÇØ ÁÖ¼¼¿ä. "); |
|
|
return true; |
|
|
} |
|
|
|
|
|
var colonIndex = expr.indexOf(":"); |
|
|
var alphabetCount = 0; |
|
|
var alphaBeforeCount = 0; |
|
|
var alphaAfterCount = 0; |
|
|
|
|
|
//SUM¾È¿¡ ¾ÆÀÌÅÛÀÌ Çϳª¸¸ Á¸ÀçÇÒ¶§.. |
|
|
var roundInStr = ""; |
|
|
var charCount = 0; |
|
|
var alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; |
|
|
// if(sumIndex > -1){ |
|
|
// roundInStr = expr.substring(sumIndex+3, expr.length); |
|
|
// charCount = roundInStr.length; |
|
|
// var isErrorExpr = false; |
|
|
// for(var i=0; i < charCount; i++){ |
|
|
// alert(roundInStr.substring(i, i+1)); |
|
|
// if(alphabet.indexOf(roundInStr.substring(i, i+1)) > -1 && isErrorExpr){ |
|
|
// isErrorExpr = false; |
|
|
// break; |
|
|
// }else{ |
|
|
// isErrorExpr = true; |
|
|
// } |
|
|
// } |
|
|
// } |
|
|
// if(isErrorExpr){ |
|
|
// alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä. \nÁ¤ÀÇÇÑ ¼ö½ÄÁß SUM()¾È¿¡ ¼¿ À̸§ÀÌ Çϳª¸¸ ÀÖ´ÂÁö È®ÀÎÇØ ÁÖ¼¼¿ä. "); |
|
|
// return true; |
|
|
// } |
|
|
|
|
|
if(sumIndex > -1){ |
|
|
//ÄÝ·ÐÀÌ ¾ø´Â °æ¿ì¿¡´Â ¾ËÆÄºª+¼ýÀÚ°¡ 2°³ ÀÖ¾î¾ß ÇÑ´Ù. |
|
|
if(colonIndex <= -1) { |
|
|
roundInStr = expr.substring(sumIndex+4, expr.length-1); |
|
|
charCount = roundInStr.length; |
|
|
for(var i=0; i < charCount; i++){ |
|
|
if(alphabet.indexOf(roundInStr.substring(i, i+1)) > -1){ |
|
|
if(alphabetCount == 1) { alphabetCount = 0; } |
|
|
alphabetCount = alphabetCount + 1; |
|
|
} else { |
|
|
if(alphabetCount == 2) { alphabetCount = 1; } |
|
|
alphabetCount = alphabetCount + 1; |
|
|
} |
|
|
} |
|
|
|
|
|
if(alphabetCount != 2){ |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä."); |
|
|
return true; |
|
|
} |
|
|
|
|
|
//ÄÝ·ÐÀÌ 1°³ ÀÖ´Â °æ¿ì¿¡´Â ¾ËÆÄºª+¼ýÀÚ°¡ 2°³ ÀÖ¾î¾ß ÇÑ´Ù. |
|
|
} else { |
|
|
//ÄÝ·ÐÀÇ ¾ÕÂÊ |
|
|
roundInStr = expr.substring(sumIndex+4, colonIndex); |
|
|
charCount = roundInStr.length; |
|
|
for(var i=0; i < charCount; i++){ |
|
|
if(alphabet.indexOf(roundInStr.substring(i, i+1)) > -1){ |
|
|
if(alphaBeforeCount == 1) { alphaBeforeCount = 0; } |
|
|
alphaBeforeCount = alphaBeforeCount + 1; |
|
|
} else { |
|
|
if(alphaBeforeCount == 2) { alphaBeforeCount = 1; } |
|
|
alphaBeforeCount = alphaBeforeCount + 1; |
|
|
} |
|
|
} |
|
|
|
|
|
//ÄÝ·ÐÀÇ µÚÂÊ |
|
|
roundInStr = expr.substring(colonIndex+1, expr.length-1); |
|
|
charCount = roundInStr.length; |
|
|
for(var i=0; i < charCount; i++){ |
|
|
if(alphabet.indexOf(roundInStr.substring(i, i+1)) > -1){ |
|
|
if(alphaAfterCount == 1) { alphaAfterCount = 0; } |
|
|
alphaAfterCount = alphaAfterCount + 1; |
|
|
} else { |
|
|
if(alphaAfterCount == 2) { alphaAfterCount = 1; } |
|
|
alphaAfterCount = alphaAfterCount + 1; |
|
|
} |
|
|
} |
|
|
|
|
|
if((alphaBeforeCount == 2 && alphaAfterCount != 2) || (alphaBeforeCount != 2 && alphaAfterCount == 2)) { |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä. \nÁ¤ÀÇÇÑ ¼ö½ÄÁß SUM()¾È¿¡ ¼¿ À̸§ÀÌ Çϳª¸¸ ÀÖ´ÂÁö È®ÀÎÇØ ÁÖ¼¼¿ä. "); |
|
|
return true; |
|
|
} else if(alphaBeforeCount != 2 || alphaAfterCount != 2){ |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä."); |
|
|
return true; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
// ¼¿À» '¼ýÀÚ'·Î ¼±ÅÃÇϰí, °è»ê½ÄÀ» ÀÔ·ÂÇÒ °æ¿ì ÀԷ°¡´ÉÇÑ ¹®ÀÚ¿Ü¿¡´Â µî·ÏÇÏÁö ¸øÇϵµ·Ï üũÇÑ´Ù. 2014.11.21 by YOUNGJUN,CHO |
|
|
//alert(SetCell.itemType.value); |
|
|
if (type === "¼ýÀÚ") { |
|
|
|
|
|
// ¾Æ·¡ ¹®ÀÚ°¡ ¾Æ´Ñ °æ¿ì(Á¤±Ô½Ä ¾Õ¿¡ ^ À¸·Î ¾Æ´Ñ °æ¿ì¸¦ üũ)°¡ Á¸ÀçÇÒ °æ¿ì true ·Î ¸®ÅÏ. |
|
|
// ¿µ¹® ´ë¹®ÀÚ A-Z |
|
|
// ¼ýÀÚ 0-9 |
|
|
// °ýÈ£ ( ) |
|
|
// »çÄ¢¿¬»ê + - * / |
|
|
// ÄÝ·Ð : |
|
|
var regexp = /[^A-Z|0-9|\(|\)|\+|\-|\/|\*|\:]/; |
|
|
|
|
|
//alert(regexp.test(expr)); |
|
|
if (regexp.test(expr) === true) { |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù.\n\n¼¿À» '¼ýÀÚ'·Î ¼±ÅÃÇϽаæ¿ì¿¡´Â ¼ö½Ä¿¡ ¼Ò¼öÁ¡À» »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç\n\r¾Æ·¡ ¹®ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.\n\ |
|
|
\n** ¾ËÆÄºª(´ë¹®ÀÚ), ¼ýÀÚ, °ýÈ£, »çÄ¢¿¬»ê±âÈ£(+,-,*,/), ÄÝ·Ð(:) **\n\n¼ö½ÄÀ» ´Ù½Ã ¼³Á¤ÇØ ÁֽʽÿÀ!"); |
|
|
return true; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//SUM¾øÀÌ ','¸¸ »ç¿ëÇÒ¶§ »ç¿ëºÒ°¡ |
|
|
var comaIndex; |
|
|
if(sumIndex == -1){ |
|
|
comaIndex = expr.indexOf(","); |
|
|
if(comaIndex > -1){ |
|
|
alert(expr+" ¼ö½ÄÀÌ À߸ø µÇ¾ú½À´Ï´Ù. ´Ù½ÃÈ®ÀÎÇØ ÁÖ¼¼¿ä. \nÁ¤ÀÇÇÑ ¼ö½ÄÁß ','°¡ ÀÖ´ÂÁö È®ÀÎÇØÁÖ¼¼¿ä. \n','¸¦ '+'·Î ¹Ù²ã »ç¿ëÇϸé Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù."); |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
//¼ö½Ä¿¡ ÀÚ±âÀÚ½ÅÀ» ¿¬»êÇÏ´Â °æ¿ì »ç¿ëºÒ°¡ |
|
|
if(expr.indexOf("+")==-1||expr.indexOf("-")==-1||expr.indexOf("*")==-1||expr.indexOf("/")==-1||expr.indexOf("SUM(")==-1){ |
|
|
var cellname=$(SetWin).find('td:first').text(); |
|
|
try{ |
|
|
cellname=cellname.trim(); |
|
|
}catch(e){} |
|
|
|
|
|
if(expr.indexOf(cellname)>-1&&cellname!=''){ |
|
|
alert('¼ö½Ä¿¡´Â ÀÚ±â ÀÚ½ÅÀ» ¿¬»êÇÒ ¼ö ¾ø½À´Ï´Ù.'); |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
//¼¿ ¼½Ä Àû¿ë Áß ÄÞº¸¹Ú½º¿Í ¿¬»êÀÌ ÀÖÀ» °æ¿ì ÄÞº¸¹Ú½º °ª Áß¿¡ ¼ýÀÚ°ªÀÌ ¾Æ´Ñ °ªÀÌ ÀÖ´ÂÁö üũ |
|
|
//¼ö½Ä ÀÏ ¶§ ¼ýÀÚ°¡ ¾Æ´Ñ ¼¿ ÀÌ ÀÖ´Â Áö È®ÀÎ |
|
|
var temp=expr.replace('+',',').replace('-',',').replace('*',',').replace('/',',').replace('SUM(',',').replace(':',',').replace(')',',').split(','); |
|
|
if(temp.length>1){ |
|
|
for(var i=0;i<temp.length;i++){ |
|
|
for(var j=0;j<totForm.itemList.length;j++){ |
|
|
if(temp[i]==totForm.itemList[j].itemName){ |
|
|
var exp=totForm.itemList[j].expr; |
|
|
if(exp.indexOf('^')>-1){ |
|
|
var explist=exp.split('^'); |
|
|
for(var k=0;k<explist.length;k++){ |
|
|
if(isNaN(explist[k])){ |
|
|
alert(totForm.itemList[j].itemName+' ÀÇ ÄÞº¸ °ª Áß¿¡ ¼ýÀÚ°¡ ¾Æ´Ñ°ªÀÌ ÀÖ½À´Ï´Ù.'); |
|
|
return true; |
|
|
} |
|
|
} |
|
|
} |
|
|
if(totForm.itemList[j].type!='¼ýÀÚ'&&exp.indexOf('^')==-1){ |
|
|
alert(totForm.itemList[j].itemName+' Àº ¼ýÀÚ°¡ ¾Æ´Ï¹Ç·Î ¼ö½ÄÀ» Àû¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.'); |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
if(expr.indexOf('+')>-1||expr.indexOf('-')>-1||expr.indexOf('*')>-1||expr.indexOf('/')>-1||expr.indexOf('SUM(')>-1){ |
|
|
for(var i=0;j<totForm.itemList.length;i++){ |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
function isErrorCalculate(expr) { |
|
|
|
|
|
} |
|
|
|
|
|
//¼³Á¤ |
|
|
function setValue(totForm, index){ |
|
|
if(isErrorExpr(SetCell.itemExpr.value, SetCell.itemType.value)) return; //¼ö½Ä ¿À·ù check |
|
|
totForm.itemList[index].type = SetCell.itemType.value; |
|
|
totForm.itemList[index].size = SetCell.itemSize.value; |
|
|
totForm.itemList[index].expr = SetCell.itemExpr.value; |
|
|
|
|
|
totForm.reShowValue(index); |
|
|
} |
|
|
|
|
|
function getNumber(itemName) { |
|
|
var num = itemName.substring(1, itemName.length); |
|
|
if(isNaN(num)) |
|
|
num = itemName.substring(2, itemName.length); |
|
|
return num; |
|
|
} |
|
|
|
|
|
function getCharter(itemName, number) { |
|
|
/* |
|
|
var charter = itemName.substring(0, 1); |
|
|
if(isNaN(number)) |
|
|
charter = itemName.substring(0, 2); |
|
|
return charter; |
|
|
*/ |
|
|
var ret; |
|
|
if(itemName.length==2) |
|
|
{ |
|
|
var charter = itemName.substring(0, 1); |
|
|
if(isNaN(number)) charter = itemName.substring(0, 2); |
|
|
ret=charter; |
|
|
} |
|
|
else |
|
|
{ |
|
|
var charter1 = itemName.substring(0, 1); |
|
|
var charter2 = itemName.substring(1, 2); |
|
|
if(!isNaN(charter2)) { ret=charter1; } |
|
|
else { ret=itemName.substring(0,2); } |
|
|
|
|
|
} |
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
function horApply(totForm, ItemName, index) { |
|
|
if(isErrorExpr(SetCell.itemExpr.value, SetCell.itemType.value)) return; //¼ö½Ä ¿À·ù üũ |
|
|
var TableSu = totForm.itemList[index].tableNum; |
|
|
var Number = getNumber(ItemName); |
|
|
var Charter = getCharter(ItemName, Number); |
|
|
|
|
|
for (i=0;i<totForm.itemCount;i++){ |
|
|
if(totForm.itemList[i].itemName != undefined |
|
|
&& totForm.itemList[i].desc == 'empty' |
|
|
&& totForm.itemList[i].tableNum == TableSu |
|
|
&& totForm.itemList[i].type != 'ŸÀÌÆ²') { |
|
|
var ChangeNumber = getNumber(totForm.itemList[i].itemName); |
|
|
var ChangeCharter = getCharter(totForm.itemList[i].itemName, ChangeNumber); |
|
|
if(Number == ChangeNumber){ |
|
|
var ItemExpr = (SetCell.itemExpr.value).toUpperCase(); |
|
|
if(ItemExpr.indexOf("^") < 0) |
|
|
totForm.itemList[i].expr = ItemExpr.replace(eval('/'+Charter+'/g'), ChangeCharter); |
|
|
else |
|
|
totForm.itemList[i].expr = ItemExpr; |
|
|
totForm.itemList[i].type = SetCell.itemType.value; //¼ýÀÚ, ¹®ÀÚ, ³¯Â¥ ¼öÆò ¼³Á¤ |
|
|
totForm.itemList[i].size = SetCell.itemSize.value; //¼¿ Å©±â ¼öÆò ¼³Á¤ |
|
|
totForm.reShowValue(i); |
|
|
} |
|
|
} |
|
|
} |
|
|
SetWin.style.visibility="hidden"; |
|
|
} |
|
|
|
|
|
function verApply(totForm, ItemName, index){ |
|
|
if(isErrorExpr(SetCell.itemExpr.value, SetCell.itemType.value)) return; //¼ö½Ä ¿À·ù üũ |
|
|
var TableSu = totForm.itemList[index].tableNum; |
|
|
var Number = getNumber(ItemName); |
|
|
var Charter = getCharter(ItemName, Number); |
|
|
|
|
|
for (i=0;i<totForm.itemCount;i++){ |
|
|
if(totForm.itemList[i].itemName != undefined |
|
|
&& totForm.itemList[i].desc == 'empty' |
|
|
&& totForm.itemList[i].tableNum == TableSu |
|
|
&& totForm.itemList[i].type != 'ŸÀÌÆ²') { |
|
|
var ChangeNumber = getNumber(totForm.itemList[i].itemName); |
|
|
var ChangeCharter = getCharter(totForm.itemList[i].itemName, ChangeNumber); |
|
|
if(Charter == ChangeCharter){ |
|
|
var ItemExpr = (SetCell.itemExpr.value).toUpperCase(); |
|
|
if(ItemExpr.indexOf("^") < 0) |
|
|
totForm.itemList[i].expr = ItemExpr.replace(eval('/'+Number+'/g'), ChangeNumber); |
|
|
else |
|
|
totForm.itemList[i].expr = ItemExpr; |
|
|
totForm.itemList[i].type = SetCell.itemType.value; //¼ýÀÚ, ¹®ÀÚ, ³¯Â¥ ¼öÁ÷ ¼³Á¤ |
|
|
totForm.itemList[i].size = SetCell.itemSize.value; //¼¿ Å©±â ¼öÁ÷ ¼³Á¤ |
|
|
totForm.reShowValue(i); |
|
|
} |
|
|
} |
|
|
} |
|
|
SetWin.style.visibility="hidden"; |
|
|
} |
|
|
|
|
|
TotForm.prototype.setTypeAll = function(typeName) { |
|
|
for (i=0;i<this.itemCount;i++){ |
|
|
if(this.itemList[i].itemName != undefined |
|
|
&& this.itemList[i].type != 'ŸÀÌÆ²' |
|
|
&& this.itemList[i].desc == 'empty'){ |
|
|
this.itemList[i].type = typeName; |
|
|
this.reShowValue(i); |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
TotForm.prototype.setTypeByIndex = function(typeName, index) { |
|
|
for (i=0;i<this.itemCount;i++){ |
|
|
if(this.itemList[i].itemName != undefined |
|
|
&& this.itemList[i].desc == 'empty' |
|
|
&& this.itemList[i].type != 'ŸÀÌÆ²' |
|
|
&& this.itemList[i].tableNum == index){ |
|
|
this.itemList[i].type = typeName; |
|
|
this.reShowValue(i); |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
TotForm.prototype.setSum = function(index, expr){ |
|
|
this.itemList[index].setWin = true; |
|
|
this.itemList[index].desc = 'AutoSum'; |
|
|
this.itemList[index].size = 10; |
|
|
this.itemList[index].expr = expr; |
|
|
this.itemList[index].type = 0; |
|
|
}; |
|
|
|
|
|
TotForm.prototype.closeValue = function(index) { |
|
|
|
|
|
var el=document.getElementById("cell_"+index); |
|
|
if(el) eval('cell_'+index).innerHTML=""; |
|
|
|
|
|
}; |
|
|
|
|
|
TotForm.prototype.reShowValue = function(i){ |
|
|
if(this.itemList[i].type != 'ŸÀÌÆ²' && this.itemList[i].desc == 'empty'){ |
|
|
this.isTotDoc = true; //ÀԷ¼¿ÀÌ Çϳª¶óµµ ÀÖ´ÂÁö..? |
|
|
this.showValue(i); |
|
|
}else{ |
|
|
this.closeValue(i); |
|
|
this.itemList[i].expr = ''; |
|
|
} |
|
|
}; |
|
|
|
|
|
TotForm.prototype.showValue = function(index) { |
|
|
var htmlStr = |
|
|
"<table width=100% border=0 cellspacing=0 cellspacing=1>\ |
|
|
<tr>\ |
|
|
<td align=left width=40%>\ |
|
|
<a href=\"javascript:inExpNew('"+ this.itemList[index].itemName +"');\"><b><font face='Courier' color='brown'>"+ this.itemList[index].itemName +"</font></a></b></td><td align=right>"; |
|
|
|
|
|
htmlStr+="<img src=\"/totsys/common/inc/documents/tot_doc/images/"; |
|
|
if(this.itemList[index].expr == '' || this.itemList[index].expr == null){ |
|
|
if(this.itemList[index].type == 'ŸÀÌÆ²') |
|
|
htmlStr+="set4.gif\" "; |
|
|
else if(this.itemList[index].type == '¹®ÀÚ') |
|
|
htmlStr+="set2.gif\" "; |
|
|
else if(this.itemList[index].type == '¼ýÀÚ') |
|
|
htmlStr+="set1.gif\" "; |
|
|
else if(this.itemList[index].type == '³¯Â¥') |
|
|
htmlStr+="set3.gif\" "; |
|
|
}else if(this.itemList[index].expr.indexOf('^') != -1) { |
|
|
this.itemList[index].type = '¹®ÀÚ'; |
|
|
htmlStr+="set_on5.gif\" "; |
|
|
}else if(this.itemList[index].expr.indexOf('~') != -1) { |
|
|
this.itemList[index].type = '¹®ÀÚ'; |
|
|
htmlStr+="set_on2.gif\" "; |
|
|
}else{ |
|
|
if(this.itemList[index].type == 'ŸÀÌÆ²') |
|
|
htmlStr+="set_on4.gif\" "; |
|
|
else if(this.itemList[index].type== '¹®ÀÚ') |
|
|
htmlStr+="set_on2.gif\" "; |
|
|
else if(this.itemList[index].type== '¼ýÀÚ') |
|
|
htmlStr+="set_on1.gif\" "; |
|
|
else if(this.itemList[index].type== '³¯Â¥') |
|
|
htmlStr+="set_on3.gif\" "; |
|
|
} |
|
|
htmlStr+="border=0 align=center onclick=\"showSetWinForCell("+this.name+", "+index+");\" alt='"+this.itemList[index].expr+"' height=15>"; |
|
|
htmlStr+="</td>\ |
|
|
</tr>\ |
|
|
</table>"; |
|
|
eval('cell_'+index).innerHTML = htmlStr; |
|
|
|
|
|
}; |
|
|
|
|
|
function showSetWinForCell(totForm, index){ |
|
|
totForm.itemList[index].setWin = true; |
|
|
SetWin.style.visibility='visible'; |
|
|
SetWin.style.width='auto'; |
|
|
//SetWin.style.top = window.event.y + document.body.scrollTop; |
|
|
//SetWin.style.left = window.event.x + document.body.scrollLeft; |
|
|
// 2014.08.21 by YoungJun Cho. ¼¿ ¼½ÄÁöÁ¤ ·¹ÀÌ¾î ÆË¾÷ À§Ä¡Á¶Àý |
|
|
SetWin.style.top = (window.event.clientY + document.body.scrollTop - 30) + "px"; // À§·Î 30px ¹Ð±â |
|
|
SetWin.style.left = (window.event.clientX + document.body.scrollLeft + 20) + "px"; // ¿ìÃøÀ¸·Î 20px ¹Ð±â |
|
|
SetWin.innerHTML = |
|
|
"<table nowrap border=0 cellpadding=4 cellspacing=0 bgcolor=#eeeeee>\ |
|
|
<tr nowrap bgcolor='#BBBBBB' style='cursor:hand;' id='ForDrag'>\ |
|
|
<td nowrap><font color='brown'><b>"+totForm.itemList[index].itemName+"</b></font></td>\ |
|
|
<td nowrap align=right><right><img src='/totsys/common/inc/documents/tot_doc/images/close.gif' onmouseDown=\"this.src='/totsys/common/inc/documents/tot_doc/images/close1.gif';\" onclick=\"SetWin.style.visibility='hidden';\"></right></td>\ |
|
|
</tr>\ |
|
|
<tr nowrap>\ |
|
|
<td nowrap colspan=2>\ |
|
|
<form name='SetCell'>\ |
|
|
<table nowrap border=0 cellpadding=2 cellspacing=0>\ |
|
|
<tr nowrap >\ |
|
|
<td nowrap>\ |
|
|
<input type='hidden' name=itemSize value='3'>\ |
|
|
<select name='itemType' onchange=\"SetCell.itemType.value=this.value;\" style='vertical-align: middle;'>\ |
|
|
<option value='¼ýÀÚ'>¼ýÀÚ</option>\ |
|
|
<option value='¹®ÀÚ'>¹®ÀÚ</option>\ |
|
|
<option value='³¯Â¥'>³¯Â¥</option>\ |
|
|
<!--option value='ŸÀÌÆ²'>Ç¥Á¦</option-->\ |
|
|
</select>\ |
|
|
<input type=\"button\" style=\"cursor: hand; padding: 0 2px;\" onClick=\"inExpNew('+');\" value=\"+\" />\ |
|
|
<input type=\"button\" style=\"cursor: hand; padding: 0 2px;\" onClick=\"inExpNew('-');\" value=\"-\" />\ |
|
|
<input type=\"button\" style=\"cursor: hand; padding: 0 2px;\" onClick=\"inExpNew('*');\" value=\"*\" />\ |
|
|
<input type=\"button\" style=\"cursor: hand; padding: 0 2px;\" onClick=\"inExpNew('/');\" value=\"/\" />\ |
|
|
<input type=\"button\" style=\"cursor: hand; padding: 0 2px;\" onClick=\"inExpNew('SUM(:)');\" value=\"SUM(:)\" />\ |
|
|
</td>\ |
|
|
</tr>\ |
|
|
<tr nowrap>\ |
|
|
<td nowrap><input name='itemExpr' type='text' style='width:100%' class=inputtxt onkeydown='enter_catch("+totForm.name+", "+index+")'>\ |
|
|
<input type=hidden name=itemDesc>\ |
|
|
<input type=hidden name=itemName value='"+totForm.itemList[index].itemName+"'>\ |
|
|
</td></tr>\ |
|
|
<tr nowrap>\ |
|
|
<td nowrap colspan=10 align=center>\ |
|
|
<input type=button value='¼³Á¤' style=\"cursor: hand; padding: 0 2px;\" onclick=\"setValue("+totForm.name+", "+index+");SetWin.style.visibility='hidden';\"> \ |
|
|
<input type=button value='ÇàÀû¿ë' style=\"cursor: hand; padding: 0 2px;\" onClick=\"horApply("+totForm.name+", '"+totForm.itemList[index].itemName+"', "+index+");\">\ |
|
|
<input type=button value='¿Àû¿ë' style=\"cursor: hand; padding: 0 2px;\" onClick=\"verApply("+totForm.name+", '"+totForm.itemList[index].itemName+"', "+index+");\">\ |
|
|
</td>\ |
|
|
</tr>\ |
|
|
</table>\ |
|
|
</form>\ |
|
|
</td>\ |
|
|
</tr>\ |
|
|
</table>"; |
|
|
SetCell.itemSize.value = totForm.itemList[index].size; |
|
|
SetCell.itemExpr.value = totForm.itemList[index].expr; |
|
|
SetCell.itemType.value = totForm.itemList[index].type; |
|
|
SetCell.itemExpr.focus(); |
|
|
} |
|
|
|
|
|
var v0; |
|
|
function inExpNew(v1) { |
|
|
if(SetWin.style.visibility=='hidden'){ |
|
|
}else{ |
|
|
var itemName = SetCell.itemName; |
|
|
var itemExpr = SetCell.itemExpr; |
|
|
var itemType = SetCell.itemType; |
|
|
|
|
|
// console.log("ÀÔ·Â Type["+itemType.value+"]"); |
|
|
// console.log("ÀԷ°ª["+v1+"]"); |
|
|
// console.log("ÀԷ½©["+itemName.value+"]"); |
|
|
|
|
|
if(itemType.value!='¼ýÀÚ') { |
|
|
return; |
|
|
} |
|
|
|
|
|
if(itemName.value==v1) { |
|
|
alert('¼ö½Ä¿¡´Â ÀÚ±âÀÚ½ÄÀ» ¿¬»êÇÒ ¼ö ¾ø½À´Ï´Ù.'); |
|
|
return; |
|
|
} |
|
|
if(v1 == "SUM(:)") { |
|
|
if(itemExpr.value.length>0) { |
|
|
alert("SUMÇÔ¼ö´Â ´Üµ¶À¸·Î¸¸ »ç¿ë°¡´ÉÇÕ´Ï´Ù."); |
|
|
itemExpr.value=""; |
|
|
return; |
|
|
} |
|
|
else{ |
|
|
itemExpr.value = v1; |
|
|
console.log(1); |
|
|
} |
|
|
} |
|
|
else { |
|
|
if(itemExpr.value=="SUM(:)"){ |
|
|
itemExpr.value="SUM("+v1+":)" |
|
|
console.log(2); |
|
|
} |
|
|
else if(itemExpr.value.indexOf("SUM(")>-1){ |
|
|
itemExpr.value=itemExpr.value.replace(":)",":"+v1+")"); |
|
|
console.log(3); |
|
|
} |
|
|
else { |
|
|
itemExpr.value = itemExpr.value+v1; |
|
|
console.log(4); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
/* |
|
|
//ie10,11 ȣȯ¼º º¸±â ¼öÁ¤ |
|
|
|
|
|
function inExp(v1) { |
|
|
if (SetWin.style.visibility == 'hidden') { |
|
|
} else { |
|
|
SetCell.itemExpr.focus(); |
|
|
window.document.selection.createRange().text = v1; |
|
|
} |
|
|
} |
|
|
|
|
|
function inExp(v1){ |
|
|
if(SetWin.style.visibility=='hidden'){ |
|
|
}else{ |
|
|
SetCell.itemExpr.focus(); |
|
|
//ie10,11 ȣȯ¼º ¼öÁ¤ |
|
|
var range; |
|
|
var txt=SetCell.itemExpr.value; |
|
|
try{ |
|
|
range = window.document.selection.createRange(); |
|
|
range.text=v1; |
|
|
if (v1.match('\\(\\)$')) { |
|
|
range.moveStart ('character', -1); |
|
|
range.moveEnd ('character', -1); |
|
|
range.select(); |
|
|
} else if (v1.match('\\(:\\)$')) { |
|
|
range.moveStart ('character', -2); |
|
|
range.moveEnd ('character', -2); |
|
|
range.select(); |
|
|
}else if(txt.substr(txt.length-2,2)==':)'){ |
|
|
range.moveStart ('character', 1); |
|
|
range.moveEnd ('character', 0); |
|
|
range.select(); |
|
|
} |
|
|
}catch(e){ |
|
|
range=SetCell.itemExpr.createTextRange(); |
|
|
var pos=SetCell.itemExpr.selectionStart; |
|
|
txt=txt.substring(0,pos)+v1+txt.substring(pos,txt.length); |
|
|
SetCell.itemExpr.value=txt; |
|
|
if (v1.match('\\(:\\)$')) { |
|
|
range.moveStart('character', SetCell.itemExpr.value.length-2); |
|
|
range.moveEnd('character',-2); |
|
|
range.select(); |
|
|
}else if(txt.substring(txt.length-2)==':)'&&txt.substring(txt.length-6)!='SUM(:)'){ |
|
|
range.moveStart('character', SetCell.itemExpr.value.length-1); |
|
|
range.moveEnd('character', -1); |
|
|
range.select(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
*/ |
|
|
function enter_catch(totForm, index){ |
|
|
if(event.keyCode==13){ |
|
|
setValue(totForm, index); |
|
|
SetWin.style.visibility='hidden'; |
|
|
totForm.reShowValue(index); |
|
|
} |
|
|
} |
|
|
|
|
|
String.prototype.trim = function() { |
|
|
return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); |
|
|
}; |
|
|
|
|
|
function compareColName(col1, col2) { |
|
|
col1 = col1.toUpperCase(); |
|
|
col2 = col2.toUpperCase(); |
|
|
if(col1.length != col2.length) |
|
|
return col2.length - col1.length; |
|
|
else { |
|
|
for(var x = 0; x < col1.length; x++) { |
|
|
if(col1.charCodeAt(x) == col2.charCodeAt(x)) |
|
|
continue; |
|
|
else |
|
|
return col2.charCodeAt(x) - col1.charCodeAt(x); |
|
|
} |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
|
|
|
function isContainedIn(cellName, cellRange) { |
|
|
var cellNameArray = cellRange[0].split(/\s*:\s*/g); |
|
|
var cellName1 = cellNameArray[0].toUpperCase(); |
|
|
var cellName2 = cellNameArray[1].toUpperCase(); |
|
|
|
|
|
var colName1 = cellName1.match(/[A-Z]+/g); |
|
|
var colName2 = cellName2.match(/[A-Z]+/g); |
|
|
var rowNum1 = cellName1.match(/\d+/g); |
|
|
var rowNum2 = cellName2.match(/\d+/g); |
|
|
|
|
|
var startColName, endColName, startRowNum, endRowNum; |
|
|
|
|
|
if( (compareColName(colName1[0], colName2[0]) < 0) || |
|
|
(compareColName(colName1[0], colName2[0]) == 0 && rowNum1[0] - rowNum2[0] < 0) |
|
|
) { |
|
|
startColName = colName1[0]; |
|
|
endColName = colName2[0]; |
|
|
startRowNum = rowNum1[0]; |
|
|
endRowNum = rowNum2[0]; |
|
|
} else /*if( (compareColName(colName1[0], colName2[0]) > 0) || |
|
|
(compareColName(colName1[0], colName2[0]) == 0 && rowNum1[0] - rowNum2[0] >= 0) |
|
|
)*/ { |
|
|
startColName = colName2[0]; |
|
|
endColName = colName1[0]; |
|
|
startRowNum = rowNum2[0]; |
|
|
endRowNum = rowNum1[0]; |
|
|
} |
|
|
|
|
|
var colNameTmp = cellName.toUpperCase().match(/[A-Z]+/g); |
|
|
var rowNumTmp = cellName.match(/\d+/g); |
|
|
var colName = colNameTmp[0]; |
|
|
var rowNum = rowNumTmp[0]; |
|
|
|
|
|
return compareColName(startColName, colName) <= 0 && compareColName(colName, endColName) <= 0 && startRowNum <= rowNum && rowNum <= endRowNum; |
|
|
} |
|
|
|
|
|
function getCalculationForm(str, rowNum, type){ |
|
|
//ÇÊ¿ä¾ø´Â EXPR ^ |
|
|
if(isSearch(str, "^")) return str; |
|
|
|
|
|
//"SUM", "(", ")", ":", ",", "+", "-", "*", "/" |
|
|
//SUM(B9:F99) |
|
|
var alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; |
|
|
var integer = '0123456789'; |
|
|
|
|
|
var charCount = str.length; |
|
|
var charList = new Array(charCount); |
|
|
var numList = new Array(charCount); |
|
|
|
|
|
var befoChar = ""; |
|
|
var currChar = ""; |
|
|
var afterChar = ""; |
|
|
|
|
|
if(charCount < 1) return str; |
|
|
|
|
|
//String array analysis |
|
|
//exprÀÇ item nameÀÇ number add |
|
|
var exprbuf = ""; |
|
|
var isItemNum = false; |
|
|
var tmpNum = ""; |
|
|
var sumNum = ""; |
|
|
|
|
|
for(var i=0; i < charCount; i++){ |
|
|
currChar = str.substring(i, i+1); |
|
|
|
|
|
if(isSearch(alphabet, currChar)){ //¹®ÀÚ À϶§~~~~ |
|
|
if(currChar == 's' || currChar == 'S'){ |
|
|
sumNum = 1; |
|
|
isItemNum = true; |
|
|
}else if(sumNum == 1 && i > 0 && (currChar == 'u' || currChar == 'U')){ |
|
|
sumNum = 2; |
|
|
isItemNum = true; |
|
|
}else if(sumNum == 2 && i > 1 && (currChar == 'm' || currChar == 'M')){ |
|
|
sumNum = 3; |
|
|
isItemNum = false; |
|
|
}else{ |
|
|
sumNum = 0; |
|
|
isItemNum = true; |
|
|
} |
|
|
exprbuf += currChar; |
|
|
}else if(isSearch(integer, currChar)){ //¼ýÀÚ À϶§~~~~ |
|
|
if(i > 0 && isSearch(alphabet, befoChar) && isItemNum == true){ //Item nameÀÇ Ã¹¹øÂ° ¼ýÀÚ¶ó¸é |
|
|
tmpNum = currChar; |
|
|
isItemNum = true; |
|
|
}else if(i > 0 && isSearch(integer, befoChar) && isItemNum == true){ //Item nameÀÇ µÎ¹øÂ° ÀÌ»óÀÇ ¼ýÀÚ¶ó¸é |
|
|
tmpNum += currChar; |
|
|
isItemNum = true; |
|
|
}else{ //³ª¸ÓÁö |
|
|
exprbuf += currChar; |
|
|
isItemNum = false; |
|
|
} |
|
|
|
|
|
afterChar = str.substring(i+1, i+2); |
|
|
if((i == (charCount-1) || !isSearch(integer, afterChar)) && isItemNum){ //Item nameÀÇ ¼ýÀÚ ³¡À̶ó¸é |
|
|
if(type == "add"){ //µ¿ÀûÇ¥¿¡¼ º¸°¡ÀÚ·á º¸±â½Ã º¸°íÇÑ Çà¿¡ µû¶ó ¼ö½ÄÀ» º¯°æÇØÁÜ |
|
|
exprbuf += (parseInt(tmpNum)+parseInt(rowNum)); |
|
|
isItemNum = false; |
|
|
}else if(type == "sub"){ //µÎ°³ÀÇ Ç¥¸¦ µî·ÏÇÒ¶§ Form¿¡ Àû¿ëµÇ´Â ¼ö½Ä»ç¿ë |
|
|
exprbuf += (parseInt(tmpNum)-parseInt(rowNum)); |
|
|
isItemNum = false; |
|
|
} |
|
|
} |
|
|
}else{ |
|
|
exprbuf += currChar; |
|
|
isItemNum = false;//¼ö½Ä À϶§~~~ |
|
|
} |
|
|
befoChar = currChar; |
|
|
} |
|
|
return exprbuf; |
|
|
} |
|
|
|
|
|
function isSearch(strs, str){ |
|
|
var count = strs.length; |
|
|
var strList = new Array(count); |
|
|
|
|
|
for(var i=0; i < count; i++){ |
|
|
if(strs.substring(i, i+1) == str) |
|
|
return true; |
|
|
} |
|
|
return false; |
|
|
}
|
|
|
|