@antv/s2
Version:
effective spreadsheet render core lib
48 lines • 1.93 kB
JavaScript
function getNodesByRange(nodes, key, minIndex, maxIndex) {
return nodes.filter((node) => node[key] >= minIndex && node[key] <= maxIndex);
}
export function getExtraFrozenColAxisNodes(facet, nodes) {
const extraNodes = [];
const { colCount, trailingColCount } = facet.getFrozenOptions();
if (colCount) {
const frozenLeafNodes = getNodesByRange(nodes, 'colIndex', 0, colCount - 1);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenHead = true;
extraNodes.push(newLeafNode);
});
}
if (trailingColCount) {
const total = nodes.length;
const frozenLeafNodes = getNodesByRange(nodes, 'colIndex', total - trailingColCount, total - 1);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenTrailing = true;
extraNodes.push(newLeafNode);
});
}
return extraNodes;
}
export function getExtraFrozenRowAxisNodes(facet, nodes) {
const extraNodes = [];
const { start, end } = facet.getCellRange();
const { rowCount, trailingRowCount } = facet.getFrozenOptions();
if (rowCount) {
const frozenLeafNodes = getNodesByRange(nodes, 'rowIndex', start, start + rowCount - 1);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenHead = true;
extraNodes.push(newLeafNode);
});
}
if (trailingRowCount) {
const frozenLeafNodes = getNodesByRange(nodes, 'rowIndex', end - trailingRowCount + 1, end);
frozenLeafNodes.forEach((leafNode) => {
const newLeafNode = leafNode.clone();
newLeafNode.isFrozenTrailing = true;
extraNodes.push(newLeafNode);
});
}
return extraNodes;
}
//# sourceMappingURL=frozen.js.map