ArangoDb中web界面的可视化未按预期工作
我正在测试ArangoDb是否使用框架提供的图形功能 我试图创建一个非常简单的图,如下所示,类似于这里提供的Java驱动程序示例 我试图在web界面中可视化这个图形。图形可视化显示了一些我不理解的奇怪行为。在上面的设置中,我希望图中有四个节点,边在荷马-玛吉和巴特-丽莎之间,但我只看到两个节点和一条边,即荷马-玛吉ArangoDb中web界面的可视化未按预期工作,arangodb,Arangodb,我正在测试ArangoDb是否使用框架提供的图形功能 我试图创建一个非常简单的图,如下所示,类似于这里提供的Java驱动程序示例 我试图在web界面中可视化这个图形。图形可视化显示了一些我不理解的奇怪行为。在上面的设置中,我希望图中有四个节点,边在荷马-玛吉和巴特-丽莎之间,但我只看到两个节点和一条边,即荷马-玛吉 可视化视图本身有时会显示没有节点,在重新访问同一页面时会出现节点。图形查看器以随机顶点开始。这意味着无论何时打开,它都可能使用完全不同的起始顶点 这是因为在一般情况下,图形可以包含多
可视化视图本身有时会显示没有节点,在重新访问同一页面时会出现节点。图形查看器以随机顶点开始。这意味着无论何时打开,它都可能使用完全不同的起始顶点 这是因为在一般情况下,图形可以包含多个顶点,而不能同时显示所有顶点,因为渲染可能需要很长时间,甚至会使浏览器崩溃。要在开始时将哪个顶点放在显示的中心也不是很容易确定的,因为这需要图形查看器知道哪个顶点比其他顶点更重要,或者对用户来说最重要。因为它不知道,所以存在随机开始顶点选择 通过单击图形查看器右上角的过滤器图标,可以选择不同的起点/中心顶点。这将打开一个搜索输入字段,您可以使用该字段通过任何属性选择开始顶点,例如,如果顶点包含名称属性,则名称==Homer 如果存在这样的顶点,它将与其所有直接连接的顶点一起放在屏幕的中心。请注意,仅显示从起始顶点到其直接连接顶点的关系/边。默认情况下,间接连接不会显示在图形查看器中。单击所显示的任何顶点都将展开或收缩它们,并可能产生进一步的关系
同样,所有这些都完成了,因为可能无法在开始时显示整个图形—想象一个有几百万个节点的图形。但正如您的问题所表明的,当前的解决方案可能并不直观。图形查看器从一个随机顶点开始。这意味着无论何时打开,它都可能使用完全不同的起始顶点 这是因为在一般情况下,图形可以包含多个顶点,而不能同时显示所有顶点,因为渲染可能需要很长时间,甚至会使浏览器崩溃。要在开始时将哪个顶点放在显示的中心也不是很容易确定的,因为这需要图形查看器知道哪个顶点比其他顶点更重要,或者对用户来说最重要。因为它不知道,所以存在随机开始顶点选择 通过单击图形查看器右上角的过滤器图标,可以选择不同的起点/中心顶点。这将打开一个搜索输入字段,您可以使用该字段通过任何属性选择开始顶点,例如,如果顶点包含名称属性,则名称==Homer 如果存在这样的顶点,它将与其所有直接连接的顶点一起放在屏幕的中心。请注意,仅显示从起始顶点到其直接连接顶点的关系/边。默认情况下,间接连接不会显示在图形查看器中。单击所显示的任何顶点都将展开或收缩它们,并可能产生进一步的关系
同样,所有这些都完成了,因为可能无法在开始时显示整个图形—想象一个有几百万个节点的图形。但是,正如您的问题所表明的,当前的解决方案可能不直观。谢谢您的回答,我现在更了解工作流程了。我希望在这种情况下保持一致性,在这种情况下,重新访问graph选项卡不会改变我以前在我的案例中看到的节点和边,有时会显示在重新访问graph选项卡时根本没有要显示的节点。我还认为当前的行为可能有点混乱。我已经提议更改graph viewer的行为,但是,我不知道这将如何适应计划。更新:ArangoDB 2.6中的graph viewer已通过几种方式进行了修改:首先,它现在将向用户明确,它将只显示图形的一小部分,其次,如果图形非常小,它将完全显示它。2.6即将发布。感谢您的回复,我现在更了解工作流程了。我希望在这种情况下保持一致性,在这种情况下,重新访问graph选项卡不会改变我以前在我的案例中看到的节点和边,有时会显示在重新访问graph选项卡时根本没有要显示的节点。我还认为当前的行为可能有点混乱。我已经提议更改graph viewer的行为,但是,我不知道这将如何适应计划。更新:Arango中的graph viewer DB2.6已经在几个方面进行了修改:首先,它现在将向用户明确它将只显示图形的一小部分,其次,如果图形非常小,它将完全显示它。2.6将很快发布。
List<EdgeDefinitionEntity> edgeDefinitions = new ArrayList<EdgeDefinitionEntity>();
EdgeDefinitionEntity edgeDefinition = new EdgeDefinitionEntity();
edgeDefinition.setCollection("myEdgeCollection");
List<String> from = new ArrayList<String>();
from.add("myCollection1");
edgeDefinition.setFrom(from);
List<String> to = new ArrayList<String>();
to.add("myCollection2");
edgeDefinition.setTo(to);
edgeDefinitions.add(edgeDefinition);
GraphEntity graph = arangoDriver.createGraph("myGraph",
edgeDefinitions, null, true);
User myObject1 = new User("Homer", 38);
User myObject2 = new User("Bart", 36);
User myObject3 = new User("Marge", 39);
User myObject4 = new User("Lisa", 40);
DocumentEntity<User> vertexFrom1 = arangoDriver.graphCreateVertex(
"myGraph", "myCollection1", myObject1, true);
DocumentEntity<User> vertexFrom2 = arangoDriver.graphCreateVertex(
"myGraph", "myCollection1", myObject2, true);
DocumentEntity<User> vertexTo1 = arangoDriver.graphCreateVertex(
"myGraph", "myCollection2", myObject3, true);
DocumentEntity<User> vertexTo2 = arangoDriver.graphCreateVertex(
"myGraph", "myCollection2", myObject4, true);
EdgeEntity<?> edge1 = arangoDriver.graphCreateEdge("myGraph",
"myEdgeCollection", null, vertexFrom1.getDocumentHandle(),
vertexTo1.getDocumentHandle(), null, null);
EdgeEntity<?> edge2 = arangoDriver.graphCreateEdge("myGraph",
"myEdgeCollection", null, vertexFrom2.getDocumentHandle(),
vertexTo2.getDocumentHandle(), null, null);
{"_from":"myCollection1/1544266710","_to":"myCollection2/1544987606"}
{"_from":"myCollection1/1544528854","_to":"myCollection2/1545249750"}