Tinderbox User-to-User Forum (for formal tech support please email: info@eastgate.com)
http://www.eastgate.com/Tinderbox/forum//YaBB.cgi
Tinderbox Users >> Tinderbox applications >> Showing ages in multi-band timeline
http://www.eastgate.com/Tinderbox/forum//YaBB.cgi?num=1345829363

Message started by Sumner Gerard on Aug 24th, 2012, 1:29pm

Title: Showing ages in multi-band timeline
Post by Sumner Gerard on Aug 24th, 2012, 1:29pm

Multiband timelines can be useful to visualize how old various people (or reigns or eras or products) were/are/will be at the time of such-and-such event. The attractive new Aeon Timeline does this out of the box. Tinderbox Timeline View can also do this, quite elegantly and with more flexibility, after a little setup that takes advantage of 'non-plotted containers' discussed in Mark A's indispensable aTbRef here.

Five easy pieces:

1) Create 'Person' notes in the timeline container where you have your 'Event' notes. Make sure $StartDate is 'never' for these 'Person' notes, which will become containers in Step 3.

2) Add a semicolon-delimited list of Person names to $TimelineBandLabels in the timeline container. These labels don't have to be identical to the Person note names, but must be ordered consistently with the $TimelineBands assigned in Step 3.

3) Create a user attribute $BirthDate, enter a value for it in each of the 'Person' notes, and (optional but convenient) add an OnAdd action for each 'Person' note that sets $TimelineBand to the desired band for that Person on the timeline.

4) Move the 'Event' notes into the appropriate 'Person' containers (and add new ones as desired). If an 'Event' is associated with more than one 'Person', create aliases of the event and place these in the various other 'People' containers.

5) Place code in a stamp, agent, or rule to calculate and display the age for an 'Event' by subtracting the parent 'Person' container's $BirthDay from the Event's $Startdate.  For calculating age in whole years, where precision is not needed, this code could be:

     $DisplayExpression='$Name+"  (age: "+eval($StartDate.year-$BirthDate(parent).year)+")"'

Now, the ages for each Person can display for any Event, including ages of multiple Persons associated with the same Event; see 'Group event 1' and 'Group event 2' in the following screenshot:




In Tinderbox, unlike in specialized timeline software I've seen, this approach isn't limited to ages (time elapsed since a point in the past). One could put values for a $DeathDate (or whatever) user attribute in the non-plotted People (or whatever) containers and display time left until demise, launch, product expiry, end of facility availability period, retirement, the hurricane or typhoon landfall, final Armageddon-like explosion scene, etc.

Starting with the built-in prototypes can facilitate the steps above.  Example TBX here illustrates one way to do this.

Alas, Timeline View (as of TB v 5.11.2) does not seem to support $HoverExpression, which would be ideal for exploring a crowded timeline.  So, to make do, I set up a stamp that sets $DisplayExpression to add age to the display, and another that removes age from the display.  When I need to show or hide age detail I simply select the desired Event note(s) and apply the relevant stamp.  Further automation can be added as necessary.

Things I can't figure out:

-- Is there a way to reduce the font of the $TimelineBandLabels, as *seems* possible from screenshots in aTbRef? (Can see how to change color and opacity, but not size).

-- How can one prevent the unattractive progressive darkening of a $TimelineMarker line when it passes through successive aliases (see 'Group event 2' in the example)? The JavaScript also produces this progressive darkening when the 'exported' timeline is embedded in an html page.

Title: Re: Showing ages in multi-band timeline
Post by Mark Anderson on Aug 24th, 2012, 4:14pm

Nice walkthrough - thanks! As to your questions:

Band labels. The bands use alternating $MapBackgroundColor and (a tint of) $TimelineColor. I don't believe there are any controls for the colour/opacity/font of these labels. I think the smaller label seen in the blue sidebar in this image is from an earlier version since which label sizes have been harmonised.

Marker bars.  I think this is an unexpected result - best touch base with support.

Title: Re: Showing ages in multi-band timeline
Post by Sumner Gerard on Aug 24th, 2012, 4:48pm


Quote:
I don't believe there are any controls for the colour/opacity/font of these labels.


Haven't tried these (actually, on second thought, I think I did try changing color and it worked though I didn't like the result) but did see the following aTbRef entries on controlling the appearance of band labels (as opposed to the bands themselves):

TimelineBandLabelColor

TimelineBandLabelOpacity

Being able to reduce the size of of the font when it is too "in your face" would be helpful.  Because of the other controls, I thought maybe there is already a way.

Will send email on timeline marker line to support.

Title: Re: Showing ages in multi-band timeline
Post by Mark Anderson on Aug 24th, 2012, 6:36pm

Mea cupla - yes - I added these to the main listing and forgot to update the relevant page in the section on timelines. with some 250 system attributes, it's easy to loose track! Anyway, the relevant page is now updated.

Tinderbox User-to-User Forum (for formal tech support please email: info@eastgate.com) » Powered by YaBB 2.2.1!
YaBB © 2000-2008. All Rights Reserved.