# Operation
Each time a user operates on the sheet, an array of Op
will be emiited through onOp
callback. An op describes how to modify the current data to reach the new data after the user's operation. For example, here is an op when user sets the cell font to be bold on cell A2.
[
{
"op": "replace",
"id": "0",
"path": ["data", 1, 0, "bl"],
"value": 1
}
]
The op is useful for database modification and syncing state in online collabration.
A working example with Express
(backend server) and MongoDB
(data persistence) is avaiable in backend-demo
folder.
Run it with node index.js
and visit Collabration example (opens new window)
You can initialize data by visiting http://localhost:8081/init
# Format
Each Op
has the following structure.
{
"op": string,
"id": string,
"path": any[],
"value": any
}
where
Field | Description |
---|---|
op | Operation name, should be one of add , remove , replce , insertRowCol , deleteRowCol , addSheet , deleteSheet |
id | Sheet id of the operation |
path | Path of the value to be updated |
value | Value to be updated |
# Operation name
Name | Description |
---|---|
add | Add the value to path |
replace | Replace the value at path |
remove | Remove the value at path |
insertRowCol | Special op, see insertRowCol |
deleteRowCol | Special op, see deleteRowCol |
addSheet | Special op, see addSheet |
deleteSheet | Special op, see deleteSheet |
# Special ops
Special ops are ops that are hard to be described by add
, replace
or remove
, because the op data size will be too large.
# insertRowCol
Indicates that user performed row or column insertion.
value
will be in the format:
{
type: "row" | "column";
index: number;
count: number;
direction: "lefttop" | "rightbottom";
id: string;
}
where
Field | Description |
---|---|
type | row or column |
index | Start index of row or column to be inserted |
count | Amount of the rows or columns to insert |
direction | Insert direction, lefttop or rightbottom |
id | id of the operated sheet |
# deleteRowCol
Indicates that user performed row or column deletion.
value
will be in the format:
{
type: "row" | "column";
start: number;
end: number;
id: string;
}
where
Field | Description |
---|---|
type | row or column |
start | Start index of row or column to be deleted |
end | End index of row or column to be deleted |
id | id of the operated sheet |
# addSheet
Indicates that user created a new sheet.
value
will be the new sheet data.
# deleteSheet
Indicates that user deleted a sheet.
value
will be in the format
{
id: string;
}
where
Field | Description |
---|---|
id | id of the sheet to be deleted |
← Format attributes API →