We have an HTML/CSS UI where there exists a top-most item (root) - you click that you get a text box to enter some content and save. It shows up as indented/styled child of the parent. Basically the items look like a list and the backgrounds are styled as per the 'level' of the node.
So it's just a typical ordered list looking like this:
- Root
- Level 1 Item 1
- Level 1 Item 2
- Level 1.1 Item 1
- Level 1.1 Item 2
- Level 1.1.1 Item 1
- Level 1 Item 3
And so on...
I've looked at quite a few posts on the forum before posting this question and there may seem to be some overlap. But here are the 'conflicting forces' that I intend to balance and am looking for the best 'way' to achieve it i.e., from a design standpoint rather than code.
So here are the forces:
- Editable - clicking a node should allow one to edit the text in it (probably by clicking an edit icon when 'hovering' over the node?)
- Adding a child - as simple as clicking 'add' or something similar to add a child
- The layout should be 'tree like' - this is the tricky part. The stakeholders prefer a top-down tree based visualization.
Conflicts:
- The biggest conflict is visualization vs data entry. It's easy to take the input as a list (like above), have the user click a button and the data is represented like a tree. However, this is a read only visualization (I've been unable to find an javascript-based visualization frameworks that allow inplace editing). The need is to be able to perform the analysis with the visualization in front of them rather than 'click to see' visualization
- Screen real estate: If I do somehow manage to have a pure tree-like top-down capture/viewing it may lead to a great deal of horizontal scrolling on a typical monitor.
- Show the tree in a left-to-right fashion (root on the left, leaves right). Similar problems like 2 but quite difficult IMHO to implement on a webpage.
My concern is how best to balance the need for visualization and data entry/modification without too much back-and-forth between them. What would be a good design to help edit/capture and visualize such data at the same time?
What's a better way if this doesn't seem to be the best solution?
Reason: The tool is to be used for top-down decomposition analysis and the requirement is to be able to capture what one would be able to effectively do on a whiteboard. The max character length of each 'node' is 50 characters.
Any ideas? Pointers to some tools/articles/frameworks etc., would be equally helpful too. I've looked at quite a few javascript visualization toolkits (Infovis, arbor.js, Raphael.js etc.,) but still in vain.
(NOTE:The typical file-system-like tree-view has been explicitly stated as unacceptable by the stakeholders)
UPDATE: Here's a screenshot from geni.com's family tree creation software. It's in flash (I prefer javascript) but the UI is kinda intuitive and am looking to pull off something similar: