Neo4j 2.0.1 graphstyle.grass 用于多个标签

Bri*_*lie 5 css neo4j

我很难为具有多个标签的节点设置属性。

我的 graphstyle.grass 文件如下所示:

node {
  diameter: 40px;
  color: #aaaaaa;
  border-color: #888888;
  border-width: 1.5px;
  text-color-internal: #000000;
  caption: '{name}';
  font-size: 12px;
}

node.foo {
  color: #aaaaff;
}

node.bar {
  color: #aaffaa;
}

node.bar.a {
  border-color: #ff0000;
}

node.bar.b {
  border-color: #0000ff;
}
Run Code Online (Sandbox Code Playgroud)

因此,这里的目的是,如果您有“bar”标签,则节点将以某种方式着色,如果您还有“a”或“b”的附加标签,则您的边框将被适当着色。我的 CSS 知识很薄弱,但我认为这就是传统上多类选择器的完成方式。

我在 Neo 2.0.1 浏览器图形显示中看到的行为是,如果一个节点有多个标签,它会选择第一个标签,尝试在gras 文件中查找 node.first_label 选择器(如果找不到)它只是为其添加了一个新的选择器。那么两个具体的例子:

  1. 如果有一个带有标签 ['bar','a'] 的节点(按此顺序),那么 Neo4j 将找到上面的 node.bar 选择器并使用它,而不对第二个类执行任何操作。 a' 属性将不会被应用。
  2. 如果节点具有标签 ['a','bar'] (按该顺序),那么 Neo4j 将查找“node.a”形式的选择器,并且不会调用上面的任何选择器,而是创建一个新的选择器一组默认参数。

非常感谢任何指导或建议。

ako*_*ger 2

这是一个非常明智的做法,也是正确的。从 Neo4j 2.0.1 开始,图形样式表还不够聪明,无法处理链式类选择器。选择的顺序(正如您所观察到的)也被破坏了。

更新: 从2.2开始,支持多个类选择器,只要你手动编辑草定义即可。