맨위로가기
 

SBUx

닫기

Contextmenu

Context Menu 컴포넌트는 대상 컴포넌트의 고유기능 외에 사용자에 의해서 개발된 기능을 메뉴를 통해 나타나고자 할 때 사용하는 컴포넌트입니다.

기본 사항

사항 설명 비고
HTML 태그 형태

<sbux-contextmenu></sbux-contextmenu>

 
필수 속성 id, name  
uitype 속성 값 없음  
자식 Dom 구조

<menu-item>

context menu 를 구성하기 위한 구조  
이벤트 callback 속성명으로 사용자 지정 함수 callback  
예시) Context Menu 컴포넌트

<sbux-datepicker id="idxDateInLine" name="edu_dt" uitype="date"

                mode="inline"

                show-weeks="true"

                starting-day="1"                

                format-day-title="yyyy년 mm월"

                format-month-title="yyyy년"

                date-format="yyyy/mm/dd"

                contextmenu-id="idxCtxtMenu"></sbux-datepicker>


<sbux-input id="idxUserName" name="useName" style="width:40%;" uitype="text"

               contextmenu-id="idxCtxtMenu"></sbux-input>        

                                       


<script>                

       function fnCtxtCallback(eventName,eventType,eventKey,eventValue,target,etc,userCustom){

          swtich(eventType){

               case 'beforeOpen' :

                   console.log('context menu 가 나타나기 직전');

                   break;

               case 'afterItemClick':

                   console.log('context menu 의 item 을 클릭 후 닫히기 전');

            }                        

            console.log('eventName',eventName);

            console.log("eventType",eventType);

            console.log("eventKey",eventKey);

            console.log("eventValue",eventValue);

            console.log("eventTarge",target);

            console.log("eventEtc",etc);

            console.log("userCustom",userCustom);


        }        

</script>


<!-- callback 함수는 사용자가 정의한 함수입니다.

     callback 함수는 context menu 내 item 을 선택하고 닫힐 때 호출됩니다.

     callback 함수의 인자 값으로 사용자가 임의로 추가할 수 있으며,

     임의 추가하는 경우에는 Sytem 이 부여하는 전달값 뒤에 붙여서 반환합니다.

     System 이 부여하는 전달값은

         첫번째 - eventName : 'callback',

         두번째 - eventType   : 'beforeOpen' | 'afterItemClick',

         세번째 - eventKey  : undefined | item Key, (선택한 item 의 id)

         다섯번째 - eventValue: undefined | item value, (선택한 item 의 value)

         여섯번째 - target : target object, (context menu 를 호출한 컴포넌트)

         일곱번째 - etc : selected Info (지정된 컴포넌트의 선택사항의 정보)

     입니다.

-->


<sbux-contextmenu id="idxCtxtMenu" name="ctxtMenu" css-class="userCSS_Class"

                        z-index="999"

                        callback="fnCtxtCallback(edu_dt)"

                        callback-before-open="fnCtxtCallback">

   <menu-item id="Act 1" text="Act 1" value="Act 1 Item"

                   glyphicon="edit" accesskey="a"></menu-item>

   <menu-item id="divider" divider></menu-item>

   <menu-item id="Act 2" text="Act 2" value="">

       <menu-item id="Act 2_1" text="Act 2_1" disabled></menu-item>

       <menu-item id="Act` 2_2" text="Act 2_2">

           <menu-item id="Act 2_2_1" text="Act 2_2_1"></menu-item>

           <menu-item id="Act 2_2_2"  text="Act 2_2_2"></menu-item>

       </menu-item>

       <menu-item id="Act 2_3" text="Act 2_3"></menu-item>

       <menu-item id="divider" divider></menu-item>

       <menu-item id="Act 2_4"  text="Act 2_4">

           <menu-item id="Act 2_4_1" text="Act 2_4_1"></menu-item>

           <menu-item id="Act 2_4_2" text="Act 2_4_2">

               <menu-item id="Act 2_4_2_1" text="Act 2_4_2_1"></menu-item>

               <menu-item id="Act 2_4_2_2" text="Act 2_4_2_2"></menu-item>

           </menu-item>

       </menu-item>

   </menu-item>

   <menu-item id="Act 3" text="Act 3"></menu-item>

   <menu-item id="Act 4" text="Act 4">

       <menu-item id="Act 4_1" text="Act 4_1"></menu-item>

       <menu-item id="Act 4_2" text="Act 4_2"></menu-item>

   </menu-item>

</sbux-contextmenu>        

예시) Tree 컴포넌트와 연결된 Context Menu 컴포넌트



<script>                            

function fnCtxtCallback(eventName,eventType,eventKey,eventValue,target,etc,userCustom){

                               

  console.log('eventName',eventName);

  console.log("eventType",eventType);

  console.log("eventKey",eventKey);

  console.log("eventValue",eventValue);

  console.log("eventTarge",target);

  console.log("eventEtc",etc);

  console.log("userCustom",userCustom);

       

  // 편집을 위해 선택한 node 의 정보를 전달

  $('#eNodeNm').val(etc.text);

  $('#eNodeVal').val(etc.value);

       

  // 특정조건일때 disabled

  if (etc.text == '열정팀'){

       $(eventKey.delete.$node).addClass('sbux-ctxt-meu-disable');

  } else {

        $(eventKey.delete.$node).removeClass('sbux-ctxt-meu-disable');

  }        

};

               

function fnCtxt(target, ctxtmenu, type,nodeName,nodeValue,nodeDept){


  var targetName = target.attr('name');


  switch(type){

       case 'edit':                                

               // 첫번째 param : 대상 model 명

               // 두번째 param : 선택한 id, 공백일 경우 선택으로 저장된 노드의 값을 읽어옴

               //                console.log('선택Node',SBUxMethod.nodeStatus(targetName));

               // 세번째 parma : 변경할 Node 의 object  

       SBUxMethod.edit(targetName,'',{text:$(nodeName).val(), value:$(nodeValue).val(), dept:$(nodeDept).val()} );

               break;

       case 'delete':

               // 첫번재 param : 대상 model 명

               // 두번재 param : 삭제할 id , 공백일 경우 선택으로 저장된 노드를 삭제

               SBUxMethod.remove(targetName,'');

               break;

       case 'sbling':

       case 'child':

               // type 이 undefined 이거나 공백일때는 child 를 default 로 함

               SBUxMethod.add(targetName,'',{text:$(nodeName).val(), value:$(nodeValue).val(), dept:$(nodeDept).val()},type);                

               break;

       case 'crud':

               var sendData = SBUxMethod.getUpdateData(targetName,'all','status2');

               console.log(sendData);

               break;

       default:

               break;

}

}

var arrTreeData = [

       {"id":"1",        "text":"소프트보울",        "value":"sb", "pid":""},

       {"id":"1_1",        "text":"사업지원팀",        "value":"sb-01",            "pid":"1" , "dept":"001"},

       {"id":"1_2",        "text":"감동팀",                "value":"sb-02",            "pid":"1" , "dept":"002"},

       {"id":"1_3",        "text":"혁신팀",                "value":"sb-03",            "pid":"1" , "dept":"003"},

       {"id":"1_4",        "text":"창조팀",                  "value":"sb-04",            "pid":"1" , "dept":"004"},

       {"id":"1_5",        "text":"열정팀",                "value":"sb-05",            "pid":"1" , "dept":"005"}

];

</script>




<sbux-tree id="idxTree_norm" name="tree_norm" uitype="normal"

             storage-data="object"

             jsondata-ref="arrTreeData"                        

             expand-type="icon"                

             show-delete-confirm="true"                        

             contextmenu-id="idx_ctxt_menu_tree">

</sbux-tree>


<sbux-contextmenu id="idx_ctxt_menu_tree" name="ctxt_menu" uitype="normal" callback="fnCtxtCallback" callback-before-open="fnCtxtCallback" >

 <menu-item id="edit" text="Edit" value="Edit Item" glyphicon="edit" accesskey="e" >

    <menu-item type="text" id="eNodeNm" text="노드명" value=""></menu-item>

    <menu-item type="text" id="eNodeVal" text="Value" value=""></menu-item>

    <menu-item type="text" id="eNodeDept" text="부서ID" value=""></menu-item>

    <menu-item type="button" id="newadapt" text="적용" onclick="fnCtxt(that, this, 'edit',eNodeNm,eNodeVal,eNodeDept)">

    </menu-item>

 </menu-item>                                        

 <menu-item id="delete"  text="Delete" accesskey="d"  onclick="fnCtxt(that,this,'delete',eNodeNm,eNodeVal,eNodeDept)" ></menu-item>

 <menu-item id="divider"  divider></menu-item>                    

 <menu-item id="Sbling New" text="형제노드추가" value="snew" >

    <menu-item type="text" id="sNodeNm" text="노드명" value="신규노드"></menu-item>

    <menu-item type="text" id="sNodeVal" text="Value" value="New Value"></menu-item>

    <menu-item type="text" id="sNodeDept" text="부서ID" value="부서ID"></menu-item>

    <menu-item type="button" id="newadapt" text="적용" onclick="fnCtxt(that,this,'sbling',sNodeNm,sNodeVal,sNodeDept)">

    </menu-item>

 </menu-item>                    

 <menu-item id="Child New" text="자식노드추가" value="cnew" >

    <menu-item type="text" id="cNodeNm" text="노드명" value="신규노드"></menu-item>

    <menu-item type="text" id="cNodeVal" text="Value" value="New Value"></menu-item>

    <menu-item type="text" id="cNodeDept" text="부서ID" value="부서ID"></menu-item>

    <menu-item type="button" id="newadapt" text="적용" onclick="fnCtxt(that,this,'child',cNodeNm,cNodeVal,cNodeDept)">

    </menu-item>

  </menu-item>

  <menu-item id="CRUD"  text="데이터확인" value="crud"  onclick="fnCtxt(that,this,'crud')">

  </menu-item>    

</sbux-contextmenu>