logic: show subnamespaces as nodes instead of their children
This commit is contained in:
@@ -43,6 +43,14 @@ const std::vector<HierarchyCache::HierarchyNode*>& HierarchyCache::HierarchyNode
|
||||
return m_children;
|
||||
}
|
||||
|
||||
void HierarchyCache::HierarchyNode::addChildIds(std::vector<Id>* nodeIds) const
|
||||
{
|
||||
for (const HierarchyNode* child : m_children)
|
||||
{
|
||||
nodeIds->push_back(child->getNodeId());
|
||||
}
|
||||
}
|
||||
|
||||
void HierarchyCache::HierarchyNode::addChildIdsRecursive(std::vector<Id>* nodeIds, std::vector<Id>* edgeIds) const
|
||||
{
|
||||
for (const HierarchyNode* child : m_children)
|
||||
@@ -122,6 +130,19 @@ void HierarchyCache::addAllChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds
|
||||
}
|
||||
}
|
||||
|
||||
void HierarchyCache::addFirstChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds) const
|
||||
{
|
||||
HierarchyNode* node = getNode(nodeId);
|
||||
if (node)
|
||||
{
|
||||
node->addChildIds(nodeIds);
|
||||
}
|
||||
else
|
||||
{
|
||||
nodeIds->push_back(nodeId);
|
||||
}
|
||||
}
|
||||
|
||||
void HierarchyCache::addFirstVisibleChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds) const
|
||||
{
|
||||
HierarchyNode* node = getNode(nodeId);
|
||||
|
||||
@@ -17,6 +17,7 @@ public:
|
||||
Id getLastVisibleParentNodeId(Id nodeId) const;
|
||||
|
||||
void addAllChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds, std::vector<Id>* edgeIds) const;
|
||||
void addFirstChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds) const;
|
||||
void addFirstVisibleChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds) const;
|
||||
|
||||
bool isChildOfVisibleNodeOrInvisible(Id nodeId) const;
|
||||
@@ -38,6 +39,7 @@ private:
|
||||
void addChild(HierarchyNode* child);
|
||||
const std::vector<HierarchyNode*>& getChildren() const;
|
||||
|
||||
void addChildIds(std::vector<Id>* nodeIds) const;
|
||||
void addChildIdsRecursive(std::vector<Id>* nodeIds, std::vector<Id>* edgeIds) const;
|
||||
void addVisibleNodeIdsRecursive(std::vector<Id>* nodeIds) const;
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ std::shared_ptr<Graph> Storage::getGraphForActiveTokenIds(const std::vector<Id>&
|
||||
if (Node::intToType(node.type) == Node::NODE_NAMESPACE)
|
||||
{
|
||||
ids.clear();
|
||||
m_hierarchyCache.addFirstVisibleChildIdsForNodeId(elementId, &ids);
|
||||
m_hierarchyCache.addFirstChildIdsForNodeId(elementId, &ids);
|
||||
|
||||
isNamespace = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user