The Quotidian Incorporated QViewer is a computer program designed to help users visualize time and events. The timeline files the QViewer displays are collections of events organized into categories. Timelines can contain personal information such as calendars and planners, as well as historical information, Twitter tweets, financial data, sports statistics, scientific results, data from traces of computer programs, data from databases, and almost any other kind of information with a time component.
The Web is full of information, but has no standard way to represent dates, time and duration. The QViewer can act as a helper application for Web browsers to handle links to Quotidian timeline files embedded in Web pages. In turn, the event objects in the QViewer can be defined with links so that when an event is selected, the user's Web browser is directed to follow a link. This allows timelines to act as an index to information on the Web or local collections of files.
|The past view direction showing three timelines|
Unlike in a Web browser, requests to display a link to a timeline or an event in the QViewer do not completely replace the current display. If it is not already loaded, the linked file is read and added to the existing set of timelines being displayed. If the link refers to an event in the linked file, the user's viewpoint is moved to show the event. The ability to show many timelines simultaneously allows the user to see events in the context of other contemporaneous events.
Events are depicted as objects in a three-dimensional space. One of the three axes of this imaginary space represents time and the other two define a plane in which categories of events are organized. Users can move their viewpoint around this space, change their direction of view and scale the three axes:
- As the viewpoint moves along the time axis, the display time of the QViewer changes. The display time is printed in the datetime box at the top of the display. The printed time is formatted using the timezone shown in the box next to the datetime box. When looking towards the past or the future, the display time provides the front surface, or clipping plane, for the view of the space. Event objects or parts of event objects that are closer to the user than that time are not shown. When the view direction is to the side, the display time is indicated by a thin vertical line at the center of the display. Events on one side of this line are before the the display time, and on the other side, after.
- The time axis can be smoothly scaled to show events and durations that range from billions of years to the smallest intervals measurable.
Side view showing the eons, eras, periods and epochs of geological time
- The viewpoint can move in the non-time dimensions (left/right or x and up/down or y ) to show different timelines.
Eastern theater of US Civil war showing nested categories for the contending armies
- The two non-time dimensions can be scaled together to show more timelines or more detail within a single timeline.
Scaling the display shows the divisions within the Union army
In their simplest form, events are displayed as open-ended tubes extending from a start time to an end time. The other dimensions are determined by the category to which the event is attached. The QViewer represents uncertainty about the start and end times of events by fading or blurring the edges of the event object.
|Shakespeare's date of birth is not known but is within a few days of his baptism|
Event definitions can be augmented with image and audio files. Images are drawn inside the event's boundaries. Audio files play when the display time is between the start and end times of the event. Sounds can be mapped to instants in the duration of an event or they can be associated more generally with the period of time that an event represents.
|A builtin extension marks events with geometric shapes|
The QViewer is intended to be part of a framework people can use to create timelines with their own data. Support for drawing simple events is part of the QViewer, but extensions can be added to an event's definition giving the author complete control over the representation of events. However, extensions should confine their drawing to the area bounded by the category to which the event is attached.
|A custom extension that reads historical stock data and draws a candle graph|
Extensions are pieces of code that, in addition to drawing, can load and unload timeline files, read data from other sources, and create sets of events. Some extensions are included in the QViewer for drawing simple graphs and geometrical objects, and for other tasks. Authors are free to create and distribute their own extensions.
|Two categories with drawings in endcuts|
Extensions are used to draw in the endcut of an event when the view direction is towards the past or future. The endcut is the rectangle where the plane of the display time intersects an event. The endcut is a convenient place to present the state of that event relative to the display time. A daily newspaper might have an event for each issue and attach an image of the front page. This could mean that parts of hundreds of front pages could be visible at the same time. Alternatively, a single event could be defined for the newspaper's entire period of publication. An extension can be attached to the event that draws the front page for the current time in the endcut.
The plane formed by the two non-time axes is used to organize timelines. The area is laid out as categories, each with a position and a size. The layout is constructed using a combination of the data supplied by authors and data computed by the QViewer.
|Category edit mode showing the nested layout of categories|
Categories can be nested inside other categories. The events of nested categories are drawn inside their parent's boundaries. Usually a child category will show details or some aspect of the parent category, but the definition of the relationship is left entirely to the timeline's author.
Categories have pathnames like the files and directories (folders) on the hard disk. This allows a category of events to be merged into or nested in other categories, including categories defined in other timeline files. By assigning a region in the plane for the category US History, for example, the categories US History/US Senate and US History/US Supreme Court will be nested inside the US History category's boundaries. Categories with no attached events are invisible, but still occupy a region of the category plane.
Since the QViewer can hold many categories and events at the same time, the display can become cluttered. If there are too many events, the display can be confusing and the speed at which the display is redrawn can slow down. The QViewer incorporates a number of mechanisms to reduce clutter and confusion. These are an important part of the experience of using the QViewer and are known collectively as data hiding.
One of the hiding mechanisms, level of detail, is directly controlled by the user. Authors of timelines can assign events to different levels. By clicking the right mouse button over an event, a popup menu appears with the names of the levels for the display of related events.
Authors of timelines can also assign events to time scale ranges. This is a way to show more or less detailed events at different time scales.
|In the Civil War example, at a lower time scale (bottom) only a few of the more important battles are visible. As the time scale increases, more battles of lesser importance become visible.|
The author of a timeline may place a summary event at level 0, replace that with a set of the most important events at level 1, and add more events of less importance at higher level numbers. However, the author of a category can assign any meaning to the level numbers. The author of a timeline should state which levels of detail his or her timeline uses and any special meanings assigned to those levels.
Other hiding mechanisms are linked to the movement and scaling controls. Rather than causing events to abruptly vanish, most of the mechanisms allow them to gradually fade away. Each mechanism has a range between where fading starts and where events become invisible. These ranges are controlled by internal variables that have reasonable default values. These defaults can be modified by the user. However, there is no single setting that is ideal for all sets of data, so the author can set these values on each of the categories he or she defines.
Some timeline files contain only events with relative times. Relative times are intervals with such values as "2.4 seconds", "3 weeks", or "200 years". When these files are loaded, the QViewer asks the user to specify an origin date and time. The origin is added to the relative times to produce dates and times for all events. Relative timelines are useful when the relation between events is more important than their relation to a fixed date and time. This can include a pattern of events that the user wants to move around in the QViewer's time axis, for example, a list of songs of known duration that are to be played one after another, but together are movable to any starting time.
The QViewer features a mode in which the display time is updated automatically based on the computer's internal clock. This allows the QViewer to be used as a clock, a calendar, a player for a list of songs, or a viewer for a set of images. Some extensions may use the periodic draw requests to check a data source and update the set of events as new data becomes available.
Multiple QViewer windows can be opened to show a set of loaded timelines from different viewpoints, different view directions, different non-time axis scales, and different levels of detail. The display time and the time scale are the same for all the windows.
The QViewer and QEditor have been tested on versions of Windows, Apple Mac, and Linux. The QViewer has a three-dimensional display that will work best on machines with hardware support for OpenGL rendering. Most mid-level and high-end desktop and laptop machines have this support. In the future, all new machines will.
The QViewer can be licensed for bundling with other applications that could benefit from time visualization.