LiveTree substitute


Is there any treeView plugin other than liveTree out there?


ExtJs has a tree (in fact a whole js-based UI suite) that's pretty
nice. What I like most is that you can declare the tree with a url
and let it render quickly, then query the db for the nodes and leaves.

Do know that ExtJS has a GPL3 license and a commercial license. If you use it for non-open source projects, you need to pay.

But is there any plugin to use it?
I've seen this [1], but there is no much doc about it out there.

And finally, just a couple of questions regarding the facilities of
- Can I populate the tree nodes with non-AR models? And with Ruby code
such as in LiveTree?
- Can I have leave nodes with different image icons? (yes, I need it :frowning:

Lots of thanks.


Peter De Berdt wrote:

@Peter -- You're right, I think they've changed their licensing three
times in six months!

@Damaris -- There are a couple of plugins out there for ExtJs. One of
them focuses specifically on the grids. The other (I forget the name
but google won't!) is much broader but I don't know if it deals with
the. Like the link you provided, I took the approach of writing one
for myself. It's a pretty straight foward mapping between ruby hashes
and the corresponding json.

ExtJs took a very nice hierarchical approach to their lib. I started
by modeling their core Observable component (namespaced so it doesn't
conflict with scriptaculous) and then created the next layer of the
ring by inheriting from that and adding the new attributes, and so
on. I made pretty heavy use of class_inheritable_xxx (array, reader,
etc) and a method_missing trick similar to what Rails does to let
content_columns appear as valid accessors on ARec classes. The only
reason I did this was so I could dynamically create the js necessary
for each context, writing it all in Ruby but interacting with the
client browser with js.

1. Yes, you can use whatever you like to populate the tree nodes. You
can hand roll js or use any type of data source you like to build the
nodes. Most of my trees use the "AsyncTreeNode" object for the root
node which allows you to get the UI up quickly and then query the app
for the nodes.

2. You can change the icon for every node if you like. One of the
attributes is the path to the icon. Of course you can set a default
and then only override where/if necessary.