Friday, August 12, 2005

Evaluating Timeline programs and producing a Timeline with Filemaker Pro 7

This week I have been evaluating programs that can produce a Timeline. Although I have the Timeliner 5.0 program from Tom Snyder that lets you export a Timeline in HTML, I really wanted the ability to collaborate with colleagues at other locations on a Timeline site so I wanted a program that enables you to not only interactively view a Timeline but add Timeline entries from the web. Most of the online interactive Timelines I found were developed with a combination of PhP, MySQL, and Flash (to provide the graphic animation).

I even discovered that our own New Media Center had developed such a Timeline for one of the campus history courses. However, being a Filemaker Developer, it dawned on me that I could probably produce a Timeline program using Filemaker Pro 7 since it essentially provides the same capabilities as Php and MySQL and the new flexible relationship features of Filemaker Pro 7 coupled with its powerful scripting features and multimedia container fields could probably produce enough graphic complexity to avoid the introduction of a Flash component.

I also wanted the ability to provide a tool that could be used by Faculty to easily produce comparative Timelines and Timelines that could include entries grouped in different ways. So I sketched out a scheme that relates a Timeline definition table to a Timeline entries table. I also related a Timeline Entry Media table to the Entries table.

The Timeline Definition record includes a start and stop date and year, a container field for a banner image, a category field that is a muti-key field, and calculated time increment fields based on elapsed time from the start date or year. Using the start year field you can also define calculated fields for decade and century.

The Entry record includes the Entry Type (person or event - I will colorcode events by type), Title (name for a person), Description, Representative Image, Date, Year, a multikey Category field, a multikey Comparator category field, Select Image, Select Audio, Select Video (used for linking to the Media table), and the Entry ID (Key field for relationship to Media table). Using the Date field you can also define calculated fields for month, year, decade, and century.

The Media Table has the fields Entry ID, Media Type, and a container field to contain the media object.

By relating the Timeline Definition start year (or decade or century) field to the entry record event year, decade, or century calculations using the <= operator then relating the stop year (or decade or century) to the entry record event year, decade, or century calculations using the >= operator, you can produce a display of all events recorded in the entry table that fall between the two dates. By adding a relationship by category, you can filter the events displayed. For example, if the outline definition category field includes the values New York, United States, or North America and you relate it to the category field of the entry records in the Entry table, only events in New York or the United States or North America will display in the Timeline. If you want only events in New York, you place the single value New York in the Timeline Definition category field. If you want to compare a timeline of events in New York with events in the United States, you define a relationship between the Timeline Defintion field Comparator with the Entry category field. Then design a layout that displays the entries from the first relationship above a timeline displaying entries from the second relationship.

Vertical timelines can be produced easily by designing a layout in list view with fields placed in a single column. A horizontal timeline is produced by using the calculated Time increment fields spaced along a demarcated line then linking the Time increment fields to the Entry table with the >= and <= operators and defining portals that refer to these relationships.

If you're interested in looking at my prototype, it is available for download at: