Visualization in the Grouper UI uses the Visualization API to internally construct an acyclic directed graph of edges and nodes based around the current page's stem, group, or subject. There are options to show the relationships as either a text-only version, or a graphical SVG version based on the GraphViz library. In the graphical version, arrows point from left to right, from "parent" objects to "child" objects. Parents include folders containing objects, loader jobs that populate groups, members of a group, and left and right components of a composite group. Children objects include memberships, composite groups, and subobjects of a folder.
The More Actions→Visualization option will show up for folders, groups and subjects. For non-wheel users, it will only display objects you have read access to.
The main area of the visualization page is initially blank. To build and display the graph, click on the Generate button. Graph settings can be configured by clicking the button with the gear icon.
The settings are contained in a hidden frame that gets expanded when the gear icon next to the Visualization title is clicked. It can be collapsed by clicking the button again. The settings are persistent, and get updated when the Generate button is clicked. They may not be saved when simply refreshing the page, or when changing pages by clicking a linked object.
Clicking on the individual nodes navigates to a new visualization page based around the selected object. The GraphViz .dot output can be obtained by clicking on the "Copy raw .dot data" button to expand a text box. This text can be copied and then used in GraphViz offline, or used in online sites such as GraphVizFiddle. The raw SVG markup can be viewed by clicking on the "Copy SVG" button to expand the text box. This text can be copied and saved as a *.svg file (you must save as UTF-8 format!), which can then be opened directly in a web browser. The text box can be closed by clicking the Copy... button again.
[AI Chad] carefully review Chris's escaping commit/patch
[AI Chad] Discuss with chris moving grouperVisualization.js to commonHead.jsp... easier to debug in browser I think?
[AI Chad] I think the whole graph shouldnt have a tooltip, lets do a hide/show link in HTML for that perhaps... or maybe show the first couple lines with ellipses? lets discuss. Its difficult to focus on a line tooltip when the whole graph has one...
[AI Chris/Chad] Wordsmith. Chad, are things committed and I can run it and edit the text file (and if you see my commit and disagree we can discuss)? Or do you want to meet and discuss things first / team program it out? (Chad - this is branch GRP-1966-ui-visualization ; major changes are done, multiple editors no problem)
Is there a max graph size? e.g. maybe a configured limit of 2k objects? Lets discuss (Chad- can be added; right now can limit sibling objects, which can help with a lot of runaway queries)
Is there a max time to display? e.g. 3 minutes? lets discuss
Are the calls paged? Maybe size of 100 of each type of query? Lets discuss
(future revision) Color review (good for first release)
(future revision) New window option (and clicks in new window would control the parent window somehow)
(future revision) Resize option (like youtube full screen), or new tab/window
I think having the legend key be part of the graph ( not just hover/help button) is a better idea. Especially if people are capturing the image to embed in (shutter) documentation/paper/powerpoint presentations. Unless the key is “very big/long” I would just include it or not in the graph. ( checkbox to display it ? )
Having the hover stuff is nice too when you are interacting with it live. So I would not rule that design out. But I would personally prefer the static legend before the hover feature.
I don’t know how common it is to have multiple subject sources, but it might be useful to know memberships per source for groups too.
( Which also gives you a “grouper objects” vs “subjects’ counts too. )
It may also be useful, in some cases to deal with “grouper Entities” counts as well.
Having a “short cut” way to include the “object type” would be a very good thing.
However, an attribute (AKA: meta data) selection that is more generic would be awesome too.
I do have custom attributes that I would want reported as well. ( on folders and/or groups )
And yea, you might need to deal with attributes assigned to attributes. J