# 진행선

## Content

진행선은 간트 차트에 그려지는 분석 오버레이입니다. 선택한 프로젝트 기준 날짜를 기준으로 작업 진행 상황을 비교하는 데 도움이 됩니다.
진행선은 다음 요소로 구성됩니다.

* 프로젝트 수준의 기준 날짜
* 타임스케일의 기준 날짜 앵커
* 대상 작업에서 생성된 진행 지점
* 진행 지점을 연결하는 경로
* 선택적 날짜 레이블

진행선은 간트 눈금선과 독립적으로 구성되지만 상태 날짜 눈금선과 동일한 프로젝트 날짜를 사용할 수 있습니다.
![image-20260720.d3e3d8.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260720.d3e3d8-20260820.ba6187.png?width=600)

## 상태 날짜

상태 날짜는 상태 보고의 기준으로 사용되는 프로젝트 수준의 날짜입니다.
다음에서 사용할 수 있습니다.

* 상태 날짜 눈금선
* 진행선의 기준 날짜가 프로젝트 상태 날짜로 설정된 경우 진행선

```javascript
// Set the project status date.
ganttSheet.project.statusDate = new Date(2026, 0, 27);
```

## 상태 날짜 눈금선

상태 날짜 눈금선은 간트 차트에서 프로젝트 상태 날짜를 표시하는 선택적 눈금선입니다.
상태 날짜 눈금선은 눈금선 시스템에 속하며 진행선과 별도로 구성됩니다. 현재 날짜 눈금선과 같은 다른 간트 눈금선과 동일한 구성 패턴을 따릅니다.
표시되는 경우 상태 날짜 눈금선은 상태 날짜가 포함된 타임스케일 셀의 오른쪽 가장자리에 그려집니다. 이 위치는 진행선이 프로젝트 상태 날짜를 사용할 때 진행선의 기준 날짜 앵커와 정렬됩니다.

```javascript
ganttSheet.gridlines.statusDate = {
    lineType: GC.Spread.Sheets.GanttSheet.GanttGridlineType.dashDot,
    lineColor: "#5B9BD5"
};
```

눈금선 구성에 대한 자세한 내용은 [눈금선](/spreadjs/docs/v19/features/ganttsheet/gridlines)을 참조하세요.

## 기준 날짜

진행선은 한 번에 하나의 프로젝트 수준 기준 날짜를 사용합니다. 기준 날짜는 작업 진행 상황을 비교할 날짜를 결정합니다.
기준 날짜는 다음 중 하나일 수 있습니다.

* 프로젝트 상태 날짜
* 프로젝트 현재 날짜

진행선에서 프로젝트 상태 날짜를 사용하는 경우 `project.statusDate`를 참조합니다.
프로젝트 현재 날짜를 사용하는 경우 `project.currentDate`를 참조합니다.
프로젝트 현재 날짜에는 항상 유효한 값이 있습니다. 명시적으로 설정하지 않으면 현재 시스템 날짜가 사용됩니다. 진행선이 프로젝트 상태 날짜를 사용하도록 설정되어 있지만 `project.statusDate`가 설정되어 있지 않은 경우 진행선은 프로젝트 현재 날짜를 유효한 기준 날짜로 사용합니다.

```javascript
// Set the project status date.
ganttSheet.project.statusDate = new Date(2026, 0, 27);

// Display the Progress Line at the project status date.
ganttSheet.progressLine = {
    display: true,
    referenceDate: "statusDate"
};
```

## 기준 날짜 앵커

진행선은 경로 생성 및 반환 동작에 자체 기준 날짜 앵커를 사용합니다.
기준 날짜 앵커는 활성 기준 날짜가 포함된 타임스케일 셀의 오른쪽 가장자리에 배치됩니다. 이 규칙은 두 기준 날짜 모드에 모두 적용됩니다.

* 기준 날짜가 프로젝트 상태 날짜인 경우 앵커는 상태 날짜 셀의 오른쪽 가장자리에 배치됩니다.
* 기준 날짜가 프로젝트 현재 날짜인 경우 앵커는 현재 날짜 셀의 오른쪽 가장자리에 배치됩니다.

이 앵커는 진행선 오버레이의 일부이며 눈금선과 동일한 개체가 아닙니다.
예를 들어 현재 날짜 눈금선은 해당 타임스케일 셀의 왼쪽 가장자리에 그려지는 반면, 현재 날짜에 대한 진행선 앵커는 해당 셀의 오른쪽 가장자리에 그려집니다. 따라서 두 항목이 동일한 가로 위치에 표시되지 않을 수 있습니다.

## 진행 지점

진행 지점은 대상 작업이 얼마나 진행되었는지를 나타냅니다.
![image-20260720.dcad2a.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260720.dcad2a-20260820.b7b6a6.png?width=250)
각 대상 작업은 진행선에 최대 하나의 진행 지점을 제공합니다. 대상 작업은 간트 차트에서 작업 표시줄을 그릴 수 있고 유효한 진행 지점을 생성할 수 있는 작업입니다.
진행 지점은 작업의 다음 항목을 기반으로 결정됩니다.

* 시작 날짜
* 완료 날짜
* 완료율

진행 지점의 유효 날짜는 작업의 "완료된 시점" 위치에 해당합니다.
기준 날짜 당일 또는 이후에 시작하는 작업은 진행 지점을 생성하지 않습니다. 기준 날짜 당일 또는 이전에 완료되는 작업은 완료율이 100%가 아닌 경우에만 진행 지점을 생성합니다. 기준 날짜에 걸쳐 있는 작업은 진행 지점을 생성하며, 해당 지점은 기준 날짜를 넘어가지 않습니다.
기준 날짜에 걸쳐 있는 요약 작업의 경우 진행 지점은 기준 날짜까지의 요약 작업 및 마일스톤이 아닌 하위 작업의 진행 상황을 기반으로 계산됩니다.

## 경로 유형

진행선 경로 유형은 진행 지점과 기준 날짜 앵커 사이에서 선이 연결되는 방식을 제어합니다.
경로 유형은 다음 두 가지 동작에 따라 결정됩니다.

* 각 진행 지점 이후 선이 기준 날짜 앵커로 돌아가는지 여부
* 연결 선분에 대각선 또는 직교 연결을 사용하는지 여부

기본 제공 경로 유형은 이러한 동작을 조합합니다.

* **대각선 연결로 기준 날짜로 돌아가기**

선은 각 진행 지점을 연결하고 대각선 선분을 사용하여 기준 날짜 앵커로 돌아갑니다.
![image-20260720.bb46a4.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260720.bb46a4-20260820.281e49.png?width=400)

* **직교 연결로 기준 날짜로 돌아가기**

선은 각 진행 지점을 연결하고 직교 선분을 사용하여 기준 날짜 앵커로 돌아갑니다.
![image-20260720.6ff7e0.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260720.6ff7e0-20260820.e4c2b9.png?width=400)

* **기준 날짜로 돌아가지 않고 대각선으로 연결**

선은 각 지점 이후 기준 날짜 앵커로 돌아가지 않고 진행 지점을 연결합니다. 연결에는 대각선 선분이 사용됩니다.
![image-20260720.67a0ae.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260720.67a0ae-20260820.2c75e5.png?width=400)

* **기준 날짜로 돌아가지 않고 직교로 연결**

선은 각 지점 이후 기준 날짜 앵커로 돌아가지 않고 진행 지점을 연결합니다. 연결에는 직교 선분이 사용됩니다.
![image-20260720.8c1587.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/36b63360-fb01-457c-a448-c3ce32aaf454/image-20260720.8c1587-20260820.923a69.png?width=400)

```javascript
ganttSheet.progressLine = {
    display: true,
    referenceDate: "statusDate",
    pathType: {
        returnToReferenceDate: false,
        pointConnectionType: "orthogonal"
    }
};
```

## 진행선 스타일

진행선의 시각적 스타일을 사용자 지정할 수 있습니다.
진행선 스타일에는 다음이 포함됩니다.

* 경로 유형
* 진행 지점 스타일
* 진행선 스타일
* 날짜 레이블 스타일

### 진행 지점 스타일

진행 지점 스타일은 각 진행 지점이 렌더링되는 방식을 제어합니다.
다음을 구성할 수 있습니다.

* 지점 모양
* 지점 색

### 진행선 스타일

진행선 스타일은 연결 경로가 렌더링되는 방식을 제어합니다.
다음을 구성할 수 있습니다.

* 선 유형
* 선 색

이러한 설정은 눈금선 시스템이 아닌 진행선 자체에 속합니다.

### 날짜 레이블 스타일

진행선은 기준 날짜 앵커 위에 날짜 레이블을 표시할 수 있습니다.
날짜 레이블에는 활성 기준 날짜가 표시됩니다. 다음을 구성할 수 있습니다.

* 레이블 표시 여부
* 날짜 형식
* 글꼴

레이블 색은 진행선의 선 색을 따릅니다.

```javascript
ganttSheet.progressLine = {
    display: true,
    referenceDate: "statusDate",
    lineStyle: {
        lineType: GC.Spread.Sheets.GanttSheet.GanttGridlineType.thin,
        lineColor: "#C0504D"
    },
    pointStyle: {
        shape: "diamond",
        color: "#C0504D"
    },
    dateLabelStyle: {
        display: true,
        format: "yyyy-MM-dd",
        font: "10pt Calibri"
    }
};
```

## 표시 동작

진행선에는 표시 여부를 설정하는 옵션이 있습니다.
진행선이 표시되지 않으면 경로, 진행 지점 및 날짜 레이블이 그려지지 않습니다.

```javascript
// Hide the Progress Line.
ganttSheet.progressLine = {
    display: false
};
```

유효한 진행 지점을 생성하는 작업이 없는 경우 진행선은 기준 날짜에 세로선으로 표시됩니다.

## 진행선 및 상태 날짜 눈금선

상태 날짜 눈금선과 진행선은 서로 독립적으로 구성됩니다.
상태 날짜 눈금선은 눈금선 시스템에 속하며 간트 차트에서 `project.statusDate`를 표시합니다. 진행선은 자체 기준 날짜 앵커, 진행 지점, 경로 및 선택적 날짜 레이블을 생성하는 분석 오버레이입니다.
둘 중 하나만 독립적으로 표시하거나 둘 다 함께 표시할 수 있습니다.
진행선이 프로젝트 상태 날짜를 사용하는 경우 두 항목 모두 상태 날짜 타임스케일 셀의 오른쪽 가장자리에 그려지므로 기준 날짜 앵커가 상태 날짜 눈금선과 정렬됩니다.
상태 날짜 눈금선에 대한 자세한 내용은 [눈금선](/spreadjs/docs/v19/features/ganttsheet/gridlines)을 참조하세요.

## 타임스케일 자동 맞춤에 미치는 영향

`timescale.autoFitMode`가 `"project"`로 설정된 경우 스크롤 가능한 가로 범위는 일반적으로 다음을 경계로 합니다.

* 프로젝트 시작
* 프로젝트 완료

유효한 활성 진행선이 있는 경우 해당 진행선의 활성 기준 날짜도 프로젝트 자동 맞춤 범위에 포함됩니다.
따라서 다음과 같이 동작합니다.

* 기준 날짜가 프로젝트 시작 날짜보다 이전인 경우 스크롤 가능 범위가 왼쪽으로 확장될 수 있습니다.
* 기준 날짜가 프로젝트 완료 날짜보다 이후인 경우 스크롤 가능 범위가 오른쪽으로 확장될 수 있습니다.
* 기준 날짜가 프로젝트 범위 내에 있는 경우 프로젝트 경계는 변경되지 않습니다.

프로젝트 자동 맞춤 모드에서는 활성 진행선의 기준 날짜가 스크롤 경계가 될 수 있습니다.
자세한 내용은 [타임스케일 범위 및 자동 맞춤](/spreadjs/docs/v19/features/ganttsheet/timescale-range-and-auto-fit)을 참조하세요.

## 예제

다음 예제에서는 프로젝트 상태 날짜를 설정하고 상태 날짜 눈금선을 표시한 다음 프로젝트 상태 날짜를 기준 날짜로 사용하는 진행선을 구성합니다.

```javascript
// Set the project status date.
ganttSheet.project.statusDate = new Date(2026, 0, 27);

// Configure the Status Date gridline.
ganttSheet.gridlines.statusDate = {
    lineType: GC.Spread.Sheets.GanttSheet.GanttGridlineType.dashDot,
    lineColor: "#5B9BD5"
};

// Configure the Progress Line.
ganttSheet.progressLine = {
    display: true,
    referenceDate: "statusDate",
    pathType: {
        returnToReferenceDate: false,
        pointConnectionType: "orthogonal"
    },
    lineStyle: {
        lineType: GC.Spread.Sheets.GanttSheet.GanttGridlineType.thin,
        lineColor: "#C0504D"
    },
    pointStyle: {
        shape: "diamond",
        color: "#C0504D"
    },
    dateLabelStyle: {
        display: true,
        format: "yyyy-MM-dd",
        font: "10pt Calibri"
    }
};
```