get rid of Layout and Travis.Controller and Travis.View namespaces
This commit is contained in:
parent
ee1ecf32f7
commit
b2874c4516
|
@ -45,15 +45,14 @@ Ember.ENV.RAISE_ON_DEPRECATION = true
|
|||
controller: @controller
|
||||
view.appendTo(@get('rootElement') || 'body')
|
||||
|
||||
layout: (name) ->
|
||||
if @_layout && @_layout.name == name
|
||||
@_layout
|
||||
else
|
||||
@_layout = Travis.Layout[$.camelize(name)].create(parent: @controller)
|
||||
connectLayout: (name) ->
|
||||
layout = Travis["#{$.camelize(name)}Controller"].create(parent: @controller)
|
||||
layout.connect(@controller)
|
||||
layout
|
||||
|
||||
|
||||
require 'controllers'
|
||||
require 'helpers'
|
||||
require 'layout'
|
||||
require 'models'
|
||||
require 'router'
|
||||
require 'store'
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'helpers'
|
||||
require 'travis/ticker'
|
||||
|
||||
Travis.Controllers = Em.Namespace.create
|
||||
Travis.reopen
|
||||
RepositoriesController: Ember.ArrayController.extend
|
||||
# sortProperties: ['sortOrder']
|
||||
# sortAscending: false
|
||||
|
@ -27,7 +27,11 @@ Travis.Controllers = Em.Namespace.create
|
|||
# TopController: Em.Controller.extend
|
||||
# userBinding: 'Travis.app.currentUser'
|
||||
|
||||
require 'controllers/base'
|
||||
require 'controllers/home'
|
||||
require 'controllers/profile'
|
||||
require 'controllers/repository'
|
||||
require 'controllers/sidebar'
|
||||
require 'controllers/sponsors'
|
||||
require 'controllers/stats'
|
||||
require 'controllers/workers'
|
||||
|
|
20
assets/javascripts/app/controllers/base.coffee
Normal file
20
assets/javascripts/app/controllers/base.coffee
Normal file
|
@ -0,0 +1,20 @@
|
|||
Travis.Controller = Em.Controller.extend
|
||||
init: ->
|
||||
for name in Array.prototype.slice.apply(arguments)
|
||||
name = "#{$.camelize(name, false)}Controller"
|
||||
klass = Travis[$.camelize(name)] || Em.Controller
|
||||
this[name] = klass.create(namespace: Travis, controllers: this)
|
||||
|
||||
connect: (parent) ->
|
||||
parent.connectOutlet
|
||||
outletName: 'layout'
|
||||
controller: this
|
||||
viewClass: Travis["#{$.camelize(@get('name'))}Layout"]
|
||||
|
||||
connectTop: ->
|
||||
@connectOutlet
|
||||
outletName: 'top'
|
||||
controller: @topController
|
||||
viewClass: Travis.TopView
|
||||
@topController.set('tab', @get('name'))
|
||||
|
19
assets/javascripts/app/controllers/home.coffee
Normal file
19
assets/javascripts/app/controllers/home.coffee
Normal file
|
@ -0,0 +1,19 @@
|
|||
require 'controllers/base'
|
||||
|
||||
Travis.HomeController = Travis.Controller.extend
|
||||
name: 'home'
|
||||
bindings: []
|
||||
|
||||
init: ->
|
||||
@_super('top', 'repositories', 'repository', 'sidebar')
|
||||
|
||||
@connectOutlet outletName: 'left', controller: @repositoriesController, viewClass: Travis.RepositoriesView
|
||||
@connectOutlet outletName: 'main', controller: @repositoryController, viewClass: Travis.RepositoryView
|
||||
@connectOutlet outletName: 'right', controller: @sidebarController, viewClass: Travis.SidebarView
|
||||
|
||||
connect: (parent) ->
|
||||
@_super(parent)
|
||||
@connectTop()
|
||||
|
||||
activate: (action, params) ->
|
||||
@repositoryController.activate(action, params)
|
|
@ -1,11 +1,15 @@
|
|||
require 'layout/base'
|
||||
require 'controllers/base'
|
||||
|
||||
Travis.Layout.Profile = Travis.Layout.Base.extend
|
||||
Travis.ProfileController = Travis.Controller.extend
|
||||
name: 'profile'
|
||||
|
||||
init: ->
|
||||
@_super('top', 'user', 'hooks')
|
||||
|
||||
connect: (parent) ->
|
||||
@_super(parent)
|
||||
@connectTop()
|
||||
|
||||
viewShow: (params) ->
|
||||
@connectUser(@currentUser)
|
||||
@connectHooks(Travis.Hook.find())
|
61
assets/javascripts/app/controllers/repository.coffee
Normal file
61
assets/javascripts/app/controllers/repository.coffee
Normal file
|
@ -0,0 +1,61 @@
|
|||
Travis.RepositoryController = Travis.Controller.extend
|
||||
bindings: []
|
||||
|
||||
init: ->
|
||||
@_super('builds', 'build', 'job')
|
||||
|
||||
activate: (action, params) ->
|
||||
@_unbind()
|
||||
@set('params', params)
|
||||
this["view#{$.camelize(action)}"]()
|
||||
|
||||
viewIndex: ->
|
||||
@_bind('repository', 'controllers.repositoriesController.firstObject')
|
||||
@_bind('build', 'repository.lastBuild')
|
||||
@connectTab('current')
|
||||
|
||||
viewCurrent: ->
|
||||
@_bind('repository', 'repositoriesByParams.firstObject')
|
||||
@_bind('build', 'repository.lastBuild')
|
||||
@connectTab('current')
|
||||
|
||||
viewBuilds: ->
|
||||
@_bind('repository', 'repositoriesByParams.firstObject')
|
||||
@_bind('builds', 'repository.builds')
|
||||
@connectTab('builds')
|
||||
|
||||
viewBuild: ->
|
||||
@_bind('repository', 'repositoriesByParams.firstObject')
|
||||
@_bind('build', 'buildById')
|
||||
@connectTab('build')
|
||||
|
||||
viewJob: ->
|
||||
@_bind('repository', 'repositoriesByParams.firstObject')
|
||||
@_bind('build', 'job.build')
|
||||
@_bind('job', 'jobById')
|
||||
@connectTab('job')
|
||||
|
||||
repositoriesByParams: (->
|
||||
Travis.Repository.bySlug("#{params.owner}/#{params.name}") if params = @get('params')
|
||||
).property('params')
|
||||
|
||||
buildById: (->
|
||||
Travis.Build.find(id) if id = @getPath('params.id')
|
||||
).property('params.id')
|
||||
|
||||
jobById: (->
|
||||
Travis.Job.find(id) if id = @getPath('params.id')
|
||||
).property('params.id')
|
||||
|
||||
connectTab: (tab) ->
|
||||
@set('tab', tab)
|
||||
name = if tab == 'current' then 'build' else tab
|
||||
@connectOutlet(outletName: 'pane', name: name)
|
||||
|
||||
_bind: (to, from) ->
|
||||
@bindings.push Ember.oneWay(this, to, from)
|
||||
|
||||
_unbind: ->
|
||||
binding.disconnect(this) for binding in @bindings
|
||||
@bindings.length = 0
|
||||
|
35
assets/javascripts/app/controllers/sidebar.coffee
Normal file
35
assets/javascripts/app/controllers/sidebar.coffee
Normal file
|
@ -0,0 +1,35 @@
|
|||
Travis.SidebarController = Em.ArrayController.extend
|
||||
init: ->
|
||||
@tickables = []
|
||||
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
|
||||
|
||||
@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)
|
||||
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
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
Travis.Controllers.SponsorsController = Em.ArrayController.extend
|
||||
Travis.SponsorsController = Em.ArrayController.extend
|
||||
page: 0
|
||||
|
||||
arrangedContent: (->
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'layout/base'
|
||||
require 'controllers/base'
|
||||
|
||||
Travis.Layout.Stats = Travis.Layout.Base.extend
|
||||
Travis.StatsController = Travis.Controller.extend
|
||||
name: 'stats'
|
||||
|
||||
init: ->
|
|
@ -1,4 +1,4 @@
|
|||
Travis.Controllers.WorkersController = Em.ArrayController.extend
|
||||
Travis.WorkersController = Em.ArrayController.extend
|
||||
groups: (->
|
||||
groups = {}
|
||||
for worker in @get('content').toArray()
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
Travis.Layout = Em.Namespace.create()
|
||||
|
||||
require 'layout/home'
|
||||
require 'layout/left'
|
||||
require 'layout/profile'
|
||||
require 'layout/stats'
|
|
@ -1,36 +0,0 @@
|
|||
Travis.Layout.Base = Em.Object.extend
|
||||
init: ->
|
||||
@parent = @get('parent')
|
||||
|
||||
@setup(Array.prototype.slice.apply(arguments).concat([@get('name'), 'top']))
|
||||
@connect()
|
||||
|
||||
setup: (controllers) ->
|
||||
$.extend this, Travis.Controllers
|
||||
$.extend this, Travis.Views
|
||||
|
||||
# ember wants this kind of setup for its connectOutlets magic
|
||||
for name in controllers
|
||||
key = "#{$.camelize(name, false)}Controller"
|
||||
name = $.camelize(key)
|
||||
klass = Travis.Controllers[name] || Em.Controller
|
||||
this[key] = klass.create(layout: this, namespace: this, controllers: this)
|
||||
|
||||
@controller = this["#{$.camelize(@get('name'), false)}Controller"]
|
||||
@viewClass = Travis.Views["#{$.camelize(@get('name'))}Layout"]
|
||||
|
||||
connect: ->
|
||||
@parent.connectOutlet
|
||||
outletName: 'layout'
|
||||
controller: @controller
|
||||
viewClass: @viewClass
|
||||
@connectTop()
|
||||
|
||||
connectTop: ->
|
||||
@controller.connectOutlet(outletName: 'top', name: 'top')
|
||||
@topController.set('tab', @get('name'))
|
||||
|
||||
activate: (action, params) ->
|
||||
this["view#{$.camelize(action)}"]()
|
||||
@set('params', params)
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
require 'layout/base'
|
||||
|
||||
Travis.Layout.Home = Travis.Layout.Base.extend
|
||||
name: 'home'
|
||||
bindings: []
|
||||
|
||||
init: ->
|
||||
@_super('repositories', 'repository', 'sidebar')
|
||||
|
||||
@controller.connectOutlet(outletName: 'left', name: 'repositories')
|
||||
@controller.connectOutlet(outletName: 'main', name: 'repository')
|
||||
@controller.connectOutlet(outletName: 'right', name: 'sidebar')
|
||||
|
||||
activate: (action, params) ->
|
||||
@repositoryController.activate(action, params)
|
|
@ -1,16 +0,0 @@
|
|||
require 'layout/base'
|
||||
|
||||
Travis.Layout.Left = Travis.Layout.Base.extend
|
||||
name: 'sidebar'
|
||||
|
||||
init: ->
|
||||
@_super('repositories')
|
||||
@parent = @get('parent')
|
||||
@connectLeft(Travis.Repository.find())
|
||||
|
||||
connect: ->
|
||||
@parent.connectOutlet(outletName: 'right', name: 'sidebar')
|
||||
|
||||
connectLeft: (repositories) ->
|
||||
@parent.set('repositories', repositories)
|
||||
@parent.connectOutlet(outletName: 'left', name: 'repositories', context: repositories)
|
|
@ -22,6 +22,6 @@ Travis.Router = Em.Object.extend
|
|||
|
||||
action: (name, action, params) ->
|
||||
# this needs to be a global reference because Em.routes is global
|
||||
layout = Travis.app.layout(name)
|
||||
layout = Travis.app.connectLayout(name)
|
||||
layout.activate(action, params)
|
||||
$('body').attr('id', name)
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<tbody>
|
||||
{{#each build in builds}}
|
||||
{{#view Travis.Views.BuildsItemView contextBinding="build"}}
|
||||
{{#view Travis.BuildsItemView contextBinding="build"}}
|
||||
<tr {{bindAttr class="view.color"}}>
|
||||
<td class="number"><a {{bindAttr href="view.urlBuild"}}>{{number}}</a></td>
|
||||
<td class="commit"><a {{bindAttr href="view.urlGithubCommit"}}>{{formatCommit commit}}</a></td>
|
||||
|
|
|
@ -38,10 +38,10 @@
|
|||
</dl>
|
||||
|
||||
{{#if build.isMatrix}}
|
||||
{{view Travis.Views.JobsView jobsBinding="requiredJobs" required="true"}}
|
||||
{{view Travis.Views.JobsView jobsBinding="allowedFailureJobs"}}
|
||||
{{view Travis.JobsView jobsBinding="requiredJobs" required="true"}}
|
||||
{{view Travis.JobsView jobsBinding="allowedFailureJobs"}}
|
||||
{{else}}
|
||||
{{view Travis.Views.LogView contextBinding="build.jobs.firstObject"}}
|
||||
{{view Travis.LogView contextBinding="build.jobs.firstObject"}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
{{#each job in jobs}}
|
||||
{{#view Travis.Views.JobsItemView contextBinding="job"}}
|
||||
{{#view Travis.JobsItemView contextBinding="job"}}
|
||||
<tr {{bindAttr class="view.color"}}>
|
||||
<td class="number"><a {{bindAttr href="view.urlJob"}}>{{number}}</a></td>
|
||||
<td class="duration" {{bindAttr title="started_at"}}>{{formatDuration duration}}</td>
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<dd class="config">{{formatConfig job.config}}</dd>
|
||||
</dl>
|
||||
|
||||
{{view Travis.Views.LogView contextBinding="job"}}}
|
||||
{{view Travis.LogView contextBinding="job"}}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/with}}
|
||||
|
|
31
assets/javascripts/app/templates/repositories/_tabs.hbs
Normal file
31
assets/javascripts/app/templates/repositories/_tabs.hbs
Normal file
|
@ -0,0 +1,31 @@
|
|||
<ul class="tabs">
|
||||
<li id="tab_current" {{bindAttr class="classCurrent"}}>
|
||||
<h5><a {{bindAttr href="urlRepository"}}>{{t repositories.tabs.current}}</a></h5>
|
||||
</li>
|
||||
<li id="tab_builds" {{bindAttr class="classBuilds"}}>
|
||||
<h5><a {{bindAttr href="urlBuilds"}}>{{t repositories.tabs.build_history}}</a></h5>
|
||||
</li>
|
||||
<li id="tab_pull_requests" {{bindAttr class="classPullRequests"}}>
|
||||
<h5><a {{bindAttr href="urlPullRequests"}}>{{t repositories.tabs.pull_requests}}</a></h5>
|
||||
</li>
|
||||
<li id="tab_branches" {{bindAttr class="classBranches"}}>
|
||||
<h5><a {{bindAttr href="urlBranches"}}>{{t repositories.tabs.branches}}</a></h5>
|
||||
</li>
|
||||
<li id="tab_build" {{bindAttr class="classBuild"}}>
|
||||
<h5><a {{bindAttr href="urlBuild"}}>{{t repositories.tabs.build}} #{{build.number}}</a></h5>
|
||||
</li>
|
||||
<li id="tab_job" {{bindAttr class="classJob"}}>
|
||||
<h5><a {{bindAttr href="urlJob"}}>{{t repositories.tabs.job}} #{{job.number}}</a></h5>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div id="tools">
|
||||
<a href="#" {{action toggleTools}}></a>
|
||||
<div class="pane">
|
||||
<p><label>{{t repositories.branch}}:</label><select></select></p>
|
||||
<p><label>{{t repositories.image_url}}:</label><input type="text" class="url"></input></p>
|
||||
<p><label>{{t repositories.markdown}}:</label><input type="text" class="markdown"></input></p>
|
||||
<p><label>{{t repositories.textile}}:</label><input type="text" class="textile"></input></p>
|
||||
<p><label>{{t repositories.rdoc}}:</label><input type="text" class="rdoc"></input></p>
|
||||
</div>
|
||||
</div>
|
|
@ -1,6 +1,6 @@
|
|||
<ul id="repositories">
|
||||
{{#each repository in controller.arrangedContent}}
|
||||
{{#view Travis.Views.RepositoriesItemView contextBinding="repository"}}
|
||||
{{#view Travis.RepositoriesItemView contextBinding="repository"}}
|
||||
<li {{bindAttr class="view.classes"}}>
|
||||
<a {{bindAttr href="view.urlRepository"}} class="current">{{slug}}</a>
|
||||
<a {{bindAttr href="view.urlLastBuild"}} class="last_build">#{{lastBuildNumber}}</a>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'ext/ember/namespace'
|
||||
|
||||
@Travis.Views = Em.Namespace.create
|
||||
@Travis.reopen
|
||||
HomeLayout: Em.View.extend(templateName: 'layouts/home')
|
||||
ProfileLayout: Em.View.extend(templateName: 'layouts/simple')
|
||||
StatsLayout: Em.View.extend(templateName: 'layouts/simple')
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@Travis.Views.reopen
|
||||
@Travis.reopen
|
||||
BuildsView: Em.View.extend
|
||||
templateName: 'builds/list'
|
||||
buildsBinding: 'controller'
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@Travis.Views.reopen
|
||||
@Travis.reopen
|
||||
JobsView: Em.View.extend
|
||||
templateName: 'jobs/list'
|
||||
buildBinding: 'controller.build'
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@Travis.Views.reopen
|
||||
@Travis.reopen
|
||||
UserView: Em.View.extend
|
||||
templateName: 'profile/show'
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@Travis.Views.reopen
|
||||
@Travis.reopen
|
||||
RepositoriesView: Em.View.extend
|
||||
templateName: 'repositories/list'
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@Travis.Views.reopen
|
||||
@Travis.reopen
|
||||
TopView: Em.View.extend
|
||||
templateName: 'layouts/top'
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user