12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874 |
- /************************************************************************************************
- DATE : 2006-12-12
- WRITER : Comsquare
- DEFINITION : TrustForm4.0 공통 JavaScript ( CMC )
- *************************************************************************************************/
- /************************************************************************************************
- 함수명 : addComboItem ()
- 인자 :
- String comboID - 해당 콤보 아이디
- String label - 추가 할 아이템 Lavel
- String value - 추가 할 아이템 Value
- String [postion] - 추가 할 위치( "above" | "below" )
- 결과값 :
- 함수설명 : 콤보 아이템 추가 함수
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 08. 21
- ************************************************************************************************/
- function addComboItem( comboID, label, value, position ) {
- var comboObj = document.all.item(comboID);
- // Combo ItemSet 정보
- var comboItemNodeSet = comboObj.choices.itemset.attribute("nodeset");
- var comboLabelRef = comboObj.choices.itemset.label.attribute("ref");
- var comboValueRef = comboObj.choices.itemset.value.attribute("ref");
- var nodeNn = instance1.selectSingleNode(comboItemNodeSet);
- if (nodeNn == null) {
- model.makeNode(comboItemNodeSet);
- model.makeNode(comboItemNodeSet+"/"+comboLabelRef);
- model.makeNode(comboItemNodeSet+"/"+comboValueRef);
- position = "init";
- }
- // Item 노드 생성
- var itemNode = instance1.createNode("element", instance1.selectSingleNode(comboItemNodeSet).nodeName, "");
- var labelNode = instance1.createNode("element", comboLabelRef, "");
- var valueNode = instance1.createNode("element", comboValueRef, "");
- if( label == null || label == "" ) label = "- 전 체 -";
- labelNode.value = label;
- itemNode.appendChild(labelNode);
- if( value == null || value == "" ) value = "";
- valueNode.value = value;
- itemNode.appendChild(valueNode);
- if( position == null || position == "" )
- position = "above";
- var destNode = instance1.selectSingleNode(comboItemNodeSet);
- var pDestNode = destNode.parentNode;
- if( position == "above" ) {
- pDestNode.insertBefore(itemNode, destNode);
- } else if ( position == "init" ) {
- pDestNode.insertBefore(itemNode, destNode);
- pDestNode.removeChild(destNode);
- }
- else {
- pDestNode.appendChild(itemNode);
- }
- comboObj.refresh();
- }
- /************************************************************************************************
- 함수명 : addComboItemAll ()
- 인자 :
- String comboIDs - 해당 콤보 아이디 예)"combo1|combo2|combo3"
- String label - 추가 할 아이템 Label (default="- 전 체 - ");
- 결과값 :
- 함수설명 : 모든 콤보 아이템 추가 함수
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 08. 21
- ************************************************************************************************/
- function addComboItemAll( comboIDs, label ) {
- var comboIDArray = comboIDs.split("|");
- if(label == null || label == "" )
- label = "- 전 체 -";
- for( var i = 0; i < comboIDArray.length; i++ )
- addComboItem( comboIDArray[i], label, "");
- }
- /************************************************************************************************
- 함수명 : fileDownload ()
- 인자 :
- String filePath - 다운로드 파일 Path
- Boolean encodingURI - URI Encoding 설정(Default True)
- 결과값 :
- 함수설명 : filePath
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 03. 15
- ************************************************************************************************/
- function fileDownload( filePath, encode ) {
- if( encode == null )
- encode = true;
- if( encode )
- filePath = encodeURI(filePath);
- if(!body.isChild("_tmp_browserObj_forDown")) {
- document.body.createChild("xforms:browser", "id:_tmp_browserObj_forDown; visibility:hidden");
- }
- _tmp_browserObj_forDown.navigate(filePath);
- }
- /************************************************************************************************
- 함수명 : checkFileSize ()
- 인자 :
- Object uploadObj - 업로드 컴트롤 Object
- 결과값 : true or false
- 함수설명 : upload 컨트롤의 마지막 인덱스 파일의 크기를 비교한다.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 03. 15
- ************************************************************************************************/
- function checkFileSize( uploadObj ) {
- var fileCnt = uploadObj.getFileCount();
- var lastIndex = fileCnt - 1;
- var fileSize = uploadObj.getFileSize(lastIndex);
- var maxSize = uploadObj.attribute("filesize");
- /*
- var fileFullName = uploadObj.getFileName(lastIndex);
- var fileNameArray = fileFullName.split("\\");
- var fileName = fileNameArray[fileNameArray.length - 1];
- */
- //alert(fileName + " / " + fileSize);
- if ( fileSize <= maxSize )
- return true;
- else
- return false;
- }
- /************************************************************************************************
- 함수명 : checkFormUpdate ()
- 인자 :
- 결과값 : true or false
- 함수설명 : gvFormUpdateYN 전역 변수 return
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 04. 11
- ************************************************************************************************/
- function checkFormUpdate() {
- return gvFormUpdateYN;
- }
- /************************************************************************************************
- 함수명 : checkKeyColumn ()
- 인자 :
- String gridID - 그리드 아이디
- 결과값 : true or false
- 함수설명 : datagrid > col@_key="true"의 컬럼에서 추가된 로우의 key 값을 체크 한다.(조회 데이터 수정 불가)
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 04. 12
- ************************************************************************************************/
- function checkKeyColumn( gridID ) {
- var rowsArray = getUpdateRows( gridID, "insert" );
- var colsArray = getKeyCols( gridID, "_key" );
- var gridObj = document.controls.item(gridID);
- var i, j;
- for( i = 0; i < rowsArray.length; i++ ) {
- for( j = 0; j < colsArray.length; j++ ) {
- // alert(rowsArray[i] + " / " + colsArray[j]);
- if( gridObj.valueMatrix(rowsArray[i], colsArray[j]) == "" ) {
- messageBox(gridObj.valueMatrix(gridObj.fixedRows - 1, colsArray[j]) + "은(는)", "I003");
- gridObj.row = rowsArray[i];
- gridObj.col = colsArray[j];
- gridObj.editCell();
- return false;
- }
- }
- }
- return true;
- }
- /************************************************************************************************
- 함수명 : checkRequiredColumn ()
- 인자 :
- String gridID - 그리드 아이디
- 결과값 : true or false
- 함수설명 : datagrid > col@_required="true"의 컬럼에서 추가된 로우의 key 값을 체크 한다.(조회 데이터 수정 가능)
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 10. 12
- ************************************************************************************************/
- function checkRequiredColumn( gridID ) {
- var rowsArray = getUpdateRows( gridID, "insert" );
- rowsArray = getUpdateRows( gridID, "update", rowsArray );
- var colsArray = getKeyCols( gridID, "_required" );
- var gridObj = document.controls.item(gridID);
- var i, j;
- for( i = 0; i < rowsArray.length; i++ ) {
- for( j = 0; j < colsArray.length; j++ ) {
- // alert(rowsArray[i] + " / " + colsArray[j]);
- if( gridObj.valueMatrix(rowsArray[i], colsArray[j]) == "" ) {
- messageBox(gridObj.valueMatrix(gridObj.fixedRows - 1, colsArray[j]) + "은(는)", "I003");
- gridObj.row = rowsArray[i];
- gridObj.col = colsArray[j];
- gridObj.editCell();
- return false;
- }
- }
- }
- return true;
- }
- function getUpdateRows( gridID, status, rowsArray ) {
- var gridObj = document.controls.item(gridID);
- var sCol = gridObj.attribute("colsep");
- var sRow = gridObj.attribute("rowsep");
- var gridStatus = gridObj.getUpdateData(status);
- var rowStatusArray = gridStatus.split(sRow);
- var rowStatusCnt = rowStatusArray.length;
- var rowsArrayLen = 0;
- if( rowsArray == null ) {
- rowsArray = new Array();
- }
- else {
- rowsArrayLen = rowsArray.length;
- }
- for( var i = 0; i < rowStatusCnt - 2; i++ ) {
- rowsArray[i + rowsArrayLen] = rowStatusArray[i + 1].split(sCol)[1];
- }
- return rowsArray;
- }
- function getKeyCols( gridID, atttibutezName ) {
- var gridObj = document.controls.item(gridID);
- var gridCols = gridObj.cols;
- var rColsArray = new Array();
- var i, j = 0;
- for( i = 0; i < gridCols; i++) {
- if( gridObj.colAttribute(i, atttibutezName) == "true" ) {
- rColsArray[j++] = i;
- }
- }
- return rColsArray;
- }
- /************************************************************************************************
- 함수명 : copyNodeListType ()
- 인자 :
- String strDest - 목적 노드 경로
- String strSrc - 소스 노드 리스트 경로
- String [mode] - copy 방식( "replace" | "after" | "before" )
- Object [destModel] - 목적 노드 리스트 모델
- Object [srcModel] - 목적 노드 리스트 모델
- 결과값 :
- 함수설명 : 목적 노드에 소스 노드들을 mdoe방식에 따라 copy 함.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 05. 01
- ************************************************************************************************/
- function copyNodeListType(strDest, strSrc, mode, destModel, srcModel) {
- if( typeof(destModel) == "object" || typeof(destModel) == "undefined" ) {
- if( destModel == null ) {
- destModel = model;
- }
- }
- else {
- if( destModel == "" ) {
- destModel = model;
- }
- }
- var destNode = destModel.instance1.selectSingleNode(strDest);
- if( destNode == null )
- return;
- var destChildNodeList = destNode.childNodes;
- if( typeof(srcModel) == "object" || typeof(srcModel) == "undefined" ) {
- if( srcModel == null ) {
- srcModel = model;
- }
- }
- else {
- if( srcModel == "" ) {
- srcModel = model;
- }
- }
- var srcNodeList = srcModel.instance1.selectNodes(strSrc);
- var srcNode;
- if( srcNodeList.length == 0 )
- return;
- // mode = "replace" | "after" | null
- if( mode != "before" ) {
- if( mode == "replace" || mode == null ) {
- removeChildren(strDest, destModel)
- }
- while( srcNode = srcNodeList.nextNode() ) {
- // destNode.appendChild(srcNode.cloneNode(true));
- model.duplicate(destNode, srcNode);
- }
- }
- // before mode는 테스트 필요!!!
- else {
- /*
- var destFirstChildNode = destNode.firstChild;
- while( srcNode = srcNodeList.nextNode() ) {
- destNode.insertBefore(srcNode.cloneNode(true), destFirstChildNode);
- }
- */
- for( var i = srcNodeList.length - 1; i >= 0; i-- ) {
- destNode = destModel.instance1.selectSingleNode(strDest);
- srcNode = srcNodeList.item(i);
- model.duplicate(destNode, srcNode, "*[1]");
- }
- }
- }
- /************************************************************************************************
- 함수명 : copyNodesetType ()
- 인자 :
- String strDest - 목적 노드 리스트 경로
- String strSrc - 소스 노드 리스트 경로
- String [mode] - copy 방식( "replace" | "after" | "before" )
- Object [destModel] - 목적 노드 리스트 모델
- Object [srcModel] - 목적 노드 리스트 모델
- 결과값 :
- 함수설명 : 목적 노드셋에 소스 하위 노드셋들을 mdoe방식에 따라 copy 함.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 05. 02
- ************************************************************************************************/
- function copyNodesetType(strDest, strSrc, mode, destModel, srcModel) {
- if( typeof(destModel) == "object" || typeof(destModel) == "undefined" ) {
- if( destModel == null ) {
- destModel = model;
- }
- }
- else {
- if( destModel == "" ) {
- destModel = model;
- }
- }
- if( typeof(srcModel) == "object" || typeof(srcModel) == "undefined" ) {
- if( srcModel == null ) {
- srcModel = model;
- }
- }
- else {
- if( srcModel == "" ) {
- srcModel = model;
- }
- }
- var destNodeList = destModel.instance1.selectNodes(strDest);
- if( destNodeList == null || destNodeList.length == 0 ) {
- return;
- }
- var pDestNode = destNodeList(0).parentNode;
- var destLastNodesetName = destNodeList(0).nodeName;
- var srcNodeList = srcModel.instance1.selectNodes(strSrc);
- if( srcNodeList == null || srcNodeList.length == 0 )
- return;
- if( mode != "before" ) {
- if( mode == "replace" || mode == null ) {
- destModel.removeNodeset(strDest);
- }
- var srcNode;
- var tmpSrcNode;
- while( srcNode = srcNodeList.nextNode() ) {
- tmpSrcNode = srcNode.cloneNode(true);
- tmpSrcNode.nodeName = destLastNodesetName;
- // pDestNode.appendChild(tmpSrcNode);
- model.duplicate(pDestNode, tmpSrcNode);
- }
- }
- else {
- /*
- var destFirstChildNode = destNodeList.firstChild;
- var srcNode;
- var tmpSrcNode;
- while( srcNode = srcNodeList.nextNode() ) {
- tmpSrcNode = srcNode.cloneNode(true);
- tmpSrcNode.nodeName = destLastNodesetName;
- pDestNode.insertBefore(tmpSrcNode, destFirstChildNode);
- }
- */
- var tmpSrcNode;
- for( var i = srcNodeList.length - 1; i >= 0; i-- ) {
- pDestNode = destModel.instance1.selectSingleNode(strDest).parentNode;
- tmpSrcNode = srcNodeList.item(i).cloneNode(true);
- tmpSrcNode.nodeName = destLastNodesetName;
- model.duplicate(pDestNode, tmpSrcNode, "*[1]");
- }
- }
- }
- /************************************************************************************************
- 함수명 : copyNodeType ()
- 인자 :
- String strDest - 목적 노드 경로
- String strSrc - 소스 노드 경로
- String [mode] - copy 방식( "replace" | "after" | "before" )
- Object [destModel] - 목적 노드 모델
- Object [srcModel] - 목적 노드 모델
- 결과값 :
- 함수설명 : 목적 노드에 소스 하위 노드들을 mdoe방식에 따라 copy 함.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 03. 21
- 수 정 일 : 2007. 04. 10 ( - 함수명 변경 : copyNodeset() -> copyNodeType() )
- ************************************************************************************************/
- function copyNodeType(strDest, strSrc, mode, destModel, srcModel) {
- if( typeof(destModel) == "object" || typeof(destModel) == "undefined" ) {
- if( destModel == null ) {
- destModel = model;
- }
- }
- else {
- if( destModel == "" ) {
- destModel = model;
- }
- }
- var destNode = destModel.instance1.selectSingleNode(strDest);
- if( destNode == null )
- return;
- var destChildNodeList = destNode.childNodes;
- if( typeof(srcModel) == "object" || typeof(srcModel) == "undefined" ) {
- if( srcModel == null ) {
- srcModel = model;
- }
- }
- else {
- if( srcModel == "" ) {
- srcModel = model;
- }
- }
- var srcNode = srcModel.instance1.selectSingleNode(strSrc);
- if( srcNode == null )
- return;
- var cSrcNode = srcNode.cloneNode(true);
- var cSrcChildNodeList = cSrcNode.childNodes;
- var cSrcChildNode;
- if( cSrcChildNodeList.length == 0 )
- return;
- // mode = "replace" | "after" | null
- if( mode != "before" ) {
- if( mode == "replace" || mode == null ) {
- removeChildren(strDest, destModel)
- }
- while( cSrcChildNode = cSrcChildNodeList.nextNode() ) {
- // destNode.appendChild(cSrcChildNode);
- model.duplicate(destNode, cSrcChildNode);
- }
- }
- // before mode는 테스트 필요!!!
- else {
- /*
- var destFirstChildNode = destNode.firstChild;
- while( cSrcChildNode = cSrcChildNodeList.nextNode() ) {
- destNode.insertBefore(cSrcChildNode, destFirstChildNode);
- }
- */
- for( var i = cSrcChildNodeList.length - 1; i >= 0; i-- ) {
- destNode = destModel.instance1.selectSingleNode(strDest);
- cSrcChildNode = cSrcChildNodeList.item(i);
- model.duplicate(destNode, cSrcChildNode, "*[1]");
- }
- }
- }
- /************************************************************************************************
- 함수명 : copyNodeWithPostfix ()
- 인자 :
- String strDest - 목적 노드 경로
- String strSrc - 소스 노드 경로
- String postfix - 추가 할 노드 네임
- Object [destModel] - 목적 노드 모델
- Object [srcModel] - 목적 노드 모델
- 결과값 :
- 함수설명 : 목적 노드의 자식 노드를 삭제후 소스 노드의 자식 노드에 postfix의 노드네임을 추가 하여 copy
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 03. 21
- ************************************************************************************************/
- function copyNodeWithPostfix(strDest, strSrc, postfix, destModel, srcModel) {
- removeChildren(strDest, destModel);
- var modelObj;
- if( srcModel == null ) {
- modelObj = model;
- }
- else
- modelObj = srcModel;
- var srcNode = modelObj.instance1.selectSingleNode(strSrc);
- var cSrcNode = srcNode.cloneNode(true);
- var cSrcChildNodeList = cSrcNode.childNodes;
- var cSrcChildNode;
- var destNode;
- if( destModel == null )
- destNode = instance1.selectSingleNode(strDest);
- else
- destNode = destModel.instance1.selectSingleNode(strDest);
- while( cSrcChildNode = cSrcChildNodeList.nextNode() ) {
- cSrcChildNode.nodeName = cSrcChildNode.nodeName + postfix;
- // destNode.appendChild(cSrcChildNode);
- model.duplicate(destNode, cSrcChildNode);
- }
- }
- /************************************************************************************************
- 함수명 : setCSVToNode ()
- 인자 :
- String destRef - 목적 노드 경로
- String CSV - CSV
- * getNodeListCSV() 함수 return value
- String [nodeSetName] - 노드셋 네임
- 결과값 :
- 함수설명 : 목적노드(destRef)에 CSV를 makeValue 해준다.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 04. 13
- ************************************************************************************************/
- function setCSVToNode(destRef, CSV, nodeSetName) {
- var sColSep = "▦";
- var sRowSep = "▩";
- // 헤더값, 즉 컬럼명을 얻어온다
- var nodeNameArray = CSV.split(sRowSep)[0].split(sColSep);
- // 컬럼의 개수를 얻어온다
- var nodeNameArrayCnt = nodeNameArray.length;
- // tempDestNode
- if( nodeSetName == null || nodeSetName == "")
- nodeSetName = "list";
- // nodeSetName라는 이름의 element를 생성한다
- var tmpDestNode = instance1.createElement(nodeSetName);
- var tmpDestChildNode;
- var i, j;
- for( i = 0; i < nodeNameArrayCnt; i++ ) {
- // nodeNameArray[i]의 이름으로 element를 생성한다(즉 컬럼명 하나하나로 element를 생성한다)
- tmpDestChildNode = instance1.createElement(nodeNameArray[i]);
- // tmpDestNode에 tmpDestChildNode의 값을 복사한다
- model.duplicate(tmpDestNode, tmpDestChildNode);
- }
- // 헤더값, 즉 컬럼명과 선택한 데이터들을 로우(행)단위로 잘라서 얻어온다
- var CSVArray = CSV.split(sRowSep);
- // CSVArray에서 얻어온 로우(행)의 갯수를 가지고 온다(데이터가 2개이면 컬럼명 까지 해서 총 3을 얻어온다)
- var CSVArrayCnt = CSVArray.length - 1;
- // destRef노드를 반환한다
- var srcNode = instance1.selectSingleNode(destRef);
- var nodeValueArray;
- // 시작점을 1로 하는 이유는 컬럼명은 필요 없기 때문에 1부터 해서 데이터만 뽑아오기 위해서이다
- for( i = 1; i < CSVArrayCnt; i++ ) {
- // 첫번째 로우(행)의 데이터를 가지고 온다
- nodeValueArray = CSVArray[i];
- for ( j = 0; j < nodeNameArrayCnt; j++ ) {
- // 각 로우(행)의 데이터를 컬럼 단위로 하나하나 가지고 와서 tmpDestNode의 자식노드에 하나하나 넣어준다
- tmpDestNode.childNodes.item(j).text = nodeValueArray.split(sColSep)[j];
- }
- model.duplicate(srcNode, tmpDestNode);
- }
- }
- /************************************************************************************************
- 함수명 : deleteSelectedRows ()
- 인자 :
- Object grd - 그리드 객체
- Boolean markonly - true이면 지우지 않고 상태만 delete 상태로 변경
- 결과값 :
- 함수설명 : 선택된 행들을 모두 지우거나 deleted 상태로 마크
- ************************************************************************************************
- 작 성 자 : 김 형도
- 작 성 일 : 2007. 02. 21
- ************************************************************************************************/
- function deleteSelectedRows(grd,markonly) {
- var rowIdx;
- if (grd.selectedRows > 0) {
- var selectedRows = Array(grd.selectedRows);
- for(i=0;i<grd.selectedRows;i++) {
- selectedRows[i] = grd.selectedRow(i);
- }
- if (markonly != null && markonly == true) { // mark delete
- for(i=selectedRows.length-1;i>=0;i--) {
- rowIdx = selectedRows[i];
- if(grd.rowstatus(rowIdx) == 1 ) { // just inserted row
- grd.deleterow(rowIdx,false);
- } else {
- grd.addStatus(rowIdx,"delete");
- }
- }
- } else {
- for(i=selectedRows.length-1;i>=0;i--) {
- rowIdx = selectedRows[i];
- grd.deleterow(rowIdx,false);
- }
- }
- }
- }
- /************************************************************************************************
- 함수명 : getGridUpdateData ()
- 인자 :
- Object gridID - 그리드 아이디
- 결과값 : String updataData or ""
- 함수설명 : 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 02. 20
- ************************************************************************************************/
- function getGridUpdateData(gridObj, statusType) {
- var updataData = gridObj.getUpdateData(statusType);
- var rowsep = gridObj.attribute("rowsep");
- var split = updataData.split(rowsep);
- if(split.length > 2){
- return updataData;
- }
- else
- return "";
- }
- /************************************************************************************************
- 함수명 : getImageSize ()
- 인자 :
- String fileName - 이미지 파일명
- 결과값 : String width^height
- 예) 20^20)
- 함수설명 : 이미지 Width, Height 반환 함수
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 01. 31
- ************************************************************************************************/
- function getImageSize(fileName) {
- var newCtrObj = null;
- if(document.controls("_image_forSize") == null) {
- newCtrObj = body.createChild("xforms:img", "id:_image_forSize; src:" + fileName + "; left:0px; top:0px; width:1px; height:1px;");
- newCtrObj.visible = false;
- }
- else{
- //_image_forSize.visible = true;
- newCtrObj = document.controls("_image_forSize");
- newCtrObj.src = fileName;
- }
- newCtrObj.attribute("width") = null;
- newCtrObj.attribute("height") = null;
- newCtrObj.visible = false;
- var imgW = newCtrObj.attribute("width").replace("px", "");
- var imgH = newCtrObj.attribute("height").replace("px", "");
- body.removeChild("_image_forSize"); //스크롤이 생기는걸 막기위해서 지워줌.
- return imgW + "^" + imgH;
- }
- /************************************************************************************************
- 함수명 : getNodeListCSV ()
- 인자 :
- Object nodeList - 노드 리스트
- 결과값 : String rCSV
- 예) a▦b▦c▩true▦1▦1▩true▦3▦3▩true▦5▦5▩
- 함수설명 : 노드리스트를 CSV로 반환한다.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 04. 13
- ************************************************************************************************/
- function getNodeListCSV(nodeList) {
- if( nodeList.length == 0 )
- return;
- var sColSep = "▦";
- var sRowSep = "▩";
- var rCSV = "";
- var childNodeList = nodeList.item(0).childNodes;
- var childNodeCnt = childNodeList.length;
- if( childNodeCnt == 0 )
- return;
- var i, j;
- for( i = 0; i < childNodeCnt - 1; i++) {
- rCSV += childNodeList.item(i).nodeName + sColSep;
- }
- rCSV += childNodeList.item(i).nodeName + sRowSep;
- var node;
- while( node = nodeList.nextNode() ) {
- childNodeList = node.childNodes;
- for( i = 0; i < childNodeCnt - 1; i++) {
- rCSV += childNodeList.item(i).text + sColSep;
- }
- rCSV += childNodeList.item(i).text + sRowSep;
- }
- return rCSV;
- }
- /************************************************************************************************
- 함수명 : getNodesetCount ()
- 인자 :
- String nodeSet - xPath
- 결과값 : Integer Count
- 함수설명 : 노드셋의 갯수 반환
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 03. 12
- ************************************************************************************************/
- function getNodesetCount( nodeSet ) {
- var xPathFunction = "count(" + nodeSet + ")";
- return model.getXPathValue(xPathFunction);
- }
- /************************************************************************************************
- 함수명 : isDataCell ()
- 인자 :
- 결과값 : Boolean true or false
- 함수설명 : datagrid click or dbclick 시점에 현재 click target이 data 영역인지 check
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 04. 12
- ************************************************************************************************/
- function isDataCell() {
- var gridObj = event.ptarget.parent;
- if( gridObj.isCell(event.target) && gridObj.row >= gridObj.fixedRows && gridObj.col >= gridObj.fixedCols) {
- return true;
- }
- else
- return false;
- }
- /************************************************************************************************
- 함수명 : isRequiredControls ()
- 인자 :
- String controlID_1 - 컨트롤 아이디
- String [controlID_2] - 컨트롤 아이디
- ...
- 결과값 : Boolean true or false
- 함수설명 : 입력 컨트롤들의 필수값 체크
- * 사용예) isRequiredControls("ipt_01", "sct_02", "tar_03");
- * 주의) 입력 컨트롤이 아이디가 "ipt_01"일 경우 messageBox pMessage는 "cap_01" 캡션 컨트롤을 참조 함.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 02. 15
- ************************************************************************************************/
- function isRequiredControls() {
- var controlCnt = isRequiredControls.arguments.length;
- var controlID, captionID;
- var controlObj, captionObj;
- for(var i=0; i<controlCnt ;i++) {
- controlID = isRequiredControls.arguments[i];
- controlObj = document.controls(controlID);
- if(controlObj != null) { // 인풋 컨트롤 유무 여부
- if(controlObj.value == "") {
- captionID = controlID.replace(controlID.substr(0, 3), "cap");
- captionObj = document.controls(captionID);
- if(captionObj != null) { // 캡션 컨트롤 유무 여부
- var captionLabel = captionObj.label;
- if(captionLabel.indexOf(":") == captionLabel.length - 1) {
- captionLabel = captionLabel.substr(0, captionLabel.length - 1);
- }
- messageBox(captionLabel, "I003");
- }
- else
- messageBox("", "I003");
- model.setFocus(controlID);
- return false;
- }
- }
- }
- return true;
- }
- /************************************************************************************************
- 함수명 : isRequiredGroup ()
- 인자 :
- String groupID - 그룹 아이디
- 결과값 :
- 함수설명 : 그룹 차일드 입력 컨트롤들 중 @required="true" 필수값 체크
- * 주의) 입력 컨트롤 @required="true" 설정, 컨트롤이 아이디가 "ipt_01"일 경우 messageBox pMessage는 "cap_01" 캡션 컨트롤을 참조 함.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 02. 06
- ************************************************************************************************/
- function isRequiredGroup(groupID){
- var groupObj = document.controls(groupID);
- var childID, captionID;
- var childObj, captionObj;
- for(var i=0; i<groupObj.children.length; i++) {
- childObj = groupObj.children.item(i)
- if(childObj.elementName == "xforms:input" || childObj.elementName == "xforms:secret" || childObj.elementName == "xforms:textarea" || childObj.elementName == "xforms:select" || childObj.elementName == "xforms:select1") {
- if(childObj.attribute("_required") == "true") {
- if(childObj.value == "") {
- childID = childObj.attribute("id");
- captionID = childID.replace(childID.substr(0, 3), "cap");
- captionObj = document.controls(captionID);
- if(captionObj != null) { // 캡션 컨트롤 유무 여부
- var captionLabel = captionObj.label;
- if(captionLabel.indexOf(":") == captionLabel.length - 1) {
- captionLabel = captionLabel.substr(0, captionLabel.length - 1);
- }
- messageBox(captionLabel, "I003");
- }
- else
- messageBox("", "I003");
- model.setFocus(childID);
- return false;
- }
- }
- }
- }
- return true;
- }
- /************************************************************************************************
- 함수명 : isXPathTextNull ()
- 인자 :
- String xPath - XPath
- 결과값 : true or false
- 함수설명 : XPath의 Text(Value)값이 ""인지 체크한다.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 02. 06
- ************************************************************************************************/
- function isXPathTextNull(xPath) {
- var node = instance1.selectSingleNode(xPath);
- if( node != null ) {
- if( node.text == "" ) {
- return true;
- }
- else
- return false;
- }
- else
- return false;
- }
- /************************************************************************************************
- 함수명 : inputEnterKey ()
- 인자 :
- String controlID - 컨트롤 아이디
- String dispatchEvent - 컨트롤 Dispatch 이벤트 명
- String mask - 제거할 마스크 문자
- 결과값 :
- 함수설명 : 인풋에 Enter Key 입력시 controlID에 Dispatch 이벤트 호출
- * 사용예) inputEnterKey("button1", "DOMActivate");
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 02. 09
- ************************************************************************************************/
- function inputEnterKey( controlID, dispatchEvent, mask ) {
- if(event.keyCode == "13") {
- // model.setFocus(controlID);
- setInputNodeCurText(mask); // 현재 인풋값 노드 반영
- var controlObj = document.controls(controlID);
- controlObj.dispatch(dispatchEvent);
- }
- }
- /************************************************************************************************
- 함수명 : openImageFileDialog ()
- 인자 :
- Integer maxBytes - 이미지 파일 제한 싸이즈(Byte)
- 결과값 : file Path or ""
- 함수설명 : 이미지 파일 선택 다이알로그를 띄운다. 선택한 파일의 크기를 제한하고 싶으면 최대치 byte를 인자로 준다.
- 선택한 파일 경로를 반환한다. 취소하였거나 파일크기가 최대치를 초과했을 경우 ""를 반환한다.
- ************************************************************************************************
- 작 성 자 : 김 형도
- 작 성 일 : 2007. 02. 23
- ************************************************************************************************/
- function openImageFileDialog(maxBytes) {
- var file = window.fileDialog("open","","false","","","All Files (*.*)|*.*|JPEG Files(*.jpg)|*.jpg|GIF Files(*.gif)|*.gif|BMP Files(*.bmp)|*.bmp");
- if (file != "" && maxBytes != null) { // 파일 크기 확인
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var f = fso.GetFile(file);
- if (f.size > maxBytes) {
- messageBox("파일 크기가 최대치("+(maxBytes/1024)+"K)를","E003");
- return "";
- }
- }
- return file;
- }
- /************************************************************************************************
- 함수명 : removeChildren ()
- 인자 :
- String destNodePath - 목적 노드 경로
- Object [destModel] - 목적 노드 모델
- 결과값 :
- 함수설명 : 경로의 노드를 삭제 후 동일 노드를 생성 한다.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 03. 21
- ************************************************************************************************/
- function removeChildren( destNodePath, destModel ) {
- var modelObj;
- if( destModel == null ) {
- modelObj = model;
- }
- else
- modelObj = destModel;
- // 1
- /*
- modelObj.removenode(xPath);
- modelObj.makeNode(xPath);
- */
- // 2
- var node = modelObj.instance1.selectSingleNode(destNodePath);
- var childNodeList = node.childNodes;
- var childNode;
- while( childNode = childNodeList.nextNode() ) {
- node.removeChild( childNode );
- }
- }
- /************************************************************************************************
- 함수명 : removeMask ()
- 인자 :
- String mask - 제거할 마스크 문자
- 결과값 :
- 함수설명 : 스트링 객체의 해당 마스크 문자를 제거후 반환 한다.
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 05. 31
- ************************************************************************************************/
- String.prototype.removeMask = removeMask;
- function removeMask( mask ) {
- var tmp_this = this;
- while( tmp_this.indexOf(mask) > -1 ) {
- tmp_this = tmp_this.replace(mask, "");
- }
- return tmp_this;
- }
- /************************************************************************************************
- 함수명 : setFormUpdate ()
- 인자 :
- 결과값 :
- 함수설명 : gvFormUpdateYN 전역 변수 true 설정
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 04. 01
- ************************************************************************************************/
- function setFormUpdate() {
- gvFormUpdateYN = true;
- }
- /************************************************************************************************
- 함수명 : setGridColorPicker ()
- 인자 :
- String gridID - 그리드 아이디
- String xPath - 컬러 상태를 저장항 노드(디폴트로 그리드 노드셋 형제노드(cellState, rowStaye)에 저장됨)
- 결과값 :
- 함수설명 : 그리드의 Cell 또는 Row의 BackGround-Color 설정 Iviewer 생성 함수
- * xforms-ready :: setGridColorPicker();
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 01. 25
- ************************************************************************************************/
- /************************************************************************************************
- 함수명 : setImageRefInstance ()
- 인자 :
- String xPath - 노드 XPath
- 결과값 :
- 함수설명 : 이미지 컨트롤이 참조하는 ref 인스턴스 노드(xpath)의 type 속성을 "xsd:base64Binary"로 설정한다.
- ************************************************************************************************
- 작 성 자 : 김 형도
- 작 성 일 : 2007. 02. 23
- ************************************************************************************************/
- function setImageRefInstance(xpath) {
- var node = instance1.selectSingleNode(xpath);
- if( node == null )
- return;
- node.setattribute("type","xsd:base64Binary");
- }
- /************************************************************************************************
- 함수명 : setInputNodeCurText ()
- 인자 :
- String mask - 제거할 마스크 문자
- 결과값 :
- 함수설명 : 인풋에 ref 노드에 현재 label setValue
- * 참고) 인풋 컨트롤은 포커스아웃 시점에 노드에 값이 반영됨
- * 주의) ev:event="onkeyup"에 적용
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 02. 09
- ************************************************************************************************/
- function setInputNodeCurText( mask ) {
- var inputID = event.target;
- var inputObj = document.controls(inputID);
- var inputRef = inputObj.attribute("ref");
- if( mask == null )
- model.setValue(inputRef, inputObj.currentText);
- else
- model.setValue(inputRef, inputObj.currentText.removeMask(mask));
- inputObj.refresh();
- setFormUpdate();
- }
- /************************************************************************************************
- 함수명 : setCellStyle ()
- 인자 :
- String gridID - 그리드 아이디
- String styleFlag - 컬러 인덱스
- String data - 데이터 값
- Srting colRef - 비교할 컬럼 Ref
- String [control] - 조건 smaller | smallerThen | equal | biggerThen | bigger
- 결과값 :
- 함수설명 : 그리드 특정 컬럼값을 비교하여 Cell의 BackGround-Corol 변경
- * 사용예) setCellStyle("datagrid1", "1", "1", "b", "bigger");
- ************************************************************************************************
- 작 성 자 : 어 승옥
- 작 성 일 : 2007. 07. 28
- ************************************************************************************************/
- function setCellStyle( gridID , styleFlag , data , colRef , control ) {
- var style = new Array("#fcd2c1" , "#ffe79d" , "#f3e1bf" , "#7BE6B7" , "#b9e5fb" , "#f7a08b" , "#fec34d" , "#dec6a4" , "#c8e67b" , "#43c8f5", "#99cf16", "#e5f3c2" );
- var styleFlags = styleFlag.split("^");
- var datas = data.split("^");
- if( control == null || control == "" )
- control = "equal";
- var controls = control.split("^");
- gridObj = document.all(gridID);
- gridObj.backcoloralternate = "transparent";
- for( var j = 0 ; j < datas.length ; j++ ) {
- var dataValue = datas[j];
- var styleValue = style[styleFlags[j]];
- for( var i = gridObj.fixedRows ; i < gridObj.Rows ; i++ ) {
- if(controls[j] == null)
- controls[j] = "equal";
- switch( controls[j] ) {
- case "small":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) < dataValue ) {
- gridObj.cellStyle("background-color", i, gridObj.colRef(colRef)) = styleValue;
- }
- break;
- case "smallThen":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) <= dataValue ) {
- gridObj.cellStyle("background-color", i, gridObj.colRef(colRef)) = styleValue;
- }
- break;
- case "bigger":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) > dataValue ) {
- gridObj.cellStyle("background-color", i, gridObj.colRef(colRef)) = styleValue;
- }
- break;
- case "biggerThen":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) >= dataValue ) {
- gridObj.cellStyle("background-color", i, gridObj.colRef(colRef)) = styleValue;
- }
- break;
- case "notEqual":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) != dataValue ) {
- gridObj.cellStyle("background-color", i, gridObj.colRef(colRef)) = styleValue;
- }
- break;
- case "equal":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) == dataValue ) {
- gridObj.cellStyle("background-color", i, gridObj.colRef(colRef)) = styleValue;
- }
- break;
- }
- }
- }
- }
- /************************************************************************************************
- 함수명 : setRowStyle ()
- 인자 :
- String gridID - 그리드 아이디
- String styleFlag - 컬러 인덱스
- String data - 데이터 값
- Srting colRef - 비교할 컬럼 Ref
- String [control] - 조건 smaller | smallerThen | equal | biggerThen | bigger
- 결과값 :
- 함수설명 : 그리드 특정 컬럼값을 비교하여 로우 백컬러 변경
- * 사용예) setRowStyle("datagrid1", "1", "1", "b", "bigger");
- ************************************************************************************************
- 작 성 자 : 어 승옥
- 작 성 일 : 2006. 12. 01
- ************************************************************************************************/
- function setRowStyle( gridID , styleFlag , data , colRef , control ) {
- var style = new Array("#fcd2c1" , "#ffe79d" , "#f3e1bf" , "#7BE6B7" , "#b9e5fb" , "#f7a08b" , "#fec34d" , "#dec6a4" , "#c8e67b" , "#43c8f5", "#99cf16", "#e5f3c2" ,"#fd97b7", "#99ccff", "#ffff99", "#ccffcc");
- var styleFlags = styleFlag.split("^");
- var datas = data.split("^");
- if( control == null || control == "" )
- control = "equal";
- var controls = control.split("^");
- gridObj = document.all(gridID);
- gridObj.backcoloralternate = "transparent";
- for( var j = 0 ; j < datas.length ; j++ ) {
- var dataValue = datas[j];
- var styleValue = style[styleFlags[j]];
- for( var i = gridObj.fixedRows ; i < gridObj.Rows ; i++ ) {
- if(controls[j] == null)
- controls[j] = "equal";
- switch( controls[j] ) {
- case "small":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) < dataValue ) {
- gridObj.rowstyle( i , "data" , "background-color" ) = styleValue;
- }
- break;
- case "smallThen":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) <= dataValue ) {
- gridObj.rowstyle( i , "data" , "background-color" ) = styleValue;
- }
- break;
- case "bigger":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) > dataValue ) {
- gridObj.rowstyle( i , "data" , "background-color" ) = styleValue;
- }
- break;
- case "biggerThen":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) >= dataValue ) {
- gridObj.rowstyle( i , "data" , "background-color" ) = styleValue;
- }
- break;
- case "notEqual":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) != dataValue ) {
- gridObj.rowstyle( i , "data" , "background-color" ) = styleValue;
- }
- break;
- case "equal":
- if( gridObj.valueMatrix(i , gridObj.colRef(colRef)) == dataValue ) {
- gridObj.rowstyle( i , "data" , "background-color" ) = styleValue;
- }
- break;
- }
- }
- }
- }
- /************************************************************************************************
- 함수명 : initGridStyle ()
- 인자 :
- Object gridObj - 그리드 오브텍트
- 결과값 :
- 함수설명 : 그리드의 cell, row 스타일 초기화
- ************************************************************************************************
- 작 성 자 : 김선희
- 작 성 일 : 2007. 10. 15
- ************************************************************************************************/
- function initGridStyle(gridID){
- gridObj = document.all(gridID);
- gridObj.rebuildStyle();
- gridObj.backcoloralternate = "#f4f4f4";
- }
- /************************************************************************************************
- 함수명 : setTree ()
- 인자 :
- Object gridObj - 그리드 오브텍트
- Integer levelcol - Depth 컬럼 위치
- Integer targetcol - 아웃라인 생성 컬럼 위치
- Boolean collapsed - Expand 설정
- Integer outlinebar - 아웃라인 형태 (0:트리구조로 보여지지 않음-일반컬럼)
- (1:트리를 연결하는 선보이지 않음/박스보임)
- (2:기본값-트리를 연결하는 선보임/박스보임)
- (3:트리를 연결하는 선보이지 않음/하위노드가 없으면 박스 보이지 않)
- (4:트리를 연결하는 선보임/하위노드가 없으면 박스 보이지 않음)
- (5:트리를 연결하는 선보이지 않음/박스보이지 않음)
- 결과값 :
- 함수설명 : 아웃라인 옵션 추가 - 2008.04.25 by hoya
- ************************************************************************************************
- 작 성 자 : 어 승옥
- 작 성 일 : 2006. 12. 01
- ************************************************************************************************/
- function setTree( gridObj, levelcol, targetcol, collapsed, outlinebar ) {
- // 그리드 아웃라이바 초기화
- //gridObj.outlinebar=0;
- //tree 및 레벨설정
- for(var i = gridObj.fixedRows; i < gridObj.rows; i++)
- {
- //gridObj.issubtotal(i) = true;
- try {
- gridObj.outlinelevel(i)=gridObj.valuematrix(i, levelcol); //인스턴스 levl 값임
- } catch(e) {
-
- }
- }
- // tree 대상 컬럼 및 형태 설정
- gridObj.outlinecol=targetcol; //연결선이 표현되는 컬럼
- if (outlinebar == "" || outlinebar == null) {
- gridObj.outlinebar = 2;
- } else {
- gridObj.outlinebar=outlinebar; //연결선 형태 설정 (+ , - , 사각형 안보이게 하려면 0 으로 세팅)
- }
- gridObj.treecolor="#948777"
- // 자식 트리 접기
- if(collapsed != null) {
- setCollapsed(gridObj, collapsed);
- }
- }
- /************************************************************************************************
- 함수명 : setCollapsed ()
- 인자 :
- Object gridObj - 그리드 오브텍트
- Boolean collapsed - Expand 설정
- 결과값 :
- 함수설명 :
- ************************************************************************************************
- 작 성 자 : 김 기용
- 작 성 일 : 2007. 07. 24
- ************************************************************************************************/
- function setCollapsed( gridObj, collapsed ) {
- for(var i = gridObj.fixedrows; i <gridObj.rows; i++)
- {
- gridObj.iscollapsed(i)=collapsed; //자식 트리 접기
- }
- }
- /**
- * @desc : nodelist sort
- * @return :
- */
- // param1 : 노드리스트 XPath
- // param2 : 기준 컬럼 Ref
- // [param3]: 오른차순 내림차순 mode
- // 예) sortNodeList("/root/main/grid01/row", "a", "asc");
- function sortNodeList( nodeset, trgRef, mode ) {
- var nodesetCnt = model.getXPathValue("count(" + nodeset + ")");
- if( nodesetCnt == 0 )
- return;
- var tmpValue_01, tmpValue_02;
- var tmpIndex;
- var i, j;
- for( i = 1; i <= nodesetCnt; i++ ) {
- tmpIndex = i;
- for( j = i + 1; j <= nodesetCnt; j++ ) {
- tmpValue_01 = model.getValue(nodeset + "[" + i + "]/" + trgRef);
- tmpValue_02 = model.getValue(nodeset + "[" + j + "]/" + trgRef);
- switch(mode) {
- case "desc":
- if( tmpValue_01 < tmpValue_02 ) {
- tmpIndex = j;
- }
- break;
- default :
- if( tmpValue_01 > tmpValue_02 ) {
- tmpIndex = j;
- }
- break;
- }
- if( i != tmpIndex ) {
- model.duplicate(instance1.selectSingleNode(nodeset).parentNode, nodeset + "[" + tmpIndex + "]", "*[" + i + "]");
- model.removenode(nodeset + "[" + ( tmpIndex + 1 ) + "]");
- tmpIndex = i;
- }
- }
- }
- }
- //===============================================================================================
- // 전역 변수
- //===============================================================================================
- var gvFormUpdateYN = false; // xforms_value_changed 관련 boolen 변수
- //===============================================================================================
- // onaftersort
- //===============================================================================================
- function onaftersort() {
- var gridObj = document.controls.item(event.target);
- var gridSelMode = gridObj.selectionMode;
- var smallistNum, tempNum;
- var i;
- if( gridSelMode != "free" && gridSelMode != "bycol" ) {
- // sorting selectedRow 기능개선후 적용
- gridObj.topRow = gridObj.selectedRow(0);
- // 임시
- /*
- smallistNum = gridObj.selectedRow(0);
- for( i = 1; i < gridObj.selectedRows; i++ ) {
- tempNum = gridObj.selectedRow(i);
- if( smallistNum > tempNum )
- smallistNum = tempNum;
- }
- gridObj.topRow = smallistNum + gridObj.fixedRows - 1;
- */
- }
- else {
- // sorting selecteCells 기능개선후 적용
- if(gridObj.selectedCells.length > 0) {
- gridObj.topRow = gridObj.selectedCells.item(0).row;
- }
- // 임시
- //smallistNum = gridObj.selectedCells.item(0).row;
- //for( i = 1; i < gridObj.selectedCells.length; i++ ) {
- // tempNum = gridObj.selectedCells.item(i).row;
- // if( smallistNum > tempNum )
- // smallistNum = tempNum + gridObj.fixedRows - 1;
- //}
- //gridObj.topRow = smallistNum;
- }
- // event.stopPropagation();
- }
- //===============================================================================================
- // onkeypress
- //===============================================================================================
- function onkeypress(){
- var ctrlObj = event.ptarget;
- // 2007-09-18 : multilinegrid일 경우 처리
- var pGridObj = ctrlObj.parent;
- if(pGridObj.elementName == "xforms:multilinegrid" || pGridObj.elementName == "xforms:row")
- return;
- if(ctrlObj.elementName == "xforms:input") {
- input_onkeypress(ctrlObj);
- }
- // 2007-02-07 추가 : Cell이 editmode 상태가 아닐경우 처리
- else if(ctrlObj.elementName == "xforms:col") {
- // alert(pGridObj.colAttribute(pGridObj.col, "type") == "inputbutton");
- if(pGridObj.colAttribute(pGridObj.col, "type") == "input" || pGridObj.colAttribute(pGridObj.col, "type") == "inputbutton")
- grid_onkeypress(event.ptarget);
- }
- else if(ctrlObj.elementName == "xforms:gridinput") {
- grid_onkeypress(event.ptarget);
- }
- //문자열convert(대소문자)
- //toConvertChar("keypress");
- //onkeypress에 event.stopPropagation()이 있으면 입력이 안됨...
- //event.stopPropagation();
- }
- function grid_onkeypress(ctrlObj) {
- var pObj = ctrlObj.parent;
- var charType = pObj.colAttribute (pObj.col, "_chartype");
- if( charType == "upper") {
- if(event.keyCode >= 97 && event.keyCode <= 122) {
- event.keyCode = event.keyCode - 32;
- }
- }
- else if( charType == "lower" ) {
- if(event.keyCode >= 65 && event.keyCode <= 90) {
- event.keyCode = event.keyCode + 32;
- }
- }
- var inputMode = pObj.colAttribute (pObj.col, "_inputmode");
- if( inputMode == "koreanOnly" ) {
- // var pattern = new RegExp('[!-■]', 'i');
- var pattern = new RegExp('[a-zA-Z]', 'i');
- if (pattern.exec(String.fromCharCode(event.keyCode)) != null){//한글이 아니라면..
- event.preventDefault();
- }
- }
- }
- function input_onkeypress(ctrlObj) {
- if( ctrlObj.attribute("_chartype") == "upper") {
- if(event.keyCode >= 97 && event.keyCode <= 122) {
- event.keyCode = event.keyCode - 32;
- }
- }
- else if( ctrlObj.attribute("_chartype") == "lower" ) {
- if(event.keyCode >= 65 && event.keyCode <= 90) {
- event.keyCode = event.keyCode + 32;
- }
- }
- if( ctrlObj.attribute("_inputmode") == "koreanOnly" ) {
- // var pattern = new RegExp('[!-■]', 'i');
- var pattern = new RegExp('[a-zA-Z]', 'i');
- if (pattern.exec(String.fromCharCode(event.keyCode)) != null){//한글이 아니라면..
- event.preventDefault();
- }
- }
- }
- //===============================================================================================
- // oncopy
- // param1 - "value" | "" = 그리드상에 select 계열데이터가 존재할 경우 해당 select 데이터의 value를 저장(기본값)
- // - "label" = 그리드상에 select 계열데이터가 존재할 경우 해당 select 데이터의 label을 저장
- //===============================================================================================
- function grid_oncopy(type) {
- if (type == null || type == "") type = "value";
- var trgObj = document.all.item(event.target);
- if( trgObj.elementName == "xforms:datagrid" ) // event.target이 datagrid > input일 경우 return
- gridObj = trgObj;
- else
- return;
- var cellValue;
- var rClipBoardValue = "";
- var gridSelMode = gridObj.selectionMode;
- // alert(gridSelMode);
- // datagrid@selectionmode가 free일 경우
- if( gridSelMode == "free" ) {
- if( gridObj.selectedCells.length == 0 )
- return;
- var firstCell = getFirstCell(gridObj.selectedCells);
- var lastCell = getLastCell(gridObj.selectedCells);
- var i, j;
- if (type == "value") {
- for( i = firstCell.row; i <= lastCell.row; i++ ) {
- for ( j = firstCell.col; j <= lastCell.col; j++ ) {
- cellValue = gridObj.valueMatrix(i, j);
- if( cellValue.indexOf("\n") != -1 )
- cellValue = '"' + cellValue + '"';
- rClipBoardValue += cellValue;
- if( j != lastCell.col )
- rClipBoardValue += "\t";
- }
- rClipBoardValue += "\r\n";
- }
- } else if (type == "label") {
- for( i = firstCell.row; i <= lastCell.row; i++ ) {
- for ( j = firstCell.col; j <= lastCell.col; j++ ) {
- cellValue = gridObj.labelMatrix(i, j);
- if( cellValue.indexOf("\n") != -1 )
- cellValue = '"' + cellValue + '"';
- rClipBoardValue += cellValue;
- if( j != lastCell.col )
- rClipBoardValue += "\t";
- }
- rClipBoardValue += "\r\n";
- }
- }
- var setClipBoardFlag = true;
- // selectedCells 갯수와 rClipBoardValue의 갯수 비교
- var cntRClip = 0;
- var cntRRow = rClipBoardValue.split("\r\n").length;
- var cntRCol = rClipBoardValue.split("\r\n")[0].split("\t").length;
- if( gridObj.selectedCells.length != ( cntRRow - 1 ) * cntRCol ) {
- setClipBoardFlag = false;
- }
- // selectedCell이 firstCell부터 lastCell까지 속해있나 비교
- for( i = 0; i < gridObj.selectedCells.length; i++ ) {
- if( firstCell.row > gridObj.selectedCells.item(i).row || lastCell.row < gridObj.selectedCells.item(i).row ) {
- setClipBoardFlag = false;
- break;
- }
- if( firstCell.col > gridObj.selectedCells.item(i).col || lastCell.col < gridObj.selectedCells.item(i).col ) {
- setClipBoardFlag = false;
- break;
- }
- }
- if( !setClipBoardFlag ) {
- messageBox("다중 선택 범위에서는", "E001");
- return;
- }
- }
- // datagrid@selectionmode가 bycol일 경우
- else if( gridSelMode == "bycol" ) {
- if( gridObj.selectedCells.length == 0 )
- return;
- var firstCell = getFirstCell(gridObj.selectedCells);
- var lastCell = getLastCell(gridObj.selectedCells);
- var i, j;
- if (type == "value") {
- for( i = gridObj.fixedRows; i < gridObj.rows; i++ ) {
- for ( j = firstCell.col; j <= lastCell.col; j++ ) {
- cellValue = gridObj.valueMatrix(i, j);
- if( cellValue.indexOf("\n") != -1 )
- cellValue = '"' + cellValue + '"';
- rClipBoardValue += cellValue;
- if( j != lastCell.col )
- rClipBoardValue += "\t";
- }
- rClipBoardValue += "\r\n";
- }
- } else if (type == "label") {
- for( i = gridObj.fixedRows; i < gridObj.rows; i++ ) {
- for ( j = firstCell.col; j <= lastCell.col; j++ ) {
- cellValue = gridObj.labelMatrix(i, j);
- if( cellValue.indexOf("\n") != -1 )
- cellValue = '"' + cellValue + '"';
- rClipBoardValue += cellValue;
- if( j != lastCell.col )
- rClipBoardValue += "\t";
- }
- rClipBoardValue += "\r\n";
- }
- }
- }
- // datagrid@selectionmode가 default이거나 byrow일 경우
- else {
- var gridCols = gridObj.Cols;
- var selRow;
- var i, j;
- if (type == "value") {
- for( i = 0; i < gridObj.selectedRows; i++ ) {
- selRow = gridObj.selectedRow(i);
- for ( j = gridObj.fixedCols; j < gridCols; j++ ) {
- cellValue = gridObj.valueMatrix(selRow, j);
- if( cellValue.indexOf("\n") != -1 )
- cellValue = '"' + cellValue + '"';
- rClipBoardValue += cellValue;
- if( j != gridCols - 1 )
- rClipBoardValue += "\t";
- }
- rClipBoardValue += "\r\n";
- }
- } else if (type == "label") {
- for( i = 0; i < gridObj.selectedRows; i++ ) {
- selRow = gridObj.selectedRow(i);
- for ( j = gridObj.fixedCols; j < gridCols; j++ ) {
- cellValue = gridObj.labelMatrix(selRow, j);
- if( cellValue.indexOf("\n") != -1 )
- cellValue = '"' + cellValue + '"';
- rClipBoardValue += cellValue;
- if( j != gridCols - 1 )
- rClipBoardValue += "\t";
- }
- rClipBoardValue += "\r\n";
- }
- }
- }
- if( rClipBoardValue != "" )
- window.clipBoardData = rClipBoardValue;
- }
- function getFirstCell( cellCollection ) {
- var cntCell = cellCollection.length;
- if( cntCell == 0 )
- return null;
- var curCell = null;
- var tmpCell = cellCollection.item(0);
- for( var i = 0; i < cntCell; i++ ) {
- curCell = cellCollection.item(i);
- if( curCell.row <= tmpCell.row ) {
- if( curCell.col <= tmpCell.col ) {
- tmpCell = curCell;
- }
- }
- }
- return tmpCell;
- }
- function getLastCell( cellCollection ) {
- var cntCell = cellCollection.length;
- if( cntCell == 0 )
- return null;
- var curCell = null;
- var tmpCell = cellCollection.item(0);
- for( var i = 0; i < cntCell; i++ ) {
- curCell = cellCollection.item(i);
- if( curCell.row >= tmpCell.row ) {
- if( curCell.col >= tmpCell.col ) {
- tmpCell = curCell;
- }
- }
- }
- return tmpCell;
- }
- /************************************************************************************************
- 함수명 : initPopupMenu ()
- 인자 :
- 결과값 :
- 함수설명 : 사용자 팝업 설정 초기화
- * 주의) ev:event="DOMFOcusOut"에 적용
- ************************************************************************************************/
- function initPopupMenu() {
- window.setPopupMenu(false);
- }
- /************************************************************************************************
- 함수명 : setPopupMenu ()
- 인자 :
- String ctrlID - 해당 컨트롤 아이디
- Boolean onmenuEvent - body에 onmenu이벤트 호출 여부(true|false)
- String itemNodeset - 사용자 정의 팝업 아이템 구성 노드셋 XPath
- String label - 아이템의 Label 구성 노드 이름
- String value - 아이템의 Value 구성 노드 이름
- 결과값 :
- 함수설명 : 컨트롤에서 사용자 팝업 설정 함수
- * 주의) ev:event="onmousedown"에 적용
- ************************************************************************************************/
- // DataGrid or TreeView or textarea
- function setPopupMenu(ctrlID, onmenuEvent, itemNodeset, label, value) {
- if(event.button == 3) {
- if( itemNodeset == null )
- itemNodeset = "/root/hidden/popupmenu/item";
- if( label == null )
- itemNodeset = "name";
- if( value == null )
- value = "func";
- var ctrlObj = document.controls.item(ctrlID);
- if( ctrlObj.elementName == "xforms:datagrid" ) {
- if( ctrlObj.isCell(event.target) && ctrlObj.mouseRow >= ctrlObj.fixedrows ){
- window.showPopupMenu(true);
- window.setPopupMenu(true, itemNodeset, label, value, onmenuEvent);
- }else{
- initPopupMenu();
- }
- }else if( ctrlObj.elementName == "xforms:treeview" ) {
- if( ctrlObj.isCell(event.target) ){
- window.showPopupMenu(true);
- window.setPopupMenu(true, itemNodeset, label, value, onmenuEvent);
- }else{
- initPopupMenu();
- }
- }else {
- window.showPopupMenu(true);
- window.setPopupMenu(true, itemNodeset, label, value, onmenuEvent);
- }
- }
- }
- //===============================================================================================
- // onstartedit
- //===============================================================================================
- function onstartedit(){
- var ctrlObj = event.ptarget;
- if(ctrlObj.elementName == "xforms:datagrid") {
- grid_onstartedit(ctrlObj);
- }
- }
- function grid_onstartedit(ctrlObj)
- {
- // 그리드 col에 _key 를 검색함.
- var colIndex = ctrlObj.col;
- var _keyValue = ctrlObj.colAttribute(colIndex, "_key");
- if(_keyValue == "true")
- {
- if( ctrlObj.rowStatus( ctrlObj.row ) != 3 && ctrlObj.rowStatus( ctrlObj.row ) != 1)
- {
- event.preventDefault();
- return;
- }
- }
- }
- //===============================================================================================
- // xforms-submit-done
- //===============================================================================================
- function xforms_submit_done() {
- if( document.all(event.currentTarget).elementName == "xforms:model" ) {
- event.stopPropagation();
- return;
- }
- gvFormUpdateYN = false;
- }
- //===============================================================================================
- // xforms-value-changed
- //===============================================================================================
- function xforms_value_changed() {
- if( event.currentTarget == "document") {
- event.stopPropagation();
- return;
- }
- // alert(event.currentTarget + " :: setFormUpdate();");
- setFormUpdate();
- }
|