@visactor/vtable 1.10.1 → 1.10.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 (163) hide show
  1. package/cjs/ListTable.js +22 -6
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotTable.d.ts +4 -0
  4. package/cjs/PivotTable.js +10 -2
  5. package/cjs/PivotTable.js.map +1 -1
  6. package/cjs/components/empty-tip/empty-tip.js +2 -2
  7. package/cjs/components/empty-tip/empty-tip.js.map +1 -1
  8. package/cjs/components/menu/dom/MenuHandler.js +1 -1
  9. package/cjs/components/menu/dom/MenuHandler.js.map +1 -1
  10. package/cjs/components/title/title.js +1 -1
  11. package/cjs/components/title/title.js.map +1 -1
  12. package/cjs/core/BaseTable.js +6 -3
  13. package/cjs/core/BaseTable.js.map +1 -1
  14. package/cjs/core/FouseInput.js +1 -2
  15. package/cjs/core/animation.js +3 -2
  16. package/cjs/core/animation.js.map +1 -1
  17. package/cjs/core/record-helper.js +20 -12
  18. package/cjs/core/record-helper.js.map +1 -1
  19. package/cjs/dataset/dataset-pivot-table.js +2 -1
  20. package/cjs/dataset/statistics-helper.js +2 -2
  21. package/cjs/dataset/statistics-helper.js.map +1 -1
  22. package/cjs/edit/edit-manager.js +1 -2
  23. package/cjs/event/event.js +5 -1
  24. package/cjs/event/event.js.map +1 -1
  25. package/cjs/event/listener/container-dom.js +35 -3
  26. package/cjs/event/listener/container-dom.js.map +1 -1
  27. package/cjs/event/listener/table-group.js +1 -32
  28. package/cjs/event/listener/table-group.js.map +1 -1
  29. package/cjs/header-helper/header-helper.js +1 -1
  30. package/cjs/header-helper/style.js +1 -1
  31. package/cjs/index.d.ts +1 -1
  32. package/cjs/index.js +1 -1
  33. package/cjs/index.js.map +1 -1
  34. package/cjs/layout/index.js +2 -1
  35. package/cjs/layout/pivot-header-layout.js +1 -1
  36. package/cjs/layout/pivot-header-layout.js.map +1 -1
  37. package/cjs/layout/row-height-map.js +2 -1
  38. package/cjs/layout/row-height-map.js.map +1 -1
  39. package/cjs/layout/simple-header-layout.js +1 -1
  40. package/cjs/layout/tree-helper.js +2 -2
  41. package/cjs/plugins/custom-cell-style.js +1 -1
  42. package/cjs/plugins/icons.js +1 -2
  43. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  44. package/cjs/plugins/themes.js +1 -1
  45. package/cjs/scenegraph/group-creater/column-helper.js +3 -3
  46. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  47. package/cjs/scenegraph/group-creater/progress/proxy.d.ts +2 -0
  48. package/cjs/scenegraph/group-creater/progress/proxy.js +12 -0
  49. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  50. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +1 -1
  51. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  52. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +5 -5
  53. package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  54. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.js +1 -1
  55. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.js.map +1 -1
  56. package/cjs/scenegraph/layout/compute-col-width.js +1 -1
  57. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  58. package/cjs/scenegraph/layout/update-row.js +8 -7
  59. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  60. package/cjs/scenegraph/scenegraph.js.map +1 -1
  61. package/cjs/state/checkbox/checkbox.d.ts +1 -1
  62. package/cjs/state/checkbox/checkbox.js +11 -6
  63. package/cjs/state/checkbox/checkbox.js.map +1 -1
  64. package/cjs/state/select/update-position.js +105 -10
  65. package/cjs/state/select/update-position.js.map +1 -1
  66. package/cjs/state/state.d.ts +2 -2
  67. package/cjs/state/state.js +14 -4
  68. package/cjs/state/state.js.map +1 -1
  69. package/cjs/themes/theme.js +1 -1
  70. package/cjs/themes/theme.js.map +1 -1
  71. package/cjs/tools/util.js +1 -1
  72. package/cjs/tools/util.js.map +1 -1
  73. package/cjs/ts-types/base-table.d.ts +9 -8
  74. package/cjs/ts-types/base-table.js.map +1 -1
  75. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  76. package/cjs/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  77. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  78. package/cjs/ts-types/table-engine.d.ts +9 -0
  79. package/cjs/ts-types/table-engine.js.map +1 -1
  80. package/cjs/vrender.js.map +1 -1
  81. package/dist/vtable.js +398 -128
  82. package/dist/vtable.min.js +2 -2
  83. package/es/ListTable.js +23 -5
  84. package/es/ListTable.js.map +1 -1
  85. package/es/PivotTable.d.ts +4 -0
  86. package/es/PivotTable.js +10 -2
  87. package/es/PivotTable.js.map +1 -1
  88. package/es/components/empty-tip/empty-tip.js +2 -2
  89. package/es/components/empty-tip/empty-tip.js.map +1 -1
  90. package/es/components/menu/dom/MenuHandler.js +1 -1
  91. package/es/components/menu/dom/MenuHandler.js.map +1 -1
  92. package/es/components/title/title.js +1 -1
  93. package/es/components/title/title.js.map +1 -1
  94. package/es/core/BaseTable.js +6 -3
  95. package/es/core/BaseTable.js.map +1 -1
  96. package/es/core/FouseInput.js +1 -2
  97. package/es/core/animation.js +4 -3
  98. package/es/core/animation.js.map +1 -1
  99. package/es/core/record-helper.js +21 -11
  100. package/es/core/record-helper.js.map +1 -1
  101. package/es/dataset/dataset-pivot-table.js +2 -1
  102. package/es/dataset/statistics-helper.js +2 -2
  103. package/es/dataset/statistics-helper.js.map +1 -1
  104. package/es/edit/edit-manager.js +1 -2
  105. package/es/event/event.js +5 -1
  106. package/es/event/event.js.map +1 -1
  107. package/es/event/listener/container-dom.js +34 -3
  108. package/es/event/listener/container-dom.js.map +1 -1
  109. package/es/event/listener/table-group.js +1 -32
  110. package/es/event/listener/table-group.js.map +1 -1
  111. package/es/header-helper/header-helper.js +1 -1
  112. package/es/header-helper/style.js +1 -1
  113. package/es/index.d.ts +1 -1
  114. package/es/index.js +1 -1
  115. package/es/index.js.map +1 -1
  116. package/es/layout/index.js +2 -1
  117. package/es/layout/pivot-header-layout.js +1 -1
  118. package/es/layout/pivot-header-layout.js.map +1 -1
  119. package/es/layout/row-height-map.js +2 -1
  120. package/es/layout/row-height-map.js.map +1 -1
  121. package/es/layout/simple-header-layout.js +1 -1
  122. package/es/layout/tree-helper.js +1 -1
  123. package/es/plugins/custom-cell-style.js +1 -1
  124. package/es/plugins/icons.js +1 -2
  125. package/es/plugins/list-tree-stick-cell.js +1 -1
  126. package/es/plugins/themes.js +1 -1
  127. package/es/scenegraph/group-creater/column-helper.js +3 -3
  128. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  129. package/es/scenegraph/group-creater/progress/proxy.d.ts +2 -0
  130. package/es/scenegraph/group-creater/progress/proxy.js +12 -0
  131. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  132. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +1 -1
  133. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
  134. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +5 -5
  135. package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
  136. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.js +1 -1
  137. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.js.map +1 -1
  138. package/es/scenegraph/layout/compute-col-width.js +1 -1
  139. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  140. package/es/scenegraph/layout/update-row.js +7 -6
  141. package/es/scenegraph/layout/update-row.js.map +1 -1
  142. package/es/scenegraph/scenegraph.js.map +1 -1
  143. package/es/state/checkbox/checkbox.d.ts +1 -1
  144. package/es/state/checkbox/checkbox.js +11 -6
  145. package/es/state/checkbox/checkbox.js.map +1 -1
  146. package/es/state/select/update-position.js +105 -10
  147. package/es/state/select/update-position.js.map +1 -1
  148. package/es/state/state.d.ts +2 -2
  149. package/es/state/state.js +14 -4
  150. package/es/state/state.js.map +1 -1
  151. package/es/themes/theme.js +1 -1
  152. package/es/themes/theme.js.map +1 -1
  153. package/es/tools/util.js +1 -1
  154. package/es/tools/util.js.map +1 -1
  155. package/es/ts-types/base-table.d.ts +9 -8
  156. package/es/ts-types/base-table.js.map +1 -1
  157. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  158. package/es/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  159. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  160. package/es/ts-types/table-engine.d.ts +9 -0
  161. package/es/ts-types/table-engine.js.map +1 -1
  162. package/es/vrender.js.map +1 -1
  163. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dataset/statistics-helper.ts"],"names":[],"mappings":"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","file":"statistics-helper.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { SortOrder } from '../ts-types';\nimport { AggregationType, SortType } from '../ts-types';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport interface IAggregator {\n records?: any[];\n value: () => any;\n className: string;\n push: (record: any) => void;\n deleteRecord: (record: any) => void;\n updateRecord: (oldRecord: any, newRecord: any) => void;\n recalculate: () => any;\n formatValue?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n formatFun?: () => any;\n clearCacheValue: () => any;\n reset: () => void;\n}\nexport abstract class Aggregator implements IAggregator {\n className = 'Aggregator';\n isRecord?: boolean = true; //是否需要维护records 将数据源都记录下来\n records?: any[] = [];\n type?: string;\n key: string;\n field?: string | string[];\n formatFun?: any;\n _formatedValue?: any;\n\n constructor(config: { key: string; dimension: string; formatFun?: any; isRecord?: boolean }) {\n this.key = config.key;\n this.field = config.dimension;\n this.formatFun = config.formatFun;\n this.isRecord = config.isRecord ?? this.isRecord;\n }\n abstract push(record: any): void;\n abstract deleteRecord(record: any): void;\n abstract updateRecord(oldRecord: any, newRecord: any): void;\n abstract value(): any;\n abstract recalculate(): any;\n clearCacheValue() {\n this._formatedValue = undefined;\n }\n formatValue(col?: number, row?: number, table?: BaseTableAPI) {\n if (!this._formatedValue) {\n if (this.formatFun) {\n this._formatedValue = this.formatFun(this.value(), col, row, table);\n } else {\n this._formatedValue = this.value();\n }\n }\n return this._formatedValue;\n }\n reset() {\n this.records = [];\n this.clearCacheValue();\n }\n}\nexport class RecordAggregator extends Aggregator {\n type: string = AggregationType.RECORD;\n isRecord?: boolean = true;\n push(record: any): void {\n if (record && this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.records;\n }\n reset() {\n this.records = [];\n }\n recalculate() {\n // do nothing\n }\n}\n\nexport class NoneAggregator extends Aggregator {\n type: string = AggregationType.NONE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n fieldValue?: any;\n push(record: any): void {\n if (record) {\n if (this.isRecord) {\n this.records = [record];\n }\n if (this.field) {\n this.fieldValue = record[this.field];\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (this.field && this.records.length) {\n this.fieldValue = this.records[this.records.length - 1][this.field];\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (this.field && this.records.length) {\n this.fieldValue = this.records[this.records.length - 1][this.field];\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class CustomAggregator extends Aggregator {\n type: string = AggregationType.CUSTOM; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n aggregationFun?: Function;\n values: (string | number)[] = [];\n fieldValue?: any;\n constructor(config: {\n key: string;\n dimension: string;\n formatFun?: any;\n isRecord?: boolean;\n aggregationFun?: Function;\n }) {\n super(config);\n this.aggregationFun = config.aggregationFun;\n }\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (this.field) {\n this.values.push(record[this.field]);\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (this.field && this.records.length) {\n this.values = this.records.map(item => item[this.field]);\n }\n this.clearCacheValue();\n }\n }\n deleteRecord(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (this.field && this.records.length) {\n this.values = this.records.map(item => item[this.field]);\n }\n }\n this.clearCacheValue();\n }\n value() {\n if (!this.fieldValue) {\n this.fieldValue = this.aggregationFun?.(this.values, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class RecalculateAggregator extends Aggregator {\n type: string = AggregationType.RECALCULATE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n calculateFun: Function;\n fieldValue?: any;\n dependAggregators: Aggregator[];\n dependIndicatorKeys: string[];\n constructor(config: {\n key: string;\n dimension: string;\n formatFun: any;\n isRecord: boolean;\n calculateFun: Function;\n dependAggregators: Aggregator[];\n dependIndicatorKeys: string[];\n }) {\n super(config);\n this.calculateFun = config.calculateFun;\n this.dependAggregators = config.dependAggregators;\n this.dependIndicatorKeys = config.dependIndicatorKeys;\n }\n push(record: any): void {\n if (record && this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.clearCacheValue();\n }\n }\n value() {\n if (!this.fieldValue) {\n const aggregatorValue = _getDependAggregatorValues(this.dependAggregators, this.dependIndicatorKeys);\n this.fieldValue = this.calculateFun?.(aggregatorValue, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class SumAggregator extends Aggregator {\n type: string = AggregationType.SUM;\n sum = 0;\n positiveSum = 0;\n nagetiveSum = 0;\n declare field?: string;\n needSplitPositiveAndNegativeForSum?: boolean = false;\n constructor(config: {\n key: string;\n dimension: string;\n formatFun?: any;\n isRecord?: boolean;\n needSplitPositiveAndNegative?: boolean;\n }) {\n super(config);\n this.needSplitPositiveAndNegativeForSum = config.needSplitPositiveAndNegative ?? false;\n }\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value ?? 0;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum -= value ?? 0;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum -= value;\n } else if (value < 0) {\n this.nagetiveSum -= value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum -= value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum -= value;\n } else if (value < 0) {\n this.nagetiveSum -= value;\n }\n }\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (oldRecord.className === 'Aggregator') {\n const oldValue = oldRecord.value();\n const newValue = newRecord.value();\n this.sum += newValue - oldValue;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (oldValue > 0) {\n this.positiveSum -= oldValue;\n } else if (oldValue < 0) {\n this.nagetiveSum -= oldValue;\n }\n if (newValue > 0) {\n this.positiveSum += newValue;\n } else if (newValue < 0) {\n this.nagetiveSum += newValue;\n }\n }\n } else if (this.field && !isNaN(parseFloat(oldRecord[this.field]))) {\n const oldValue = parseFloat(oldRecord[this.field]);\n const newValue = parseFloat(newRecord[this.field]);\n this.sum += newValue - oldValue;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (oldValue > 0) {\n this.positiveSum -= oldValue;\n } else if (oldValue < 0) {\n this.nagetiveSum -= oldValue;\n }\n if (newValue > 0) {\n this.positiveSum += newValue;\n } else if (newValue < 0) {\n this.nagetiveSum += newValue;\n }\n }\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.sum : undefined;\n }\n positiveValue() {\n return this.positiveSum;\n }\n negativeValue() {\n return this.nagetiveSum;\n }\n reset() {\n super.reset();\n this.records = [];\n this.sum = 0;\n }\n recalculate() {\n this.sum = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value ?? 0;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n }\n }\n}\n\nexport class CountAggregator extends Aggregator {\n type: string = AggregationType.COUNT;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (record.className === 'Aggregator') {\n this.count -= record.value();\n } else {\n this.count--;\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (oldRecord.className === 'Aggregator') {\n this.count += newRecord.value() - oldRecord.value();\n } else {\n //this.count++;\n }\n }\n }\n value() {\n return this.count;\n }\n reset() {\n this.records = [];\n this.count = 0;\n }\n recalculate() {\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n }\n }\n}\nexport class AvgAggregator extends Aggregator {\n type: string = AggregationType.AVG;\n sum = 0;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum -= record.sum;\n this.count -= record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum -= parseFloat(record[this.field]);\n this.count--;\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (oldRecord.className === 'Aggregator' && oldRecord.type === AggregationType.AVG) {\n this.sum += newRecord.sum - oldRecord.sum;\n this.count += newRecord.count - oldRecord.count;\n } else if (this.field && !isNaN(parseFloat(oldRecord[this.field]))) {\n this.sum += parseFloat(newRecord[this.field]) - parseFloat(oldRecord[this.field]);\n // this.count++;\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.sum / this.count : undefined;\n }\n reset() {\n this.records = [];\n this.sum = 0;\n this.count = 0;\n }\n recalculate() {\n this.sum = 0;\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n }\n }\n}\nexport class MaxAggregator extends Aggregator {\n type: string = AggregationType.MAX;\n max: number = Number.MIN_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n this.recalculate();\n }\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.recalculate();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.max : undefined;\n }\n reset() {\n this.records = [];\n this.max = Number.MIN_SAFE_INTEGER;\n }\n recalculate() {\n this.max = Number.MIN_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n }\n }\n}\nexport class MinAggregator extends Aggregator {\n type: string = AggregationType.MIN;\n min: number = Number.MAX_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n this.recalculate();\n }\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.recalculate();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.min : undefined;\n }\n reset() {\n this.records = [];\n this.min = Number.MAX_SAFE_INTEGER;\n }\n recalculate() {\n this.min = Number.MAX_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n }\n }\n }\n }\n}\nexport function indicatorSort(a: any, b: any) {\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh');\n }\n if (a) {\n return 1;\n }\n return -1;\n}\nexport function typeSort(a: any, b: any, sortType: SortType) {\n if (sortType === SortType.NORMAL || sortType === SortType.normal) {\n return 0;\n }\n const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh') * factor;\n }\n if (a) {\n return 1 * factor;\n }\n return -1 * factor;\n}\nexport function naturalSort(as: any, bs: any, sortType: SortType) {\n if (sortType === SortType.NORMAL || sortType === SortType.normal) {\n return 0;\n }\n\n const rx = /(\\d+)|(\\D+)/g;\n const rd = /\\d/;\n const rz = /^0/;\n let a;\n let a1;\n let b;\n let b1;\n let nas = 0;\n let nbs = 0;\n const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;\n if (bs !== null && as === null) {\n return -1 * factor;\n }\n if (as !== null && bs === null) {\n return 1 * factor;\n }\n if (typeof as === 'number' && isNaN(as)) {\n return -1 * factor;\n }\n if (typeof bs === 'number' && isNaN(bs)) {\n return 1 * factor;\n }\n nas = +as;\n nbs = +bs;\n if (nas < nbs) {\n return -1 * factor;\n }\n if (nas > nbs) {\n return 1 * factor;\n }\n if (typeof as === 'number' && typeof bs !== 'number') {\n return -1 * factor;\n }\n if (typeof bs === 'number' && typeof as !== 'number') {\n return 1 * factor;\n }\n if (typeof as === 'number' && typeof bs === 'number') {\n return 0;\n }\n if (isNaN(nbs) && !isNaN(nas)) {\n return -1 * factor;\n }\n if (isNaN(nas) && !isNaN(nbs)) {\n return 1 * factor;\n }\n a = String(as);\n b = String(bs);\n if (a === b) {\n return 0;\n }\n if (!(rd.test(a) && rd.test(b))) {\n return (a > b ? 1 : -1) * factor;\n }\n a = a.match(rx);\n b = b.match(rx);\n while (a.length && b.length) {\n a1 = a.shift();\n b1 = b.shift();\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return (<any>a1.replace(rz, '.0') - <any>b1.replace(rz, '.0')) * factor;\n }\n return (a1 > b1 ? 1 : -1) * factor;\n }\n }\n return (a.length - b.length) * factor;\n}\nexport function sortBy(order: string[]) {\n let x;\n let i;\n const mapping = {};\n const lowercase_mapping = {};\n // for (i in order) {\n for (let i = 0; i < order.length; i++) {\n x = order[i];\n mapping[x] = i;\n if (typeof x === 'string') {\n lowercase_mapping[x.toLowerCase()] = i;\n }\n }\n return function (a: any, b: any, sortType: SortType) {\n if (sortType === SortType.NORMAL || sortType === SortType.normal) {\n return 0;\n }\n const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;\n let comparison;\n if (mapping[a] !== null && mapping[a] !== undefined && mapping[b] !== null && mapping[b] !== undefined) {\n comparison = mapping[a] - mapping[b];\n } else if (mapping[a] !== null && mapping[a] !== undefined) {\n comparison = -1;\n } else if (mapping[b] !== null && mapping[b] !== undefined) {\n comparison = 1;\n } else if (\n lowercase_mapping[a] !== null &&\n mapping[a] !== undefined &&\n lowercase_mapping[b] !== null &&\n mapping[b] !== undefined\n ) {\n comparison = lowercase_mapping[a] - lowercase_mapping[b];\n } else if (\n lowercase_mapping[a] === null ||\n mapping[a] === undefined ||\n lowercase_mapping[b] === null ||\n mapping[b] === undefined\n ) {\n comparison = 0;\n } else if (lowercase_mapping[a] !== null && mapping[a] !== undefined) {\n comparison = -1;\n } else if (lowercase_mapping[b] !== null && mapping[b] !== undefined) {\n comparison = 1;\n }\n if (isValid(comparison)) {\n return comparison * factor;\n }\n\n return naturalSort(a, b, sortType);\n };\n}\n\nfunction _getDependAggregatorValues(aggregators: Aggregator[], dependIndicatorKeys: string[]) {\n const dependAggregatorValues: any = {};\n for (let m = 0; m < dependIndicatorKeys?.length; m++) {\n const aggrator = aggregators.find(aggrator => aggrator.key === dependIndicatorKeys[m]);\n if (aggrator) {\n dependAggregatorValues[aggrator.key] = aggrator?.value();\n }\n }\n return dependAggregatorValues;\n}\n"]}
1
+ {"version":3,"sources":["../src/dataset/statistics-helper.ts"],"names":[],"mappings":"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","file":"statistics-helper.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { SortOrder } from '../ts-types';\nimport { AggregationType, SortType } from '../ts-types';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport interface IAggregator {\n records?: any[];\n value: () => any;\n className: string;\n push: (record: any) => void;\n deleteRecord: (record: any) => void;\n updateRecord: (oldRecord: any, newRecord: any) => void;\n recalculate: () => any;\n formatValue?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n formatFun?: () => any;\n clearCacheValue: () => any;\n reset: () => void;\n}\nexport abstract class Aggregator implements IAggregator {\n className = 'Aggregator';\n isRecord?: boolean = true; //是否需要维护records 将数据源都记录下来\n records?: any[] = [];\n type?: string;\n key: string;\n field?: string | string[];\n formatFun?: any;\n _formatedValue?: any;\n\n constructor(config: { key: string; dimension: string; formatFun?: any; isRecord?: boolean }) {\n this.key = config.key;\n this.field = config.dimension;\n this.formatFun = config.formatFun;\n this.isRecord = config.isRecord ?? this.isRecord;\n }\n abstract push(record: any): void;\n abstract deleteRecord(record: any): void;\n abstract updateRecord(oldRecord: any, newRecord: any): void;\n abstract value(): any;\n abstract recalculate(): any;\n clearCacheValue() {\n this._formatedValue = undefined;\n }\n formatValue(col?: number, row?: number, table?: BaseTableAPI) {\n if (!this._formatedValue) {\n if (this.formatFun) {\n this._formatedValue = this.formatFun(this.value(), col, row, table);\n } else {\n this._formatedValue = this.value();\n }\n }\n return this._formatedValue;\n }\n reset() {\n this.records = [];\n this.clearCacheValue();\n }\n}\nexport class RecordAggregator extends Aggregator {\n type: string = AggregationType.RECORD;\n isRecord?: boolean = true;\n push(record: any): void {\n if (record && this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.records;\n }\n reset() {\n this.records = [];\n }\n recalculate() {\n // do nothing\n }\n}\n\nexport class NoneAggregator extends Aggregator {\n type: string = AggregationType.NONE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n fieldValue?: any;\n push(record: any): void {\n if (record) {\n if (this.isRecord) {\n this.records = [record];\n }\n if (this.field) {\n this.fieldValue = record[this.field];\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (this.field && this.records.length) {\n this.fieldValue = this.records[this.records.length - 1][this.field];\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (this.field && this.records.length) {\n this.fieldValue = this.records[this.records.length - 1][this.field];\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class CustomAggregator extends Aggregator {\n type: string = AggregationType.CUSTOM; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n aggregationFun?: Function;\n values: (string | number)[] = [];\n fieldValue?: any;\n constructor(config: {\n key: string;\n dimension: string;\n formatFun?: any;\n isRecord?: boolean;\n aggregationFun?: Function;\n }) {\n super(config);\n this.aggregationFun = config.aggregationFun;\n }\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (this.field) {\n this.values.push(record[this.field]);\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (this.field && this.records.length) {\n this.values = this.records.map(item => item[this.field]);\n }\n this.clearCacheValue();\n }\n }\n deleteRecord(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (this.field && this.records.length) {\n this.values = this.records.map(item => item[this.field]);\n }\n }\n this.clearCacheValue();\n }\n value() {\n if (!this.fieldValue) {\n this.fieldValue = this.aggregationFun?.(this.values, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class RecalculateAggregator extends Aggregator {\n type: string = AggregationType.RECALCULATE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n calculateFun: Function;\n fieldValue?: any;\n dependAggregators: Aggregator[];\n dependIndicatorKeys: string[];\n constructor(config: {\n key: string;\n dimension: string;\n formatFun: any;\n isRecord: boolean;\n calculateFun: Function;\n dependAggregators: Aggregator[];\n dependIndicatorKeys: string[];\n }) {\n super(config);\n this.calculateFun = config.calculateFun;\n this.dependAggregators = config.dependAggregators;\n this.dependIndicatorKeys = config.dependIndicatorKeys;\n }\n push(record: any): void {\n if (record && this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.clearCacheValue();\n }\n }\n value() {\n if (!this.fieldValue) {\n const aggregatorValue = _getDependAggregatorValues(this.dependAggregators, this.dependIndicatorKeys);\n this.fieldValue = this.calculateFun?.(aggregatorValue, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class SumAggregator extends Aggregator {\n type: string = AggregationType.SUM;\n sum = 0;\n positiveSum = 0;\n nagetiveSum = 0;\n declare field?: string;\n needSplitPositiveAndNegativeForSum?: boolean = false;\n constructor(config: {\n key: string;\n dimension: string;\n formatFun?: any;\n isRecord?: boolean;\n needSplitPositiveAndNegative?: boolean;\n }) {\n super(config);\n this.needSplitPositiveAndNegativeForSum = config.needSplitPositiveAndNegative ?? false;\n }\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value ?? 0;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum -= value ?? 0;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum -= value;\n } else if (value < 0) {\n this.nagetiveSum -= value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum -= value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum -= value;\n } else if (value < 0) {\n this.nagetiveSum -= value;\n }\n }\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (oldRecord.className === 'Aggregator') {\n const oldValue = oldRecord.value();\n const newValue = newRecord.value();\n this.sum += newValue - oldValue;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (oldValue > 0) {\n this.positiveSum -= oldValue;\n } else if (oldValue < 0) {\n this.nagetiveSum -= oldValue;\n }\n if (newValue > 0) {\n this.positiveSum += newValue;\n } else if (newValue < 0) {\n this.nagetiveSum += newValue;\n }\n }\n } else if (this.field && !isNaN(parseFloat(oldRecord[this.field]))) {\n const oldValue = parseFloat(oldRecord[this.field]);\n const newValue = parseFloat(newRecord[this.field]);\n this.sum += newValue - oldValue;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (oldValue > 0) {\n this.positiveSum -= oldValue;\n } else if (oldValue < 0) {\n this.nagetiveSum -= oldValue;\n }\n if (newValue > 0) {\n this.positiveSum += newValue;\n } else if (newValue < 0) {\n this.nagetiveSum += newValue;\n }\n }\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.sum : undefined;\n }\n positiveValue() {\n return this.positiveSum;\n }\n negativeValue() {\n return this.nagetiveSum;\n }\n reset() {\n super.reset();\n this.records = [];\n this.sum = 0;\n }\n recalculate() {\n this.sum = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value ?? 0;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n }\n }\n}\n\nexport class CountAggregator extends Aggregator {\n type: string = AggregationType.COUNT;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (record.className === 'Aggregator') {\n this.count -= record.value();\n } else {\n this.count--;\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (oldRecord.className === 'Aggregator') {\n this.count += newRecord.value() - oldRecord.value();\n } else {\n //this.count++;\n }\n }\n }\n value() {\n return this.count;\n }\n reset() {\n this.records = [];\n this.count = 0;\n }\n recalculate() {\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n }\n }\n}\nexport class AvgAggregator extends Aggregator {\n type: string = AggregationType.AVG;\n sum = 0;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum -= record.sum;\n this.count -= record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum -= parseFloat(record[this.field]);\n this.count--;\n }\n }\n this.clearCacheValue();\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n if (oldRecord.className === 'Aggregator' && oldRecord.type === AggregationType.AVG) {\n this.sum += newRecord.sum - oldRecord.sum;\n this.count += newRecord.count - oldRecord.count;\n } else if (this.field && !isNaN(parseFloat(oldRecord[this.field]))) {\n this.sum += parseFloat(newRecord[this.field]) - parseFloat(oldRecord[this.field]);\n // this.count++;\n }\n this.clearCacheValue();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.sum / this.count : undefined;\n }\n reset() {\n this.records = [];\n this.sum = 0;\n this.count = 0;\n }\n recalculate() {\n this.sum = 0;\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n }\n }\n}\nexport class MaxAggregator extends Aggregator {\n type: string = AggregationType.MAX;\n max: number = Number.MIN_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n this.recalculate();\n }\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.recalculate();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.max : undefined;\n }\n reset() {\n this.records = [];\n this.max = Number.MIN_SAFE_INTEGER;\n }\n recalculate() {\n this.max = Number.MIN_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n }\n }\n}\nexport class MinAggregator extends Aggregator {\n type: string = AggregationType.MIN;\n min: number = Number.MAX_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n } else if (this.field && !isNaN(record[this.field])) {\n this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min;\n }\n }\n this.clearCacheValue();\n }\n deleteRecord(record: any) {\n if (record) {\n if (this.isRecord && this.records) {\n this.records = this.records.filter(item => item !== record);\n }\n this.recalculate();\n }\n }\n updateRecord(oldRecord: any, newRecord: any): void {\n if (oldRecord && newRecord) {\n if (this.isRecord && this.records) {\n this.records = this.records.map(item => {\n if (item === oldRecord) {\n return newRecord;\n }\n return item;\n });\n }\n this.recalculate();\n }\n }\n value() {\n return this.records?.length >= 1 ? this.min : undefined;\n }\n reset() {\n this.records = [];\n this.min = Number.MAX_SAFE_INTEGER;\n }\n recalculate() {\n this.min = Number.MAX_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n } else if (this.field && !isNaN(record[this.field])) {\n this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min;\n }\n }\n }\n }\n}\nexport function indicatorSort(a: any, b: any) {\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh');\n }\n if (a) {\n return 1;\n }\n return -1;\n}\nexport function typeSort(a: any, b: any, sortType: SortType) {\n if (sortType === SortType.NORMAL || sortType === SortType.normal) {\n return 0;\n }\n const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh') * factor;\n }\n if (a) {\n return 1 * factor;\n }\n return -1 * factor;\n}\nexport function naturalSort(as: any, bs: any, sortType: SortType) {\n if (sortType === SortType.NORMAL || sortType === SortType.normal) {\n return 0;\n }\n\n const rx = /(\\d+)|(\\D+)/g;\n const rd = /\\d/;\n const rz = /^0/;\n let a;\n let a1;\n let b;\n let b1;\n let nas = 0;\n let nbs = 0;\n const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;\n if (bs !== null && as === null) {\n return -1 * factor;\n }\n if (as !== null && bs === null) {\n return 1 * factor;\n }\n if (typeof as === 'number' && isNaN(as)) {\n return -1 * factor;\n }\n if (typeof bs === 'number' && isNaN(bs)) {\n return 1 * factor;\n }\n nas = +as;\n nbs = +bs;\n if (nas < nbs) {\n return -1 * factor;\n }\n if (nas > nbs) {\n return 1 * factor;\n }\n if (typeof as === 'number' && typeof bs !== 'number') {\n return -1 * factor;\n }\n if (typeof bs === 'number' && typeof as !== 'number') {\n return 1 * factor;\n }\n if (typeof as === 'number' && typeof bs === 'number') {\n return 0;\n }\n if (isNaN(nbs) && !isNaN(nas)) {\n return -1 * factor;\n }\n if (isNaN(nas) && !isNaN(nbs)) {\n return 1 * factor;\n }\n a = String(as);\n b = String(bs);\n if (a === b) {\n return 0;\n }\n if (!(rd.test(a) && rd.test(b))) {\n return (a > b ? 1 : -1) * factor;\n }\n a = a.match(rx);\n b = b.match(rx);\n while (a.length && b.length) {\n a1 = a.shift();\n b1 = b.shift();\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return (<any>a1.replace(rz, '.0') - <any>b1.replace(rz, '.0')) * factor;\n }\n return (a1 > b1 ? 1 : -1) * factor;\n }\n }\n return (a.length - b.length) * factor;\n}\nexport function sortBy(order: string[]) {\n let x;\n let i;\n const mapping = {};\n const lowercase_mapping = {};\n // for (i in order) {\n for (let i = 0; i < order.length; i++) {\n x = order[i];\n mapping[x] = i;\n if (typeof x === 'string') {\n lowercase_mapping[x.toLowerCase()] = i;\n }\n }\n return function (a: any, b: any, sortType: SortType) {\n if (sortType === SortType.NORMAL || sortType === SortType.normal) {\n return 0;\n }\n const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;\n let comparison;\n if (mapping[a] !== null && mapping[a] !== undefined && mapping[b] !== null && mapping[b] !== undefined) {\n comparison = mapping[a] - mapping[b];\n } else if (mapping[a] !== null && mapping[a] !== undefined) {\n comparison = -1;\n } else if (mapping[b] !== null && mapping[b] !== undefined) {\n comparison = 1;\n } else if (\n lowercase_mapping[a] !== null &&\n mapping[a] !== undefined &&\n lowercase_mapping[b] !== null &&\n mapping[b] !== undefined\n ) {\n comparison = lowercase_mapping[a] - lowercase_mapping[b];\n } else if (\n lowercase_mapping[a] === null ||\n mapping[a] === undefined ||\n lowercase_mapping[b] === null ||\n mapping[b] === undefined\n ) {\n comparison = 0;\n } else if (lowercase_mapping[a] !== null && mapping[a] !== undefined) {\n comparison = -1;\n } else if (lowercase_mapping[b] !== null && mapping[b] !== undefined) {\n comparison = 1;\n }\n if (isValid(comparison)) {\n return comparison * factor;\n }\n\n return naturalSort(a, b, sortType);\n };\n}\n\nfunction _getDependAggregatorValues(aggregators: Aggregator[], dependIndicatorKeys: string[]) {\n const dependAggregatorValues: any = {};\n for (let m = 0; m < dependIndicatorKeys?.length; m++) {\n const aggrator = aggregators.find(aggrator => aggrator.key === dependIndicatorKeys[m]);\n if (aggrator) {\n dependAggregatorValues[aggrator.key] = aggrator?.value();\n }\n }\n return dependAggregatorValues;\n}\n"]}
@@ -100,5 +100,4 @@ class EditManeger {
100
100
  }
101
101
  }
102
102
 
103
- exports.EditManeger = EditManeger;
104
- //# sourceMappingURL=edit-manager.js.map
103
+ exports.EditManeger = EditManeger;
@@ -109,7 +109,11 @@ class EventManager {
109
109
  return !1;
110
110
  }
111
111
  deelTableSelectAll() {
112
- this.table.stateManager.updateSelectPos(-1, -1, !1, !1, !0);
112
+ this.table.stateManager.updateSelectPos(-1, -1, !1, !1, !0), this.table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.SELECTED_CELL, {
113
+ ranges: this.table.stateManager.select.ranges,
114
+ col: 0,
115
+ row: 0
116
+ });
113
117
  }
114
118
  dealMenuSelect(eventArgsSet) {}
115
119
  checkColumnResize(eventArgsSet, update) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@src/vrender';\nimport type { FederatedPointerEvent, Gesture, IEventTarget } from './../vrender';\nimport { RichText } from './../vrender';\nimport type { ColumnDefine, ListTableConstructorOptions, MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManager } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindGesture, bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\nimport { Env } from '../tools/env';\nimport type { ListTable } from '../ListTable';\nimport { isValid } from '@visactor/vutils';\nimport { InertiaScroll } from './scroll';\n\nexport class EventManager {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n // /** 为了能够判断canvas mousedown 事件 以阻止事件冒泡 */\n // isPointerDownOnTable: boolean = false;\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n gesture: Gesture;\n handleTextStickBindId: number[];\n\n //鼠标事件记录。 PointerMove敏感度太高了 记录下上一个鼠标位置 在接收到PointerMove事件时做判断 是否到到触发框选或者移动表头操作的标准,防止误触\n LastPointerXY: { x: number; y: number };\n LastBodyPointerXY: { x: number; y: number };\n isDown = false;\n isDraging = false;\n scrollYSpeed: number;\n scrollXSpeed: number;\n downIcon: IEventTarget; // 记录鼠标按下的sicon\n //报错已绑定过的事件 后续清除绑定\n globalEventListeners: { name: string; env: 'document' | 'body' | 'window'; callback: (e?: any) => void }[] = [];\n inertiaScroll: InertiaScroll;\n\n bindSparklineHoverEvent: boolean;\n\n _enableTableScroll: boolean = true;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.handleTextStickBindId = [];\n this.inertiaScroll = new InertiaScroll(table.stateManager);\n if (Env.mode === 'node' || table.options.disableInteraction) {\n return;\n }\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n bindGesture(this);\n }\n updateEventBinder() {\n setTimeout(() => {\n if (this.table.isReleased) {\n return;\n }\n\n // 处理textStick 是否绑定SCROLL的判断\n if (checkHaveTextStick(this.table) && this.handleTextStickBindId?.length === 0) {\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n })\n );\n\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, e => {\n handleTextStick(this.table);\n })\n );\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, e => {\n handleTextStick(this.table);\n })\n );\n } else if (!checkHaveTextStick(this.table) && this.handleTextStickBindId) {\n this.handleTextStickBindId.forEach(id => {\n this.table.off(id);\n });\n this.handleTextStickBindId = [];\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n }, 0);\n }\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManager: StateManager = this.table.stateManager;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon, event } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManager.triggerDropDownMenu(col, row, x, y, event);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManager.triggerSort(col, row, icon, event);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManager.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n const isHasSelected = !!stateManager.select.ranges?.length;\n stateManager.updateSelectPos(-1, -1);\n stateManager.endSelectCells(true, isHasSelected);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, () => {\n stateManager.hideMenu();\n });\n\n // 处理textStick\n // if (checkHaveTextStick(this.table)) {\n // this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n // handleTextStick(this.table);\n // });\n // }\n this.updateEventBinder();\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table.eventManager.checkCellFillhandle(eventArgsSet)) {\n this.table.fireListeners(TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE, {});\n } else if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n this.table.internalProps._widthResizedColMap.add(resizeCol.col);\n // if (this.table.isPivotChart()) {\n this.table.scenegraph.updateChartSizeForResizeColWidth(resizeCol.col);\n // }\n const state = this.table.stateManager;\n // update frozen shadowline component\n if (\n state.columnResize.col < state.table.frozenColCount &&\n !state.table.isPivotTable() &&\n !(state.table as ListTable).transpose\n ) {\n state.table.scenegraph.component.setFrozenColumnShadow(\n state.table.frozenColCount - 1,\n state.columnResize.isRightFrozen\n );\n }\n const colWidths = [];\n // 返回所有列宽信息\n for (let col = 0; col < this.table.colCount; col++) {\n colWidths.push(this.table.getColWidth(col));\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, {\n col: resizeCol.col,\n colWidths\n });\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManager.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManager.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverIcon(eventArgs.col, eventArgs.row, eventArgs.target, eventArgs.targetCell);\n } else {\n this.table.stateManager.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n if (!eventArgsSet) {\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (eventArgs.target.name === 'checkbox' || eventArgs.target.name === 'radio') {\n return false;\n }\n\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManager.updateHoverPos(-1, -1);\n // }\n const define = this.table.getBodyColumnDefine(eventArgs.col, eventArgs.row);\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n ((define as ColumnDefine)?.disableHeaderSelect || this.table.stateManager.select?.disableHeader)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (!this.table.isHeader(eventArgs.col, eventArgs.row) && (define as ColumnDefine)?.disableSelect) {\n if (!isSelectMoving) {\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n dealFillSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length && this.table.stateManager.isFillHandle()) {\n let updateRow;\n let updateCol;\n const currentRange = this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1];\n if (isSelectMoving) {\n if (!isValid(this.table.stateManager.fillHandle.directionRow)) {\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n this.table.stateManager.fillHandle.directionRow = true;\n } else {\n this.table.stateManager.fillHandle.directionRow = false;\n }\n }\n\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n if (this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y > 0) {\n this.table.stateManager.fillHandle.direction = 'top';\n } else {\n this.table.stateManager.fillHandle.direction = 'bottom';\n }\n } else {\n if (this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x > 0) {\n this.table.stateManager.fillHandle.direction = 'left';\n } else {\n this.table.stateManager.fillHandle.direction = 'right';\n }\n }\n if (this.table.stateManager.fillHandle.directionRow) {\n updateRow = eventArgs.row;\n updateCol = currentRange.end.col;\n } else {\n updateRow = currentRange.end.row;\n updateCol = eventArgs.col;\n }\n }\n\n this.table.stateManager.updateSelectPos(\n isSelectMoving ? updateCol : currentRange.end.col,\n isSelectMoving ? updateRow : currentRange.end.row,\n true,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n } else {\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n }\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n // fillSelected(eventArgsSet?: SceneEvent, SelectCellRange?: any, SelectData?: any): any {\n // return;\n // if (!eventArgsSet) {\n // this.table.stateManager.updateSelectPos(-1, -1);\n // return;\n // }\n // const { eventArgs } = eventArgsSet;\n\n // if (eventArgs) {\n // if (eventArgs.target.name === 'checkbox') {\n // return;\n // }\n // let direction;\n\n // if (eventArgs.row >= SelectCellRange.start.row && eventArgs.row <= SelectCellRange.end.row) {\n // if (eventArgs.col > SelectCellRange.end.col) {\n // direction = 'right';\n // } else {\n // direction = 'left';\n // }\n // } else {\n // if (eventArgs.row > SelectCellRange.end.row) {\n // direction = 'down';\n // } else {\n // direction = 'up';\n // }\n // }\n // const values: (string | number)[][] = [];\n // const fillData: any[][] = [];\n // let updaterow;\n // let updatecol;\n // const rows = SelectData.split('\\n'); // 将数据拆分为行\n // rows.forEach(function (rowCells: any, rowIndex: number) {\n // const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n // const rowValues: (string | number)[] = [];\n // values.push(rowValues);\n // cells.forEach(function (cell: string, cellIndex: number) {\n // // 去掉单元格数据末尾的 '\\r'\n // if (cellIndex === cells.length - 1) {\n // cell = cell.trim();\n // }\n // rowValues.push(cell);\n // });\n // });\n\n // updaterow = SelectCellRange.start.row;\n // updatecol = SelectCellRange.start.col;\n // if (['up', 'left'].indexOf(direction) > -1) {\n // if (direction === 'up') {\n // updaterow = eventArgs.row;\n\n // const fillLength = SelectCellRange.start.row - updaterow;\n\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = values.length - 1 - (i % values.length);\n // const newRow = values[rowIndex].slice(0); // 复制一行数据\n\n // fillData.unshift(newRow); // 在填充数据的开头插入新行\n // }\n // } else {\n // updatecol = eventArgs.col;\n // const fillLength = SelectCellRange.start.col - updatecol;\n\n // for (let i = 0; i < values.length; i++) {\n // const newRow = values[i].slice(0); // 复制一行数据\n // while (newRow.length < fillLength) {\n // newRow.unshift(newRow[0]); // 在新行开头向左填充元素\n // }\n // fillData.push(newRow);\n // }\n // }\n // } else {\n // if (direction === 'down') {\n // updaterow = SelectCellRange.end.row + 1;\n // const fillLength = eventArgs.row - SelectCellRange.end.row;\n\n // // 将原始数据添加到新数组中\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = i % values.length;\n // const newRow = values[rowIndex]; // 复制一行数据\n // fillData.push(newRow);\n // }\n // } else {\n // const fillLength = eventArgs.col - SelectCellRange.end.col;\n // updatecol = SelectCellRange.end.col + 1;\n\n // values.forEach(function (rowCells: any[]) {\n // const newRow: any[] = [];\n // // 将原始数据按顺序填充到新行中\n // for (let i = 0; i < fillLength; i++) {\n // const dataIndex = i % rowCells.length;\n // newRow.push(rowCells[dataIndex]);\n // }\n\n // // 将新行添加到填充数据中\n // fillData.push(newRow);\n // });\n // }\n // }\n\n // (this.table as ListTableAPI).changeCellValues(updatecol, updaterow, fillData, false);\n // }\n // }\n\n deelTableSelectAll() {\n this.table.stateManager.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if ((this.table.options as ListTableConstructorOptions).enableTreeStickCell && !eventArgs) {\n return false;\n }\n // if (eventArgs) { // 如果是鼠标处理表格外部如最后一列的后面 也期望可以拖拽列宽\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n if (update) {\n this.table.stateManager.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n // }\n\n return false;\n }\n\n checkRowResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n const resizeRow = this.table.scenegraph.getResizeRowAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n\n if (this.table._canResizeRow(resizeRow.col, resizeRow.row) && resizeRow.row >= 0) {\n if (update) {\n this.table.stateManager.startResizeRow(\n resizeRow.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeRow.bottomFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n checkCellFillhandle(eventArgsSet: SceneEvent, update?: boolean): boolean {\n if (this.table.options.excelOptions?.fillHandle) {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length) {\n const lastCol = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.col,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.col\n );\n const lastRow = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.row,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.row\n );\n\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n // 计算鼠标与fillhandle矩形中心之间的距离\n const distanceX = Math.abs(eventArgsSet.abstractPos.x - lastCellBound.x2);\n const distanceY = Math.abs(eventArgsSet.abstractPos.y - lastCellBound.y2);\n const squareSize = 6 * 3;\n // 判断鼠标是否落在fillhandle矩形内\n if (\n this.table.stateManager.fillHandle?.isFilling ||\n (distanceX <= squareSize / 2 && distanceY <= squareSize / 2)\n ) {\n if (update) {\n this.table.stateManager.startFillSelect(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);\n }\n return true;\n }\n }\n }\n }\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeCol(xInTable, yInTable);\n }\n\n dealRowResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeRow(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n (checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManager.select.ranges) ||\n this.table.options.select?.disableHeaderSelect ||\n this.table.options.select?.disableSelect) &&\n // this.table.stateManager.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManager.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManager.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs?.event?.nativeEvent\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n if (isValid(eventArgs.col) && isValid(eventArgs.row)) {\n this.table.stateManager.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon,\n event\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon,\n event\n });\n return true;\n }\n }\n\n return false;\n }\n /** TODO 其他的事件并么有做remove */\n release() {\n this.gesture.release();\n\n // remove global event listerner\n this.globalEventListeners.forEach(item => {\n if (item.env === 'document') {\n document.removeEventListener(item.name, item.callback);\n } else if (item.env === 'body') {\n document.body.removeEventListener(item.name, item.callback);\n } else if (item.env === 'window') {\n window.removeEventListener(item.name, item.callback);\n }\n });\n this.globalEventListeners = [];\n }\n\n enableScroll() {\n this._enableTableScroll = true;\n }\n\n disableScroll() {\n this._enableTableScroll = false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@src/vrender';\nimport type { FederatedPointerEvent, Gesture, IEventTarget } from './../vrender';\nimport { RichText } from './../vrender';\nimport type { ColumnDefine, ListTableConstructorOptions, MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManager } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindGesture, bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\nimport { Env } from '../tools/env';\nimport type { ListTable } from '../ListTable';\nimport { isValid } from '@visactor/vutils';\nimport { InertiaScroll } from './scroll';\n\nexport class EventManager {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n // /** 为了能够判断canvas mousedown 事件 以阻止事件冒泡 */\n // isPointerDownOnTable: boolean = false;\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n gesture: Gesture;\n handleTextStickBindId: number[];\n\n //鼠标事件记录。 PointerMove敏感度太高了 记录下上一个鼠标位置 在接收到PointerMove事件时做判断 是否到到触发框选或者移动表头操作的标准,防止误触\n LastPointerXY: { x: number; y: number };\n LastBodyPointerXY: { x: number; y: number };\n isDown = false;\n isDraging = false;\n scrollYSpeed: number;\n scrollXSpeed: number;\n downIcon: IEventTarget; // 记录鼠标按下的sicon\n //报错已绑定过的事件 后续清除绑定\n globalEventListeners: { name: string; env: 'document' | 'body' | 'window'; callback: (e?: any) => void }[] = [];\n inertiaScroll: InertiaScroll;\n\n bindSparklineHoverEvent: boolean;\n\n _enableTableScroll: boolean = true;\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.handleTextStickBindId = [];\n this.inertiaScroll = new InertiaScroll(table.stateManager);\n if (Env.mode === 'node' || table.options.disableInteraction) {\n return;\n }\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n bindGesture(this);\n }\n updateEventBinder() {\n setTimeout(() => {\n if (this.table.isReleased) {\n return;\n }\n\n // 处理textStick 是否绑定SCROLL的判断\n if (checkHaveTextStick(this.table) && this.handleTextStickBindId?.length === 0) {\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n })\n );\n\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, e => {\n handleTextStick(this.table);\n })\n );\n this.handleTextStickBindId.push(\n this.table.on(TABLE_EVENT_TYPE.RESIZE_ROW_END, e => {\n handleTextStick(this.table);\n })\n );\n } else if (!checkHaveTextStick(this.table) && this.handleTextStickBindId) {\n this.handleTextStickBindId.forEach(id => {\n this.table.off(id);\n });\n this.handleTextStickBindId = [];\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n }, 0);\n }\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManager: StateManager = this.table.stateManager;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon, event } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManager.triggerDropDownMenu(col, row, x, y, event);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManager.triggerSort(col, row, icon, event);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManager.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n const isHasSelected = !!stateManager.select.ranges?.length;\n stateManager.updateSelectPos(-1, -1);\n stateManager.endSelectCells(true, isHasSelected);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLICK, () => {\n stateManager.hideMenu();\n });\n\n // 处理textStick\n // if (checkHaveTextStick(this.table)) {\n // this.handleTextStickBindId = this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n // handleTextStick(this.table);\n // });\n // }\n this.updateEventBinder();\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table.eventManager.checkCellFillhandle(eventArgsSet)) {\n this.table.fireListeners(TABLE_EVENT_TYPE.DBLCLICK_FILL_HANDLE, {});\n } else if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n this.table.internalProps._widthResizedColMap.add(resizeCol.col);\n // if (this.table.isPivotChart()) {\n this.table.scenegraph.updateChartSizeForResizeColWidth(resizeCol.col);\n // }\n const state = this.table.stateManager;\n // update frozen shadowline component\n if (\n state.columnResize.col < state.table.frozenColCount &&\n !state.table.isPivotTable() &&\n !(state.table as ListTable).transpose\n ) {\n state.table.scenegraph.component.setFrozenColumnShadow(\n state.table.frozenColCount - 1,\n state.columnResize.isRightFrozen\n );\n }\n const colWidths = [];\n // 返回所有列宽信息\n for (let col = 0; col < this.table.colCount; col++) {\n colWidths.push(this.table.getColWidth(col));\n }\n this.table.fireListeners(TABLE_EVENT_TYPE.RESIZE_COLUMN_END, {\n col: resizeCol.col,\n colWidths\n });\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManager.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManager.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManager.updateHoverIcon(eventArgs.col, eventArgs.row, eventArgs.target, eventArgs.targetCell);\n } else {\n this.table.stateManager.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n if (!eventArgsSet) {\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (eventArgs.target.name === 'checkbox' || eventArgs.target.name === 'radio') {\n return false;\n }\n\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManager.updateHoverPos(-1, -1);\n // }\n const define = this.table.getBodyColumnDefine(eventArgs.col, eventArgs.row);\n if (\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n ((define as ColumnDefine)?.disableHeaderSelect || this.table.stateManager.select?.disableHeader)\n ) {\n if (!isSelectMoving) {\n // 如果是点击点表头 取消单元格选中状态\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n } else if (!this.table.isHeader(eventArgs.col, eventArgs.row) && (define as ColumnDefine)?.disableSelect) {\n if (!isSelectMoving) {\n this.table.stateManager.updateSelectPos(-1, -1);\n }\n return false;\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManager.updateSelectPos(-1, -1);\n return false;\n }\n\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n dealFillSelect(eventArgsSet?: SceneEvent, isSelectMoving?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length && this.table.stateManager.isFillHandle()) {\n let updateRow;\n let updateCol;\n const currentRange = this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1];\n if (isSelectMoving) {\n if (!isValid(this.table.stateManager.fillHandle.directionRow)) {\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n this.table.stateManager.fillHandle.directionRow = true;\n } else {\n this.table.stateManager.fillHandle.directionRow = false;\n }\n }\n\n if (\n Math.abs(this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y) >=\n Math.abs(this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x)\n ) {\n if (this.table.stateManager.fillHandle.startY - eventArgsSet.abstractPos.y > 0) {\n this.table.stateManager.fillHandle.direction = 'top';\n } else {\n this.table.stateManager.fillHandle.direction = 'bottom';\n }\n } else {\n if (this.table.stateManager.fillHandle.startX - eventArgsSet.abstractPos.x > 0) {\n this.table.stateManager.fillHandle.direction = 'left';\n } else {\n this.table.stateManager.fillHandle.direction = 'right';\n }\n }\n if (this.table.stateManager.fillHandle.directionRow) {\n updateRow = eventArgs.row;\n updateCol = currentRange.end.col;\n } else {\n updateRow = currentRange.end.row;\n updateCol = eventArgs.col;\n }\n }\n\n this.table.stateManager.updateSelectPos(\n isSelectMoving ? updateCol : currentRange.end.col,\n isSelectMoving ? updateRow : currentRange.end.row,\n true,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n } else {\n this.table.stateManager.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey,\n false,\n isSelectMoving\n );\n }\n return true;\n }\n // this.table.stateManager.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n // fillSelected(eventArgsSet?: SceneEvent, SelectCellRange?: any, SelectData?: any): any {\n // return;\n // if (!eventArgsSet) {\n // this.table.stateManager.updateSelectPos(-1, -1);\n // return;\n // }\n // const { eventArgs } = eventArgsSet;\n\n // if (eventArgs) {\n // if (eventArgs.target.name === 'checkbox') {\n // return;\n // }\n // let direction;\n\n // if (eventArgs.row >= SelectCellRange.start.row && eventArgs.row <= SelectCellRange.end.row) {\n // if (eventArgs.col > SelectCellRange.end.col) {\n // direction = 'right';\n // } else {\n // direction = 'left';\n // }\n // } else {\n // if (eventArgs.row > SelectCellRange.end.row) {\n // direction = 'down';\n // } else {\n // direction = 'up';\n // }\n // }\n // const values: (string | number)[][] = [];\n // const fillData: any[][] = [];\n // let updaterow;\n // let updatecol;\n // const rows = SelectData.split('\\n'); // 将数据拆分为行\n // rows.forEach(function (rowCells: any, rowIndex: number) {\n // const cells = rowCells.split('\\t'); // 将行数据拆分为单元格\n // const rowValues: (string | number)[] = [];\n // values.push(rowValues);\n // cells.forEach(function (cell: string, cellIndex: number) {\n // // 去掉单元格数据末尾的 '\\r'\n // if (cellIndex === cells.length - 1) {\n // cell = cell.trim();\n // }\n // rowValues.push(cell);\n // });\n // });\n\n // updaterow = SelectCellRange.start.row;\n // updatecol = SelectCellRange.start.col;\n // if (['up', 'left'].indexOf(direction) > -1) {\n // if (direction === 'up') {\n // updaterow = eventArgs.row;\n\n // const fillLength = SelectCellRange.start.row - updaterow;\n\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = values.length - 1 - (i % values.length);\n // const newRow = values[rowIndex].slice(0); // 复制一行数据\n\n // fillData.unshift(newRow); // 在填充数据的开头插入新行\n // }\n // } else {\n // updatecol = eventArgs.col;\n // const fillLength = SelectCellRange.start.col - updatecol;\n\n // for (let i = 0; i < values.length; i++) {\n // const newRow = values[i].slice(0); // 复制一行数据\n // while (newRow.length < fillLength) {\n // newRow.unshift(newRow[0]); // 在新行开头向左填充元素\n // }\n // fillData.push(newRow);\n // }\n // }\n // } else {\n // if (direction === 'down') {\n // updaterow = SelectCellRange.end.row + 1;\n // const fillLength = eventArgs.row - SelectCellRange.end.row;\n\n // // 将原始数据添加到新数组中\n // for (let i = 0; i < fillLength; i++) {\n // const rowIndex = i % values.length;\n // const newRow = values[rowIndex]; // 复制一行数据\n // fillData.push(newRow);\n // }\n // } else {\n // const fillLength = eventArgs.col - SelectCellRange.end.col;\n // updatecol = SelectCellRange.end.col + 1;\n\n // values.forEach(function (rowCells: any[]) {\n // const newRow: any[] = [];\n // // 将原始数据按顺序填充到新行中\n // for (let i = 0; i < fillLength; i++) {\n // const dataIndex = i % rowCells.length;\n // newRow.push(rowCells[dataIndex]);\n // }\n\n // // 将新行添加到填充数据中\n // fillData.push(newRow);\n // });\n // }\n // }\n\n // (this.table as ListTableAPI).changeCellValues(updatecol, updaterow, fillData, false);\n // }\n // }\n\n deelTableSelectAll() {\n this.table.stateManager.updateSelectPos(-1, -1, false, false, true);\n this.table.fireListeners(TABLE_EVENT_TYPE.SELECTED_CELL, {\n ranges: this.table.stateManager.select.ranges,\n col: 0,\n row: 0\n });\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if ((this.table.options as ListTableConstructorOptions).enableTreeStickCell && !eventArgs) {\n return false;\n }\n // if (eventArgs) { // 如果是鼠标处理表格外部如最后一列的后面 也期望可以拖拽列宽\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n if (update) {\n this.table.stateManager.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n // }\n\n return false;\n }\n\n checkRowResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n const resizeRow = this.table.scenegraph.getResizeRowAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n\n if (this.table._canResizeRow(resizeRow.col, resizeRow.row) && resizeRow.row >= 0) {\n if (update) {\n this.table.stateManager.startResizeRow(\n resizeRow.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeRow.bottomFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n checkCellFillhandle(eventArgsSet: SceneEvent, update?: boolean): boolean {\n if (this.table.options.excelOptions?.fillHandle) {\n const { eventArgs } = eventArgsSet;\n if (eventArgs) {\n if (this.table.stateManager.select?.ranges?.length) {\n const lastCol = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.col,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.col\n );\n const lastRow = Math.max(\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].start.row,\n this.table.stateManager.select.ranges[this.table.stateManager.select.ranges.length - 1].end.row\n );\n\n const lastCellBound = this.table.scenegraph.highPerformanceGetCell(lastCol, lastRow).globalAABBBounds;\n // 计算鼠标与fillhandle矩形中心之间的距离\n const distanceX = Math.abs(eventArgsSet.abstractPos.x - lastCellBound.x2);\n const distanceY = Math.abs(eventArgsSet.abstractPos.y - lastCellBound.y2);\n const squareSize = 6 * 3;\n // 判断鼠标是否落在fillhandle矩形内\n if (\n this.table.stateManager.fillHandle?.isFilling ||\n (distanceX <= squareSize / 2 && distanceY <= squareSize / 2)\n ) {\n if (update) {\n this.table.stateManager.startFillSelect(eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);\n }\n return true;\n }\n }\n }\n }\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeCol(xInTable, yInTable);\n }\n\n dealRowResize(xInTable: number, yInTable: number) {\n this.table.stateManager.updateResizeRow(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n (checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManager.select.ranges) ||\n this.table.options.select?.disableHeaderSelect ||\n this.table.options.select?.disableSelect) &&\n // this.table.stateManager.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManager.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManager.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs?.event?.nativeEvent\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n if (isValid(eventArgs.col) && isValid(eventArgs.row)) {\n this.table.stateManager.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon,\n event\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon,\n event\n });\n return true;\n }\n }\n\n return false;\n }\n /** TODO 其他的事件并么有做remove */\n release() {\n this.gesture.release();\n\n // remove global event listerner\n this.globalEventListeners.forEach(item => {\n if (item.env === 'document') {\n document.removeEventListener(item.name, item.callback);\n } else if (item.env === 'body') {\n document.body.removeEventListener(item.name, item.callback);\n } else if (item.env === 'window') {\n window.removeEventListener(item.name, item.callback);\n }\n });\n this.globalEventListeners = [];\n }\n\n enableScroll() {\n this._enableTableScroll = true;\n }\n\n disableScroll() {\n this._enableTableScroll = false;\n }\n}\n"]}
@@ -220,8 +220,38 @@ function bindContainerDomListener(eventManager) {
220
220
  callback: globalPointerdownCallback
221
221
  }), document.body.addEventListener("pointerdown", globalPointerdownCallback);
222
222
  const globalPointerupCallback = e => {
223
- table.eventManager.LastBodyPointerXY = null, table.eventManager.isDown = !1, table.eventManager.isDraging = !1,
224
- table.eventManager.inertiaScroll.endInertia(), "grabing" === stateManager.interactionState && stateManager.isResizeCol() ? (0,
223
+ e.target !== table.canvas && (e => {
224
+ var _a, _b, _c, _d, _e, _f;
225
+ if (stateManager.menu.isShow && setTimeout((() => {
226
+ table.internalProps.menuHandler.pointInMenuElement(e.clientX, e.clientY) || stateManager.menu.isShow && stateManager.hideMenu();
227
+ }), 0), stateManager.isResizeCol()) (0, table_group_1.endResizeCol)(table); else if (stateManager.isResizeRow()) (0,
228
+ table_group_1.endResizeRow)(table); else if (stateManager.isMoveCol()) table.stateManager.endMoveCol() && -1 !== (null === (_a = table.stateManager.columnMove) || void 0 === _a ? void 0 : _a.colSource) && -1 !== (null === (_b = table.stateManager.columnMove) || void 0 === _b ? void 0 : _b.rowSource) && -1 !== (null === (_c = table.stateManager.columnMove) || void 0 === _c ? void 0 : _c.colTarget) && -1 !== (null === (_d = table.stateManager.columnMove) || void 0 === _d ? void 0 : _d.rowTarget) && table.hasListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION) && table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, {
229
+ target: {
230
+ col: table.stateManager.columnMove.colTarget,
231
+ row: table.stateManager.columnMove.rowTarget
232
+ },
233
+ source: {
234
+ col: table.stateManager.columnMove.colSource,
235
+ row: table.stateManager.columnMove.rowSource
236
+ },
237
+ event: e
238
+ }); else if (stateManager.isSelecting() && (null === (_f = null === (_e = table.stateManager.select) || void 0 === _e ? void 0 : _e.ranges) || void 0 === _f ? void 0 : _f.length)) {
239
+ const lastCol = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end.col, lastRow = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end.row;
240
+ if (table.stateManager.endSelectCells(), table.hasListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.DRAG_SELECT_END)) {
241
+ const cellsEvent = {
242
+ event: e,
243
+ cells: [],
244
+ col: lastCol,
245
+ row: lastRow,
246
+ scaleRatio: table.canvas.getBoundingClientRect().width / table.canvas.offsetWidth,
247
+ target: void 0
248
+ };
249
+ cellsEvent.cells = table.getSelectedCellInfos(), table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.DRAG_SELECT_END, cellsEvent);
250
+ }
251
+ }
252
+ })(e), table.eventManager.LastBodyPointerXY = null, table.eventManager.isDown = !1,
253
+ table.eventManager.isDraging = !1, table.eventManager.inertiaScroll.endInertia(),
254
+ "grabing" === stateManager.interactionState && stateManager.isResizeCol() ? (0,
225
255
  table_group_1.endResizeCol)(table) : "grabing" === stateManager.interactionState && stateManager.isResizeRow() && (0,
226
256
  table_group_1.endResizeRow)(table);
227
257
  };
@@ -247,7 +277,9 @@ function bindContainerDomListener(eventManager) {
247
277
  })));
248
278
  const isSelecting = table.stateManager.isSelecting();
249
279
  if (eventManager._enableTableScroll && eventManager.isDraging && isSelecting && (null === (_e = table.stateManager.select.ranges) || void 0 === _e ? void 0 : _e.length) > 0) {
250
- const drawRange = table.getDrawRange(), topFrozenRowHeight = table.getFrozenRowsHeight(), bottomFrozenRowHeight = table.getBottomFrozenRowsHeight(), leftFrozenColsWidth = table.getFrozenColsWidth(), rightFrozenColsWidth = table.getRightFrozenColsWidth(), startCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].start, endCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end, canScrollY = (!1 === table.isFrozenRow(startCell.row) || !1 === table.isFrozenRow(endCell.row)) && table.getAllRowsHeight() > table.tableNoFrameHeight, canScrollX = (!1 === table.isFrozenColumn(startCell.col) || !1 === table.isFrozenColumn(endCell.col)) && table.getAllColsWidth() > table.tableNoFrameWidth;
280
+ const drawRange = table.getDrawRange(), topFrozenRowHeight = table.getFrozenRowsHeight(), bottomFrozenRowHeight = table.getBottomFrozenRowsHeight(), leftFrozenColsWidth = table.getFrozenColsWidth(), rightFrozenColsWidth = table.getRightFrozenColsWidth(), startCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].start;
281
+ if (table.isSeriesNumber(startCell.col, startCell.row)) return;
282
+ const endCell = table.stateManager.select.ranges[table.stateManager.select.ranges.length - 1].end, canScrollY = (!1 === table.isFrozenRow(startCell.row) || !1 === table.isFrozenRow(endCell.row)) && table.getAllRowsHeight() > table.tableNoFrameHeight, canScrollX = (!1 === table.isFrozenColumn(startCell.col) || !1 === table.isFrozenColumn(endCell.col)) && table.getAllColsWidth() > table.tableNoFrameWidth;
251
283
  if ((y > drawRange.bottom - bottomFrozenRowHeight || y < drawRange.top + topFrozenRowHeight) && canScrollY || (x > drawRange.right - rightFrozenColsWidth || x < drawRange.left + leftFrozenColsWidth) && canScrollX) {
252
284
  table.eventManager.scrollXSpeed = 0, table.eventManager.scrollYSpeed = 0;
253
285
  let bottom = !1, top = !1, right = !1, left = !1;