Showing posts with label gt project. Show all posts
Showing posts with label gt project. Show all posts

Dec 27, 2008

gt: Wishful thinking

(This post is more of a note to myself than anything else.)

I like holiday seasons. Finally I found some time to sit down and play a bit with the gt project.

There are a few new additions that would be very nice to see. These are:

  1. The ability to import and merge multiple XML files into a single family database

  2. Improve the start-up process as to allow users to either work with the existing data in the database or import fresh data

  3. Allow users to edit existing data and add new single entries to the current database (a.k.a. a gt editor, which would be a whole different story)

  4. Allow users to export existing data into XML form


I'm also open for suggestions, so feel free to drop me a comment.

Oct 21, 2008

gt: Adding the map

There is a new release of the gt project available (demo here). The changes in this release are:

  • Fixed table bug in IE. Silly me, I forgot to append the tbody element to the table before appending the tr and td elements.

  • Updated mouse pointers. Finally took care of the annoying bit with having the typewriter beam appear above clickable areas.

  • Added a details page for each person in the tree. This page will contain all detailed information about the person (from name, to description about the lad, to where he/she has lived, to *possibly* year of birth).

  • Added Google Maps to the mix. The "where he/she has lived" bit from the previous point refers to exactly this. Since day 1 there was the idea of having the ability specify the geographical locations of each place where a person has lived. These locations are specified through the location tag in the XML file.

Disclaimer: The demo might not work properly in Google Chrome due to Chrome's inability to read the XML file. This issue, however, does not exist when the application is accessed locally.

Oct 4, 2008

gt: Entering the Age Chart

I've added a new component to the gt project that will enable users to group family members by age. This chart has 2 modes:
  • Group all people. This mode shows all people in the database grouped according to their year of birth. It is activated by clicking on "show age chart" in the top menu.
  • Group relatives only. This mode shows all people related to a given person grouped by their year of birth. It is activated by clicking on "show age chart w/ relatives" in each person's toolbar window. The significant point for having this mode is to allow users to not only see "who their cousins are", but also to see which "cousins" fall in their age group.


The end result is something like the following:

Aug 25, 2008

gt project: Tracing a person's roots

As a new functionality, the gt project is now able to render the roots for a given person, that is to show the parents, grandparents, grand- grandparents, etc. of the person. While drawing this tree, the gt rendering engine will maintain the logical order of the family tree (i.e. grandparents at the top of the viewing pane and grandchildren at the bottom).

Latest builds are posted here. Demo is available here.

As a side note, Google Gears is having issues when processing a lot of data in Firefox (I haven't been able to reproduce this bug in IE). This may sometimes result in a browser crash. I apologize for the inconvenience.

Aug 5, 2008

gt project: Explaining the XML schema

The XML data file is the most important input to the gt project. It contains the necessary information to describe each person in the tree as well as his/her relationships with the other people in the data set. The schema of the XML file is as following:

<people>
Initiates a collection of people. This is the root node for the XML file.

  • <person id="1" name="Robert" dob="21-12-1959" dod="" gender="1">
    Initiates each person within the collection. It has the following attributes:
    id: An unique numeric ID given to each person within the collection.
    name: A short name for this person. It is used when rendering the family tree.
    dob: Date of birth in the format DD-MM-YYYY.
    dod: Date of death in the format DD-MM-YYYY. Left blank if not applicable.
    gender: Specifies the gender of the person (0 for a woman, 1 for a man).

    • <parents mother="5" father="4"/>
      Defines who are the parents of the given person. It has the following attributes:
      mother: The unique numeric ID of the mother. Use -1 to specify that mother is unknown.
      father: The unique numeric ID of the father. Use -1 to specify that father is unknown.

    • <spouses id="5,6"/>
      Describes the spouses of the given person. It has the following attributes:
      id: A string containing the comma separated unique numeric IDs of the person's spouses. Left blank if the person has no spouses.

    • <children id="3,2,1"/>
      Describes the children of the given person. It contains the following attributes:
      id: A string containing the comma separated unique numeric IDs of the person's children. Left blank if the person has no children.

    • <names>
            <name id="1" value="Robert Lee Gates"/>
      </names>

      Describes any mutations made to the person's full name. The following attributes are used for each name:
      id: A number representing the order in which the name has changed.
      value: A string representing the changes in the person's name.

    • <description></description>
      A placeholder for placing any free text information about the person.

    • <photos>
            <photo src="[URL]" description="" />
      </photos>

      A collection of photos where the given person is pictured. The following attributes are used for each photo:
      src: The URL of the photo.
      description: A placeholder for any free text captions.

    • <geo>
            <location coords="52.359458,4.887543"/>
      </geo>

      A collection of geographical locations for the given person. This information will be used together with Google Maps to present the locations where the person has spent significant periods of time. The following attributes are used for each location:
      coords: A string representing the comma separated latitude and longitude values of the location.
A sample XML file is available here.

Aug 4, 2008

gt project: Kickoff

Background
As some of you may know, over the past few weeks I have been extensively looking into organizing family data in a way that is easy to navigate, sort, and analyze. Having a good size data set to work with, it was obvious that automation should be used to organize this data. Hence, I have started the gt project (standing for genealogical tree project). In the following weeks I will be using this space to post updates on the project as well as various insights regarding the technology and approaches used throughout the project.


The Project
The gt project is a Web 2.0, client-side only web application that can operate both online and offline. Driven by the user interface, the application is to retrieve genealogical data from an XML file and utilize Google Gears to store, analyze, and render the whole data or subsets of it.

The gt project will have the following functionality:
  • A rendering engine that will display genealogical data as a tree-like structure

  • The ability to display genealogical data based on a person's mother or father or based on a marriage

  • The ability to provide a description and photos for a given person

  • The ability to sort family data according to people's age and not just according genealogical sequence

  • A geo locator, using Google Maps, that will display the geographical locations where a person has spent most of his/her life


Current State of Affairs
The core component of the gt project, the tree rendering engine, is completed. As of today, the application is able to read, sort, and render family data and display it as a tree-like structure. A demo version is available here.


Edit: The source code and all supplementary data for this project will be available here.