You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

775 lines
26 KiB

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';\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
<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;
}