Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Background

The current content player has written initial days

Introduction

Design

Overview

Players

Navigation Utilities

Events Utilities

...

Introduction

This documents list the design approach we are taking to rewrite the content player such that

For users: Faster load times, great user experience and leaves less memory footprint on the browser.

For Developers: parallel development, decoupled and can be concentrated on a specific player

For Product owners: Easy to experiment with new functionalities and UI

Design

Here we want to build one player(Library) for each type of content which is independently built and deployable and can be integrated with other clients like web, mobile, and desktop

Image Added

List of Libraries

Players :

Each player is a library that can be injected in any application or can be independent and expects certain input to initialize will emit actions/interactions during the course of playing content.

  • PDF       

  • Video     

  • EPUB      

  • H5P       

  • QuML    

  • HTML and so on we can build for any type

config:

Code Block
languagejson
{

  controls: {
    showStartPage: true,
    showEndPage: true,
    showNavigation: true
    Menu: true
  }
}

Controls :

Each player interactions ie. StartPage, Endpage, Menu, Navigation, etc is also a library which will get injected based on the input to player.. [TBD]

Events (TBD)

START

Code Block
{
  "type": "START",
  "metaData": "<object>" // will change based on player
}

END

Code Block
{
  "type": "END",
  "metaData": "<object>" // will change based on player 
}

EVENT

Code Block
languagejson
{
"eid": <uuid>,
"ets": <timestamp>,
"ver": <event-version>,
"type": <event-type> // play, pause, scroll, touch, heartbeat
"data" : <object>
}

Image Added

Distribution and composability

The primary distribution will be npm as the angular library

{

Player

static dependencies {

Events Library

Controls Library

}

}

Open Questions

  1. are we going to support telemetry events for backward compatibility?