MiPlatform 9. javaScript 추가하기

1. 정의 : 필요한 Component에서 작동할 수 있도록 javaScript를 추가한다.

** javaScript : 아래 Event에서 필요한 JavaScript를 추가한다.
   중요점 : 반드시 해당 Component가서 Event를 찾아 마우스로 Double Click 후 아래 javaScript를 붙여
            넣는다.  그래야 Event가 발생시 javaScript가 실행되기 때문디ㅏ.


2. For ID    : PoolLogin
   Component : Login 버튼
   Event     : OnClick
   javaScript

function bt_Login_OnClick(obj)
{
            InitSession(true); // Session연결
            Close(); // 창 닫기
}


3. For ID    : EnvMenuTop

/****************************************************************************************************
  화면명(ID) : 상단 메뉴(EnvMenuTop)
  작성자     : 김용학
  업무개요   : 상단frame에 속해 있는 메뉴관련 Event 목록 기술
  작성일     : 2009.04.13
****************************************************************************************************/

/*===================================================================================================
  업무전체 flow 주석
===================================================================================================*/

/*===================================================================================================
  설명  : 상단메뉴바를 클릭 시 해당 화면 OPEN 시키는 Event
  ARG   : obj    -  Event가 발생한 Component
          strID  - Click한 Menu의 ID값의 문자열
                   Menu의 MenuID는 AddItem Method로 추가된 Menu의 ID 값이거나,
                   MenuDataSet Property로 지정된 DataSet 내의 IDCol Property로 지정된 Column의 값.
  RTN   : none
===================================================================================================*/

function mb_TopMenu_OnMenuClick(obj, strID)
{
    if(length(trim(strID))!=0)
    {
        if( strID == "exit" )
            Exit_App();
        else
        {
            var n_Row          = gds_Menu.findRow("MENU_ID", strID);
            var s_MENU_ID      = gds_Menu.getcolumn(n_Row, "MENU_ID");
            var s_USER_MENU_NM = gds_Menu.getcolumn(n_Row, "USER_MENU_NM");
            var s_TAB_MENU_NM  = gds_Menu.getcolumn(n_Row, "TAB_MENU_NM");
            var s_APP_ID       = gds_Menu.getcolumn(n_Row, "APP_ID");
            var s_SCR_ID       = gds_Menu.getcolumn(n_Row, "SCR_ID");
            
            gf_OpenMenuUrl(s_MENU_ID, s_USER_MENU_NM, s_TAB_MENU_NM, s_APP_ID, s_SCR_ID);
        }
    }
}

/*===================================================================================================
  설명  : Top Frame의 XML이 OnLoadComplated될때 발생되는 Event
===================================================================================================*/
function EnvMenuTop_OnLoadCompleted(obj)
{
    tb_OpenMenu.DeleteTab(0);
}

/*===================================================================================================
  설명  : 사용자가 열려져 있는 상단 Tab을 클릭 시 -> 해당 Tab에 해당 하는 Form을 활성화시킨다.
===================================================================================================*/
function tb_OpenMenu_OnChanged(obj,nOldIndex,nNewindex)
{
    gf_OpenMenuFormSearch(nNewIndex);
}



4. 위치 : Project Explorer -> Global Tab -> script ->에서 마우스로 Double click
   아래 javaScript를 추가한다.

/****************************************************************************************************
  화면명(ID) : Global용 javaScript
  작성자     : 김용학
  업무개요   : 모든 화면에서 공통으로 사용할 수 있는 시스템관련 javaScript
               StartXML.xml에 저장 된다.
  작성일     : 2009.04.13
****************************************************************************************************/
#include "RrEnv_js::jsCommFunc.js";
 
/*===================================================================================================
  * Menu관련 function
  1. 업무화면을 OPEN시키기 위한 MAIN function
  2. 상단 tabPage에 OPEN할 화면을 추가한다.
  3. Main Frame에 클릭한 메뉴를 MDI로 Open시킨다.
  4. 화면 form 이 Close 되었기 때문에 해당 Tab을 제거 한다.
  5. 활성화된 화면에 대한 Tab을 선택한다.
  6. 사용자가 열려져 있는 상단 Tab을 클릭 시 -> 해당 Tab에 해당 하는 Form을 활성화시킨다.
===================================================================================================*/

/*===================================================================================================
  설명  : 업무화면을 OPEN시키기 위한 MAIN function
  ARG   : MENU_ID      - 메뉴PK
          USER_MENU_NM - 사용자메뉴명
          TAB_MENU_NM  - 상단 Tab Page에 보여줄 메뉴명
          APP_ID       - Application Group ID
          SCR_ID       - 화면 XML ID
===================================================================================================*/
function gf_OpenMenuUrl(as_MENU_ID, as_USER_MENU_NM, as_TAB_MENU_NM, as_APP_ID, as_SCR_ID)
{
    //상단 tabPage에 OPEN할 화면을 추가한다.
    gf_OpenMenuTopTabAdd(as_MENU_ID, as_USER_MENU_NM, as_TAB_MENU_NM, as_APP_ID, as_SCR_ID);
    
    //화면을 Open한다.
    gf_OpenMenuChildWindow(as_MENU_ID, as_USER_MENU_NM, as_TAB_MENU_NM, as_APP_ID, as_SCR_ID);
}
 
/*===================================================================================================
  설명  : 1. 상단 tabPage에 OPEN할 화면을 추가한다.
          2. 어떤 화면이 OPEN되어 있는지  gds_OpenMenu 에 추가한다.
          3. 만약, 기 OPEN되어 있다면 해당 화면을 Enable 시킨다.
  ARG   : 상동
===================================================================================================*/
function gf_OpenMenuTopTabAdd(as_MENU_ID, as_USER_MENU_NM, as_TAB_MENU_NM, as_APP_ID, as_SCR_ID)
{
    if (cf_IsNull(as_APP_ID) || cf_IsNull(as_SCR_ID)) return;
 
    //글자양옆에 공백을 둔다. tap의 제목부분이 좁아지게 보이지 않게
    var s_Title = as_TAB_MENU_NM;
    
    var n_Row;
    
    n_Row = gds_OpenMenu.FindRow("SCR_ID", as_SCR_ID);
 

    //해당 화면이 기 OPEN되어 있을 경우
    if( n_Row >= 0 )
    {
        // 현재 위치 설정
        Global.Doc_Menu_Top.tb_OpenMenu.Tabindex = n_Row;
    }
    //해당화면을 OPEN해야 되는 경우
    else
    {
        var LstIdx  = gds_OpenMenu.GetColumn(gds_OpenMenu.rowcount - 1, "SNO");
        var n_idCnt = ToNumber(LstIdx) + 1;
 
        n_Row = gds_OpenMenu.AddRow();
 
        gds_OpenMenu.SetColumn(n_Row,"MENU_ID"     , as_MENU_ID);
        gds_OpenMenu.SetColumn(n_Row,"USER_MENU_NM", as_USER_MENU_NM);
        gds_OpenMenu.SetColumn(n_Row,"TAB_MENU_NM" , as_TAB_MENU_NM);
        gds_OpenMenu.SetColumn(n_Row,"APP_ID"      , as_APP_ID);
        gds_OpenMenu.SetColumn(n_Row,"SCR_ID"      , as_SCR_ID);
        gds_OpenMenu.SetColumn(n_Row,"SNO"         , n_idCnt);
 
        //top에 이번에 Open한 Form Name으로 tab 추가
        var strID   = "tab" + n_idCnt;
        var nIdx    = n_Row;
        var s_Image = "btn_Tab_TopOpenPage";

        Global.Doc_Menu_Top.tb_OpenMenu.InsertTab(as_SCR_ID, nIdx, "", s_Title, s_Image);
        // 현재 위치 설정
        Global.Doc_Menu_Top.tb_OpenMenu.Tabindex = n_Row;
    }
}
 
/*===================================================================================================
  설명  : Main Frame에 클릭한 메뉴를 MDI로 Open시킨다.
          실제 Open은 MainWorkForm.xml의 OnLoadCompleted Event에서 처리한다.
  ARG   : 상동
===================================================================================================*/
function gf_OpenMenuChildWindow(as_MENU_ID, as_USER_MENU_NM, as_TAB_MENU_NM, as_APP_ID, as_SCR_ID)
{
    if (cf_IsNull(as_APP_ID) || cf_IsNull(as_SCR_ID)) return;

    var s_Arg = "";
    s_Arg  = "as_APP_ID="         + quote(as_APP_ID);
    s_Arg += " as_SCR_ID="        + quote(as_SCR_ID);
    s_Arg += " as_USER_MENU_NM="  + quote(as_USER_MENU_NM);
    s_Arg += " as_TAB_MENU_NM="   + quote(as_TAB_MENU_NM);
    s_Arg += " as_MENU_ID="       + quote(as_MENU_ID);
 
    // 폼 Open ..
    NewWindow(as_SCR_ID, "RrEnv::MainWorkForm.xml", s_Arg, 2000,2000, "OpenStyle=Max, Instance=Single, Title=False, Status=False, CloseFlag=False, Resize=False", 0, 0);

}

/*===================================================================================================
  설명  : 화면 form 이 Close 되었기 때문에 해당 Tab을 제거 한다.
  ARG   : s_MENU_ID - 메뉴관리Table PK
  ARG   : 상동
===================================================================================================*/
function gf_OpenMenuDel(as_SCR_ID)
{
    var n_Row;
    
    n_Row = gds_OpenMenu.FindRow("SCR_ID", as_SCR_ID);

    if( n_Row >= 0 )
    {
        gds_OpenMenu.DeleteRow(n_Row);
        Global.Doc_Menu_Top.tb_OpenMenu.TabIndex = n_Row;
        Global.Doc_Menu_Top.tb_OpenMenu.DeleteTab(n_Row);
    }
}

/*===================================================================================================
  설명  : 활성화된 화면에 대한 Tab을 선택한다.
  ARG   : s_MENU_ID - 메뉴관리Table PK
===================================================================================================*/
function gf_OpenMenuFindTab(as_SCR_ID)
{
    var n_Row = gds_OpenMenu.FindRow("SCR_ID", as_SCR_ID);

    Global.Doc_Menu_Top.tb_OpenMenu.Tabindex = n_Row;

}

/*===================================================================================================
  설명  : 사용자가 열려져 있는 상단 Tab을 클릭 시 -> 해당 Tab에 해당 하는 Form을 활성화시킨다.
  ARG   : a_TabIndex - 사용자가 상단 Tab을 클릭 한 TabIndex 번호
===================================================================================================*/
function gf_OpenMenuFormSearch(an_TabIndex)
{
    var s_TAB_SCR_ID = gds_OpenMenu.GetColumn(an_TabIndex,"SCR_ID");

    for(var i = 0; i < gds_OpenMenu.rowcount; i++)
    {
        var w_Obj = AllWindows();
        for (var i = 0 ; i < w_Obj.count; i++ )
        {
            if(w_Obj[i].id == s_TAB_SCR_ID)
            {
                w_Obj[i].setFocus();
                break;
            }
        }
    }
}


5. For ID    : MainWorkForm
   javaScript

/****************************************************************************************************
  화면명(ID) : Main Work Frame
  작성자     : 김용학
  업무개요   : Work Frame에 Div에 작업할 화면을 연결시켜 Open한다.
  작성일     : 2009.04.14
****************************************************************************************************/
 
 
/*===================================================================================================
  설명  : 화면생성이 완료 될때 발생되는 Event
          화면을 DIV에 Link 시켜준다.
  ARG   : gfn_OpenMenuChildWindow function에서 호출시 넘겨 받은 arg
          as_APP_ID       : Application Group ID
          as_SCR_ID       : 화면 XML ID
          as_USER_MENU_NM : 화면명
          as_MENU_ID      : 메뉴관리TABLE PK
===================================================================================================*/
function MainWorkForm_OnLoadCompleted(obj)
{
    //Title Name Setting
    obj.Title = replace(as_USER_MENU_NM," ","") + "(" + replace(as_SCR_ID,".xml","") + ")"; // 타이틀 설정
    //Div에 작업화면 Link
    div_WorkForm.Url = as_APP_ID + "::" + as_SCR_ID;
}

/*===================================================================================================
  설명  : 화면이 종료될때 발생하는 Event
          이때 상단에 존재하는 Tab을 없애 준다.
===================================================================================================*/
function MainWorkForm_OnUnloadCompleted(obj)
{
    gf_OpenMenuDel(as_SCR_ID);
}

/*===================================================================================================
  설명  : 활성화된 화면에 대한 Tab을 선택한다.
===================================================================================================*/
function MainWorkForm_OnActivate(obj)
{
    gf_OpenMenuFindTab(as_SCR_ID);
}

/*===================================================================================================
  설명  : Sheet의 Ttitle Bar에서 최소화[_] 버튼을 눌었을 경우 작동하지 않게 한다.
===================================================================================================*/
function MainWorkForm_OnSysCommand(obj, strID)
{
    //if ((strID == "Restore") || (strID == "Minimize") || (strID == "Maximize")) return false;
    if (strID == "Minimize") return false;
}



6. 공통으로 사용할 javaScript 파일을 하나 만든다.
   - 메뉴 위치 : 메뉴 -> File -> New -> jScript
   - JsScript Name : jsCommFunc

/*===================================================================================================
  설명  : 넘겨받은 값이  null이거  space 이면 true를 return
  ARG   : a_Value - 문자 또는 숫자형 변수
  RTN   : true - null이거 space이면,    false - 값이 존재 하면
===================================================================================================*/
function cf_IsNull(a_Value) {
    //if (a_Value == undefined){
    //  return true;
    //}
 
    a_Value = a_Value + '';
    a_Value = a_Value.trim();
    
    if (a_Value == null || a_Value == "" || a_Value == 0) {
        return true;
    } else {
        return false;
    }
}


.           Copyright(c) www.keiis.co.kr/study. Allrights reserved.


 

 

Posted by 농부지기
,