[Tapestry ZTree Component] 기본기능 구현.

2013. 12. 27. 09:36 - 에릭투스
  • ----------------------------------------------------------------------------------------------------------
  • 1. JQGrid (2013-12-30 ~ 2014-1-4)
  • ----------------------------------------------------------------------------------------------------------

- Width를 개발자가 지정하지 않고, 컬럼 사이즈에 맞게 자동조절 해주도록. (관련 기술방법 알아보기).

- 정렬(엑셀기준) String- 좌측정렬, 숫자- 우측정렬.

 

  • ----------------------------------------------------------------------------------------------------------
  • 2. ZTree
  • ----------------------------------------------------------------------------------------------------------

-다이나믹(동적) 노드 추가/수정(drag)/삭제.

2) Basic CRUD 기능.

 2-1) setting.edit.enable = true ( 수정[rename]/삭제 기능 추가. )

    - edit=all/rename/delete/update/*add => ReName, Delete, Drag(수정).

    - AddNode의 경우만 setting.view.addHoverDom, setting.view.removeHoverDom으로 제어.

    - 다행이 새로 생긴 노드도, Edit/remove/drag&drop 적용가능. (물론 필터도 가능)

 

*Tapestry에서 Enumeration 가능할지?

*(Dynamic Tree) jQuery Ajax 통신 + Tapestry Event 연동 가능한지? – 가능함.

  - 각 이벤트 별 function 걸어서 value값만 refresh하면 되지 않을까 싶음.

  - callback –> onDrag(?), onDrop, onRemove, onRename –> Refresh Value.

 

2-2) setting.edit.drag ( 수정[이동/복사] 기능 추가 )

   - setting.edit.drag.autoExpandTrigger : (true/false) true일 경우 onExpand Callback을 사용가능.

   - setting.edit.drag.isCopy : (true[default]/false) true일 경우(isMove도 true) 이동시 ctrl+node이동시 복사됨.

   - setting.edit.drag.isMove : (true[default]/false)

*true/false라도 function을 통해 제어 가능하다. (javascript의 가장 큰 장점)

 

------------------------------------------------------------------------------------------------------------------

*NBI 포스코/동부CNI작업 하느라 2013-12-23(월) 오전 시간 할당함.

*Ibatis Boolean Type – DB Insert 방법.

-좀 애매하긴 하다, DB에다가 저장할때는 true/false 문자열로 넣어야한단말인가?

-테스트 케이스 만들어서 테스트 해봄.

결론)

boolean을 ibatis로 직접 넣을 경우 (ex (boolean) #useDefaultSet#)

  -> true는 1, false는 0으로 인식하여 DB에 저장된다.

이제 가져오는 것도 잘 변환이 되는지 확인해봐야할듯.

  –> 가져오는 매핑 처리도 잘된다. 대신 javaType을 boolean으로 해야하며,

  -> 0값은 false로, 1값은 true로 매핑해줌. (javaType을 boolean으로 하지 않을 경우, 0,1값이 들어간다.)

     즉, DB타입은 char(1)로 해놓고, boolean값을 사용하면 될듯합니다!!

------------------------------------------------------------------------------------------------------------------

 

3) jQuery Ajax / Tapestry Event 연동 기능 구현. [해결]

- URL을 자바에서 만들어 주면, jQuery에서는 받아서 Ajax요청.

*Form안에 버튼이 있으면, 자동 submit된다..;; 이걸 막으려면 어케해야함? – form바깥으로 button을 뺀다.

*이슈) 파라미터가 안 넘오온다..;; 아마 event의 경우 get/post방식이 아닌가?

       jQuery 사용법 이슈였음. context로 처리했는데, data(JSON)로 처리해야 request로 받을 수 가 있음

       *data - Data to be sent to the server.

      오예 – data:jQuery(“#testForm”).serialize() 도 인식한다.

      따라서 Java Event처리해주는 부분에서 @RequestParameter로 받으면 됨. (한글도 잘됨)

     

 

4) 아이콘. Asset Link 연동, Icon skin 적용. [일단 해결]

-> AssetSource.getClasspathAsset(“path”) 를 통해 Asset(icon)을 가져 올 수 있음.

-> 데이터를 다시 까서, 경로를 넣어야함..;;

-> 파일 별로 random경로가 달라지기때문에, 모두 까서 다시 경로 지정 해야할듯..

ex) /cygnus-core/asset/meta/88d822f4/img/wing1-256.png

 

5) zTree 데이터 저장 구조가 두개로 나뉘어야함.

- update(이동/복사/붙여넣기)로 인해 데이터 변경이 발생하므로, 전체 tree data저장 컬럼.

- checked 트리를 저장하는 컬럼.

*의문점. 꼭 type=any로 해야하나?

*onDrop –> value , checked Update / *onRemove –> value, checked Update / *onRename –> value, checked Update

 

 5-1) getNodes의 경우, children이 포함되어 JSONArray를 리턴함.

  => 초기 데이터 구조처럼, 병렬구조로 변경이 필요함.

  => getNodes의 경우, 즉 초기 Nodes를 계속 잡고있음.. (변경된 Nodes는 나오지 않는다..;;;; 헐..)

     -> 내가 재귀처리 안해서 그럼. children의 경우 for문으로 처리하면 안됨.

 

5-2) Data JSON , Checked JSON 둘다 처리 됨.

   변경된 “트리 정보(Data)”를 페이지 이동 후에도 유지할 수 있도록 처리 해야함. (callback에서 value와 check를 통해 처리하면 될듯.)

   *꼭 필요한 정보(id,Pid,Name정도)와 부가정보(checked…) 둘 중 DB에 무엇을 저장할 것 인가.

   *체크항목 같은 세부설정을 유지하기 위해선 부가정보가 필요함. 일단 2개로 가기로함.

   *Callback함수에서 받아온 Data JSON을 합쳐서 처리하면 체크값도 유지될듯. //근데 DB연동하면 굳이 할 필요없는 작업이기도함.

 

6) [Dynamic Tree] Node를 열 때마다 Ajax호출 및 JSON데이터 받아오기.

*이거까지만 되면 그래도 왠만한 기능구현은 가능하니…

*Example대로 구현했지만, 어떻게 돌아가는지 모르겠음.

*Parent인데(isParent=true), 자식노드가 local에 없으면, 다시 url로 요청쿼리를 보냄.

  (물론, 설정한 파라미터도 같이넘김)

  별도 설정이 필요한게 아니었음. 그냥 parent Node를 만든후 자식노드를 안넣으면 됨.

 

*zTree

radio, add Custom Dom, DropDown, Multiple Tree, Dynamic Tree loading

 

7) zTree 남은 부분. (추후 고급기능 개발 시 진행할 부분)

- Dynamic Loading Tree (난이도 – 상)

- Radio , Add Custom Dom

- DropDown (난이도 - 중)

- Multiple Tree(Pallete) (난이도 – 상)

- Right Menu (중간정도)

- Search Nodes (상)

 

7) UI 개발 방법론에 대해 고민을 해봐야할듯.

Javascript 위주의 개발로 갈지.

- 객체지향으로 가려면 어떻게 개발하는게 더욱 효율적인지.

   -어짜피 TML내부에서 자바스크립트를 쓸 수 없기때문에 JS를 빼내야한다.

   -이를 모듈로 구현하고, window객체를 사용해 TML에서 접근할 수 있도록 한다. (가능)

   -객체지향으로 개발하면, 추후에 반복될 경우, 공통모듈로 분리하여 재사용하도록 하는게 쉬워지니.

    자바스크립트 객체지향방법에 대해 좀더 R&D를 해봐야할 듯 하다.

- 진정한 UI 모듈화를 하려면 어떻게 해야하는지. (디자인패턴)

 

 

8) jqGrid 남은 목록

- Group Header (colspan, rowspan)

- Master/detail Grid.

- search (외부연동)

- validation

- Grouping
- resizing Grid.

'Workspace > Workbook' 카테고리의 다른 글

[머리식히기] IntelliJ IDEA  (0) 2013.12.04

다른 카테고리의 글 목록

Workspace/Workbook 카테고리의 포스트를 톺아봅니다