Clone wiki

timesheets / status

SMIL Timing Support

Basic Timing

Our timesheet scheduler already supports most of the common SMIL Timing/Timesheets subset:

  • all timeContainer values: <par>, <seq>, <excl>
  • all timeAction values
  • positive, numeric values of begin/end and dur time attributes
  • repeatCount and repeatDur attributes.
  • first, prev, next, last attributes on <excl> AND <seq> time containers

These attributes are partially supported:

  • the fill/fillDefault attributes support 'hold', 'freeze', and 'default' values;
  • the implemented behavior for "restart" of elements is "whenNotActive"
  • The endSync attribute isn't supported yet.

Additional attribute not included in the specification:

  • mediaSync, for synchronization with audio/video elements. This attribute has the same purpose as syncMaster attribute, but using a more convenient syntax for our content in HTML.

Advanced Timing

Event-values allow to describe user interactions in a declarative way (e.g. begin= "elementID.click") and greatly ease the design of complex scenarios. They are supported by our timesheet scheduler, except using time offsets with an event value (eg. begin="elementID.click + 1s"). It supports multiple event-values in begin/end attributes.

SMIL Timesheet Specific Elements

Timing

Our timesheet parser supports all the SMIL Timing nodes above in both internal and external timesheets, as well as the Timesheet-specific <item> element and its attributes:

  • select
  • beginInc
  • index(selector, indexStart) function

Regarding the <timesheet> element, the media attribute is not supported yet. The src attribute is not supported, instead we use the html's <link> element to load external timesheets.

Prefetch

The <prefetch> element is not supported, and I don't plan to support it. It is defined in the SMIL PrefetchControl module and mentioned in the SMIL Timesheets draft. The reasons why I don't plan to support it are explained in this page.

Animations

Our timesheet scheduler doesn’t support any of the <animate>, <animateMotion>, <animateColor> or <set> elements. These elements are defined in the SMIL BasicAnimation module and mentionned in the SMIL Timesheets draft, but they aren’t part of the SMIL Timing recommendation.

In our approach, we use CSS Transitions (and Animations), because that's the technology implemented already in browsers. In CSS Transitions, normally developers needed to use Javascript to 'trigger' a defined transition, and that's where Timesheets come in: to set the states under which the elements' properties are changed (with no Javascript), and consequently transitions are triggered.

Updated