@visactor/vtable 1.17.4-alpha.5 → 1.17.4-alpha.6
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 +2 -10
- package/cjs/ListTable.js.map +1 -1
- package/cjs/body-helper/style/ProgressBarStyle.d.ts +0 -3
- package/cjs/body-helper/style/ProgressBarStyle.js +2 -9
- package/cjs/body-helper/style/ProgressBarStyle.js.map +1 -1
- package/cjs/core/BaseTable.js +3 -15
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/tableHelper.js +10 -13
- package/cjs/core/tableHelper.js.map +1 -1
- package/cjs/edit/edit-manager.js +0 -2
- package/cjs/edit/edit-manager.js.map +1 -1
- package/cjs/event/event.js +1 -2
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/self-event-listener/list-table/checkbox.d.ts +0 -1
- package/cjs/event/self-event-listener/list-table/checkbox.js +12 -54
- package/cjs/event/self-event-listener/list-table/checkbox.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/scenegraph/graphic/chart.d.ts +2 -2
- package/cjs/scenegraph/graphic/chart.js +1 -1
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +3 -3
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/index.js +4 -2
- package/cjs/scenegraph/graphic/contributions/index.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/picker-interceptor.d.ts +8 -0
- package/cjs/scenegraph/graphic/contributions/picker-interceptor.js +42 -0
- package/cjs/scenegraph/graphic/contributions/picker-interceptor.js.map +1 -0
- package/cjs/scenegraph/graphic/contributions/vchart-graphic-picker.d.ts +6 -0
- package/cjs/scenegraph/graphic/contributions/vchart-graphic-picker.js +31 -0
- package/cjs/scenegraph/graphic/contributions/vchart-graphic-picker.js.map +1 -0
- package/cjs/scenegraph/group-creater/cell-helper.js +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/button-cell.js +1 -3
- package/cjs/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +5 -9
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/cjs/scenegraph/select/update-select-border.js +1 -2
- package/cjs/scenegraph/select/update-select-border.js.map +1 -1
- package/cjs/state/checkbox/checkbox.js +2 -9
- package/cjs/state/checkbox/checkbox.js.map +1 -1
- package/cjs/state/hover/update-position.js +3 -1
- package/cjs/state/hover/update-position.js.map +1 -1
- package/cjs/themes/theme.js +0 -4
- package/cjs/themes/theme.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +1 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/column/style.d.ts +0 -1
- package/cjs/ts-types/column/style.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +0 -1
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/ts-types/theme.d.ts +0 -1
- package/cjs/ts-types/theme.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +69 -175
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.js +2 -10
- package/es/ListTable.js.map +1 -1
- package/es/body-helper/style/ProgressBarStyle.d.ts +0 -3
- package/es/body-helper/style/ProgressBarStyle.js +2 -9
- package/es/body-helper/style/ProgressBarStyle.js.map +1 -1
- package/es/core/BaseTable.js +3 -15
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/tableHelper.js +10 -13
- package/es/core/tableHelper.js.map +1 -1
- package/es/edit/edit-manager.js +0 -2
- package/es/edit/edit-manager.js.map +1 -1
- package/es/event/event.js +2 -3
- package/es/event/event.js.map +1 -1
- package/es/event/self-event-listener/list-table/checkbox.d.ts +0 -1
- package/es/event/self-event-listener/list-table/checkbox.js +10 -52
- package/es/event/self-event-listener/list-table/checkbox.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/scenegraph/graphic/chart.d.ts +2 -2
- package/es/scenegraph/graphic/chart.js +2 -2
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render-helper.js +3 -3
- package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/es/scenegraph/graphic/contributions/index.js +5 -2
- package/es/scenegraph/graphic/contributions/index.js.map +1 -1
- package/es/scenegraph/graphic/contributions/picker-interceptor.d.ts +8 -0
- package/es/scenegraph/graphic/contributions/picker-interceptor.js +37 -0
- package/es/scenegraph/graphic/contributions/picker-interceptor.js.map +1 -0
- package/es/scenegraph/graphic/contributions/vchart-graphic-picker.d.ts +6 -0
- package/es/scenegraph/graphic/contributions/vchart-graphic-picker.js +29 -0
- package/es/scenegraph/graphic/contributions/vchart-graphic-picker.js.map +1 -0
- package/es/scenegraph/group-creater/cell-helper.js +1 -1
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/button-cell.js +1 -3
- package/es/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +5 -9
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/es/scenegraph/select/update-select-border.js +1 -2
- package/es/scenegraph/select/update-select-border.js.map +1 -1
- package/es/state/checkbox/checkbox.js +2 -9
- package/es/state/checkbox/checkbox.js.map +1 -1
- package/es/state/hover/update-position.js +3 -1
- package/es/state/hover/update-position.js.map +1 -1
- package/es/themes/theme.js +0 -4
- package/es/themes/theme.js.map +1 -1
- package/es/ts-types/base-table.d.ts +1 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/column/style.d.ts +0 -1
- package/es/ts-types/column/style.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +0 -1
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/ts-types/theme.d.ts +0 -1
- package/es/ts-types/theme.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/group-creater/cell-type/progress-bar-cell.ts"],"names":[],"mappings":"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","file":"progress-bar-cell.js","sourcesContent":["import { createRect, createLine } from './../../../vrender';\nimport type { ProgressBarStyle } from '../../../body-helper/style/ProgressBarStyle';\nimport { str, getOrApply } from '../../../tools/helper';\nimport { Group } from '../../graphic/group';\nimport { getProp } from '../../utils/get-prop';\nimport { getQuadProps } from '../../utils/padding';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { isNumber } from '@visactor/vutils';\nimport type { CellRange, StylePropertyFunctionArg } from '../../../ts-types';\n\nexport function createProgressBarCell(\n progressBarDefine: {\n min?: number | ((args: StylePropertyFunctionArg) => number);\n max?: number | ((args: StylePropertyFunctionArg) => number);\n barType?: 'default' | 'negative' | 'negative_no_axis'; // 进度图类型\n dependField?: string; // 指定其他列数据(风神使用),\n },\n style: ProgressBarStyle,\n width: number,\n // height: number,\n value: string,\n dataValue: string,\n col: number,\n row: number,\n padding: [number, number, number, number],\n table: BaseTableAPI,\n range?: CellRange\n) {\n if (progressBarDefine.dependField) {\n const dependField = getOrApply(progressBarDefine.dependField, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n });\n dataValue = (table.getCellOriginRecord(col, row) as any)?.[dependField] ?? dataValue;\n }\n\n const barType =\n getOrApply(progressBarDefine.barType, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n }) ?? 'default';\n\n const min: number =\n getOrApply(progressBarDefine.min, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n }) ?? 0;\n const max: number =\n getOrApply(progressBarDefine.max, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n }) ?? min + 100;\n\n let height = 0;\n if (range) {\n height = table.getRowsHeight(range.start.row, range.end.row);\n } else {\n height = table.getRowHeight(row);\n }\n let contentWidth = width;\n let contentHeight = height;\n let _contentOffset = 0;\n if (isNumber(table.theme._contentOffset)) {\n _contentOffset = table.theme._contentOffset;\n }\n const percentCompleteBarGroup = new Group({\n x: -_contentOffset,\n y: -_contentOffset,\n width: contentWidth,\n height: contentHeight\n });\n percentCompleteBarGroup.name = 'progress-bar';\n\n const {\n showBar,\n barColor,\n barBgColor,\n // bgColor,\n barPositiveColor,\n barNegativeColor,\n barAxisColor,\n barRightToLeft,\n showBarMark,\n barMarkPositiveColor,\n barMarkNegativeColor,\n barMarkWidth,\n barMarkPosition,\n barMarkInBar\n } = style;\n let { barHeight, barBottom, barPadding } = style;\n // const { col, row, dataValue: originalValue } = context;\n\n // 完善四元组\n if (barPadding.length === 1) {\n barPadding = [barPadding[0], barPadding[0], barPadding[0], barPadding[0]];\n } else if (barPadding.length === 2) {\n barPadding = [barPadding[0], barPadding[1], barPadding[0], barPadding[1]];\n } else if (barPadding.length === 3) {\n barPadding = [barPadding[0], barPadding[1], barPadding[2], barPadding[1]];\n }\n\n // 将百分比值转换为数值\n barPadding = barPadding.map((v, i) => {\n if (typeof v === 'string' && str.endsWith(v, '%')) {\n const num = Number(v.substr(0, v.length - 1));\n if (i === 0 || i === 2) {\n return (height * num) / 100;\n }\n return (width * num) / 100;\n }\n return Number(v);\n });\n\n const borderWidth = getQuadProps(getProp('borderLineWidth', style, col, row, table));\n const barPaddingTop = Math.max((barPadding as number[])[0], Math.ceil(borderWidth[0] / 2));\n let barPaddingRight = Math.max((barPadding as number[])[1], Math.floor(borderWidth[1] / 2));\n const barPaddingBottom = Math.max((barPadding as number[])[2], Math.floor(borderWidth[2] / 2));\n let barPaddingLeft = Math.max((barPadding as number[])[3], Math.ceil(borderWidth[3] / 2));\n\n if (showBarMark && barMarkWidth > 0 && barMarkPosition === 'right' && barMarkInBar === false) {\n barPaddingRight += barMarkWidth;\n barPaddingLeft += barMarkWidth;\n }\n\n contentWidth -= barPaddingRight + barPaddingLeft;\n contentHeight -= barPaddingBottom + barPaddingTop;\n if (row === table.rowCount - 1 && [0, '0'].includes(barBottom)) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n contentHeight -= 1;\n }\n\n // if (barPaddingTop & 1) {\n // // barPaddingTop += 0.5;\n // contentWidth += borderWidth[0];\n // }\n // if (barPaddingLeft & 1) {\n // // barPaddingLeft += 0.5;\n // contentHeight += borderWidth[0];\n // }\n\n const top = barPaddingTop;\n const left = barPaddingLeft;\n const right = contentWidth;\n const bottom = contentHeight;\n\n if (typeof barHeight === 'string' && str.endsWith(barHeight, '%')) {\n barHeight = Number(barHeight.substr(0, barHeight.length - 1));\n barHeight = (contentHeight * barHeight) / 100;\n } else {\n barHeight = Number(barHeight);\n }\n if (typeof barBottom === 'string' && str.endsWith(barBottom, '%')) {\n barBottom = Number(barBottom.substr(0, barBottom.length - 1));\n barBottom = (contentHeight * barBottom) / 100;\n } else {\n barBottom = Number(barBottom);\n }\n\n const show = getOrApply(showBar as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue\n });\n\n if (show) {\n let svalue = `${dataValue}`;\n if (str.endsWith(svalue, '%')) {\n svalue = svalue.substr(0, svalue.length - 1);\n }\n const num = Number(svalue);\n if (isNaN(num)) {\n return percentCompleteBarGroup;\n }\n\n if ((barType ?? 'default') === 'default') {\n const percentile = num < min ? 0 : num > max ? 1 : (num - min) / (max - min);\n\n const barMaxWidth = contentWidth;\n const barTop = top + contentHeight - (barHeight as number) - (barBottom as number);\n // const barLeft = 0 + barPaddingLeft;\n let barSize = Math.min(barMaxWidth * percentile, barMaxWidth);\n const barLeft = barRightToLeft ? left + right - barSize : left;\n if (col === table.colCount - 1 && percentile === 1 && !barRightToLeft) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n barSize -= 1;\n }\n const bgFillColor = getOrApply(barBgColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n });\n\n if (bgFillColor) {\n const barBack = createRect({\n x: barLeft,\n y: barTop,\n width: barMaxWidth,\n height: barHeight,\n fill: bgFillColor\n });\n percentCompleteBarGroup.addChild(barBack);\n }\n\n const fillColor =\n getOrApply(barColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n const barMain = createRect({\n x: barLeft,\n y: barTop,\n width: barSize,\n height: barHeight,\n fill: fillColor\n });\n percentCompleteBarGroup.addChild(barMain);\n } else if (barType === 'negative') {\n // negative模式参考风神现有数据条样式,显示坐标轴和正负数据条\n // 计算坐标轴位置\n const negativeRange = min < 0 ? -min : 0;\n const positiveRange = max > 0 ? max : 0;\n\n const negativeFactor = negativeRange / (negativeRange + positiveRange);\n const positiveFactor = 1 - negativeFactor;\n\n // 计算rate\n const positiveRate = num > 0 ? num / positiveRange : 0;\n const negativeRate = num < 0 ? -num / negativeRange : 0;\n\n // 绘制\n // 绘制背景\n const barMaxWidth = contentWidth;\n const barTop = top + contentHeight - (barHeight as number) - (barBottom as number);\n const barLeft = left;\n const bgFillColor = getOrApply(barBgColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n });\n if (bgFillColor) {\n const barBack = createRect({\n x: barLeft,\n y: barTop,\n width: barMaxWidth,\n height: barHeight,\n fill: bgFillColor\n });\n percentCompleteBarGroup.addChild(barBack);\n }\n\n // 坐标轴距离左侧边界距离\n const positiveLeft = barRightToLeft ? positiveFactor * barMaxWidth : negativeFactor * barMaxWidth;\n\n // 绘制负值区域\n const barSizeNega = Math.min(barMaxWidth * negativeFactor * negativeRate, barMaxWidth);\n const barRectNega = barRightToLeft\n ? {\n left: barLeft + positiveLeft,\n top: barTop,\n width: barSizeNega,\n height: barHeight as number\n }\n : {\n left: barLeft + positiveLeft - barSizeNega,\n top: barTop,\n width: barSizeNega,\n height: barHeight as number\n };\n const barNagiFillColor =\n getOrApply(barNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: negativeRate\n }) || '#20a8d8';\n const barNega = createRect({\n x: barRectNega.left,\n y: barRectNega.top,\n width: barRectNega.width,\n height: barRectNega.height,\n fill: barNagiFillColor\n });\n percentCompleteBarGroup.addChild(barNega);\n\n // 绘制正值区域\n let barSizePosi = Math.min(barMaxWidth * positiveFactor * positiveRate, barMaxWidth);\n if (col === table.colCount - 1 && positiveRate === 1 && !barRightToLeft) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n barSizePosi -= 1;\n }\n const barRectPosi = barRightToLeft\n ? {\n left: barLeft + positiveLeft - barSizePosi,\n top: barTop,\n width: barSizePosi,\n height: barHeight as number\n }\n : {\n left: barLeft + positiveLeft,\n top: barTop,\n width: barSizePosi,\n height: barHeight as number\n };\n const barPosiFillColor =\n getOrApply(barPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n }) || '#20a8d8';\n const barPosi = createRect({\n x: barRectPosi.left,\n y: barRectPosi.top,\n width: barRectPosi.width,\n height: barRectPosi.height,\n fill: barPosiFillColor\n });\n percentCompleteBarGroup.addChild(barPosi);\n\n // 绘制坐标轴\n const lineLeft = barRightToLeft ? barRectNega.left : barRectPosi.left;\n const lineStrokeColor = getOrApply(barAxisColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n });\n const line = createLine({\n x: 0,\n y: 0,\n stroke: lineStrokeColor,\n lineWidth: 1,\n lineDash: [2, 2],\n points: [\n { x: lineLeft, y: 0 },\n { x: lineLeft, y: height }\n ]\n });\n percentCompleteBarGroup.addChild(line);\n\n // 绘制mark\n if (showBarMark && (positiveRate || negativeRate)) {\n const lineWidth = barMarkWidth;\n const points = [];\n let barMarkStrokeColor;\n if (positiveRate > 0) {\n barMarkStrokeColor =\n getOrApply(barMarkPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n }) || '#20a8d8';\n if (barMarkPosition === 'right') {\n const markLeft = barRightToLeft\n ? barRectPosi.left + barMarkWidth / 2\n : barRectPosi.left + barRectPosi.width + (barMarkInBar ? -barMarkWidth / 2 : barMarkWidth / 2);\n points.push({ x: markLeft, y: barRectPosi.top });\n points.push({ x: markLeft, y: barRectPosi.top + barRectPosi.height });\n } else if (barMarkPosition === 'bottom') {\n points.push({\n x: barRectPosi.left,\n y: barRectPosi.top + barRectPosi.height - barMarkWidth / 2\n });\n points.push({\n x: barRectPosi.left + barRectPosi.width,\n y: barRectPosi.top + barRectPosi.height - barMarkWidth / 2\n });\n }\n } else if (negativeRate > 0) {\n barMarkStrokeColor =\n getOrApply(barMarkNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: negativeRate\n }) || '#20a8d8';\n if (barMarkPosition === 'right') {\n const markLeft = barRightToLeft\n ? barRectNega.left + barRectNega.width - barMarkWidth / 2\n : barRectNega.left + barMarkWidth / 2;\n points.push({ x: markLeft, y: barRectNega.top });\n points.push({ x: markLeft, y: barRectNega.top + barRectNega.height });\n } else if (barMarkPosition === 'bottom') {\n points.push({\n x: barRectNega.left,\n y: barRectNega.top + barRectNega.height - barMarkWidth / 2\n });\n points.push({\n x: barRectNega.left + barRectNega.width,\n y: barRectNega.top + barRectNega.height - barMarkWidth / 2\n });\n }\n }\n const barMark = createLine({\n x: 0,\n y: 0,\n stroke: barMarkStrokeColor,\n lineWidth,\n points\n });\n percentCompleteBarGroup.addChild(barMark);\n }\n } else if (barType === 'negative_no_axis') {\n // negative_no_axis模式不显示坐标轴,正负数据条同向,区分颜色\n // 计算range\n const _negativeRange = min < 0 ? -min : 0;\n const _positiveRange = max > 0 ? max : 0;\n const range = Math.max(_negativeRange, _positiveRange);\n\n // 计算rate\n const percentile = range === 0 ? 0 : Math.abs(num) / range;\n\n // 绘制\n // 绘制背景\n // const barMaxWidth = width - barPaddingLeft - barPaddingRight - 1; /*罫線*/\n const barMaxWidth = contentWidth;\n let barSize = Math.min(barMaxWidth * percentile, barMaxWidth);\n if (col === table.colCount - 1 && percentile === 1 && !barRightToLeft) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n barSize -= 1;\n }\n // const barTop = bottom - barPaddingBottom - (barHeight as number) - (barBottom as number) - 1; /*罫線*/\n const barTop = top + contentHeight - (barHeight as number) - (barBottom as number);\n // const barLeft = barRightToLeft ? right - barPaddingRight - barSize : left + barPaddingLeft;\n const barLeft = barRightToLeft ? left + right - barSize : left;\n\n const bgFillColor = getOrApply(barBgColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n });\n if (bgFillColor) {\n const barBack = createRect({\n x: barLeft,\n y: barTop,\n width: barMaxWidth,\n height: barHeight,\n fill: bgFillColor\n });\n percentCompleteBarGroup.addChild(barBack);\n }\n\n // 绘制bar\n const barRect = {\n left: barLeft,\n top: barTop,\n width: barSize,\n height: barHeight as number\n };\n let barRectFillColor;\n if (num >= 0) {\n barRectFillColor =\n getOrApply(barPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n percentile,\n dataValue\n }) || '#20a8d8';\n } else {\n barRectFillColor =\n getOrApply(barNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n }\n const bar = createRect({\n x: barRect.left,\n y: barRect.top,\n width: barRect.width,\n height: barRect.height,\n fill: barRectFillColor\n });\n percentCompleteBarGroup.addChild(bar);\n\n // 绘制mark\n if (showBarMark && num) {\n const lineWidth = barMarkWidth;\n const points = [];\n let barMarkStrokeColor;\n if (num >= 0) {\n barMarkStrokeColor =\n getOrApply(barMarkPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n } else {\n barMarkStrokeColor =\n getOrApply(barMarkNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n }\n if (barMarkPosition === 'right') {\n const markLeft = barRightToLeft\n ? barRect.left + barMarkWidth / 2\n : barRect.left + barRect.width - barMarkWidth / 2;\n points.push({ x: markLeft, y: barRect.top });\n points.push({ x: markLeft, y: barRect.top + barRect.height });\n } else if (barMarkPosition === 'bottom') {\n points.push({\n x: barRect.left,\n y: barRect.top + barRect.height - barMarkWidth / 2\n });\n points.push({\n x: barRect.left + barRect.width,\n y: barRect.top + barRect.height - barMarkWidth / 2\n });\n }\n const barMark = createLine({\n x: 0,\n y: 0,\n stroke: barMarkStrokeColor,\n lineWidth,\n points\n });\n percentCompleteBarGroup.addChild(barMark);\n }\n }\n }\n return percentCompleteBarGroup;\n}\n\nexport type CreateProgressBarCell = typeof createProgressBarCell;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/group-creater/cell-type/progress-bar-cell.ts"],"names":[],"mappings":";;;AAAA,gDAA4D;AAE5D,kDAAwD;AACxD,+CAA4C;AAC5C,mDAA+C;AAC/C,iDAAmD;AAEnD,6CAA4C;AAG5C,SAAgB,qBAAqB,CACnC,iBAKC,EACD,KAAuB,EACvB,KAAa,EAEb,KAAa,EACb,SAAiB,EACjB,GAAW,EACX,GAAW,EACX,OAAyC,EACzC,KAAmB,EACnB,KAAiB;;IAEjB,IAAI,iBAAiB,CAAC,WAAW,EAAE;QACjC,MAAM,WAAW,GAAG,IAAA,mBAAU,EAAC,iBAAiB,CAAC,WAAW,EAAE;YAC5D,GAAG;YACH,GAAG;YACH,KAAK;YACL,KAAK;YACL,SAAS;YACT,eAAe,EAAE,SAAS;SAC3B,CAAC,CAAC;QACH,SAAS,GAAG,MAAA,MAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAS,0CAAG,WAAW,CAAC,mCAAI,SAAS,CAAC;KACtF;IAED,MAAM,OAAO,GACX,MAAA,IAAA,mBAAU,EAAC,iBAAiB,CAAC,OAAO,EAAE;QACpC,GAAG;QACH,GAAG;QACH,KAAK;QACL,KAAK;QACL,SAAS;QACT,eAAe,EAAE,SAAS;KAC3B,CAAC,mCAAI,SAAS,CAAC;IAElB,MAAM,GAAG,GACP,MAAA,IAAA,mBAAU,EAAC,iBAAiB,CAAC,GAAG,EAAE;QAChC,GAAG;QACH,GAAG;QACH,KAAK;QACL,KAAK;QACL,SAAS;QACT,eAAe,EAAE,SAAS;KAC3B,CAAC,mCAAI,CAAC,CAAC;IACV,MAAM,GAAG,GACP,MAAA,IAAA,mBAAU,EAAC,iBAAiB,CAAC,GAAG,EAAE;QAChC,GAAG;QACH,GAAG;QACH,KAAK;QACL,KAAK;QACL,SAAS;QACT,eAAe,EAAE,SAAS;KAC3B,CAAC,mCAAI,GAAG,GAAG,GAAG,CAAC;IAElB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,EAAE;QACT,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9D;SAAM;QACL,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;KAClC;IACD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,aAAa,GAAG,MAAM,CAAC;IAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QACxC,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;KAC7C;IACD,MAAM,uBAAuB,GAAG,IAAI,aAAK,CAAC;QACxC,CAAC,EAAE,CAAC,cAAc;QAClB,CAAC,EAAE,CAAC,cAAc;QAClB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC;IACH,uBAAuB,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9C,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,UAAU,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EAChB,GAAG,KAAK,CAAC;IACV,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAIjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3E;SAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3E;SAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3E;IAGD,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,YAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACjD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;aAC7B;YACD,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;SAC5B;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAA,sBAAY,EAAC,IAAA,kBAAO,EAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACrF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAE,UAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAE,UAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAE,UAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAE,UAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5F,YAAY,IAAI,eAAe,GAAG,cAAc,CAAC;IACjD,aAAa,IAAI,gBAAgB,GAAG,aAAa,CAAC;IAClD,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAG9D,aAAa,IAAI,CAAC,CAAC;KACpB;IAWD,MAAM,GAAG,GAAG,aAAa,CAAC;IAC1B,MAAM,IAAI,GAAG,cAAc,CAAC;IAC5B,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,MAAM,GAAG,aAAa,CAAC;IAE7B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,YAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;QACjE,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,SAAS,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;KAC/C;SAAM;QACL,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;KAC/B;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,YAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;QACjE,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,SAAS,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;KAC/C;SAAM;QACL,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;KAC/B;IAED,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,OAAc,EAAE;QACtC,GAAG;QACH,GAAG;QACH,KAAK;QACL,OAAO,EAAE,IAAI;QACb,KAAK;QACL,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,IAAI,EAAE;QACR,IAAI,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,YAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,OAAO,uBAAuB,CAAC;SAChC;QAED,IAAI,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS,CAAC,KAAK,SAAS,EAAE;YACxC,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YAE7E,MAAM,WAAW,GAAG,YAAY,CAAC;YACjC,MAAM,MAAM,GAAG,GAAG,GAAG,aAAa,GAAI,SAAoB,GAAI,SAAoB,CAAC;YAEnF,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;gBAGrE,OAAO,IAAI,CAAC,CAAC;aACd;YACD,MAAM,WAAW,GAAG,IAAA,mBAAU,EAAC,UAAiB,EAAE;gBAChD,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU;aACX,CAAC,CAAC;YAEH,IAAI,WAAW,EAAE;gBACf,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;oBACzB,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,MAAM;oBACT,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;gBACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC3C;YAED,MAAM,SAAS,GACb,IAAA,mBAAU,EAAC,QAAe,EAAE;gBAC1B,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU;aACX,CAAC,IAAI,SAAS,CAAC;YAClB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;gBACzB,CAAC,EAAE,OAAO;gBACV,CAAC,EAAE,MAAM;gBACT,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;YACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC3C;aAAM,IAAI,OAAO,KAAK,UAAU,EAAE;YAGjC,MAAM,aAAa,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,cAAc,GAAG,aAAa,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;YACvE,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC;YAG1C,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAIxD,MAAM,WAAW,GAAG,YAAY,CAAC;YACjC,MAAM,MAAM,GAAG,GAAG,GAAG,aAAa,GAAI,SAAoB,GAAI,SAAoB,CAAC;YACnF,MAAM,OAAO,GAAG,IAAI,CAAC;YACrB,MAAM,WAAW,GAAG,IAAA,mBAAU,EAAC,UAAiB,EAAE;gBAChD,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU,EAAE,YAAY;aACzB,CAAC,CAAC;YACH,IAAI,WAAW,EAAE;gBACf,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;oBACzB,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,MAAM;oBACT,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;gBACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC3C;YAGD,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC;YAGlG,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,cAAc,GAAG,YAAY,EAAE,WAAW,CAAC,CAAC;YACvF,MAAM,WAAW,GAAG,cAAc;gBAChC,CAAC,CAAC;oBACE,IAAI,EAAE,OAAO,GAAG,YAAY;oBAC5B,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAmB;iBAC5B;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,WAAW;oBAC1C,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAmB;iBAC5B,CAAC;YACN,MAAM,gBAAgB,GACpB,IAAA,mBAAU,EAAC,gBAAuB,EAAE;gBAClC,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU,EAAE,YAAY;aACzB,CAAC,IAAI,SAAS,CAAC;YAClB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;gBACzB,CAAC,EAAE,WAAW,CAAC,IAAI;gBACnB,CAAC,EAAE,WAAW,CAAC,GAAG;gBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;YACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAG1C,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,cAAc,GAAG,YAAY,EAAE,WAAW,CAAC,CAAC;YACrF,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;gBAGvE,WAAW,IAAI,CAAC,CAAC;aAClB;YACD,MAAM,WAAW,GAAG,cAAc;gBAChC,CAAC,CAAC;oBACE,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,WAAW;oBAC1C,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAmB;iBAC5B;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,OAAO,GAAG,YAAY;oBAC5B,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAmB;iBAC5B,CAAC;YACN,MAAM,gBAAgB,GACpB,IAAA,mBAAU,EAAC,gBAAuB,EAAE;gBAClC,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU,EAAE,YAAY;aACzB,CAAC,IAAI,SAAS,CAAC;YAClB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;gBACzB,CAAC,EAAE,WAAW,CAAC,IAAI;gBACnB,CAAC,EAAE,WAAW,CAAC,GAAG;gBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;YACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAG1C,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YACtE,MAAM,eAAe,GAAG,IAAA,mBAAU,EAAC,YAAmB,EAAE;gBACtD,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU,EAAE,YAAY;aACzB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,oBAAU,EAAC;gBACtB,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,EAAE;oBACN,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;oBACrB,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE;iBAC3B;aACF,CAAC,CAAC;YACH,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAGvC,IAAI,WAAW,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE;gBACjD,MAAM,SAAS,GAAG,YAAY,CAAC;gBAC/B,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,kBAAkB,CAAC;gBACvB,IAAI,YAAY,GAAG,CAAC,EAAE;oBACpB,kBAAkB;wBAChB,IAAA,mBAAU,EAAC,oBAA2B,EAAE;4BACtC,GAAG;4BACH,GAAG;4BACH,KAAK;4BACL,OAAO,EAAE,IAAI;4BACb,KAAK;4BACL,SAAS;4BACT,UAAU,EAAE,YAAY;yBACzB,CAAC,IAAI,SAAS,CAAC;oBAClB,IAAI,eAAe,KAAK,OAAO,EAAE;wBAC/B,MAAM,QAAQ,GAAG,cAAc;4BAC7B,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,YAAY,GAAG,CAAC;4BACrC,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;wBAC5D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;wBACjD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;qBACvE;yBAAM,IAAI,eAAe,KAAK,QAAQ,EAAE;wBACvC,MAAM,CAAC,IAAI,CAAC;4BACV,CAAC,EAAE,WAAW,CAAC,IAAI;4BACnB,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;yBAC3D,CAAC,CAAC;wBACH,MAAM,CAAC,IAAI,CAAC;4BACV,CAAC,EAAE,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK;4BACvC,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;yBAC3D,CAAC,CAAC;qBACJ;iBACF;qBAAM,IAAI,YAAY,GAAG,CAAC,EAAE;oBAC3B,kBAAkB;wBAChB,IAAA,mBAAU,EAAC,oBAA2B,EAAE;4BACtC,GAAG;4BACH,GAAG;4BACH,KAAK;4BACL,OAAO,EAAE,IAAI;4BACb,KAAK;4BACL,SAAS;4BACT,UAAU,EAAE,YAAY;yBACzB,CAAC,IAAI,SAAS,CAAC;oBAClB,IAAI,eAAe,KAAK,OAAO,EAAE;wBAC/B,MAAM,QAAQ,GAAG,cAAc;4BAC7B,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC;4BACzD,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,YAAY,GAAG,CAAC,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;wBACjD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;qBACvE;yBAAM,IAAI,eAAe,KAAK,QAAQ,EAAE;wBACvC,MAAM,CAAC,IAAI,CAAC;4BACV,CAAC,EAAE,WAAW,CAAC,IAAI;4BACnB,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;yBAC3D,CAAC,CAAC;wBACH,MAAM,CAAC,IAAI,CAAC;4BACV,CAAC,EAAE,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK;4BACvC,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;yBAC3D,CAAC,CAAC;qBACJ;iBACF;gBACD,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;oBACzB,CAAC,EAAE,CAAC;oBACJ,CAAC,EAAE,CAAC;oBACJ,MAAM,EAAE,kBAAkB;oBAC1B,SAAS;oBACT,MAAM;iBACP,CAAC,CAAC;gBACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC3C;SACF;aAAM,IAAI,OAAO,KAAK,kBAAkB,EAAE;YAGzC,MAAM,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAGvD,MAAM,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAK3D,MAAM,WAAW,GAAG,YAAY,CAAC;YACjC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,CAAC,CAAC;YAC9D,IAAI,GAAG,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;gBAGrE,OAAO,IAAI,CAAC,CAAC;aACd;YAED,MAAM,MAAM,GAAG,GAAG,GAAG,aAAa,GAAI,SAAoB,GAAI,SAAoB,CAAC;YAEnF,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAE/D,MAAM,WAAW,GAAG,IAAA,mBAAU,EAAC,UAAiB,EAAE;gBAChD,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,SAAS;gBACT,UAAU;aACX,CAAC,CAAC;YACH,IAAI,WAAW,EAAE;gBACf,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;oBACzB,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,MAAM;oBACT,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;gBACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC3C;YAGD,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,SAAmB;aAC5B,CAAC;YACF,IAAI,gBAAgB,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,EAAE;gBACZ,gBAAgB;oBACd,IAAA,mBAAU,EAAC,gBAAuB,EAAE;wBAClC,GAAG;wBACH,GAAG;wBACH,KAAK;wBACL,OAAO,EAAE,IAAI;wBACb,KAAK;wBACL,UAAU;wBACV,SAAS;qBACV,CAAC,IAAI,SAAS,CAAC;aACnB;iBAAM;gBACL,gBAAgB;oBACd,IAAA,mBAAU,EAAC,gBAAuB,EAAE;wBAClC,GAAG;wBACH,GAAG;wBACH,KAAK;wBACL,OAAO,EAAE,IAAI;wBACb,KAAK;wBACL,SAAS;wBACT,UAAU;qBACX,CAAC,IAAI,SAAS,CAAC;aACnB;YACD,MAAM,GAAG,GAAG,IAAA,oBAAU,EAAC;gBACrB,CAAC,EAAE,OAAO,CAAC,IAAI;gBACf,CAAC,EAAE,OAAO,CAAC,GAAG;gBACd,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;YACH,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAGtC,IAAI,WAAW,IAAI,GAAG,EAAE;gBACtB,MAAM,SAAS,GAAG,YAAY,CAAC;gBAC/B,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,kBAAkB,CAAC;gBACvB,IAAI,GAAG,IAAI,CAAC,EAAE;oBACZ,kBAAkB;wBAChB,IAAA,mBAAU,EAAC,oBAA2B,EAAE;4BACtC,GAAG;4BACH,GAAG;4BACH,KAAK;4BACL,OAAO,EAAE,IAAI;4BACb,KAAK;4BACL,SAAS;4BACT,UAAU;yBACX,CAAC,IAAI,SAAS,CAAC;iBACnB;qBAAM;oBACL,kBAAkB;wBAChB,IAAA,mBAAU,EAAC,oBAA2B,EAAE;4BACtC,GAAG;4BACH,GAAG;4BACH,KAAK;4BACL,OAAO,EAAE,IAAI;4BACb,KAAK;4BACL,SAAS;4BACT,UAAU;yBACX,CAAC,IAAI,SAAS,CAAC;iBACnB;gBACD,IAAI,eAAe,KAAK,OAAO,EAAE;oBAC/B,MAAM,QAAQ,GAAG,cAAc;wBAC7B,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,GAAG,CAAC;wBACjC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;oBACpD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;iBAC/D;qBAAM,IAAI,eAAe,KAAK,QAAQ,EAAE;oBACvC,MAAM,CAAC,IAAI,CAAC;wBACV,CAAC,EAAE,OAAO,CAAC,IAAI;wBACf,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;qBACnD,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC;wBACV,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK;wBAC/B,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;qBACnD,CAAC,CAAC;iBACJ;gBACD,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC;oBACzB,CAAC,EAAE,CAAC;oBACJ,CAAC,EAAE,CAAC;oBACJ,MAAM,EAAE,kBAAkB;oBAC1B,SAAS;oBACT,MAAM;iBACP,CAAC,CAAC;gBACH,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC3C;SACF;KACF;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAlkBD,sDAkkBC","file":"progress-bar-cell.js","sourcesContent":["import { createRect, createLine } from './../../../vrender';\nimport type { ProgressBarStyle } from '../../../body-helper/style/ProgressBarStyle';\nimport { str, getOrApply } from '../../../tools/helper';\nimport { Group } from '../../graphic/group';\nimport { getProp } from '../../utils/get-prop';\nimport { getQuadProps } from '../../utils/padding';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nimport { isNumber } from '@visactor/vutils';\nimport type { CellRange, StylePropertyFunctionArg } from '../../../ts-types';\n\nexport function createProgressBarCell(\n progressBarDefine: {\n min?: number | ((args: StylePropertyFunctionArg) => number);\n max?: number | ((args: StylePropertyFunctionArg) => number);\n barType?: 'default' | 'negative' | 'negative_no_axis'; // 进度图类型\n dependField?: string; // 指定其他列数据(风神使用),\n },\n style: ProgressBarStyle,\n width: number,\n // height: number,\n value: string,\n dataValue: string,\n col: number,\n row: number,\n padding: [number, number, number, number],\n table: BaseTableAPI,\n range?: CellRange\n) {\n if (progressBarDefine.dependField) {\n const dependField = getOrApply(progressBarDefine.dependField, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n });\n dataValue = (table.getCellOriginRecord(col, row) as any)?.[dependField] ?? dataValue;\n }\n\n const barType =\n getOrApply(progressBarDefine.barType, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n }) ?? 'default';\n\n const min: number =\n getOrApply(progressBarDefine.min, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n }) ?? 0;\n const max: number =\n getOrApply(progressBarDefine.max, {\n col,\n row,\n table,\n value,\n dataValue,\n cellHeaderPaths: undefined\n }) ?? min + 100;\n\n let height = 0;\n if (range) {\n height = table.getRowsHeight(range.start.row, range.end.row);\n } else {\n height = table.getRowHeight(row);\n }\n let contentWidth = width;\n let contentHeight = height;\n let _contentOffset = 0;\n if (isNumber(table.theme._contentOffset)) {\n _contentOffset = table.theme._contentOffset;\n }\n const percentCompleteBarGroup = new Group({\n x: -_contentOffset,\n y: -_contentOffset,\n width: contentWidth,\n height: contentHeight\n });\n percentCompleteBarGroup.name = 'progress-bar';\n\n const {\n showBar,\n barColor,\n barBgColor,\n // bgColor,\n barPositiveColor,\n barNegativeColor,\n barAxisColor,\n barRightToLeft,\n showBarMark,\n barMarkPositiveColor,\n barMarkNegativeColor,\n barMarkWidth,\n barMarkPosition\n } = style;\n let { barHeight, barBottom, barPadding } = style;\n // const { col, row, dataValue: originalValue } = context;\n\n // 完善四元组\n if (barPadding.length === 1) {\n barPadding = [barPadding[0], barPadding[0], barPadding[0], barPadding[0]];\n } else if (barPadding.length === 2) {\n barPadding = [barPadding[0], barPadding[1], barPadding[0], barPadding[1]];\n } else if (barPadding.length === 3) {\n barPadding = [barPadding[0], barPadding[1], barPadding[2], barPadding[1]];\n }\n\n // 将百分比值转换为数值\n barPadding = barPadding.map((v, i) => {\n if (typeof v === 'string' && str.endsWith(v, '%')) {\n const num = Number(v.substr(0, v.length - 1));\n if (i === 0 || i === 2) {\n return (height * num) / 100;\n }\n return (width * num) / 100;\n }\n return Number(v);\n });\n\n const borderWidth = getQuadProps(getProp('borderLineWidth', style, col, row, table));\n const barPaddingTop = Math.max((barPadding as number[])[0], Math.ceil(borderWidth[0] / 2));\n const barPaddingRight = Math.max((barPadding as number[])[1], Math.floor(borderWidth[1] / 2));\n const barPaddingBottom = Math.max((barPadding as number[])[2], Math.floor(borderWidth[2] / 2));\n const barPaddingLeft = Math.max((barPadding as number[])[3], Math.ceil(borderWidth[3] / 2));\n\n contentWidth -= barPaddingRight + barPaddingLeft;\n contentHeight -= barPaddingBottom + barPaddingTop;\n if (row === table.rowCount - 1 && [0, '0'].includes(barBottom)) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n contentHeight -= 1;\n }\n\n // if (barPaddingTop & 1) {\n // // barPaddingTop += 0.5;\n // contentWidth += borderWidth[0];\n // }\n // if (barPaddingLeft & 1) {\n // // barPaddingLeft += 0.5;\n // contentHeight += borderWidth[0];\n // }\n\n const top = barPaddingTop;\n const left = barPaddingLeft;\n const right = contentWidth;\n const bottom = contentHeight;\n\n if (typeof barHeight === 'string' && str.endsWith(barHeight, '%')) {\n barHeight = Number(barHeight.substr(0, barHeight.length - 1));\n barHeight = (contentHeight * barHeight) / 100;\n } else {\n barHeight = Number(barHeight);\n }\n if (typeof barBottom === 'string' && str.endsWith(barBottom, '%')) {\n barBottom = Number(barBottom.substr(0, barBottom.length - 1));\n barBottom = (contentHeight * barBottom) / 100;\n } else {\n barBottom = Number(barBottom);\n }\n\n const show = getOrApply(showBar as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue\n });\n\n if (show) {\n let svalue = `${dataValue}`;\n if (str.endsWith(svalue, '%')) {\n svalue = svalue.substr(0, svalue.length - 1);\n }\n const num = Number(svalue);\n if (isNaN(num)) {\n return percentCompleteBarGroup;\n }\n\n if ((barType ?? 'default') === 'default') {\n const percentile = num < min ? 0 : num > max ? 1 : (num - min) / (max - min);\n\n const barMaxWidth = contentWidth;\n const barTop = top + contentHeight - (barHeight as number) - (barBottom as number);\n // const barLeft = 0 + barPaddingLeft;\n let barSize = Math.min(barMaxWidth * percentile, barMaxWidth);\n const barLeft = barRightToLeft ? left + right - barSize : left;\n if (col === table.colCount - 1 && percentile === 1 && !barRightToLeft) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n barSize -= 1;\n }\n const bgFillColor = getOrApply(barBgColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n });\n\n if (bgFillColor) {\n const barBack = createRect({\n x: barLeft,\n y: barTop,\n width: barMaxWidth,\n height: barHeight,\n fill: bgFillColor\n });\n percentCompleteBarGroup.addChild(barBack);\n }\n\n const fillColor =\n getOrApply(barColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n const barMain = createRect({\n x: barLeft,\n y: barTop,\n width: barSize,\n height: barHeight,\n fill: fillColor\n });\n percentCompleteBarGroup.addChild(barMain);\n } else if (barType === 'negative') {\n // negative模式参考风神现有数据条样式,显示坐标轴和正负数据条\n // 计算坐标轴位置\n const negativeRange = min < 0 ? -min : 0;\n const positiveRange = max > 0 ? max : 0;\n\n const negativeFactor = negativeRange / (negativeRange + positiveRange);\n const positiveFactor = 1 - negativeFactor;\n\n // 计算rate\n const positiveRate = num > 0 ? num / positiveRange : 0;\n const negativeRate = num < 0 ? -num / negativeRange : 0;\n\n // 绘制\n // 绘制背景\n const barMaxWidth = contentWidth;\n const barTop = top + contentHeight - (barHeight as number) - (barBottom as number);\n const barLeft = left;\n const bgFillColor = getOrApply(barBgColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n });\n if (bgFillColor) {\n const barBack = createRect({\n x: barLeft,\n y: barTop,\n width: barMaxWidth,\n height: barHeight,\n fill: bgFillColor\n });\n percentCompleteBarGroup.addChild(barBack);\n }\n\n // 坐标轴距离左侧边界距离\n const positiveLeft = barRightToLeft ? positiveFactor * barMaxWidth : negativeFactor * barMaxWidth;\n\n // 绘制负值区域\n const barSizeNega = Math.min(barMaxWidth * negativeFactor * negativeRate, barMaxWidth);\n const barRectNega = barRightToLeft\n ? {\n left: barLeft + positiveLeft,\n top: barTop,\n width: barSizeNega,\n height: barHeight as number\n }\n : {\n left: barLeft + positiveLeft - barSizeNega,\n top: barTop,\n width: barSizeNega,\n height: barHeight as number\n };\n const barNagiFillColor =\n getOrApply(barNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: negativeRate\n }) || '#20a8d8';\n const barNega = createRect({\n x: barRectNega.left,\n y: barRectNega.top,\n width: barRectNega.width,\n height: barRectNega.height,\n fill: barNagiFillColor\n });\n percentCompleteBarGroup.addChild(barNega);\n\n // 绘制正值区域\n let barSizePosi = Math.min(barMaxWidth * positiveFactor * positiveRate, barMaxWidth);\n if (col === table.colCount - 1 && positiveRate === 1 && !barRightToLeft) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n barSizePosi -= 1;\n }\n const barRectPosi = barRightToLeft\n ? {\n left: barLeft + positiveLeft - barSizePosi,\n top: barTop,\n width: barSizePosi,\n height: barHeight as number\n }\n : {\n left: barLeft + positiveLeft,\n top: barTop,\n width: barSizePosi,\n height: barHeight as number\n };\n const barPosiFillColor =\n getOrApply(barPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n }) || '#20a8d8';\n const barPosi = createRect({\n x: barRectPosi.left,\n y: barRectPosi.top,\n width: barRectPosi.width,\n height: barRectPosi.height,\n fill: barPosiFillColor\n });\n percentCompleteBarGroup.addChild(barPosi);\n\n // 绘制坐标轴\n const lineLeft = barRightToLeft ? barRectNega.left : barRectPosi.left;\n const lineStrokeColor = getOrApply(barAxisColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n });\n const line = createLine({\n x: 0,\n y: 0,\n stroke: lineStrokeColor,\n lineWidth: 1,\n lineDash: [2, 2],\n points: [\n { x: lineLeft, y: 0 },\n { x: lineLeft, y: height }\n ]\n });\n percentCompleteBarGroup.addChild(line);\n\n // 绘制mark\n if (showBarMark && (positiveRate || negativeRate)) {\n const lineWidth = barMarkWidth;\n const points = [];\n let barMarkStrokeColor;\n if (positiveRate > 0) {\n barMarkStrokeColor =\n getOrApply(barMarkPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: positiveRate\n }) || '#20a8d8';\n if (barMarkPosition === 'right') {\n const markLeft = barRightToLeft\n ? barRectPosi.left + barMarkWidth / 2\n : barRectPosi.left + barRectPosi.width - barMarkWidth / 2;\n points.push({ x: markLeft, y: barRectPosi.top });\n points.push({ x: markLeft, y: barRectPosi.top + barRectPosi.height });\n } else if (barMarkPosition === 'bottom') {\n points.push({\n x: barRectPosi.left,\n y: barRectPosi.top + barRectPosi.height - barMarkWidth / 2\n });\n points.push({\n x: barRectPosi.left + barRectPosi.width,\n y: barRectPosi.top + barRectPosi.height - barMarkWidth / 2\n });\n }\n } else if (negativeRate > 0) {\n barMarkStrokeColor =\n getOrApply(barMarkNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile: negativeRate\n }) || '#20a8d8';\n if (barMarkPosition === 'right') {\n const markLeft = barRightToLeft\n ? barRectNega.left + barRectNega.width - barMarkWidth / 2\n : barRectNega.left + barMarkWidth / 2;\n points.push({ x: markLeft, y: barRectNega.top });\n points.push({ x: markLeft, y: barRectNega.top + barRectNega.height });\n } else if (barMarkPosition === 'bottom') {\n points.push({\n x: barRectNega.left,\n y: barRectNega.top + barRectNega.height - barMarkWidth / 2\n });\n points.push({\n x: barRectNega.left + barRectNega.width,\n y: barRectNega.top + barRectNega.height - barMarkWidth / 2\n });\n }\n }\n const barMark = createLine({\n x: 0,\n y: 0,\n stroke: barMarkStrokeColor,\n lineWidth,\n points\n });\n percentCompleteBarGroup.addChild(barMark);\n }\n } else if (barType === 'negative_no_axis') {\n // negative_no_axis模式不显示坐标轴,正负数据条同向,区分颜色\n // 计算range\n const _negativeRange = min < 0 ? -min : 0;\n const _positiveRange = max > 0 ? max : 0;\n const range = Math.max(_negativeRange, _positiveRange);\n\n // 计算rate\n const percentile = range === 0 ? 0 : Math.abs(num) / range;\n\n // 绘制\n // 绘制背景\n // const barMaxWidth = width - barPaddingLeft - barPaddingRight - 1; /*罫線*/\n const barMaxWidth = contentWidth;\n let barSize = Math.min(barMaxWidth * percentile, barMaxWidth);\n if (col === table.colCount - 1 && percentile === 1 && !barRightToLeft) {\n // 单元格边框在表格边界会向内缩进1px,为了避免进度图矩形覆盖边框,这里在最后一行向内缩进1px\n // 详见 packages/vtable/src/scenegraph/graphic/contributions/group-contribution-render.ts getCellSizeForDraw()\n barSize -= 1;\n }\n // const barTop = bottom - barPaddingBottom - (barHeight as number) - (barBottom as number) - 1; /*罫線*/\n const barTop = top + contentHeight - (barHeight as number) - (barBottom as number);\n // const barLeft = barRightToLeft ? right - barPaddingRight - barSize : left + barPaddingLeft;\n const barLeft = barRightToLeft ? left + right - barSize : left;\n\n const bgFillColor = getOrApply(barBgColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n });\n if (bgFillColor) {\n const barBack = createRect({\n x: barLeft,\n y: barTop,\n width: barMaxWidth,\n height: barHeight,\n fill: bgFillColor\n });\n percentCompleteBarGroup.addChild(barBack);\n }\n\n // 绘制bar\n const barRect = {\n left: barLeft,\n top: barTop,\n width: barSize,\n height: barHeight as number\n };\n let barRectFillColor;\n if (num >= 0) {\n barRectFillColor =\n getOrApply(barPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n percentile,\n dataValue\n }) || '#20a8d8';\n } else {\n barRectFillColor =\n getOrApply(barNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n }\n const bar = createRect({\n x: barRect.left,\n y: barRect.top,\n width: barRect.width,\n height: barRect.height,\n fill: barRectFillColor\n });\n percentCompleteBarGroup.addChild(bar);\n\n // 绘制mark\n if (showBarMark && num) {\n const lineWidth = barMarkWidth;\n const points = [];\n let barMarkStrokeColor;\n if (num >= 0) {\n barMarkStrokeColor =\n getOrApply(barMarkPositiveColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n } else {\n barMarkStrokeColor =\n getOrApply(barMarkNegativeColor as any, {\n col,\n row,\n table,\n context: null,\n value,\n dataValue,\n percentile\n }) || '#20a8d8';\n }\n if (barMarkPosition === 'right') {\n const markLeft = barRightToLeft\n ? barRect.left + barMarkWidth / 2\n : barRect.left + barRect.width - barMarkWidth / 2;\n points.push({ x: markLeft, y: barRect.top });\n points.push({ x: markLeft, y: barRect.top + barRect.height });\n } else if (barMarkPosition === 'bottom') {\n points.push({\n x: barRect.left,\n y: barRect.top + barRect.height - barMarkWidth / 2\n });\n points.push({\n x: barRect.left + barRect.width,\n y: barRect.top + barRect.height - barMarkWidth / 2\n });\n }\n const barMark = createLine({\n x: 0,\n y: 0,\n stroke: barMarkStrokeColor,\n lineWidth,\n points\n });\n percentCompleteBarGroup.addChild(barMark);\n }\n }\n }\n return percentCompleteBarGroup;\n}\n\nexport type CreateProgressBarCell = typeof createProgressBarCell;\n"]}
|
|
@@ -78,8 +78,7 @@ function updateComponent(selectComp, key, scene) {
|
|
|
78
78
|
if (!isNearBottomColHeader && table.bottomFrozenRowCount && endRow < table.rowCount - table.bottomFrozenRowCount) {
|
|
79
79
|
table.getRowsHeight(0, endRow) - table.scrollTop > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight() && (isNearBottomColHeader = !0);
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
if (isNearRowHeader && (selectComp.rect.attribute.stroke[3] || dynamicUpdateSelectionSize) || isNearRightRowHeader && (selectComp.rect.attribute.stroke[1] || dynamicUpdateSelectionSize) || isNearColHeader && (selectComp.rect.attribute.stroke[0] || dynamicUpdateSelectionSize) || isNearBottomColHeader && (selectComp.rect.attribute.stroke[2] || dynamicUpdateSelectionSize)) {
|
|
81
|
+
if (isNearRowHeader && selectComp.rect.attribute.stroke[3] || isNearRightRowHeader && selectComp.rect.attribute.stroke[1] || isNearColHeader && selectComp.rect.attribute.stroke[0] || isNearBottomColHeader && selectComp.rect.attribute.stroke[2]) {
|
|
83
82
|
if (isNearRowHeader && selectComp.rect.attribute.stroke[3] && scene.tableGroup.insertAfter(selectComp.rect, "columnHeader" === selectComp.role ? scene.cornerHeaderGroup : "bottomFrozen" === selectComp.role ? scene.leftBottomCornerGroup : scene.rowHeaderGroup),
|
|
84
83
|
isNearBottomColHeader && selectComp.rect.attribute.stroke[2] && scene.tableGroup.insertAfter(selectComp.rect, "rowHeader" === selectComp.role ? scene.leftBottomCornerGroup : "rightFrozen" === selectComp.role ? scene.rightBottomCornerGroup : scene.bottomFrozenGroup),
|
|
85
84
|
isNearColHeader && selectComp.rect.attribute.stroke[0] && scene.tableGroup.insertAfter(selectComp.rect, "rowHeader" === selectComp.role ? scene.cornerHeaderGroup : "rightFrozen" === selectComp.role ? scene.rightTopCornerGroup : scene.colHeaderGroup),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/select/update-select-border.ts"],"names":[],"mappings":"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","file":"update-select-border.js","sourcesContent":["import { type IRect } from './../../vrender';\nimport type { Scenegraph } from '../scenegraph';\nimport type { CellRange, CellSubLocation } from '../../ts-types';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\n\nexport function updateAllSelectComponent(scene: Scenegraph) {\n scene.customSelectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n });\n\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n }\n );\n scene.selectedRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n }\n );\n}\n\nfunction updateComponent(\n selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation },\n key: string,\n scene: Scenegraph\n) {\n const table = scene.table;\n const [startColStr, startRowStr, endColStr, endRowStr] = key.split('-');\n const startCol = parseInt(startColStr, 10);\n const startRow = parseInt(startRowStr, 10);\n const endCol = parseInt(endColStr, 10);\n const endRow = parseInt(endRowStr, 10);\n // 下面为计算选中区域使用的行列值\n let computeRectCellRangeStartCol = startCol;\n let computeRectCellRangeStartRow = startRow;\n let computeRectCellRangeEndCol = endCol;\n let computeRectCellRangeEndRow = endRow;\n // 下面逻辑根据选中区域所属表格部分 来判断可视区域内容的选中单元格范围\n let visibleCellRange;\n switch (selectComp.role) {\n case 'rowHeader':\n visibleCellRange = table.getBodyVisibleRowRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'columnHeader':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'cornerHeader':\n break;\n case 'bottomFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'rightFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'rightTopCorner':\n break;\n case 'leftBottomCorner':\n break;\n case 'rightBottomCorner':\n break;\n default:\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n }\n // const cellRange = table.getCellRange(startCol, startRow);\n // const colsWidth = table.getColsWidth(cellRange.start.col, endCol);\n // const rowsHeight = table.getRowsHeight(cellRange.start.row, endRow);\n const colsWidth = table.getColsWidth(computeRectCellRangeStartCol, computeRectCellRangeEndCol);\n const rowsHeight = table.getRowsHeight(computeRectCellRangeStartRow, computeRectCellRangeEndRow);\n const firstCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeStartCol,\n computeRectCellRangeStartRow\n ).globalAABBBounds;\n const lastCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeEndCol,\n computeRectCellRangeEndRow\n ).globalAABBBounds;\n\n selectComp.rect.setAttributes({\n x: firstCellBound.x1 - scene.tableGroup.attribute.x, //坐标xy在下面的逻辑中会做适当调整\n y: firstCellBound.y1 - scene.tableGroup.attribute.y,\n width: colsWidth,\n height: rowsHeight,\n visible: true\n });\n if (selectComp.fillhandle) {\n selectComp.fillhandle?.setAttributes({\n x: lastCellBound.x2 - scene.tableGroup.attribute.x - 3, // 调整小方块位置\n y: lastCellBound.y2 - scene.tableGroup.attribute.y - 3, // 调整小方块位置\n width: 6,\n height: 6,\n visible: true\n });\n }\n\n //#region 判断是不是按着表头部分的选中框 因为绘制层级的原因 线宽会被遮住一半,因此需要动态调整层级\n let isNearRowHeader = table.frozenColCount ? startCol === table.frozenColCount : false;\n if (!isNearRowHeader && table.frozenColCount && table.scrollLeft > 0 && startCol >= table.frozenColCount) {\n const startColRelativePosition = table.getColsWidth(0, startCol - 1) - table.scrollLeft;\n if (startColRelativePosition < table.getFrozenColsWidth()) {\n isNearRowHeader = true;\n }\n }\n\n let isNearRightRowHeader = table.rightFrozenColCount\n ? table.rightFrozenColCount > 0 && endCol === table.colCount - table.rightFrozenColCount - 1\n : false;\n if (!isNearRightRowHeader && table.rightFrozenColCount && endCol < table.colCount - table.rightFrozenColCount) {\n const endColRelativePosition = table.getColsWidth(0, endCol) - table.scrollLeft;\n if (endColRelativePosition > table.tableNoFrameWidth - table.getRightFrozenColsWidth()) {\n isNearRightRowHeader = true;\n }\n }\n\n let isNearColHeader = table.frozenRowCount ? startRow === table.frozenRowCount : true;\n if (!isNearColHeader && table.frozenRowCount && table.scrollTop > 0 && startRow >= table.frozenRowCount) {\n const startRowRelativePosition = table.getRowsHeight(0, startRow - 1) - table.scrollTop;\n if (startRowRelativePosition < table.getFrozenRowsHeight()) {\n isNearColHeader = true;\n }\n }\n\n let isNearBottomColHeader = table.bottomFrozenRowCount\n ? endRow === table.rowCount - table.bottomFrozenRowCount - 1\n : false;\n if (!isNearBottomColHeader && table.bottomFrozenRowCount && endRow < table.rowCount - table.bottomFrozenRowCount) {\n const endRowRelativePosition = table.getRowsHeight(0, endRow) - table.scrollTop;\n if (endRowRelativePosition > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight()) {\n isNearBottomColHeader = true;\n }\n }\n\n const { dynamicUpdateSelectionSize } = table.theme.selectionStyle;\n if (\n (isNearRowHeader && (selectComp.rect.attribute.stroke[3] || dynamicUpdateSelectionSize)) ||\n (isNearRightRowHeader && (selectComp.rect.attribute.stroke[1] || dynamicUpdateSelectionSize)) ||\n (isNearColHeader && (selectComp.rect.attribute.stroke[0] || dynamicUpdateSelectionSize)) ||\n (isNearBottomColHeader && (selectComp.rect.attribute.stroke[2] || dynamicUpdateSelectionSize))\n ) {\n if (isNearRowHeader && selectComp.rect.attribute.stroke[3]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.leftBottomCornerGroup\n : scene.rowHeaderGroup\n );\n }\n\n if (isNearBottomColHeader && selectComp.rect.attribute.stroke[2]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightBottomCornerGroup\n : scene.bottomFrozenGroup\n );\n }\n\n if (isNearColHeader && selectComp.rect.attribute.stroke[0]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightTopCornerGroup\n : scene.colHeaderGroup\n );\n }\n if (isNearRightRowHeader && selectComp.rect.attribute.stroke[1]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.rightBottomCornerGroup\n : scene.rightFrozenGroup\n );\n }\n\n //#region 调整层级后 滚动情况下会出现绘制范围出界 如body的选中框 渲染在了rowheader上面,所有需要调整选中框rect的 边界\n if (\n selectComp.rect.attribute.x < table.getFrozenColsWidth() &&\n // selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rowHeaderGroup.attribute.width &&\n table.scrollLeft > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = selectComp.rect.attribute.width - (table.getFrozenColsWidth() - selectComp.rect.attribute.x);\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + (table.getFrozenColsWidth() - selectComp.rect.attribute.x),\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width > 0\n });\n }\n if (\n // selectComp.rect.attribute.x < scene.rightFrozenGroup.attribute.x &&\n table.getRightFrozenColsWidth() > 0 && // right冻结列存在的情况下\n scene.rightFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rightFrozenGroup.attribute.x &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = scene.rightFrozenGroup.attribute.x - selectComp.rect.attribute.x;\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x,\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width - colsWidth > 0\n });\n }\n if (\n selectComp.rect.attribute.y < scene.colHeaderGroup.attribute.height &&\n table.scrollTop > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height =\n selectComp.rect.attribute.height - (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y);\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y),\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height > 0\n });\n }\n if (\n scene.bottomFrozenGroup.attribute.width > 0 &&\n scene.bottomFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.y + selectComp.rect.attribute.height > scene.bottomFrozenGroup.attribute.y &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height = scene.bottomFrozenGroup.attribute.y - selectComp.rect.attribute.y;\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y,\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height - rowsHeight > 0\n });\n }\n //#endregion\n } else {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'body'\n ? scene.bodyGroup\n : selectComp.role === 'columnHeader'\n ? scene.colHeaderGroup\n : selectComp.role === 'rowHeader'\n ? scene.rowHeaderGroup\n : selectComp.role === 'cornerHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightTopCorner'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightFrozenGroup\n : selectComp.role === 'leftBottomCorner'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.bottomFrozenGroup\n : scene.rightBottomCornerGroup\n );\n }\n //#endregion\n\n //#region 处理边缘被截问题\n let diffSize = 0;\n if (typeof selectComp.rect.attribute.lineWidth === 'number') {\n diffSize = Math.ceil(selectComp.rect.attribute.lineWidth / 2);\n }\n if (endCol === table.colCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[1] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (startCol === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[3] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + diffSize,\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // x: selectComp.rect.attribute.x + diffSize,\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (endRow === table.rowCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[2] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n if (startRow === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[0] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + diffSize,\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // y: selectComp.rect.attribute.y + diffSize,\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n //#endregion\n}\n\nexport function updateCellSelectBorder(\n scene: Scenegraph,\n selectRange: CellRange & { skipBodyMerge?: boolean },\n ifExtendSelectRange: boolean = true\n) {\n const table = scene.table;\n const newStartCol = selectRange.start.col;\n const newStartRow = selectRange.start.row;\n const newEndCol = selectRange.end.col;\n const newEndRow = selectRange.end.row;\n const skipBodyMerge = selectRange.skipBodyMerge;\n\n let startCol = Math.max(Math.min(newEndCol, newStartCol), 0);\n let startRow = Math.max(Math.min(newEndRow, newStartRow), 0);\n let endCol = Math.min(Math.max(newEndCol, newStartCol), table.colCount - 1);\n let endRow = Math.min(Math.max(newEndRow, newStartRow), table.rowCount - 1);\n //#region region 校验四周的单元格有没有合并的情况,如有则扩大范围\n const extendSelectRange = () => {\n let isExtend = false;\n for (let col = startCol; col <= endCol; col++) {\n if (col === startCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && mergeInfo.start.col < startCol) {\n startCol = mergeInfo.start.col;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && col === endCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && Math.min(mergeInfo.end.col, table.colCount - 1) > endCol) {\n endCol = mergeInfo.end.col;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n if (!isExtend) {\n for (let row = startRow; row <= endRow; row++) {\n if (row === startRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && mergeInfo.start.row < startRow) {\n startRow = mergeInfo.start.row;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && row === endRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && Math.min(mergeInfo.end.row, table.rowCount - 1) > endRow) {\n endRow = mergeInfo.end.row;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n }\n if (isExtend) {\n extendSelectRange();\n }\n };\n if (ifExtendSelectRange) {\n extendSelectRange();\n if (selectRange.start.col > selectRange.end.col) {\n selectRange.start.col = Math.max(startCol, endCol);\n selectRange.end.col = Math.min(startCol, endCol);\n } else {\n selectRange.start.col = Math.min(startCol, endCol);\n selectRange.end.col = Math.max(startCol, endCol);\n }\n if (selectRange.start.row > selectRange.end.row) {\n selectRange.start.row = Math.max(startRow, endRow);\n selectRange.end.row = Math.min(startRow, endRow);\n } else {\n selectRange.start.row = Math.min(startRow, endRow);\n selectRange.end.row = Math.max(startRow, endRow);\n }\n }\n //#endregion\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.delete();\n selectComp.fillhandle?.delete();\n }\n );\n scene.selectingRangeComponents = new Map();\n\n let needRowHeader = false;\n let needRightRowHeader = false; // 右侧冻结\n let needColumnHeader = false;\n let needBottomColumnHeader = false; // 底部冻结\n let needBody = false;\n let needCornerHeader = false;\n let needRightTopCornerHeader = false;\n let needRightBottomCornerHeader = false;\n let needLeftBottomCornerHeader = false;\n if (startCol <= table.frozenColCount - 1 && startRow <= table.frozenRowCount - 1) {\n needCornerHeader = true;\n }\n if (endCol >= table.colCount - table.rightFrozenColCount && startRow <= table.frozenRowCount - 1) {\n needRightTopCornerHeader = true;\n }\n\n if (startCol <= table.frozenColCount - 1 && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needLeftBottomCornerHeader = true;\n }\n\n if (endCol >= table.colCount - table.rightFrozenColCount && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needRightBottomCornerHeader = true;\n }\n\n if (\n startCol <= table.frozenColCount - 1 &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRowHeader = true;\n }\n if (\n endCol >= table.colCount - table.rightFrozenColCount &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRightRowHeader = true;\n }\n\n if (\n startRow <= table.frozenRowCount - 1 &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needColumnHeader = true;\n }\n if (\n endRow >= table.rowCount - table.bottomFrozenRowCount &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needBottomColumnHeader = true;\n }\n if (\n startCol <= table.colCount - table.rightFrozenColCount - 1 &&\n endCol >= table.frozenColCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1 &&\n endRow >= table.frozenRowCount\n ) {\n needBody = true;\n }\n\n // TODO 可以尝试不拆分三个表头和body【前提是theme中合并配置】 用一个SelectBorder 需要结合clip,并动态设置border的范围【依据区域范围 已经是否跨表头及body】\n if (needCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needColumnHeader, !needRowHeader, true];\n scene.createCellSelectBorder(\n startCol,\n startRow,\n cornerEndCol,\n cornerEndRow,\n 'cornerHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightTopCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, true, !needRightRowHeader, !needColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n startRow,\n endCol,\n cornerEndRow,\n 'rightTopCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n\n if (needLeftBottomCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRowHeader, !needBottomColumnHeader, true, true];\n scene.createCellSelectBorder(\n startCol,\n cornerStartRow,\n cornerEndCol,\n endRow,\n 'leftBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightBottomCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRightRowHeader, true, true, !needBottomColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n cornerStartRow,\n endCol,\n endRow,\n 'rightBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needRightTopCornerHeader, !needBody, !needCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n startRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'columnHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBottomColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needBody, !needRightBottomCornerHeader, true, !needLeftBottomCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n endRow,\n 'bottomFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderEndCol = Math.min(endCol, table.frozenColCount - 1);\n const strokeArray = [!needCornerHeader, !needBody, !needLeftBottomCornerHeader, true];\n scene.createCellSelectBorder(\n startCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'rowHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const strokeArray = [!needRightTopCornerHeader, true, !needRightBottomCornerHeader, !needBody];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n endCol,\n columnHeaderEndRow,\n 'rightFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBody) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const strokeArray = [!needColumnHeader, !needRightRowHeader, !needBottomColumnHeader, !needRowHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'body',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n}\n\nexport function hideCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n}\n\nexport function restoreCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/select/update-select-border.ts"],"names":[],"mappings":";;;AAGA,4DAA2D;AAE3D,SAAgB,wBAAwB,CAAC,KAAiB;IACxD,KAAK,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,UAAkD,EAAE,GAAW,EAAE,EAAE;QAC9G,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,wBAAwB,CAAC,OAAO,CACpC,CAAC,UAAsE,EAAE,GAAW,EAAE,EAAE;QACtF,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IACF,KAAK,CAAC,uBAAuB,CAAC,OAAO,CACnC,CAAC,UAAsE,EAAE,GAAW,EAAE,EAAE;QACtF,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;AACJ,CAAC;AAfD,4DAeC;AAED,SAAS,eAAe,CACtB,UAAsE,EACtE,GAAW,EACX,KAAiB;;IAEjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEvC,IAAI,4BAA4B,GAAG,QAAQ,CAAC;IAC5C,IAAI,4BAA4B,GAAG,QAAQ,CAAC;IAC5C,IAAI,0BAA0B,GAAG,MAAM,CAAC;IACxC,IAAI,0BAA0B,GAAG,MAAM,CAAC;IAExC,IAAI,gBAAgB,CAAC;IACrB,QAAQ,UAAU,CAAC,IAAI,EAAE;QACvB,KAAK,WAAW;YACd,gBAAgB,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;YAClD,IAAI,gBAAgB,EAAE;gBACpB,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjF,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC5E;YACD,MAAM;QACR,KAAK,cAAc;YACjB,gBAAgB,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACnD,IAAI,gBAAgB,EAAE;gBACpB,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjF,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC5E;YACD,MAAM;QACR,KAAK,cAAc;YACjB,MAAM;QACR,KAAK,cAAc;YACjB,gBAAgB,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACnD,IAAI,gBAAgB,EAAE;gBACpB,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjF,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC5E;YACD,MAAM;QACR,KAAK,aAAa;YAChB,gBAAgB,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACnD,IAAI,gBAAgB,EAAE;gBACpB,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjF,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC5E;YACD,MAAM;QACR,KAAK,gBAAgB;YACnB,MAAM;QACR,KAAK,kBAAkB;YACrB,MAAM;QACR,KAAK,mBAAmB;YACtB,MAAM;QACR;YACE,gBAAgB,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACnD,IAAI,gBAAgB,EAAE;gBACpB,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjF,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3E,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACjF,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC5E;YACD,MAAM;KACT;IAID,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,4BAA4B,EAAE,0BAA0B,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,4BAA4B,EAAE,0BAA0B,CAAC,CAAC;IACjG,MAAM,cAAc,GAAG,KAAK,CAAC,sBAAsB,CACjD,4BAA4B,EAC5B,4BAA4B,CAC7B,CAAC,gBAAgB,CAAC;IACnB,MAAM,aAAa,GAAG,KAAK,CAAC,sBAAsB,CAChD,0BAA0B,EAC1B,0BAA0B,CAC3B,CAAC,gBAAgB,CAAC;IAEnB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnD,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,UAAU,EAAE;QACzB,MAAA,UAAU,CAAC,UAAU,0CAAE,aAAa,CAAC;YACnC,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;YACtD,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;YACtD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;KACJ;IAGD,IAAI,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE;QACxG,MAAM,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QACxF,IAAI,wBAAwB,GAAG,KAAK,CAAC,kBAAkB,EAAE,EAAE;YACzD,eAAe,GAAG,IAAI,CAAC;SACxB;KACF;IAED,IAAI,oBAAoB,GAAG,KAAK,CAAC,mBAAmB;QAClD,CAAC,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC;QAC5F,CAAC,CAAC,KAAK,CAAC;IACV,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,mBAAmB,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,EAAE;QAC7G,MAAM,sBAAsB,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAChF,IAAI,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,uBAAuB,EAAE,EAAE;YACtF,oBAAoB,GAAG,IAAI,CAAC;SAC7B;KACF;IAED,IAAI,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE;QACvG,MAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QACxF,IAAI,wBAAwB,GAAG,KAAK,CAAC,mBAAmB,EAAE,EAAE;YAC1D,eAAe,GAAG,IAAI,CAAC;SACxB;KACF;IAED,IAAI,qBAAqB,GAAG,KAAK,CAAC,oBAAoB;QACpD,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC;QAC5D,CAAC,CAAC,KAAK,CAAC;IACV,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,oBAAoB,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE;QAChH,MAAM,sBAAsB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QAChF,IAAI,sBAAsB,GAAG,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,yBAAyB,EAAE,EAAE;YACzF,qBAAqB,GAAG,IAAI,CAAC;SAC9B;KACF;IAED,IACE,CAAC,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,oBAAoB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,qBAAqB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC9D;QACA,IAAI,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC1D,KAAK,CAAC,UAAU,CAAC,WAAW,CAC1B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,KAAK,cAAc;gBAChC,CAAC,CAAC,KAAK,CAAC,iBAAiB;gBACzB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc;oBACpC,CAAC,CAAC,KAAK,CAAC,qBAAqB;oBAC7B,CAAC,CAAC,KAAK,CAAC,cAAc,CACzB,CAAC;SACH;QAED,IAAI,qBAAqB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAChE,KAAK,CAAC,UAAU,CAAC,WAAW,CAC1B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,KAAK,WAAW;gBAC7B,CAAC,CAAC,KAAK,CAAC,qBAAqB;gBAC7B,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa;oBACnC,CAAC,CAAC,KAAK,CAAC,sBAAsB;oBAC9B,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAC5B,CAAC;SACH;QAED,IAAI,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC1D,KAAK,CAAC,UAAU,CAAC,WAAW,CAC1B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,KAAK,WAAW;gBAC7B,CAAC,CAAC,KAAK,CAAC,iBAAiB;gBACzB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa;oBACnC,CAAC,CAAC,KAAK,CAAC,mBAAmB;oBAC3B,CAAC,CAAC,KAAK,CAAC,cAAc,CACzB,CAAC;SACH;QACD,IAAI,oBAAoB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC/D,KAAK,CAAC,UAAU,CAAC,WAAW,CAC1B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,KAAK,cAAc;gBAChC,CAAC,CAAC,KAAK,CAAC,mBAAmB;gBAC3B,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc;oBACpC,CAAC,CAAC,KAAK,CAAC,sBAAsB;oBAC9B,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAC3B,CAAC;SACH;QAGD,IACE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE;YAExD,KAAK,CAAC,UAAU,GAAG,CAAC;YACpB,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,EACxG;YACA,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3G,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC5B,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3F,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC7B,CAAC,CAAC;YACH,MAAA,UAAU,CAAC,UAAU,0CAAE,aAAa,CAAC;gBACnC,OAAO,EAAE,KAAK,GAAG,CAAC;aACnB,CAAC,CAAC;SACJ;QACD,IAEE,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;YACnC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAClG,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,EACxG;YACA,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/E,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC5B,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC7B,CAAC,CAAC;YACH,MAAA,UAAU,CAAC,UAAU,0CAAE,aAAa,CAAC;gBACnC,OAAO,EAAE,KAAK,GAAG,SAAS,GAAG,CAAC;aAC/B,CAAC,CAAC;SACJ;QACD,IACE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM;YACnE,KAAK,CAAC,SAAS,GAAG,CAAC;YACnB,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,CAAC,EACpG;YACA,MAAM,MAAM,GACV,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3G,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC5B,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtG,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAChC,CAAC,CAAC;YACH,MAAA,UAAU,CAAC,UAAU,0CAAE,aAAa,CAAC;gBACnC,OAAO,EAAE,MAAM,GAAG,CAAC;aACpB,CAAC,CAAC;SACJ;QACD,IACE,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;YAC3C,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpG,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,CAAC,EACpG;YACA,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACjF,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC5B,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAChC,CAAC,CAAC;YACH,MAAA,UAAU,CAAC,UAAU,0CAAE,aAAa,CAAC;gBACnC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC;aACjC,CAAC,CAAC;SACJ;KAEF;SAAM;QACL,KAAK,CAAC,UAAU,CAAC,WAAW,CAC1B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,KAAK,MAAM;YACxB,CAAC,CAAC,KAAK,CAAC,SAAS;YACjB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc;gBACpC,CAAC,CAAC,KAAK,CAAC,cAAc;gBACtB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW;oBACjC,CAAC,CAAC,KAAK,CAAC,cAAc;oBACtB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc;wBACpC,CAAC,CAAC,KAAK,CAAC,iBAAiB;wBACzB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,gBAAgB;4BACtC,CAAC,CAAC,KAAK,CAAC,mBAAmB;4BAC3B,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa;gCACnC,CAAC,CAAC,KAAK,CAAC,gBAAgB;gCACxB,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,kBAAkB;oCACxC,CAAC,CAAC,KAAK,CAAC,qBAAqB;oCAC7B,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc;wCACpC,CAAC,CAAC,KAAK,CAAC,iBAAiB;wCACzB,CAAC,CAAC,KAAK,CAAC,sBAAsB,CACjC,CAAC;KACH;IAID,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE;QAC3D,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;KAC/D;IACD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACtD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5B,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ;SAClD,CAAC,CAAC;KAIJ;IACD,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACtD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5B,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ;YACzC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ;SAClD,CAAC,CAAC;KAKJ;IACD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACtD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ;SACpD,CAAC,CAAC;KAIJ;IACD,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACtD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5B,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ;YACzC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ;SACpD,CAAC,CAAC;KAKJ;AAEH,CAAC;AAED,SAAgB,sBAAsB,CACpC,KAAiB,EACjB,WAAoD,EACpD,sBAA+B,IAAI;IAEnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;IAEhD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC5E,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE5E,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;YAC7C,IAAI,GAAG,KAAK,QAAQ,EAAE;gBACpB,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;oBAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE;wBAC9C,SAAS;qBACV;oBACD,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBACpD,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,EAAE;wBAC/C,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;wBAC/B,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACP;iBACF;aACF;YACD,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE;gBAC/B,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;oBAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE;wBAC9C,SAAS;qBACV;oBACD,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBACpD,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE;wBACzE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;wBAC3B,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACP;iBACF;aACF;YAED,IAAI,QAAQ,EAAE;gBACZ,MAAM;aACP;SACF;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC7C,IAAI,GAAG,KAAK,QAAQ,EAAE;oBACpB,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;wBAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE;4BAC9C,SAAS;yBACV;wBACD,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACpD,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,EAAE;4BAC/C,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;4BAC/B,QAAQ,GAAG,IAAI,CAAC;4BAChB,MAAM;yBACP;qBACF;iBACF;gBACD,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE;oBAC/B,KAAK,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;wBAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE;4BAC9C,SAAS;yBACV;wBACD,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACpD,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE;4BACzE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;4BAC3B,QAAQ,GAAG,IAAI,CAAC;4BAChB,MAAM;yBACP;qBACF;iBACF;gBAED,IAAI,QAAQ,EAAE;oBACZ,MAAM;iBACP;aACF;SACF;QACD,IAAI,QAAQ,EAAE;YACZ,iBAAiB,EAAE,CAAC;SACrB;IACH,CAAC,CAAC;IACF,IAAI,mBAAmB,EAAE;QACvB,iBAAiB,EAAE,CAAC;QACpB,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;YAC/C,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAClD;aAAM;YACL,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAClD;QACD,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;YAC/C,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAClD;aAAM;YACL,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAClD;KACF;IAED,KAAK,CAAC,wBAAwB,CAAC,OAAO,CACpC,CAAC,UAAsE,EAAE,GAAW,EAAE,EAAE;;QACtF,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,MAAA,UAAU,CAAC,UAAU,0CAAE,MAAM,EAAE,CAAC;IAClC,CAAC,CACF,CAAC;IACF,KAAK,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;IAE3C,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,IAAI,2BAA2B,GAAG,KAAK,CAAC;IACxC,IAAI,0BAA0B,GAAG,KAAK,CAAC;IACvC,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE;QAChF,gBAAgB,GAAG,IAAI,CAAC;KACzB;IACD,IAAI,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE;QAChG,wBAAwB,GAAG,IAAI,CAAC;KACjC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE;QACjG,0BAA0B,GAAG,IAAI,CAAC;KACnC;IAED,IAAI,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,IAAI,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,EAAE;QACjH,2BAA2B,GAAG,IAAI,CAAC;KACpC;IAED,IACE,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,cAAc;QAC9B,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAC3D;QACA,aAAa,GAAG,IAAI,CAAC;KACtB;IACD,IACE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB;QACpD,MAAM,IAAI,KAAK,CAAC,cAAc;QAC9B,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAC3D;QACA,kBAAkB,GAAG,IAAI,CAAC;KAC3B;IAED,IACE,QAAQ,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,cAAc;QAC9B,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAC1D;QACA,gBAAgB,GAAG,IAAI,CAAC;KACzB;IACD,IACE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB;QACrD,MAAM,IAAI,KAAK,CAAC,cAAc;QAC9B,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,EAC1D;QACA,sBAAsB,GAAG,IAAI,CAAC;KAC/B;IACD,IACE,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,cAAc;QAC9B,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,cAAc,EAC9B;QACA,QAAQ,GAAG,IAAI,CAAC;KACjB;IAGD,IAAI,gBAAgB,EAAE;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpE,KAAK,CAAC,sBAAsB,CAC1B,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,wBAAwB,EAAE;QAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,CAAC;QACzE,KAAK,CAAC,sBAAsB,CAC1B,cAAc,EACd,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IAED,IAAI,0BAA0B,EAAE;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1E,KAAK,CAAC,sBAAsB,CAC1B,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,2BAA2B,EAAE;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAC/E,KAAK,CAAC,sBAAsB,CAC1B,cAAc,EACd,cAAc,EACd,MAAM,EACN,MAAM,EACN,mBAAmB,EACnB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,gBAAgB,EAAE;QACpB,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC5F,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC;QACpF,KAAK,CAAC,sBAAsB,CAC1B,oBAAoB,EACpB,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,sBAAsB,EAAE;QAC1B,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC5F,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC,0BAA0B,CAAC,CAAC;QACjG,KAAK,CAAC,sBAAsB,CAC1B,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,aAAa,EAAE;QACjB,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC7F,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACtF,KAAK,CAAC,sBAAsB,CAC1B,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,kBAAkB,EAAE;QACtB,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC7F,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5F,MAAM,WAAW,GAAG,CAAC,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC,2BAA2B,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/F,KAAK,CAAC,sBAAsB,CAC1B,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;IACD,IAAI,QAAQ,EAAE;QACZ,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;QAC5F,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,CAAC,sBAAsB,EAAE,CAAC,aAAa,CAAC,CAAC;QACtG,KAAK,CAAC,sBAAsB,CAC1B,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,EAC1C,WAAW,CACZ,CAAC;KACH;AACH,CAAC;AAvTD,wDAuTC;AAED,SAAgB,oBAAoB,CAAC,KAAiB;IACpD,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,UAAkD,EAAE,GAAW,EAAE,EAAE;QACzG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,UAAkD,EAAE,GAAW,EAAE,EAAE;QACxG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAPD,oDAOC;AAED,SAAgB,uBAAuB,CAAC,KAAiB;IACvD,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,UAAkD,EAAE,GAAW,EAAE,EAAE;QACzG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,UAAkD,EAAE,GAAW,EAAE,EAAE;QACxG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAPD,0DAOC","file":"update-select-border.js","sourcesContent":["import { type IRect } from './../../vrender';\nimport type { Scenegraph } from '../scenegraph';\nimport type { CellRange, CellSubLocation } from '../../ts-types';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\n\nexport function updateAllSelectComponent(scene: Scenegraph) {\n scene.customSelectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n });\n\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n }\n );\n scene.selectedRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n updateComponent(selectComp, key, scene);\n }\n );\n}\n\nfunction updateComponent(\n selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation },\n key: string,\n scene: Scenegraph\n) {\n const table = scene.table;\n const [startColStr, startRowStr, endColStr, endRowStr] = key.split('-');\n const startCol = parseInt(startColStr, 10);\n const startRow = parseInt(startRowStr, 10);\n const endCol = parseInt(endColStr, 10);\n const endRow = parseInt(endRowStr, 10);\n // 下面为计算选中区域使用的行列值\n let computeRectCellRangeStartCol = startCol;\n let computeRectCellRangeStartRow = startRow;\n let computeRectCellRangeEndCol = endCol;\n let computeRectCellRangeEndRow = endRow;\n // 下面逻辑根据选中区域所属表格部分 来判断可视区域内容的选中单元格范围\n let visibleCellRange;\n switch (selectComp.role) {\n case 'rowHeader':\n visibleCellRange = table.getBodyVisibleRowRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'columnHeader':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'cornerHeader':\n break;\n case 'bottomFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n case 'rightFrozen':\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n }\n break;\n case 'rightTopCorner':\n break;\n case 'leftBottomCorner':\n break;\n case 'rightBottomCorner':\n break;\n default:\n visibleCellRange = table.getBodyVisibleCellRange();\n if (visibleCellRange) {\n computeRectCellRangeStartRow = Math.max(startRow, visibleCellRange.rowStart - 1);\n computeRectCellRangeEndRow = Math.min(endRow, visibleCellRange.rowEnd + 1);\n computeRectCellRangeStartCol = Math.max(startCol, visibleCellRange.colStart - 1);\n computeRectCellRangeEndCol = Math.min(endCol, visibleCellRange.colEnd + 1);\n }\n break;\n }\n // const cellRange = table.getCellRange(startCol, startRow);\n // const colsWidth = table.getColsWidth(cellRange.start.col, endCol);\n // const rowsHeight = table.getRowsHeight(cellRange.start.row, endRow);\n const colsWidth = table.getColsWidth(computeRectCellRangeStartCol, computeRectCellRangeEndCol);\n const rowsHeight = table.getRowsHeight(computeRectCellRangeStartRow, computeRectCellRangeEndRow);\n const firstCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeStartCol,\n computeRectCellRangeStartRow\n ).globalAABBBounds;\n const lastCellBound = scene.highPerformanceGetCell(\n computeRectCellRangeEndCol,\n computeRectCellRangeEndRow\n ).globalAABBBounds;\n\n selectComp.rect.setAttributes({\n x: firstCellBound.x1 - scene.tableGroup.attribute.x, //坐标xy在下面的逻辑中会做适当调整\n y: firstCellBound.y1 - scene.tableGroup.attribute.y,\n width: colsWidth,\n height: rowsHeight,\n visible: true\n });\n if (selectComp.fillhandle) {\n selectComp.fillhandle?.setAttributes({\n x: lastCellBound.x2 - scene.tableGroup.attribute.x - 3, // 调整小方块位置\n y: lastCellBound.y2 - scene.tableGroup.attribute.y - 3, // 调整小方块位置\n width: 6,\n height: 6,\n visible: true\n });\n }\n\n //#region 判断是不是按着表头部分的选中框 因为绘制层级的原因 线宽会被遮住一半,因此需要动态调整层级\n let isNearRowHeader = table.frozenColCount ? startCol === table.frozenColCount : false;\n if (!isNearRowHeader && table.frozenColCount && table.scrollLeft > 0 && startCol >= table.frozenColCount) {\n const startColRelativePosition = table.getColsWidth(0, startCol - 1) - table.scrollLeft;\n if (startColRelativePosition < table.getFrozenColsWidth()) {\n isNearRowHeader = true;\n }\n }\n\n let isNearRightRowHeader = table.rightFrozenColCount\n ? table.rightFrozenColCount > 0 && endCol === table.colCount - table.rightFrozenColCount - 1\n : false;\n if (!isNearRightRowHeader && table.rightFrozenColCount && endCol < table.colCount - table.rightFrozenColCount) {\n const endColRelativePosition = table.getColsWidth(0, endCol) - table.scrollLeft;\n if (endColRelativePosition > table.tableNoFrameWidth - table.getRightFrozenColsWidth()) {\n isNearRightRowHeader = true;\n }\n }\n\n let isNearColHeader = table.frozenRowCount ? startRow === table.frozenRowCount : true;\n if (!isNearColHeader && table.frozenRowCount && table.scrollTop > 0 && startRow >= table.frozenRowCount) {\n const startRowRelativePosition = table.getRowsHeight(0, startRow - 1) - table.scrollTop;\n if (startRowRelativePosition < table.getFrozenRowsHeight()) {\n isNearColHeader = true;\n }\n }\n\n let isNearBottomColHeader = table.bottomFrozenRowCount\n ? endRow === table.rowCount - table.bottomFrozenRowCount - 1\n : false;\n if (!isNearBottomColHeader && table.bottomFrozenRowCount && endRow < table.rowCount - table.bottomFrozenRowCount) {\n const endRowRelativePosition = table.getRowsHeight(0, endRow) - table.scrollTop;\n if (endRowRelativePosition > table.tableNoFrameHeight - table.getBottomFrozenRowsHeight()) {\n isNearBottomColHeader = true;\n }\n }\n\n if (\n (isNearRowHeader && selectComp.rect.attribute.stroke[3]) ||\n (isNearRightRowHeader && selectComp.rect.attribute.stroke[1]) ||\n (isNearColHeader && selectComp.rect.attribute.stroke[0]) ||\n (isNearBottomColHeader && selectComp.rect.attribute.stroke[2])\n ) {\n if (isNearRowHeader && selectComp.rect.attribute.stroke[3]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.leftBottomCornerGroup\n : scene.rowHeaderGroup\n );\n }\n\n if (isNearBottomColHeader && selectComp.rect.attribute.stroke[2]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightBottomCornerGroup\n : scene.bottomFrozenGroup\n );\n }\n\n if (isNearColHeader && selectComp.rect.attribute.stroke[0]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'rowHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightTopCornerGroup\n : scene.colHeaderGroup\n );\n }\n if (isNearRightRowHeader && selectComp.rect.attribute.stroke[1]) {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'columnHeader'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.rightBottomCornerGroup\n : scene.rightFrozenGroup\n );\n }\n\n //#region 调整层级后 滚动情况下会出现绘制范围出界 如body的选中框 渲染在了rowheader上面,所有需要调整选中框rect的 边界\n if (\n selectComp.rect.attribute.x < table.getFrozenColsWidth() &&\n // selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rowHeaderGroup.attribute.width &&\n table.scrollLeft > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = selectComp.rect.attribute.width - (table.getFrozenColsWidth() - selectComp.rect.attribute.x);\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + (table.getFrozenColsWidth() - selectComp.rect.attribute.x),\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width > 0\n });\n }\n if (\n // selectComp.rect.attribute.x < scene.rightFrozenGroup.attribute.x &&\n table.getRightFrozenColsWidth() > 0 && // right冻结列存在的情况下\n scene.rightFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.x + selectComp.rect.attribute.width > scene.rightFrozenGroup.attribute.x &&\n (selectComp.role === 'body' || selectComp.role === 'columnHeader' || selectComp.role === 'bottomFrozen')\n ) {\n const width = scene.rightFrozenGroup.attribute.x - selectComp.rect.attribute.x;\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x,\n width: width > 0 ? width : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: width - colsWidth > 0\n });\n }\n if (\n selectComp.rect.attribute.y < scene.colHeaderGroup.attribute.height &&\n table.scrollTop > 0 &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height =\n selectComp.rect.attribute.height - (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y);\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + (scene.colHeaderGroup.attribute.height - selectComp.rect.attribute.y),\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height > 0\n });\n }\n if (\n scene.bottomFrozenGroup.attribute.width > 0 &&\n scene.bottomFrozenGroup.attribute.height > 0 &&\n selectComp.rect.attribute.y + selectComp.rect.attribute.height > scene.bottomFrozenGroup.attribute.y &&\n (selectComp.role === 'body' || selectComp.role === 'rowHeader' || selectComp.role === 'rightFrozen')\n ) {\n const height = scene.bottomFrozenGroup.attribute.y - selectComp.rect.attribute.y;\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y,\n height: height > 0 ? height : 0\n });\n selectComp.fillhandle?.setAttributes({\n visible: height - rowsHeight > 0\n });\n }\n //#endregion\n } else {\n scene.tableGroup.insertAfter(\n selectComp.rect,\n selectComp.role === 'body'\n ? scene.bodyGroup\n : selectComp.role === 'columnHeader'\n ? scene.colHeaderGroup\n : selectComp.role === 'rowHeader'\n ? scene.rowHeaderGroup\n : selectComp.role === 'cornerHeader'\n ? scene.cornerHeaderGroup\n : selectComp.role === 'rightTopCorner'\n ? scene.rightTopCornerGroup\n : selectComp.role === 'rightFrozen'\n ? scene.rightFrozenGroup\n : selectComp.role === 'leftBottomCorner'\n ? scene.leftBottomCornerGroup\n : selectComp.role === 'bottomFrozen'\n ? scene.bottomFrozenGroup\n : scene.rightBottomCornerGroup\n );\n }\n //#endregion\n\n //#region 处理边缘被截问题\n let diffSize = 0;\n if (typeof selectComp.rect.attribute.lineWidth === 'number') {\n diffSize = Math.ceil(selectComp.rect.attribute.lineWidth / 2);\n }\n if (endCol === table.colCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[1] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (startCol === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[3] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n x: selectComp.rect.attribute.x + diffSize,\n width: selectComp.rect.attribute.width - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // x: selectComp.rect.attribute.x + diffSize,\n // width: selectComp.rect.attribute.width - diffSize\n // });\n }\n if (endRow === table.rowCount - 1) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[2] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n if (startRow === 0) {\n if (Array.isArray(selectComp.rect.attribute.lineWidth)) {\n diffSize = Math.ceil((selectComp.rect.attribute.lineWidth[0] ?? 0) / 2);\n }\n selectComp.rect.setAttributes({\n y: selectComp.rect.attribute.y + diffSize,\n height: selectComp.rect.attribute.height - diffSize\n });\n // selectComp.fillhandle?.setAttributes({\n // y: selectComp.rect.attribute.y + diffSize,\n // height: selectComp.rect.attribute.height - diffSize\n // });\n }\n //#endregion\n}\n\nexport function updateCellSelectBorder(\n scene: Scenegraph,\n selectRange: CellRange & { skipBodyMerge?: boolean },\n ifExtendSelectRange: boolean = true\n) {\n const table = scene.table;\n const newStartCol = selectRange.start.col;\n const newStartRow = selectRange.start.row;\n const newEndCol = selectRange.end.col;\n const newEndRow = selectRange.end.row;\n const skipBodyMerge = selectRange.skipBodyMerge;\n\n let startCol = Math.max(Math.min(newEndCol, newStartCol), 0);\n let startRow = Math.max(Math.min(newEndRow, newStartRow), 0);\n let endCol = Math.min(Math.max(newEndCol, newStartCol), table.colCount - 1);\n let endRow = Math.min(Math.max(newEndRow, newStartRow), table.rowCount - 1);\n //#region region 校验四周的单元格有没有合并的情况,如有则扩大范围\n const extendSelectRange = () => {\n let isExtend = false;\n for (let col = startCol; col <= endCol; col++) {\n if (col === startCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && mergeInfo.start.col < startCol) {\n startCol = mergeInfo.start.col;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && col === endCol) {\n for (let row = startRow; row <= endRow; row++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && Math.min(mergeInfo.end.col, table.colCount - 1) > endCol) {\n endCol = mergeInfo.end.col;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n if (!isExtend) {\n for (let row = startRow; row <= endRow; row++) {\n if (row === startRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && mergeInfo.start.row < startRow) {\n startRow = mergeInfo.start.row;\n isExtend = true;\n break;\n }\n }\n }\n if (!isExtend && row === endRow) {\n for (let col = startCol; col <= endCol; col++) {\n if (!table.isHeader(col, row) && skipBodyMerge) {\n continue;\n }\n const mergeInfo = getCellMergeInfo(table, col, row);\n if (mergeInfo && Math.min(mergeInfo.end.row, table.rowCount - 1) > endRow) {\n endRow = mergeInfo.end.row;\n isExtend = true;\n break;\n }\n }\n }\n\n if (isExtend) {\n break;\n }\n }\n }\n if (isExtend) {\n extendSelectRange();\n }\n };\n if (ifExtendSelectRange) {\n extendSelectRange();\n if (selectRange.start.col > selectRange.end.col) {\n selectRange.start.col = Math.max(startCol, endCol);\n selectRange.end.col = Math.min(startCol, endCol);\n } else {\n selectRange.start.col = Math.min(startCol, endCol);\n selectRange.end.col = Math.max(startCol, endCol);\n }\n if (selectRange.start.row > selectRange.end.row) {\n selectRange.start.row = Math.max(startRow, endRow);\n selectRange.end.row = Math.min(startRow, endRow);\n } else {\n selectRange.start.row = Math.min(startRow, endRow);\n selectRange.end.row = Math.max(startRow, endRow);\n }\n }\n //#endregion\n scene.selectingRangeComponents.forEach(\n (selectComp: { rect: IRect; fillhandle?: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.delete();\n selectComp.fillhandle?.delete();\n }\n );\n scene.selectingRangeComponents = new Map();\n\n let needRowHeader = false;\n let needRightRowHeader = false; // 右侧冻结\n let needColumnHeader = false;\n let needBottomColumnHeader = false; // 底部冻结\n let needBody = false;\n let needCornerHeader = false;\n let needRightTopCornerHeader = false;\n let needRightBottomCornerHeader = false;\n let needLeftBottomCornerHeader = false;\n if (startCol <= table.frozenColCount - 1 && startRow <= table.frozenRowCount - 1) {\n needCornerHeader = true;\n }\n if (endCol >= table.colCount - table.rightFrozenColCount && startRow <= table.frozenRowCount - 1) {\n needRightTopCornerHeader = true;\n }\n\n if (startCol <= table.frozenColCount - 1 && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needLeftBottomCornerHeader = true;\n }\n\n if (endCol >= table.colCount - table.rightFrozenColCount && endRow >= table.rowCount - table.bottomFrozenRowCount) {\n needRightBottomCornerHeader = true;\n }\n\n if (\n startCol <= table.frozenColCount - 1 &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRowHeader = true;\n }\n if (\n endCol >= table.colCount - table.rightFrozenColCount &&\n endRow >= table.frozenRowCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1\n ) {\n needRightRowHeader = true;\n }\n\n if (\n startRow <= table.frozenRowCount - 1 &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needColumnHeader = true;\n }\n if (\n endRow >= table.rowCount - table.bottomFrozenRowCount &&\n endCol >= table.frozenColCount &&\n startCol <= table.colCount - table.rightFrozenColCount - 1\n ) {\n needBottomColumnHeader = true;\n }\n if (\n startCol <= table.colCount - table.rightFrozenColCount - 1 &&\n endCol >= table.frozenColCount &&\n startRow <= table.rowCount - table.bottomFrozenRowCount - 1 &&\n endRow >= table.frozenRowCount\n ) {\n needBody = true;\n }\n\n // TODO 可以尝试不拆分三个表头和body【前提是theme中合并配置】 用一个SelectBorder 需要结合clip,并动态设置border的范围【依据区域范围 已经是否跨表头及body】\n if (needCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needColumnHeader, !needRowHeader, true];\n scene.createCellSelectBorder(\n startCol,\n startRow,\n cornerEndCol,\n cornerEndRow,\n 'cornerHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightTopCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, true, !needRightRowHeader, !needColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n startRow,\n endCol,\n cornerEndRow,\n 'rightTopCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n\n if (needLeftBottomCornerHeader) {\n const cornerEndCol = Math.min(endCol, table.frozenColCount - 1);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRowHeader, !needBottomColumnHeader, true, true];\n scene.createCellSelectBorder(\n startCol,\n cornerStartRow,\n cornerEndCol,\n endRow,\n 'leftBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightBottomCornerHeader) {\n const cornerStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const cornerStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needRightRowHeader, true, true, !needBottomColumnHeader];\n scene.createCellSelectBorder(\n cornerStartCol,\n cornerStartRow,\n endCol,\n endRow,\n 'rightBottomCorner',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.frozenRowCount - 1);\n const strokeArray = [true, !needRightTopCornerHeader, !needBody, !needCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n startRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'columnHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBottomColumnHeader) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderStartRow = Math.max(startRow, table.rowCount - table.bottomFrozenRowCount);\n const strokeArray = [!needBody, !needRightBottomCornerHeader, true, !needLeftBottomCornerHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n endRow,\n 'bottomFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderEndCol = Math.min(endCol, table.frozenColCount - 1);\n const strokeArray = [!needCornerHeader, !needBody, !needLeftBottomCornerHeader, true];\n scene.createCellSelectBorder(\n startCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'rowHeader',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needRightRowHeader) {\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const columnHeaderStartCol = Math.max(startCol, table.colCount - table.rightFrozenColCount);\n const strokeArray = [!needRightTopCornerHeader, true, !needRightBottomCornerHeader, !needBody];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n endCol,\n columnHeaderEndRow,\n 'rightFrozen',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n if (needBody) {\n const columnHeaderStartCol = Math.max(startCol, table.frozenColCount);\n const columnHeaderStartRow = Math.max(startRow, table.frozenRowCount);\n const columnHeaderEndCol = Math.min(endCol, table.colCount - table.rightFrozenColCount - 1);\n const columnHeaderEndRow = Math.min(endRow, table.rowCount - table.bottomFrozenRowCount - 1);\n const strokeArray = [!needColumnHeader, !needRightRowHeader, !needBottomColumnHeader, !needRowHeader];\n scene.createCellSelectBorder(\n columnHeaderStartCol,\n columnHeaderStartRow,\n columnHeaderEndCol,\n columnHeaderEndRow,\n 'body',\n `${startCol}${startRow}${endCol}${endRow}`,\n strokeArray\n );\n }\n}\n\nexport function hideCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 0);\n });\n}\n\nexport function restoreCellSelectBorder(scene: Scenegraph) {\n scene.selectingRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n scene.selectedRangeComponents.forEach((selectComp: { rect: IRect; role: CellSubLocation }, key: string) => {\n selectComp.rect.setAttribute('opacity', 1);\n });\n}\n"]}
|
|
@@ -37,14 +37,7 @@ function syncCheckedState(col, row, field, checked, state) {
|
|
|
37
37
|
if (recordIndex >= 0) {
|
|
38
38
|
const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();
|
|
39
39
|
if ((0, vutils_1.isValid)(null === (_b = state.checkedState.get(dataIndex)) || void 0 === _b ? void 0 : _b[field])) return state.checkedState.get(dataIndex)[field];
|
|
40
|
-
|
|
41
|
-
const parentDataIndex = dataIndex.split(",").slice(0, -1).join(",");
|
|
42
|
-
state.checkedState.has(parentDataIndex) && !0 === state.checkedState.get(parentDataIndex)[field] ? state.checkedState.set(dataIndex, {
|
|
43
|
-
[field]: !0
|
|
44
|
-
}) : state.checkedState.set(dataIndex, {
|
|
45
|
-
[field]: checked
|
|
46
|
-
});
|
|
47
|
-
} else state.checkedState.set(dataIndex, {
|
|
40
|
+
state.checkedState.has(dataIndex) ? state.checkedState.get(dataIndex)[field] = checked : state.checkedState.set(dataIndex, {
|
|
48
41
|
[field]: checked
|
|
49
42
|
});
|
|
50
43
|
}
|
|
@@ -129,7 +122,7 @@ function changeCheckboxOrder(sourceIndex, targetIndex, state) {
|
|
|
129
122
|
targetIndex = table.getRecordShowIndexByCell(targetIndex, 0)) : (source = table.isPivotTable() ? void 0 : table.getRecordIndexByCell(0, sourceIndex),
|
|
130
123
|
target = table.isPivotTable() ? void 0 : table.getRecordIndexByCell(0, targetIndex)),
|
|
131
124
|
(0, vutils_1.isNumber)(source) && (0, vutils_1.isNumber)(target)) {
|
|
132
|
-
if (
|
|
125
|
+
if (sourceIndex > targetIndex) {
|
|
133
126
|
const sourceRecord = checkedState.get(sourceIndex.toString());
|
|
134
127
|
for (let i = sourceIndex; i > targetIndex; i--) checkedState.set(i.toString(), checkedState.get((i - 1).toString()));
|
|
135
128
|
checkedState.set(targetIndex.toString(), sourceRecord);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CachedDataSource } from '../../data';\nimport type { CheckBox } from './../../vrender';\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate', state: StateManager) {\n state.headerCheckedState[field] = checked;\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\n}\n\n//#region CheckedState 状态维护\n\n/**\n * 创建cell节点时同步状态 如果状态缓存有则用 如果没有则设置缓存\n * @param col\n * @param row\n * @param field\n * @param checked\n * @returns\n */\nexport function syncCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n): boolean | 'indeterminate' {\n if (state.table.isHeader(col, row)) {\n if (isValid(state.headerCheckedState[field])) {\n return state.headerCheckedState[field];\n } else if (typeof checked === 'function') {\n return undefined;\n } else if (isValid(checked)) {\n state.headerCheckedState[field] = checked;\n } else if (state.checkedState?.size > 0) {\n const isAllChecked = state.updateHeaderCheckedState(field, col, row);\n return isAllChecked;\n }\n return state.headerCheckedState[field];\n }\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (isValid(state.checkedState.get(dataIndex)?.[field])) {\n return state.checkedState.get(dataIndex)[field];\n }\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else if (dataIndex.includes(',')) {\n // child record, sync parent record state\n const parentDataIndex = dataIndex.split(',').slice(0, -1).join(','); // get latest parent data index\n if (state.checkedState.has(parentDataIndex) && state.checkedState.get(parentDataIndex)[field] === true) {\n state.checkedState.set(dataIndex, {\n [field]: true\n });\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n return checked;\n}\n\n/**\n * 初始化check状态\n * @param records\n */\nexport function initCheckedState(records: any[], state: StateManager) {\n // clear checkbox state\n state.checkedState.clear();\n state.headerCheckedState = {};\n state.radioState = {};\n\n let isNeedInitHeaderCheckedStateFromRecord = false;\n state._checkboxCellTypeFields = [];\n state._headerCheckFuncs = {};\n state.table.internalProps.layoutMap.headerObjects.forEach((hd, index) => {\n if (hd.headerType === 'checkbox') {\n const headerChecked = (hd.define as CheckboxColumnDefine).checked as boolean;\n\n if (headerChecked === undefined || headerChecked === null || typeof headerChecked === 'function') {\n // 如果没有明确指定check的状态 则需要在下面遍历所有数据获取到节点状态 确定这个header的check状态\n isNeedInitHeaderCheckedStateFromRecord = true;\n if (typeof headerChecked === 'function') {\n state._headerCheckFuncs[hd.field as string | number] = headerChecked;\n }\n } else {\n state.headerCheckedState[hd.field as string | number] = headerChecked;\n }\n if ((hd.define.cellType === 'checkbox' || isFunction(hd.define.cellType)) && !hd.fieldFormat) {\n state._checkboxCellTypeFields.push(hd.field as string | number);\n }\n }\n });\n\n // for row series number\n if (state.table.leftRowSeriesNumberCount === 1) {\n state.headerCheckedState._vtable_rowSeries_number = false;\n state._checkboxCellTypeFields.push('_vtable_rowSeries_number');\n isNeedInitHeaderCheckedStateFromRecord = true;\n } else if (state.table.leftRowSeriesNumberCount > 1) {\n for (let i = 0; i < state.table.leftRowSeriesNumberCount; i++) {\n state.headerCheckedState[`_vtable_rowSeries_number_${i}`] = false;\n state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);\n }\n isNeedInitHeaderCheckedStateFromRecord = true;\n }\n\n //如果没有明确指定check的状态 遍历所有数据获取到节点状态 确定这个header的check状态\n if (isNeedInitHeaderCheckedStateFromRecord) {\n initRecordCheckState(records, state);\n }\n}\n\n/**\n * 更新header单元checked的状态,依据当前列每一个数据checked的状态。\n * @param field\n * @returns\n */\nexport function updateHeaderCheckedState(\n field: string | number,\n state: StateManager,\n col: number,\n row: number\n): boolean | 'indeterminate' {\n let allChecked = true;\n let allUnChecked = true;\n let hasChecked = false;\n state.checkedState.forEach((check_state: Record<string | number, boolean>, index: string | number | number[]) => {\n if ((index as string).includes(',')) {\n index = (index as string).split(',').map(item => {\n return Number(item);\n }) as number[];\n } else {\n index = Number(index);\n }\n const tableIndex = state.table.getTableIndexByRecordIndex(index as number);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n\n const data = state.table.dataSource?.get(index as number);\n if (mergeCell || (!state.table.internalProps.rowSeriesNumber?.enableTreeCheckbox && data?.vtableMerge)) {\n // 不参与check状态的计算\n return;\n }\n if (check_state?.[field] !== true) {\n allChecked = false;\n } else {\n allUnChecked = false;\n hasChecked = true;\n }\n });\n\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n\n if (hasChecked) {\n state.headerCheckedState[field] = 'indeterminate';\n return 'indeterminate'; //半选状态\n }\n return false;\n}\n\n/**\n * setRecords的时候虽然调用了initCheckedState 进行了初始化 但当每个表头的checked状态都用配置了的话 初始化不会遍历全部数据\n * @param records\n */\nexport function initLeftRecordsCheckState(records: any[], state: StateManager) {\n for (let index = state.checkedState.size; index < records.length; index++) {\n const record = records[index];\n state._checkboxCellTypeFields.forEach(field => {\n const value = record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean;\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n const dataIndex = index.toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (!checkbox) {\n // update state\n const field = table.getHeaderField(col, row);\n if (table.isHeader(col, row)) {\n //点击的表头部分的checkbox 需要同时处理表头和body单元格的状态\n table.stateManager.setHeaderCheckedState(field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n table.scenegraph.updateCheckboxCellState(col, row, checked);\n }\n } else {\n //点击的是body单元格的checkbox 处理本单元格的状态维护 同时需要检查表头是否改变状态\n table.stateManager.setCheckedState(col, row, field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n const oldHeaderCheckedState = table.stateManager.headerCheckedState[field];\n const newHeaderCheckedState = table.stateManager.updateHeaderCheckedState(field, col, row);\n if (oldHeaderCheckedState !== newHeaderCheckedState) {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, newHeaderCheckedState);\n }\n }\n }\n return;\n }\n const { checked: oldChecked, indeterminate } = checkbox.attribute;\n\n if (indeterminate) {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n checkbox._handlePointerUp();\n checkbox._handlePointerUp();\n }\n } else if (oldChecked) {\n if (checked) {\n // do nothing\n } else {\n checkbox._handlePointerUp();\n }\n } else {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n // do nothing\n }\n }\n}\n\nexport function setCellCheckboxStateByAttribute(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (checkbox) {\n if (checked === 'indeterminate') {\n (checkbox as CheckBox).setAttribute('indeterminate', true);\n (checkbox as CheckBox).setAttribute('checked', undefined);\n } else {\n (checkbox as CheckBox).setAttribute('indeterminate', undefined);\n (checkbox as CheckBox).setAttribute('checked', checked);\n }\n }\n}\n\nexport function changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { checkedState, table } = state;\n let source;\n let target;\n if (table.internalProps.transpose) {\n sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = table.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n // sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex);\n // targetIndex = table.getRecordShowIndexByCell(0, targetIndex);\n\n source = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, sourceIndex);\n target = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, targetIndex);\n }\n\n if (isNumber(source) && isNumber(target)) {\n sourceIndex = source;\n targetIndex = target;\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n // checkedState[i] = checkedState[i - 1];\n checkedState.set(i.toString(), checkedState.get((i - 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n // checkedState[i] = checkedState[i + 1];\n checkedState.set(i.toString(), checkedState.get((i + 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n }\n } else if (isArray(source) && isArray(target)) {\n sourceIndex = source[source.length - 1];\n targetIndex = target[target.length - 1];\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n const now = [...source];\n now[now.length - 1] = i;\n const last = [...source];\n last[last.length - 1] = i - 1;\n checkedState.set(now.toString(), checkedState.get(last.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n const now = [...source];\n now[now.length - 1] = i;\n const next = [...source];\n next[next.length - 1] = i + 1;\n checkedState.set(now.toString(), checkedState.get(next.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n }\n }\n}\n\nexport function getGroupCheckboxState(table: BaseTableAPI) {\n const result: any[] = [];\n const dataSource = table.dataSource as CachedDataSource;\n const groupKeyLength = dataSource.dataConfig.groupByRules.length + 1;\n dataSource.currentIndexedData.forEach((indexArr: number, index) => {\n if (isArray(indexArr) && indexArr.length === groupKeyLength) {\n // get record by index\n const vtableOriginIndex = (dataSource as CachedDataSource).getOriginRecordIndexForGroup(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction initRecordCheckState(records: any[], state: StateManager) {\n const table = state.table;\n const start = table.isPivotTable()\n ? 0\n : table.internalProps.transpose\n ? table.rowHeaderLevelCount\n : table.columnHeaderLevelCount;\n const end = table.isPivotTable()\n ? isArray(records)\n ? records.length\n : 0\n : table.internalProps.transpose\n ? table.colCount\n : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.isPivotTable() ? records[index] : table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\n state._checkboxCellTypeFields.forEach(field => {\n const value =\n record && (record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean);\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n if (isChecked === undefined || isChecked === null) {\n const headerCheckFunc = state._headerCheckFuncs[field];\n if (headerCheckFunc) {\n //如果定义的checked是个函数 则需要每个都去计算这个值\n const cellAddr = state.table.getCellAddrByFieldRecord(field, index);\n const globalChecked = getOrApply(headerCheckFunc as any, {\n col: cellAddr.col,\n row: cellAddr.row,\n table: state.table,\n context: null,\n value\n });\n isChecked = globalChecked;\n }\n }\n const dataIndex = table.isPivotTable() ? index.toString() : state.table.dataSource.getIndexKey(index).toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CachedDataSource } from '../../data';\nimport type { CheckBox } from './../../vrender';\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate', state: StateManager) {\n state.headerCheckedState[field] = checked;\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\n}\n\n//#region CheckedState 状态维护\n\n/**\n * 创建cell节点时同步状态 如果状态缓存有则用 如果没有则设置缓存\n * @param col\n * @param row\n * @param field\n * @param checked\n * @returns\n */\nexport function syncCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n): boolean | 'indeterminate' {\n if (state.table.isHeader(col, row)) {\n if (isValid(state.headerCheckedState[field])) {\n return state.headerCheckedState[field];\n } else if (typeof checked === 'function') {\n return undefined;\n } else if (isValid(checked)) {\n state.headerCheckedState[field] = checked;\n } else if (state.checkedState?.size > 0) {\n const isAllChecked = state.updateHeaderCheckedState(field, col, row);\n return isAllChecked;\n }\n return state.headerCheckedState[field];\n }\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (isValid(state.checkedState.get(dataIndex)?.[field])) {\n return state.checkedState.get(dataIndex)[field];\n }\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n return checked;\n}\n\n/**\n * 初始化check状态\n * @param records\n */\nexport function initCheckedState(records: any[], state: StateManager) {\n // clear checkbox state\n state.checkedState.clear();\n state.headerCheckedState = {};\n state.radioState = {};\n\n let isNeedInitHeaderCheckedStateFromRecord = false;\n state._checkboxCellTypeFields = [];\n state._headerCheckFuncs = {};\n state.table.internalProps.layoutMap.headerObjects.forEach((hd, index) => {\n if (hd.headerType === 'checkbox') {\n const headerChecked = (hd.define as CheckboxColumnDefine).checked as boolean;\n\n if (headerChecked === undefined || headerChecked === null || typeof headerChecked === 'function') {\n // 如果没有明确指定check的状态 则需要在下面遍历所有数据获取到节点状态 确定这个header的check状态\n isNeedInitHeaderCheckedStateFromRecord = true;\n if (typeof headerChecked === 'function') {\n state._headerCheckFuncs[hd.field as string | number] = headerChecked;\n }\n } else {\n state.headerCheckedState[hd.field as string | number] = headerChecked;\n }\n if ((hd.define.cellType === 'checkbox' || isFunction(hd.define.cellType)) && !hd.fieldFormat) {\n state._checkboxCellTypeFields.push(hd.field as string | number);\n }\n }\n });\n\n // for row series number\n if (state.table.leftRowSeriesNumberCount === 1) {\n state.headerCheckedState._vtable_rowSeries_number = false;\n state._checkboxCellTypeFields.push('_vtable_rowSeries_number');\n isNeedInitHeaderCheckedStateFromRecord = true;\n } else if (state.table.leftRowSeriesNumberCount > 1) {\n for (let i = 0; i < state.table.leftRowSeriesNumberCount; i++) {\n state.headerCheckedState[`_vtable_rowSeries_number_${i}`] = false;\n state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);\n }\n isNeedInitHeaderCheckedStateFromRecord = true;\n }\n\n //如果没有明确指定check的状态 遍历所有数据获取到节点状态 确定这个header的check状态\n if (isNeedInitHeaderCheckedStateFromRecord) {\n initRecordCheckState(records, state);\n }\n}\n\n/**\n * 更新header单元checked的状态,依据当前列每一个数据checked的状态。\n * @param field\n * @returns\n */\nexport function updateHeaderCheckedState(\n field: string | number,\n state: StateManager,\n col: number,\n row: number\n): boolean | 'indeterminate' {\n let allChecked = true;\n let allUnChecked = true;\n let hasChecked = false;\n state.checkedState.forEach((check_state: Record<string | number, boolean>, index: string | number | number[]) => {\n if ((index as string).includes(',')) {\n index = (index as string).split(',').map(item => {\n return Number(item);\n }) as number[];\n } else {\n index = Number(index);\n }\n const tableIndex = state.table.getTableIndexByRecordIndex(index as number);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n\n const data = state.table.dataSource?.get(index as number);\n if (mergeCell || (!state.table.internalProps.rowSeriesNumber?.enableTreeCheckbox && data?.vtableMerge)) {\n // 不参与check状态的计算\n return;\n }\n if (check_state?.[field] !== true) {\n allChecked = false;\n } else {\n allUnChecked = false;\n hasChecked = true;\n }\n });\n\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n\n if (hasChecked) {\n state.headerCheckedState[field] = 'indeterminate';\n return 'indeterminate'; //半选状态\n }\n return false;\n}\n\n/**\n * setRecords的时候虽然调用了initCheckedState 进行了初始化 但当每个表头的checked状态都用配置了的话 初始化不会遍历全部数据\n * @param records\n */\nexport function initLeftRecordsCheckState(records: any[], state: StateManager) {\n for (let index = state.checkedState.size; index < records.length; index++) {\n const record = records[index];\n state._checkboxCellTypeFields.forEach(field => {\n const value = record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean;\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n const dataIndex = index.toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (!checkbox) {\n // update state\n const field = table.getHeaderField(col, row);\n if (table.isHeader(col, row)) {\n //点击的表头部分的checkbox 需要同时处理表头和body单元格的状态\n table.stateManager.setHeaderCheckedState(field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n table.scenegraph.updateCheckboxCellState(col, row, checked);\n }\n } else {\n //点击的是body单元格的checkbox 处理本单元格的状态维护 同时需要检查表头是否改变状态\n table.stateManager.setCheckedState(col, row, field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n const oldHeaderCheckedState = table.stateManager.headerCheckedState[field];\n const newHeaderCheckedState = table.stateManager.updateHeaderCheckedState(field, col, row);\n if (oldHeaderCheckedState !== newHeaderCheckedState) {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, newHeaderCheckedState);\n }\n }\n }\n return;\n }\n const { checked: oldChecked, indeterminate } = checkbox.attribute;\n\n if (indeterminate) {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n checkbox._handlePointerUp();\n checkbox._handlePointerUp();\n }\n } else if (oldChecked) {\n if (checked) {\n // do nothing\n } else {\n checkbox._handlePointerUp();\n }\n } else {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n // do nothing\n }\n }\n}\n\nexport function setCellCheckboxStateByAttribute(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (checkbox) {\n if (checked === 'indeterminate') {\n (checkbox as CheckBox).setAttribute('indeterminate', true);\n (checkbox as CheckBox).setAttribute('checked', undefined);\n } else {\n (checkbox as CheckBox).setAttribute('indeterminate', undefined);\n (checkbox as CheckBox).setAttribute('checked', checked);\n }\n }\n}\n\nexport function changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { checkedState, table } = state;\n let source;\n let target;\n if (table.internalProps.transpose) {\n sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = table.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n // sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex);\n // targetIndex = table.getRecordShowIndexByCell(0, targetIndex);\n\n source = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, sourceIndex);\n target = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, targetIndex);\n }\n\n if (isNumber(source) && isNumber(target)) {\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n // checkedState[i] = checkedState[i - 1];\n checkedState.set(i.toString(), checkedState.get((i - 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n // checkedState[i] = checkedState[i + 1];\n checkedState.set(i.toString(), checkedState.get((i + 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n }\n } else if (isArray(source) && isArray(target)) {\n sourceIndex = source[source.length - 1];\n targetIndex = target[target.length - 1];\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n const now = [...source];\n now[now.length - 1] = i;\n const last = [...source];\n last[last.length - 1] = i - 1;\n checkedState.set(now.toString(), checkedState.get(last.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n const now = [...source];\n now[now.length - 1] = i;\n const next = [...source];\n next[next.length - 1] = i + 1;\n checkedState.set(now.toString(), checkedState.get(next.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n }\n }\n}\n\nexport function getGroupCheckboxState(table: BaseTableAPI) {\n const result: any[] = [];\n const dataSource = table.dataSource as CachedDataSource;\n const groupKeyLength = dataSource.dataConfig.groupByRules.length + 1;\n dataSource.currentIndexedData.forEach((indexArr: number, index) => {\n if (isArray(indexArr) && indexArr.length === groupKeyLength) {\n // get record by index\n const vtableOriginIndex = (dataSource as CachedDataSource).getOriginRecordIndexForGroup(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction initRecordCheckState(records: any[], state: StateManager) {\n const table = state.table;\n const start = table.isPivotTable()\n ? 0\n : table.internalProps.transpose\n ? table.rowHeaderLevelCount\n : table.columnHeaderLevelCount;\n const end = table.isPivotTable()\n ? isArray(records)\n ? records.length\n : 0\n : table.internalProps.transpose\n ? table.colCount\n : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.isPivotTable() ? records[index] : table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\n state._checkboxCellTypeFields.forEach(field => {\n const value =\n record && (record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean);\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n if (isChecked === undefined || isChecked === null) {\n const headerCheckFunc = state._headerCheckFuncs[field];\n if (headerCheckFunc) {\n //如果定义的checked是个函数 则需要每个都去计算这个值\n const cellAddr = state.table.getCellAddrByFieldRecord(field, index);\n const globalChecked = getOrApply(headerCheckFunc as any, {\n col: cellAddr.col,\n row: cellAddr.row,\n table: state.table,\n context: null,\n value\n });\n isChecked = globalChecked;\n }\n }\n const dataIndex = table.isPivotTable() ? index.toString() : state.table.dataSource.getIndexKey(index).toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n"]}
|