Use regular views in sidebar instead of outlets

Outlets behaved weird in this place (not sure why, maybe because it's
deeply nested) and we don't need to change those views anyway.
This commit is contained in:
Piotr Sarnacki 2012-09-26 23:27:34 +02:00
parent 5b2aae19b3
commit fe7f07629f
4 changed files with 57 additions and 39 deletions

View File

@ -4,34 +4,6 @@ Travis.reopen
@tickables = []
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
Ember.run.next this, ->
@connectWorkers(Travis.Worker.find())
@connectQueues(Travis.QUEUES)
@connectSponsors('decks', Travis.Sponsor.decks(), 1)
@connectSponsors('links', Travis.Sponsor.links(), 6)
connectSponsors: (name, sponsors, perPage) ->
controller = Travis.SponsorsController.create(perPage: perPage, content: sponsors)
viewClass = Em.View.extend(templateName: "sponsors/#{name}")
@connectOutlet(outletName: name, controller: controller, viewClass: viewClass)
@tickables.push(controller)
connectWorkers: (workers) ->
controller = Travis.WorkersController.create(content: workers)
viewClass = Em.View.extend(templateName: 'workers/list')
@connectOutlet(outletName: 'workers', controller: controller, viewClass: viewClass)
connectQueues: (queues) ->
queues = for queue in queues
Em.ArrayController.create
content: Travis.Job.queued(queue.name)
id: "queue_#{queue.name}"
name: queue.display
controller = Travis.QueuesController.create(content: queues)
viewClass = Em.View.extend(templateName: 'queues/list')
@connectOutlet(outletName: 'queues', controller: controller, viewClass: viewClass)
tick: ->
tickable.tick() for tickable in @tickables
@ -39,12 +11,13 @@ Travis.reopen
WorkersController: Em.ArrayController.extend
groups: (->
groups = {}
for worker in @get('content').toArray()
host = worker.get('host')
groups[host] = Em.ArrayProxy.create(content: []) unless groups[host]
groups[host].pushObject(worker)
$.values(groups)
if content = @get 'content'
groups = {}
for worker in content.toArray()
host = worker.get('host')
groups[host] = Em.ArrayProxy.create(content: []) unless groups[host]
groups[host].pushObject(worker)
$.values(groups)
).property('content.length')
SponsorsController: Em.ArrayController.extend

View File

@ -6,10 +6,10 @@
<div class='icon'></div>&nbsp;
</div>
{{outlet decks}}
{{outlet workers}}
{{outlet queues}}
{{outlet links}}
{{view view.DecksView}}
{{view view.WorkersView}}
{{view view.QueuesView}}
{{view view.LinksView}}
<div id="about" class="box">
<h4>{{t layouts.about.join}}</h4>

View File

@ -2,6 +2,51 @@
SidebarView: Travis.View.extend
templateName: 'layouts/sidebar'
DecksView: Em.View.extend
templateName: "sponsors/decks"
controller: Travis.SponsorsController.create
perPage: 1
didInsertElement: ->
controller = @get 'controller'
controller.set 'content', Travis.Sponsor.decks()
Travis.app.get('router.sidebarController').tickables.push(controller)
@_super.apply this, arguments
LinksView: Em.View.extend
templateName: "sponsors/links"
controller: Travis.SponsorsController.create
perPage: 6
didInsertElement: ->
controller = @get 'controller'
controller.set 'content', Travis.Sponsor.links()
Travis.app.get('router.sidebarController').tickables.push(controller)
@_super.apply this, arguments
WorkersView: Em.View.extend
templateName: 'workers/list'
controller: Travis.WorkersController.create()
didInsertElement: ->
@set 'controller.content', Travis.Worker.find()
@_super.apply this, arguments
QueuesView: Em.View.extend
templateName: 'queues/list'
controller: Travis.QueuesController.create()
didInsertElement: ->
queues = for queue in Travis.QUEUES
Em.ArrayController.create
content: Travis.Job.queued(queue.name)
id: "queue_#{queue.name}"
name: queue.display
@set 'controller.content', queues
@_super.apply this, arguments
WorkersView: Travis.View.extend
toggleWorkers: (event) ->
handle = $(event.target).toggleClass('open')

File diff suppressed because one or more lines are too long