extract tab templates, split up repo views

This commit is contained in:
Sven Fuchs 2012-09-09 12:06:52 +02:00
parent f0103a64aa
commit ce8daa6d73
22 changed files with 299 additions and 254 deletions

View File

@ -26,8 +26,8 @@ Travis.reopen
view
# TopController: Em.Controller.extend
# userBinding: 'Travis.app.currentUser'
TopController: Em.Controller.extend
userBinding: 'Travis.currentUser'
require 'controllers/builds'
require 'controllers/home'

View File

@ -1,8 +1,9 @@
Travis.RepositoriesController = Ember.ArrayController.extend
defaultTab: 'recent'
sortProperties: ['sortOrder']
init: ->
@activate('recent')
@activate(@defaultTab)
Ember.run.later(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
updateTimes: ->
@ -18,8 +19,8 @@ Travis.RepositoriesController = Ember.ArrayController.extend
viewRecent: ->
@set('content', Travis.Repository.find())
viewOwned: (params) ->
@set('content', Travis.Repository.owned_by(params.login))
viewOwned: ->
@set('content', Travis.Repository.ownedBy(Travis.get('currentUser.login')))
viewSearch: (params) ->
@set('content', Travis.Repository.search(params.search))

View File

@ -66,8 +66,8 @@ require 'travis/model'
recent: ->
@find()
ownedBy: (owner) ->
@find(owner: owner, orderBy: 'name')
ownedBy: (login) ->
@find(owner: login, orderBy: 'name')
search: (query) ->
@find(search: query, orderBy: 'name')

View File

@ -1,8 +1,8 @@
Travis.Pusher = ->
@active_channels = []
if Travis.Pusher.KEY
@pusher = new Pusher(Travis.Pusher.KEY)
@active_channels = []
@subscribe(channel) for channel in Travis.Pusher.CHANNELS
# @subscribe(channel) for channel in Travis.Pusher.CHANNELS
this
$.extend Travis.Pusher,

View File

@ -18,8 +18,14 @@ $.extend Travis.Routes.prototype,
Em.routes.set('location', event.target.href.replace("#{@base_uri}/", ''))
action: (name, action, params) ->
@render(name, action, params) if @before(name, action, params)
render: (name, action, params) ->
console.log [name, action, params]
# this needs to be a global reference because Em.routes is global
layout = Travis.app.connectLayout(name)
layout.activate(action, params || {})
$('body').attr('id', name)
before: (name, action, params) ->
true

View File

@ -1,4 +1,5 @@
{{view.logSubscriber}}
{{#if log.isLoaded}}
<pre id="log">{{{formatLog log.body}}}</pre>

View File

@ -2,17 +2,7 @@
{{view Ember.TextField valueBinding="controller.search"}}
</div>
<ul class="tabs">
<li id="tab_recent" {{bindAttr class="view.classRecent"}}>
<h5><a href="/" {{action route}}>{{t layouts.application.recent}}</a></h5>
</li>
<li id="tab_owned" {{bindAttr class="view.classOwned"}}>
<h5><a href="/" {{action route}}>{{t layouts.application.my_repositories}}</a></h5>
</li>
<li id="tab_search" {{bindAttr class="view.classSearch"}}>
<h5><a href="/" {{action route}}>{{t layouts.application.search}}</a></h5>
</li>
</ul>
{{view Travis.ReposListTabsView}}
<div class="tab">
{{#collection Travis.RepositoriesListView contentBinding="controller"}}

View File

@ -0,0 +1,12 @@
<ul class="tabs">
<li id="tab_recent" {{bindAttr class="view.classRecent"}}>
<h5><a name="recent" {{action activate}}>{{t layouts.application.recent}}</a></h5>
</li>
<li id="tab_owned" {{bindAttr class="view.classOwned"}}>
<h5><a name="owned" {{action activate}}>{{t layouts.application.my_repositories}}</a></h5>
</li>
<li id="tab_search" {{bindAttr class="view.classSearch"}}>
<h5><a name="search" {{action activate}}>{{t layouts.application.search}}</a></h5>
</li>
</ul>

View File

@ -23,7 +23,7 @@
</li>
</ul>
{{view Travis.TabsView}}
{{view Travis.RepoShowTabsView}}
{{/with}}
{{else}}

View File

@ -16,6 +16,5 @@ require 'views/repo'
require 'views/profile'
require 'views/sidebar'
require 'views/stats'
require 'views/tabs'
require 'views/top'

View File

@ -0,0 +1,20 @@
@Travis.reopen
ReposView: Travis.View.extend
templateName: 'repos/list'
tabBinding: 'controller.tab'
classRecent: (->
'active' if @get('tab') == 'recent'
).property('tab')
classOwned: (->
classes = []
classes.push('active') if @get('tab') == 'owned'
classes.push('display') if Em.get('Travis.currentUser')
classes.join(' ')
).property('tab', 'Travis.currentUser')
classSearch: (->
'active' if @get('tab') == 'search'
).property('tab')

View File

@ -1,66 +1,7 @@
@Travis.reopen
RepositoriesView: Travis.View.extend
templateName: 'repos/list'
tabBinding: 'controller.tab'
require 'views/repo/repos'
classRecent: (->
'active' if @get('tab') == 'recent'
).property('tab')
require 'views/repo/list'
require 'views/repo/list/tabs'
require 'views/repo/show'
require 'views/repo/show/tabs'
classOwned: (->
classes = []
classes.push('active') if @get('tab') == 'owned'
classes.push('display') if Em.get('Travis.currentUser')
classes.join(' ')
).property('tab', 'Travis.currentUser')
classSearch: (->
'active' if @get('tab') == 'search'
).property('tab')
RepositoriesListView: Em.CollectionView.extend
elementId: 'repositories'
repositoryBinding: 'content'
tagName: 'ul'
emptyView: Ember.View.extend
template: Ember.Handlebars.compile('<div class="loading"><span>Loading</span></div>')
itemViewClass: Travis.View.extend
repositoryBinding: 'content'
classNames: ['repository']
classNameBindings: ['color', 'selected']
selectedBinding: 'repository.selected'
color: (->
Travis.Helpers.colorForResult(@get('repository.lastBuildResult'))
).property('repository.lastBuildResult')
urlRepository: (->
Travis.Urls.repository(@get('repository.slug'))
).property('repository.slug')
urlLastBuild: (->
Travis.Urls.build(@get('repository.slug'), @get('repository.lastBuildId'))
).property('repository.slug', 'repository.lastBuildId')
RepositoryView: Travis.View.extend
templateName: 'repos/show'
repositoryBinding: 'controller.repository'
class: (->
'loading' unless @get('repository.isLoaded')
).property('repository.isLoaded')
urlGithub: (->
Travis.Urls.githubRepository(@get('repository.slug'))
).property('repository.slug'),
urlGithubWatchers: (->
Travis.Urls.githubWatchers(@get('repository.slug'))
).property('repository.slug'),
urlGithubNetwork: (->
Travis.Urls.githubNetwork(@get('repository.slug'))
).property('repository.slug'),

View File

@ -0,0 +1,26 @@
@Travis.reopen
RepositoriesListView: Em.CollectionView.extend
elementId: 'repositories'
repositoryBinding: 'content'
tagName: 'ul'
emptyView: Ember.View.extend
template: Ember.Handlebars.compile('<div class="loading"><span>Loading</span></div>')
itemViewClass: Travis.View.extend
repositoryBinding: 'content'
classNames: ['repository']
classNameBindings: ['color', 'selected']
selectedBinding: 'repository.selected'
color: (->
Travis.Helpers.colorForResult(@get('repository.lastBuildResult'))
).property('repository.lastBuildResult')
urlRepository: (->
Travis.Urls.repository(@get('repository.slug'))
).property('repository.slug')
urlLastBuild: (->
Travis.Urls.build(@get('repository.slug'), @get('repository.lastBuildId'))
).property('repository.slug', 'repository.lastBuildId')

View File

@ -0,0 +1,24 @@
@Travis.reopen
ReposListTabsView: Travis.View.extend
templateName: 'repos/list/tabs'
tabBinding: 'controller.tab'
activate: (event) ->
@get('controller').activate(event.target.name)
classRecent: (->
'active' if @get('tab') == 'recent'
).property('tab')
classOwned: (->
classes = []
classes.push('active') if @get('tab') == 'owned'
classes.push('display') if Em.get('Travis.currentUser')
classes.join(' ')
).property('tab', 'Travis.currentUser')
classSearch: (->
'active' if @get('tab') == 'search'
).property('tab')

View File

@ -0,0 +1,3 @@
@Travis.reopen
RepositoriesView: Travis.View.extend
templateName: 'repos/list'

View File

@ -0,0 +1,23 @@
require 'views/repo/show/tabs'
@Travis.reopen
RepositoryView: Travis.View.extend
templateName: 'repos/show'
repositoryBinding: 'controller.repository'
class: (->
'loading' unless @get('repository.isLoaded')
).property('repository.isLoaded')
urlGithub: (->
Travis.Urls.githubRepository(@get('repository.slug'))
).property('repository.slug'),
urlGithubWatchers: (->
Travis.Urls.githubWatchers(@get('repository.slug'))
).property('repository.slug'),
urlGithubNetwork: (->
Travis.Urls.githubNetwork(@get('repository.slug'))
).property('repository.slug'),

View File

@ -1,6 +1,6 @@
@Travis.reopen
TabsView: Travis.View.extend
templateName: 'repos/tabs'
RepoShowTabsView: Travis.View.extend
templateName: 'repos/show/tabs'
repositoryBinding: 'controller.repository'
buildBinding: 'controller.build'
@ -79,8 +79,3 @@
"{<img src=\"#{@get('urlStatusImage')}\" alt=\"Build Status\" />}[#{@get('urlRepository')}]"
).property('urlStatusImage')

View File

@ -2102,6 +2102,8 @@ function flushPendingChains() {
forEach.call(queue, function(q) { q[0].add(q[1]); });
Ember.warn('Watching an undefined global, Ember expects watched globals to be setup by the time the run loop is flushed, check for typos', pendingQueue.length === 0);
if(pendingQueue.length > 0)
console.log(pendingQueue)
}
/** @private */

View File

@ -14,8 +14,8 @@
Travis.Pusher.KEY = '23ed642e81512118260e'
Travis.run()
// Travis.app.store.load(Travis.User, { id: 1, login: 'svenfuchs', name: 'Sven Fuchs', email: 'me@svenfuchs.com', token: '1234567890', gravatar: '402602a60e500e85f2f5dc1ff3648ecb' });
// Travis.set('currentUser', Travis.User.find(1))
Travis.app.store.load(Travis.User, { id: 1, login: 'svenfuchs', name: 'Sven Fuchs', email: 'me@svenfuchs.com', token: '1234567890', gravatar: '402602a60e500e85f2f5dc1ff3648ecb' });
Travis.set('currentUser', Travis.User.find(1))
</script>
</head>
<body>

File diff suppressed because one or more lines are too long

View File

@ -4056,6 +4056,8 @@ function flushPendingChains() {
forEach.call(queue, function(q) { q[0].add(q[1]); });
Ember.warn('Watching an undefined global, Ember expects watched globals to be setup by the time the run loop is flushed, check for typos', pendingQueue.length === 0);
if(pendingQueue.length > 0)
console.log(pendingQueue)
}
/** @private */