Skip to content

Commit 3e234ca

Browse files
authored
Merge pull request #4983 from VisActor/feat/batch_cell_values&filterApi
Feat/batch cell values&filter api
2 parents 50437e3 + 06238c9 commit 3e234ca

34 files changed

Lines changed: 2197 additions & 285 deletions
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "fix: prepareEdit occor error #4871\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "892739385@qq.com"
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "feat: optimize search latency\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "liuhualin@bytedance.com"
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "feat(table): 新增基于记录索引的单元格值修改方法及优化范围删除性能\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "zhanghao.gino@bytedance.com"
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "feat(数据操作): 添加syncRecordOperationsToSourceRecords选项支持同步操作到源数据\n\n添加syncRecordOperationsToSourceRecords配置选项,当设置为true时,表格的增删改操作会同步到原始records数组\n修改DataSource类实现源数据同步逻辑,包括添加、删除和更新记录时对原始数据的处理\n添加相关测试用例验证同步功能\n在示例中添加同步选项的UI控制\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "zhanghao.gino@bytedance.com"
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "fix(vtable): 修复过滤状态下新增记录位置错误问题\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "zhanghao.gino@bytedance.com"
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "feat: 新增批量修改单元格值接口及优化筛选态数据同步\n\nrefactor: 重命名 changeCellValuesByIds 为 changeCellValuesByRanges\nfeat: 新增批量修改离散选区单元格值的接口 changeCellValuesByRanges\nfeat: 增加 syncRecordOperationsToSourceRecords 配置支持筛选态数据同步\nfeat: 新增 CHANGE_CELL_VALUES 聚合事件及相关文档\ndocs: 更新接口文档和指南说明新增功能\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "zhanghao.gino@bytedance.com"
11+
}

docs/assets/api/en/event/event.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,31 @@ Parameter types of event callback function:
594594
{ col: number; row: number; rawValue: string | number; currentValue: string | number; changedValue: string | number };
595595
```
596596

597+
## CHANGE_CELL_VALUES
598+
599+
Batch cell value change event (aggregated).
600+
601+
Parameter types of event callback function:
602+
603+
```
604+
{
605+
values: Array<{
606+
col: number;
607+
row: number;
608+
recordIndex?: number | number[];
609+
field?: string | number;
610+
rawValue: string | number;
611+
currentValue: string | number;
612+
changedValue: string | number;
613+
}>;
614+
};
615+
```
616+
617+
**Notes:**
618+
619+
- This event may be suppressed by the `noTriggerChangeCellValuesEvent` parameter in relevant APIs.
620+
- When multiple cells are updated in batch, the event will be fired once with an aggregated `values` list.
621+
597622
## CHECKBOX_STATE_CHANGE
598623

599624
Change the checkbox state. **ListTable table exclusive event**

docs/assets/api/en/methods.md

Lines changed: 149 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1708,8 +1708,43 @@ Change the value of the cell:
17081708
* @param value Changed value
17091709
* @param workOnEditableCell Whether to only change editable cells
17101710
* @param triggerEvent Whether to trigger change_cell_value event when the value changes
1711+
* @param noTriggerChangeCellValuesEvent Whether to suppress the aggregated change_cell_values event
17111712
*/
1712-
changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell = false, triggerEvent = true) => void;
1713+
changeCellValue: (
1714+
col: number,
1715+
row: number,
1716+
value: string | number | null,
1717+
workOnEditableCell = false,
1718+
triggerEvent = true,
1719+
noTriggerChangeCellValuesEvent?: boolean
1720+
) => void;
1721+
```
1722+
1723+
## changeCellValuesByRanges(Function)
1724+
1725+
Batch update data within multiple selected ranges.
1726+
1727+
Currently it only supports setting all cells in the ranges to the same value.
1728+
1729+
**ListTable specific**
1730+
1731+
```
1732+
/**
1733+
* Batch update data within multiple selected ranges.
1734+
* Currently it only supports setting all cells in the ranges to the same value.
1735+
* @param ranges Selected ranges
1736+
* @param value The unified value to set
1737+
* @param workOnEditableCell Whether to only change editable cells
1738+
* @param triggerEvent Whether to trigger change_cell_value/change_cell_values events
1739+
* @param noTriggerChangeCellValuesEvent Whether to suppress the aggregated change_cell_values event
1740+
*/
1741+
changeCellValuesByRanges: (
1742+
ranges: CellRange[],
1743+
value: string | number | null,
1744+
workOnEditableCell?: boolean,
1745+
triggerEvent?: boolean,
1746+
noTriggerChangeCellValuesEvent?: boolean
1747+
) => void;
17131748
```
17141749

17151750
## changeCellValues(Function)
@@ -1724,8 +1759,111 @@ Batch change the values of cells:
17241759
* @param values Data array for multiple cells
17251760
* @param workOnEditableCell Whether to only change editable cells
17261761
* @param triggerEvent Whether to trigger change_cell_value event when values change
1762+
* @param noTriggerChangeCellValuesEvent Whether to suppress the aggregated change_cell_values event
1763+
*/
1764+
changeCellValues: (
1765+
startCol: number,
1766+
startRow: number,
1767+
values: string[][],
1768+
workOnEditableCell?: boolean,
1769+
triggerEvent?: boolean,
1770+
noTriggerChangeCellValuesEvent?: boolean
1771+
) => Promise<boolean[][]>;
1772+
```
1773+
1774+
## changeCellValueByRecord(Function)
1775+
1776+
Change cell value by `recordIndex` (source records index) and `field`.
1777+
1778+
**ListTable specific**
1779+
1780+
```
1781+
/**
1782+
* Change cell value by recordIndex (source records index) and field.
1783+
* recordIndex is the index in the original source records: number for normal tables; number[] for tree tables.
1784+
*/
1785+
changeCellValueByRecord: (
1786+
recordIndex: number | number[],
1787+
field: FieldDef,
1788+
value: string | number | null,
1789+
options?: {
1790+
triggerEvent?: boolean;
1791+
noTriggerChangeCellValuesEvent?: boolean;
1792+
autoRefresh?: boolean;
1793+
}
1794+
) => void;
1795+
```
1796+
1797+
## changeCellValuesByRecords(Function)
1798+
1799+
Batch change cell values by `recordIndex` (source records index) and `field`.
1800+
1801+
**ListTable specific**
1802+
1803+
```
1804+
/**
1805+
* Batch change cell values by recordIndex (source records index) and field.
17271806
*/
1728-
changeCellValues(startCol: number, startRow: number, values: string[][], workOnEditableCell = false, triggerEvent=true) => Promise<boolean[][]>;
1807+
changeCellValuesByRecords: (
1808+
changeValues: Array<{
1809+
recordIndex: number | number[];
1810+
field: FieldDef;
1811+
value: string | number | null;
1812+
}>,
1813+
options?: {
1814+
triggerEvent?: boolean;
1815+
noTriggerChangeCellValuesEvent?: boolean;
1816+
autoRefresh?: boolean;
1817+
}
1818+
) => void;
1819+
```
1820+
1821+
## changeCellValueBySource(Function)
1822+
1823+
Alias of `changeCellValueByRecord` with positional parameters.
1824+
1825+
**ListTable specific**
1826+
1827+
```
1828+
changeCellValueBySource: (
1829+
recordIndex: number | number[],
1830+
field: FieldDef,
1831+
value: string | number | null,
1832+
triggerEvent?: boolean,
1833+
noTriggerChangeCellValuesEvent?: boolean
1834+
) => void;
1835+
```
1836+
1837+
## changeCellValuesBySource(Function)
1838+
1839+
Alias of `changeCellValuesByRecords` with positional parameters.
1840+
1841+
**ListTable specific**
1842+
1843+
```
1844+
changeCellValuesBySource: (
1845+
changeValues: Array<{
1846+
recordIndex: number | number[];
1847+
field: FieldDef;
1848+
value: string | number | null;
1849+
}>,
1850+
triggerEvent?: boolean,
1851+
noTriggerChangeCellValuesEvent?: boolean
1852+
) => void;
1853+
```
1854+
1855+
## refreshAfterSourceChange(Function)
1856+
1857+
Refresh the table after directly changing source records (optionally reapply filter/sort).
1858+
1859+
**ListTable specific**
1860+
1861+
```
1862+
refreshAfterSourceChange: (options?: {
1863+
reapplyFilter?: boolean;
1864+
reapplySort?: boolean;
1865+
clearRowHeightCache?: boolean;
1866+
}) => void;
17291867
```
17301868

17311869
## getEditor(Function)
@@ -1791,6 +1929,10 @@ Add data, supports multiple data items
17911929
addRecords(records: any[], recordIndex?: number|number[])
17921930
```
17931931

1932+
**Notes:**
1933+
1934+
- If `syncRecordOperationsToSourceRecords` is enabled, add operations in filter/sort state will also sync to the original `records` (source records).
1935+
17941936
## addRecord(Function)
17951937

17961938
Add data, single data item
@@ -1808,6 +1950,10 @@ Add data, single data item
18081950
addRecord(record: any, recordIndex?: number|number[])
18091951
```
18101952

1953+
**Notes:**
1954+
1955+
- If `syncRecordOperationsToSourceRecords` is enabled, add operations in filter/sort state will also sync to the original `records` (source records).
1956+
18111957
## deleteRecords(Function)
18121958

18131959
Delete data, supports multiple data items
@@ -2364,4 +2510,4 @@ Update the content of a range of cells. This interface only refreshes the conten
23642510
* Update the content of a range of cells
23652511
*/
23662512
updateCellContentRanges: (ranges: CellRange[]) => void;
2367-
```
2513+
```

docs/assets/api/zh/event/event.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,31 @@ MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom' };
629629
630630
```
631631

632+
## CHANGE_CELL_VALUES
633+
634+
批量更改单元格值的聚合事件。
635+
636+
事件回调函数的参数类型:
637+
638+
```
639+
{
640+
values: Array<{
641+
col: number;
642+
row: number;
643+
recordIndex?: number | number[];
644+
field?: string | number;
645+
rawValue: string | number;
646+
currentValue: string | number;
647+
changedValue: string | number;
648+
}>;
649+
};
650+
```
651+
652+
**说明:**
653+
654+
- 相关接口参数 `noTriggerChangeCellValuesEvent` 可用于抑制该聚合事件。
655+
- 批量更新多个单元格时通常只触发一次该事件,`values` 中包含所有变更项。
656+
632657
## CHECKBOX_STATE_CHANGE
633658

634659
更改 checkbox 复选框状态。**ListTable 表格专有事件**

0 commit comments

Comments
 (0)