|
|
@ -6,7 +6,7 @@ class AsciiIo.PlayerView extends Backbone.View
|
|
|
|
@prepareSelfView()
|
|
|
|
@prepareSelfView()
|
|
|
|
@createRendererView()
|
|
|
|
@createRendererView()
|
|
|
|
@createHudView()
|
|
|
|
@createHudView()
|
|
|
|
@createMovie()
|
|
|
|
@fetchModel()
|
|
|
|
@showLoadingIndicator()
|
|
|
|
@showLoadingIndicator()
|
|
|
|
|
|
|
|
|
|
|
|
prepareSelfView: ->
|
|
|
|
prepareSelfView: ->
|
|
|
@ -26,27 +26,35 @@ class AsciiIo.PlayerView extends Backbone.View
|
|
|
|
@hudView = new AsciiIo.HudView(cols: @options.cols)
|
|
|
|
@hudView = new AsciiIo.HudView(cols: @options.cols)
|
|
|
|
@$el.append(@hudView.$el)
|
|
|
|
@$el.append(@hudView.$el)
|
|
|
|
|
|
|
|
|
|
|
|
createMovie: ->
|
|
|
|
fetchModel: ->
|
|
|
|
@vt = new AsciiIo.VT(@options.cols, @options.lines)
|
|
|
|
@model.fetch success: => @onModelFetched()
|
|
|
|
|
|
|
|
|
|
|
|
@movie = new AsciiIo.Movie(
|
|
|
|
onModelFetched: ->
|
|
|
|
@model,
|
|
|
|
data = @model.get 'escaped_stdout_data'
|
|
|
|
speed: @options.speed,
|
|
|
|
data = atob data
|
|
|
|
benchmark: @options.benchmark
|
|
|
|
|
|
|
|
cols: @options.cols
|
|
|
|
|
|
|
|
lines: @options.lines
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
@movie.on 'loaded', @onMovieLoaded, this
|
|
|
|
|
|
|
|
@movie.load()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onStartPromptClick: ->
|
|
|
|
if typeof window.Worker == 'function'
|
|
|
|
@hideToggleOverlay()
|
|
|
|
@unpackModelDataViaWorker data
|
|
|
|
@movie.togglePlay()
|
|
|
|
else
|
|
|
|
|
|
|
|
@unpackModelDataHere data
|
|
|
|
|
|
|
|
|
|
|
|
onMovieLoaded: (asciicast) ->
|
|
|
|
unpackModelDataViaWorker: (data) ->
|
|
|
|
@hideLoadingIndicator()
|
|
|
|
worker = new Worker(window.worker_unpack_path)
|
|
|
|
@hudView.setDuration(asciicast.get('duration'))
|
|
|
|
|
|
|
|
|
|
|
|
worker.onmessage = (event) =>
|
|
|
|
|
|
|
|
@model.set stdout_data: event.data
|
|
|
|
|
|
|
|
@onModelReady()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
worker.postMessage data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unpackModelDataHere: (data) ->
|
|
|
|
|
|
|
|
@model.set stdout_data: ArchUtils.bz2.decode(data)
|
|
|
|
|
|
|
|
@onModelReady()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onModelReady: ->
|
|
|
|
|
|
|
|
@hideLoadingIndicator()
|
|
|
|
|
|
|
|
@hudView.setDuration @model.get('duration')
|
|
|
|
|
|
|
|
@createMovie()
|
|
|
|
@bindEvents()
|
|
|
|
@bindEvents()
|
|
|
|
|
|
|
|
|
|
|
|
if @options.autoPlay
|
|
|
|
if @options.autoPlay
|
|
|
@ -54,6 +62,19 @@ class AsciiIo.PlayerView extends Backbone.View
|
|
|
|
else
|
|
|
|
else
|
|
|
|
@showToggleOverlay()
|
|
|
|
@showToggleOverlay()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
createMovie: ->
|
|
|
|
|
|
|
|
@vt = new AsciiIo.VT(@options.cols, @options.lines)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@movie = new AsciiIo.Movie(
|
|
|
|
|
|
|
|
timing: @model.get 'stdout_timing_data'
|
|
|
|
|
|
|
|
stdout_data: @model.get 'stdout_data'
|
|
|
|
|
|
|
|
duration: @model.get 'duration'
|
|
|
|
|
|
|
|
speed: @options.speed,
|
|
|
|
|
|
|
|
benchmark: @options.benchmark
|
|
|
|
|
|
|
|
cols: @options.cols
|
|
|
|
|
|
|
|
lines: @options.lines
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
bindEvents: ->
|
|
|
|
bindEvents: ->
|
|
|
|
@movie.on 'reset', => @vt.reset()
|
|
|
|
@movie.on 'reset', => @vt.reset()
|
|
|
|
@movie.on 'finished', => @vt.stopCursorBlink()
|
|
|
|
@movie.on 'finished', => @vt.stopCursorBlink()
|
|
|
@ -76,6 +97,10 @@ class AsciiIo.PlayerView extends Backbone.View
|
|
|
|
@hudView.on 'play-click', => @movie.togglePlay()
|
|
|
|
@hudView.on 'play-click', => @movie.togglePlay()
|
|
|
|
@hudView.on 'seek-click', (percent) => @movie.seek(percent)
|
|
|
|
@hudView.on 'seek-click', (percent) => @movie.seek(percent)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onStartPromptClick: ->
|
|
|
|
|
|
|
|
@hideToggleOverlay()
|
|
|
|
|
|
|
|
@movie.togglePlay()
|
|
|
|
|
|
|
|
|
|
|
|
showLoadingIndicator: ->
|
|
|
|
showLoadingIndicator: ->
|
|
|
|
@$el.append('<div class="loading">')
|
|
|
|
@$el.append('<div class="loading">')
|
|
|
|
|
|
|
|
|
|
|
|