Skip to content

Instantly share code, notes, and snippets.

@jmarnold
Created May 21, 2012 20:34
Show Gist options
  • Save jmarnold/2764495 to your computer and use it in GitHub Desktop.
Save jmarnold/2764495 to your computer and use it in GitHub Desktop.
Simple screen stuff
class CurrentController
constructor: (timer, dataSource, screens) ->
@timer = timer
@dataSource = dataSource
@screens = screens
self = this
@timer.elapsed () -> self.updateSnapshot()
@timer.start()
handleMessage: (topic, payload) ->
# TODO -- Maybe we abstract away push state for browser history
@prevMsg =
topic: topic
payload: payload
@screens.switchTo topic, payload, @snapshot
snapshotUpdated: (snapshot) ->
@snapshot = snapshot
presenters = @screens.allPresenters()
_.each presenters, (p) -> p.updateSnapshot(snapshot)
refresh: () ->
@screens.activePresenter.refresh @prevMsg.payload
updateSnapshot: ->
snapshot = @dataSource.fetchSnapshot()
@snapshotUpdated snapshot
class ScreenConductor
constructor: ->
@presenters = {}
registerPresenter: (topic, presenter) ->
@presenters[topic] = presenter
allPresenters: ->
presenters = []
for key, value of @presenters
presenters.push value
return presenters
switchTo: (topic, payload, snapshot) ->
@activePresenter.deactivate() unless typeof @activePresenter is 'undefined'
presenter = @presenters[topic]
@activePresenter = presenter
presenter.activate snapshot, payload
allTopics: ->
topics = []
for key, value of @presenters
topics.push key
return topics
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment