# View

## Content

## View란 무엇인가

View는 테이블 데이터가 어떻게 구성되고 표시될지를 정의합니다.
데이터 매니저 아키텍처에서:

* 테이블은 데이터를 관리하고 저장합니다.
* View는 해당 데이터가 어떻게 노출될지를 정의합니다.
* 시트(테이블 시트 / 간트 시트)는 View를 렌더링합니다.

View는 데이터와 UI 사이의 구조 계층 역할을 합니다.
다음 항목을 결정합니다.

* 어떤 필드를 표시할지
* 열의 순서와 표시 이름
* 값의 서식 지정 방식
* 관련 테이블 필드를 포함할지 여부
* 적용할 시각적 규칙 또는 유효성 검사 규칙

View는 데이터를 독립적으로 저장하지 않습니다.
View는 호스트 테이블의 현재 상태를 반영합니다.

## View를 사용하는 이유

하나의 테이블은 여러 표시 시나리오를 제공하는 경우가 많습니다.
예를 들면:

* 요약 시트는 주요 필드만 표시할 수 있습니다.
* 상세 시트는 관련 테이블 정보를 포함할 수 있습니다.
* 간트 시트는 작업 관련 열이 필요할 수 있습니다.
* 분석 시트는 조건부 서식 규칙을 적용할 수 있습니다.

각 시나리오마다 테이블 스키마를 수정하는 대신 여러 View를 생성할 수 있습니다.
각 View는 동일한 테이블 데이터를 다른 방식으로 투영한 결과를 나타냅니다.

## 데이터 흐름에서의 View

일반적인 흐름은 다음과 같습니다.

```auto
데이터 원본 → 테이블 → View → 컴포넌트
```

* **테이블**은 원시 데이터를 로드하고 관리합니다.
* **View**는 구조와 표시 방식을 정의합니다.
* **컴포넌트**는 View에 바인딩되어 이를 렌더링합니다.

이러한 분리를 통해 다음을 보장합니다.

* 데이터 무결성은 테이블 계층에 유지됩니다.
* 표시 로직은 View 계층에 유지됩니다.
* UI 컴포넌트는 원시 데이터 구조와 독립적으로 유지됩니다.

## 핵심 기능

View는 다음 기능을 제공합니다.

### 구조 제어

* 열 선택
* 열 순서 정의
* 열 이름 변경
* 계산 열 추가

### 표시 제어

* 열 너비 구성(픽셀 또는 별표 크기 조정)
* 머리글 스타일 및 레이아웃 사용자 지정
* 수식 또는 템플릿을 사용한 셀 콘텐츠 서식 지정
* Null 및 빈 값 표시 방식 제어

### 규칙 기반 동작

* 조건부 서식 적용
* 스파크라인 규칙 추가
* 유효성 검사 규칙 정의
* View 수준 스타일 규칙 추가

### 테이블 간 투영

* 관련 테이블의 필드 포함
* 점 표기법을 사용하여 관련 데이터 접근
* 관련 필드를 사용하여 값 서식 지정

### 런타임 관리

* 열 동적 추가 및 제거
* 스타일 규칙 추가 및 제거
* 자동 필터 및 정렬 동작 제어
* 전체 데이터 수 및 표시 데이터 수 확인

## 테이블과의 관계

* View는 항상 하나의 호스트 테이블에 속합니다.
* 하나의 테이블은 여러 View를 포함할 수 있습니다.
* View를 제거해도 테이블 데이터에는 영향을 주지 않습니다.
* View를 수정해도 테이블 스키마는 변경되지 않습니다.

테이블 간 접근을 위해서는 관계가 정의되어 있어야 합니다.

## 필수 초기화

View를 생성한 후 다음을 호출합니다.

```javascript
view.fetch();
```

이 작업은 View를 초기화하고 바인딩할 준비를 수행합니다.

데이터 원본에서 강제로 다시 로드하려면:

```javascript
view.fetch(true);
```

## 바인딩 대상

View는 다음에 바인딩할 수 있습니다.

* **테이블 시트**
* **간트 시트**

시트는 View에서 정의한 구조를 렌더링합니다.

## 다음 단계

* [View 기본 사항](/spreadjs/docs/v19/features/data-manager/view/view-basics-) \- View 생성\, 초기화 및 관리 방법을 알아봅니다\.
* [View 열 구성](/spreadjs/docs/v19/features/data-manager/view/view-column-configuration) \- 열 구조\, 레이아웃 및 서식 지정 방법을 알아봅니다\.
* [View 스타일 및 규칙](/spreadjs/docs/v19/features/data-manager/view/view-styling-and-rules) \- 조건부 서식\, 스파크라인 규칙 및 유효성 검사 적용 방법을 알아봅니다\.
* [관계가 있는 View](/spreadjs/docs/v19/features/data-manager/view/view-with-relationships) \- View에 관련 테이블 필드를 포함하는 방법을 알아봅니다\.