# 데이터 매니저 

## Content

데이터 매니저는 서버 측에 요청을 보내고, 데이터가 준비되면 간트 시트에 데이터를 바인딩하는 강력한 로컬 데이터 엔진입니다.
간트 시트는 데이터 매니저의 뷰(View)를 데이터 소스로 사용하는 것을 지원합니다.

![GS-flowchart](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/df1fe1ee-eb3c-4da7-8c20-a0d8d2b7e734/GS-flowchart.3b4a69.png?width=536)

## 데이터 원본 스키마

데이터 원본 스키마란 특정 데이터 원본 내에서의 데이터 구조를 의미합니다.
간트 시트는 데이터 원본으로부터 다음과 같은 필드들을 **작업(Task) 필드**로 요구합니다.

| **작업 필드** | **데이터 타입** | **설명** |
| ----- | ------ | --- |
| @cols=3:**필수 필드** |
| taskNumber | number | 작업 번호. <br>각 작업의 고유 번호를 나타냅니다.<br>※ 이 필드가 없으면 간트 시트에는 루트 작업만 표시됩니다. |
| name | string | 작업 이름 |
| duration | String/number/object | 작업 기간<br>값, 단위, 시간 등을 포함할 수 있습니다. |
| predecessors | string | 작업 선행 관계를 나타내는 문자열입니다. |
| mode | string | 스케줄 모드<br>`'Auto'` 및 `'Manual'` 두 가지 유형을 지원합니다.<br>기본 모드는 `'Auto'`입니다. |
| @cols=3:**선택 필드** |
| start | date | 작업 시작일<br>작업 스케줄 모드가 `'Auto'`인 경우, 이 필드는 계산 필드입니다. |
| finish | date | 작업 종료일<br>작업 스케줄 모드가 `'Auto'`인 경우, 이 필드는 계산 필드입니다. |
| complete | number | 작업 완료일<br>값은 0 \~ 1 사이의 백분율로 표현됩니다. |
| isMilestone | boolean | 작업이 마일스톤인지 여부를 나타냅니다.<br>기본값은 'False'입니다. |

아래는 샘플 데이터 원본입니다.

```auto
[
  {
    "id": 1,
    "taskNumber": 1,
    "parentId": null,
    "name": "Plan for Project Server 2013 deployment",
    "duration": "1 day", 
    "start": "21/12/23 8:00",
    "finish": "21/12/23 17:00",
    "predecessors": ""  
},
{
    "id": 2,
    "taskNumber": 2,
    "parentId": null,
    "name": "Prepare for deployment",
    "duration": "4 days",
    "start": "21/12/24 8:00",
    "finish": "21/12/29 17:00",
    "predecessors": "1"
  },
]
```

### 빌드 유형

간트 시트는 Parent, Level, Children과 같은 세 가지 계층 유형으로 작업 트리를 생성합니다. 필요에 따라 사용된 빌드 유형을 수동으로 변경할 수도 있습니다.
다양한 계층 유형에 대해 자세히 알아보려면 [계층 유형 추가](/spreadjs/docs/v18/features/ganttsheet/add-hierarchy-types)를 참조하세요.

### 기간 단위

간트 시트의 기간 단위는 기간을 계산하기 위한 특정 매개변수를 정의하는 캘린더 설정입니다.
기간이 데이터 소스에서 문자열로 제공되면, 간트 시트는 자동으로 기간을 파싱하고 정규화합니다. 예를 들어, 6일을 실제 기간 유형 { value: 1, unit: "Day", time: 86400000 }로 변환합니다.
간트 시트는 다음 기간 단위를 지원합니다:

* Minute (분)
* Hour (시간)
* Day (일)
* Month (월)
* Week (주)

하지만 소스 기간 데이터가 숫자나 { value: 6 } 형식이면, 간트 시트는 [project.calendarSettings.defaultDurationUnit](/spreadjs/api/v18/classes/GC.Spread.Sheets.GanttSheet.CalendarSettings#defaultdurationunit)을 기본 단위로 사용하여 기간을 파싱하거나 편집합니다.
캘린더 설정에 대해 자세히 알아보려면 [캘린더 설정](/spreadjs/docs/v18/)을 참조하세요.

### 작업 완료

간트 시트는 완료 필드에서 작업 진행률을 백분율로 표시합니다. 이를 위해 데이터 소스에 "complete" 필드가 포함되어야 합니다.
간트 차트 뷰의 열 설정에서 complete를 정의하면, 작업 표시줄 내의 진행률 바를 드래그하여 완료 값을 수정할 수 있습니다.

> **참고**: 현재 요약 작업의 상태는 하위 작업의 완료 백분율이 변경되더라도 변하지 않습니다.

아래 코드 샘플은 간트 차트 뷰에서 "complete" 열을 정의하는 예제입니다.

```auto
var view = myTable.addView("ganttView", [
    ...
    { value: "complete", caption: "완료" },
    ...
]);
```

작업 상태에 대해 자세히 알아보려면 [작업 작업](/spreadjs/docs/v18/features/ganttsheet/task-operations#change-task-progress-status)을 참조하세요.

## 열 스키마

간트 시트는 작업을 예약하기 위해 유효한 데이터가 필요합니다. 따라서 간트 차트 뷰는 여러 셀 유형을 제공하여 작업 데이터 편집 경험을 개선합니다.

### 열 셀 유형

간트 시트의 각 셀 유형은 테이블 구성의 열 스키마에 정의된 데이터 유형과 대응됩니다. 이러한 셀 유형을 통해 작업 관련 데이터를 효율적으로 관리하고 편집할 수 있습니다.

| 셀 유형 | 설명 | 샘플 |
| ---- | --- | --- |
| TaskSchedulingMode | TaskSchedulingMode 셀 유형은 목록 선택기이며, ‘Auto’와 ‘Manual’ 두 가지 모드를 지원합니다. <br>모드 값에 따라 작업 일정 결과가 달라집니다. | ![GS-TaskSchedulingMode.29973e.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/GS-TaskSchedulingMode.29973e.484f10.png) |
| TaskDuration | TaskDuration 셀 유형은 숫자 선택기입니다. <br>기간 단위를 사용하여 기간 값을 늘리거나 줄일 수 있습니다. | ![GS-TaskDuration.5d2e99.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/GS-TaskDuration.5d2e99.4319cc.png) |
| TaskDate | TaskDate 셀 유형은 날짜-시간 선택기입니다. <br>일반적으로 “start”와 “finish” 필드 열에 적용됩니다. | ![GS-TaskDate.5e1b74.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/GS-TaskDate.5e1b74.be995a.png) |
| TaskPrecessor | TaskPredecessor 셀 유형은 트리 뷰 목록 선택기이며, 작업 이름과 함께 작업을 나열합니다. <br>일반적으로 “predecessors“와 “successors“ 필드 열에 적용됩니다. | ![GS-TaskPrecessor.d2d246.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/GS-TaskPrecessor.d2d246.3e3b85.png) |
| TaskSubject | TaskSubject 셀 유형은 아웃라인 표시가 있는 텍스트 셀입니다. | ![GS-TaskSubject.7aa285.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/216c2e7e-5246-4c37-8843-3854aa344a6a/GS-TaskSubject.7aa285.82c101.png) |

아래는 열 스키마 샘플입니다.

```auto
schema: {
    columns: {
        ...
        mode: { dataType: "TaskSchedulingMode" },
        name: { dataType: "TaskSubject" },
        duration: { dataType: "TaskDuration" },
        start: { dataType: "TaskStartDate" },
        finish: { dataType: "TaskFinishDate" },
        predecessors: { dataType: "TaskPredecessor" }
        ...
    }
}
```

> **참고**: 소스 데이터의 필드 이름이 간트 시트의 사전 정의된 작업 필드 이름과 일치하면, 관련 데이터 유형이 자동으로 맞춰집니다.