트러스트폼

티폼 기능 실사용 정리

사라링 2012. 9. 27. 14:17

//팝업에서 오브젝트를 부모창으로 보내기 위한 작업 FUNCTION

<script type="javascript" ev:event="ondblclick">

<![CDATA[cardInfo();]]>

</script>



function cardInfo() {

if(!fGridReturn("fg1")) return;

var obj = doc.addGrid("fg1").getRowObj(fg1.row);

try{

opener.javascript.purCardAprovPopUp(obj);

}catch(e){

if(opener.javascript.comInfo(obj) == false){

return false;

}

}

window.close();

}




//데이터 그리드의 컬럼 타입이 체크박스 인경우 컬럼명에 체크박스를 넣어 버튼 클릭시 모두 클릭 되도록 함. 

fg1.fixedcellcheckbox(0,1)=true;


//문자타입의 데이터 값 수식 . 

 := parseInt(model.getValue("/root/main/detail/TRF_AMT"),10)

    -- 10진법의 숫자로 변환 . 


// input 타입의 입력 창에 포커스(마우스 클릭) 했을때 한영을 지정된 것으로 변경 하는 옵션

 imemode="hangul"

-- 한글 

 imemode="alpha"

-- 영문 


// datagrid 의 col 값이 전체 width 값만큼 조정 되는 것을 막음 

     fg1.extendLastCol = "false"


// input 박스 두개  기간 체크

<script type="javascript" ev:event="xforms-value-changed">

<![CDATA[

fDayPeriodCheck("/root/search/APROV_DT_FR","/root/search/APROV_DT_TO", "str" );

doFg1Search();

model.refresh();

]]>

</script>

<script type="javascript" ev:event="onkeydown">

<![CDATA[

fEnterFunction("doFg1Search",event.target);

]]>

</script>

// date 유효성 검사 하나 

fDayCheck("/root/main/PUBCT_DT","input10");

//grid 의 date 유효성 검사  

<col ref="FRM_DT" type="inputdate">

<script type="javascript" ev:event="xforms-value-changed">

<![CDATA[

fDayCheck(fg3.row,"fg3.FRM_DT");

]]>

</script>

</col>


//grid 에서 emp_pop 셋팅 function 사용 

<script type="javascript" ev:event="onbuttonclick">

<![CDATA[

doFg23Insert("O");

]]>

</script>

<script type="javascript" ev:event="onkeyup">

<![CDATA[

 if(event.keyCode == 13){

doFg23Insert("O");

 }

]]>

</script>


function doFg23Insert(emp_OA){

var owner_nm ="";

if(emp_OA=="O"){

owner_nm =  fg3.valueMatrix(fg3.row, fg3.colRef("OWNER_NM"));

}else {

owner_nm =  fg2.valueMatrix(fg2.row, fg2.colRef("CARD_ADMIN_NM"));

}

model.makeValue("/root/temp/EMP_NM",owner_nm);

if(owner_nm!=""){

popupValueSet("/root/temp/EMP_NM", "EMP_NM", "E");

popupValueSet("/root/temp/EMP_NO", "EMP_NO", "");

}else {

popupValueSet("/root/temp/EMP_NM", "EMP_NM", "");

popupValueSet("/root/temp/EMP_NO", "EMP_NO", "");

}

      //popupValueSet("/root/temp/DEPT_NM", "DEPT_NM", "");

      empPopup("/root/temp/EMP_NM");

      if(emp_OA!="O"){

      if (doFg2Check())return; // 기존에 추가된 관리자 인지 확인

      }

     

      if(emp_OA=="O"){

      fg3.valueMatrix(fg3.row, fg3.colRef("OWNER_NM")) = model.getValue("/root/temp/EMP_NM");

    fg3.valueMatrix(fg3.row, fg3.colRef("OWNER")) = model.getValue("/root/temp/EMP_NO");

fg3.colWidth(0)=30;

      }else {

      fg2.valueMatrix(fg2.row, fg2.colRef("CARD_ADMIN_NM")) = model.getValue("/root/temp/EMP_NM");

    fg2.valueMatrix(fg2.row, fg2.colRef("CARD_ADMIN")) = model.getValue("/root/temp/EMP_NO");

fg2.colWidth(0)=30;

      }

   

model.refresh();

}







//input 박스 에서 emp_pop 셋팅

<script type="javascript" ev:event="onbuttonclick">

<![CDATA[

popupValueSet("/root/search/OWNER_NM","EMP_NM","");

popupValueSet("/root/search/OWNER_NO","EMP_NO","");

empPopup();

]]>

</script>

<script type="javascript" ev:event="xforms-value-changed">

<![CDATA[

popupValueSet("/root/search/OWNER_NM","EMP_NM","E");

popupValueSet("/root/search/OWNER_NO","EMP_NO","");

empPopup("");

]]>

</script>

<script type="javascript" ev:event="onkeypress">

<![CDATA[

fEnterKey("");

]]>

</script>



//데이터 그리드 더블클릭후 팝업 데이터 넘기기

<script type="javascript" ev:event="ondblclick">

<![CDATA[

if(!fGridReturn("fg1")) return;

model.makeValue("/root/temp/ACCT_CD", fg1.valueMatrix(fg1.row, fg1.colRef("ACCT_CD")));

model.makeValue("/root/temp/ACCT_NM", fg1.valueMatrix(fg1.row, fg1.colRef("DIS_NM")));

model.makeValue("/root/temp/FRM_DT", model.getValue("/root/search/FRM_DT"));

model.makeValue("/root/temp/TO_DT", model.getValue("/root/search/TO_DT"));

loadPopUp("/etr/xrw/mis/act/main/act_4003_007.xrw", "", "1010", "590", "/root/temp", "/root/temp"

]]>

</script>



// 더블클릭후 받은 데이터 처리

function doInit(){

doImportSearch("CORP","");

model.makeValue("/root/search/ACCT_NM", model.getValue("/root/temp/ACCT_NM"));

model.makeValue("/root/search/ACCT_CD", model.getValue("/root/temp/ACCT_CD"));

model.makeValue("/root/search/FRM_DT", model.getValue("/root/temp/FRM_DT")); 

     model.makeValue("/root/search/TO_DT", model.getValue("/root/temp/TO_DT"));


input3.disabled=false;

model.refresh();

model.setFocus("input7");

}



// 최초 실행시 사용 할수 있도록 위치 </model> 바로 위

<script type="javascript" ev:event="xforms-model-construct-done">

<![CDATA[

doInit();

]]>

</script>


// 데이터 그리드를 초기화

     fg1.rebuild();


//데이터그리드 스크롤 되지 않게 고정

fg1.FrozenCols = 3;       // 좌측 3개의 칼럼을 고정시킨다.

 fg1.FrozenRows = 2;    // 상단 2개의 행을 고정시킨다.



// 클릭시 특정 REF 값을 기준으로 모두 check 또는 check false 하는 것
var statVal;
if(fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))=="true") statVal="false";
else if(fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))==""||fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))=="false") statVal="true";
for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("SLIP_NO"))==fg1.valueMatrix(fg1.row, fg1.colRef("SLIP_NO"))) fg1.valueMatrix(i,                                 
fg1.colRef("isChecked")) = statVal;

// 클릭시 같은 row 를 check 또는 check false 하는 것 
if(!fGridReturn("fg1")) return;
if(fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))=="true"){
fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))="false";
}else{
fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))="true";
}


// 데이터 있는지 확인.

if(fg1.rows==1){

   jsAlert("그리드 안에 데이터가 없습니다."); 

return;

  }


//xrw 오픈시 특정 값을 받는 쿼리 .jsp 의 request.getParameter 와 같다. 

model.makeValue("/root/main/search/CARD_CLS", model.property("CARD_CLS"));



// 특정 데이터 그리드의 row 를 추가한다. 

   doc.addGrid("fg2").insertRow("last");



// 입력창을 FOCUS 하게함

    model.setFocus("input1");



//데이터 그리드에 값 셋팅 하기 

    doc.addGrid("fg1").setAction("/module/mis/act/main/Act_7001_007.do").setMode("getList").setSendRef("/root/search").getList("true");

                    대상그리드               네임스페이스                                                   XML ID                     MAP 에 가져갈 검색 조건 ## 


// 가져온 데이터 그리드의 여러개의 ROW 중 조건에 맞는 경우에만 ROW 에 백그라운드를 다르게 하여 표현 하게함 

    for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("OUT_CHK"))=="Y") fg1.rowStyle(i, "data", "background-color") = "#ffddff";


//대상 데이터 그리드의 데이터 ROW 숫자를 캡션 안에 넣어 준다. 

   getGridRowCnt("fg1", "caption37");



// 선택된 ROW의 특정 컬럼 값을 임시 저장 하여 sedRef 에 추가 하기 

model.makeValue("/root/search/search2/CARD_NO", fg1.valueMatrix(fg1.row, fg1.colRef("CARD_NO"))); doc.addGrid("fg2").setAction("/module/mis/act/main/Act_7001_007.do").setMode("getFg2List").setSendRef("/root/search/search2/CARD_NO").getList("true");


//모든 컬럼 값을 변경 하기 ( check  속성의 값을 true 로 바꿈 )

for (var i=1; i<fg2.rows; i++){ fg2.valueMatrix(i, fg2.colRef("isChecked"))="true"; }


//submit 전에 값의 유효성 검사를 함 체크 펑션을 사용 하는경우 반드시 조건문 안에 사용 하여 값을 받아 사용 한다. 

function doSaveCheck(){

if(!chkValue(model.getValue("/root/main/CARD_NO"), "input1", "카드번호를 입력해 주십시요.")) return false;

}


// submit 할때 특정 값이 아닌 데이터 그리드의 값을 모두 보낼때 사용 //대상 데이터 그리드의 isChecked 값을 찾아서 플래그 한후에 getUpdateData() 를 이용 하여 ref 값을 생성후

    subMit 시에 ref 값으로 보내 준다. JAVA 단에서 받는다. 

        -- XRW

fSetGridAllFlag("fg2");

model.makeValue("/root/temp/updateData3", fg2.getUpdateData());

** getUpdateData() 는 특정 그리드의 데이터 값중 insert update delete 된 값을 지정 하여 보내 getGridUpdatedList, getGridInsertdList,getGridDeleteList 등으로 구분 하여 받을수 있다.  따라서 이것을 모두 가져와 사용 하기위해서는 모두 대상에 적용 시켜야할 필요가 있는데  fSetGridAllFlag("fg2"); 

을 사용 하여 getGridUpdatedList 로 받을수 있다. 

        --JAVA 

       List adminList = request.getGridUpdatedList("updateData3");

for(Iterator all = adminList.iterator(); all.hasNext();){

Map row = (Map)all.next();

row.put("SESS_USER_ID", map.get("SESS_USER_ID"));

row.put("CARD_NO", map.get("CARD_NO"));

createObject("act.main.act7001007.insertAdminList", row);

}


// 위의 값을 submit 하자 submit 의 경우 String 으로 결과 값을 response.addReturnValue("Y"); 돌려줘 밑과 같이 처리 한다. 

if(submit("/module/mis/act/main/Act_7001_007.do", "tmSave", "/root/main,/root/temp/updateData3","","","", false)=="Y"){

if(!fMessageBox("I_Y","doFg1Search")) return;

}else{

if(!fMessageBox("I_N","doFg1Search")) return;

}

         }


//인사의 팝업 사용 하기 


popupValueSet("/root/main/ADMIN_NM", "EMP_NM", "");

popupValueSet("/root/main/ADMIN", "EMP_NO", "");

      empPopup();

     

      if (doFg2Check())return; // 기존에 추가된 관리자 인지 확인

     

       fg2.valueMatrix(fg2.row, fg2.colRef("EMP_NM")) = model.getValue("/root/main/ADMIN_NM");

       fg2.valueMatrix(fg2.row, fg2.colRef("EMP_NO")) = model.getValue("/root/main/ADMIN");


function doFg2Check(){

         for (var i=fg2.fixedRows; i<fg2.rows; i++){

if(fg2.valueMatrix(i, fg2.colRef("EMP_NO"))==  model.getValue("/root/main/ADMIN")   ){

if(model.getValue("/root/main/ADMIN")!=""){

jsAlert("이미 등록된 관리자 입니다.");

}

return true;

}

}

}


//선택 ROW 를 삭제 한다. 

         function doDelete(){

if(jsConfirm("삭제하시겠습니까?")){

if(submit("/module/mis/act/main/Act_7001_007.do", "tmDelete", "/root/main/CARD_NO","","","",false)=="Y"){

if(!fMessageBox("D_Y","doFg1Search")) return;

}else{

if(!fMessageBox("D_N","doFg1Search")) return;

}

model.refresh();

}

}


// 추가 자체 FUNCTION 

function popAcc(obj){// 값을 받아 올때만 실행

if(model.getValue("/root/temp/ACC_FLAG")=="Y"){

// 일괄적용 (다중 적용)

for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("isChecked"))=="true") fg1.rowStyle(i, "data", "background-color") = "#ffddff";

for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("isChecked"))=="true"){

fg1.valueMatrix(i, fg1.colRef("STTL_BK_CD"))=obj.BK_CD;

fg1.valueMatrix(i, fg1.colRef("STTL_BK_NM"))=obj.BK_NM;

fg1.valueMatrix(i, fg1.colRef("STTL_ACC_NO"))= obj.BK_ACC_NO;

}

model.refresh();

}else {

// 단일적용

                  fg1.rowStyle(fg1.row, "data", "background-color") = "#ffddff";

fg1.valueMatrix(fg1.row, fg1.colRef("STTL_BK_CD")) =obj.BK_CD;

fg1.valueMatrix(fg1.row, fg1.colRef("STTL_BK_NM")) = obj.BK_NM;

fg1.valueMatrix(fg1.row, fg1.colRef("STTL_ACC_NO")) = obj.BK_ACC_NO;

fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))="true";

}

model.setValue("/root/temp/ACC_FLAG","N");

}




// 특정 값을 가져와 숫자로 바꾸어 값을 확인 한다. 

//결제일 맥스값 체크

function doSttlDtChange(){

var sttlDt=parseInt(model.getValue("/root/main/STTL_DT"));

if(sttlDt>31){

jsAlert("유효하지 않는 결제일입니다.");

model.setFocus("input3");

}

}


// ROW 를 삭제 하기 

    function doFg2Delete(){

if(fg2.row<fg2.fixedRows){

jsAlert("삭제할 내역을 선택해 주십시요.");

return;

}else if(jsConfirm("선택한 행을 삭제하시겠습니까?")){

fg2.deleteRow(fg2.row);

fg2.colWidth(0)=30;

     }

     }


//SELECT  형식으로 데이터 그리드를 보는것 (사업처 코드를 사용 -보이는 값과 넘기는 값이 다르다 ) 


//데이터 그리드 안에서 

<col ref="BUSI_PLC_CD" type="combo" visibility="hidden">

<choices>

<itemset nodeset="/root/temp/IMPORT/CORP">

<label ref="label"/>

<value ref="value"/>

</itemset>

</choices>

</col>


// 단일 SELECT 안에서 사용 

<select1 id="combo2" ref="/root/search/BUSI_PLC_CD" appearance="minimal" style="left:125px; top:38px; width:210px; height:17px; font-family:Gulim; text-align:center; padding-top:1; ">

<choices>

<itemset nodeset="/root/temp/IMPORT/CORP">

<label ref="label"/>

<value ref="value"/>

</itemset>

</choices>

<script type="javascript" ev:event="xforms-value-changed">

<![CDATA[

doFg1Search();

]]>

</script>

</select1>


위의 두 값은 아래와 같이 초기 셋팅 한다. 

<script type="javascript" ev:event="xforms-model-construct-done">

<![CDATA[

//doImportSearch("CORP,C320,C321,C315@ETC1='320-001'","--전체--,,,--선택--");

doImportSearch("CORP_INF","--전체--");

    //doInit();

]]>

</script>


// 특정 그리드의 checked 된 값을 숫자로 return 하는 function 사용  // act.js 에 구현

fGridChkCntReturn("fg1","isChecked","true")==0

   -- 특정 데이터그리드의 refid 값과 몇개 인제 확인할 상태값을(true or false)  넘겨 준다. 


// 데이터 별로 특정 값을 찾아 style 을 조정 하여 백그라운드를 다르게 보여 준다. 2개 이상의 값

for(var i = fg1.fixedRows ; i < fg1.rows ; i++){

var gbn = fg1.valueMatrix(i, fg1.colRef("GBN"));

if(gbn=="2"||gbn=="6"||gbn=="8"||gbn=="9"){

fg1.mergebyfree(i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"));

fg1.cellStyle("text-align", i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"))="center";

fg1.rowStyle(i, "data", "background-color") =  "#e1e1ff";

fg1.rowStyle(i, "data", "color") =  "#0000ff";

fg1.rowStyle(i, "data", "font-weight") =  "bold";


}else if(fg1.valueMatrix(i, fg1.colRef("GBN"))=="10"){

fg1.mergebyfree(i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"));

fg1.cellStyle("text-align", i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"))="center";

fg1.rowStyle(i, "data", "background-color") =  "#e1e1ff";

fg1.rowStyle(i, "data", "color") =  "#ff0000";

fg1.rowStyle(i, "data", "font-weight") =  "bold";

}

}


//공통단 엑셀 처리 xrw 부분 


T폼 지원 : saveExcel(document.title, document.title, "fg1", "1");


//따로 만든것 

    var excelFileName = "acctCd.xls";

     var fgColName= "소득코드^소득구분^표준코드^순번^소득명^필요경비세율(%)^세율";

     //var fgColName2= "소득코드^소득구분^표준코드^순번^소득명^필요경비세율(%)^세율"; //타이틀 값 두줄 넣을때 사용 fgColName 과 사이즈가 같아야함

     var fgColRef=     "INCM_CD^INCM_CLS^STAN_INCM_CD^STAN_INCM_SEQ^INCM_NM^NECES_TAX_RATE^TAX_RATE";


     model.makeValue("/root/temp/excel/colName",fgColName);

     //model.makeValue("/root/temp/excel/colName2",fgColName2);

     model.makeValue("/root/temp/excel/colRef",fgColRef);

     model.makeValue("/root/temp/excel/getList","act.main.act0009007.getList");

     model.makeValue("/root/temp/excel/title", document.title);

     model.makeValue("/root/temp/excel/fileNm",excelFileName);

     submit("/module/mis/act/main/Act_0000_007.do", "excelDown", "/root/temp/excel,/root/search", "", "excel", "", false, true);

     


// 엑셀 다운 작업 2

model.makeValue("/root/search/FINC_STAT_CD","390-001");

   

var excelFileName = "acct_Balance_sheet.xls";

var fgColName= "계정과목코^"+model.getValue("/root/main/TITLE3")+"^"+

model.getValue("/root/main/TITLE3")+"^"+model.getValue("/root/main/TITLE4")+"^"+model.getValue("/root/main/TITLE4");

     

var fgColName2= "^^금액^금액^금액^금액"; //타이틀 값 두줄 넣을때 사용 fgColName 과 사이즈가 같아야함

     var fgColRef=     "DIS_NM^SEQ^THIS_L_AMT^THIS_R_AMT^BACK_L_AMT^BACK_R_AMT";

     model.makeValue("/root/temp/excel/colName",fgColName);

     model.makeValue("/root/temp/excel/colName2",fgColName2);

     model.makeValue("/root/temp/excel/busiPlcNm",model.getValue("/root/main/TITLE1")+"     "+model.getValue("/root/main/TITLE2"));

     model.makeValue("/root/temp/excel/colRef",fgColRef);

     model.makeValue("/root/temp/excel/getList","act.main.act5002007.getList");

     model.makeValue("/root/temp/excel/title", document.title);

     model.makeValue("/root/temp/excel/fileNm",excelFileName);

     submit("/module/mis/act/main/Act_0000_007.do", "excelDown", "/root/temp/excel,/root/search", "", "excel", "", false, true);