@visactor/vtable 1.7.5-alpha.0 → 1.7.5

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 (155) hide show
  1. package/cjs/ListTable.d.ts +2 -2
  2. package/cjs/ListTable.js +34 -22
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.d.ts +1 -0
  5. package/cjs/PivotTable.js +4 -0
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/body-helper/body-helper.js +2 -2
  8. package/cjs/body-helper/body-helper.js.map +1 -1
  9. package/cjs/components/axis/axis.d.ts +1 -0
  10. package/cjs/components/axis/axis.js +14 -10
  11. package/cjs/components/axis/axis.js.map +1 -1
  12. package/cjs/core/BaseTable.js +7 -5
  13. package/cjs/core/BaseTable.js.map +1 -1
  14. package/cjs/core/record-helper.js +9 -11
  15. package/cjs/core/record-helper.js.map +1 -1
  16. package/cjs/data/CachedDataSource.d.ts +1 -1
  17. package/cjs/data/CachedDataSource.js +4 -4
  18. package/cjs/data/CachedDataSource.js.map +1 -1
  19. package/cjs/data/DataSource.d.ts +3 -5
  20. package/cjs/data/DataSource.js +49 -30
  21. package/cjs/data/DataSource.js.map +1 -1
  22. package/cjs/dataset/dataset-pivot-table.d.ts +1 -1
  23. package/cjs/dataset/dataset-pivot-table.js +10 -45
  24. package/cjs/dataset/dataset-pivot-table.js.map +1 -1
  25. package/cjs/dataset/dataset.d.ts +1 -0
  26. package/cjs/dataset/dataset.js +15 -7
  27. package/cjs/dataset/dataset.js.map +1 -1
  28. package/cjs/dataset/statistics-helper.js +1 -1
  29. package/cjs/dataset/statistics-helper.js.map +1 -1
  30. package/cjs/event/EventHandler.js +1 -1
  31. package/cjs/event/EventHandler.js.map +1 -1
  32. package/cjs/event/listener/table-group.js +37 -25
  33. package/cjs/event/listener/table-group.js.map +1 -1
  34. package/cjs/event/scroll.js +2 -1
  35. package/cjs/event/scroll.js.map +1 -1
  36. package/cjs/index.d.ts +1 -1
  37. package/cjs/index.js +1 -1
  38. package/cjs/index.js.map +1 -1
  39. package/cjs/layout/chart-helper/get-axis-config.js +26 -13
  40. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  41. package/cjs/layout/chart-helper/get-chart-spec.js +1 -1
  42. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  43. package/cjs/scenegraph/group-creater/cell-helper.js +14 -10
  44. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  45. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +1 -1
  46. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  47. package/cjs/scenegraph/group-creater/column-helper.js +6 -5
  48. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  49. package/cjs/scenegraph/icon/icon-update.d.ts +10 -1
  50. package/cjs/scenegraph/icon/icon-update.js +4 -4
  51. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  52. package/cjs/scenegraph/layout/update-height.js +1 -1
  53. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  54. package/cjs/scenegraph/layout/update-width.js +5 -5
  55. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  56. package/cjs/scenegraph/refresh-node/update-chart.js +2 -1
  57. package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
  58. package/cjs/scenegraph/scenegraph.d.ts +9 -1
  59. package/cjs/scenegraph/scenegraph.js +12 -2
  60. package/cjs/scenegraph/scenegraph.js.map +1 -1
  61. package/cjs/scenegraph/style/frame-border.js +1 -0
  62. package/cjs/scenegraph/style/frame-border.js.map +1 -1
  63. package/cjs/state/sort/index.js +17 -6
  64. package/cjs/state/sort/index.js.map +1 -1
  65. package/cjs/state/state.d.ts +4 -4
  66. package/cjs/state/state.js +87 -17
  67. package/cjs/state/state.js.map +1 -1
  68. package/cjs/tools/util.d.ts +1 -0
  69. package/cjs/tools/util.js +7 -2
  70. package/cjs/tools/util.js.map +1 -1
  71. package/cjs/ts-types/base-table.d.ts +1 -0
  72. package/cjs/ts-types/base-table.js.map +1 -1
  73. package/cjs/ts-types/table-engine.d.ts +3 -1
  74. package/cjs/ts-types/table-engine.js.map +1 -1
  75. package/cjs/vrender.js +1 -1
  76. package/cjs/vrender.js.map +1 -1
  77. package/dist/vtable.js +416 -214
  78. package/dist/vtable.min.js +2 -2
  79. package/es/ListTable.d.ts +2 -2
  80. package/es/ListTable.js +33 -20
  81. package/es/ListTable.js.map +1 -1
  82. package/es/PivotTable.d.ts +1 -0
  83. package/es/PivotTable.js +4 -0
  84. package/es/PivotTable.js.map +1 -1
  85. package/es/body-helper/body-helper.js +3 -1
  86. package/es/body-helper/body-helper.js.map +1 -1
  87. package/es/components/axis/axis.d.ts +1 -0
  88. package/es/components/axis/axis.js +14 -10
  89. package/es/components/axis/axis.js.map +1 -1
  90. package/es/core/BaseTable.js +7 -5
  91. package/es/core/BaseTable.js.map +1 -1
  92. package/es/core/record-helper.js +9 -11
  93. package/es/core/record-helper.js.map +1 -1
  94. package/es/data/CachedDataSource.d.ts +1 -1
  95. package/es/data/CachedDataSource.js +4 -4
  96. package/es/data/CachedDataSource.js.map +1 -1
  97. package/es/data/DataSource.d.ts +3 -5
  98. package/es/data/DataSource.js +49 -28
  99. package/es/data/DataSource.js.map +1 -1
  100. package/es/dataset/dataset-pivot-table.d.ts +1 -1
  101. package/es/dataset/dataset-pivot-table.js +9 -44
  102. package/es/dataset/dataset-pivot-table.js.map +1 -1
  103. package/es/dataset/dataset.d.ts +1 -0
  104. package/es/dataset/dataset.js +15 -7
  105. package/es/dataset/dataset.js.map +1 -1
  106. package/es/dataset/statistics-helper.js +1 -1
  107. package/es/dataset/statistics-helper.js.map +1 -1
  108. package/es/event/EventHandler.js +1 -1
  109. package/es/event/EventHandler.js.map +1 -1
  110. package/es/event/listener/table-group.js +38 -26
  111. package/es/event/listener/table-group.js.map +1 -1
  112. package/es/event/scroll.js +2 -1
  113. package/es/event/scroll.js.map +1 -1
  114. package/es/index.d.ts +1 -1
  115. package/es/index.js +1 -1
  116. package/es/index.js.map +1 -1
  117. package/es/layout/chart-helper/get-axis-config.js +23 -12
  118. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  119. package/es/layout/chart-helper/get-chart-spec.js +1 -1
  120. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  121. package/es/scenegraph/group-creater/cell-helper.js +14 -9
  122. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  123. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +1 -1
  124. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  125. package/es/scenegraph/group-creater/column-helper.js +6 -5
  126. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  127. package/es/scenegraph/icon/icon-update.d.ts +10 -1
  128. package/es/scenegraph/icon/icon-update.js +5 -3
  129. package/es/scenegraph/icon/icon-update.js.map +1 -1
  130. package/es/scenegraph/layout/update-height.js +1 -1
  131. package/es/scenegraph/layout/update-height.js.map +1 -1
  132. package/es/scenegraph/layout/update-width.js +5 -5
  133. package/es/scenegraph/layout/update-width.js.map +1 -1
  134. package/es/scenegraph/refresh-node/update-chart.js +2 -1
  135. package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
  136. package/es/scenegraph/scenegraph.d.ts +9 -1
  137. package/es/scenegraph/scenegraph.js +12 -2
  138. package/es/scenegraph/scenegraph.js.map +1 -1
  139. package/es/scenegraph/style/frame-border.js +1 -0
  140. package/es/scenegraph/style/frame-border.js.map +1 -1
  141. package/es/state/sort/index.js +17 -6
  142. package/es/state/sort/index.js.map +1 -1
  143. package/es/state/state.d.ts +4 -4
  144. package/es/state/state.js +88 -16
  145. package/es/state/state.js.map +1 -1
  146. package/es/tools/util.d.ts +1 -0
  147. package/es/tools/util.js +4 -0
  148. package/es/tools/util.js.map +1 -1
  149. package/es/ts-types/base-table.d.ts +1 -0
  150. package/es/ts-types/base-table.js.map +1 -1
  151. package/es/ts-types/table-engine.d.ts +3 -1
  152. package/es/ts-types/table-engine.js.map +1 -1
  153. package/es/vrender.js +1 -1
  154. package/es/vrender.js.map +1 -1
  155. package/package.json +4 -4
@@ -82,6 +82,7 @@ function createFrameBorder(group, frameTheme, role, strokeArray, justForXYPositi
82
82
 
83
83
  function updateFrameBorder(group, frameTheme, strokeArray) {
84
84
  var _a;
85
+ if (!frameTheme) return;
85
86
  const {borderColor: borderColor} = frameTheme;
86
87
  null === (_a = group.border) || void 0 === _a || _a.setAttribute("stroke", getStroke(borderColor, strokeArray));
87
88
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/style/frame-border.ts"],"names":[],"mappings":"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","file":"frame-border.js","sourcesContent":["import type { IGroupGraphicAttribute, IRect, IRectGraphicAttribute } from './../../vrender';\nimport { createGroup, createRect } from './../../vrender';\nimport type { TableFrameStyle } from '../../ts-types';\nimport type { Group } from '../graphic/group';\nimport { isArray } from '@visactor/vutils';\nimport { getQuadProps } from '../utils/padding';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { toBoxArray } from '../../tools/helper';\n\n/**\n * @description: create frame border\n * @param {Group} group\n * @param {TableFrameStyle} frameTheme\n * @param {string} role\n * @param {[boolean, boolean, boolean, boolean]} strokeArray\n * @return {*}\n */\nexport function createFrameBorder(\n group: Group,\n frameTheme: TableFrameStyle | undefined,\n role: string,\n strokeArray: [boolean, boolean, boolean, boolean] | undefined, // to do 处理成0b001111形式\n justForXYPosition?: boolean\n) {\n if (!frameTheme) {\n return;\n }\n\n const isTableGroup = role === 'table';\n\n const {\n shadowBlur,\n shadowOffsetX,\n shadowOffsetY,\n shadowColor,\n cornerRadius,\n borderColor,\n borderLineWidth,\n borderLineDash\n } = frameTheme;\n let hasShadow = false;\n const groupAttributes: IGroupGraphicAttribute = {};\n const rectAttributes: IRectGraphicAttribute = {\n pickable: false\n };\n // 处理shadow\n if (shadowBlur && isTableGroup) {\n // 只有table才能配置shadow\n rectAttributes.shadowBlur = shadowBlur;\n rectAttributes.shadowOffsetX = shadowOffsetX;\n rectAttributes.shadowOffsetY = shadowOffsetY;\n rectAttributes.shadowColor = shadowColor;\n rectAttributes.stroke = true;\n rectAttributes.stroke = shadowColor;\n rectAttributes.lineWidth = 1;\n hasShadow = true;\n\n // rectAttributes.fill = true;\n // rectAttributes.fillOpacity = 0.01;\n }\n\n // 处理边框\n if (borderLineWidth) {\n rectAttributes.stroke = true;\n rectAttributes.fill = false;\n rectAttributes.stroke = getStroke(borderColor, strokeArray, borderLineWidth);\n rectAttributes.lineWidth = borderLineWidth as number;\n borderLineDash && (rectAttributes.lineDash = borderLineDash as number[]);\n rectAttributes.lineCap = 'butt';\n }\n\n if (Array.isArray(borderColor)) {\n (rectAttributes as any).strokeArrayColor = getQuadProps(borderColor as any);\n }\n\n if (Array.isArray(borderLineWidth)) {\n (rectAttributes as any).strokeArrayWidth = getQuadProps(borderLineWidth);\n (rectAttributes as any).lineWidth = 1;\n }\n\n if (cornerRadius) {\n rectAttributes.cornerRadius = cornerRadius;\n groupAttributes.cornerRadius = cornerRadius;\n }\n\n const borderTop = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[0]\n : (rectAttributes.lineWidth as number) ?? 0;\n const borderRight = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[1]\n : (rectAttributes.lineWidth as number) ?? 0;\n const borderBottom = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[2]\n : (rectAttributes.lineWidth as number) ?? 0;\n const borderLeft = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[3]\n : (rectAttributes.lineWidth as number) ?? 0;\n\n // // 处理边框引起的宽度高度变化(只对最外层tableGroup生效)\n // if (isTableGroup && (rectAttributes.shadowBlur || rectAttributes.lineWidth)) {\n // const deltaX = (rectAttributes.shadowBlur ?? 0) + (borderLeft + borderRight) / 2;\n // const deltaY = (rectAttributes.shadowBlur ?? 0) + (borderTop + borderBottom) / 2;\n\n // groupAttributes.x = deltaX;\n // groupAttributes.y = deltaY;\n // // 宽度高度在tableNoFrameWidth&tableNoFrameHeight中处理\n // // groupAttributes.width = group.attribute.width - deltaX - deltaX;\n // // groupAttributes.height = group.attribute.height - deltaY - deltaY;\n // }\n group.setAttributes(groupAttributes);\n\n if (justForXYPosition) {\n return;\n }\n\n if (rectAttributes.stroke) {\n rectAttributes.x = borderLeft / 2;\n rectAttributes.y = borderTop / 2;\n rectAttributes.pickable = false;\n if (isTableGroup) {\n if (cornerRadius) {\n if (Array.isArray(cornerRadius)) {\n const cornerRadiusArr = getQuadProps(cornerRadius);\n rectAttributes.cornerRadius = cornerRadiusArr;\n groupAttributes.cornerRadius = cornerRadiusArr;\n cornerRadiusArr[0] && (cornerRadiusArr[0] = cornerRadiusArr[0] + Math.min(borderLeft, borderTop) / 2);\n cornerRadiusArr[1] && (cornerRadiusArr[1] = cornerRadiusArr[1] + Math.min(borderTop, borderRight) / 2);\n cornerRadiusArr[2] && (cornerRadiusArr[2] = cornerRadiusArr[2] + Math.min(borderRight, borderBottom) / 2);\n cornerRadiusArr[3] && (cornerRadiusArr[3] = cornerRadiusArr[3] + Math.min(borderBottom, borderLeft) / 2);\n } else if (isArray(borderLineWidth)) {\n const cornerRadiusArr: number[] = [];\n rectAttributes.cornerRadius = cornerRadiusArr;\n groupAttributes.cornerRadius = cornerRadiusArr;\n cornerRadiusArr[0] = cornerRadius + Math.min(borderLeft, borderTop) / 2;\n cornerRadiusArr[1] = cornerRadius + Math.min(borderTop, borderRight) / 2;\n cornerRadiusArr[2] = cornerRadius + Math.min(borderRight, borderBottom) / 2;\n cornerRadiusArr[3] = cornerRadius + Math.min(borderBottom, borderLeft) / 2;\n } else {\n rectAttributes.cornerRadius = cornerRadius + (rectAttributes.lineWidth ?? 0) / 2;\n groupAttributes.cornerRadius = cornerRadius + (rectAttributes.lineWidth ?? 0) / 2;\n }\n }\n if (frameTheme.innerBorder) {\n rectAttributes.x = group.attribute.x + borderLeft / 2;\n rectAttributes.y = group.attribute.y + borderTop / 2;\n rectAttributes.width = group.attribute.width - borderLeft / 2 - borderRight / 2;\n rectAttributes.height = group.attribute.height - borderTop / 2 - borderBottom / 2;\n } else {\n rectAttributes.x = group.attribute.x - borderLeft / 2;\n rectAttributes.y = group.attribute.y - borderTop / 2;\n rectAttributes.width = group.attribute.width + borderLeft / 2 + borderRight / 2;\n rectAttributes.height = group.attribute.height + borderTop / 2 + borderBottom / 2;\n }\n\n let shadowRect;\n let borderRect;\n if (hasShadow) {\n rectAttributes.fill = 'white';\n (rectAttributes as any).notAdjustPos = true;\n // rectAttributes.globalCompositeOperation = 'source-over';\n\n // first draw group\n borderRect = createGroup(rectAttributes);\n borderRect.name = 'table-border-rect';\n\n // second draw rect\n shadowRect = createRect({\n x: borderLeft / 2,\n y: borderTop / 2,\n width: group.attribute.width,\n height: group.attribute.height,\n fill: 'red',\n cornerRadius: group.attribute.cornerRadius,\n globalCompositeOperation: 'destination-out'\n });\n borderRect.addChild(shadowRect);\n\n // hack for vrender globalCompositeOperation&clip render problem\n const hackRect = createRect({\n x: borderLeft / 2,\n y: borderTop / 2,\n width: group.attribute.width,\n height: group.attribute.height,\n fill: 'transparent',\n pickable: false,\n globalCompositeOperation: 'source-over'\n });\n borderRect.addChild(hackRect);\n } else {\n borderRect = createRect(rectAttributes);\n borderRect.name = 'table-border-rect';\n }\n\n // to be fixed: border index in shadow mode\n if (frameTheme.innerBorder && !hasShadow) {\n group.parent.insertAfter(borderRect, group);\n } else {\n group.parent.insertBefore(borderRect, group);\n }\n (group as any).border = borderRect;\n } else {\n // rectAttributes.x = rectAttributes.lineWidth / 2;\n // rectAttributes.y = rectAttributes.lineWidth / 2;\n rectAttributes.width = group.attribute.width - borderLeft / 2 - borderRight / 2;\n rectAttributes.height = group.attribute.height - borderTop / 2 - borderBottom / 2;\n const borderRect = createRect(rectAttributes);\n borderRect.name = 'border-rect';\n group.addChild(borderRect);\n (group as any).border = borderRect;\n }\n }\n}\n\n/**\n * @description: update frame border stroke atrribute\n * @param {Group} group\n * @param {TableFrameStyle} frameTheme\n * @param {array} strokeArray stroke boolean array\n * @return {*}\n */\nexport function updateFrameBorder(\n group: Group,\n frameTheme: TableFrameStyle | undefined,\n strokeArray?: [boolean, boolean, boolean, boolean] // to do 处理成0b001111形式\n) {\n const { borderColor } = frameTheme;\n group.border?.setAttribute('stroke', getStroke(borderColor, strokeArray));\n}\n\nexport function getStroke(\n borderColor: string | string[],\n strokeArray: boolean[] | undefined,\n strokeLineWidth?: number | number[]\n) {\n let stroke: boolean | string | (boolean | string)[] = true;\n if ((strokeArray || isArray(strokeLineWidth)) && !isArray(borderColor)) {\n stroke = (strokeArray ?? (strokeLineWidth as number[])).map(stroke => {\n if (stroke) {\n return borderColor;\n }\n return false;\n });\n } else if (strokeArray) {\n stroke = strokeArray;\n } else if (!strokeArray && !isArray(borderColor)) {\n stroke = borderColor;\n } else if (isArray(borderColor)) {\n stroke = true;\n }\n return stroke;\n}\n\n/**\n * @description: update frame border size when group size change\n * @param {Group} group\n * @return {*}\n */\nexport function updateFrameBorderSize(group: Group) {\n if (!group.border) {\n return;\n }\n const borderTop = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[0]\n : (group.border.attribute.lineWidth as number) ?? 0;\n const borderRight = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[1]\n : (group.border.attribute.lineWidth as number) ?? 0;\n const borderBottom = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[2]\n : (group.border.attribute.lineWidth as number) ?? 0;\n const borderLeft = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[3]\n : (group.border.attribute.lineWidth as number) ?? 0;\n\n group.border.setAttributes({\n width: group.attribute.width - borderLeft / 2 - borderRight / 2,\n height: group.attribute.height - borderTop / 2 - borderBottom / 2\n });\n\n if (group.border.type === 'group') {\n (group.border.firstChild as IRect).setAttributes({\n width: group.attribute.width,\n height: group.attribute.height\n });\n }\n}\n\nexport function updateCornerRadius(table: BaseTableAPI) {\n if (!table.theme.frameStyle.cornerRadius) {\n return;\n }\n const cornerRadius = table.theme.frameStyle.cornerRadius;\n const {\n cornerHeaderGroup,\n colHeaderGroup,\n rowHeaderGroup,\n bodyGroup,\n rightTopCornerGroup,\n leftBottomCornerGroup,\n rightBottomCornerGroup,\n rightFrozenGroup,\n bottomFrozenGroup\n } = table.scenegraph;\n\n // reset corner radius\n cornerHeaderGroup.setAttribute('cornerRadius', 0);\n colHeaderGroup.setAttribute('cornerRadius', 0);\n rowHeaderGroup.setAttribute('cornerRadius', 0);\n bodyGroup.setAttribute('cornerRadius', 0);\n rightTopCornerGroup.setAttribute('cornerRadius', 0);\n leftBottomCornerGroup.setAttribute('cornerRadius', 0);\n rightBottomCornerGroup.setAttribute('cornerRadius', 0);\n rightFrozenGroup.setAttribute('cornerRadius', 0);\n bottomFrozenGroup.setAttribute('cornerRadius', 0);\n\n const cornerRadiusArray = toBoxArray(cornerRadius);\n // left top\n if (cornerHeaderGroup.attribute.width > 0 && cornerHeaderGroup.attribute.height > 0) {\n setCornerRadius(cornerHeaderGroup, [cornerRadiusArray[0], 0, 0, 0]);\n } else if (colHeaderGroup.attribute.height > 0) {\n setCornerRadius(colHeaderGroup, [cornerRadiusArray[0], 0, 0, 0]);\n } else if (rowHeaderGroup.attribute.width > 0) {\n setCornerRadius(rowHeaderGroup, [cornerRadiusArray[0], 0, 0, 0]);\n } else {\n setCornerRadius(bodyGroup, [cornerRadiusArray[0], 0, 0, 0]);\n }\n\n // left bottom\n if (leftBottomCornerGroup.attribute.width > 0 && leftBottomCornerGroup.attribute.height > 0) {\n setCornerRadius(leftBottomCornerGroup, [0, 0, 0, cornerRadiusArray[3]]);\n } else if (bottomFrozenGroup.attribute.height > 0) {\n setCornerRadius(bottomFrozenGroup, [0, 0, 0, cornerRadiusArray[3]]);\n } else if (rowHeaderGroup.attribute.width > 0) {\n setCornerRadius(rowHeaderGroup, [0, 0, 0, cornerRadiusArray[3]]);\n } else {\n setCornerRadius(bodyGroup, [0, 0, 0, cornerRadiusArray[3]]);\n }\n\n // right top\n if (rightTopCornerGroup.attribute.width > 0 && rightTopCornerGroup.attribute.height > 0) {\n setCornerRadius(rightTopCornerGroup, [0, cornerRadiusArray[1], 0, 0]);\n } else if (colHeaderGroup.attribute.height > 0) {\n setCornerRadius(colHeaderGroup, [0, cornerRadiusArray[1], 0, 0]);\n } else if (rightFrozenGroup.attribute.width > 0) {\n setCornerRadius(rightFrozenGroup, [0, cornerRadiusArray[1], 0, 0]);\n } else {\n setCornerRadius(bodyGroup, [0, cornerRadiusArray[1], 0, 0]);\n }\n\n // right bottom\n if (rightBottomCornerGroup.attribute.width > 0 && rightBottomCornerGroup.attribute.height > 0) {\n setCornerRadius(rightBottomCornerGroup, [0, 0, cornerRadiusArray[2], 0]);\n } else if (rightFrozenGroup.attribute.width > 0) {\n setCornerRadius(rightFrozenGroup, [0, 0, cornerRadiusArray[2], 0]);\n } else if (bottomFrozenGroup.attribute.height > 0) {\n setCornerRadius(bottomFrozenGroup, [0, 0, cornerRadiusArray[2], 0]);\n } else {\n setCornerRadius(bodyGroup, [0, 0, cornerRadiusArray[2], 0]);\n }\n}\n\nfunction setCornerRadius(group: Group, cornerRadius: number[]) {\n group.setAttribute('cornerRadius', cornerRadius);\n if (group.border) {\n group.border.setAttribute('cornerRadius', cornerRadius);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/style/frame-border.ts"],"names":[],"mappings":"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","file":"frame-border.js","sourcesContent":["import type { IGroupGraphicAttribute, IRect, IRectGraphicAttribute } from './../../vrender';\nimport { createGroup, createRect } from './../../vrender';\nimport type { TableFrameStyle } from '../../ts-types';\nimport type { Group } from '../graphic/group';\nimport { isArray } from '@visactor/vutils';\nimport { getQuadProps } from '../utils/padding';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { toBoxArray } from '../../tools/helper';\n\n/**\n * @description: create frame border\n * @param {Group} group\n * @param {TableFrameStyle} frameTheme\n * @param {string} role\n * @param {[boolean, boolean, boolean, boolean]} strokeArray\n * @return {*}\n */\nexport function createFrameBorder(\n group: Group,\n frameTheme: TableFrameStyle | undefined,\n role: string,\n strokeArray: [boolean, boolean, boolean, boolean] | undefined, // to do 处理成0b001111形式\n justForXYPosition?: boolean\n) {\n if (!frameTheme) {\n return;\n }\n\n const isTableGroup = role === 'table';\n\n const {\n shadowBlur,\n shadowOffsetX,\n shadowOffsetY,\n shadowColor,\n cornerRadius,\n borderColor,\n borderLineWidth,\n borderLineDash\n } = frameTheme;\n let hasShadow = false;\n const groupAttributes: IGroupGraphicAttribute = {};\n const rectAttributes: IRectGraphicAttribute = {\n pickable: false\n };\n // 处理shadow\n if (shadowBlur && isTableGroup) {\n // 只有table才能配置shadow\n rectAttributes.shadowBlur = shadowBlur;\n rectAttributes.shadowOffsetX = shadowOffsetX;\n rectAttributes.shadowOffsetY = shadowOffsetY;\n rectAttributes.shadowColor = shadowColor;\n rectAttributes.stroke = true;\n rectAttributes.stroke = shadowColor;\n rectAttributes.lineWidth = 1;\n hasShadow = true;\n\n // rectAttributes.fill = true;\n // rectAttributes.fillOpacity = 0.01;\n }\n\n // 处理边框\n if (borderLineWidth) {\n rectAttributes.stroke = true;\n rectAttributes.fill = false;\n rectAttributes.stroke = getStroke(borderColor, strokeArray, borderLineWidth);\n rectAttributes.lineWidth = borderLineWidth as number;\n borderLineDash && (rectAttributes.lineDash = borderLineDash as number[]);\n rectAttributes.lineCap = 'butt';\n }\n\n if (Array.isArray(borderColor)) {\n (rectAttributes as any).strokeArrayColor = getQuadProps(borderColor as any);\n }\n\n if (Array.isArray(borderLineWidth)) {\n (rectAttributes as any).strokeArrayWidth = getQuadProps(borderLineWidth);\n (rectAttributes as any).lineWidth = 1;\n }\n\n if (cornerRadius) {\n rectAttributes.cornerRadius = cornerRadius;\n groupAttributes.cornerRadius = cornerRadius;\n }\n\n const borderTop = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[0]\n : (rectAttributes.lineWidth as number) ?? 0;\n const borderRight = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[1]\n : (rectAttributes.lineWidth as number) ?? 0;\n const borderBottom = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[2]\n : (rectAttributes.lineWidth as number) ?? 0;\n const borderLeft = (rectAttributes as any).strokeArrayWidth\n ? (rectAttributes as any).strokeArrayWidth[3]\n : (rectAttributes.lineWidth as number) ?? 0;\n\n // // 处理边框引起的宽度高度变化(只对最外层tableGroup生效)\n // if (isTableGroup && (rectAttributes.shadowBlur || rectAttributes.lineWidth)) {\n // const deltaX = (rectAttributes.shadowBlur ?? 0) + (borderLeft + borderRight) / 2;\n // const deltaY = (rectAttributes.shadowBlur ?? 0) + (borderTop + borderBottom) / 2;\n\n // groupAttributes.x = deltaX;\n // groupAttributes.y = deltaY;\n // // 宽度高度在tableNoFrameWidth&tableNoFrameHeight中处理\n // // groupAttributes.width = group.attribute.width - deltaX - deltaX;\n // // groupAttributes.height = group.attribute.height - deltaY - deltaY;\n // }\n group.setAttributes(groupAttributes);\n\n if (justForXYPosition) {\n return;\n }\n\n if (rectAttributes.stroke) {\n rectAttributes.x = borderLeft / 2;\n rectAttributes.y = borderTop / 2;\n rectAttributes.pickable = false;\n if (isTableGroup) {\n if (cornerRadius) {\n if (Array.isArray(cornerRadius)) {\n const cornerRadiusArr = getQuadProps(cornerRadius);\n rectAttributes.cornerRadius = cornerRadiusArr;\n groupAttributes.cornerRadius = cornerRadiusArr;\n cornerRadiusArr[0] && (cornerRadiusArr[0] = cornerRadiusArr[0] + Math.min(borderLeft, borderTop) / 2);\n cornerRadiusArr[1] && (cornerRadiusArr[1] = cornerRadiusArr[1] + Math.min(borderTop, borderRight) / 2);\n cornerRadiusArr[2] && (cornerRadiusArr[2] = cornerRadiusArr[2] + Math.min(borderRight, borderBottom) / 2);\n cornerRadiusArr[3] && (cornerRadiusArr[3] = cornerRadiusArr[3] + Math.min(borderBottom, borderLeft) / 2);\n } else if (isArray(borderLineWidth)) {\n const cornerRadiusArr: number[] = [];\n rectAttributes.cornerRadius = cornerRadiusArr;\n groupAttributes.cornerRadius = cornerRadiusArr;\n cornerRadiusArr[0] = cornerRadius + Math.min(borderLeft, borderTop) / 2;\n cornerRadiusArr[1] = cornerRadius + Math.min(borderTop, borderRight) / 2;\n cornerRadiusArr[2] = cornerRadius + Math.min(borderRight, borderBottom) / 2;\n cornerRadiusArr[3] = cornerRadius + Math.min(borderBottom, borderLeft) / 2;\n } else {\n rectAttributes.cornerRadius = cornerRadius + (rectAttributes.lineWidth ?? 0) / 2;\n groupAttributes.cornerRadius = cornerRadius + (rectAttributes.lineWidth ?? 0) / 2;\n }\n }\n if (frameTheme.innerBorder) {\n rectAttributes.x = group.attribute.x + borderLeft / 2;\n rectAttributes.y = group.attribute.y + borderTop / 2;\n rectAttributes.width = group.attribute.width - borderLeft / 2 - borderRight / 2;\n rectAttributes.height = group.attribute.height - borderTop / 2 - borderBottom / 2;\n } else {\n rectAttributes.x = group.attribute.x - borderLeft / 2;\n rectAttributes.y = group.attribute.y - borderTop / 2;\n rectAttributes.width = group.attribute.width + borderLeft / 2 + borderRight / 2;\n rectAttributes.height = group.attribute.height + borderTop / 2 + borderBottom / 2;\n }\n\n let shadowRect;\n let borderRect;\n if (hasShadow) {\n rectAttributes.fill = 'white';\n (rectAttributes as any).notAdjustPos = true;\n // rectAttributes.globalCompositeOperation = 'source-over';\n\n // first draw group\n borderRect = createGroup(rectAttributes);\n borderRect.name = 'table-border-rect';\n\n // second draw rect\n shadowRect = createRect({\n x: borderLeft / 2,\n y: borderTop / 2,\n width: group.attribute.width,\n height: group.attribute.height,\n fill: 'red',\n cornerRadius: group.attribute.cornerRadius,\n globalCompositeOperation: 'destination-out'\n });\n borderRect.addChild(shadowRect);\n\n // hack for vrender globalCompositeOperation&clip render problem\n const hackRect = createRect({\n x: borderLeft / 2,\n y: borderTop / 2,\n width: group.attribute.width,\n height: group.attribute.height,\n fill: 'transparent',\n pickable: false,\n globalCompositeOperation: 'source-over'\n });\n borderRect.addChild(hackRect);\n } else {\n borderRect = createRect(rectAttributes);\n borderRect.name = 'table-border-rect';\n }\n\n // to be fixed: border index in shadow mode\n if (frameTheme.innerBorder && !hasShadow) {\n group.parent.insertAfter(borderRect, group);\n } else {\n group.parent.insertBefore(borderRect, group);\n }\n (group as any).border = borderRect;\n } else {\n // rectAttributes.x = rectAttributes.lineWidth / 2;\n // rectAttributes.y = rectAttributes.lineWidth / 2;\n rectAttributes.width = group.attribute.width - borderLeft / 2 - borderRight / 2;\n rectAttributes.height = group.attribute.height - borderTop / 2 - borderBottom / 2;\n const borderRect = createRect(rectAttributes);\n borderRect.name = 'border-rect';\n group.addChild(borderRect);\n (group as any).border = borderRect;\n }\n }\n}\n\n/**\n * @description: update frame border stroke atrribute\n * @param {Group} group\n * @param {TableFrameStyle} frameTheme\n * @param {array} strokeArray stroke boolean array\n * @return {*}\n */\nexport function updateFrameBorder(\n group: Group,\n frameTheme: TableFrameStyle | undefined,\n strokeArray?: [boolean, boolean, boolean, boolean] // to do 处理成0b001111形式\n) {\n if (!frameTheme) {\n return;\n }\n const { borderColor } = frameTheme;\n group.border?.setAttribute('stroke', getStroke(borderColor, strokeArray));\n}\n\nexport function getStroke(\n borderColor: string | string[],\n strokeArray: boolean[] | undefined,\n strokeLineWidth?: number | number[]\n) {\n let stroke: boolean | string | (boolean | string)[] = true;\n if ((strokeArray || isArray(strokeLineWidth)) && !isArray(borderColor)) {\n stroke = (strokeArray ?? (strokeLineWidth as number[])).map(stroke => {\n if (stroke) {\n return borderColor;\n }\n return false;\n });\n } else if (strokeArray) {\n stroke = strokeArray;\n } else if (!strokeArray && !isArray(borderColor)) {\n stroke = borderColor;\n } else if (isArray(borderColor)) {\n stroke = true;\n }\n return stroke;\n}\n\n/**\n * @description: update frame border size when group size change\n * @param {Group} group\n * @return {*}\n */\nexport function updateFrameBorderSize(group: Group) {\n if (!group.border) {\n return;\n }\n const borderTop = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[0]\n : (group.border.attribute.lineWidth as number) ?? 0;\n const borderRight = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[1]\n : (group.border.attribute.lineWidth as number) ?? 0;\n const borderBottom = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[2]\n : (group.border.attribute.lineWidth as number) ?? 0;\n const borderLeft = (group.border.attribute as any).strokeArrayWidth\n ? (group.border.attribute as any).strokeArrayWidth[3]\n : (group.border.attribute.lineWidth as number) ?? 0;\n\n group.border.setAttributes({\n width: group.attribute.width - borderLeft / 2 - borderRight / 2,\n height: group.attribute.height - borderTop / 2 - borderBottom / 2\n });\n\n if (group.border.type === 'group') {\n (group.border.firstChild as IRect).setAttributes({\n width: group.attribute.width,\n height: group.attribute.height\n });\n }\n}\n\nexport function updateCornerRadius(table: BaseTableAPI) {\n if (!table.theme.frameStyle.cornerRadius) {\n return;\n }\n const cornerRadius = table.theme.frameStyle.cornerRadius;\n const {\n cornerHeaderGroup,\n colHeaderGroup,\n rowHeaderGroup,\n bodyGroup,\n rightTopCornerGroup,\n leftBottomCornerGroup,\n rightBottomCornerGroup,\n rightFrozenGroup,\n bottomFrozenGroup\n } = table.scenegraph;\n\n // reset corner radius\n cornerHeaderGroup.setAttribute('cornerRadius', 0);\n colHeaderGroup.setAttribute('cornerRadius', 0);\n rowHeaderGroup.setAttribute('cornerRadius', 0);\n bodyGroup.setAttribute('cornerRadius', 0);\n rightTopCornerGroup.setAttribute('cornerRadius', 0);\n leftBottomCornerGroup.setAttribute('cornerRadius', 0);\n rightBottomCornerGroup.setAttribute('cornerRadius', 0);\n rightFrozenGroup.setAttribute('cornerRadius', 0);\n bottomFrozenGroup.setAttribute('cornerRadius', 0);\n\n const cornerRadiusArray = toBoxArray(cornerRadius);\n // left top\n if (cornerHeaderGroup.attribute.width > 0 && cornerHeaderGroup.attribute.height > 0) {\n setCornerRadius(cornerHeaderGroup, [cornerRadiusArray[0], 0, 0, 0]);\n } else if (colHeaderGroup.attribute.height > 0) {\n setCornerRadius(colHeaderGroup, [cornerRadiusArray[0], 0, 0, 0]);\n } else if (rowHeaderGroup.attribute.width > 0) {\n setCornerRadius(rowHeaderGroup, [cornerRadiusArray[0], 0, 0, 0]);\n } else {\n setCornerRadius(bodyGroup, [cornerRadiusArray[0], 0, 0, 0]);\n }\n\n // left bottom\n if (leftBottomCornerGroup.attribute.width > 0 && leftBottomCornerGroup.attribute.height > 0) {\n setCornerRadius(leftBottomCornerGroup, [0, 0, 0, cornerRadiusArray[3]]);\n } else if (bottomFrozenGroup.attribute.height > 0) {\n setCornerRadius(bottomFrozenGroup, [0, 0, 0, cornerRadiusArray[3]]);\n } else if (rowHeaderGroup.attribute.width > 0) {\n setCornerRadius(rowHeaderGroup, [0, 0, 0, cornerRadiusArray[3]]);\n } else {\n setCornerRadius(bodyGroup, [0, 0, 0, cornerRadiusArray[3]]);\n }\n\n // right top\n if (rightTopCornerGroup.attribute.width > 0 && rightTopCornerGroup.attribute.height > 0) {\n setCornerRadius(rightTopCornerGroup, [0, cornerRadiusArray[1], 0, 0]);\n } else if (colHeaderGroup.attribute.height > 0) {\n setCornerRadius(colHeaderGroup, [0, cornerRadiusArray[1], 0, 0]);\n } else if (rightFrozenGroup.attribute.width > 0) {\n setCornerRadius(rightFrozenGroup, [0, cornerRadiusArray[1], 0, 0]);\n } else {\n setCornerRadius(bodyGroup, [0, cornerRadiusArray[1], 0, 0]);\n }\n\n // right bottom\n if (rightBottomCornerGroup.attribute.width > 0 && rightBottomCornerGroup.attribute.height > 0) {\n setCornerRadius(rightBottomCornerGroup, [0, 0, cornerRadiusArray[2], 0]);\n } else if (rightFrozenGroup.attribute.width > 0) {\n setCornerRadius(rightFrozenGroup, [0, 0, cornerRadiusArray[2], 0]);\n } else if (bottomFrozenGroup.attribute.height > 0) {\n setCornerRadius(bottomFrozenGroup, [0, 0, cornerRadiusArray[2], 0]);\n } else {\n setCornerRadius(bodyGroup, [0, 0, cornerRadiusArray[2], 0]);\n }\n}\n\nfunction setCornerRadius(group: Group, cornerRadius: number[]) {\n group.setAttribute('cornerRadius', cornerRadius);\n if (group.border) {\n group.border.setAttribute('cornerRadius', cornerRadius);\n }\n}\n"]}
@@ -22,8 +22,14 @@ function dealSort(col, row, table, event) {
22
22
  order: "normal"
23
23
  }), tableState.event = event;
24
24
  if (table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.SORT_CLICK, tableState).includes(!1)) return;
25
- table.internalProps.sortState = tableState, table.stateManager.setSortState(tableState),
26
- (null == headerC ? void 0 : headerC.sort) && executeSort(tableState, table, headerC),
25
+ let isArraySortState = !1, sortState = table.internalProps.sortState ? Array.isArray(table.internalProps.sortState) && (isArraySortState = !0) ? table.internalProps.sortState : [ table.internalProps.sortState ] : [];
26
+ if (Array.isArray(sortState)) {
27
+ const index = sortState.findIndex((item => item.field === tableState.field));
28
+ index >= 0 ? sortState[index] = tableState : sortState.push(tableState);
29
+ }
30
+ sortState = sortState.filter((item => "normal" !== item.order)), sortState = table.internalProps.multipleSort && (isArraySortState = !0) ? sortState : sortState.splice(-1),
31
+ sortState = isArraySortState && sortState.length ? sortState : sortState[0], table.internalProps.sortState = sortState,
32
+ table.stateManager.setSortState(sortState), (null == headerC ? void 0 : headerC.sort) && executeSort(sortState, table, headerC),
27
33
  table.internalProps.useOneRowHeightFillAll = !1, table.internalProps.layoutMap.clearCellRangeMap(),
28
34
  table.scenegraph.sortCell();
29
35
  const isHasSelected = !!(null === (_a = table.stateManager.select.ranges) || void 0 === _a ? void 0 : _a.length);
@@ -31,10 +37,15 @@ function dealSort(col, row, table, event) {
31
37
  }
32
38
 
33
39
  function executeSort(newState, table, headerDefine) {
34
- const hd = table.internalProps.layoutMap.headerObjects.find((col => col && col.field === newState.field));
35
- if (!hd) return;
36
- const {field: field} = hd;
37
- null !== field && ("function" == typeof headerDefine.sort ? table.dataSource.sort(field, newState.order || "asc", headerDefine.sort) : table.dataSource.sort(field, newState.order || "asc", util_1.defaultOrderFn));
40
+ newState = Array.isArray(newState) || !newState ? newState : [ newState ], table.dataSource.sort((newState || []).map((item => {
41
+ var _a, _b;
42
+ const hd = table.internalProps.layoutMap.headerObjects.find((col => col && col.field === item.field));
43
+ return {
44
+ field: item.field,
45
+ order: item.order || "asc",
46
+ orderFn: "function" == typeof (null === (_a = null == hd ? void 0 : hd.define) || void 0 === _a ? void 0 : _a.sort) ? null === (_b = null == hd ? void 0 : hd.define) || void 0 === _b ? void 0 : _b.sort : util_1.defaultOrderFn
47
+ };
48
+ })));
38
49
  }
39
50
 
40
51
  function isTarget(col, row, range1Col, range1Row, table) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/state/sort/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { defaultOrderFn } from '../../tools/util';\nimport type { ColumnDefine, HeaderData, HeaderDefine, ListTableAPI, SortState } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\n\n/**\n * @description: 执行sort\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function dealSort(col: number, row: number, table: ListTableAPI, event: Event) {\n //是击中的sort按钮才进行排序\n let range1 = null;\n let tableState: SortState;\n let isTargetCell = false;\n //找出当前表头是否在sortState排序规则中\n if (Array.isArray(table.sortState)) {\n for (let i = 0; i < table.sortState.length; i++) {\n tableState = table.sortState[i];\n if (tableState) {\n range1 = table._getHeaderCellBySortState(tableState);\n }\n range1 && (isTargetCell = isTarget(col, row, range1.col, range1.row, table));\n if (isTargetCell) {\n break;\n }\n }\n } else {\n tableState = table.sortState;\n if (tableState) {\n range1 = table._getHeaderCellBySortState(tableState);\n }\n range1 && (isTargetCell = isTarget(col, row, range1.col, range1.row, table));\n }\n\n const headerC = table.getHeaderDefine(col, row) as ColumnDefine;\n //当前排序规则是该表头field 且 表头设置了sort规则 需要转变sort的状态\n if (tableState && isTargetCell && headerC?.sort) {\n tableState.order = tableState.order === 'asc' ? 'desc' : tableState.order === 'desc' ? 'normal' : 'asc';\n } else if (headerC?.sort) {\n //如果当前表头设置了sort 则 转变sort的状态\n tableState = {\n field: <string>table.getHeaderField(col, row),\n order: 'asc'\n };\n } else if (isTargetCell && headerC?.showSort) {\n //当前排序规则是该表头field 且仅为显示showSort无sort 什么也不做\n } else {\n tableState = {\n field: <string>table.getHeaderField(col, row),\n order: 'normal'\n };\n }\n (tableState as SortState & { event: Event }).event = event;\n // 如果用户监听SORT_CLICK事件的回调函数返回false 则不执行内部排序逻辑\n const sortEventReturns = table.fireListeners(TABLE_EVENT_TYPE.SORT_CLICK, tableState as SortState & { event: Event });\n if (sortEventReturns.includes(false)) {\n return;\n }\n\n table.internalProps.sortState = tableState; // 目前不支持多级排序 所以这里 直接赋值为单个sortState TODO优化(如果支持多级排序的话)\n table.stateManager.setSortState(tableState);\n if (headerC?.sort) {\n executeSort(tableState, table, headerC);\n }\n\n // clear cell range cache\n table.internalProps.useOneRowHeightFillAll = false;\n table.internalProps.layoutMap.clearCellRangeMap();\n\n table.scenegraph.sortCell();\n // 排序后,清除选中效果\n const isHasSelected = !!table.stateManager.select.ranges?.length;\n table.stateManager.updateSelectPos(-1, -1);\n table.stateManager.endSelectCells(true, isHasSelected);\n}\n\nfunction executeSort(newState: SortState, table: BaseTableAPI, headerDefine: HeaderDefine): void {\n const hd = table.internalProps.layoutMap.headerObjects.find((col: HeaderData) => col && col.field === newState.field);\n\n if (!hd) {\n return;\n }\n const { field } = hd;\n if (field === null) {\n return;\n }\n if (typeof headerDefine.sort === 'function') {\n table.dataSource.sort(field, newState.order || 'asc', headerDefine.sort);\n } else {\n table.dataSource.sort(field, newState.order || 'asc', defaultOrderFn);\n }\n}\n\nfunction isTarget(col: number, row: number, range1Col: number, range1Row: number, table: BaseTableAPI): boolean {\n return table._getLayoutCellId(col, row) === table._getLayoutCellId(range1Col, range1Row);\n}\n"]}
1
+ {"version":3,"sources":["../src/state/sort/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport { defaultOrderFn } from '../../tools/util';\nimport type { ColumnDefine, HeaderData, HeaderDefine, ListTableAPI, SortState } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\n\n/**\n * @description: 执行sort\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nexport function dealSort(col: number, row: number, table: ListTableAPI, event: Event) {\n //是击中的sort按钮才进行排序\n let range1 = null;\n let tableState: SortState;\n let isTargetCell = false;\n //找出当前表头是否在sortState排序规则中\n if (Array.isArray(table.sortState)) {\n for (let i = 0; i < table.sortState.length; i++) {\n tableState = table.sortState[i];\n if (tableState) {\n range1 = table._getHeaderCellBySortState(tableState);\n }\n range1 && (isTargetCell = isTarget(col, row, range1.col, range1.row, table));\n if (isTargetCell) {\n break;\n }\n }\n } else {\n tableState = table.sortState;\n if (tableState) {\n range1 = table._getHeaderCellBySortState(tableState);\n }\n range1 && (isTargetCell = isTarget(col, row, range1.col, range1.row, table));\n }\n\n const headerC = table.getHeaderDefine(col, row) as ColumnDefine;\n //当前排序规则是该表头field 且 表头设置了sort规则 需要转变sort的状态\n if (tableState && isTargetCell && headerC?.sort) {\n tableState.order = tableState.order === 'asc' ? 'desc' : tableState.order === 'desc' ? 'normal' : 'asc';\n } else if (headerC?.sort) {\n //如果当前表头设置了sort 则 转变sort的状态\n tableState = {\n field: <string>table.getHeaderField(col, row),\n order: 'asc'\n };\n } else if (isTargetCell && headerC?.showSort) {\n //当前排序规则是该表头field 且仅为显示showSort无sort 什么也不做\n } else {\n tableState = {\n field: <string>table.getHeaderField(col, row),\n order: 'normal'\n };\n }\n (tableState as SortState & { event: Event }).event = event;\n // 如果用户监听SORT_CLICK事件的回调函数返回false 则不执行内部排序逻辑\n const sortEventReturns = table.fireListeners(TABLE_EVENT_TYPE.SORT_CLICK, tableState as SortState & { event: Event });\n if (sortEventReturns.includes(false)) {\n return;\n }\n let isArraySortState = false;\n let sortState: SortState | SortState[] = table.internalProps.sortState\n ? Array.isArray(table.internalProps.sortState) && (isArraySortState = true)\n ? (table.internalProps.sortState as SortState[])\n : [table.internalProps.sortState as SortState]\n : [];\n if (Array.isArray(sortState)) {\n const index = (sortState as SortState[]).findIndex(item => item.field === tableState.field);\n if (index >= 0) {\n sortState[index] = tableState;\n } else {\n sortState.push(tableState);\n }\n }\n sortState = (sortState as SortState[]).filter(item => item.order !== 'normal');\n sortState = table.internalProps.multipleSort && (isArraySortState = true) ? sortState : sortState.splice(-1);\n sortState = isArraySortState && sortState.length ? (sortState as SortState[]) : (sortState[0] as SortState);\n table.internalProps.sortState = sortState; // 目前不支持多级排序 所以这里 直接赋值为单个sortState TODO优化(如果支持多级排序的话)\n table.stateManager.setSortState(sortState);\n if (headerC?.sort) {\n executeSort(sortState, table, headerC);\n }\n\n // clear cell range cache\n table.internalProps.useOneRowHeightFillAll = false;\n table.internalProps.layoutMap.clearCellRangeMap();\n\n table.scenegraph.sortCell();\n // 排序后,清除选中效果\n const isHasSelected = !!table.stateManager.select.ranges?.length;\n table.stateManager.updateSelectPos(-1, -1);\n table.stateManager.endSelectCells(true, isHasSelected);\n}\n\nfunction executeSort(newState: SortState | SortState[], table: BaseTableAPI, headerDefine: HeaderDefine): void {\n newState = Array.isArray(newState) || !newState ? newState : [newState];\n table.dataSource.sort(\n ((newState || []) as Array<any>).map(item => {\n const hd = table.internalProps.layoutMap.headerObjects.find((col: HeaderData) => col && col.field === item.field);\n return {\n field: item.field,\n order: item.order || 'asc',\n orderFn: typeof hd?.define?.sort === 'function' ? hd?.define?.sort : defaultOrderFn\n };\n })\n );\n}\n\nfunction isTarget(col: number, row: number, range1Col: number, range1Row: number, table: BaseTableAPI): boolean {\n return table._getLayoutCellId(col, row) === table._getLayoutCellId(range1Col, range1Row);\n}\n"]}
@@ -77,13 +77,13 @@ export declare class StateManager {
77
77
  highlightIndex: number;
78
78
  dropDownMenuHighlight?: DropDownMenuHighlightInfo[];
79
79
  };
80
- sort: {
80
+ sort: Array<{
81
81
  col: number;
82
82
  row: number;
83
83
  field?: string;
84
84
  order: SortOrder;
85
85
  icon?: Icon;
86
- };
86
+ }>;
87
87
  frozen: {
88
88
  col: number;
89
89
  icon?: Icon;
@@ -125,7 +125,7 @@ export declare class StateManager {
125
125
  setHoverState(): void;
126
126
  setSelectState(): void;
127
127
  isSelected(col: number, row: number): boolean;
128
- setSortState(sortState: SortState): void;
128
+ setSortState(sortState: SortState | SortState[]): void;
129
129
  setFrozenState(): void;
130
130
  updateInteractionState(mode: InteractionState): void;
131
131
  updateHoverhighlightScope(mode: HighlightScope): void;
@@ -170,7 +170,7 @@ export declare class StateManager {
170
170
  setDropDownMenuHighlight(cells: DropDownMenuHighlightInfo[]): void;
171
171
  dropDownMenuIsHighlight(colNow: number, rowNow: number, index: number): boolean;
172
172
  triggerSort(col: number, row: number, iconMark: Icon, event: Event): void;
173
- updateSortState(sortState: SortState): void;
173
+ updateSortState(sortState: SortState[]): void;
174
174
  triggerFreeze(col: number, row: number, iconMark: Icon): void;
175
175
  updateCursor(mode?: string): void;
176
176
  updateDrillState(dimensionKey: string, title: string, drillDown: boolean, drillUp: boolean, col: number, row: number): void;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.StateManager = void 0;
6
6
 
7
- const menu_1 = require("../scenegraph/component/menu"), ts_types_1 = require("../ts-types"), ts_types_2 = require("../ts-types"), check_in_select_1 = require("./common/check-in-select"), update_position_1 = require("./hover/update-position"), frozen_1 = require("./frozen"), sort_1 = require("./sort"), update_position_2 = require("./select/update-position"), helper_1 = require("../tools/helper"), PIVOT_TABLE_EVENT_TYPE_1 = require("../ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE"), TABLE_EVENT_TYPE_1 = require("../core/TABLE_EVENT_TYPE"), vutils_1 = require("@visactor/vutils"), drill_1 = require("./drill"), spark_line_1 = require("./spark-line"), cell_move_1 = require("./cell-move"), icon_1 = require("../scenegraph/utils/icon"), debounce_1 = require("../tools/debounce"), update_resize_column_1 = require("./resize/update-resize-column"), radio_1 = require("./radio/radio"), checkbox_1 = require("./checkbox/checkbox"), update_resize_row_1 = require("./resize/update-resize-row"), delete_select_border_1 = require("../scenegraph/select/delete-select-border");
7
+ const menu_1 = require("../scenegraph/component/menu"), ts_types_1 = require("../ts-types"), ts_types_2 = require("../ts-types"), check_in_select_1 = require("./common/check-in-select"), update_position_1 = require("./hover/update-position"), frozen_1 = require("./frozen"), sort_1 = require("./sort"), update_position_2 = require("./select/update-position"), helper_1 = require("../tools/helper"), PIVOT_TABLE_EVENT_TYPE_1 = require("../ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE"), TABLE_EVENT_TYPE_1 = require("../core/TABLE_EVENT_TYPE"), vutils_1 = require("@visactor/vutils"), drill_1 = require("./drill"), spark_line_1 = require("./spark-line"), cell_move_1 = require("./cell-move"), icon_1 = require("../scenegraph/utils/icon"), debounce_1 = require("../tools/debounce"), update_resize_column_1 = require("./resize/update-resize-column"), radio_1 = require("./radio/radio"), checkbox_1 = require("./checkbox/checkbox"), update_resize_row_1 = require("./resize/update-resize-row"), delete_select_border_1 = require("../scenegraph/select/delete-select-border"), util_1 = require("../tools/util");
8
8
 
9
9
  class StateManager {
10
10
  constructor(table) {
@@ -50,11 +50,11 @@ class StateManager {
50
50
  bounds: new vutils_1.Bounds,
51
51
  highlightIndex: -1,
52
52
  dropDownMenuHighlight: []
53
- }, this.sort = {
53
+ }, this.sort = [ {
54
54
  col: -1,
55
55
  row: -1,
56
56
  order: "normal"
57
- }, this.frozen = {
57
+ } ], this.frozen = {
58
58
  col: -1
59
59
  }, this.tablePosition = {
60
60
  absoluteX: 0,
@@ -114,11 +114,11 @@ class StateManager {
114
114
  bounds: new vutils_1.Bounds,
115
115
  highlightIndex: -1,
116
116
  dropDownMenuHighlight: []
117
- }, this.sort = {
117
+ }, this.sort = [ {
118
118
  col: -1,
119
119
  row: -1,
120
120
  order: "normal"
121
- }, this.frozen = {
121
+ } ], this.frozen = {
122
122
  col: -1
123
123
  }, this.scroll = {
124
124
  horizontalBarPos: 0,
@@ -164,7 +164,28 @@ class StateManager {
164
164
  })), seled;
165
165
  }
166
166
  setSortState(sortState) {
167
- this.sort.field = null == sortState ? void 0 : sortState.field, this.sort.order = null == sortState ? void 0 : sortState.order;
167
+ const sort = (sortState = !sortState || Array.isArray(sortState) ? sortState : [ sortState ]) && sortState.reduce(((prev, item) => {
168
+ var _a;
169
+ const column = null === (_a = function(columns) {
170
+ const result = [];
171
+ return function flatten(cols, parentStartIndex = 0) {
172
+ cols.forEach((col => {
173
+ var _a;
174
+ const startIndex = null !== (_a = col.startInTotal) && void 0 !== _a ? _a : parentStartIndex;
175
+ col.columns ? flatten(col.columns, startIndex) : result.push(Object.assign(Object.assign({}, col), {
176
+ startIndex: startIndex
177
+ }));
178
+ }));
179
+ }(columns), result;
180
+ }(this.table.internalProps.columns)) || void 0 === _a ? void 0 : _a.find((column => (null == column ? void 0 : column.field) === (null == item ? void 0 : item.field)));
181
+ return prev.push({
182
+ field: item.field,
183
+ order: item.order,
184
+ col: column.startInTotal,
185
+ row: column.level
186
+ }), prev;
187
+ }), []);
188
+ this.sort = sort || [];
168
189
  }
169
190
  setFrozenState() {
170
191
  this.frozen.col = this.table.frozenColCount - 1;
@@ -545,19 +566,68 @@ class StateManager {
545
566
  event: event
546
567
  });
547
568
  }
548
- const oldSortCol = this.sort.col, oldSortRow = this.sort.row;
549
- (0, sort_1.dealSort)(col, row, this.table, event), this.sort.col = col, this.sort.row = row,
550
- this.table.scenegraph.updateSortIcon(this.sort.col, this.sort.row, iconMark, this.sort.order, oldSortCol, oldSortRow, this.sort.icon),
551
- this.sort.icon = iconMark;
569
+ const previousSort = [ ...this.sort ], previousSortItem = this.table.internalProps.multipleSort || !previousSort.length ? null : this.sort[this.sort.length - 1];
570
+ (0, sort_1.dealSort)(col, row, this.table, event);
571
+ const currentSortItem = this.sort.find((item => item.col === col && item.row === row)), oldSortCol = this.table.internalProps.multipleSort || !previousSortItem ? null : previousSortItem.col, oldSortRow = this.table.internalProps.multipleSort || !previousSortItem ? null : previousSortItem.row, currentSortItemIndex = previousSort.findIndex((item => item.col === col && item.row === row));
572
+ currentSortItemIndex >= 0 && previousSort.splice(currentSortItemIndex, 1), this.table.scenegraph.updateSortIcon({
573
+ col: col,
574
+ row: row,
575
+ iconMark: iconMark,
576
+ order: null == currentSortItem ? void 0 : currentSortItem.order,
577
+ oldSortCol: oldSortCol,
578
+ oldSortRow: oldSortRow,
579
+ oldIconMark: null == previousSortItem ? void 0 : previousSortItem.icon
580
+ }), currentSortItem && (currentSortItem.icon = iconMark), this.table.internalProps.multipleSort || previousSort.forEach((sortItem => {
581
+ this.table.scenegraph.updateSortIcon({
582
+ col: null,
583
+ row: null,
584
+ iconMark: null,
585
+ order: "normal",
586
+ oldSortCol: sortItem.col,
587
+ oldSortRow: sortItem.row,
588
+ oldIconMark: null
589
+ });
590
+ }));
552
591
  }
553
592
  updateSortState(sortState) {
554
- if (sortState.field === this.sort.field && sortState.order === this.sort.order) return;
555
- const oldSortCol = this.sort.col, oldSortRow = this.sort.row, name = "asc" === this.sort.order ? "sort_downward" : "desc" === this.sort.order ? "sort_upward" : "sort_normal";
556
- this.setSortState(sortState);
557
- const cellAddress = this.table.internalProps.layoutMap.getHeaderCellAddressByField(sortState.field);
558
- this.sort.col = cellAddress.col, this.sort.row = cellAddress.row;
559
- const iconMark = this.table.scenegraph.getCell(this.sort.col, this.sort.row).getChildByName(name, !0);
560
- this.table.scenegraph.updateSortIcon(this.sort.col, this.sort.row, iconMark, this.sort.order, oldSortCol, oldSortRow, this.sort.icon);
593
+ var _a, _b, _c, _d, _e, _f, _g;
594
+ sortState = Array.isArray(sortState) ? sortState : [ sortState ];
595
+ for (let index = 0; index < sortState.length; index++) {
596
+ if (sortState[index].field === (null === (_a = this.sort[index]) || void 0 === _a ? void 0 : _a.field) && sortState[sortState.length - 1].order === (null === (_b = this.sort[index]) || void 0 === _b ? void 0 : _b.order)) return;
597
+ const oldSortCol = this.table.internalProps.multipleSort ? null : (null === (_c = this.sort[index]) || void 0 === _c ? void 0 : _c.col) || null, oldSortRow = this.table.internalProps.multipleSort ? null : (null === (_d = this.sort[index]) || void 0 === _d ? void 0 : _d.row) || null;
598
+ "asc" === (null === (_e = this.sort[index]) || void 0 === _e ? void 0 : _e.order) || (null === (_f = this.sort[index]) || void 0 === _f || _f.order);
599
+ this.setSortState(sortState);
600
+ const cellAddress = this.table.internalProps.layoutMap.getHeaderCellAddressByField(sortState[index].field);
601
+ this.sort[index].col = cellAddress.col, this.sort[index].row = cellAddress.row;
602
+ const cellGroup = this.table.scenegraph.getCell(this.sort[index].col, this.sort[index].row);
603
+ let iconMark;
604
+ (0, util_1.traverseObject)(cellGroup, "children", (mark => "sort" === mark.attribute.funcType && (iconMark = mark,
605
+ !0))), this.table.scenegraph.updateSortIcon({
606
+ col: this.sort[index].col,
607
+ row: this.sort[index].row,
608
+ iconMark: iconMark,
609
+ order: this.sort[index].order,
610
+ oldSortCol: oldSortCol,
611
+ oldSortRow: oldSortRow,
612
+ oldIconMark: null === (_g = this.sort[index]) || void 0 === _g ? void 0 : _g.icon
613
+ });
614
+ }
615
+ const normalHeaders = [];
616
+ this.table.internalProps.layoutMap.columnTree.tree.children.forEach((item => {
617
+ sortState.some((state => state.field === item.field)) || normalHeaders.push(item);
618
+ }));
619
+ for (let index = 0; index < normalHeaders.length; index++) {
620
+ const column = normalHeaders[index];
621
+ this.table.scenegraph.updateSortIcon({
622
+ col: null,
623
+ row: null,
624
+ iconMark: null,
625
+ order: null,
626
+ oldSortCol: column.startInTotal,
627
+ oldSortRow: column.level,
628
+ oldIconMark: null
629
+ });
630
+ }
561
631
  }
562
632
  triggerFreeze(col, row, iconMark) {
563
633
  this.table.isPivotTable() || this.table.transpose || ((0, frozen_1.dealFreeze)(col, row, this.table),