dataprocessor
Description
Dataprocessor 메서드 집합
Details
새로운 DataProcessor 인스턴스는 createDataProcessor 메서드를 사용하여 생성할 수 있습니다. 이전 방식으로는 dataProcessor 생성자를 통해 인스턴스를 만들 수도 있습니다.
dataprocessor 객체는 다음의 메서드와 이벤트를 포함합니다:
메서드
attachEvent (name, handler, settings): string - DataProcessor API 이벤트에 핸들러를 추가합니다
- name - (string) - 이벤트 이름, 대소문자 구분 없음
- handler - (Function) - 이벤트를 처리하는 함수
- settings? - (object) - 선택적, 이벤트 핸들러 설정 객체
const dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
});
dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
console.log("Updated task:", id);
});
detachEvent (id): void - 이전에 추가된 이벤트 핸들러를 ID로 제거합니다
- id - (string) - 이벤트 핸들러 ID
const dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
});
const handlerId = dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
console.log("Updated task:", id);
});
// 이벤트 리스너 제거
dp.detachEvent(handlerId);
getState (id): string - 특정 항목의 상태(업데이트 여부)를 가져옵니다
- id - (string | number) - 항목의 ID
const status = dp.getState(id);
ignore (code): void - DataProcessor 동작을 트리거하지 않고 코드 블록을 실행합니다
- code - (Function) - 데이터 변경 함수
dp.ignore(() => {
// 이 안의 변경사항은 저장되지 않습니다
gantt.addTask({
id: 10,
text: "Task #5",
start_date: "03-02-2025",
duration: 5
});
});
서버에 변경사항을 저장하지 않고 데이터를 추가하거나 제거할 때 유용합니다.
dp.ignore() 메서드는 gantt.silent()와 유사하게 동작합니다.setTransactionMode (mode, total): void - 서버에 데이터를 전송하는 방식을 설정합니다
- mode - (string) - 전송 방식, "GET", "POST", "REST", "JSON", "REST-JSON" 중 선택
- total - (boolean) - 모든 데이터를 한 번에 보낼지, 각 레코드 를 개별 전송할지 여부
- mode - (string) - 데이터 전송 모드 예: "GET", "POST", "REST", "JSON", "REST-JSON"
- headers - (object) - 요청에 포함할 헤더의 키-값 쌍
- payload - (object) - 헤더와 함께 전송할 추가 키-값 쌍
dp.setTransactionMode("POST", true);
요청 시 커스텀 HTTP 헤더나 추가 데이터를 보내고 싶다면, 첫 번째 매개변수로 다음 속성을 가진 객체를 전달할 수 있습니다:
dp.setTransactionMode({
mode: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Accept-Language": "fr-FR"
},
payload: {
"user_id": "12"
}
}, true);
setUpdated (rowId, [mode, state]): void - 항목을 업데이트된 상태로 표시하거나 해제합니다
- rowId - (string | number) - 항목 ID
- mode? - (boolean) - 선택적,
true(기본값)로 업데이트 표시,false로 미표시 - state? - (string) - 선택적, 업데 이트 상태 이름, 기본값은
"updated"
dp.setUpdated(1);
dp.setUpdated(2, true, "deleted");
이벤트
onAfterUpdate (id, action, tid, response): void - 서버 응답을 받고 처리한 후 발생합니다
- id - (string | number) - 업데이트된 항목의 ID
- action - (string) - 응답 상태 (작업 유형)
- tid - (string) - 새 ID (삽입 작업에만 해당)
- response - (mixed) - 파싱된 응답, XML 노드 또는 JSON 객체
dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
if (action === "error") {
alert(`Server error: ${response.message}`);
}
});
updatedinserteddeletedinvaliderror
가능한 응답 상태는 다음과 같습니다:
onBeforeDataSending (id, state, data): void - 서버로 데이터를 보내기 직전에 발생합니다
- id - (string | number) - 항목 ID
- state - (string) - 항목의 현재 상태 (작업 유형)
- data - (object) - 전송될 직렬화된 데이터
dp.attachEvent("onBeforeDataSending", (id, state, data) => {
// 데이터 전송 전 커스텀 로직
return true;
});
updatedinserteddeletedinvaliderror
이 이벤트는 각 데이터 업데이트 요청마다 발생합니다 (onBeforeUpdate 이후).
핸들러가 false를 반환하면 데이터는 서버로 전송되지 않습니다.
가능한 응답 상태:
onBeforeUpdate (id, state, data): void - 레코드가 업데이트되기 전에 발생합니다
- id - (string | number) - 항목 ID
- state - (string) - 항목 상태 (작업 유형)
- data - (object) - 서버로 전송될 데이터
dp.attachEvent("onBeforeUpdate", (id, state, data) => {
// 업데이트 전 커스텀 로직
return true;
});
updatedinserteddeletedinvaliderror
이 이벤트는 각 레코드가 업데이트될 때 발생하며, onBeforeDataSending 이전에 실행됩니다.
false를 반환하면 데이터 전송이 중단됩니다.
가능한 응답 상태:
onRowMark (id, state, mode, invalid): void - 업데이트된 항목에 마크를 하기 전에 발생합니다
- id - (string | number) - 오류와 관련된 항목 ID
- state - (string) - 항목 상태 (작업 유형)
- mode - (boolean) -
true는 마크 추가,false는 마크 제거 - invalid - (object) - 오류 상세 정보 (있을 경우)
dp.attachEvent("onRowMark", (id, state, mode, invalid) => {
// 항목에 마크하기 전 커스텀 로직
return true;
});
이 이벤트는 차단할 수 있습니다. false를 반환하면 해당 항목에 마크가 표시되지 않습니다.