Giter Club home page Giter Club logo

timelinestoryteller's Introduction

Timeline Storyteller

"The Daily Routines of Famous Creative People": A Story made with Timeline Storyteller

Timeline Storyteller is an expressive visual storytelling environment for presenting timelines in the browser or in Microsoft Power BI.

Use it to present different aspects of timeline data using a palette of timeline representations, scales, and layouts, as well as controls for filtering, highlighting, and annotation.

Timeline Design dimensions

To learn more about the research that informed this project, see timelinesrevisited.github.io, which includes a survey of timeline tools and more than 200 bespoke timelines.

See these examples of timelines and timeline stories made with Timeline Storyteller.

Project Team

Setup / Testing

  1. Clone the main branch of this repository: git clone https://github.com/Microsoft/timelinestoryteller.git

  2. Ensure that nodejs, npm, and yarn are installed.

  3. Open a terminal at the root of the repository and install node modules: yarn OR npm_install.

  4. Build public/app/timelinestoryteller.js: npm test

  5. Start the node server: npm start

  6. Open localhost:8000

The application source code can be found in the src/ directory.

The Timeline Storyteller Power BI custom visual

This respository contains the source for Timeline Storyteller as a standalone web application. To generate the Timeline Storyteller custom visual for Power BI, refer to github.com/Microsoft/PowerBI-visuals-TimelineStoryteller.

Preparing your data

Timeline Storyteller currently supports datasets of events in CSV, JSON, or Google Spreadsheet format.

Each event is specified by the following attributes:

  • Required: start_date, date: YYYY, YYYY-MM-DD, or YYYY-MM-DD HH:MMZ (ISO 8601) formats are supported (Z necessary for specifying UTC, otherwise HH:MM will be time-zone dependent). BC dates are permitted, e.g., -27, -13800000000
  • Optional: end_date, date: using same format as start_date
  • Optional: category, a string corresponding to the category of the event (which Timeline Storyteller encodes as colour)
  • Optional: facet,a string corresponding to another category of the event (which Timeline Storyteller uses to create a faceted timeline layout; category and facet can be identical if desired)
  • Optional: content_text, a string description of the event (which Timeline Storyteller exposes as event annotations)

Example event in JSON:

{ "start_date":"1775", "end_date":"1783", "content_text":"American Revolutionary War: an armed struggle for secession from the British Empire by the Thirteen Colonies that would subsequently become the United States.", "facet":"North America", "category":"North America" },

Example event in CSV:

header row:

start_date,end_date,content_text,facet,category

example event row:

1775,1783,American Revolutionary War: an armed struggle for secession from the British Empire by the Thirteen Colonies that would subsequently become the United States.,North America,North America

Example CSV / Google Spreadsheet

Here is the The Daily Routines of Famous Creative People demo dataset used in Timeline Storyteller's demo in a Google Sheet.

  • Ensure that the spreadsheet is published (open the Google Spreadsheet 'File' menu, select 'Publish to the Web').
  • Ensure that start_date and end_date columns are formatted as text and not as dates (e.g., '1926-06-29).
  • Required: Spreadsheet URL
  • Optional: Worksheet title (i.e., tab name) for this dataset: dailyroutines
  • Enter the spreadsheet URL and worksheet title into Timeline Storyteller's load dialog.

Usage

Note that more detailed usage instructions are available at timelinestoryteller.com

  1. Load timeline data (demo dataset, JSON, CSV, Google Spreadsheet) or saved timeline story (a JSON Blob with extension .cdc; see step 6)

  2. Select a combination of representation, scale, and layout from the menu at the top of the screen; only some combinations are valid; see our guidance on selecting appropriate combinations for your story. Mouseover these options to view a tooltip that describes how they might be useful.

  3. Edit the canvas

    • Click on events to annotate with their content_text label; resize and reposition labels; SHIFT + click to highlight events without showing label.

    • Annotate with captions and images; resize and reposition captions and images.

    • Filter events by category, facet, or segment. Filter by highlighting emphasizing matching events (de-emphasizing non-matching events).

    • You can also filter by hiding non-matching events.

  4. Record current canvas as a scene, which retains labels, captions, and images. Enter playback mode, navigate to previous / next recorded scene.

  5. Export current canvas as a PNG, SVG.

  6. Export the scenes as an animated GIF or as a JSON Blob (.cdc extension).

License

Timeline Storyteller

Copyright (c) Microsoft Corporation

All rights reserved.

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Acknowledgements

Citing us

If you use Timeline Storyteller to make a timeline for a research paper, you can cite us in two ways. You can cite the tool itself:

@misc{TimelineStoryteller, author = {Matthew Brehmer and Bongshin Lee and Nathalie Henry Riche and Darren Edge and Christopher White and Kate Lytvynets and David Tittsworth}, title = {Microsoft Timeline Storyteller}, year = {2017}, note = {\url{https://timelinestoryteller.com}} }

Or you can cite our recent journal paper about the timeline design space:

@article{Brehmer2016, author = {Matthew Brehmer and Bongshin Lee and Benjamin Bach and Nathalie Henry Riche and Tamara Munzner}, title = {Timelines Revisited: A Design Space and Considerations for Expressive Storytelling}, journal = {IEEE Transactions on Visualization and Computer Graphics (TVCG)}, year = {2017}, volume = {23}, issue = {9}, pages = {2151--2164}, doi = {10.1109/TVCG.2016.2614803}, ISSN = {1077-2626} }

Demo dataset provenance

Noun Project icons used in the user interface

All Icons CC BY 3.0, by name and author:

timelinestoryteller's People

Contributors

katua avatar mattbrehmer avatar microsoft-github-policy-service[bot] avatar stopyoukid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

timelinestoryteller's Issues

Edit # of facet columns, segment columns

(Alternative to issue #37)

configure # columns in faceted and segmented radial or spiral timelines (currently automatic, not configurable), which in turn affects the number of rows.

Updating the number of facet columns could update the radius of the facets.

Custom styles

Initially: GLOBAL STYLE CONFIGURATION OPTIONS for annotations, captions, images, axes: font, font color, annotation dropline style / visibility; style options must be saved along with a story.

Eventually: LOCAL STYLE CHANGES to individual annotations, captions, images, axis ticks, axis domains, axis labels

Legend colorpicker broken

Selecting a new color from the legend color swatch no longer updates the color of events of that category.

Occasional arc tweening error

image

This seems to occur more often when filtering

Repro:

  • Load AI dataset
  • Change to Radial View
  • Filter to 1600 (Hide mode)

Recommended timeline design space configurations

Given timeline dataset characteristics such as the presence and number of facets, segment granularity, number and distribution of events, number of event categories, recommend combinations of timeline representation, scale, and layout.

Improve image annotation performance/issues

A couple of problems with the current implementation:

  • If you embed an image from a server that has CORS disabled, then it has issues saving the scene thumbnails.
  • If you embed the image using data uris, then a large image can cause the app to become horribly slow.

Add (or delete) event(s) manually

Interactively add and/or edit an event via a UI dialog by specifying its start/end dates, category, facet, and content text. Conversely, delete individual events. Re-scale if necessary.

"sort facets by" layout option

UI controls for re-ordering the facets (currently facets are ordered alphabetically); this could be done via drag and drop; this ordering would need to be preserved in saved story metadata or in the scene metadata should a story contain more than one facet ordering.

Shape annotations

Add (and style) arrows, rectangles, ellipses, lines, freeform pen strokes to timeline scenes

Configurable radial representation radius

Add a UI element for configuring the size of the radial representation radius; this affects the number of facet and segment columns; this configuration must be saved along with a scene

"segment by" layout option

Segment timeline by different granularities of time (millenia / century / decade / year / month / week / day / hour), within the extent of the dataset, minimum granularity of events, and with some upper bound on the number of segments.

Annotation z-order in saved stories

Within the same timeline scene, annotations (event labels, scene captions, images) may appear in a different z-order from how they were recorded, resulting in undesired occlusion.

Consistent animation behaviour

Staged animation as it is done currently sometimes results in inconsistent behaviour: events (dis)appearing, scaling, positioning, etc.

Title "scenes"

Title scenes ("slides") could appear between timeline scenes; currently, these are created by filtering out everything and appropriating captions to the empty canvas

Timeline orientation / direction configuration

UI controls for configuring timeline orientation.

For linear timelines (currently earlier-to-recent corresponds to left-to-right): top-to-bottom, bottom-to-top, right-to-left (helpful for users whose written language is read right-to-left)

For radial timelines (currently earlier-to-recent proceeds clockwise): counter-clockwise

For spiral timelines (currently earlier-to recent proceeds outwards from center): inwards to center

Undo & Redo

Undo and redo for every interaction / UI state change (currently nonexistent; unrecorded changes to the current state are lost on scene change).

DISTINCTION b/w SCENE-IN-PROGRESS vs. SAVED SCENE: if UNDO / REDO is insufficient, a visual indication of an unsaved in-progress scene vs. previously saved scenes; if editing a previously saved scene, add option to UPDATE or APPEND edits to saved scene; SAVED EDITS TO EXISTING SAVED STORY IN BACKGROUND: verify if this is possible in all browsers

Progress feedback

Display minimal yet immediate visual feedback during data or story load / transitions / image import (i.e., pinwheel / wait cursor)

Configurable z-order and alpha values for image annotations

Image annotations should have UI controls for z-order and alpha/opacity, such that images can appear behind the timeline(s); the z-order and alpha values of images must be saved in scene metadata

Currently, images can be 'sent to back' by clicking them while holding the SHIFT modifier key; however, this z-order is not preserved when replaying the scene

Export GIF and/or Video with animated transitions

current GIF export does not include animated transitions; implementing a GIF / video export with the animated transitions will require scene + transition timing controls for each scene and transition to be exposed in UI

Minimal Playback UI

Hide scene selector by default in playback mode; show scene selector on demand instead; show "scene N of M" label when scene selector is hidden.

Change radius of radial timelines

(alternative to issue #36)

The radius is currently adjusted automatically given the window/main_svg dimensions, the number of tracks, (and the number of facet or segment columns in the case of faceted / segmented layouts).

The radius could be manipulated directly by clicking and dragging on a control point at the center of a radial timeline. Changing the radius of a single facet should update all facets in sync. This will in turn affect the number of facet rows and columns.

A global minimum and maximum radius would need to be specified based upon the resolution.

Re-order scenes

UI control for re-ordering saved scenes in a story, such as via drag-and-drop within the scene selector.

Automatically annotating all visible events

Via @sqljason, June 19 2017

There is a use case for automatically annotating all non-filtered events.

This would need to take several parameters into consideration: the canvas dimensions, the current representation (linear vs. radial vs. other), the number of events, and the length of every event annotation.

Given all of this, we would try to optimize the placement of all the annotations to prevent any from overlapping with each other, the events, or the axes.

Transition quality indications

Provide visual indication of animated transitions between representations, scales, and layouts in the scene selector and indicate whether any particular transition is potentially jarring or ill-advised; recommend insertion of interim scenes with helpful transitions to guide the viewer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.