레퍼런스

GanttRow

차트가 작업에서 만드는 행 모델

GanttRow는 차트가 렌더링하는 행 모델이에요. 화면에 보이는 순서대로 행 하나마다 GanttRow 하나가 만들어져요. 패키지 루트에서 가져오세요.

import type { GanttRow } from '@jaeungkim/gantt-chart';

레인은 서로 겹치지 않는 작업을 한 행에 모아요. 레인을 참고하세요.

필드

/** 렌더링되는 행 하나. 작업 하나이거나 `lane`을 공유하는 여러 작업이에요 */
export interface GanttRow {
  /** 안정적인 키. 행에 놓인 작업 id를 `"+"`로 이은 값이에요 */
  id: string;
  tasks: TaskTransformed[];
  /** 들여쓰기 단계, 0부터 시작 */
  depth: number;
  /** `aria-level`, 1부터 시작 */
  level: number;
  /** 부모가 같은 행들 사이의 `aria-posinset` */
  posinset: number;
  /** 같은 집합의 `aria-setsize` */
  setsize: number;
}
필드타입설명
idstring행에 놓인 순서대로 작업 id를 "+"로 이은 값이에요. 작업이 하나뿐인 행은 그 작업의 id를 그대로 써요.
tasksTaskTransformed[]레인이 없는 행에는 하나, 작업이 lane을 공유하면 여러 개가 들어가요. 모든 행은 작업 하나 이상으로 만들어져서 비어 있는 경우는 없어요.
depthnumber0부터 시작하는 들여쓰기 단계예요. 행의 첫 작업에서 가져오니 그 작업의 depth와 같아요.
levelnumberaria-level 값이에요. 언제나 depth + 1로 계산해요.
posinsetnumber부모가 같은 행들 중에서 이 행이 몇 번째인지 나타내는 aria-posinset이에요. 부모는 depth가 한 단계 얕으면서 위쪽에서 가장 가까운 행으로 정해져요.
setsizenumberposinset과 같은 집합의 aria-setsize예요. 접기는 행을 만들기 전에 적용되니 보이는 행만 세어요.

내부 헬퍼

src/rows/utils/rows.ts에는 buildGanttRows, packLanes, isRowExpandable도 있어요. 패키지는 이 셋을 다시 내보내지 않아요. 헤드리스 코어에도 들어 있지 않고요. 레인 채우기는 렌더링 쪽에서 실행돼요.

참고

  • GanttRow를 넘겨주는 prop이나 콜백은 없어요. 호스트 앱에서 차트가 렌더링하는 행 형태를 타입으로 참조할 수 있도록 내보내기만 해요.
  • 레인이 없는 행의 id는 그 작업의 id라서 collapsedIds 항목이 행 하나를 가리켜요. 이 prop들은 작업 목록과 계층에서 다뤄요.

TaskTransformed는 Task와 작업 타입에 있어요. prop 목록은 GanttProps를 참고하세요.