[]
간트 시트는 정확한 일정 계획과 리소스 할당을 위해 근무 시간과 비근무 시간을 결정하는 다양한 캘린더를 사용합니다. 각 캘린더는 근무 주, 근무일, 근무 시간으로 구성되며, 사용자가 이를 직접 커스터마이즈할 수 있습니다.
프로젝트를 생성하면 기본 기본 캘린더를 사용하여 작업을 스케줄링합니다. 프로젝트의 근무일 및 시간이 기본 캘린더의 시간 외에 있다면, 다른 기본 캘린더로 변경하거나 프로젝트 캘린더의 근무 시간을 조정할 수 있습니다.
SpreadJS는 간트 시트 용으로 다음과 같은 내장 캘린더를 제공합니다.
Standard (월요일~금요일, 오전 8시 ~ 오후 5시)
Night Shift (월요일~금요일, 오후 11시 ~ 오전 4시 / 토요일, 오후 11시 ~ 오전 8시)
24 Hours (하루 24시간, 주 7일 근무)
다음 코드는 24시간 연속 근무일을 의미하는 hours24
캘린더를 프로젝트에 할당하는 예입니다:
var calendar = GC.Spread.Sheets.GanttSheet.Calendar.hours24;
ganttSheet.project.calendar = calendar;
SpreadJS는 프로젝트 캘린더, 근무 주, 근무 시간을 정의하고 커스터마이즈할 수 있습니다. GC.Spread.Sheets.GanttSheet.Calendar
API를 사용해 기본 프로젝트 캘린더를 생성할 수 있습니다. 다음은 캘린더 이름을 지정하여 생성하는 코드 예시입니다:
GC.Spread.Sheets.GanttSheet.Calendar("defaultCalendar")
캘린더를 생성한 후에는 GC.Spread.Sheets.GanttSheet.WorkWeek
API를 사용하여 기본 근무 주(WorkWeek)를 정의할 수 있습니다. 근무 주(WorkWeek)는 각 요일에 대한 근무일(WorkDay) 목록이며, 각 요일별 근무 시간을 지정할 수 있습니다. 반면, 근무일(WorkDay)은 근무 시간대들을 정의하는 배열로, 각 시간대의 시작 및 종료 시간을 설정할 수 있습니다.
GC.Spread.Sheets.GanttSheet.WorkTime
및 GC.Spread.Sheets.GanttSheet.Time
API를 사용하여 근무 주 내에서 각 요일의 근무 시간을 설정할 수 있습니다. 추가로, SpreadJS는 GC.Spread.Sheets.GanttSheet.CustomWorkWeek
API를 제공하여 일반 근무 주의 확장 형태인 커스텀 근무 주(Custom WorkWeek)를 생성할 수 있습니다. 커스텀 근무 주를 사용하면 휴일, 휴가 등의 특별한 시간을 설정할 수 있으며, 특정 날짜에 대해 근무 시간을 조정할 수 있습니다.
캘린더 설정은 주로 작업 기간 계산에 필요한 속성을 정의합니다. 다음 설정을 구성할 수 있습니다:
설정 | 설명 | 기본값 | 샘플 코드 |
---|---|---|---|
week start | 주의 시작 요일 | 일요일 |
|
default start/end time | 하루의 기본 시작/종료 시간 | 시작: 08:00, 종료: 17:00 |
|
hours per day | 하루 근무 시간 | 8시간 |
|
hours per week | 주간 근무 시간 | 40시간 |
|
days per month | 월간 근무 일수 | 20일 |
|
duration unit [요약 작업에서만 변경 가능. 간트시트뷰에서 일반 작업은 항상 '일(day)' 사용] | 근무 시간의 단위 | 일(day) |
|
default duration decimal digits | 시간 계산에 사용되는 정밀도 | 3 |
|
프로젝트의 일반적인 근무 일정이 사용 가능한 기본 캘린더와 일치하지 않는 경우, 작업을 적절하게 일정에 맞추기 위해 **프로젝트의 근무 시간(Working Hours)**을 변경할 수도 있습니다. 근무 시간을 변경하려면, 먼저 프로젝트의 현재 캘린더 또는 기본 제공 네임스페이스(Built-in Namespace)에서 기본 근무 주(WorkWeek)를 가져와야 합니다.
그런 다음, 해당 캘린더를 수정하고 수정된 캘린더를 프로젝트에 적용하면 됩니다. 다음 코드 샘플은 캘린더에서 근무 시간을 변경하는 방법을 보여줍니다:
// 프로젝트의 현재 캘린더에서 기본 근무 주 가져오기
var calendar = ganttSheet.project.calendar;
console.log(calendar.defaultWorkWeek);
// 또는 내장 캘린더에서 가져오기
console.log(GC.Spread.Sheets.GanttSheet.Calendar.standard);
console.log(GC.Spread.Sheets.GanttSheet.Calendar.hours24);
console.log(GC.Spread.Sheets.GanttSheet.Calendar.nightShift);
// 근무 시간 변경
var calendar = GC.Spread.Sheets.GanttSheet.Calendar.standard;
var defaultWorkWeek = calendar.defaultWorkWeek;
var workday = defaultWorkWeek.getWorkDay(GC.Spread.Sheets.GanttSheet.DayOfWeek.Monday);
// 근무일은 다음과 같은 시간대로 구성됨:
/*
[
{ start: { hour: 8, minute: 0 }, end: { hour: 12, minute: 0 } },
{ start: { hour: 13, minute: 0 }, end: { hour: 17, minute: 0 } }
]
// 즉, 8:00~12:00, 13:00~17:00
*/
workday[1].end.hour = 13;
// 수정된 캘린더 적용
ganttSheet.project.calendar = GC.Spread.Sheets.GanttSheet.Calendar.standard;
}
SpreadJS 디자이너에서 근무 시간을 변경하고 선택한 캘린더 정보를 설정할 수 있습니다.
이를 위해, 간트 시트를 추가한 후 프로잭트(PROJECT) 탭을 클릭하고 속성(Properties) 그룹에서 근무시간 변경(Change Working Time) 버튼을 선택합니다.
근무시간 변경(Change Working Time) 대화 상자에서 일정 관리용(For Calendar) 드롭다운을 통해 수정할 캘린더 정보를 선택하고, 다양한 날짜를 선택하여 해당 날짜의 특정 근무 시간을 확인할 수 있습니다. 이후, 근무 주(Work Weeks) 탭을 클릭하여 기간을 선택하고 자세히(Details) 버튼을 눌러 기본 근무 시간을 변경합니다.
일을 이 특정 작업 시간으로 설정(Set day(s) to these specific working times) 옵션을 선택한 경우, 시작(From) 및 끝(To) 열을 사용하여 선택한 날짜의 근무 시간을 설정할 수 있습니다.
참고:
Set day(s) to these specific working times를 선택해야만 근무 시간을 변경할 수 있습니다.
변경된 날짜는 Nondefault work week로 표시됩니다.
또한, 근무시간 변경(Change Working Time) 대화 상자의 오른쪽 상단에 있는 새 일정관리 만들기...(Create New Calendar...) 옵션을 선택하여, 사용자가 직접 기본 캘린더(Base Calendar)를 생성할 수도 있습니다.