이 가이드는 Svelte의 기본 개념과 패턴에 대한 이해를 전제로 합니다. 만약 익숙하지 않다면, Svelte 공식 문서의 시작하기 튜토리얼을 참고하세요.
DHTMLX Scheduler는 Svelte와 잘 호환됩니다. 동작하는 예제는 GitHub에서 확인할 수 있습니다: DHTMLX Scheduler with Svelte Demo.
새 프로젝트를 만들기 전에 Vite (선택 사항)와 Node.js가 설치되어 있는지 확인하세요.
Vite로 Svelte 프로젝트를 시작하려면 다음 명령어를 실행하세요:
npm create vite@latest
자세한 내용은 관련 문서를 참고하세요.
다음으로 앱 디렉터리로 이동합니다. 프로젝트 이름을 scheduler-svelte로 하고, svelte 옵션을 선택하세요. 그런 다음 아래 명령어를 실행합니다:
cd scheduler-svelte
이후, 원하는 패키지 매니저로 의존성을 설치하고 앱을 실행하세요:
yarn install
yarn dev
npm install
npm run dev
Svelte 프로젝트가 http://localhost:5173에서 실행될 것입니다.
DHTMLX Scheduler를 추가하려면 터미널에서 Ctrl+C를 눌러 앱을 중지하세요. 그 다음 Scheduler 패키지를 설치합니다.
라이브러리의 PRO 버전은 npm/yarn을 통해 당사 프라이빗 저장소에서 제공합니다. 액세스하려면 이 안내를 따르세요.
Evaluation 버전을 받았다면 다음과 같이 설치하세요:
npm install @dhx/trial-scheduler
yarn add @dhx/trial-scheduler
또는, 라이브러리의 zip 패키지는 npm 모듈 구조이므로 로컬 폴더에서 설치할 수도 있습니다.
Scheduler를 앱에 추가하기 위해 새로운 Svelte 컴포넌트를 만듭니다. src/ 디렉터리에 Scheduler.svelte 파일을 생성하세요.
Scheduler.svelte를 열고 Scheduler 관련 파일을 임포트합니다. 설치 방식에 따라 다릅니다:
Scheduler.svelte
import { Scheduler } from "dhtmlx-scheduler";
import "dhtmlx-scheduler/codebase/dhtmlxscheduler.css";
Scheduler.svelte
import { Scheduler } from "@dhx/trial-scheduler";
import "@dhx/trial-scheduler/codebase/dhtmlxscheduler.css";
이 가이드에서는 trial 버전을 사용합니다.
Scheduler를 표시하려면 렌더링할 컨테이너 엘리먼트를 정의해야 합니다. 아래 코드를 참고하세요:
Scheduler.svelte
<script> import { onMount } from "svelte";
import { Scheduler } from "@dhx/trial-scheduler";
import "@dhx/trial-scheduler/codebase/dhtmlxscheduler.css";
let scheduler;
let container;
onMount(() => {
scheduler = Scheduler.getSchedulerInstance();
scheduler.skin = "terrace";
scheduler.init(container, new Date(2023, 9, 6), "week");
return () => scheduler.destructor();
});
</script>
<div bind:this={container} style="width: 100%; height: 100vh;"></div>
Scheduler 컨테이너가 전체 body를 채우도록 하려면, src/의 app.css에서 기본 스타일을 제거하고 아래와 같이 추가하세요:
src/app.css
body {
margin: 0;
padding: 0;
height: 100%;
width: 100%;
}
다음으로 Scheduler 컴포넌트를 앱에 포함합니다. src/App.svelte를 열고 기본 내용을 아래와 같이 교체하세요:
App.svelte
<script> import Scheduler from "./Scheduler.svelte";
</script>
<Scheduler/>
앱을 실행하면 빈 Scheduler가 화면에 나타납니다:
이벤트를 표시하려면 Scheduler에 데이터를 전달해야 합니다. src/에 data.js 파일을 만들고 샘플 데이터를 추가하세요:
src/data.js
export function getData() {
const data = [
{
start_date: "2024-06-10 6:00",
end_date: "2024-06-10 8:00",
text: "Event 1",
id: 1,
},
{
start_date: "2024-06-13 10:00",
end_date: "2024-06-13 18:00",
text: "Event 2",
id: 2,
},
];
return data;
}
그런 다음, 이 데이터를 App.svelte에서 Scheduler 컴포넌트에 prop으로 전달하세요:
App.svelte
<script> import Scheduler from "./Scheduler.svelte";
import { getData } from "./data.js";
</script>
<Scheduler data={getData()} />
Scheduler.svelte 내부에서 scheduler.parse()를 사용해 prop을 적용합니다:
Scheduler.svelte
<script> import { onMount } from "svelte";
import { Scheduler } from "@dhx/trial-scheduler";
import "@dhx/trial-scheduler/codebase/dhtmlxscheduler.css"
export let data;
let scheduler;
let container;
onMount(() => {
scheduler = Scheduler.getSchedulerInstance();
scheduler.skin = "terrace"
scheduler.init(container, new Date(2024, 5, 10), "week");
return () => scheduler.destructor();
});
$: scheduler?.parse(data);
</script>
<div bind:this={container} style="width: 100%; height: 100vh;"></div>
앱을 새로고침하면 이벤트가 표시된 Scheduler가 나타납니다:
Scheduler에서 변경된 내용을 처리하려면 dataProcessor 핸들러를 사용하세요. 이 핸들러는 서버 백엔드와의 통신을 가능하게 해줍니다. 핸들러는 함수 또는 라우터 객체가 될 수 있습니다. dhtmlxScheduler는 Promise 응답을 지원하므로, 작업이 올바르게 완료될 때까지 대기합니다.
createDataProcessor()로 DataProcessor를 생성하고 변경 사항을 다음과 같이 감지할 수 있습니다:
scheduler.createDataProcessor(function(entity, action, data, id) {
scheduler.message(`${entity} ${action}`);
});
백엔드에서 새 레코드 생성 시 이벤트 ID가 변경되는 경우(일반적인 케이스), Promise가 {id: databaseId} 또는 {tid: databaseId} 객체를 반환해야 Scheduler가 해당 이벤트를 올바르게 갱신할 수 있습니다. 자세한 내용은 서버 사이드 연동을 참고하세요.
이로써 Svelte Scheduler 설정이 완료되었습니다. 전체 데모는 GitHub에서 확인할 수 있습니다: svelte-scheduler-demo.
Scheduler 자체는 SQL 인젝션, XSS, CSRF와 같은 위협에 대한 보호 기능을 제공하지 않습니다. 애플리케이션 보안은 백엔드 개발자의 책임입니다.
컴포넌트의 취약점과 권장 보안 대책은 Application Security 문서를 참고하세요.
맨 위로