My notes on the design of FancyTree Client. Read More

Blogory Fancytree Client Design Notes.

How is Blogory using FancyTree? My server is a tree of Python objects, each at their own URL. This is called Object Publishing  Currently I download the HTML for the given node on the tree, and in the background download the json for the whole tree. It only takes a second or two two download 2000 objects. When they are downloaded, I switch from static HTML to fancytree. The user never notices.  

The first interesting change I have made is in search. If you type multiple words in the search box, it checks every fancytree node object to see if both of those words match the text. I like this approach better than the experimental fancytree filter.  I could share this. My problem is that it is a lot of work to release it, and no perceived benefit. If you are interested talk to me, maybe you can motivate me.  Maybe no one cares.

Currently I download about 2000 objects, but as the size climbs, I worry about the user experience. Let me tell you what I am planning on doing. Remember right now I download static HTML, and replace it with a fancytree, once the data is loaded. I want to switch to a more typical fancytree usage.  Download the static HTML for those with Javascript disabled, and then download just one level of the tree.  That should be blindingly fast.   As a user opens one level of the tree, the next level of the tree is loaded in the background, waiting for them to open the next node,  giving instantaneous response. But in the meantime the rest of the tree is being downloaded using callbacks. So I have to integrate lazy loading, along with loading the whole tree. Basically check if each object has already been created before creating it. Not that hard to do.

The harder thing to do is to integrate search with downloading the whole tree. As each node is downloaded, I have to run the search against it to see if it should get displayed and the tree counts updated and the display updated.  

Thanks for letting me write about this here. No one else would understand or care. Writing clears my thinking.

Right now the server and client only represent trees. Actually knowledge is a graph. Nodes can be in two different locations. I hope to implement this in the future, but have not done so yet.

I am struggling with the issue of which part of the software to release. I have made a lot of changes, it would be a lot of work to release this softwre, so I am posting here to start a conversation. If you are interested in what I have done, let me know.

Powered by Zopache, Grok, Zope and ZODB