@visactor/vtable 1.7.8-alpha.5 → 1.7.8
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.
- package/cjs/ListTable.js +12 -8
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotTable.js +3 -3
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/record-helper.js +83 -10
- package/cjs/core/record-helper.js.map +1 -1
- package/cjs/core/tableHelper.d.ts +2 -0
- package/cjs/core/tableHelper.js +26 -3
- package/cjs/core/tableHelper.js.map +1 -1
- package/cjs/data/CachedDataSource.d.ts +3 -3
- package/cjs/data/CachedDataSource.js +4 -4
- package/cjs/data/CachedDataSource.js.map +1 -1
- package/cjs/data/DataSource.d.ts +3 -3
- package/cjs/data/DataSource.js +28 -21
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/DataStatistics.js +2 -1
- package/cjs/dataset/dataset.d.ts +20 -2
- package/cjs/dataset/dataset.js +262 -163
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/dataset/statistics-helper.d.ts +22 -0
- package/cjs/dataset/statistics-helper.js +114 -8
- package/cjs/dataset/statistics-helper.js.map +1 -1
- package/cjs/edit/edit-manager.js +1 -0
- package/cjs/edit/edit-manager.js.map +1 -1
- package/cjs/event/listener/table-group.js +1 -0
- package/cjs/event/listener/table-group.js.map +1 -1
- package/cjs/header-helper/header-helper.js +3 -3
- package/cjs/header-helper/header-helper.js.map +1 -1
- package/cjs/icons.js +2 -2
- package/cjs/icons.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/layout-helper.js +3 -4
- package/cjs/layout/layout-helper.js.map +1 -1
- package/cjs/layout/row-height-map.js +1 -1
- package/cjs/layout/simple-header-layout.d.ts +3 -4
- package/cjs/layout/simple-header-layout.js +16 -26
- package/cjs/layout/simple-header-layout.js.map +1 -1
- package/cjs/layout/tree-helper.js +2 -2
- package/cjs/plugins/custom-cell-style.js +2 -1
- package/cjs/plugins/icons.js +1 -1
- package/cjs/plugins/list-tree-stick-cell.js +1 -1
- package/cjs/plugins/themes.js +1 -1
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +25 -10
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/cjs/scenegraph/layout/frozen.js +3 -3
- package/cjs/scenegraph/layout/frozen.js.map +1 -1
- package/cjs/scenegraph/utils/text-measure.js +1 -1
- package/cjs/scenegraph/utils/text-measure.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +1 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +1041 -415
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.js +10 -10
- package/es/ListTable.js.map +1 -1
- package/es/PivotTable.js +3 -3
- package/es/PivotTable.js.map +1 -1
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/record-helper.js +83 -10
- package/es/core/record-helper.js.map +1 -1
- package/es/core/tableHelper.d.ts +2 -0
- package/es/core/tableHelper.js +23 -1
- package/es/core/tableHelper.js.map +1 -1
- package/es/data/CachedDataSource.d.ts +3 -3
- package/es/data/CachedDataSource.js +4 -4
- package/es/data/CachedDataSource.js.map +1 -1
- package/es/data/DataSource.d.ts +3 -3
- package/es/data/DataSource.js +28 -21
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/DataStatistics.js +2 -1
- package/es/dataset/dataset.d.ts +20 -2
- package/es/dataset/dataset.js +262 -164
- package/es/dataset/dataset.js.map +1 -1
- package/es/dataset/statistics-helper.d.ts +22 -0
- package/es/dataset/statistics-helper.js +114 -8
- package/es/dataset/statistics-helper.js.map +1 -1
- package/es/edit/edit-manager.js +1 -0
- package/es/edit/edit-manager.js.map +1 -1
- package/es/event/listener/table-group.js +1 -0
- package/es/event/listener/table-group.js.map +1 -1
- package/es/header-helper/header-helper.js +3 -3
- package/es/header-helper/header-helper.js.map +1 -1
- package/es/icons.js +2 -2
- package/es/icons.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/layout-helper.js +3 -4
- package/es/layout/layout-helper.js.map +1 -1
- package/es/layout/row-height-map.js +1 -1
- package/es/layout/simple-header-layout.d.ts +3 -4
- package/es/layout/simple-header-layout.js +16 -26
- package/es/layout/simple-header-layout.js.map +1 -1
- package/es/layout/tree-helper.js +1 -1
- package/es/plugins/custom-cell-style.js +2 -1
- package/es/plugins/icons.js +1 -1
- package/es/plugins/list-tree-stick-cell.js +1 -1
- package/es/plugins/themes.js +1 -1
- package/es/scenegraph/graphic/contributions/group-contribution-render.js +25 -10
- package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/es/scenegraph/layout/frozen.js +3 -3
- package/es/scenegraph/layout/frozen.js.map +1 -1
- package/es/scenegraph/utils/text-measure.js +2 -2
- package/es/scenegraph/utils/text-measure.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +1 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/graphic/contributions/group-contribution-render.ts"],"names":[],"mappings":"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","file":"group-contribution-render.js","sourcesContent":["import type {\n IGroup,\n IContext2d,\n IGroupGraphicAttribute,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n IGroupRenderContribution,\n IDrawContext,\n IRectGraphicAttribute\n} from './../../../vrender';\nimport { BaseRenderContributionTime, injectable, createRectPath } from './../../../vrender';\nimport type { Group } from '../group';\nimport { getCellHoverColor } from '../../../state/hover/is-cell-hover';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { getCellMergeInfo } from '../../utils/get-cell-merge';\nimport { InteractionState } from '../../../ts-types';\nimport { isArray } from '@visactor/vutils';\nimport { getCellSelectColor } from '../../../state/select/is-cell-select-highlight';\nimport { renderStrokeWithCornerRadius } from './rect-contribution-render';\n\n// const highlightDash: number[] = [];\n\n// SplitGroupContribution处理分段渲染stroke\n// stroke/strokeArrayWidth/strokeArrayColor 为数组时调用\n@injectable()\nexport class SplitGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const {\n stroke = groupAttribute.stroke,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor\n // highlightStroke = (groupAttribute as any).highlightStroke,\n // highlightStrokeArrayWidth = (groupAttribute as any).highlightStrokeArrayWidth,\n // width = groupAttribute.width,\n // height = groupAttribute.height,\n } = group.attribute as any;\n\n if (stroke && (Array.isArray(strokeArrayWidth) || Array.isArray(strokeArrayColor))) {\n doFillOrStroke.doStroke = false;\n }\n\n // if (highlightStroke) {\n // // 依据highlightStroke信息调整clip范围,以实现在单个单元格显示highlight border\n // let xDist = x;\n // let yDist = y;\n // let widthDist = width;\n // let heightDist = height;\n // if (highlightStroke[0] && highlightStrokeArrayWidth[0]) {\n // // top\n // yDist -= highlightStrokeArrayWidth[0] / 2;\n // heightDist += highlightStrokeArrayWidth[0] / 2;\n // }\n // if (highlightStroke[1] && highlightStrokeArrayWidth[1]) {\n // // right\n // widthDist += highlightStrokeArrayWidth[1] / 2;\n // }\n // if (highlightStroke[2] && highlightStrokeArrayWidth[2]) {\n // // bottom\n // heightDist += highlightStrokeArrayWidth[2] / 2;\n // }\n // if (highlightStroke[3] && highlightStrokeArrayWidth[3]) {\n // // left\n // xDist -= highlightStrokeArrayWidth[3] / 2;\n // widthDist += highlightStrokeArrayWidth[3] / 2;\n // }\n\n // context.beginPath();\n // context.rect(xDist, yDist, widthDist, heightDist);\n // }\n }\n}\n@injectable()\nexport class SplitGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const {\n // width = groupAttribute.width,\n // height = groupAttribute.height,\n // 基础border\n stroke = groupAttribute.stroke,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n\n lineWidth = groupAttribute.lineWidth,\n strokeColor = groupAttribute.stroke,\n\n cornerRadius = groupAttribute.cornerRadius\n // // select & hover border\n // highlightStroke = (groupAttribute as any).highlightStroke,\n // highlightStrokeArrayColor = (groupAttribute as any).highlightStrokeArrayColor,\n // highlightStrokeArrayWidth = (groupAttribute as any).highlightStrokeArrayWidth,\n // highlightStrokeArrayPart = (groupAttribute as any).highlightStrokeArrayPart,\n } = group.attribute as any;\n let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n\n // lineWidth === 0 不绘制\n if (!stroke || (!Array.isArray(strokeArrayWidth) && lineWidth === 0)) {\n return;\n }\n\n let widthForStroke: number;\n let heightForStroke: number;\n if (Array.isArray(strokeArrayColor) || Array.isArray(strokeArrayWidth)) {\n if (\n (typeof lineWidth === 'number' && lineWidth & 1) ||\n (Array.isArray(strokeArrayWidth) && strokeArrayWidth.some(width => width & 1))\n ) {\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n const bottomRight = table?.theme.cellBorderClipDirection === 'bottom-right';\n // let deltaWidth = 0;\n // let deltaHeight = 0;\n if (bottomRight) {\n x = Math.floor(x) - 0.5;\n y = Math.floor(y) - 0.5;\n // if (group.role === 'cell') {\n // const col = (group as any).col as number;\n // const row = (group as any).row as number;\n // if (table && col === table.colCount - 1) {\n // deltaWidth = 1;\n // }\n // if (table && row === table.rowCount - 1) {\n // deltaHeight = 1;\n // }\n // }\n } else {\n x = Math.floor(x) + 0.5;\n y = Math.floor(y) + 0.5;\n }\n\n if (table.options.customConfig?._disableColumnAndRowSizeRound) {\n width = Math.round(width);\n height = Math.round(height);\n }\n const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(\n group,\n Math.ceil(width),\n Math.ceil(height),\n bottomRight\n );\n widthForStroke = widthFroDraw;\n heightForStroke = heightFroDraw;\n } else {\n widthForStroke = Math.ceil(width);\n heightForStroke = Math.ceil(height);\n }\n\n // 带不同stroke边框\n if (!(cornerRadius === 0 || (isArray(cornerRadius) && (<number[]>cornerRadius).every(num => num === 0)))) {\n // let lastStrokeI = 0;\n // let lastStroke: any;\n context.beginPath();\n // debugger;\n createRectPath(\n context,\n x,\n y,\n widthForStroke,\n heightForStroke,\n cornerRadius,\n new Array(4).fill(0).map((_, i) => (x1: number, y1: number, x2: number, y2: number) => {\n renderStrokeWithCornerRadius(\n i,\n x1,\n y1,\n x2,\n y2,\n group,\n context,\n x,\n y,\n groupAttribute as any,\n stroke,\n strokeArrayWidth || lineWidth,\n strokeArrayColor || strokeColor,\n widthForStroke,\n heightForStroke\n );\n })\n );\n\n context.stroke();\n } else {\n renderStroke(\n group,\n context,\n x,\n y,\n groupAttribute,\n stroke,\n strokeArrayWidth || lineWidth,\n strokeArrayColor || strokeColor,\n // Math.ceil(width),\n // Math.ceil(height)\n widthForStroke,\n heightForStroke\n );\n }\n }\n }\n}\n\n/**\n * @description: 判断线宽是否需要分别渲染(线宽不同)\n * @param {number} widthArray\n * @return {*}\n */\nexport function getWidthInfo(widthArray: number[] | number) {\n if (!Array.isArray(widthArray)) {\n return {\n isSplitDraw: false,\n width: widthArray\n };\n }\n\n let temp;\n for (let i = 0; i < widthArray.length; i++) {\n const width = widthArray[i];\n if (width) {\n if (!temp) {\n temp = width;\n } else if (width !== temp) {\n return {\n isSplitDraw: true\n };\n }\n }\n }\n\n return {\n isSplitDraw: false,\n width: temp\n };\n}\n\nexport function renderStroke(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n groupAttribute: Required<IGroupGraphicAttribute> | Required<IRectGraphicAttribute>,\n stroke: boolean | [boolean, boolean, boolean, boolean],\n strokeArrayWidth: [number, number, number, number] | undefined,\n strokeArrayColor: [string, string, string, string] | undefined,\n width: number,\n height: number,\n isHighlight?: boolean,\n part?: ([number, number] | undefined)[]\n) {\n const widthInfo = getWidthInfo(strokeArrayWidth);\n const isWidthNumber = !Array.isArray(strokeArrayWidth);\n const isStrokeTrue = !Array.isArray(stroke);\n // 渲染部分线段,part: [[0, 0.5], undifined, undifined, undifined]\n // 同样上右下左,范围0-1,[0, 0.5]即只渲染前一半\n const isPart = Array.isArray(part);\n const isSplitDraw = Array.isArray(strokeArrayColor) || widthInfo.isSplitDraw;\n\n context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);\n // if (isHighlight) {\n // context.setLineDash(highlightDash);\n // }\n // const oldLineCap = context.lineCap;\n // context.lineCap = 'square';\n\n const { lineDash = groupAttribute.lineDash } = group.attribute as any;\n // const lineDash = context.getLineDash();\n let isDash = false;\n if (lineDash.length && lineDash.some((dash: number[] | null) => Array.isArray(dash))) {\n isDash = true;\n }\n // 单独处理每条边界,目前不考虑圆角\n context.beginPath();\n context.moveTo(x, y);\n\n const strokeTop = (isStrokeTrue || stroke[0]) && (isWidthNumber || strokeArrayWidth[0]);\n const strokeRight = (isStrokeTrue || stroke[1]) && (isWidthNumber || strokeArrayWidth[1]);\n const strokeBottom = (isStrokeTrue || stroke[2]) && (isWidthNumber || strokeArrayWidth[2]);\n const strokeLeft = (isStrokeTrue || stroke[3]) && (isWidthNumber || strokeArrayWidth[3]);\n\n // top\n if (strokeTop) {\n // context.lineTo(x + width, y);\n const deltaLeft = (isWidthNumber ? widthInfo.width : strokeArrayWidth[0]) / 2;\n const deltaRight = (isWidthNumber ? widthInfo.width : strokeArrayWidth[0]) / 2;\n if (isPart && Array.isArray(part[0])) {\n context.moveTo(x - deltaLeft + (width + deltaLeft + deltaRight) * part[0][0], y);\n context.lineTo(x - deltaLeft + (width + deltaLeft + deltaRight) * (part[0][1] - part[0][0]), y);\n context.moveTo(x + width + deltaRight, y);\n } else {\n context.moveTo(x - deltaLeft, y);\n context.lineTo(x + width + deltaRight, y);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[0]) {\n context.strokeStyle = strokeArrayColor[0];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[0];\n }\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n if (isDash) {\n context.setLineDash(lineDash[0] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x + width, y);\n }\n } else {\n context.moveTo(x + width, y);\n }\n // right\n if (strokeRight) {\n // context.lineTo(x + width, y + height);\n const deltaTop = (isWidthNumber ? widthInfo.width : strokeArrayWidth[1]) / 2;\n const deltaBottom = (isWidthNumber ? widthInfo.width : strokeArrayWidth[1]) / 2;\n if (isPart && Array.isArray(part[1])) {\n context.moveTo(x + width, y - deltaTop + height * part[1][0]);\n context.lineTo(x + width, y - deltaTop + (height + deltaTop + deltaBottom) * (part[1][1] - part[1][0]));\n context.moveTo(x + width, y + height + deltaBottom);\n } else {\n context.moveTo(x + width, y - deltaTop);\n context.lineTo(x + width, y + height + deltaBottom);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[1]) {\n context.strokeStyle = strokeArrayColor[1];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[1];\n }\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n if (isDash) {\n context.setLineDash(lineDash[1] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x + width, y + height);\n }\n } else {\n context.moveTo(x + width, y + height);\n }\n // bottom\n if (strokeBottom) {\n // context.lineTo(x, y + height);\n const deltaLeft = (isWidthNumber ? widthInfo.width : strokeArrayWidth[2]) / 2;\n const deltaRight = (isWidthNumber ? widthInfo.width : strokeArrayWidth[2]) / 2;\n if (isPart && Array.isArray(part[2])) {\n context.moveTo(x - deltaLeft + (width + deltaLeft + deltaRight) * part[2][0], y + height);\n context.lineTo(x - deltaLeft + (width + deltaLeft + deltaRight) * (part[2][1] - part[2][0]), y + height);\n context.moveTo(x - deltaLeft, y + height);\n } else {\n context.moveTo(x - deltaLeft, y + height);\n context.lineTo(x + width + deltaRight, y + height);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[2]) {\n context.strokeStyle = strokeArrayColor[2];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[2];\n }\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n if (isDash) {\n context.setLineDash(lineDash[2] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x, y + height);\n }\n } else {\n context.moveTo(x, y + height);\n }\n // left\n if (strokeLeft) {\n // context.lineTo(x, y);\n const deltaTop = (isWidthNumber ? widthInfo.width : strokeArrayWidth[3]) / 2;\n const deltaBottom = (isWidthNumber ? widthInfo.width : strokeArrayWidth[3]) / 2;\n if (isPart && Array.isArray(part[3])) {\n context.moveTo(x, y - deltaTop + (height + deltaTop + deltaBottom) * part[3][0]);\n context.lineTo(x, y - deltaTop + (height + deltaTop + deltaBottom) * (part[3][1] - part[3][0]));\n context.moveTo(x, y - deltaTop);\n } else {\n context.moveTo(x, y - deltaTop);\n context.lineTo(x, y + height + deltaBottom);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[3]) {\n context.strokeStyle = strokeArrayColor[3];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[3];\n }\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n if (isDash) {\n context.setLineDash(lineDash[3] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x, y);\n }\n } else {\n context.moveTo(x, y);\n }\n\n if (!isSplitDraw && !isDash) {\n // context.strokeStyle = strokeArrayColor;\n if (!isWidthNumber && widthInfo.width) {\n context.lineWidth = widthInfo.width;\n }\n context.stroke();\n }\n context.lineDashOffset = 0;\n // context.lineCap = oldLineCap;\n context.setLineDash([]);\n}\n\n// DashGroupContribution处理虚线边框对齐\n// lineDash 为非空数组时调用\n@injectable()\nexport class DashGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const {\n lineDash = groupAttribute.lineDash,\n stroke = groupAttribute.stroke,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth\n } = group.attribute as any;\n\n if (\n stroke &&\n Array.isArray(lineDash) &&\n lineDash.length &&\n lineDash[0]?.length &&\n !Array.isArray(strokeArrayColor) &&\n !Array.isArray(strokeArrayWidth)\n ) {\n doFillOrStroke.doStroke = false;\n }\n }\n}\n@injectable()\nexport class DashGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const {\n lineDash = groupAttribute.lineDash,\n stroke = groupAttribute.stroke,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n lineWidth = groupAttribute.lineWidth\n } = group.attribute as any;\n\n if (\n !stroke ||\n !(Array.isArray(lineDash) && lineDash.length && lineDash[0]?.length) ||\n Array.isArray(strokeArrayColor) ||\n Array.isArray(strokeArrayWidth)\n ) {\n return;\n }\n\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n\n // convert lineDash to number[][]\n const splitLineDash = isArray(lineDash[0]) ? getQuadLineDash(lineDash) : [lineDash, lineDash, lineDash, lineDash];\n\n // const { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n if (table.options.customConfig?._disableColumnAndRowSizeRound) {\n width = Math.round(width);\n height = Math.round(height);\n } else {\n width = Math.ceil(width);\n height = Math.ceil(height);\n }\n\n let widthForStroke;\n let heightForStroke;\n if (lineWidth & 1) {\n const bottomRight = table.theme.cellBorderClipDirection === 'bottom-right';\n const deltaWidth = 0;\n const deltaHeight = 0;\n if (bottomRight) {\n x = Math.floor(x) - 0.5;\n y = Math.floor(y) - 0.5;\n // if (group.role === 'cell') {\n // const col = (group as any).col as number;\n // const row = (group as any).row as number;\n // if (table && col === table.colCount - 1) {\n // deltaWidth = 1;\n // }\n // if (table && row === table.rowCount - 1) {\n // deltaHeight = 1;\n // }\n // }\n } else {\n x = Math.floor(x) + 0.5;\n y = Math.floor(y) + 0.5;\n }\n\n const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(\n group,\n Math.ceil(width + deltaWidth),\n Math.ceil(height + deltaHeight),\n bottomRight\n );\n widthForStroke = widthFroDraw;\n heightForStroke = heightFroDraw;\n } else {\n widthForStroke = Math.ceil(width);\n heightForStroke = Math.ceil(height);\n }\n context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);\n // 分段设置lineDashOffset,实现虚线边框对齐\n // top\n context.beginPath();\n context.moveTo(x, y);\n context.lineTo(x + widthForStroke, y);\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n context.setLineDash(splitLineDash[0] ?? []);\n context.stroke();\n\n // right\n context.beginPath();\n context.moveTo(x + widthForStroke, y);\n context.lineTo(x + widthForStroke, y + heightForStroke);\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n context.setLineDash(splitLineDash[1] ?? []);\n context.stroke();\n\n // bottom\n context.beginPath();\n context.moveTo(x, y + heightForStroke);\n context.lineTo(x + widthForStroke, y + heightForStroke);\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n context.setLineDash(splitLineDash[2] ?? []);\n context.stroke();\n\n // left\n context.beginPath();\n context.moveTo(x, y);\n context.lineTo(x, y + heightForStroke);\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n context.setLineDash(splitLineDash[3] ?? []);\n context.stroke();\n\n context.lineDashOffset = 0;\n context.setLineDash([]);\n }\n}\n\n// AdjustPosGroupContribution处理线宽为奇数时stroke位置偏移0.5px\n// lineWidth 为奇数时调用\n@injectable()\nexport class AdjustPosGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const {\n lineWidth = groupAttribute.lineWidth,\n stroke = groupAttribute.stroke,\n lineDash = groupAttribute.lineDash,\n // width = groupAttribute.width,\n // height = groupAttribute.height,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n notAdjustPos\n } = group.attribute as any;\n\n if (\n notAdjustPos !== true && // 不需要调整位置\n stroke &&\n Array.isArray(lineDash) &&\n !lineDash.length && // 非虚线\n !Array.isArray(strokeArrayColor) &&\n !Array.isArray(strokeArrayWidth) &&\n lineWidth & 1 // 奇数线宽\n ) {\n doFillOrStroke.doStroke = false;\n }\n }\n}\n\n@injectable()\nexport class AdjustPosGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const {\n lineWidth = groupAttribute.lineWidth,\n stroke = groupAttribute.stroke,\n lineDash = groupAttribute.lineDash,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n notAdjustPos,\n cornerRadius = groupAttribute.cornerRadius\n } = group.attribute as any;\n\n let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n // width = Math.ceil(width);\n // height = Math.ceil(height);\n\n if (\n notAdjustPos !== true && // 不需要调整位置\n stroke &&\n Array.isArray(lineDash) &&\n !lineDash.length && // 非虚线\n !Array.isArray(strokeArrayColor) &&\n !Array.isArray(strokeArrayWidth) &&\n lineWidth & 1 // 奇数线宽\n ) {\n // if (group.role === 'cell') {\n // const table = (group.stage as any).table as BaseTableAPI;\n // let col = (group as any).col as number;\n // let row = (group as any).row as number;\n // const mergeInfo = getCellMergeInfo(table, col, row);\n // if (mergeInfo) {\n // col = mergeInfo.end.col;\n // row = mergeInfo.end.row;\n // }\n\n // if (table && col === table.colCount - 1) {\n // width -= 1;\n // } else if (table && col === table.frozenColCount - 1 && table.scrollLeft) {\n // width -= 1;\n // }\n // if (table && row === table.rowCount - 1) {\n // height -= 1;\n // } else if (table && row === table.frozenRowCount - 1 && table.scrollTop) {\n // height -= 1;\n // }\n // }\n\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n if (table.options.customConfig?._disableColumnAndRowSizeRound) {\n width = Math.round(width);\n height = Math.round(height);\n }\n\n context.beginPath();\n\n const bottomRight = table?.theme.cellBorderClipDirection === 'bottom-right';\n const deltaWidth = 0;\n const deltaHeight = 0;\n if (bottomRight) {\n x = Math.floor(x) - 0.5;\n y = Math.floor(y) - 0.5;\n // if (group.role === 'cell') {\n // const col = (group as any).col as number;\n // const row = (group as any).row as number;\n // if (table && col === table.colCount - 1) {\n // deltaWidth = 1;\n // }\n // if (table && row === table.rowCount - 1) {\n // deltaHeight = 1;\n // }\n // }\n } else {\n x = Math.floor(x) + 0.5;\n y = Math.floor(y) + 0.5;\n }\n\n const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(\n group,\n Math.ceil(width),\n Math.ceil(height),\n bottomRight\n );\n\n if (cornerRadius) {\n // 测试后,cache对于重绘性能提升不大,但是在首屏有一定性能损耗,因此rect不再使用cache\n createRectPath(context, x, y, widthFroDraw + deltaWidth, heightFroDraw + deltaHeight, cornerRadius);\n } else {\n context.rect(x, y, widthFroDraw, heightFroDraw);\n }\n context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);\n context.stroke();\n }\n }\n}\n\n@injectable()\nexport class AdjustColorGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n // 处理hover颜色\n if ((group as Group).role === 'cell') {\n const table = (group.stage as any).table as BaseTableAPI;\n if (table) {\n const selectColor = getCellSelectColor(group as Group, table);\n if (selectColor) {\n // show select highlight when scrolling\n (group.attribute as any)._vtableHightLightFill = selectColor;\n } else if (table.stateManager.interactionState !== InteractionState.scrolling) {\n const hoverColor = getCellHoverColor(group as Group, table);\n if (hoverColor) {\n (group.attribute as any)._vtableHightLightFill = hoverColor;\n }\n }\n }\n }\n }\n}\n\n@injectable()\nexport class AdjustColorGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // 处理hover颜色\n if ((group.attribute as any)._vtableHightLightFill) {\n if (fillCb) {\n // do nothing\n // fillCb(context, group.attribute, groupAttribute);\n } else if (fVisible) {\n const oldColor = group.attribute.fill;\n // draw hover fill\n group.attribute.fill = (group.attribute as any)._vtableHightLightFill as any;\n context.setCommonStyle(group, group.attribute, x, y, groupAttribute);\n context.fill();\n group.attribute.fill = oldColor;\n (group.attribute as any)._vtableHightLightFill = undefined;\n }\n }\n }\n}\n\n@injectable()\nexport class ClipBodyGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n xOrigin: number,\n yOrigin: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n\n if ((group as Group).role === 'body') {\n const x = -(group.attribute.x ?? 0) + table.getFrozenColsWidth();\n const y = -(group.attribute.y ?? 0) + table.getFrozenRowsHeight();\n const width = group.parent.attribute.width - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n const height = group.parent.attribute.height - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'row-header') {\n const x = 0;\n const y = -(group.attribute.y ?? 0) + table.getFrozenRowsHeight();\n const width = table.getFrozenColsWidth();\n const height = group.parent.attribute.height - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'col-header') {\n const x = -(group.attribute.x ?? 0) + table.getFrozenColsWidth();\n const y = 0;\n const width = group.parent.attribute.width - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n const height = table.getFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'right-frozen') {\n const x = 0;\n const y = -(group.attribute.y ?? 0) + table.getFrozenRowsHeight();\n const width = table.getRightFrozenColsWidth();\n const height = group.parent.attribute.height - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'bottom-frozen') {\n const x = -(group.attribute.x ?? 0) + table.getFrozenColsWidth();\n const y = 0;\n const width = group.parent.attribute.width - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n const height = table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-header') {\n const x = 0;\n const y = 0;\n const width = table.getFrozenColsWidth();\n const height = table.getFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-right-top-header') {\n const x = 0;\n const y = 0;\n const width = table.getRightFrozenColsWidth();\n const height = table.getFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-right-bottom-header') {\n const x = 0;\n const y = 0;\n const width = table.getRightFrozenColsWidth();\n const height = table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-left-bottom-header') {\n const x = 0;\n const y = 0;\n const width = table.getFrozenColsWidth();\n const height = table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n }\n }\n}\n\nconst precision = Math.pow(2, 24);\n\nfunction drawClipRect(context: IContext2d, x: number, y: number, width: number, height: number) {\n context.beginPath();\n\n const matrix = context.applyedMatrix;\n if (Math.abs(matrix.f) > precision || Math.abs(matrix.g) > precision) {\n // hack for precision problem in CanvasRenderingContext2D\n // if position is too big, disable clip\n context.rect(x - precision, y - precision, width + precision * 2, height + precision * 2);\n } else {\n context.rect(x, y, width, height);\n }\n}\n\n// @injectable()\n// export class ClipBodyGroupAfterRenderContribution implements IGroupRenderContribution {\n// time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n// useStyle = true;\n// order = 0;\n// drawShape(\n// group: IGroup,\n// context: IContext2d,\n// x: number,\n// y: number,\n// doFill: boolean,\n// doStroke: boolean,\n// fVisible: boolean,\n// sVisible: boolean,\n// groupAttribute: Required<IGroupGraphicAttribute>,\n// drawContext: IDrawContext,\n// fillCb?: (\n// ctx: IContext2d,\n// markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n// themeAttribute: IThemeAttribute\n// ) => boolean,\n// strokeCb?: (\n// ctx: IContext2d,\n// markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n// themeAttribute: IThemeAttribute\n// ) => boolean\n// ) {\n// // 处理hover颜色\n// if ((group as Group).role === 'body') {\n// }\n// }\n// }\n\nfunction getCellSizeForDraw(group: any, width: number, height: number, bottomRight: boolean) {\n const table = group.stage.table as BaseTableAPI;\n if (group.role === 'cell') {\n let col = group.col as number;\n let row = group.row as number;\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo) {\n col = mergeInfo.end.col;\n row = mergeInfo.end.row;\n }\n\n if (table && col === table.colCount - 1 && !bottomRight) {\n width -= 1;\n } else if (table && col === table.frozenColCount - 1 && table.scrollLeft && !bottomRight) {\n width -= 1;\n }\n if (table && row === table.rowCount - 1 && !bottomRight) {\n height -= 1;\n } else if (table && row === table.frozenRowCount - 1 && table.scrollTop && !bottomRight) {\n height -= 1;\n }\n } else if (group.role === 'corner-frozen') {\n if (table && table.scrollLeft && !bottomRight) {\n width -= 1;\n }\n if (table && table.scrollTop && !bottomRight) {\n height -= 1;\n }\n }\n\n return { width, height };\n}\n\nfunction getQuadLineDash(lineDash: number[][]) {\n if (lineDash.length === 1) {\n return [lineDash[0], lineDash[0], lineDash[0], lineDash[0]];\n } else if (lineDash.length === 2) {\n return [lineDash[0], lineDash[1], lineDash[0], lineDash[1]];\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return lineDash;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/graphic/contributions/group-contribution-render.ts"],"names":[],"mappings":"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","file":"group-contribution-render.js","sourcesContent":["import type {\n IGroup,\n IContext2d,\n IGroupGraphicAttribute,\n IMarkAttribute,\n IGraphicAttribute,\n IThemeAttribute,\n IGroupRenderContribution,\n IDrawContext,\n IRectGraphicAttribute\n} from './../../../vrender';\nimport { BaseRenderContributionTime, injectable, createRectPath } from './../../../vrender';\nimport type { Group } from '../group';\nimport { getCellHoverColor } from '../../../state/hover/is-cell-hover';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { getCellMergeInfo } from '../../utils/get-cell-merge';\nimport { InteractionState } from '../../../ts-types';\nimport { isArray } from '@visactor/vutils';\nimport { getCellSelectColor } from '../../../state/select/is-cell-select-highlight';\nimport { renderStrokeWithCornerRadius } from './rect-contribution-render';\n\n// const highlightDash: number[] = [];\n\n// SplitGroupContribution处理分段渲染stroke\n// stroke/strokeArrayWidth/strokeArrayColor 为数组时调用\n@injectable()\nexport class SplitGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const {\n stroke = groupAttribute.stroke,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor\n // highlightStroke = (groupAttribute as any).highlightStroke,\n // highlightStrokeArrayWidth = (groupAttribute as any).highlightStrokeArrayWidth,\n // width = groupAttribute.width,\n // height = groupAttribute.height,\n } = group.attribute as any;\n\n if (stroke && (Array.isArray(strokeArrayWidth) || Array.isArray(strokeArrayColor))) {\n doFillOrStroke.doStroke = false;\n }\n\n // if (highlightStroke) {\n // // 依据highlightStroke信息调整clip范围,以实现在单个单元格显示highlight border\n // let xDist = x;\n // let yDist = y;\n // let widthDist = width;\n // let heightDist = height;\n // if (highlightStroke[0] && highlightStrokeArrayWidth[0]) {\n // // top\n // yDist -= highlightStrokeArrayWidth[0] / 2;\n // heightDist += highlightStrokeArrayWidth[0] / 2;\n // }\n // if (highlightStroke[1] && highlightStrokeArrayWidth[1]) {\n // // right\n // widthDist += highlightStrokeArrayWidth[1] / 2;\n // }\n // if (highlightStroke[2] && highlightStrokeArrayWidth[2]) {\n // // bottom\n // heightDist += highlightStrokeArrayWidth[2] / 2;\n // }\n // if (highlightStroke[3] && highlightStrokeArrayWidth[3]) {\n // // left\n // xDist -= highlightStrokeArrayWidth[3] / 2;\n // widthDist += highlightStrokeArrayWidth[3] / 2;\n // }\n\n // context.beginPath();\n // context.rect(xDist, yDist, widthDist, heightDist);\n // }\n }\n}\n@injectable()\nexport class SplitGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const {\n // width = groupAttribute.width,\n // height = groupAttribute.height,\n // 基础border\n stroke = groupAttribute.stroke,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n\n lineWidth = groupAttribute.lineWidth,\n strokeColor = groupAttribute.stroke,\n\n cornerRadius = groupAttribute.cornerRadius\n // // select & hover border\n // highlightStroke = (groupAttribute as any).highlightStroke,\n // highlightStrokeArrayColor = (groupAttribute as any).highlightStrokeArrayColor,\n // highlightStrokeArrayWidth = (groupAttribute as any).highlightStrokeArrayWidth,\n // highlightStrokeArrayPart = (groupAttribute as any).highlightStrokeArrayPart,\n } = group.attribute as any;\n let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n\n // lineWidth === 0 不绘制\n if (!stroke || (!Array.isArray(strokeArrayWidth) && lineWidth === 0)) {\n return;\n }\n\n let widthForStroke: number;\n let heightForStroke: number;\n if (Array.isArray(strokeArrayColor) || Array.isArray(strokeArrayWidth)) {\n if (\n (typeof lineWidth === 'number' && lineWidth & 1) ||\n (Array.isArray(strokeArrayWidth) && strokeArrayWidth.some(width => width & 1))\n ) {\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n const bottomRight = table?.theme.cellBorderClipDirection === 'bottom-right';\n // let deltaWidth = 0;\n // let deltaHeight = 0;\n if (bottomRight) {\n x = Math.floor(x) - 0.5;\n y = Math.floor(y) - 0.5;\n if (group.role === 'cell') {\n const col = (group as any).col as number;\n const row = (group as any).row as number;\n if (col === 0) {\n x += 1;\n }\n if (row === 0) {\n y += 1;\n }\n }\n } else {\n x = Math.floor(x) + 0.5;\n y = Math.floor(y) + 0.5;\n }\n\n if (table.options.customConfig?._disableColumnAndRowSizeRound) {\n width = Math.round(width);\n height = Math.round(height);\n }\n const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(\n group,\n Math.ceil(width),\n Math.ceil(height),\n bottomRight\n );\n widthForStroke = widthFroDraw;\n heightForStroke = heightFroDraw;\n } else {\n widthForStroke = Math.ceil(width);\n heightForStroke = Math.ceil(height);\n }\n\n // 带不同stroke边框\n if (!(cornerRadius === 0 || (isArray(cornerRadius) && (<number[]>cornerRadius).every(num => num === 0)))) {\n // let lastStrokeI = 0;\n // let lastStroke: any;\n context.beginPath();\n // debugger;\n createRectPath(\n context,\n x,\n y,\n widthForStroke,\n heightForStroke,\n cornerRadius,\n new Array(4).fill(0).map((_, i) => (x1: number, y1: number, x2: number, y2: number) => {\n renderStrokeWithCornerRadius(\n i,\n x1,\n y1,\n x2,\n y2,\n group,\n context,\n x,\n y,\n groupAttribute as any,\n stroke,\n strokeArrayWidth || lineWidth,\n strokeArrayColor || strokeColor,\n widthForStroke,\n heightForStroke\n );\n })\n );\n\n context.stroke();\n } else {\n renderStroke(\n group,\n context,\n x,\n y,\n groupAttribute,\n stroke,\n strokeArrayWidth || lineWidth,\n strokeArrayColor || strokeColor,\n // Math.ceil(width),\n // Math.ceil(height)\n widthForStroke,\n heightForStroke\n );\n }\n }\n }\n}\n\n/**\n * @description: 判断线宽是否需要分别渲染(线宽不同)\n * @param {number} widthArray\n * @return {*}\n */\nexport function getWidthInfo(widthArray: number[] | number) {\n if (!Array.isArray(widthArray)) {\n return {\n isSplitDraw: false,\n width: widthArray\n };\n }\n\n let temp;\n for (let i = 0; i < widthArray.length; i++) {\n const width = widthArray[i];\n if (width) {\n if (!temp) {\n temp = width;\n } else if (width !== temp) {\n return {\n isSplitDraw: true\n };\n }\n }\n }\n\n return {\n isSplitDraw: false,\n width: temp\n };\n}\n\nexport function renderStroke(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n groupAttribute: Required<IGroupGraphicAttribute> | Required<IRectGraphicAttribute>,\n stroke: boolean | [boolean, boolean, boolean, boolean],\n strokeArrayWidth: [number, number, number, number] | undefined,\n strokeArrayColor: [string, string, string, string] | undefined,\n width: number,\n height: number,\n isHighlight?: boolean,\n part?: ([number, number] | undefined)[]\n) {\n const widthInfo = getWidthInfo(strokeArrayWidth);\n const isWidthNumber = !Array.isArray(strokeArrayWidth);\n const isStrokeTrue = !Array.isArray(stroke);\n // 渲染部分线段,part: [[0, 0.5], undifined, undifined, undifined]\n // 同样上右下左,范围0-1,[0, 0.5]即只渲染前一半\n const isPart = Array.isArray(part);\n const isSplitDraw = Array.isArray(strokeArrayColor) || widthInfo.isSplitDraw;\n\n context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);\n // if (isHighlight) {\n // context.setLineDash(highlightDash);\n // }\n // const oldLineCap = context.lineCap;\n // context.lineCap = 'square';\n\n const { lineDash = groupAttribute.lineDash } = group.attribute as any;\n // const lineDash = context.getLineDash();\n let isDash = false;\n if (lineDash.length && lineDash.some((dash: number[] | null) => Array.isArray(dash))) {\n isDash = true;\n }\n // 单独处理每条边界,目前不考虑圆角\n context.beginPath();\n context.moveTo(x, y);\n\n const strokeTop = (isStrokeTrue || stroke[0]) && (isWidthNumber || strokeArrayWidth[0]);\n const strokeRight = (isStrokeTrue || stroke[1]) && (isWidthNumber || strokeArrayWidth[1]);\n const strokeBottom = (isStrokeTrue || stroke[2]) && (isWidthNumber || strokeArrayWidth[2]);\n const strokeLeft = (isStrokeTrue || stroke[3]) && (isWidthNumber || strokeArrayWidth[3]);\n\n // top\n if (strokeTop) {\n // context.lineTo(x + width, y);\n const deltaLeft = (isWidthNumber ? widthInfo.width : strokeArrayWidth[0]) / 2;\n const deltaRight = (isWidthNumber ? widthInfo.width : strokeArrayWidth[0]) / 2;\n if (isPart && Array.isArray(part[0])) {\n context.moveTo(x - deltaLeft + (width + deltaLeft + deltaRight) * part[0][0], y);\n context.lineTo(x - deltaLeft + (width + deltaLeft + deltaRight) * (part[0][1] - part[0][0]), y);\n context.moveTo(x + width + deltaRight, y);\n } else {\n context.moveTo(x - deltaLeft, y);\n context.lineTo(x + width + deltaRight, y);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[0]) {\n context.strokeStyle = strokeArrayColor[0];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[0];\n }\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n if (isDash) {\n context.setLineDash(lineDash[0] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x + width, y);\n }\n } else {\n context.moveTo(x + width, y);\n }\n // right\n if (strokeRight) {\n // context.lineTo(x + width, y + height);\n const deltaTop = (isWidthNumber ? widthInfo.width : strokeArrayWidth[1]) / 2;\n const deltaBottom = (isWidthNumber ? widthInfo.width : strokeArrayWidth[1]) / 2;\n if (isPart && Array.isArray(part[1])) {\n context.moveTo(x + width, y - deltaTop + height * part[1][0]);\n context.lineTo(x + width, y - deltaTop + (height + deltaTop + deltaBottom) * (part[1][1] - part[1][0]));\n context.moveTo(x + width, y + height + deltaBottom);\n } else {\n context.moveTo(x + width, y - deltaTop);\n context.lineTo(x + width, y + height + deltaBottom);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[1]) {\n context.strokeStyle = strokeArrayColor[1];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[1];\n }\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n if (isDash) {\n context.setLineDash(lineDash[1] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x + width, y + height);\n }\n } else {\n context.moveTo(x + width, y + height);\n }\n // bottom\n if (strokeBottom) {\n // context.lineTo(x, y + height);\n const deltaLeft = (isWidthNumber ? widthInfo.width : strokeArrayWidth[2]) / 2;\n const deltaRight = (isWidthNumber ? widthInfo.width : strokeArrayWidth[2]) / 2;\n if (isPart && Array.isArray(part[2])) {\n context.moveTo(x - deltaLeft + (width + deltaLeft + deltaRight) * part[2][0], y + height);\n context.lineTo(x - deltaLeft + (width + deltaLeft + deltaRight) * (part[2][1] - part[2][0]), y + height);\n context.moveTo(x - deltaLeft, y + height);\n } else {\n context.moveTo(x - deltaLeft, y + height);\n context.lineTo(x + width + deltaRight, y + height);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[2]) {\n context.strokeStyle = strokeArrayColor[2];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[2];\n }\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n if (isDash) {\n context.setLineDash(lineDash[2] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x, y + height);\n }\n } else {\n context.moveTo(x, y + height);\n }\n // left\n if (strokeLeft) {\n // context.lineTo(x, y);\n const deltaTop = (isWidthNumber ? widthInfo.width : strokeArrayWidth[3]) / 2;\n const deltaBottom = (isWidthNumber ? widthInfo.width : strokeArrayWidth[3]) / 2;\n if (isPart && Array.isArray(part[3])) {\n context.moveTo(x, y - deltaTop + (height + deltaTop + deltaBottom) * part[3][0]);\n context.lineTo(x, y - deltaTop + (height + deltaTop + deltaBottom) * (part[3][1] - part[3][0]));\n context.moveTo(x, y - deltaTop);\n } else {\n context.moveTo(x, y - deltaTop);\n context.lineTo(x, y + height + deltaBottom);\n }\n if (isSplitDraw || isDash) {\n if (strokeArrayColor && strokeArrayColor[3]) {\n context.strokeStyle = strokeArrayColor[3];\n } else {\n context.strokeStyle = 'transparent';\n }\n if (!isWidthNumber) {\n context.lineWidth = strokeArrayWidth[3];\n }\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n if (isDash) {\n context.setLineDash(lineDash[3] ?? []);\n }\n context.stroke();\n context.beginPath();\n context.moveTo(x, y);\n }\n } else {\n context.moveTo(x, y);\n }\n\n if (!isSplitDraw && !isDash) {\n // context.strokeStyle = strokeArrayColor;\n if (!isWidthNumber && widthInfo.width) {\n context.lineWidth = widthInfo.width;\n }\n context.stroke();\n }\n context.lineDashOffset = 0;\n // context.lineCap = oldLineCap;\n context.setLineDash([]);\n}\n\n// DashGroupContribution处理虚线边框对齐\n// lineDash 为非空数组时调用\n@injectable()\nexport class DashGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const {\n lineDash = groupAttribute.lineDash,\n stroke = groupAttribute.stroke,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth\n } = group.attribute as any;\n\n if (\n stroke &&\n Array.isArray(lineDash) &&\n lineDash.length &&\n lineDash[0]?.length &&\n !Array.isArray(strokeArrayColor) &&\n !Array.isArray(strokeArrayWidth)\n ) {\n doFillOrStroke.doStroke = false;\n }\n }\n}\n@injectable()\nexport class DashGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const {\n lineDash = groupAttribute.lineDash,\n stroke = groupAttribute.stroke,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n lineWidth = groupAttribute.lineWidth\n } = group.attribute as any;\n\n if (\n !stroke ||\n !(Array.isArray(lineDash) && lineDash.length && lineDash[0]?.length) ||\n Array.isArray(strokeArrayColor) ||\n Array.isArray(strokeArrayWidth)\n ) {\n return;\n }\n\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n\n // convert lineDash to number[][]\n const splitLineDash = isArray(lineDash[0]) ? getQuadLineDash(lineDash) : [lineDash, lineDash, lineDash, lineDash];\n\n // const { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n if (table.options.customConfig?._disableColumnAndRowSizeRound) {\n width = Math.round(width);\n height = Math.round(height);\n } else {\n width = Math.ceil(width);\n height = Math.ceil(height);\n }\n\n let widthForStroke;\n let heightForStroke;\n if (lineWidth & 1) {\n const bottomRight = table.theme.cellBorderClipDirection === 'bottom-right';\n const deltaWidth = 0;\n const deltaHeight = 0;\n if (bottomRight) {\n x = Math.floor(x) - 0.5;\n y = Math.floor(y) - 0.5;\n if (group.role === 'cell') {\n const col = (group as any).col as number;\n const row = (group as any).row as number;\n if (col === 0) {\n x += 1;\n }\n if (row === 0) {\n y += 1;\n }\n }\n } else {\n x = Math.floor(x) + 0.5;\n y = Math.floor(y) + 0.5;\n }\n\n const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(\n group,\n Math.ceil(width + deltaWidth),\n Math.ceil(height + deltaHeight),\n bottomRight\n );\n widthForStroke = widthFroDraw;\n heightForStroke = heightFroDraw;\n } else {\n widthForStroke = Math.ceil(width);\n heightForStroke = Math.ceil(height);\n }\n context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);\n // 分段设置lineDashOffset,实现虚线边框对齐\n // top\n context.beginPath();\n context.moveTo(x, y);\n context.lineTo(x + widthForStroke, y);\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n context.setLineDash(splitLineDash[0] ?? []);\n context.stroke();\n\n // right\n context.beginPath();\n context.moveTo(x + widthForStroke, y);\n context.lineTo(x + widthForStroke, y + heightForStroke);\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n context.setLineDash(splitLineDash[1] ?? []);\n context.stroke();\n\n // bottom\n context.beginPath();\n context.moveTo(x, y + heightForStroke);\n context.lineTo(x + widthForStroke, y + heightForStroke);\n context.lineDashOffset = context.currentMatrix.e / context.currentMatrix.a;\n context.setLineDash(splitLineDash[2] ?? []);\n context.stroke();\n\n // left\n context.beginPath();\n context.moveTo(x, y);\n context.lineTo(x, y + heightForStroke);\n context.lineDashOffset = context.currentMatrix.f / context.currentMatrix.d;\n context.setLineDash(splitLineDash[3] ?? []);\n context.stroke();\n\n context.lineDashOffset = 0;\n context.setLineDash([]);\n }\n}\n\n// AdjustPosGroupContribution处理线宽为奇数时stroke位置偏移0.5px\n// lineWidth 为奇数时调用\n@injectable()\nexport class AdjustPosGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const {\n lineWidth = groupAttribute.lineWidth,\n stroke = groupAttribute.stroke,\n lineDash = groupAttribute.lineDash,\n // width = groupAttribute.width,\n // height = groupAttribute.height,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n notAdjustPos\n } = group.attribute as any;\n\n if (\n notAdjustPos !== true && // 不需要调整位置\n stroke &&\n Array.isArray(lineDash) &&\n !lineDash.length && // 非虚线\n !Array.isArray(strokeArrayColor) &&\n !Array.isArray(strokeArrayWidth) &&\n lineWidth & 1 // 奇数线宽\n ) {\n doFillOrStroke.doStroke = false;\n }\n }\n}\n\n@injectable()\nexport class AdjustPosGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const {\n lineWidth = groupAttribute.lineWidth,\n stroke = groupAttribute.stroke,\n lineDash = groupAttribute.lineDash,\n strokeArrayWidth = (groupAttribute as any).strokeArrayWidth,\n strokeArrayColor = (groupAttribute as any).strokeArrayColor,\n notAdjustPos,\n cornerRadius = groupAttribute.cornerRadius\n } = group.attribute as any;\n\n let { width = groupAttribute.width, height = groupAttribute.height } = group.attribute;\n // width = Math.ceil(width);\n // height = Math.ceil(height);\n\n if (\n notAdjustPos !== true && // 不需要调整位置\n stroke &&\n Array.isArray(lineDash) &&\n !lineDash.length && // 非虚线\n !Array.isArray(strokeArrayColor) &&\n !Array.isArray(strokeArrayWidth) &&\n lineWidth & 1 // 奇数线宽\n ) {\n // if (group.role === 'cell') {\n // const table = (group.stage as any).table as BaseTableAPI;\n // let col = (group as any).col as number;\n // let row = (group as any).row as number;\n // const mergeInfo = getCellMergeInfo(table, col, row);\n // if (mergeInfo) {\n // col = mergeInfo.end.col;\n // row = mergeInfo.end.row;\n // }\n\n // if (table && col === table.colCount - 1) {\n // width -= 1;\n // } else if (table && col === table.frozenColCount - 1 && table.scrollLeft) {\n // width -= 1;\n // }\n // if (table && row === table.rowCount - 1) {\n // height -= 1;\n // } else if (table && row === table.frozenRowCount - 1 && table.scrollTop) {\n // height -= 1;\n // }\n // }\n\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n if (table.options.customConfig?._disableColumnAndRowSizeRound) {\n width = Math.round(width);\n height = Math.round(height);\n }\n\n context.beginPath();\n\n const bottomRight = table?.theme.cellBorderClipDirection === 'bottom-right';\n const deltaWidth = 0;\n const deltaHeight = 0;\n if (bottomRight) {\n x = Math.floor(x) - 0.5;\n y = Math.floor(y) - 0.5;\n if (group.role === 'cell') {\n const col = (group as any).col as number;\n const row = (group as any).row as number;\n if (col === 0) {\n x += 1;\n }\n if (row === 0) {\n y += 1;\n }\n }\n } else {\n x = Math.floor(x) + 0.5;\n y = Math.floor(y) + 0.5;\n }\n\n const { width: widthFroDraw, height: heightFroDraw } = getCellSizeForDraw(\n group,\n Math.ceil(width),\n Math.ceil(height),\n bottomRight\n );\n\n if (cornerRadius) {\n // 测试后,cache对于重绘性能提升不大,但是在首屏有一定性能损耗,因此rect不再使用cache\n createRectPath(context, x, y, widthFroDraw + deltaWidth, heightFroDraw + deltaHeight, cornerRadius);\n } else {\n context.rect(x, y, widthFroDraw, heightFroDraw);\n }\n context.setStrokeStyle(group, group.attribute, x, y, groupAttribute);\n context.stroke();\n }\n }\n}\n\n@injectable()\nexport class AdjustColorGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n // 处理hover颜色\n if ((group as Group).role === 'cell') {\n const table = (group.stage as any).table as BaseTableAPI;\n if (table) {\n const selectColor = getCellSelectColor(group as Group, table);\n if (selectColor) {\n // show select highlight when scrolling\n (group.attribute as any)._vtableHightLightFill = selectColor;\n } else if (table.stateManager.interactionState !== InteractionState.scrolling) {\n const hoverColor = getCellHoverColor(group as Group, table);\n if (hoverColor) {\n (group.attribute as any)._vtableHightLightFill = hoverColor;\n }\n }\n }\n }\n }\n}\n\n@injectable()\nexport class AdjustColorGroupAfterRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // 处理hover颜色\n if ((group.attribute as any)._vtableHightLightFill) {\n if (fillCb) {\n // do nothing\n // fillCb(context, group.attribute, groupAttribute);\n } else if (fVisible) {\n const oldColor = group.attribute.fill;\n // draw hover fill\n group.attribute.fill = (group.attribute as any)._vtableHightLightFill as any;\n context.setCommonStyle(group, group.attribute, x, y, groupAttribute);\n context.fill();\n group.attribute.fill = oldColor;\n (group.attribute as any)._vtableHightLightFill = undefined;\n }\n }\n }\n}\n\n@injectable()\nexport class ClipBodyGroupBeforeRenderContribution implements IGroupRenderContribution {\n time: BaseRenderContributionTime = BaseRenderContributionTime.beforeFillStroke;\n useStyle = true;\n order = 0;\n drawShape(\n group: IGroup,\n context: IContext2d,\n xOrigin: number,\n yOrigin: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n groupAttribute: Required<IGroupGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n doFillOrStroke?: { doFill: boolean; doStroke: boolean }\n ) {\n const table = (group.stage as any).table as BaseTableAPI;\n if (!table) {\n return;\n }\n\n if ((group as Group).role === 'body') {\n const x = -(group.attribute.x ?? 0) + table.getFrozenColsWidth();\n const y = -(group.attribute.y ?? 0) + table.getFrozenRowsHeight();\n const width = group.parent.attribute.width - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n const height = group.parent.attribute.height - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'row-header') {\n const x = 0;\n const y = -(group.attribute.y ?? 0) + table.getFrozenRowsHeight();\n const width = table.getFrozenColsWidth();\n const height = group.parent.attribute.height - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'col-header') {\n const x = -(group.attribute.x ?? 0) + table.getFrozenColsWidth();\n const y = 0;\n const width = group.parent.attribute.width - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n const height = table.getFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'right-frozen') {\n const x = 0;\n const y = -(group.attribute.y ?? 0) + table.getFrozenRowsHeight();\n const width = table.getRightFrozenColsWidth();\n const height = group.parent.attribute.height - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'bottom-frozen') {\n const x = -(group.attribute.x ?? 0) + table.getFrozenColsWidth();\n const y = 0;\n const width = group.parent.attribute.width - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();\n const height = table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-header') {\n const x = 0;\n const y = 0;\n const width = table.getFrozenColsWidth();\n const height = table.getFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-right-top-header') {\n const x = 0;\n const y = 0;\n const width = table.getRightFrozenColsWidth();\n const height = table.getFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-right-bottom-header') {\n const x = 0;\n const y = 0;\n const width = table.getRightFrozenColsWidth();\n const height = table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n } else if ((group as Group).role === 'corner-left-bottom-header') {\n const x = 0;\n const y = 0;\n const width = table.getFrozenColsWidth();\n const height = table.getBottomFrozenRowsHeight();\n drawClipRect(context, x, y, width, height);\n }\n }\n}\n\nconst precision = Math.pow(2, 24);\n\nfunction drawClipRect(context: IContext2d, x: number, y: number, width: number, height: number) {\n context.beginPath();\n\n const matrix = context.applyedMatrix;\n if (Math.abs(matrix.f) > precision || Math.abs(matrix.g) > precision) {\n // hack for precision problem in CanvasRenderingContext2D\n // if position is too big, disable clip\n context.rect(x - precision, y - precision, width + precision * 2, height + precision * 2);\n } else {\n context.rect(x, y, width, height);\n }\n}\n\n// @injectable()\n// export class ClipBodyGroupAfterRenderContribution implements IGroupRenderContribution {\n// time: BaseRenderContributionTime = BaseRenderContributionTime.afterFillStroke;\n// useStyle = true;\n// order = 0;\n// drawShape(\n// group: IGroup,\n// context: IContext2d,\n// x: number,\n// y: number,\n// doFill: boolean,\n// doStroke: boolean,\n// fVisible: boolean,\n// sVisible: boolean,\n// groupAttribute: Required<IGroupGraphicAttribute>,\n// drawContext: IDrawContext,\n// fillCb?: (\n// ctx: IContext2d,\n// markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n// themeAttribute: IThemeAttribute\n// ) => boolean,\n// strokeCb?: (\n// ctx: IContext2d,\n// markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n// themeAttribute: IThemeAttribute\n// ) => boolean\n// ) {\n// // 处理hover颜色\n// if ((group as Group).role === 'body') {\n// }\n// }\n// }\n\nfunction getCellSizeForDraw(group: any, width: number, height: number, bottomRight: boolean) {\n const table = group.stage.table as BaseTableAPI;\n if (!table) {\n return { width, height };\n }\n if (group.role === 'cell') {\n let col = group.col as number;\n let row = group.row as number;\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo) {\n col = mergeInfo.end.col;\n row = mergeInfo.end.row;\n }\n\n if (col === table.colCount - 1 && !bottomRight) {\n width -= 1;\n } else if (col === table.frozenColCount - 1 && table.scrollLeft && !bottomRight) {\n width -= 1;\n } else if (col === 0 && bottomRight) {\n width -= 1;\n }\n if (row === table.rowCount - 1 && !bottomRight) {\n height -= 1;\n } else if (row === table.frozenRowCount - 1 && table.scrollTop && !bottomRight) {\n height -= 1;\n } else if (row === 0 && bottomRight) {\n height -= 1;\n }\n } else if (group.role === 'corner-frozen') {\n if (table.scrollLeft && !bottomRight) {\n width -= 1;\n }\n if (table.scrollTop && !bottomRight) {\n height -= 1;\n }\n }\n\n return { width, height };\n}\n\nfunction getQuadLineDash(lineDash: number[][]) {\n if (lineDash.length === 1) {\n return [lineDash[0], lineDash[0], lineDash[0], lineDash[0]];\n } else if (lineDash.length === 2) {\n return [lineDash[0], lineDash[1], lineDash[0], lineDash[1]];\n }\n // 不考虑三个数的情况,三个数是用户传错了\n return lineDash;\n}\n"]}
|
|
@@ -28,7 +28,7 @@ export function dealFrozen(scene) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export function resetFrozen(scene) {
|
|
31
|
-
var _a, _b;
|
|
31
|
+
var _a, _b, _c, _d;
|
|
32
32
|
if (scene.frozenColCount > scene.table.frozenColCount) {
|
|
33
33
|
scene.bodyGroup.setAttribute("height", scene.rowHeaderGroup.attribute.height), scene.bodyGroup.setAttribute("y", scene.rowHeaderGroup.attribute.y),
|
|
34
34
|
scene.colHeaderGroup.setAttribute("height", scene.cornerHeaderGroup.attribute.height);
|
|
@@ -43,8 +43,8 @@ export function resetFrozen(scene) {
|
|
|
43
43
|
updateReactComponentContainer(scene), scene.deleteAllSelectBorder(), scene.table.stateManager.select.ranges.forEach((range => {
|
|
44
44
|
scene.updateCellSelectBorder(range);
|
|
45
45
|
})), scene.frozenColCount = scene.table.frozenColCount, scene.frozenRowCount = null !== (_b = null === (_a = scene.colHeaderGroup.firstChild) || void 0 === _a ? void 0 : _a.childrenCount) && void 0 !== _b ? _b : 0,
|
|
46
|
-
scene.proxy.colStart =
|
|
47
|
-
scene.colHeaderGroup.setAttribute("x", scene.cornerHeaderGroup.attribute.width),
|
|
46
|
+
scene.proxy.colStart = null !== (_d = null === (_c = scene.bodyGroup.firstChild) || void 0 === _c ? void 0 : _c.col) && void 0 !== _d ? _d : scene.table.frozenColCount,
|
|
47
|
+
scene.bodyGroup.setAttribute("x", scene.rowHeaderGroup.attribute.width), scene.colHeaderGroup.setAttribute("x", scene.cornerHeaderGroup.attribute.width),
|
|
48
48
|
scene.updateContainer(), scene.updateBorderSizeAndPosition(), scene.isPivot || scene.table.transpose ? scene.table.options.frozenColCount ? scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1) : scene.table.options.rightFrozenColCount && scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount) : (scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1),
|
|
49
49
|
scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount)),
|
|
50
50
|
scene.hasFrozen = !0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/layout/frozen.ts"],"names":[],"mappings":"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","file":"frozen.js","sourcesContent":["import { getStyleTheme } from '../../core/tableHelper';\nimport { getTargetCell } from '../../event/util';\nimport { Group } from '../graphic/group';\nimport { createColGroup } from '../group-creater/column';\nimport type { Scenegraph } from '../scenegraph';\nimport { getProp } from '../utils/get-prop';\nimport { table } from 'console';\nimport { updateReactComponentContainer } from './frozen-react';\n\nexport function dealFrozen(scene: Scenegraph) {\n if (scene.table.frozenColCount > scene.table.rowHeaderLevelCount) {\n // 将对应列移入rowHeaderGroup\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.table.rowHeaderLevelCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n } else if (scene.table.frozenColCount < scene.table.rowHeaderLevelCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.rowHeaderLevelCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n }\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n scene.hasFrozen = true;\n\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount = scene.colHeaderGroup.firstChild?.childrenCount ?? 0;\n}\n\nexport function resetFrozen(scene: Scenegraph) {\n if (scene.frozenColCount > scene.table.frozenColCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.frozenColCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n } else if (scene.frozenColCount < scene.table.frozenColCount) {\n // move columnGroup from bodyGroup into rowHeaderGroup(from colHeaderGroup into cornerHeaderGroup)\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.frozenColCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n }\n\n updateReactComponentContainer(scene);\n\n scene.deleteAllSelectBorder();\n scene.table.stateManager.select.ranges.forEach(range => {\n scene.updateCellSelectBorder(range);\n });\n\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount = scene.colHeaderGroup.firstChild?.childrenCount ?? 0;\n scene.proxy.colStart = scene.table.frozenColCount;\n\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n // scene.updateContainerAttrWidthAndX();\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.rightFrozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n scene.hasFrozen = true;\n}\n\nfunction moveColumnFromBodyToRowHeader(scene: Scenegraph) {\n // deal with bodyGroup\n const column = scene.bodyGroup.firstChild instanceof Group ? scene.bodyGroup.firstChild : null;\n if (column) {\n scene.rowHeaderGroup.appendChild(column);\n // update container width\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width + column.attribute.width);\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromColHeaderToCornerHeader(scene: Scenegraph) {\n // deal width colHeaderGroup\n const headerColumn = scene.colHeaderGroup.firstChild instanceof Group ? scene.colHeaderGroup.firstChild : null;\n if (headerColumn) {\n scene.cornerHeaderGroup.appendChild(headerColumn);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width + headerColumn.attribute.width\n );\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width - headerColumn.attribute.width);\n }\n}\n\nfunction moveColumnFromRowHeaderToBody(scene: Scenegraph) {\n const column =\n scene.rowHeaderGroup.lastChild instanceof Group\n ? scene.rowHeaderGroup.lastChild\n : (scene.rowHeaderGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bodyGroup, column, scene.bodyGroup.firstChild as Group);\n // 更新容器宽度\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width + column.attribute.width);\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromCornerHeaderToColHeader(scene: Scenegraph) {\n // 处理列表头\n const headerColumn =\n scene.cornerHeaderGroup.lastChild instanceof Group\n ? scene.cornerHeaderGroup.lastChild\n : (scene.cornerHeaderGroup.lastChild?._prev as Group);\n if (headerColumn) {\n insertBefore(scene.colHeaderGroup, headerColumn, scene.colHeaderGroup.firstChild as Group);\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width + headerColumn.attribute.width);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width - headerColumn.attribute.width\n );\n }\n}\n\nfunction moveColumnFromBottomToLeftBottomCorner(scene: Scenegraph) {\n // deal with bottomFrozenGroup\n const column = scene.bottomFrozenGroup.firstChild instanceof Group ? scene.bottomFrozenGroup.firstChild : null;\n if (column) {\n scene.leftBottomCornerGroup.appendChild(column);\n // update container width\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width + column.attribute.width\n );\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width - column.attribute.width);\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n child.setAttributes({\n stroke: false,\n fill: false\n });\n });\n }\n }\n}\n\nfunction moveColumnFromLeftBottomCornerToBottom(scene: Scenegraph) {\n const column =\n scene.leftBottomCornerGroup.lastChild instanceof Group\n ? scene.leftBottomCornerGroup.lastChild\n : (scene.leftBottomCornerGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bottomFrozenGroup, column, scene.bottomFrozenGroup.firstChild as Group);\n // 更新容器宽度\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width + column.attribute.width);\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width - column.attribute.width\n );\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n const cellStyle = scene.table._getCellStyle(child.col, child.row);\n const range = scene.table.getCellRange(child.col, child.row);\n const cellTheme = getStyleTheme(\n cellStyle,\n scene.table,\n range ? range.start.col : child.col,\n range ? range.start.row : child.row,\n getProp\n ).theme;\n\n child.setAttributes({\n fill: cellTheme?.group?.fill ?? undefined,\n stroke: cellTheme?.group?.stroke ?? undefined\n });\n });\n }\n }\n}\n\nexport function dealRightFrozen(distRightFrozenCol: number, scene: Scenegraph) {\n const {\n table,\n proxy,\n rightTopCornerGroup,\n rightFrozenGroup,\n rightBottomCornerGroup,\n bottomFrozenGroup,\n bodyGroup,\n colHeaderGroup\n } = scene;\n // const distRightFrozenCol = scene.table.rightFrozenColCount;\n const currentRightFrozenCol = scene.table.rightFrozenColCount;\n if (distRightFrozenCol > currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol - 1; col >= table.colCount - distRightFrozenCol; col--) {\n const colGroup = scene.getColGroup(col);\n insertBefore(rightFrozenGroup, colGroup, rightFrozenGroup.firstChild as Group);\n const headerColGroup = scene.getColGroup(col, true);\n insertBefore(rightTopCornerGroup, headerColGroup, rightTopCornerGroup.firstChild as Group);\n const bottomColGroup = scene.getColGroupInBottom(col);\n insertBefore(rightBottomCornerGroup, bottomColGroup, rightBottomCornerGroup.firstChild as Group);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n } else if (distRightFrozenCol < currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol; col < table.colCount - distRightFrozenCol; col++) {\n const colGroup = scene.getColGroup(col);\n colGroup.setAttribute(\n 'x',\n (bodyGroup.lastChild as Group).attribute.x + table.getColWidth((bodyGroup.lastChild as Group).col)\n );\n bodyGroup.appendChild(colGroup);\n const headerColGroup = scene.getColGroupInRightTopCorner(col);\n headerColGroup.setAttribute(\n 'x',\n (colHeaderGroup.lastChild as Group).attribute.x + table.getColWidth((colHeaderGroup.lastChild as Group).col)\n );\n colHeaderGroup.appendChild(headerColGroup);\n const bottomColGroup = scene.getColGroupInRightBottomCorner(col);\n bottomColGroup.setAttribute(\n 'x',\n (bottomFrozenGroup.lastChild as Group).attribute.x +\n table.getColWidth((bottomFrozenGroup.lastChild as Group).col)\n );\n bottomFrozenGroup.appendChild(bottomColGroup);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n }\n\n // reset right width\n rightFrozenGroup.setAttribute('width', table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1));\n rightTopCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n\n table.internalProps.rightFrozenColCount = distRightFrozenCol;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nexport function dealBottomFrozen(distBottomFrozenRow: number, scene: Scenegraph) {\n const { table, proxy, bottomFrozenGroup, leftBottomCornerGroup, rightBottomCornerGroup } = scene;\n if (!bottomFrozenGroup.childrenCount) {\n // init bottom\n if (!proxy.table.isPivotChart()) {\n // create left bottom frozen\n createColGroup(\n leftBottomCornerGroup,\n 0,\n 0,\n 0, // colStart\n table.frozenColCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n createColGroup(\n rightBottomCornerGroup,\n 0,\n 0,\n table.colCount - table.rightFrozenColCount, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n // create bottomFrozenGroup\n createColGroup(\n bottomFrozenGroup,\n 0,\n 0,\n proxy.colStart, // colStart\n proxy.colEnd, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n const currentBottomFrozenRow = scene.table.bottomFrozenRowCount;\n if (distBottomFrozenRow > currentBottomFrozenRow) {\n // row header -> left bottom\n for (let col = 0; col < table.frozenColCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // body -> bottom\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right -> right bottom\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n // move cell\n for (\n let row = table.rowCount - currentBottomFrozenRow - 1;\n row >= table.rowCount - distBottomFrozenRow;\n row--\n ) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n } else if (distBottomFrozenRow < currentBottomFrozenRow) {\n // left bottom -> row header\n for (let col = 0; col < table.rowHeaderLevelCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // bottom -> body\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right bottom -> right\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n }\n // reset bottom height\n bottomFrozenGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n leftBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n\n table.internalProps.bottomFrozenRowCount = distBottomFrozenRow;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nfunction insertBefore(container: Group, newNode: Group, targetGroup: Group) {\n if (!newNode || !container) {\n return;\n }\n if (targetGroup) {\n container.insertBefore(newNode, targetGroup);\n } else {\n container.appendChild(newNode);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/layout/frozen.ts"],"names":[],"mappings":"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","file":"frozen.js","sourcesContent":["import { getStyleTheme } from '../../core/tableHelper';\nimport { getTargetCell } from '../../event/util';\nimport { Group } from '../graphic/group';\nimport { createColGroup } from '../group-creater/column';\nimport type { Scenegraph } from '../scenegraph';\nimport { getProp } from '../utils/get-prop';\nimport { table } from 'console';\nimport { updateReactComponentContainer } from './frozen-react';\n\nexport function dealFrozen(scene: Scenegraph) {\n if (scene.table.frozenColCount > scene.table.rowHeaderLevelCount) {\n // 将对应列移入rowHeaderGroup\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.table.rowHeaderLevelCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n } else if (scene.table.frozenColCount < scene.table.rowHeaderLevelCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.rowHeaderLevelCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n }\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n scene.hasFrozen = true;\n\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount = scene.colHeaderGroup.firstChild?.childrenCount ?? 0;\n}\n\nexport function resetFrozen(scene: Scenegraph) {\n if (scene.frozenColCount > scene.table.frozenColCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.frozenColCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n } else if (scene.frozenColCount < scene.table.frozenColCount) {\n // move columnGroup from bodyGroup into rowHeaderGroup(from colHeaderGroup into cornerHeaderGroup)\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.frozenColCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n }\n\n updateReactComponentContainer(scene);\n\n scene.deleteAllSelectBorder();\n scene.table.stateManager.select.ranges.forEach(range => {\n scene.updateCellSelectBorder(range);\n });\n\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount = scene.colHeaderGroup.firstChild?.childrenCount ?? 0;\n // scene.proxy.colStart = scene.table.frozenColCount;\n scene.proxy.colStart = (scene.bodyGroup.firstChild as any)?.col ?? scene.table.frozenColCount;\n\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n // scene.updateContainerAttrWidthAndX();\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.rightFrozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n scene.hasFrozen = true;\n}\n\nfunction moveColumnFromBodyToRowHeader(scene: Scenegraph) {\n // deal with bodyGroup\n const column = scene.bodyGroup.firstChild instanceof Group ? scene.bodyGroup.firstChild : null;\n if (column) {\n scene.rowHeaderGroup.appendChild(column);\n // update container width\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width + column.attribute.width);\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromColHeaderToCornerHeader(scene: Scenegraph) {\n // deal width colHeaderGroup\n const headerColumn = scene.colHeaderGroup.firstChild instanceof Group ? scene.colHeaderGroup.firstChild : null;\n if (headerColumn) {\n scene.cornerHeaderGroup.appendChild(headerColumn);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width + headerColumn.attribute.width\n );\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width - headerColumn.attribute.width);\n }\n}\n\nfunction moveColumnFromRowHeaderToBody(scene: Scenegraph) {\n const column =\n scene.rowHeaderGroup.lastChild instanceof Group\n ? scene.rowHeaderGroup.lastChild\n : (scene.rowHeaderGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bodyGroup, column, scene.bodyGroup.firstChild as Group);\n // 更新容器宽度\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width + column.attribute.width);\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromCornerHeaderToColHeader(scene: Scenegraph) {\n // 处理列表头\n const headerColumn =\n scene.cornerHeaderGroup.lastChild instanceof Group\n ? scene.cornerHeaderGroup.lastChild\n : (scene.cornerHeaderGroup.lastChild?._prev as Group);\n if (headerColumn) {\n insertBefore(scene.colHeaderGroup, headerColumn, scene.colHeaderGroup.firstChild as Group);\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width + headerColumn.attribute.width);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width - headerColumn.attribute.width\n );\n }\n}\n\nfunction moveColumnFromBottomToLeftBottomCorner(scene: Scenegraph) {\n // deal with bottomFrozenGroup\n const column = scene.bottomFrozenGroup.firstChild instanceof Group ? scene.bottomFrozenGroup.firstChild : null;\n if (column) {\n scene.leftBottomCornerGroup.appendChild(column);\n // update container width\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width + column.attribute.width\n );\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width - column.attribute.width);\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n child.setAttributes({\n stroke: false,\n fill: false\n });\n });\n }\n }\n}\n\nfunction moveColumnFromLeftBottomCornerToBottom(scene: Scenegraph) {\n const column =\n scene.leftBottomCornerGroup.lastChild instanceof Group\n ? scene.leftBottomCornerGroup.lastChild\n : (scene.leftBottomCornerGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bottomFrozenGroup, column, scene.bottomFrozenGroup.firstChild as Group);\n // 更新容器宽度\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width + column.attribute.width);\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width - column.attribute.width\n );\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n const cellStyle = scene.table._getCellStyle(child.col, child.row);\n const range = scene.table.getCellRange(child.col, child.row);\n const cellTheme = getStyleTheme(\n cellStyle,\n scene.table,\n range ? range.start.col : child.col,\n range ? range.start.row : child.row,\n getProp\n ).theme;\n\n child.setAttributes({\n fill: cellTheme?.group?.fill ?? undefined,\n stroke: cellTheme?.group?.stroke ?? undefined\n });\n });\n }\n }\n}\n\nexport function dealRightFrozen(distRightFrozenCol: number, scene: Scenegraph) {\n const {\n table,\n proxy,\n rightTopCornerGroup,\n rightFrozenGroup,\n rightBottomCornerGroup,\n bottomFrozenGroup,\n bodyGroup,\n colHeaderGroup\n } = scene;\n // const distRightFrozenCol = scene.table.rightFrozenColCount;\n const currentRightFrozenCol = scene.table.rightFrozenColCount;\n if (distRightFrozenCol > currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol - 1; col >= table.colCount - distRightFrozenCol; col--) {\n const colGroup = scene.getColGroup(col);\n insertBefore(rightFrozenGroup, colGroup, rightFrozenGroup.firstChild as Group);\n const headerColGroup = scene.getColGroup(col, true);\n insertBefore(rightTopCornerGroup, headerColGroup, rightTopCornerGroup.firstChild as Group);\n const bottomColGroup = scene.getColGroupInBottom(col);\n insertBefore(rightBottomCornerGroup, bottomColGroup, rightBottomCornerGroup.firstChild as Group);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n } else if (distRightFrozenCol < currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol; col < table.colCount - distRightFrozenCol; col++) {\n const colGroup = scene.getColGroup(col);\n colGroup.setAttribute(\n 'x',\n (bodyGroup.lastChild as Group).attribute.x + table.getColWidth((bodyGroup.lastChild as Group).col)\n );\n bodyGroup.appendChild(colGroup);\n const headerColGroup = scene.getColGroupInRightTopCorner(col);\n headerColGroup.setAttribute(\n 'x',\n (colHeaderGroup.lastChild as Group).attribute.x + table.getColWidth((colHeaderGroup.lastChild as Group).col)\n );\n colHeaderGroup.appendChild(headerColGroup);\n const bottomColGroup = scene.getColGroupInRightBottomCorner(col);\n bottomColGroup.setAttribute(\n 'x',\n (bottomFrozenGroup.lastChild as Group).attribute.x +\n table.getColWidth((bottomFrozenGroup.lastChild as Group).col)\n );\n bottomFrozenGroup.appendChild(bottomColGroup);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n }\n\n // reset right width\n rightFrozenGroup.setAttribute('width', table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1));\n rightTopCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n\n table.internalProps.rightFrozenColCount = distRightFrozenCol;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nexport function dealBottomFrozen(distBottomFrozenRow: number, scene: Scenegraph) {\n const { table, proxy, bottomFrozenGroup, leftBottomCornerGroup, rightBottomCornerGroup } = scene;\n if (!bottomFrozenGroup.childrenCount) {\n // init bottom\n if (!proxy.table.isPivotChart()) {\n // create left bottom frozen\n createColGroup(\n leftBottomCornerGroup,\n 0,\n 0,\n 0, // colStart\n table.frozenColCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n createColGroup(\n rightBottomCornerGroup,\n 0,\n 0,\n table.colCount - table.rightFrozenColCount, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n // create bottomFrozenGroup\n createColGroup(\n bottomFrozenGroup,\n 0,\n 0,\n proxy.colStart, // colStart\n proxy.colEnd, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n const currentBottomFrozenRow = scene.table.bottomFrozenRowCount;\n if (distBottomFrozenRow > currentBottomFrozenRow) {\n // row header -> left bottom\n for (let col = 0; col < table.frozenColCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // body -> bottom\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right -> right bottom\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n // move cell\n for (\n let row = table.rowCount - currentBottomFrozenRow - 1;\n row >= table.rowCount - distBottomFrozenRow;\n row--\n ) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n } else if (distBottomFrozenRow < currentBottomFrozenRow) {\n // left bottom -> row header\n for (let col = 0; col < table.rowHeaderLevelCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // bottom -> body\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right bottom -> right\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n }\n // reset bottom height\n bottomFrozenGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n leftBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n\n table.internalProps.bottomFrozenRowCount = distBottomFrozenRow;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nfunction insertBefore(container: Group, newNode: Group, targetGroup: Group) {\n if (!newNode || !container) {\n return;\n }\n if (targetGroup) {\n container.insertBefore(newNode, targetGroup);\n } else {\n container.appendChild(newNode);\n }\n}\n"]}
|
|
@@ -18,7 +18,7 @@ export const initTextMeasure = (textSpec, option, useNaiveCanvas) => new TextMea
|
|
|
18
18
|
fontSize: DefaultTextStyle.fontSize
|
|
19
19
|
},
|
|
20
20
|
getTextBounds: useNaiveCanvas ? void 0 : getTextBounds,
|
|
21
|
-
specialCharSet: `{}()//&-/: .,@%'"
|
|
21
|
+
specialCharSet: `{}()//&-/: .,@%'"~…=——${TextMeasure.ALPHABET_CHAR_SET}${TextMeasure.ALPHABET_CHAR_SET.toUpperCase()}0123456789${customAlphabetCharSet}`
|
|
22
22
|
}, null != option ? option : {}), textSpec);
|
|
23
23
|
|
|
24
24
|
const fastTextMeasureCache = new Map;
|
|
@@ -37,7 +37,7 @@ function getFastTextMeasure(fontSize, fontWeight, fontFamily, fontStyle = "norma
|
|
|
37
37
|
fontSize: DefaultTextStyle.fontSize
|
|
38
38
|
},
|
|
39
39
|
getTextBounds: useNaiveCanvas ? void 0 : getTextBounds,
|
|
40
|
-
specialCharSet: `{}()//&-/: .,@%'"
|
|
40
|
+
specialCharSet: `{}()//&-/: .,@%'"~…=——${TextMeasure.ALPHABET_CHAR_SET}${TextMeasure.ALPHABET_CHAR_SET.toUpperCase()}0123456789${customAlphabetCharSet}`
|
|
41
41
|
}, null != option ? option : {}), textSpec));
|
|
42
42
|
var textSpec, option, useNaiveCanvas;
|
|
43
43
|
return fastTextMeasureCache.set(key, fastTextMeasure), fastTextMeasure;
|