[ Nexacro.Component -  component ]

 

/*==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Group : 1. 기타
 **=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/******************************************************************************************
 * 기능 : component path 구하기
 * 인자 : Object
 * 리턴 :
 * 예문 :
 *****************************************************************************************/

var iCompFullPath='';
function gfn_CompFullPath(obj)
{
    var rtn = "";

    if(iCompFullPath == ""){
        iCompFullPath = obj.name;
    }

    if(obj.parent.toString().toUpperCase() == "[OBJECT CHILDFRAME]")
    {
       var arr = iCompFullPath.split(".");

       for ( var i = (arr.length-2); i >=0; i -- ) {
          rtn = rtn + arr[i] + ".";
       }

       iCompFullPath = rtn.substr(0,rtn.length -2);

       return ;
    }

    var obj = obj.parent;
    iCompFullPath = iCompFullPath + "." + obj.name;

    gfn_CompFullPath(obj);
}


//호출 : gfn_setBindItem("csAsstClsCd", "tab.page1.divRight.csAsstCls.edtCode"
                         ,"dsAsstPlan", "ASST_CLS_CD");
//정의 : 컴포넌트에 대해서 동적으로 script를 이용해서 binding 처리
//인자 : psBindId - bind id
//       psBindComp - component id
//       strDS      - bind할 dataset
//       strCol     - bind할 column id

function gfn_setBindItem(psBindId, psBindComp,strDS,strCol)

{

    var newbinditem = new BindItem;

    newbinditem.init(psBindId, psBindComp, "value", strDS,strCol);

    this.addChild(psBindId, newbinditem);

    eval(psBindId).bind();

}

 

/******************************************************************************************
// 다음 FOCUS 컴포넌트 얻은 후 Focus위치시키기

*****************************************************************************************/

function gfn_setEvent(obj, e:KeyEventInfo) {

    var objNComp = getNextComponent(obj, true);

    if(objNComp <> null) {

        objNComp.setFocus();

    }

}


/******************************************************************************************
 * 기능 : null 값일경우 치환
 * 인자 : arg1 : 실제의 값
 *        arg2 : 치환될 값
 * 리턴 :
 * 예문 :
 *****************************************************************************************/

function gfn_NVL(arg1, arg2)

{

    if(gfn_IsNull(arg1)){

        return arg2;

    }else{

        return arg1;

    }

}

 


/******************************************************************************************
 * 기능 : 입력값이 null에 해당하는 경우 모두를 한번에 체크한다.
 * 인자 : sValue : 체크할 문자열( 예 : null 또는 undefined 또는 "" 또는 "abc" )
 * 리턴 : true - undefined, null, NaN, "", Array.length = 0인 경우
 *        fasle - 위값 이외의 경우
 * 예문 :
 *****************************************************************************************/

function fn_IsNull(sValue)

{

    if( String(sValue).valueOf() == "undefined") return true;

        

    if( sValue == null ) return true;

 

    if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) )  return true;

 

    if( sValue.length == 0 ) return true;

 

    return false;

}

 

/*******************************************************************************
 ★ 설명
    전각문자를 반각문자로
    ( 참고 : 전각문자는 "정사각형" 안에 들어가는 문자이고, 반각은 그 정사각형의 반쪽에 들어가는 문자이다.
             전각문자의 폭은, 반각문자의 2배입니다.
             예를 들어 숫자 "3" 은, 한글 "가"의 절반의 폭만을 가지고 있습니다.
             그래서 영문과 숫자 등은 반각이고, 한글이나 한자들은 전각문자입니다.
             다만, 영문과 숫자를 전각으로 표현할 수도 있습니다.
      예 : 전각문자 ==> ※★0+
           반각문자 ==> 1a )
 ★ Parameter
    1. sFull   : 전각문자( 예 : "0+" )
 ★ return
    - 성공 = 반각문자 ( 예 : "0+" )
    - 실패 = ""
 ******************************************************************************/

function fn_Full2Half(sFull)

{

 var i, c, sHalf = "";

  

 if( fn_IsNull(sFull) )  return "";

 

 for( i=0 ; i < sFull.length ; i++ )

 {

  var c = sFull.charCodeAt(i);

 

  if (c == 12288)

   sHalf += unescape("%20");

  else if ( (c >= 65281) && (c <= 65374) )

   sHalf += unescape("%"+(c-65248).toString(16));

  else

   sHalf += sFull.charAt(i);

 }

 return  sHalf;

}

 

/*******************************************************************************
 ★ 설명
    반각문자를 전각문자로
 ★ Parameter
    1. sHalf   : 반각문자( 예 : "0+" )
 ★ return
    - 성공 = 전각문자 ( 예 : "0+" )
    - 실패 = ""
 ******************************************************************************/

function fn_Half2Full(sHalf)

{

    var rTmp = "";

    var iTmp = "";

    var i;

 

  if( fn_IsNull(sHalf) )  return "";

  

    for( i = 0 ; i < sHalf.length ; i++ )

    {

        //기본 아스키 코드 값을 벗어난 경우(한글)는 전자로 변환할 필요 없음.

        if( (sHalf.charCodeAt(i) >= 32) && (sHalf.charCodeAt(i) <= 126) )

        {

   if( sHalf.charCodeAt(i) == 32 )

    iTmp = unescape("%u"+(12288).toString(16));

            else

    iTmp = sHalf.charCodeAt(i) + 65248;

  }

        else

            iTmp = sHalf.charCodeAt(i);

 

 

  if( sHalf.charCodeAt(i) == 32 )

   rTmp = rTmp + (iTmp);

  else

   rTmp = rTmp + String.fromCharCode(iTmp);

    }

 

    return rTmp;

}


/*******************************************************
 * @name : gf_getBindObjInfo
 * @description : 컴포넌트의 바인딩 정보를 알아낸다
 * @param : component obj
 * @return : obj
 * @example :    var obj = gf_getBindObjInfo(Combo00);
                                 //trace(obj.datasetid);
                                 //trace(obj.columnid);
 *******************************************************/

 function gf_getBindObjInfo(findObj)

 {

         var obj = {};

         var bindObj = this.binds;

         for(var i=0 ; i<bindObj.length ; i++){

                 

                if(findObj.name != bindObj[i].compid) continue;

                 

                obj.datasetid = bindObj[i].datasetid;

                 obj.columnid = bindObj[i].columnid;

         }

         

        return obj;

 }

 /******************************************************************************
  * Function명 : gf_cutIndexByBytes
  * 설명       : byte수 체크하여 잘라낼 시작 index값을 반환
  * Params     : String
  * Return     : 잘라낼 시작 index(-1이면 잘라낼 값 없음.)
  ******************************************************************************/

 function gf_cutIndexByBytes(str, maxByte) {

     if ( gf_isNull(str) ) return;

     

    var bytes = 0;

 

    for (var i=0, n=str.length; i < n; i++) {

         var oneChar = escape(str.charAt(i));

         if ( oneChar.length == 1 ) {

             bytes ++;

         } else if (oneChar.indexOf("%u") != -1) {

             bytes += 2;

         } else if (oneChar.indexOf("%") != -1) {

             bytes += oneChar.length/3;

         }

         

        if (bytes > maxByte) {

                         return i;

         }

     }

 

    return -1;

 }

 

 /******************************************************************************
  * Function명 : gf_checkBytes()
  * 설명       : Edit, TextArea의 byte수를 체크하고 초과되는 내용을 자동으로 잘라낸다. ontextchange 이벤트에서 호출.
  * Params     : obj - 체크할 object
                 autoCutYn - 자동으로 잘라낼지 여부(파라메터 넘기지 않으면 기본값 'Y'로 처리)
  * Return     : boolean - true 또는 false
  ******************************************************************************/

 function gf_checkBytes(obj, e:TextChangeEventInfo) {

     var str = e.posttext;

     var maxByte = obj.maxlength;

     

    if ( gf_isNull(str) ) return true;

     if ( gf_isNull(maxByte) || toNumber(maxByte) < 0 ) return true;

     

    var cutIdx = gf_cutIndexByBytes(str, maxByte);

     

    if (cutIdx > 0)

     {

                 obj.value = str.substring(0, cutIdx);

                 return false;

     }

     

    return true;

 }

 

/******************************************************************************************
 * 기      능 : 각 컴포넌트 type return
 * 인      자 : objComp - component name
 * 반      환 : componet type
 *****************************************************************************************/

function gfn_GetCompType(objComp){

    return ((objComp+"").substr(8)).replace("]", "");

}

 

/******************************************************************************************
 * 기      능 : 동적 binding
 *              사용자 object를 만든 후 form에 추가했을 경우 dataset과 binding을 할 수 없다.
 *              이때 binding을 처리 해준다.
 * 인      자 : psBindId - bind id
 *              bindComp - stirng형 component id
 * 반      환 : componet type
 *****************************************************************************************/

function gfn_setBindItem(psBindId, bindComp,strDS,strCol)

{

    var newbinditem = new BindItem;

    newbinditem.init(psBindId, bindComp, "value", strDS,strCol);

    this.addChild(psBindId, newbinditem);

    eval(psBindId).bind();

}

 
 

  

 

Posted by 농부지기
,