예제
Resource 스케줄러
Occurrence를 Resource 레인에 배치하고 레인을 포함한 빈 범위 선택을 받습니다.
공개 계약
NxResourceScheduler실행 미리 보기
실시간Resource 스케줄러
캘린더 계약에 Resource 레인, 재할당, 레인을 포함한 빈 범위 선택을 추가합니다.
NxResourceScheduler선택한 레인 범위: 빈 레인 범위를 선택해 App 소유 생성 콜백을 확인하세요.
복사 가능한 소스
코드 예시
TSX
import { useState } from "react";
import type { NxResourceSchedulerSelection } from "@nexia/sdk/host";
import { NxResourceScheduler } from "@nexia/sdk/host";
export function ResourceSchedulerExample() {
const [day] = useState(() =>
new Date().toLocaleDateString("sv-SE", { timeZone: "Asia/Seoul" })
);
const [selection, setSelection] =
useState<NxResourceSchedulerSelection | null>(null);
return (
<div>
<div className="h-[34rem]">
<NxResourceScheduler
resources={[
{ id: "line-a", label: "Line A" },
{ id: "cnc-a1", label: "CNC A-1", parent_id: "line-a" },
]}
occurrences={[
{
source_key: "production.operations",
app_key: "manufacturing",
occurrence_id: "operation-42",
source_revision: "1",
resource: {
app_key: "manufacturing",
resource_key: "operation",
resource_id: "42",
display: "Operation 42",
},
title: "CNC operation 42",
start: `${day}T09:00:00+09:00`,
end: `${day}T11:00:00+09:00`,
all_day: false,
timezone: "Asia/Seoul",
resource_ids: ["cnc-a1"],
allowed_actions: [],
},
]}
timezone="Asia/Seoul"
locale="en"
initialView="resourceTimelineWeek"
fill
loadingLabel="Loading resource scheduler"
emptyTitle="No assigned work"
emptyDescription="No operations are assigned in this range."
errorTitle="Resource scheduler unavailable"
errorDescription="Reload and try again."
readOnlyDescription="This scheduler is read-only."
retryLabel="Retry"
resourceAreaLabel="Production resources"
actionErrorMessage={(reason) =>
`Scheduler action rejected: ${reason}`
}
onSelectRange={setSelection}
/>
</div>
{selection ? (
<p>
Create for {selection.resource_ids.join(", ")} from{" "}
{selection.start}
</p>
) : null}
</div>
);
}