XPLATFORM 101

- Calendar > Kind


왜 타이틀이 Kind인지 모르겠네요. ㅠㅠ
하여간 기본적인 달력 컴포넌트 기능 외에 특정 월만 선택한다든지 기간을 선택한다든지
분기나 주 단위로 조회하는 예제입니다.
실제 업무에서도 많이 사용되는 부분이죠.

기본 달력 컴포넌트에서는 달력 아이콘 버튼 부분을 클릭시
팝업으로 날짜를 선택할 수 있는 컴포넌트가 나타나지만
다른 선택을 필요로 할 수 있습니다.

이런 경우에는 별도의 폼을 만들어서 MaskEdit와 버튼으로 구성된 컴포넌트를 만들 수 있습니다.
또는 달력 컴포넌트를 상속받아서 버튼 이벤트를 가로채 다른 기능을 추가할 수 도 있을 겁니다.
(예제에서는 전자를 선택했습니다).
이렇게 만들어놓으면 재사용이 가능하기 때문에 프로젝트 전반에서 사용할 수 있습니다.

이번 예제는 좀 복잡합니다.
심지어는 날짜 선택하는 기능을 아예 따로 만들어버렸습니다. ㅠㅠ


- 선택된 부분이 Static 입니다. 하나하나 다 만든거죠.

* 참고로만 보시면 좋겠네요. 기본 컴포넌트를 아예 따로 만드는 것은 그렇게 권장하지 않습니다.
물론 필요에 따라 수정이 필요할 수 있지만 나중에 버전 업데이트나 기타 환경의 변화에
대응하기 힘들어질 수 있습니다.

http://cafe.naver.com/xplatform101/197 
XPLATFORM 101

- Calendar > Basic


언젠가부터 웹에서 달력을 사용하는 것이 자연스러워졌습니다.
달력은 단순하게 날짜를 나열하는 것같지만 나라마다 사용하는 형식이 다르며
달력을 보여주는 방식(월요일부터 시작할지, 일요일부터 시작할지)도 다릅니다.

기본적으로 엑스플랫폼에서 사용하는 달력 컴포넌트에 대해 살펴보겠습니다.

달력 컴포넌트는 여러가지 컴포넌트가 복합적으로 구성된 컴포넌트입니다.
UX 스튜디오에서 달력 컴포넌트를 가져다 놓으면 아래와 같이 보여집니다.


MaskEdit와 Button 이 하나의 묶음으로 보여집니다.
버튼을 클릭하면 팝업으로 바로 아래에 날짜를 선택할 수 있는 DatePicker가 나타납니다.
DatePicker 안에도 년도를 이동하는 부분을 spin으로 구성할 수도 있고 전월과 다음월을 이동하는 버튼 등
다양한 컴포넌트가 포함되어집니다.

(1) 바인딩 처리
- 데이터셋과 바인딩을 연결해줄 수 있습니다.
- UX 스튜디오에서 데이터셋을 드래그앤드롭해주면 아래와 같이 설정할 수 있게 됩니다.


그리드와 연결되었을 경우에 선택된 데이터를 달력에도 표기할 수 있습니다.
이때 넘겨지는 데이터는 dateformat에 따라 화면에 표시됩니다.
기본값은 yyyy-MM-dd ddd 입니다.
각 항목에 대한 자세한 내용은 도움말을 참고하세요.
dateformat은 화면에 보여지는 날짜고 editformat은 별도로 설정할 수 있습니다.

각각의 달력은 locale 설정을 따라갑니다.
locale 속성은 달력 컴포넌트 자체적으로도 제공하고
form이나 application 단위에서 제공할 수도 있습니다.

form의 locale 속성은 ja_JP로 설정해도 개별 달력 컴포넌트를 ko_KR로 설정하면 달력 컴포넌트의 설정을 따라갑니다.


(2) 펼쳐 보이기
- 화면에 따라 DatePicker가 바로 보이게 해야 하는 경우
- type 설정에 따라 조정할 수 있습니다.
- type의 기본값은 normal 이며 monthonly 로 설정하면 DatePicker 를 바로 보이게 하며 spin 으로 설정하면
spin 버튼으로 날짜를 선택할 수 있게 합니다.
- spin 설정일 경우에는 버튼으로 조정할 수 있으며 직접 수정할 수 있습니다.
직접 수정시에는 달력에 입력할 수 있는 문자열로 한정이 되기때문에 잘못된 입력을 방지할 수 있습니다.

(3) Trailing Day
- 위의 달력에서는 31일 이후의 날짜 즉 이전달과 다음달의 날짜는 표기가 되지 않는데
경우에 따라 이런 표기가 필요한 경우가 있습니다.
- 이런 항목을 Trailing Day 라고 하며 엑스플랫폼에서는 속성(스타일)에서 usetrailingday 를 선택할 수 있습니다.
기본값은 true 이며 false를 선택하면 보이지 않게 합니다.

(4) 오늘 날짜
- Date() 객체를 사용하면 오늘 날짜를 구할 수 있습니다.
var objDate = new Date();
var sDate = objDate.toFormatString("%Y%m%d");
return sDate;
toFormatString 을 사용할때 날짜 형식과 locale을 지정할 수 있습니다.
- 날짜를 조정하는 경우에는 addDate(), addMonth() 등을 사용해서 활용할 수 있습니다.

(5) 공휴일 지정하기
- innerdataset을 선택해서 date, color, backgroundcolor을 설정하여 표시할 수 있습니다.
- 사전에 데이터셋을 만들어야 하면 매년 필요한 데이터를 넣어주어야 하기때문에
- 필요에 따라 동적으로 생성할 수도 있을듯 합니다.

http://cafe.naver.com/xplatform101/194 
XPLATFORM 101

- ProgressBar > Basic


파일을 내려받거나 복잡한 폼을 불어올때 기다리는 동안 작업의 진행상태를 볼 수 있는 것이
진행상태바 입니다. 영문으로는 ProgressBar 라고 하구요.

엑스플랫폼에서는 컴포넌트로 기본 제공을 하고 있습니다.

도움말을 보면 어떤 작업의 진행상태를 점진적인 Bar의 형태로 표현하고자 할때 사용하는 컴포넌트라고 합니다.

주요 속성부터 알아보겠습니다.

(1) step
- ProgressBar의 진행 기준값으로 증감값을 지정하는 속성
- 기본값은 1
- 설정된 만큼 Pos 값을 증가시키는데 stepIt() 메소드로 실행됩니다.
- 음수로 설정하면 감소하고 양수일 경우에는 증가합니다.

(2) stepIt()
- ProgressBar의 진행값을 step 만큼 진행시키는 메소드
- 값이 Max 값을 초과한 경우 Max 값으로 Pos 를 지정하고 반대의 경우도 마찬가지입니다.

(3) pos
- ProgressBar의 진행 기준값, 현재값
- pos는 min과 max 사이의 값을 가져야 하며 그렇지 않은 경우 stepIt 메소드에서 설명한것처럼 Max, Min 값으로 초기화됩니다.
* 스크립트 상에서 정의하려 할때 min값보다 적을 경우 오류가 나기도 합니다.

(4) max, min
- max의 기본값은 100이며 0보다 큰 정수값을 가져야 합니다.
- min의 기본값은 0이며 0보다 큰 정수값을 가져야 합니다.

(5) blockgap
- ProgressBar의 진행상태를 표시하는 블럭의 간격을 설정하는 속성
- smooth 속성이 false 일 경우에믄 적용됩니다.
- 기본값은 2 이며 0 미만으로 지정하면 0이 됩니다.

(6) blocksize
- ProgressBar의 진행상태를 표시하는 블럭의 크기를 설정하는 속성
- 기본값은 15이며 1 이상의 정수값

(7) smooth
- ProgressBar의 진행모습을 단계적으로 표현할지 여부를 지정하는 속성(스타일)
- true 인 경우에는 막대모양, false 의 경우에는 블럭형식
- bartype이 normal일때만 따라 적용 가능하며 image일 경우에는 영향이 없습니다.


(8) direction
- ProgressBar의 진행방향을 설정하는 속성(스타일)
- 기본값은 forward, backward 설정 가능

(9) bartype
- ProgressBar의 타입을 설정하는 속성(스타일)
- 기본값은 normal 이고 image를 설정할 경우 startimage, endimage, progressimage를 설정할 수 있습니다.
- 속성이 image 인데 progressimage 를 설정하지 않는다면 normal 타입처럼 동작합니다.


* HttpObjStatusEventInfo 와 같은 정보를 가지고 파일 내려받기 상태를 표현할 수도 있고
다른 정보와 연결해서 원하는 대로 처리할 수 있습니다.

http://cafe.naver.com/xplatform101/193