본문으로 바로가기

[IBSHEET]1. IBSHEET 생성

category Personal Studying~/IBSHEET 2021. 10. 5. 16:03
728x90
반응형
SMALL

1. 무조건 있어야 하는 파일들

<!-- 아이비시트 필수파일존재
<script type="text/javascript" src="${pageContext.request.contextPath}/product/sheet/ib.util.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/product/sheet/ib.common.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/product/sheet/ibsheetinfo.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/product/sheet/ibsheet.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/product/sheet/ibleaders.js"></script>
 -->
 
 
 <!-- 필수 JAR 파일들-->
 ibsheet7-2.0.x.jar
batik-all-xml.jar
commons-codec-1.10.jar
commons-logging-1.1.3.jar
log4j-1.2.13.jar
poi-3.13-all.jar

 

2.Body 태그 안에서 자체로 IBSHEET를 생성해주는 함수를 호출해주자.

createIBSheet("mySheet", "750px", "400px", "en");

IBSHEET 객체를 생성해주는 함수

<HTML>
<body>
 
      <div class="subConView">
         <div class="conWrap">
            <div class="sectionCon">
               <div class="tabs-container">
                  <ul class="nav nav-tabs" id="project_tab">
                     <!-- 버튼 -->
                     <div class="buttonGroup">
                        
                     </div>
                  </ul>
               </div>
               <div class="BtnGroupR" style="margin-bottom: 10px;">
                  <a href="${pageContext.request.contextPath}/project/useradd?id=<c:out value="${getProjectId }"/>" class="btn btn-primary" >참여인력 추가</a>
                  <a href="javascript:doAction('save')" class="btn btn-primary">저장</a>
               </div>
            </div>
            
            
            <div class="ib_product" style="height:600px;">
               <script type="text/javascript">
                  createIBSheet("mySheet", "100%", "100%");
               </script>
            </div>
            
            
         </div>
      </div>
</body>
</HTML>

 

3.서버에서 던진 데이터를 IBSHEET에 넣어서 같이 조회하자

3-1.빨간색 의 IBSHEET 헤더 부분을 만들어주자

<script language="javascript">
        //IBSHEET 가져오는 함수
 		 function LoadPage() {
                 //1.먼저 아이비시트 초기화를 해준다.
                    var initSheet = {};


				  //만들어진 전체 IBSHEET에 대한 속성을 걸어준다. EX)자동으로 데이터가 많아지면 스크롤바가 생김
                    initSheet.Cfg = {
                        SearchMode : smLazyLoad,
                        DeferredVScroll : 1
                    };
					
                    //IBSHEET의 헤더를 만들어주는 부분
                    initSheet.Cols = [ 
                     {
                       Header:"제외",   //보여줄 원하는 이름
                       Type:"DelCheck", // 삭제 체크박스가 생김
                       SaveName:"DELCHECK", //추후 서버에 보내줄때 MAP 타입의 KEY 로서 사용됨
                       MinWidth:10,  
                       Width:10
                     },{
                        Header : "성명",
                        Type : "Text",  //입력이 가능하다
                        SaveName : "user_name",
                        MinWidth : 40,
                        Align : "Center"

                    }, {
                        Header : "프로젝트 참여자",
                          Type : "Combo",
                          ComboText :"외부감독자|책임자|참조자|팀원|의자결정권자|평가위원장|평가위원",
                          ComboCode : "1|2|3|4|5|6|7",  //ComboText는 보여줄 이름, ComboCode는 ComboText값의 value 값 ex)selectBox 에서 option을 선택했을때 출력되는 innerText와 value 값을 생각하면 됨
                          MinWidth : 40,
                          Width : 40,
                          Wrap : 1,
                          MultiLineText : 1,  //shift+Enter 를 눌러서 text안에서 편집중 줄바꿈이 가능함
                          SaveName : "group_id",
                          Align : "Center"
                    }, {
                        Header : "직급",
                        Type : "Text",
                        MinWidth : 30,
                        Width : 40,
                        SaveName : "rank",
                        Align : "Center"
                    }, {
                        Header : "부서",
                        Type : "Text",
                        MinWidth : 40,
                        Width : 40,
                        SaveName : "department_name",
                        Align : "Center"
                    },{
                        Header : "상태",
                        Type : "Status", // IBSHEET가 알아서 데이터가 삭제되면 Status 값을 D, 추가되면 I, 수정은 U 로서 판단할수있으며 추후 서버에 넘겨서 DATA[i].getStatus==I 라는 조건으로 CRUD를 구현하면됨
                        MinWidth : 40,
                        Width : 40,
                        SaveName : "Status",
                        Align : "Center",
                        Hidden : 1 //IBSHEET에서 보이지 않게 하기 1:안보임 0 또는 선언을 안하면:보임
                    } ,
                    {
                        Header : "프로젝트번호",
                        Type : "Text",
                        MinWidth : 40,
                        Width : 40,
                        SaveName : "project_id",
                        Align : "Center",
                        Hidden : 1
                    }
                    
                    ];
                    
                    //초기화=> EX)내가 어떤 컬럼을 편집중이다가 초기화 버튼을 누르면 처음 서버에서 받은 상태의 IBSHEET로 돌아간다.
                    IBS_InitSheet(mySheet, initSheet);
                    
                    //doAction 자체함수를 이용하여 조회를 시작한다.
                    doAction('search');
                    }
                    
                  /*Sheet 각종 처리*/
                 function doAction(sAction) {
                    switch (sAction) {
                    case "search": //조회
                        mySheet.LoadSearchData(total);
                        break;
                    case "save": //저장
                    console.log("저장");
                        //저장 시 트랜잭션 변화가 있는 데이터 전부를 보내기 위해 Param 속성을 이용하여 시트의 변화있는 전체 데이터를 전소
                        var data = JSON.stringify(mySheet.GetSaveJson());
                        mySheet.DoSave("/project/usersave",{// /project/usersave경로를 받는 컨트롤러로 이벤트 발생후의 변경된 결과값을 서버로 보내어 DB에 저장시켜주자
                            "Param" : data,
                            "UrlEncode" : 0
                            });
                       console.log(data);
                    break;
                    }
                }
                 window.addEventListener("onload", LoadPage()); //위의 각종 처리 이벤트가 완료되면 자동으로 새로고침이 되어 변경된 IBSHEET가 나온다.    
                    </script>

 

3-2.파란색 의 헤더에 걸 맞는 데이터를 넣어주자.

2-1.서버에서 데이터형식에 맞게 가공하여 IBSHEET에 전달하자

IBSHEET에 데이터를 전달해줄때 지켜줘야 하는 형식이 있다.

{"DATA":[ {~,~}, {~,~} ]}

해당 형식을 서버에서 가공해서 IBSHEET에게 던져줘야한다.

필자는 DB에서 꺼낸 데이터를 JSON 배열로 만들고 JSONObject의 키값을 DATA로 VALUE를 JSON배열로서 넘겨주었다.

 @RequestMapping(value="/test", method=RequestMethod.GET)
 public ModelAndView test(Principal loginUser, Model model, String selectDepartment) throws ParseException, org.json.simple.parser.ParseException {

        List<Map> projectMemberList = jobService.selectProjectMember(menu_Id);

        for(int i=0; i<projectMemberList.size(); i++) {
                    ObjectMapper objectMapper = new ObjectMapper();

        jsonString = objectMapper.writeValueAsString(projectMemberList.get(i));

        JSONParser jsonParser = new JSONParser();
        JSONObject jsonObj = (JSONObject) jsonParser.parse(jsonString);

        projectMemberjsonarr.add(jsonObj);

        }
        JSONObject projectMemberjson = new JSONObject();
        projectMemberjson.put("DATA", projectMemberjsonarr);

}
{"DATA":[{"group_id":2,"user_name":"윤주영","department_name":"연구개발1","rank":"사원"},{"group_id":4,"user_name":"류슬희","department_name":"미정"}]}

 

2-2 서버에서 받은 데이터를 자바스크립트에 맞게 다시 변형시켜 IBSHEET가 생성되는 시점에 데이터를 넣어주자,

서버에서 전달한 형식은 JAVA 타입이므로 JAVASCRIPT에 맞게 다시 변형시켜주자.

서버에서 전달한 데이터를 JSTL 태그로 받고있다. 

<input type="hidden" id="projectMemberjson" value='<c:out value="${projectMemberjson}"/>'>

 

  var json = document.getElementById('projectMemberjson').value;
  
  //자바에서 던져서 확인해보면 공백이 같이 날라오는데 자바스크립트에서는 &#034으로 읽히므로 정규식으로 제거하자
  var json1=json.replace(/&#034;/g,'"')
  alert("서버에서 html 공백 특수문자 제거하고: "+json1);
  
  //JSON 형식의 배열을 객체형태로 변환하여 키값으로 VALUE값을 뽑도록하자
  var test3 = JSON.parse(json1);

   //2. 서버에서 가져온 1의 데이터들을 IBSHEET를 로드하는 함수에 적용시켜준다.
   var list = new Array();
   var total = new Object();
  
  
  //IBSHEET를 가져오는 함수 시점 안에서 데이터를 넣어주자.
  function LoadPage() {
  
  	for(var i=0; i<test3.DATA.length; i++) {
                     var data = new Object();
                     var pm = test3.DATA[i];
                     data.user_name = pm.user_name; //이름
                     data.group_id = pm.group_id; //역할
                     data.rank = pm.rank; //직급
                     data.department_name = pm.department_name; //부서
                     list.push(data);
                     }
                  total.DATA = list; //오브젝트 형태의 DATA 키 값에 배열값을 넣어주면 끝!
                  
                  .
                  .
                  .
                  .
                  .
                  .
                  .
                  .
                  .
                  .
                  }

728x90
반응형
LIST