Ethers
An ether is an object made use by a band
to map between pixel coordinates and date/time.
Each band keeps a single ether. The ether keeps track of the date
corresponding to the left (or top) edge of the visible area of the
band. That date corresponds to pixel offset 0 (see below). The
ether's sole responsibility is to return a date when given a
positive or negative pixel offset, and to return a pixel offset
when given a date.
An ether's mapping, abstract, is made visible to the user by an
ether painter.
Interface
An ether must expose the following Javascript interface:
constructor
( params )
params is an object whose
fields carry initialization settings for the ether. Different
ether classes require different fields in this initialization
object. Refer to the documentation of each ether class for
details (see
Ethers in Library below).
initialize
( timeline )
timeline is the timeline
to which this ether belongs. This method is called by the
timeline itself as it is being initialized. Client code is
not supposed to call this method.
dateToPixelOffset
( date )
Map the given
date argument
(a Javascript
Date) to a pixel offset
(positive or negative, float). Note that you must round the
result (e.g., using
Math.round()) before
you can use it as a coordinate of some element, e.g.,
elmt.style.left = Math.round(ether.dateToPixelOffset(aDate)) + "px";
pixelOffsetToDate
( pixels )
Map the given pixel offset (positive or negative, float) to a
Date.
setDate
( date )
Set the date that corresponds to pixel offset 0 to the
date argument.
shiftPixels
( pixels )
Shift the origin of the ether by the given number of pixels
(positive or negative, float). A positive
pixels makes the ether
start later, a negative
pixels
makes it start earlier. This method is equivalent to:
ether.setDate(ether.pixelOffsetToDate(pixels))
There are currently 2 ether classes provided by default:
Timeline.LinearEther and
Timeline.HotZoneEther.
They all expose the interface above, but they differ in their
initialization parameters.