logic: show subnamespaces as nodes instead of their children

This commit is contained in:
Eberhard Graether
2016-04-12 13:39:42 +02:00
parent b9c4bd05cd
commit b088ca6adf
3 changed files with 24 additions and 1 deletions
+21
View File
@@ -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);
+2
View File
@@ -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;
+1 -1
View File
@@ -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;
}