@visactor/vtable 1.22.11-alpha.1 → 1.22.11-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/cjs/ListTable.d.ts +30 -9
  2. package/cjs/ListTable.js +102 -11
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/core/BaseTable.js +1 -1
  5. package/cjs/core/BaseTable.js.map +1 -1
  6. package/cjs/core/record-helper.d.ts +2 -5
  7. package/cjs/core/record-helper.js +31 -14
  8. package/cjs/core/record-helper.js.map +1 -1
  9. package/cjs/data/DataSource.d.ts +1 -0
  10. package/cjs/data/DataSource.js +25 -3
  11. package/cjs/data/DataSource.js.map +1 -1
  12. package/cjs/event/event.d.ts +2 -1
  13. package/cjs/event/event.js +20 -15
  14. package/cjs/event/event.js.map +1 -1
  15. package/cjs/index.d.ts +1 -1
  16. package/cjs/index.js +1 -1
  17. package/cjs/index.js.map +1 -1
  18. package/cjs/ts-types/table-engine.d.ts +29 -8
  19. package/cjs/ts-types/table-engine.js.map +1 -1
  20. package/cjs/vrender.js.map +1 -1
  21. package/dist/vtable.js +290 -61
  22. package/dist/vtable.min.js +2 -2
  23. package/es/ListTable.d.ts +30 -9
  24. package/es/ListTable.js +98 -10
  25. package/es/ListTable.js.map +1 -1
  26. package/es/core/BaseTable.js +1 -1
  27. package/es/core/BaseTable.js.map +1 -1
  28. package/es/core/record-helper.d.ts +2 -5
  29. package/es/core/record-helper.js +31 -14
  30. package/es/core/record-helper.js.map +1 -1
  31. package/es/data/DataSource.d.ts +1 -0
  32. package/es/data/DataSource.js +25 -3
  33. package/es/data/DataSource.js.map +1 -1
  34. package/es/event/event.d.ts +2 -1
  35. package/es/event/event.js +20 -15
  36. package/es/event/event.js.map +1 -1
  37. package/es/index.d.ts +1 -1
  38. package/es/index.js +1 -1
  39. package/es/index.js.map +1 -1
  40. package/es/ts-types/table-engine.d.ts +29 -8
  41. package/es/ts-types/table-engine.js.map +1 -1
  42. package/es/vrender.js.map +1 -1
  43. package/package.json +2 -2
package/es/ListTable.d.ts CHANGED
@@ -93,16 +93,37 @@ export declare class ListTable extends BaseTable implements ListTableAPI {
93
93
  isHasEditorDefine(col: number, row: number): boolean;
94
94
  changeCellValue(col: number, row: number, value: string | number | null, workOnEditableCell?: boolean, triggerEvent?: boolean, silentChangeCellValuesEvent?: boolean): void;
95
95
  changeCellValues(startCol: number, startRow: number, values: (string | number)[][], workOnEditableCell?: boolean, triggerEvent?: boolean, silentChangeCellValuesEvent?: boolean): Promise<boolean[][]>;
96
- changeCellValuesByIds(changeValues: {
97
- col: number;
98
- row: number;
99
- value: string | number | null;
100
- }[], triggerEvent?: boolean, silentChangeCellValuesEvent?: boolean): Promise<void>;
96
+ changeCellValuesByIds(ranges: CellRange[], value: string | number | null, workOnEditableCell?: boolean, triggerEvent?: boolean, silentChangeCellValuesEvent?: boolean): Promise<void>;
101
97
  changeSourceCellValue(recordIndex: number | number[], field: FieldDef, value: string | number | null): void;
102
- addRecord(record: any, recordIndex?: number | number[]): void;
103
- addRecords(records: any[], recordIndex?: number | number[]): void;
104
- deleteRecords(recordIndexs: number[] | number[][]): void;
105
- updateRecords(records: any[], recordIndexs: (number | number[])[]): void;
98
+ changeCellValueByRecord(recordIndex: number | number[], field: FieldDef, value: string | number | null, options?: {
99
+ triggerEvent?: boolean;
100
+ silentChangeCellValuesEvent?: boolean;
101
+ autoRefresh?: boolean;
102
+ }): void;
103
+ changeCellValueBySource(recordIndex: number | number[], field: FieldDef, value: string | number | null, triggerEvent?: boolean, silentChangeCellValuesEvent?: boolean): void;
104
+ changeCellValuesByRecords(changeValues: {
105
+ recordIndex: number | number[];
106
+ field: FieldDef;
107
+ value: string | number | null;
108
+ }[], options?: {
109
+ triggerEvent?: boolean;
110
+ silentChangeCellValuesEvent?: boolean;
111
+ autoRefresh?: boolean;
112
+ }): void;
113
+ changeCellValuesBySource(changeValues: {
114
+ recordIndex: number | number[];
115
+ field: FieldDef;
116
+ value: string | number | null;
117
+ }[], triggerEvent?: boolean, silentChangeCellValuesEvent?: boolean): void;
118
+ refreshAfterSourceChange(options?: {
119
+ reapplyFilter?: boolean;
120
+ reapplySort?: boolean;
121
+ clearRowHeightCache?: boolean;
122
+ }): void;
123
+ addRecord(record: any, recordIndex?: number | number[], triggerEvent?: boolean): void;
124
+ addRecords(records: any[], recordIndex?: number | number[], triggerEvent?: boolean): void;
125
+ deleteRecords(recordIndexs: number[] | number[][], triggerEvent?: boolean): void;
126
+ updateRecords(records: any[], recordIndexs: (number | number[])[], triggerEvent?: boolean): void;
106
127
  _hasCustomRenderOrLayout(): boolean;
107
128
  getAggregateValuesByField(field: string | number): {
108
129
  col: number;
package/es/ListTable.js CHANGED
@@ -32,6 +32,8 @@ import { getGroupByDataConfig } from "./core/group-helper";
32
32
 
33
33
  import { DataSource } from "./data";
34
34
 
35
+ import { getValueFromDeepArray } from "./data/DataSource";
36
+
35
37
  import { listTableAddRecord, listTableAddRecords, listTableChangeCellValue, listTableChangeCellValues, listTableChangeCellValuesByIds, listTableDeleteRecords, listTableUpdateRecords, sortRecords } from "./core/record-helper";
36
38
 
37
39
  import { fixUpdateRowRange } from "./tools/update-row";
@@ -723,8 +725,8 @@ export class ListTable extends BaseTable {
723
725
  changeCellValues(startCol, startRow, values, workOnEditableCell = !1, triggerEvent = !0, silentChangeCellValuesEvent) {
724
726
  return listTableChangeCellValues(startCol, startRow, values, workOnEditableCell, triggerEvent, this, silentChangeCellValuesEvent);
725
727
  }
726
- changeCellValuesByIds(changeValues, triggerEvent = !0, silentChangeCellValuesEvent) {
727
- return listTableChangeCellValuesByIds(changeValues, triggerEvent, this, silentChangeCellValuesEvent);
728
+ changeCellValuesByIds(ranges, value, workOnEditableCell = !1, triggerEvent = !0, silentChangeCellValuesEvent) {
729
+ return listTableChangeCellValuesByIds(ranges, value, workOnEditableCell, triggerEvent, this, silentChangeCellValuesEvent);
728
730
  }
729
731
  changeSourceCellValue(recordIndex, field, value) {
730
732
  const tableIndex = this.getTableIndexByRecordIndex(recordIndex), cellAddr = this.getCellAddrByFieldRecord(field, recordIndex);
@@ -746,28 +748,114 @@ export class ListTable extends BaseTable {
746
748
  });
747
749
  }
748
750
  }
749
- addRecord(record, recordIndex) {
751
+ changeCellValueByRecord(recordIndex, field, value, options) {
752
+ var _a, _b, _c, _d, _e;
753
+ const triggerEvent = null === (_a = null == options ? void 0 : options.triggerEvent) || void 0 === _a || _a, silentChangeCellValuesEvent = null == options ? void 0 : options.silentChangeCellValuesEvent, autoRefresh = null === (_b = null == options ? void 0 : options.autoRefresh) || void 0 === _b || _b, records = null === (_c = this.dataSource.dataSourceObj) || void 0 === _c ? void 0 : _c.records;
754
+ let record, oldValue;
755
+ if (!Array.isArray(records) || "string" != typeof field && "number" != typeof field || (record = Array.isArray(recordIndex) ? getValueFromDeepArray(records, recordIndex) : records[recordIndex],
756
+ oldValue = null == record ? void 0 : record[field]), this.dataSource.changeFieldValueByRecordIndex(value, recordIndex, field, this),
757
+ !triggerEvent) return;
758
+ const changedValue = !record || "string" != typeof field && "number" != typeof field ? value : null == record ? void 0 : record[field];
759
+ if (oldValue !== changedValue) {
760
+ const cellAddr = this.getCellAddrByFieldRecord(field, recordIndex), changeValue = {
761
+ col: null !== (_d = null == cellAddr ? void 0 : cellAddr.col) && void 0 !== _d ? _d : -1,
762
+ row: null !== (_e = null == cellAddr ? void 0 : cellAddr.row) && void 0 !== _e ? _e : -1,
763
+ recordIndex: recordIndex,
764
+ field: field,
765
+ rawValue: oldValue,
766
+ currentValue: oldValue,
767
+ changedValue: changedValue
768
+ };
769
+ this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, changeValue), silentChangeCellValuesEvent || this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUES, {
770
+ values: [ changeValue ]
771
+ });
772
+ }
773
+ autoRefresh && this.refreshAfterSourceChange();
774
+ }
775
+ changeCellValueBySource(recordIndex, field, value, triggerEvent = !0, silentChangeCellValuesEvent) {
776
+ return this.changeCellValueByRecord(recordIndex, field, value, {
777
+ triggerEvent: triggerEvent,
778
+ silentChangeCellValuesEvent: silentChangeCellValuesEvent,
779
+ autoRefresh: !0
780
+ });
781
+ }
782
+ changeCellValuesByRecords(changeValues, options) {
783
+ var _a, _b, _c, _d, _e, _f, _g;
784
+ const triggerEvent = null === (_a = null == options ? void 0 : options.triggerEvent) || void 0 === _a || _a, silentChangeCellValuesEvent = null == options ? void 0 : options.silentChangeCellValuesEvent, autoRefresh = null === (_b = null == options ? void 0 : options.autoRefresh) || void 0 === _b || _b, resultChangeValues = [];
785
+ for (let i = 0; i < changeValues.length; i++) {
786
+ const {recordIndex: recordIndex, field: field, value: value} = changeValues[i], records = null === (_c = this.dataSource.dataSourceObj) || void 0 === _c ? void 0 : _c.records;
787
+ let record, oldValue;
788
+ if (!Array.isArray(records) || "string" != typeof field && "number" != typeof field || (record = Array.isArray(recordIndex) ? getValueFromDeepArray(records, recordIndex) : records[recordIndex],
789
+ oldValue = null == record ? void 0 : record[field]), this.dataSource.changeFieldValueByRecordIndex(value, recordIndex, field, this),
790
+ triggerEvent) {
791
+ const changedValue = !record || "string" != typeof field && "number" != typeof field ? value : null == record ? void 0 : record[field];
792
+ if (oldValue !== changedValue) {
793
+ const changeValue = {
794
+ col: null !== (_e = null === (_d = this.getCellAddrByFieldRecord(field, recordIndex)) || void 0 === _d ? void 0 : _d.col) && void 0 !== _e ? _e : -1,
795
+ row: null !== (_g = null === (_f = this.getCellAddrByFieldRecord(field, recordIndex)) || void 0 === _f ? void 0 : _f.row) && void 0 !== _g ? _g : -1,
796
+ recordIndex: recordIndex,
797
+ field: field,
798
+ rawValue: oldValue,
799
+ currentValue: oldValue,
800
+ changedValue: changedValue
801
+ };
802
+ this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, changeValue), resultChangeValues.push(changeValue);
803
+ }
804
+ }
805
+ }
806
+ !silentChangeCellValuesEvent && resultChangeValues.length && triggerEvent && this.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUES, {
807
+ values: resultChangeValues
808
+ }), autoRefresh && this.refreshAfterSourceChange();
809
+ }
810
+ changeCellValuesBySource(changeValues, triggerEvent = !0, silentChangeCellValuesEvent) {
811
+ return this.changeCellValuesByRecords(changeValues, {
812
+ triggerEvent: triggerEvent,
813
+ silentChangeCellValuesEvent: silentChangeCellValuesEvent,
814
+ autoRefresh: !0
815
+ });
816
+ }
817
+ refreshAfterSourceChange(options) {
818
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
819
+ const reapplyFilter = null === (_a = null == options ? void 0 : options.reapplyFilter) || void 0 === _a || _a, reapplySort = null === (_b = null == options ? void 0 : options.reapplySort) || void 0 === _b || _b, clearRowHeightCache = null === (_c = null == options ? void 0 : options.clearRowHeightCache) || void 0 === _c || _c;
820
+ this.scenegraph.clearCells(), this.sortState && reapplySort && (null === (_e = (_d = this.dataSource).clearSortedIndexMap) || void 0 === _e || _e.call(_d),
821
+ null === (_g = null === (_f = this.dataSource.sortedIndexMap) || void 0 === _f ? void 0 : _f.clear) || void 0 === _g || _g.call(_f)),
822
+ reapplyFilter ? this.sortState && reapplySort ? (this.dataSource.updateFilterRulesForSorted(null === (_h = this.dataSource.dataConfig) || void 0 === _h ? void 0 : _h.filterRules),
823
+ sortRecords(this)) : this.dataSource.updateFilterRules(null === (_j = this.dataSource.dataConfig) || void 0 === _j ? void 0 : _j.filterRules) : this.sortState && reapplySort && sortRecords(this);
824
+ const traverseColumns = columns => {
825
+ var _a, _b, _c, _d;
826
+ for (let i = 0; i < (null !== (_a = null == columns ? void 0 : columns.length) && void 0 !== _a ? _a : 0); i++) {
827
+ const column = columns[i], aggregators = null == column ? void 0 : column.vtable_aggregator;
828
+ if (aggregators) if (Array.isArray(aggregators)) for (let j = 0; j < aggregators.length; j++) null === (_c = null === (_b = aggregators[j]) || void 0 === _b ? void 0 : _b.recalculate) || void 0 === _c || _c.call(_b); else null === (_d = null == aggregators ? void 0 : aggregators.recalculate) || void 0 === _d || _d.call(aggregators);
829
+ (null == column ? void 0 : column.columns) && traverseColumns(column.columns);
830
+ }
831
+ };
832
+ traverseColumns(this.internalProps.columns), this.refreshRowColCount(), this.internalProps.layoutMap.clearCellRangeMap(),
833
+ this.internalProps.useOneRowHeightFillAll = !1, this.stateManager.initCheckedState(this.records),
834
+ this.scenegraph.createSceneGraph(!clearRowHeightCache), null === (_k = this.internalProps.emptyTip) || void 0 === _k || _k.resetVisible(),
835
+ this.resize();
836
+ }
837
+ addRecord(record, recordIndex, triggerEvent = !0) {
750
838
  var _a;
751
839
  const success = listTableAddRecord(record, recordIndex, this);
752
840
  adjustHeightResizedRowMapWithAddRecordIndex(this, recordIndex, [ record ]), null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
753
- success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
841
+ triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
754
842
  records: [ record ],
755
843
  recordIndex: recordIndex,
756
844
  recordCount: 1
757
845
  });
758
846
  }
759
- addRecords(records, recordIndex) {
847
+ addRecords(records, recordIndex, triggerEvent = !0) {
760
848
  var _a;
761
849
  const success = listTableAddRecords(records, recordIndex, this);
762
850
  "number" == typeof recordIndex && adjustHeightResizedRowMapWithAddRecordIndex(this, recordIndex, records),
763
851
  null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
764
- success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
852
+ triggerEvent && success && this.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, {
765
853
  records: records,
766
854
  recordIndex: recordIndex,
767
855
  recordCount: records.length
768
856
  });
769
857
  }
770
- deleteRecords(recordIndexs) {
858
+ deleteRecords(recordIndexs, triggerEvent = !0) {
771
859
  var _a;
772
860
  const deletedRecords = [];
773
861
  (null == recordIndexs ? void 0 : recordIndexs.length) > 0 && recordIndexs.forEach((index => {
@@ -777,15 +865,15 @@ export class ListTable extends BaseTable {
777
865
  null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible();
778
866
  const rowIndexs = [];
779
867
  for (let i = 0; i < recordIndexs.length; i++) rowIndexs.push(this.getBodyRowIndexByRecordIndex(recordIndexs[i]) + this.columnHeaderLevelCount);
780
- this.fireListeners(TABLE_EVENT_TYPE.DELETE_RECORD, {
868
+ triggerEvent && this.fireListeners(TABLE_EVENT_TYPE.DELETE_RECORD, {
781
869
  recordIndexs: recordIndexs,
782
870
  records: deletedRecords,
783
871
  rowIndexs: rowIndexs,
784
872
  deletedCount: (Array.isArray(recordIndexs[0]), recordIndexs.length)
785
873
  });
786
874
  }
787
- updateRecords(records, recordIndexs) {
788
- listTableUpdateRecords(records, recordIndexs, this), this.fireListeners(TABLE_EVENT_TYPE.UPDATE_RECORD, {
875
+ updateRecords(records, recordIndexs, triggerEvent = !0) {
876
+ listTableUpdateRecords(records, recordIndexs, this), triggerEvent && this.fireListeners(TABLE_EVENT_TYPE.UPDATE_RECORD, {
789
877
  records: records,
790
878
  recordIndexs: recordIndexs,
791
879
  updateCount: records.length