Use visibility.js to run timer updates

Visibility.js provides a thin wrapper over page visibility API, which
allows to detect if page is currently visible by user. This allows us to
stop live updates when it's not needed. This is especially easy in case
of timers, because Visibility.js provides setInterval replacement, which
runs given code only when page is visible.

A lot of ❤️ for @tchack, who showed me visibility.js!
This commit is contained in:
Piotr Sarnacki 2013-05-29 13:42:51 +03:00
parent 46dc7e930d
commit 05859a5a3c
2 changed files with 2 additions and 6 deletions

View File

@ -9,7 +9,7 @@ Travis.RepoController = Travis.Controller.extend
init: ->
@_super.apply this, arguments
setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
Visibility.every Travis.INTERVALS.updateTimes, @updateTimes.bind(this)
updateTimes: ->
if builds = @get('builds')
@ -21,8 +21,6 @@ Travis.RepoController = Travis.Controller.extend
if build && jobs = build.get('jobs')
jobs.forEach (j) -> j.updateTimes()
setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
activate: (action) ->
@_unbind()
this["view#{$.camelize(action)}"]()

View File

@ -27,7 +27,7 @@ Travis.ReposController = Ember.ArrayController.extend
init: ->
@_super.apply this, arguments
setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
Visibility.every Travis.INTERVALS.updateTimes, @updateTimes.bind(this)
recentRepos: (->
Travis.Repo.find()
@ -44,8 +44,6 @@ Travis.ReposController = Ember.ArrayController.extend
if content = @get('content')
content.forEach (r) -> r.updateTimes()
setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
activate: (tab, params) ->
@set('sortProperties', null)
tab ||= @get('defaultTab')