php - HTML/CSS 可视化 RBAC 图

标签 php html graphics data-visualization directed-acyclic-graphs

我的数据库中存储了一个 RBAC 结构(一个使用 Yii 构建的项目)。

我很想生成一个图表来可视化项目之间的关系,看看我是否没有犯逻辑错误,并向其他团队成员展示。

我正在考虑创建一个可以生成图形/树的页面。我想我可以处理服务器端部分,但我不知道如何生成 HTML/CSS(或图像)。

图中的节点可以有多个子节点和多个父节点。箭头是有方向的。示例:example

我不介意使用最新的 CSS3 和 HTML5 技术,因为它只会被选定的人使用。

最佳答案

我刚才遇到了类似的问题。我最终想到的解决方案是一个可以完美解决问题的小型 js 库,即 Dracula。

这里是图书馆的链接:https://github.com/strathausen/dracula

考虑到您的需求,您所要做的就是:

var g = new Graph();

g.addEdge('author', 'create');
g.addEdge('author', 'reader');
g.addEdge('author', 'admin');

// add here the other edges.

var layouter = new Graph.Layout.Spring();
layouter.layout();

var renderer = new Graph.Renderer.Raphael('#canvas', g, 400, 300);
renderer.draw();

有关更多信息,我会让您努力阅读文档。

希望对您有所帮助。

[附录]

我要补充一点,一般来说,显示节点和箭头的问题不是什么大问题,使用 svg 使它变得近乎微不足道。但是当你想用诸如“尽量减少交叉边的数量”、“在父节点下方显示子节点”等规则来组织节点的显示时,事情就变得复杂了,这些都需要复杂的数学运算。

我不认为 Dracula 允许人们自定义那种规则。尽管如此,考虑到您的评论,我认为可能有一种不太复杂的方法可以使布局看起来像垂直树,因为它是一个非循环图(至少看起来是)。但是你必须为此制作你自己的图书馆。

关于php - HTML/CSS 可视化 RBAC 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091302/

相关文章:

html - CSS 混淆 100%。需要三个方 block 相互粘连

javascript - 如何使用 jQuery 查找具有动态更新的 `active` 类且没有单击事件的元素?

algorithm - 将许多小多边形组合成一个(一些)大多边形

php - 安装 Drupal 时 RedHat/Centos 7.5 出现 "Fatal error: Allowed memory size of"错误

java - php像java中一样重新声明函数

php - 调用未定义的方法 mysqli::execute_query()

opengl - 我想知道如何实现 OpenGL 驱动程序来学习 opengl 内部结构?

php - 面向对象的性能问题

html - 消失的 <li> 内容。交替

Java Applet : painted ball does not appear in the hard-coded position. Applet 不保持恒定大小