dataprocessor
Description
一组 dataprocessor 方法
Details
可以使用 createDataProcessor 方法创建一个新的 DataProcessor 实例。或者,使用 dataProcessor 构造函数也提供了一种创建 DataProcessor 实例的旧式方式。 dataprocessor 对象具备以下 methods 和 events:
Methods
Methods
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 - 取消附加到事件的处理程序(该事件之前通过 attachEvent() 方法附加)
- id - (string) - 事件的唯一标识符
const dp = gantt.createDataProcessor({
url: "/api",
mode: "REST",
});
const handlerId = dp.attachEvent("onAfterUpdate", (id, action, tid, response) => {
console.log("Updated task:", id);
});
// detach a listener
dp.detachEvent(handlerId);
getState (id): string - 返回项的状态(已更新或未更新)
- id - (string | number) - 项的 ID
const status = dp.getState(id);
ignore (code): void - 在不触发 DataProcessor 的情况下执行一段代码
- code - (Function) - 数据修改代码
dp.ignore(() => {
// won't be saved
gantt.addTask({
id: 10,
text: "Task #5",
start_date: "03-02-2025",
duration: 5
});
});
当你不想把这些改动保存到服务器端时,可以在这里放置数据添加和删除操作。
The dp.ignore() method works similarly to 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) - 一组头信息,呈现为
"key":"value"对,应随请求一起发送 - payload - (object) - 额外数据,以
"key":"value"对的形式设置,应该与 headers 一起发送到服务器
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");
getSyncState (): boolean - 返回 DataProcessor 的状态(当所有数据都已保存时为 true)
const state = dp.getSyncState();
如果某些记录尚未保存,或收到一个 "error" 响应,该方法将返回 false。
sendData ([id]): void - 发送尚未保存到服务器端的所有数据
- id - (string | number) - 可选,项的 ID
dp.sendData();
如果提供了 ID,则仅会将一个项发送到服务器端。
未带参数调用时,该方法将发送所有尚未保存的项。
Events
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
Possible response statuses:
onBeforeDataSending (id, state, data): void - 在将数据发送到服务器之前触发
- id - (string | number) - 项的 ID
- state - (string) - 项的状态(操作类型)
- data - (object) - 将要发送到服务器的序列化数据
dp.attachEvent("onBeforeDataSending", (id, state, data) => {
// Custom logic before sending data
return true;
});
updatedinserteddeletedinvaliderror
该事件在每次数据更新请求时触发(在 onBeforeUpdate 之后)。
从事件处理程序返回 false 将阻止数据发送到服务器。
Possible response statuses:
onBeforeUpdate (id, state, data): void - 在更新记录(或多条记录)之前触发
- id - (string | number) - 项的 ID
- state - (string) - 项的状态(操作类型)
- data - (object) - 将要发送到服务器的数据
dp.attachEvent("onBeforeUpdate", (id, state, data) => {
// Custom logic before updating
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 将阻止对该项进行标记。