# 제품의 특징

`IBSheet 8`은 순수 javascript 기반의 데이터 그리드 컨트롤 컴포넌트로 사용자 PC에 어떠한 설치 없이 `HTML, javascript, CSS`만을 이용하여 윈도우 어플리케이션에서 볼 수 있는 데이터 그리드의 다양한 기능을 제공합니다.

## 주요한 제품의 기능

### 데이터 조회 기능

ajax 통신으로 통해 서버로부터 가져온 JSON 데이터를 파싱하여 클라이언트 화면에 로딩 합니다.
데이터를 로딩하는 방법에 따라 `lazyload, fastload` 등 다양한 형식으로 데이터 렌더링 기능을 제공합니다.

### 소팅 기능

헤더 셀을 클릭하거나 제공되는 API를 통해 단일열 뿐 아니라 여러개 열에 대해 동시에 소팅하실 수 있습니다.
또한 열이나 각 셀의 데이터에 따라 숫자형식의 소팅, 문자형식의 소팅, 소팅 제외 등을 설정하실 수 있습니다.
[여러개 열에 대한 소팅 예]

### 틀고정 및 행고정 기능

그리드의 좌/우측에 원하는 열만큼을 고정하여 볼 수 있는 기능을 제공합니다.
또한 데이터 상단 혹은 하단에 일부 행을 고정하여 원하는 데이터를 설정하여 사용하실 수도 있습니다.
[좌/우측 열에 대한 틀고정 예]

### 필터링 기능

헤더 아래 필터행을 통해 사용자가 조회 된 데이터 중에 찾고자 하는 내용을 필터링 하여 볼 수 있는 기능을 제공합니다.
한 셀 안에서 and나 or 조건을 통해 필터링 하거나 여러개 열간에 and나 or 조건을 통해 필터링 하실 수 있습니다.
[필터행을 통한 필터링 예]

### 다양한 데이터 유형 및 유효성검사 기능

그리드 내에 날짜 열이나, 숫자 입력 열, 마스킹 기능 등을 통해 다양한 데이터 입력 및 유효성 체크가 가능합니다.
또한 Html 형식의 셀을 통해 셀 안에 원하시는 `Html` 구문을 표현하실 수도 있습니다.

### 상태 관리 및 저장 기능

조회된 데이터 내에서 사용자가 수정한 행이나 셀에 대한 정보를 관리하여, 최종 저장시 수정된 데이터만 서버측으로 전송하는 기능을 제공합니다.
신규로 추가되거나 수정된 데이터, 삭제될 데이터 행에 대에서는 각기 다른 배경색으로 표시되어 사용자의 시인성을 높였습니다.

### 합계 및 Formula 기능

열 전체 데이터의 합계를 합계행에 표시하거나, 열에 다른 열간의 계산로직을 설정함으로써 열 내에 다양한 계산값이나 기능을 설정할 수 있습니다.

### 다양한 import/export 기능

`엑셀, text, pdf` 등의 파일형식으로 데이터를 다운로드 하거나, `엑셀, csv, text` 파일을 업로드 하는 기능을 제공합니다.

### 그룹핑 기능

사용자가 드래그를 통해 조회된 데이터를 그룹지어 보거나, 그룹된 데이터 내에서 소계 등의 계산 결과를 확인 하실 수 있습니다.
[특정 열을 기준으로 그룹핑 예]

### 트리 기능

그리드 내에 특정 열을 트리로 지정함으로써 데이터 간에 상하위 관계를 표현할 수 있습니다.
트리로 구성된 데이터는 부모/자식 간의 관계에 대한 여러가지 API를 사용하실 수 있습니다.
[트리사용 예]

### 피벗 기능

피벗 다이얼로그를 통해 사용자가 피벗팅 할 데이터를 구성하고, 계산 결과를 확인하실 수 있습니다.

### 자동 머지 기능

헤더 영역이나 데이터 영역 내에서 인접한 셀간에 같은 값을 갖을때 자동으로 병합하는 기능을 제공합니다.
또한 셀의 내용과 무관하게 특정 영역을 병합하여 보여주는 것도 가능합니다.
[입력된 글자를 기준으로 자동 셀 병합]

### 열의 너비, 위치 변경 기능

사용자가 헤더 셀에서 Drag & Drop을 통해 열의 너비를 변경하거나 열의 위치를 수정하실 수 있습니다.
또한 이렇게 변경된 시트의 정보(열의 위치, 너비, 보임여부)는 사용자 브라우저에 저장되어 추후 해당화면에 다시 접속시 기존에 설정한 모습대로 보여지게 하실 수도 있습니다.
[드래그를 통한 열 위치 이동]

### 페이징 조회 기능

대량의 데이터가 조회되었을때 페이지 단위로 나눠서 보여주는 기능을 제공합니다.
페이징 조회 기능 사용시에는 시트 하단에 페이지네이션을 이용하여 원하는 페이지로 이동하실 수 있습니다.

### 선택 영역에 대한 copy & paste 기능

그리드 내에서 드래그시 원하는 영역을 선택할 수 있고, 이를 `ctrl+c`를 통해 클립보드로 복사하거나 클립보드의 내용을 그리드 내부에 `ctrl+v`를 통해 붙여넣기 하는 기능을 제공합니다.

### 프린팅 기능

그리드의 내용과 더불어 타이틀이나, 조회 조건등의 내용을 같이 인쇄하는 기능을 제공합니다.
인쇄시 각 페이지에서 그리드의 타이틀(그리드 상단의 타이틀(페이지 타이틀 설정 가능) 및 헤더 타이틀)이 반복적으로 보여지는 등의 기능을 제공합니다.

### 자동완성기능

특정 열에 입력가능한 데이터 집합을 설정해 두고, 사용자가 입력하는 글자에 따라 가능한 경우의 문자열이 보여지게끔 하는 기능을 제공합니다.
[자동완성기능 예]

### Drag & Drop 기능

행이나 셀을 Drag하여 다른 시트에 복사하거나 이동하실 수 있습니다.
[시트간 행이동]

### 힌트 및 풍선 도움말 기능

열의 너비가 부족하여 셀안의 모든 내용이 보여지지 않을 때, 마우스커서가 올라간 셀에 한하여 풍선 도움말을 표시하거나 셀의 크기를 임시적으로 늘려 보여주는 기능을 제공합니다.
[힌트기능 예]

### 컨텍스트 메뉴 기능

시트 내에서 마우스 우측버튼 클릭시 다양한 기능의 컨텍스트 메뉴를 구성하여 사용하실 수 있습니다.
[컨텍스트 메뉴 기능 예]