Skip to content

Commit 63fcb95

Browse files
authored
Merge pull request #3700 from BlInYo/feat/changeCellValue
Feat/change cell value
2 parents 4a018fd + 5de71ec commit 63fcb95

5 files changed

Lines changed: 48 additions & 11 deletions

File tree

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: listTable added tiggerEvent parameter to changeCellValue\n\n",
5+
"type": "none",
6+
"packageName": "@visactor/vtable"
7+
}
8+
],
9+
"packageName": "@visactor/vtable",
10+
"email": "blinyo@163.com"
11+
}

docs/assets/api/en/methods.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ Change the value of a cell:
10601060
```
10611061

10621062
/\*_ Set the value of the cell. Note that it corresponds to the original value of the source data, and the vtable instance records will be modified accordingly _/
1063-
changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell = false) => void;
1063+
changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell = false, triggerEvent = true) => void;
10641064

10651065
```
10661066
@@ -1077,7 +1077,7 @@ Change the value of cells in batches:
10771077
- @param row The starting row number of pasted data
10781078
- @param values Data array of multiple cells
10791079
\*/
1080-
changeCellValues(startCol: number, startRow: number, values: string[][])
1080+
changeCellValues(startCol: number, startRow: number, values: string[][], workOnEditableCell = false, triggerEvent=true) => void;
10811081

10821082
```
10831083

docs/assets/api/zh/methods.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -956,8 +956,15 @@ use case: 对于透视图的场景上,点击图例项后 更新过滤规则
956956
更改单元格的 value 值:
957957

958958
```
959-
/** 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改 */
960-
changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell = false) => void;
959+
/**
960+
* 设置单元格的value值,注意对应的是源数据的原始值,vtable实例records会做对应修改
961+
* @param col 单元格的起始列号
962+
* @param row 单元格的起始行号
963+
* @param value 更改后的值
964+
* @param workOnEditableCell 是否仅更改可编辑单元格
965+
* @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件
966+
*/
967+
changeCellValue: (col: number, row: number, value: string | number | null, workOnEditableCell = false, triggerEvent = true) => void;
961968
```
962969

963970
## changeCellValues(Function)
@@ -971,8 +978,9 @@ use case: 对于透视图的场景上,点击图例项后 更新过滤规则
971978
* @param row 粘贴数据的起始行号
972979
* @param values 多个单元格的数据数组
973980
* @param workOnEditableCell 是否仅更改可编辑单元格
981+
* @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件
974982
*/
975-
changeCellValues(startCol: number, startRow: number, values: string[][], workOnEditableCell = false)
983+
changeCellValues(startCol: number, startRow: number, values: string[][], workOnEditableCell = false, triggerEvent=true) => void;
976984
```
977985

978986
## getEditor(Function)

packages/vtable/src/ListTable.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,19 +1326,33 @@ export class ListTable extends BaseTable implements ListTableAPI {
13261326
* @param row
13271327
* @param value 更改后的值
13281328
* @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值
1329+
* @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件
13291330
*/
1330-
changeCellValue(col: number, row: number, value: string | number | null, workOnEditableCell = false) {
1331-
return listTableChangeCellValue(col, row, value, workOnEditableCell, this);
1331+
changeCellValue(
1332+
col: number,
1333+
row: number,
1334+
value: string | number | null,
1335+
workOnEditableCell = false,
1336+
triggerEvent = true
1337+
) {
1338+
return listTableChangeCellValue(col, row, value, workOnEditableCell, triggerEvent, this);
13321339
}
13331340
/**
13341341
* 批量更新多个单元格的数据
13351342
* @param col 粘贴数据的起始列号
13361343
* @param row 粘贴数据的起始行号
13371344
* @param values 多个单元格的数据数组
13381345
* @param workOnEditableCell 是否仅更改可编辑单元格
1346+
* @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件
13391347
*/
1340-
changeCellValues(startCol: number, startRow: number, values: (string | number)[][], workOnEditableCell = false) {
1341-
return listTableChangeCellValues(startCol, startRow, values, workOnEditableCell, this);
1348+
changeCellValues(
1349+
startCol: number,
1350+
startRow: number,
1351+
values: (string | number)[][],
1352+
workOnEditableCell = false,
1353+
triggerEvent = true
1354+
) {
1355+
return listTableChangeCellValues(startCol, startRow, values, workOnEditableCell, triggerEvent, this);
13421356
}
13431357
/**
13441358
* 添加数据 单条数据

packages/vtable/src/core/record-helper.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ import { TABLE_EVENT_TYPE } from './TABLE_EVENT_TYPE';
1414
* @param row
1515
* @param value 更改后的值
1616
* @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值
17+
* @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件
1718
*/
1819
export function listTableChangeCellValue(
1920
col: number,
2021
row: number,
2122
value: string | number | null,
2223
workOnEditableCell: boolean,
24+
triggerEvent: boolean,
2325
table: ListTable
2426
) {
2527
if ((workOnEditableCell && table.isHasEditorDefine(col, row)) || workOnEditableCell === false) {
@@ -91,7 +93,7 @@ export function listTableChangeCellValue(
9193
table.scenegraph.updateRowHeight(row, newHeight - oldHeight);
9294
}
9395
const changedValue = table.getCellOriginValue(col, row);
94-
if (oldValue !== changedValue) {
96+
if (oldValue !== changedValue && triggerEvent) {
9597
table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {
9698
col,
9799
row,
@@ -109,12 +111,14 @@ export function listTableChangeCellValue(
109111
* @param row 粘贴数据的起始行号
110112
* @param values 多个单元格的数据数组
111113
* @param workOnEditableCell 是否仅更改可编辑单元格
114+
* @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件
112115
*/
113116
export function listTableChangeCellValues(
114117
startCol: number,
115118
startRow: number,
116119
values: (string | number)[][],
117120
workOnEditableCell: boolean,
121+
triggerEvent: boolean,
118122
table: ListTable
119123
) {
120124
let pasteColEnd = startCol;
@@ -193,7 +197,7 @@ export function listTableChangeCellValues(
193197
table.dataSource.changeFieldValue(value, recordIndex, field, startCol + j, startRow + i, table);
194198
}
195199
const changedValue = table.getCellOriginValue(startCol + j, startRow + i);
196-
if (oldValue !== changedValue) {
200+
if (oldValue !== changedValue && triggerEvent) {
197201
table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {
198202
col: startCol + j,
199203
row: startRow + i,

0 commit comments

Comments
 (0)