# 초기화 구문 변경(객체 생성 및 초기화)

## 2. 객체 생성 및 초기화

### 초기화 구문 변경 부분

기존 IBSheet7의 각 열 별 타입, 포맷, 기능에 대해서 IBSheet8에서 변경된 내용을 아래에서 확인해 보세요.

주요 초기화 기능 변경

Cfg(SetConfig)

ibsheet7 속성명 | 기능설명 | 변경 내용
--- | --- | ---
AutoFitColWidth | 지정한 시점마다 각 열의 너비를 가로 스크롤바가 생기지 않는 범위 내로 조정해 주는 기능 | 열 생성시 RelWidth (col) 속성을 통해 각 열의 너비를 비율로 조정하는 형태로 변경
CountFormat,CountPosition,PagingPosition | 조회된 데이터 건수 표시 기능 | InfoRowConfig (cfg) 속성을 통해 설정
DragMode | 드래그 방식,가능 여부 설정 | CanDrag (cfg) 속성을 통해 설정 가능
HeaderRowHeight,DataRowHeight | 헤더,데이터 행의 높이를 설정 | css 를 통해 설정하는 형태로 변경 Size (cfg)를 통해 시트의 행 높이, 아이콘 크기, 버튼 크기 등 전체적인 크기 조절이 가능
FrozenCol,FrozenColRight | 좌우측 열고정 기능 | LeftCols, RightCols 속성을 통해 시트 생성시 설정. 이후로는 setFixedCols (method) 함수로 변경가능
MergeSheet | 헤더, 데이터행의 머지종류 설정 | HeaderMerge (cfg),DataMerge (cfg), PrevColumnMerge (cfg) 속성으로 변경
Page | 한번에 렌더링할 행의 개수 | PageLength (cfg)로 명칭 변경
SearchMode | 조회 렌더링 방식 설정 | SearchMode (cfg)동일 하지만 Mode는 조금씩 다르며 일부 모드는 추가됨
SumPosition | 합계 행에 대한 위치 | setFormulaRowPosition (method) 함수를 통해 설정
ToolTip | 풍선도움말 사용여부 | row,col 속성 설정에서 `Tip` (row) (col) (cell)으로 변경
UseHeaderActionMenu | 헤더행 컨텍스트 메뉴 기능 | Def/Header에서 Menu 속성으로 설정

Cols(InitColumns)

#### Type 속성

Type명 | 변경내용
--- | ---
Text | 일반 문자형 타입으로 동일. 단 `MultiLineText`(여러개행)속성 사용시에는 `Lines`타입이 별도 제공됩니다.
Status | 지원안함 `Status`타입 열의 유무와 상관없이 시트 내에 변경사항에 대한 관리가 자동으로 이루집니다. 일반적으로 수정된 행은 노란색(`.IBColorChanged`),입력은 파란색(`.IBColorAdded`),삭제는 붉은색(`.IBColorDeleted`) 배경색으로 변경되어 표시 됩니다. 서버로 전송되는 행 상태에 대한 값은 기본적으로 'STATUS' 로 전송되며 이름을 변경하고 싶은 경우에는 Cfg에서 `ReqStatusName` 속성으로 변경할수 있습니다. 기존에 `I`, `U`, `D`로 서버로 전송되던 값은 `Added`, `Changed`, `Deleted` 로 전송됩니다. 이를 기존과 동일한 `I`, `U`, `D`로 변경하시려면 ko.js(메세지파일)에서 `ReqStatusAdded`, `ReqStatusChanged`, `ReqStatusDeleted`를 `I`, `U`, `D`로 수정해 주세요. 기존 IBSheet7과 마찬가지로 사용자에게 행의 입력/수정/삭제 여부를 별도 열을 통해 표시하고자 하는 경우에는 아래 Status 타입 마이그레이션 부분을 참고해 주세요.
DelCheck | 지원안함 `deleteRow()`함수를 통해서 행의 상태를 삭제로 변경할 수 있습니다. IBSheet7처럼 체크박스를 두고 상태를 삭제로 변경하고자 하신다면 열의 Type을 `Bool`로 설정하시고 OnChange (json event)를 통해 행의 상태를 바꾸게끔 설정하시면 됩니다. 자세한 코드는 아래 DelCheck 타입 마이그레이션 부분 참고해주세요.
CheckBox | `Bool`타입으로 변경되었습니다.
DummyCheck | 지원안함 `Bool` 타입으로 설정하고 NoChanged (col) 속성을 1로 설정하시면 됩니다.
Radio | `Radio`로 동일합니다.
Combo | `Enum` 타입으로 변경되었습니다. 콤보의 item을 설정하던 `ComboText`, `ComboCode`는 각각 Enum (col), EnumKeys (col)로 변경되었습니다. 특히 `Enum`, `EnumKeys`의 첫번째 글자를 구분자로 사용하는 것을 주의해 주세요. 보다 자세한 내용은 아래 Combo,ComboEdit 타입 마이그레이션을 참고해 주세요.
ComboEdit | 지원안함. Combo,ComboEdit 타입 마이그레이션을 참고해 주세요.
AutoSum | 타입은 Int나 Float으로 설정하시고, FormulaRow (col) 속성을 사용하시면 합계나 평균을 표시할 수 있습니다.
Image | `Img`타입으로 변경되었습니다. 특히 데이터 구조가 크게 변경되었으므로 Type부분의 내용을 참고해 주세요.
Int | `Int`로 동일합니다.
Float | `Float`로 동일합니다.
Date | `Date`로 동일합니다.
Popup | 지원안함. 열 우측에 버튼을 두고자 하시는 경우에는 `Button`속성을 통해 설정하실 수 있습니다. ex) {Type:"Text",Name:"DEPTPOP",`Button:"../assets/imgs/popup.png"`} 버튼 클릭시 발생하는 이벤트는 onButtonClick (event)을 참고하세요.
Pass | `Pass`로 동일합니다.
Seq | 지원안함 열의 타입을 Int로 설정하시고, `Name`을 `"SEQ"`로 지정하시면 자동 순번열 형태로 동작합니다.
Html | `Html`로 동일합니다.
Button | `Button`으로 동일합니다. 단 onButtonClick (event)이벤트 대신 onClick (event)이벤트를 통해 클릭에 대한 로직을 구성하셔야 합니다.
Result | 지원안함
Sparkline | D3 라이브러리를 이용하여 구현 가능 (스파크차트 예제 참고)

#### Format 속성

IBSheet8에서는 타입별로 설정할 수 있는 포맷이 다양하고 기본적인 Format (col) 외에도 DataFormat (col), EditFormat (col), CustomFormat (col)를 통해 서버와 주고받을 데이터 유형이나 사용자 편집시 보여질 데이터 유형 등을 설정할 수 있습니다.
이로 인해 굉장히 유연하고 다양한 형태의 포맷을 지원할 수 있습니다.
또한 자주 사용되는 설정들을(`Format`,`DataFormat`,`EditFormat`…) `IB_Preset` 혹은 다른 변수에 담아두고, 해당 포맷이 필요한 경우 Extend (col) 속성을 통해 쉽게 사용하실 수 있습니다.

    //AS-IS
    var Cols = [
        {Type:"Date",SaveName:"eDate",Width:100,Format:"Ymd"},
    ];

    //TO-BE
    opt.Cols = [
        //YMD 안에 Type,Width,Format 등이 모두 설정되어 있음.
        {Name:"eDate",Extend:IB_Preset.YMD},
    ];

IB_Preset 변수는 `ibsheet-common.js` 파일 내에 있습니다.

#### 그외에 속성

속성명 | IBSheet8 지원 방법
--- | ---
AcceptKeys,ExceptKeys | 지원안함 ResultMask (col) 속성을 통해 정규식으로 로직을 구성하셔야 합니다. 기존 코드에 대해 IBSheet8에서 EditMask (col) 변환하는 코드는 아래 AcceptKeys,ExceptKeys 마이그레이션을 참고해 주세요.
Align | 이전과 동일 (center,left,right)
ApproximateType | 컬럼별 설정 불가. (locale파일(ko.js)에서 Format.DecimalAdjust 값에 따라 결정(ceil,round,floor)
AutoSum | FormulaRow (col) 속성으로 변경. 사용법은 유사하나 함수 연결도 가능해졌습니다.
BackColor | Color (col)로 속성명 변경. 사용법은 동일합니다.
CalcLogic | Formula (col)속성으로 변경되고 기능이 확장되었습니다. 자세한 내용은 Formula (appendix)를 참고해 주세요.
ColMerge | ColMerge (col)속성으로 동일합니다.
ComboCode,ComboText | 위에 `Combo`, `ComboEdit` 타입에 대한 마이그레이션에서 언급한 것과 같이 Enum (col), EnumKeys (col)로 변경되었습니다. 마이그레이션시 IBSheet8에서는 첫번째 글자를 구분자로 사용하는 것을 주의해 주세요.
Edit,EditLen | `Edit`는 CanEdit (col)로 `EditLen`은 Size (col)로 변경되었습니다.
EmptyToReplaceChar | EmptyValue (col)로 변경되었습니다.
FontBold,FontUnderline | TextStyle (col)로 속성명 변경. bold외 밑줄,스트라이크,기울임등을 설정할 수 있습니다.
FontColor | TextColor (col)로 속성명 변경. 사용법은 동일합니다.
Hidden | Visible (col)로 변경되었습니다. 따라서 값도 기존과 반대로 입력되어야 합니다.(Hidden (col)속성은 실제 행의 높이 혹은 열의 너비만 줄여서 표시합니다.)
KeyField | Required (col)로 속성명 변경. 사용법은 동일합니다.
MaximumValue,MinimumValue | onEndEdit 이벤트를 override 하여 구현하여야 합니다. (예제참고)
SaveName | Name (col)으로 속성명 변경. 특히 `Name`은 필수요소로 모든 열에는 반드시 `Name`속성이 있어야 합니다. 또한 한 시트 내에 동일한 `Name`을 갖는 열이 2개 이상 있어도 안됩니다.
Sort | CanSort (col)로 속성명 변경. 사용법은 동일합니다.
ToolTip | Tip (col)으로 속성명 변경. 사용법은 동일합니다.
TreeCol | 지원안함 트리기능 사용시 MainCol cfg속성을 통해 트리가 될 열을 지정하셔야 합니다.
InsertEdit | AddEdit(col)으로 속성명 변경
UpdateEdit | ChangeEdit(col)으로 속성명 변경
Width | 기존과 동일합니다. 그리고 MinWidth (col), MaxWidth (col), RelWidth (col)를 통해 열 너비의 최소,최대 크기나 상대적 크기를 설정하실 수 있습니다.