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:
parent
46dc7e930d
commit
05859a5a3c
|
@ -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)}"]()
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue
Block a user