In February, Tribloom hosted a Lunch & Learn in Salt Lake City, UT. In a bit of free time I had a chance to visit the Family Search Center in downtown SLC. I have always been interested in learning more about my family history and this was the perfect opportunity to do a little research. I quickly found more information than I could easily manage on a piece of paper. Being an engineer, I decided that I needed a better system with which to manage my family history information. I looked around the internet and did not find any obvious free software that I could use so I decided to use Alfresco (I have since been informed of a free software calledGRAMPS that does manage personal family history). It took me about a day to customize to the point where it was usable and a couple more to do some really interesting things which I will outline here.
I decided that an Alfresco data list was an easy way to manage information on individual family members. The great thing about Alfresco is that I can also associate documents that "prove" the information that I had entered. So I created a simple custom data list which contained basic information such as first name, last name, birth date, death date, related documents (an association) and etc. I then modified the form config to take away the common metadata properties that I didn't want to see, name, created on, created by, and etc.
This worked out wonderfully, but it still was not easy to visualize how my family members were related to each other. A tabular list of data is great for computers but humans see in diagrams much more easily. So I dug up an old JS based graphing library that I had worked with in the past and built a tree visualization for my data list.
Building a visualization actually requires quite a bit more work than the data list itself. I needed to build a custom web script that would parse my data list and transform it into JSON, which the graphing library would use as input. I also needed to provide the correct metadata properties to the graphing library so that the visualization would make sense (i.e. the person's name would show up as the label for the person in the graph).
Very cool, but I still wasn't satisfied. How do I know which data list item is the "root" of the family tree? I decided to avoid that problem and allow the user to select any data list entry (family member) as the root of the family tree. In order to do this I needed to create a custom data list action (which in Alfresco 4.0 does not follow the "new" document library actions framework, but rather follows the 3.x methodology). I then needed to create a custom Surf component to display my new tree visualization.
A few quick edits later and I had a custom surf component added to the data list Share page for a family tree visualization that I could update by using a custom data list action for any family member that I wanted to see at the root of the tree.
Note: Most images are larger than displayed, right click and "view image" to see full sized versions.
I just added a zip archive of the source code. Use the link below. If anyone is interested in contributing to the project, please contact me directly using by emailing info[at]tribloom[dot]com.