wiki:TIMELINES_REDESIGN_R0

Version 29 (modified by sveto, 16 years ago) (diff)

--

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=TIMELINES_REDESIGN_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

Analysis

Overview

The current implementation of timelines lacks a couple of things and those need to be added:

  • Support for groups activation.
  • Intro, main and outro parts.
  • Properly manage the time values of each page - currently there is one timer for the book, changing the page should start a new timer for the page.

The timelines palette will be improved. Besides that the current model should be reworked to correspond to the new resource model.

Task requirements

The timeline palette for an object should consist of:

  • the title bar of the timeline flap should display the name of the selected object (displayed to the right).
  • a control bar for the selected channel with four fields and four buttons (displayed to the right):
    • a field where the user can enter an interval start point (by default 0:00)
    • a field where the user can enter an interval end point (by default 0:00)
    • a "set interval" button: if clicked this will change the state of the frame's visibility or activation from the start point to the end point.
    • a "set from" button: if clicked this will change the state of the frame's visibility or activation onwards from the current position of the play head.
    • a "set all" button: if clicked this will change the frame visibility/activation for the complete duration of the timeline.
    • a field where the user can enter the intro length (by default 0:00)
    • a field where the user can enter the outro length (by default 0:00)
  • a playhead that can be moved across the timeline from 0:00 to 1:00.
  • a time ruler for the duration of the timeline that will be displayed on the element right below the selected element (if no element is selected no time ruler will appear).
  • activation channels or a visibility channel; more channels will appear in later revisions of this task.
  • (If more than one frame is in the group, each frame in the group should have its own set of channels.)
  • (The channels will be shrunk down to half size and exapanded upon selection. This will free more visible space.)

Activation for a frame or a group of frames means the time span when the frame's own timeline is played. The channel for activation allows to set these periods in the parent timeline.

The intro is what happens when the frame is activated; the outro is what happens what a frame ends activation. In the future, these could include fades etc.

In the channels the intro, main and outro parts will be separated by vertical lines.

By default, all frames on the page are shown all the time. If the user changes a frame's visibility, this will be reflected in the frame's channel at the point in time where the playhead is currently set. If the user moves the playhead, the page should reflect the visibility of the text frames at that particular point in the timeline.

In future revisions of this task, other kinds of frames will appear on the timeline. Other frame properties (example: margin types) will appear as channels for each frame; each of these properties should probably have its own dedicated control bar (e.g., color & width settings for margins).

The properties of the selected frame or object appear as channels. For this revision, it's just visibility. The channels can be selected.

The control bar of the timeline interface has fields for start point, end point, and four buttons. If the user clicks the "Hide All" button, the frame will be hidden from 0:00-1:00. If the user then enters 0:10-0:20 and clicks the "Set Interval" button, the frame will be shown from 0:10-0:20.

Below the control bar is the slider (the orange arrow); this can be dragged back and forth by the user.

The timeline for a page shows channels for all the objects on the page; they can be activated or deactivated.

An activated frame will play its timeline when the page timeline plays.

Task result

First the redesign of the model will be made, which results in a prototype. The changes to the view will be done as a separate task once the model is fixed.
Prototype, UML class diagram.

Implementation idea

  • Use the design draft posted by milo in http://pastebin.asteasolutions.net/f444cc8f1.
  • Implement new time values that are shifted by a large value like C = 1015 for the 3 different parts of the timeline, thus intro will be in the interval of [0, C), main - [C, 2C), outro - [2C, 3C).

GROUP_TIMELINES_R0

How to demo

  • Open Sophie2.
  • Create a book.
  • Add a text frame.
  • Set intro to 10 seconds.
  • See how the intro and main part are separated in the channel.
  • Set channel intervals in intro and main section.
  • Change intro to 5 seconds.
  • See how the intro and main part retain their entries.

Design

TimelineTopView (timeline for pages) should have a start/stop timeline method so each page's timeline will be played only when the page is opened.

Create Channel helper and TimelineOption helper to facilitate the change of the corresponding keys in Element.

Use immutable map with ResourceRef key to store activation channels instead of ImmList. This will speed up the mapping of ResourceRef to ActivationChannel in many places where it is done in a loop for all ActivationChannels.

Group activation:

  • Have TimelineMemberView activationTime property check ancestor activation and if ancestors are inactive return inactive state too.
  • Change GroupView renderFrame to return null if the frame is inactive.

The time values for activation time and local time will be separated by a large enough constant (C = 1015) to isolate the intro, main and outro parts of the timeline. Thus if the length of those sections is changed the corresponding section will retain its entries.

UML diagram:

Error: Macro Image(TimelinesRedesign.jpg) failed
current transaction is aborted, commands ignored until end of transaction block

Implementation

(Describe and link the implementation results here (from the wiki or the repository).)

Testing

(Place the testing results here.)

Comments

(Write comments for this or later revisions here.)

Attachments