mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-22 11:57:34 +00:00
refactor(tag): parent tag files count includes children (#7420)
This commit is contained in:
@@ -22,7 +22,7 @@ export const checkCellValueChanged = (oldVal, newVal) => {
|
||||
export const cellCompare = (props, nextProps) => {
|
||||
const {
|
||||
record: oldRecord, column, isCellSelected, isLastCell, highlightClassName, height, bgColor,
|
||||
showRecordAsTree, nodeDepth, hasChildNodes, isFoldedNode,
|
||||
showRecordAsTree, treeNodeIndex, treeNodeDepth, hasChildNodes, isFoldedTreeNode,
|
||||
} = props;
|
||||
const {
|
||||
record: newRecord, highlightClassName: newHighlightClassName, height: newHeight, column: newColumn, bgColor: newBgColor,
|
||||
@@ -49,9 +49,10 @@ export const cellCompare = (props, nextProps) => {
|
||||
!ObjectUtils.isSameObject(column.data, newColumn.data) ||
|
||||
bgColor !== newBgColor ||
|
||||
showRecordAsTree !== nextProps.showRecordAsTree ||
|
||||
nodeDepth !== nextProps.nodeDepth ||
|
||||
treeNodeIndex !== nextProps.treeNodeIndex ||
|
||||
treeNodeDepth !== nextProps.treeNodeDepth ||
|
||||
hasChildNodes !== nextProps.hasChildNodes ||
|
||||
isFoldedNode !== nextProps.isFoldedNode ||
|
||||
isFoldedTreeNode !== nextProps.isFoldedTreeNode ||
|
||||
props.groupRecordIndex !== nextProps.groupRecordIndex ||
|
||||
props.recordIndex !== nextProps.recordIndex
|
||||
);
|
||||
|
@@ -27,7 +27,6 @@ export const generateKeyTreeNodeRowIdMap = (tree) => {
|
||||
return tree_node_key_row_id_map;
|
||||
};
|
||||
|
||||
|
||||
export const getValidKeyTreeNodeFoldedMap = (keyTreeNodeFoldedMap, treeNodeKeyRecordIdMap) => {
|
||||
if (!keyTreeNodeFoldedMap) return {};
|
||||
|
||||
@@ -71,6 +70,21 @@ export const checkIsTreeNodeShown = (nodeKey, keyFoldedNodeMap) => {
|
||||
return !foldedNodeKeys.some((foldedNodeKey) => nodeKey !== foldedNodeKey && nodeKey.includes(foldedNodeKey));
|
||||
};
|
||||
|
||||
export const updatedKeyTreeNodeMap = (nodeKey, node, keyTreeNodeMap) => {
|
||||
if (!nodeKey || !node || !keyTreeNodeMap) return;
|
||||
keyTreeNodeMap[nodeKey] = node;
|
||||
};
|
||||
|
||||
export const getTreeNodeByKey = (nodeKey, keyTreeNodeMap) => {
|
||||
if (!nodeKey || !keyTreeNodeMap) return null;
|
||||
return keyTreeNodeMap[nodeKey];
|
||||
};
|
||||
|
||||
export const getTreeNodeById = (nodeId, tree) => {
|
||||
if (!nodeId || !Array.isArray(tree) || tree.length === 0) return null;
|
||||
return tree.find((node) => getTreeNodeId(node) === nodeId);
|
||||
};
|
||||
|
||||
export const getTreeNodeId = (node) => {
|
||||
return node ? node[TREE_NODE_KEY.ID] : '';
|
||||
};
|
||||
@@ -95,7 +109,7 @@ export const resetTreeHasChildNodesStatus = (tree) => {
|
||||
const nextNode = tree[index + 1];
|
||||
const nextNodeKey = getTreeNodeKey(nextNode);
|
||||
const currentNodeKey = getTreeNodeKey(node);
|
||||
if (nextNode && checkTreeNodeHasChildNodes(node) && !nextNodeKey.includes(currentNodeKey)) {
|
||||
if (checkTreeNodeHasChildNodes(node) && (!nextNode || !nextNodeKey.includes(currentNodeKey))) {
|
||||
tree[index][TREE_NODE_KEY.HAS_CHILD_NODES] = false;
|
||||
}
|
||||
});
|
||||
@@ -131,3 +145,20 @@ export const addTreeChildNode = (newChildNode, parentNode, tree) => {
|
||||
}
|
||||
tree.splice(lastChildNodeIndex + 1, 0, newChildNode);
|
||||
};
|
||||
|
||||
export const getAllSubTreeNodes = (nodeIndex, tree) => {
|
||||
const treeLen = Array.isArray(tree) ? tree.length : 0;
|
||||
const parentNode = tree[nodeIndex];
|
||||
const parentNodeKey = getTreeNodeKey(parentNode);
|
||||
if (!parentNodeKey || nodeIndex === treeLen - 1) return [];
|
||||
|
||||
let subNodes = [];
|
||||
for (let i = nodeIndex + 1, len = treeLen; i < len; i++) {
|
||||
const currNodeKey = getTreeNodeKey(tree[i]);
|
||||
if (!currNodeKey || !currNodeKey.includes(parentNodeKey)) {
|
||||
break;
|
||||
}
|
||||
subNodes.push(tree[i]);
|
||||
}
|
||||
return subNodes;
|
||||
};
|
||||
|
Reference in New Issue
Block a user