데이터 불러오기
dhtmlxScheduler는 아래의 세 가지 형식으로 데이터 로딩을 지원합니다:
- JSON
- XML
- ICal
인라인 데이터셋에서 데이터 불러오기
인라인 데이터셋에서 직접 데이터를 불러오려면 parse 메서드를 사용합니다:
scheduler.init('scheduler_here',new Date(2009,10,1),"month");
...
scheduler.parse([
{text:"Meeting", start_date:"2019-04-11 14:00", end_date:"2019-04-11 17:00"},
{text:"Conference", start_date:"2019-04-15 12:00", end_date:"2019-04-18 19:00"},
{text:"Interview", start_date:"2019-04-24 09:00", end_date:"2019-04-24 10:00"}
],"json");
Displaying events as a cascade
데이터 파일에서 데이터 불러오기
외부 파일에서 데이터를 불러오려면 load 메서드를 사용합니다:
scheduler.init('scheduler_here',new Date(2018,10,1),"month");
...
scheduler.load("data.json"); // 파일에서 데이터 불러오기
데이터베이스에서 데이터 불러오기
데이터베이스에서 데이터를 불러오는 방법은 두 가지가 있습니다. 두 방법 모두 클라이언트와 서버 측 처리가 필요합니다.
- 첫 번째 방법은 REST API를 사용하여 서버와 통신합니다.
- 서버 측 구현은 선택한 프레임워크에 따라 다릅니다. 예를 들어 Node.js의 경우, Scheduler가 AJAX 요청을 보내는 URL에 대한 서버 라우트를 추가합니다.
이 라우트는 JSON 응답을 생성합니다.
app.get('/data', function(req, res){
db.event.find().toArray(function(err, data){
// 모든 레코드에 id 속성 설 정
for (var i = 0; i < data.length; i++)
data[i].id = data[i]._id;
// 응답 출력
res.send(data);
});
});
- 클라이언트 측에서는 Scheduler가 데이터를 요청할 URL을 load 메서드에 지정합니다:
Loading from a database. Client-side code
scheduler.init('scheduler_here', new Date(), "month");
scheduler.load("apiUrl");
노트
REST API를 통한 서버 측 연동에 대한 자세한 내용은 "Server-Side Integration" 문서에서 확인할 수 있습니다.
- 두 번째 방법은 PHP Connector를 사용하여 데이터베이스 테이블에서 데이터를 불러오는 방식입니다.
- 서버 측에서는 XML 또는 JSON 형식의 데이터를 반환하는 스크립트를 구현합니다:
Static loading from db. Server-side code
include ('dhtmlxConnector/codebase/scheduler_connector.php');
$res="mysql_connect(""localhost","root","");
mysql_select_db("sampleDB");
$calendar = new SchedulerConnector($res);
$calendar->render_table("events","id","event_start,event_end,text","type");
- 클라이언트 측에서는 서버 스크립트 경로를 load 메서드에 지정합니다:
Static loading from db. Client-side code
scheduler.init('scheduler_here', new Date(), "month");
scheduler.load("events.php");
노트
자세한 내용은 "dhtmlxScheduler와 dhtmlxConnector 연동하기" 가이드에서 확인할 수 있습니다.
여러 소스에서 데이터 불러오기
여러 소스에서 데이터를 불러오려면 multisource 확장 기능을 사용할 수 있습니다:
scheduler.plugins({
multisource: true
});
노트
여러 소스는 정적/동적 로딩 모두에서 사용할 수 있습니다.
관련 파일을 포함한 후, load 메서드는 소스 배열을 인자로 받을 수 있습니다:
scheduler.load(["first/source/some","second/source/other"]);