Skip to content

Commit

Permalink
chore: update cal
Browse files Browse the repository at this point in the history
  • Loading branch information
zombieJ committed Aug 18, 2023
1 parent 36a91a8 commit 2db1737
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 20 deletions.
1 change: 1 addition & 0 deletions assets/virtual.less
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
z-index: 1;
border-bottom: @border;
left: calc(var(--sticky-left) + 1px) !important;
background: rgba(200, 200, 255) !important;
}
}
}
28 changes: 8 additions & 20 deletions src/StaticTable/BodyGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,58 +76,46 @@ const Grid = React.forwardRef<GridRef, GridProps>((props, ref) => {
});

// ======================= Col/Row Span =======================
const getRowColSpan = (
column: ColumnType<any>,
index: number,
): [rowSpan: number, colSpan: number] => {
let rowSpan: number;
let colSpan: number;

const getRowSpan = (column: ColumnType<any>, index: number): number => {
const record = flattenData[index]?.record;
const { onCell } = column;

if (onCell) {
const cellProps = onCell(record, index) as React.TdHTMLAttributes<HTMLElement>;
rowSpan = cellProps?.rowSpan;
colSpan = cellProps?.colSpan;
return cellProps?.rowSpan ?? 1;
}
return [rowSpan || 1, colSpan || 1];
return 1;
};

const extraRender: ListProps<any>['extraRender'] = info => {
const { start, end, getSize, offsetY } = info;

// Find first rowSpan column
const firstRowSpanColumns = flattenColumns.filter(
column => getRowColSpan(column, start)[0] === 0,
);
const firstRowSpanColumns = flattenColumns.filter(column => getRowSpan(column, start) === 0);

let startIndex = start;

for (let i = start; i >= 0; i -= 1) {
if (firstRowSpanColumns.every(column => getRowColSpan(column, i)[0] !== 0)) {
if (firstRowSpanColumns.every(column => getRowSpan(column, i) !== 0)) {
startIndex = i;
break;
}
}

// Find last rowSpan column
const lastRowSpanColumns = flattenColumns.filter(column => {
const rowSpan = getRowColSpan(column, end)[0];
const rowSpan = getRowSpan(column, end);
return rowSpan !== 1;
});

let endIndex = end;

for (let i = end; i < flattenData.length; i += 1) {
if (lastRowSpanColumns.every(column => getRowColSpan(column, i)[0] !== 0)) {
if (lastRowSpanColumns.every(column => getRowSpan(column, i) !== 0)) {
endIndex = Math.max(i - 1, end);
break;
}
}

console.log('Range:', start, end, '->', startIndex, endIndex);

// Loop create the rowSpan cell
const nodes: React.ReactElement[] = [];

Expand All @@ -140,7 +128,7 @@ const Grid = React.forwardRef<GridRef, GridProps>((props, ref) => {
const rowKey = getRowKey(item.record, i);

flattenColumns.forEach((column, colIndex) => {
const [rowSpan] = getRowColSpan(column, i);
const rowSpan = getRowSpan(column, i);

if (rowSpan > 1) {
const endItemIndex = i + rowSpan - 1;
Expand Down

0 comments on commit 2db1737

Please sign in to comment.