travis-web/assets/scripts/app/controllers/sidebar.coffee
Piotr Sarnacki db2f01aa23 Fix sponsors
2013-02-21 23:22:53 +01:00

88 lines
2.2 KiB
CoffeeScript

Travis.reopen
SidebarController: Em.ArrayController.extend
init: ->
@tickables = []
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
tick: ->
tickable.tick() for tickable in @tickables
QueuesController: Em.ArrayController.extend
init: ->
@_super.apply this, arguments
queues = for queue in Travis.QUEUES
Travis.LimitedArray.create
content: Travis.Job.queued(queue.name), limit: 20
id: "queue_#{queue.name}"
name: queue.display
@set 'content', queues
WorkersController: Em.ArrayController.extend
init: ->
@_super.apply this, arguments
@set 'content', Travis.Worker.find()
groups: (->
if content = @get 'arrangedContent'
groups = {}
for worker in content.toArray()
host = worker.get('host')
unless groups[host]
groups[host] = Em.ArrayProxy.create(Em.SortableMixin,
content: [],
sortProperties: ['nameForSort']
)
groups[host].addObject(worker)
$.values(groups)
).property('length')
SponsorsController: Em.ArrayController.extend
page: 0
arrangedContent: (->
@get('shuffled').slice(@start(), @end())
).property('shuffled.length', 'page')
shuffled: (->
if content = @get('content') then $.shuffle(content) else []
).property('content.length')
tick: ->
@set('page', if @isLast() then 0 else @get('page') + 1)
pages: (->
length = @get('content.length')
if length then parseInt(length / @get('perPage') + 1) else 1
).property('length')
isLast: ->
@get('page') == @get('pages') - 1
start: ->
@get('page') * @get('perPage')
end: ->
@start() + @get('perPage')
Travis.DecksController = Travis.SponsorsController.extend
needs: ['sidebar']
perPage: 1
init: ->
@_super.apply this, arguments
@get('controllers.sidebar').tickables.push(this)
@set 'content', Travis.Sponsor.decks()
Travis.LinksController = Travis.SponsorsController.extend
needs: ['sidebar']
perPage: 6
init: ->
@_super.apply this, arguments
@get('controllers.sidebar').tickables.push(this)
@set 'content', Travis.Sponsor.links()