refactor layouts and add profile/service_hooks
This commit is contained in:
parent
9a60e18a8a
commit
888c2719b8
|
@ -22,18 +22,29 @@ require 'ext/jquery'
|
||||||
{ name: 'jvmotp', display: 'JVM and Erlang' },
|
{ name: 'jvmotp', display: 'JVM and Erlang' },
|
||||||
],
|
],
|
||||||
|
|
||||||
|
currentUserId: 1
|
||||||
|
|
||||||
run: ->
|
run: ->
|
||||||
@app = Travis.App.create(this)
|
@app = Travis.App.create(this)
|
||||||
@app.initialize()
|
@app.initialize()
|
||||||
|
|
||||||
App: Em.Application.extend
|
App: Em.Application.extend
|
||||||
initialize: (router) ->
|
initialize: (router) ->
|
||||||
|
@connect()
|
||||||
@store = Travis.Store.create()
|
@store = Travis.Store.create()
|
||||||
@store.loadMany(Travis.Sponsor, Travis.SPONSORS)
|
@store.loadMany(Travis.Sponsor, Travis.SPONSORS)
|
||||||
@routes = Travis.Router.create(app: this)
|
@routes = Travis.Router.create(app: this)
|
||||||
@_super(Em.Object.create())
|
@_super(Em.Object.create())
|
||||||
@routes.start()
|
@routes.start()
|
||||||
|
|
||||||
|
connect: ->
|
||||||
|
@controller = Em.Controller.create()
|
||||||
|
view = Em.View.create
|
||||||
|
template: Em.Handlebars.compile('{{outlet layout}}')
|
||||||
|
controller: @controller
|
||||||
|
view.appendTo(@get('rootElement') || 'body')
|
||||||
|
|
||||||
|
|
||||||
require 'controllers'
|
require 'controllers'
|
||||||
require 'helpers'
|
require 'helpers'
|
||||||
require 'layout'
|
require 'layout'
|
||||||
|
|
|
@ -2,54 +2,13 @@ require 'helpers'
|
||||||
require 'travis/ticker'
|
require 'travis/ticker'
|
||||||
|
|
||||||
Travis.Controllers = Em.Namespace.create
|
Travis.Controllers = Em.Namespace.create
|
||||||
AppController: Em.Controller.extend()
|
|
||||||
|
|
||||||
RepositoriesController: Em.ArrayController.extend()
|
RepositoriesController: Em.ArrayController.extend()
|
||||||
RepositoryController: Em.ObjectController.extend(Travis.Urls.Repository)
|
RepositoryController: Em.ObjectController.extend(Travis.Urls.Repository)
|
||||||
TabsController: Em.Controller.extend()
|
|
||||||
BuildsController: Em.ArrayController.extend()
|
BuildsController: Em.ArrayController.extend()
|
||||||
BuildController: Em.ObjectController.extend(Travis.Urls.Commit)
|
BuildController: Em.ObjectController.extend(Travis.Urls.Commit)
|
||||||
JobController: Em.ObjectController.extend(Travis.Urls.Commit)
|
JobController: Em.ObjectController.extend(Travis.Urls.Commit)
|
||||||
|
|
||||||
SidebarController: Em.Controller.extend()
|
|
||||||
QueuesController: Em.ArrayController.extend()
|
QueuesController: Em.ArrayController.extend()
|
||||||
|
HooksController: Em.ArrayController.extend()
|
||||||
|
|
||||||
SponsorsController: Em.ArrayController.extend
|
require 'controllers/sponsors'
|
||||||
page: 0
|
require 'controllers/workers'
|
||||||
|
|
||||||
arrangedContent: (->
|
|
||||||
@get('shuffled').slice(@start(), @end())
|
|
||||||
).property('shuffled.length', 'page')
|
|
||||||
|
|
||||||
shuffled: (->
|
|
||||||
if content = @get('content') then $.shuffle(content) else []
|
|
||||||
).property('content.length')
|
|
||||||
|
|
||||||
next: ->
|
|
||||||
@set('page', if @isLast() then 0 else @get('page') + 1)
|
|
||||||
|
|
||||||
pages: (->
|
|
||||||
length = @getPath('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')
|
|
||||||
|
|
||||||
WorkersController: Em.ArrayController.extend
|
|
||||||
groups: (->
|
|
||||||
groups = {}
|
|
||||||
for worker in @get('content').toArray()
|
|
||||||
host = worker.get('host')
|
|
||||||
groups[host] = Em.ArrayProxy.create(content: []) if !(host in groups)
|
|
||||||
groups[host].pushObject(worker)
|
|
||||||
$.values(groups)
|
|
||||||
).property('content.length')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
27
assets/javascripts/app/controllers/sponsors.coffee
Normal file
27
assets/javascripts/app/controllers/sponsors.coffee
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
Travis.Controllers.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')
|
||||||
|
|
||||||
|
next: ->
|
||||||
|
@set('page', if @isLast() then 0 else @get('page') + 1)
|
||||||
|
|
||||||
|
pages: (->
|
||||||
|
length = @getPath('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')
|
10
assets/javascripts/app/controllers/workers.coffee
Normal file
10
assets/javascripts/app/controllers/workers.coffee
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
Travis.Controllers.WorkersController = Em.ArrayController.extend
|
||||||
|
groups: (->
|
||||||
|
groups = {}
|
||||||
|
for worker in @get('content').toArray()
|
||||||
|
host = worker.get('host')
|
||||||
|
groups[host] = Em.ArrayProxy.create(content: []) if !(host in groups)
|
||||||
|
groups[host].pushObject(worker)
|
||||||
|
$.values(groups)
|
||||||
|
).property('content.length')
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
Travis.Layout = Em.Namespace.create()
|
Travis.Layout = Em.Namespace.create()
|
||||||
Travis.Layout.instance = (name) ->
|
Travis.Layout.instance = (name, parent) ->
|
||||||
if @layout && @layout.name == name
|
if @layout && @layout.name == name
|
||||||
@layout
|
@layout
|
||||||
else
|
else
|
||||||
@layout = Travis.Layout[name].create(name: name)
|
@layout = Travis.Layout[name].create(parent: parent)
|
||||||
|
|
||||||
require 'layout/default'
|
require 'layout/default'
|
||||||
require 'layout/sidebar'
|
require 'layout/sidebar'
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
Travis.Layout.Base = Em.Object.extend
|
Travis.Layout.Base = Em.Object.extend
|
||||||
init: ->
|
init: ->
|
||||||
@setup(arguments)
|
@parent = @get('parent')
|
||||||
|
@setup(Array.prototype.slice.apply(arguments))
|
||||||
@connect()
|
@connect()
|
||||||
|
|
||||||
setup: (controllers) ->
|
setup: (controllers) ->
|
||||||
$.extend this, Travis.Controllers
|
$.extend this, Travis.Controllers
|
||||||
$.extend this, Travis.Views
|
$.extend this, Travis.Views
|
||||||
|
|
||||||
for name in controllers
|
for name in controllers.concat(@get('name'))
|
||||||
key = "#{$.camelize(name, false)}Controller"
|
key = "#{$.camelize(name, false)}Controller"
|
||||||
name = $.camelize(key)
|
name = $.camelize(key)
|
||||||
this[key] = Travis.Controllers[name].create(namespace: this, controllers: this)
|
klass = Travis.Controllers[name] || Em.Controller
|
||||||
|
this[key] = klass.create(namespace: this, controllers: this)
|
||||||
|
|
||||||
connect: ->
|
connect: ->
|
||||||
view = Em.View.create(templateName: "layouts/#{@get('name').toLowerCase()}")
|
@parent.connectOutlet
|
||||||
view.set('controller', @appController)
|
outletName: 'layout'
|
||||||
view.appendTo(@get('rootElement') || 'body')
|
controller: @controller()
|
||||||
|
viewClass: @viewClass()
|
||||||
|
|
||||||
|
controller: ->
|
||||||
|
this["#{$.camelize(@get('name'), false)}Controller"]
|
||||||
|
|
||||||
|
viewClass: ->
|
||||||
|
Travis.Views["#{$.camelize(@get('name'))}Layout"]
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
require 'layout/base'
|
require 'layout/base'
|
||||||
|
|
||||||
Travis.Layout.Default = Travis.Layout.Base.extend
|
Travis.Layout.Default = Travis.Layout.Base.extend
|
||||||
|
name: 'default'
|
||||||
|
|
||||||
init: ->
|
init: ->
|
||||||
@_super('app', 'repositories', 'repository', 'tabs', 'build', 'job')
|
@_super('repositories', 'repository', 'tabs', 'build', 'job')
|
||||||
@connectLeft(Travis.Repository.find())
|
@connectLeft(Travis.Repository.find())
|
||||||
Travis.Layout.Sidebar.create(appController: @get('appController'))
|
Travis.Layout.Sidebar.create(defaultController: @get('defaultController'))
|
||||||
|
|
||||||
viewIndex: (params) ->
|
viewIndex: (params) ->
|
||||||
onceLoaded @repositories, =>
|
onceLoaded @repositories, =>
|
||||||
|
@ -59,11 +61,11 @@ Travis.Layout.Default = Travis.Layout.Base.extend
|
||||||
|
|
||||||
connectLeft: (repositories) ->
|
connectLeft: (repositories) ->
|
||||||
@repositories = repositories
|
@repositories = repositories
|
||||||
@appController.connectOutlet(outletName: 'left', name: 'repositories', context: repositories)
|
@defaultController.connectOutlet(outletName: 'left', name: 'repositories', context: repositories)
|
||||||
|
|
||||||
connectRepository: (repository) ->
|
connectRepository: (repository) ->
|
||||||
@repository = repository
|
@repository = repository
|
||||||
@appController.connectOutlet(outletName: 'main', name: 'repository', context: repository)
|
@defaultController.connectOutlet(outletName: 'main', name: 'repository', context: repository)
|
||||||
|
|
||||||
connectTabs: (build, job) ->
|
connectTabs: (build, job) ->
|
||||||
@tabsController.set('repository', @repository)
|
@tabsController.set('repository', @repository)
|
||||||
|
|
|
@ -1,7 +1,18 @@
|
||||||
require 'layout/base'
|
require 'layout/base'
|
||||||
|
|
||||||
Travis.Layout.Profile = Travis.Layout.Base.extend
|
Travis.Layout.Profile = Travis.Layout.Base.extend
|
||||||
name: 'default'
|
name: 'profile'
|
||||||
|
|
||||||
init: ->
|
init: ->
|
||||||
|
@_super('profile', 'hooks')
|
||||||
|
|
||||||
|
viewShow: (params) ->
|
||||||
|
@connectProfile(Travis.Profile.find())
|
||||||
|
@connectHooks(Travis.Hook.find())
|
||||||
|
|
||||||
|
connectProfile: (profile) ->
|
||||||
|
@profileController.connectOutlet(outletName: 'main', name: 'profile', context: profile)
|
||||||
|
|
||||||
|
connectHooks: (hooks) ->
|
||||||
|
@profileController.connectOutlet(outletName: 'hooks', name: 'hooks', context: hooks)
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
require 'layout/base'
|
require 'layout/base'
|
||||||
|
|
||||||
Travis.Layout.Sidebar = Travis.Layout.Base.extend
|
Travis.Layout.Sidebar = Travis.Layout.Base.extend
|
||||||
|
name: 'sidebar'
|
||||||
|
|
||||||
init: ->
|
init: ->
|
||||||
@_super('sidebar', 'sponsors', 'workers', 'queues')
|
@_super('sponsors', 'workers', 'queues')
|
||||||
@appController = @get('appController')
|
@defaultController = @get('defaultController')
|
||||||
|
|
||||||
@connectSponsors(Travis.Sponsor.decks(), Travis.Sponsor.links())
|
@connectSponsors(Travis.Sponsor.decks(), Travis.Sponsor.links())
|
||||||
@connectWorkers(Travis.Worker.find())
|
@connectWorkers(Travis.Worker.find())
|
||||||
|
@ -12,13 +14,13 @@ Travis.Layout.Sidebar = Travis.Layout.Base.extend
|
||||||
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
|
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
|
||||||
|
|
||||||
connect: ->
|
connect: ->
|
||||||
@appController.connectOutlet(outletName: 'right', name: 'sidebar')
|
@defaultController.connectOutlet(outletName: 'right', name: 'sidebar')
|
||||||
|
|
||||||
connectSponsors: (decks, links) ->
|
connectSponsors: (decks, links) ->
|
||||||
@sponsorsController = Em.Controller.create
|
@sponsorsController = Em.Controller.create
|
||||||
decks: Travis.Controllers.SponsorsController.create(perPage: 1, content: decks)
|
decks: Travis.Controllers.SponsorsController.create(perPage: 1, content: decks)
|
||||||
links: Travis.Controllers.SponsorsController.create(perPage: 6, content: links)
|
links: Travis.Controllers.SponsorsController.create(perPage: 6, content: links)
|
||||||
@appController.set 'sponsors', @sponsorsController
|
@defaultController.set 'sponsors', @sponsorsController
|
||||||
|
|
||||||
tick: ->
|
tick: ->
|
||||||
@sponsorsController.get('decks').next()
|
@sponsorsController.get('decks').next()
|
||||||
|
@ -26,7 +28,7 @@ Travis.Layout.Sidebar = Travis.Layout.Base.extend
|
||||||
|
|
||||||
connectWorkers: (workers) ->
|
connectWorkers: (workers) ->
|
||||||
@workersController.set('content', workers)
|
@workersController.set('content', workers)
|
||||||
@appController.set('workers', @workersController)
|
@defaultController.set('workers', @workersController)
|
||||||
|
|
||||||
connectQueues: (queues) ->
|
connectQueues: (queues) ->
|
||||||
queues = for queue in queues
|
queues = for queue in queues
|
||||||
|
@ -34,5 +36,5 @@ Travis.Layout.Sidebar = Travis.Layout.Base.extend
|
||||||
content: Travis.Job.queued(queue.name)
|
content: Travis.Job.queued(queue.name)
|
||||||
name: queue.display
|
name: queue.display
|
||||||
@queuesController.set('content', queues)
|
@queuesController.set('content', queues)
|
||||||
@appController.set('queues', @queuesController)
|
@defaultController.set('queues', @queuesController)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
require 'models/artifact'
|
require 'models/artifact'
|
||||||
require 'models/build'
|
require 'models/build'
|
||||||
require 'models/commit'
|
require 'models/commit'
|
||||||
|
require 'models/hook'
|
||||||
require 'models/job'
|
require 'models/job'
|
||||||
|
require 'models/profile'
|
||||||
require 'models/repository'
|
require 'models/repository'
|
||||||
require 'models/sponsor'
|
require 'models/sponsor'
|
||||||
require 'models/worker'
|
require 'models/worker'
|
||||||
|
|
32
assets/javascripts/app/models/hook.coffee
Normal file
32
assets/javascripts/app/models/hook.coffee
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
require 'travis/model'
|
||||||
|
|
||||||
|
@Travis.Hook = Travis.Model.extend
|
||||||
|
primaryKey: 'slug'
|
||||||
|
slug: DS.attr('string')
|
||||||
|
description: DS.attr('string')
|
||||||
|
active: DS.attr('boolean')
|
||||||
|
|
||||||
|
owner: (->
|
||||||
|
@get('slug').split('/')[0]
|
||||||
|
).property('slug')
|
||||||
|
|
||||||
|
name: (->
|
||||||
|
@get('slug').split('/')[1]
|
||||||
|
).property('slug')
|
||||||
|
|
||||||
|
urlGithub: (->
|
||||||
|
"http://github.com/#{@get('slug')}"
|
||||||
|
).property()
|
||||||
|
|
||||||
|
urlGithubAdmin: (->
|
||||||
|
"http://github.com/#{@get('slug')}/admin/hooks#travis_minibucket"
|
||||||
|
).property()
|
||||||
|
|
||||||
|
toggle: ->
|
||||||
|
@set 'active', !@get('active')
|
||||||
|
Travis.app.store.commit()
|
||||||
|
|
||||||
|
@Travis.Hook.reopenClass
|
||||||
|
url: 'profile/hooks'
|
||||||
|
|
||||||
|
|
20
assets/javascripts/app/models/profile.coffee
Normal file
20
assets/javascripts/app/models/profile.coffee
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
require 'travis/model'
|
||||||
|
|
||||||
|
@Travis.Profile = Travis.Model.extend
|
||||||
|
name: DS.attr('string')
|
||||||
|
email: DS.attr('string')
|
||||||
|
login: DS.attr('string')
|
||||||
|
token: DS.attr('string')
|
||||||
|
gravatarUrl: DS.attr('string')
|
||||||
|
|
||||||
|
urlGithub: (->
|
||||||
|
"http://github.com/#{@get('login')}"
|
||||||
|
).property()
|
||||||
|
|
||||||
|
@Travis.Profile.reopenClass
|
||||||
|
find: ->
|
||||||
|
@_super(Travis.currentUserId) if Travis.currentUserId
|
||||||
|
|
||||||
|
buildURL: ->
|
||||||
|
'profile'
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
require 'travis/model'
|
|
||||||
|
|
||||||
@Travis.ServiceHook = Travis.Model.extend
|
|
||||||
primaryKey: 'slug'
|
|
||||||
name: DS.attr('string')
|
|
||||||
owner_name: DS.attr('string')
|
|
||||||
active: DS.attr('boolean')
|
|
||||||
|
|
||||||
slug: (->
|
|
||||||
[@get('owner_name'), @get('name')].join('/')
|
|
||||||
).property()
|
|
||||||
|
|
||||||
toggle: ->
|
|
||||||
@set 'active', !@get('active')
|
|
||||||
Travis.app.store.commit()
|
|
||||||
|
|
||||||
@Travis.ServiceHook.reopenClass
|
|
||||||
url: 'profile/service_hooks'
|
|
||||||
|
|
||||||
|
|
|
@ -21,5 +21,5 @@ Travis.Router = Em.Object.extend
|
||||||
@action(layout, action, params)
|
@action(layout, action, params)
|
||||||
|
|
||||||
action: (layout, action, params) ->
|
action: (layout, action, params) ->
|
||||||
layout = Travis.Layout.instance(layout)
|
layout = Travis.Layout.instance(layout, @app.controller)
|
||||||
layout["view#{$.camelize(action)}"](params)
|
layout["view#{$.camelize(action)}"](params)
|
||||||
|
|
|
@ -8,7 +8,6 @@ require 'models'
|
||||||
builds: Travis.Build,
|
builds: Travis.Build,
|
||||||
commits: Travis.Commit,
|
commits: Travis.Commit,
|
||||||
jobs: Travis.Job
|
jobs: Travis.Job
|
||||||
service_hooks: Travis.ServiceHook
|
|
||||||
|
|
||||||
plurals:
|
plurals:
|
||||||
repository: 'repositories',
|
repository: 'repositories',
|
||||||
|
|
18
assets/javascripts/app/templates/hooks/list.hbs
Normal file
18
assets/javascripts/app/templates/hooks/list.hbs
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{{#if content.length}}
|
||||||
|
<ul id="hooks">
|
||||||
|
{{#each content}}
|
||||||
|
<li {{bindAttr class="active"}}>
|
||||||
|
<a {{bindAttr href="urlGithub"}} rel="nofollow">{{owner}}/{{name}}</a>
|
||||||
|
<p class="description">{{description}}</p>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a {{bindAttr href="urlGithubAdmin"}} class="github-admin tool-tip" title="Github service hooks admin page"></a>
|
||||||
|
<a {{action toggle}} class="switch">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
{{else}}
|
||||||
|
<p class="sync">Please wait while we sync with GitHub</p>
|
||||||
|
{{/if}}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div id="head">
|
<div id="head">
|
||||||
<a href="/">Travis CI</a>
|
<a href="#">Travis CI</a>
|
||||||
<a href="#">#</a>
|
<a href="#!/profile">Profile</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="left">
|
<div id="left">
|
||||||
|
|
46
assets/javascripts/app/templates/profile/show.hbs
Normal file
46
assets/javascripts/app/templates/profile/show.hbs
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
<h2>{{name}}</h2>
|
||||||
|
<img {{bindAttr src="gravatarUrl"}}>
|
||||||
|
|
||||||
|
<dl class="profile">
|
||||||
|
<dt>
|
||||||
|
{{t profiles.show.github}}:
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<a {{bindAttr href="urlGithub"}}>{{login}}</a>
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
{{t profiles.show.email}}:
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{{email}}
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
{{t profiles.show.token}}:
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
{{token}}
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p class="notice">
|
||||||
|
{{{t profiles.show.messages.notice}}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>{{t profiles.show.your_locale}}</h4>
|
||||||
|
<form>
|
||||||
|
<select name="user[locale]">
|
||||||
|
</select>
|
||||||
|
<button name="commit">
|
||||||
|
{{t profiles.show.update_locale}}
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<h4>{{t profiles.show.your_repos}}</h4>
|
||||||
|
<p class="tip">
|
||||||
|
{{{t profiles.show.message.your_repos}}}
|
||||||
|
<a href="http://about.travis-ci.org/docs/user/build-configuration">
|
||||||
|
{{{t profiles.show.message.config}}}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{{outlet hooks}}
|
|
@ -1,7 +1,12 @@
|
||||||
require 'ext/ember/namespace'
|
require 'ext/ember/namespace'
|
||||||
|
|
||||||
@Travis.Views = Em.Namespace.create
|
@Travis.Views = Em.Namespace.create
|
||||||
SidebarView: Em.View.extend(templateName: 'layouts/sidebar')
|
DefaultLayout: Em.View.extend(templateName: 'layouts/default')
|
||||||
|
ProfileLayout: Em.View.extend(templateName: 'layouts/profile')
|
||||||
|
|
||||||
|
SidebarView: Em.View.extend(templateName: 'layouts/sidebar')
|
||||||
|
ProfileView: Em.View.extend(templateName: 'profile/show')
|
||||||
|
HooksView: Em.View.extend(templateName: 'hooks/list')
|
||||||
|
|
||||||
require 'views/build'
|
require 'views/build'
|
||||||
require 'views/job'
|
require 'views/job'
|
||||||
|
|
|
@ -40,29 +40,28 @@ $.fn.extend
|
||||||
$.extend
|
$.extend
|
||||||
keys: (obj) ->
|
keys: (obj) ->
|
||||||
keys = []
|
keys = []
|
||||||
$.each obj, (key) ->
|
$.each obj, (key) -> keys.push key
|
||||||
keys.push key
|
|
||||||
|
|
||||||
keys
|
keys
|
||||||
|
|
||||||
values: (obj) ->
|
values: (obj) ->
|
||||||
values = []
|
values = []
|
||||||
$.each obj, (key, value) ->
|
$.each obj, (key, value) -> values.push value
|
||||||
values.push value
|
|
||||||
|
|
||||||
values
|
values
|
||||||
|
|
||||||
|
underscore: (string) ->
|
||||||
|
string[0].toLowerCase() + string.substring(1).replace /([A-Z])?/g, (match, chr) ->
|
||||||
|
if chr then "_#{chr.toUpperCase()}" else ''
|
||||||
|
|
||||||
camelize: (string, uppercase) ->
|
camelize: (string, uppercase) ->
|
||||||
string = $.capitalize(string) if uppercase or typeof uppercase is 'undefined'
|
string = if uppercase == false then $.underscore(string) else $.capitalize(string)
|
||||||
string.replace /_(.)?/g, (match, chr) ->
|
string.replace /_(.)?/g, (match, chr) ->
|
||||||
(if chr then chr.toUpperCase() else '')
|
if chr then chr.toUpperCase() else ''
|
||||||
|
|
||||||
capitalize: (string) ->
|
capitalize: (string) ->
|
||||||
string[0].toUpperCase() + string.substring(1)
|
string[0].toUpperCase() + string.substring(1)
|
||||||
|
|
||||||
compact: (array) ->
|
compact: (array) ->
|
||||||
$.grep array, (value) ->
|
$.grep array, (value) -> !!value
|
||||||
!!value
|
|
||||||
|
|
||||||
all: (array, callback) ->
|
all: (array, callback) ->
|
||||||
args = Array::slice.apply(arguments)
|
args = Array::slice.apply(arguments)
|
||||||
|
|
|
@ -45,6 +45,21 @@ workers = [
|
||||||
{ id: 2, name: 'ruby-2', host: 'worker.travis-ci.org', state: 'ready' }
|
{ id: 2, name: 'ruby-2', host: 'worker.travis-ci.org', state: 'ready' }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
profile =
|
||||||
|
id: 1
|
||||||
|
login: 'svenfuchs'
|
||||||
|
name: 'Sven Fuchs'
|
||||||
|
email: 'me@svenfuchs.com'
|
||||||
|
token: '1234567890'
|
||||||
|
gravatar_url: 'http://www.gravatar.com/avatar/402602a60e500e85f2f5dc1ff3648ecb?s=48&d=mm'
|
||||||
|
|
||||||
|
hooks = [
|
||||||
|
{ slug: 'travis-ci/travis-core', description: 'description of travis-core', active: true, private: false }
|
||||||
|
{ slug: 'travis-ci/travis-assets', description: 'description of travis-assets', active: false, private: false }
|
||||||
|
{ slug: 'svenfuchs/minimal', description: 'description of minimal', active: true, private: false }
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
$.mockjax
|
$.mockjax
|
||||||
url: '/repositories'
|
url: '/repositories'
|
||||||
responseTime: responseTime
|
responseTime: responseTime
|
||||||
|
@ -99,3 +114,14 @@ $.mockjax
|
||||||
responseTime: responseTime
|
responseTime: responseTime
|
||||||
responseText:
|
responseText:
|
||||||
jobs: $.select(jobs, (job) -> job.state == 'created')
|
jobs: $.select(jobs, (job) -> job.state == 'created')
|
||||||
|
|
||||||
|
$.mockjax
|
||||||
|
url: '/profile'
|
||||||
|
responseTime: responseTime
|
||||||
|
responseText: { profile: profile }
|
||||||
|
|
||||||
|
$.mockjax
|
||||||
|
url: '/profile/hooks'
|
||||||
|
responseTime: responseTime
|
||||||
|
responseText: { hooks: hooks }
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user