Merge branch 'ps-ember-update' of github.com:travis-ci/travis-web into ps-ember-update
This commit is contained in:
commit
729d22c9a4
|
@ -1,378 +1,3 @@
|
||||||
#require 'travis/location'
|
|
||||||
#
|
|
||||||
#Ember.Route.reopen
|
|
||||||
# enter: (router) ->
|
|
||||||
# @_super(router)
|
|
||||||
# _gaq.push(['_trackPageview', @absoluteRoute(router)]) if @get('isLeafRoute') && _gaq?
|
|
||||||
#
|
|
||||||
defaultRoute = Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
index: 1000
|
|
||||||
|
|
||||||
lineNumberRoute = Ember.Route.extend
|
|
||||||
route: '#L:number'
|
|
||||||
index: 1
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.saveLineNumberHash()
|
|
||||||
|
|
||||||
dynamicSegmentPattern: "([0-9]+)"
|
|
||||||
|
|
||||||
Travis.OldRouter = Ember.Object.extend
|
|
||||||
location: 'travis'
|
|
||||||
# enableLogging: true
|
|
||||||
enableLogging: false
|
|
||||||
initialState: 'loading'
|
|
||||||
|
|
||||||
# showRoot: Ember.Route.transitionTo('root.home.show')
|
|
||||||
# showStats: Ember.Route.transitionTo('root.stats')
|
|
||||||
#
|
|
||||||
# showRepo: Ember.Route.transitionTo('root.home.repo.show')
|
|
||||||
# showBuilds: Ember.Route.transitionTo('root.home.repo.builds.index')
|
|
||||||
# showBuild: Ember.Route.transitionTo('root.home.repo.builds.show')
|
|
||||||
# showPullRequests: Ember.Route.transitionTo('root.home.repo.pullRequests')
|
|
||||||
# showBranches: Ember.Route.transitionTo('root.home.repo.branches')
|
|
||||||
# showEvents: Ember.Route.transitionTo('root.home.repo.events')
|
|
||||||
# showJob: Ember.Route.transitionTo('root.home.repo.job')
|
|
||||||
#
|
|
||||||
# showProfile: Ember.Route.transitionTo('root.profile')
|
|
||||||
# showAccount: Ember.Route.transitionTo('root.profile.account')
|
|
||||||
# showUserProfile: Ember.Route.transitionTo('root.profile.account.profile')
|
|
||||||
|
|
||||||
saveLineNumberHash: (path) ->
|
|
||||||
Ember.run.next this, ->
|
|
||||||
path = path || @get('location').getURL()
|
|
||||||
if match = path.match(/#L\d+$/)
|
|
||||||
@set 'repoController.lineNumberHash', match[0]
|
|
||||||
|
|
||||||
reload: ->
|
|
||||||
console.log 'Triggering reload'
|
|
||||||
url = @get('location').getURL()
|
|
||||||
@transitionTo('loading')
|
|
||||||
# Without ember next @route sometimes hit the place where HistoryLocation
|
|
||||||
# does not have any state set up yet, so it's best to defer it a little bit.
|
|
||||||
Ember.run.next this, ->
|
|
||||||
@route(url)
|
|
||||||
|
|
||||||
signedIn: ->
|
|
||||||
!!Travis.app.get('auth.user')
|
|
||||||
|
|
||||||
needsAuth: (path) ->
|
|
||||||
path.indexOf('/profile') == 0
|
|
||||||
|
|
||||||
afterSignOut: ->
|
|
||||||
@authorize('/')
|
|
||||||
|
|
||||||
loading: Ember.Route.extend
|
|
||||||
routePath: (router, path) ->
|
|
||||||
router.saveLineNumberHash(path)
|
|
||||||
router.authorize(path)
|
|
||||||
Travis.app.autoSignIn() unless router.signedIn()
|
|
||||||
|
|
||||||
authorize: (path) ->
|
|
||||||
if !@signedIn() && @needsAuth(path)
|
|
||||||
Travis.app.storeAfterSignInPath(path)
|
|
||||||
@transitionTo('root.auth')
|
|
||||||
else
|
|
||||||
@transitionTo('root')
|
|
||||||
@route(path)
|
|
||||||
|
|
||||||
root: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
loading: Ember.State.extend()
|
|
||||||
afterSignIn: (-> )
|
|
||||||
|
|
||||||
auth: Ember.Route.extend
|
|
||||||
route: '/auth'
|
|
||||||
customRegexp: /^\/?auth($|\/)/
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('applicationView').connectLayout 'simple'
|
|
||||||
$('body').attr('id', 'auth')
|
|
||||||
router.get('applicationController').connectOutlet('top', 'top')
|
|
||||||
router.get('applicationController').connectOutlet('main', 'signin')
|
|
||||||
|
|
||||||
afterSignIn: (router, path) ->
|
|
||||||
router.route(path || '/')
|
|
||||||
|
|
||||||
stats: Ember.Route.extend
|
|
||||||
route: '/stats'
|
|
||||||
customRegexp: /^\/?stats($|\/)/
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('applicationView').connectLayout 'simple'
|
|
||||||
$('body').attr('id', 'stats')
|
|
||||||
router.get('applicationController').connectOutlet 'top', 'top'
|
|
||||||
router.get('applicationController').connectOutlet 'main', 'stats'
|
|
||||||
|
|
||||||
profile: Ember.Route.extend
|
|
||||||
initialState: 'index'
|
|
||||||
route: '/profile'
|
|
||||||
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('applicationView').connectLayout 'profile'
|
|
||||||
$('body').attr('id', 'profile')
|
|
||||||
router.get('accountsController').set('content', Travis.Account.find())
|
|
||||||
router.get('applicationController').connectOutlet 'top', 'top'
|
|
||||||
router.get('applicationController').connectOutlet 'left', 'accounts'
|
|
||||||
router.get('applicationController').connectOutlet 'flash', 'flash'
|
|
||||||
|
|
||||||
index: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('applicationController').connectOutlet 'main', 'profile'
|
|
||||||
router.get('profileController').activate 'hooks'
|
|
||||||
|
|
||||||
account: Ember.Route.extend
|
|
||||||
initialState: 'index'
|
|
||||||
route: '/:login'
|
|
||||||
|
|
||||||
connectOutlets: (router, account) ->
|
|
||||||
if account
|
|
||||||
params = { login: account.get('login') }
|
|
||||||
router.get('profileController').setParams(params)
|
|
||||||
else
|
|
||||||
router.send 'showProfile'
|
|
||||||
|
|
||||||
deserialize: (router, params) ->
|
|
||||||
controller = router.get('accountsController')
|
|
||||||
|
|
||||||
unless controller.get 'content'
|
|
||||||
controller.set('content', Travis.Account.find())
|
|
||||||
|
|
||||||
account = controller.findByLogin(params.login)
|
|
||||||
|
|
||||||
if account
|
|
||||||
account
|
|
||||||
else
|
|
||||||
deferred = $.Deferred()
|
|
||||||
|
|
||||||
observer = ->
|
|
||||||
if account = controller.findByLogin(params.login)
|
|
||||||
controller.removeObserver 'content.length', observer
|
|
||||||
deferred.resolve account
|
|
||||||
controller.addObserver 'content.length', observer
|
|
||||||
|
|
||||||
deferred.promise()
|
|
||||||
|
|
||||||
serialize: (router, account) ->
|
|
||||||
if account
|
|
||||||
{ login: account.get('login') }
|
|
||||||
else
|
|
||||||
{}
|
|
||||||
|
|
||||||
index: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('profileController').activate 'hooks'
|
|
||||||
|
|
||||||
profile: Ember.Route.extend
|
|
||||||
route: '/profile'
|
|
||||||
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('profileController').activate 'user'
|
|
||||||
|
|
||||||
home: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('applicationView').connectLayout 'home'
|
|
||||||
$('body').attr('id', 'home')
|
|
||||||
router.get('applicationController').connectOutlet 'left', 'repos'
|
|
||||||
router.get('applicationController').connectOutlet 'right', 'sidebar'
|
|
||||||
router.get('applicationController').connectOutlet 'top', 'top'
|
|
||||||
router.get('applicationController').connectOutlet 'main', 'repo'
|
|
||||||
router.get('applicationController').connectOutlet 'flash', 'flash'
|
|
||||||
router.get('reposController').activate()
|
|
||||||
router.get('repoController').set('repos', router.get('reposController'))
|
|
||||||
|
|
||||||
show: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('repoController').activate('index')
|
|
||||||
|
|
||||||
initialState: 'default'
|
|
||||||
default: defaultRoute
|
|
||||||
lineNumber: lineNumberRoute
|
|
||||||
|
|
||||||
showWithLineNumber: Ember.Route.extend
|
|
||||||
route: '/#/L:number'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('repoController').activate('index')
|
|
||||||
|
|
||||||
repo: Ember.Route.extend
|
|
||||||
route: '/:owner/:name'
|
|
||||||
dynamicSegmentPattern: "([^/#]+)"
|
|
||||||
|
|
||||||
connectOutlets: (router, repo) ->
|
|
||||||
if repo && repo.constructor != Travis.Repo
|
|
||||||
repo = Travis.Repo.find(repo.id)
|
|
||||||
router.get('repoController').set 'repo', repo
|
|
||||||
|
|
||||||
deserialize: (router, params) ->
|
|
||||||
slug = "#{params.owner}/#{params.name}"
|
|
||||||
repos = Travis.Repo.bySlug(slug)
|
|
||||||
deferred = $.Deferred()
|
|
||||||
|
|
||||||
observer = ->
|
|
||||||
if repos.get 'isLoaded'
|
|
||||||
repos.removeObserver 'isLoaded', observer
|
|
||||||
deferred.resolve repos.objectAt(0)
|
|
||||||
|
|
||||||
if repos.length
|
|
||||||
deferred.resolve repos[0]
|
|
||||||
else
|
|
||||||
repos.addObserver 'isLoaded', observer
|
|
||||||
|
|
||||||
deferred.promise()
|
|
||||||
|
|
||||||
serialize: (router, repo) ->
|
|
||||||
if typeof repo == 'string'
|
|
||||||
[owner, name] = repo.split '/'
|
|
||||||
{ owner: owner, name: name }
|
|
||||||
else if repo && repo.constructor == Travis.Repo
|
|
||||||
{ owner: repo.get('owner'), name: repo.get('name') }
|
|
||||||
else if repo && repo.id && repo.slug
|
|
||||||
[owner, name] = repo.slug.split '/'
|
|
||||||
{ owner: owner, name: name }
|
|
||||||
else
|
|
||||||
# TODO: it would be nice to handle 404 somehow
|
|
||||||
{}
|
|
||||||
|
|
||||||
show: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
router.get('repoController').activate('current')
|
|
||||||
|
|
||||||
initialState: 'default'
|
|
||||||
default: defaultRoute
|
|
||||||
lineNumber: lineNumberRoute
|
|
||||||
|
|
||||||
builds: Ember.Route.extend
|
|
||||||
route: '/builds'
|
|
||||||
|
|
||||||
index: Ember.Route.extend
|
|
||||||
route: '/'
|
|
||||||
connectOutlets: (router, repo) ->
|
|
||||||
router.get('repoController').activate 'builds'
|
|
||||||
|
|
||||||
show: Ember.Route.extend
|
|
||||||
route: '/:build_id'
|
|
||||||
connectOutlets: (router, build) ->
|
|
||||||
unless build.get
|
|
||||||
# TODO: apparently when I use id in url, it will pass it
|
|
||||||
# here, why doesn't it use deserialize?
|
|
||||||
build = Travis.Build.find(build)
|
|
||||||
router.get('repoController').set 'build', build
|
|
||||||
router.get('repoController').activate 'build'
|
|
||||||
|
|
||||||
serialize: (router, build) ->
|
|
||||||
if build.get
|
|
||||||
{ build_id: build.get('id') }
|
|
||||||
else
|
|
||||||
{ build_id: build }
|
|
||||||
|
|
||||||
deserialize: (router, params) ->
|
|
||||||
# Something is wrong here. If I don't use deferred, id is not
|
|
||||||
# initialized and url ends up being /jobs/null
|
|
||||||
# This should not be needed, as id should be immediately set on the
|
|
||||||
# record.
|
|
||||||
# TODO: find out why it happens
|
|
||||||
build = Travis.Build.find params.build_id
|
|
||||||
|
|
||||||
if build.get 'id'
|
|
||||||
build
|
|
||||||
else
|
|
||||||
deferred = $.Deferred()
|
|
||||||
|
|
||||||
observer = ->
|
|
||||||
if build.get 'id'
|
|
||||||
build.removeObserver 'id', observer
|
|
||||||
deferred.resolve build
|
|
||||||
|
|
||||||
build.addObserver 'id', observer
|
|
||||||
|
|
||||||
deferred.promise()
|
|
||||||
|
|
||||||
# TODO: this is not dry, but for some weird
|
|
||||||
# reason Mixins don't play nice with Ember.Route
|
|
||||||
initialState: 'default'
|
|
||||||
default: defaultRoute
|
|
||||||
lineNumber: lineNumberRoute
|
|
||||||
dynamicSegmentPattern: "([^/#]+)"
|
|
||||||
|
|
||||||
logRedirect: Ember.Route.extend
|
|
||||||
route: '/log.txt'
|
|
||||||
connectOutlets: (router) ->
|
|
||||||
build = router.get('repoController').get 'build'
|
|
||||||
|
|
||||||
observer = ->
|
|
||||||
if logId = build.get('jobs.firstObject.log.id')
|
|
||||||
window.location = Travis.Urls.plainTextLog(logId)
|
|
||||||
|
|
||||||
build.removeObserver('jobs.firstObject.log.id', observer)
|
|
||||||
|
|
||||||
build.addObserver('jobs.firstObject.log.id', observer)
|
|
||||||
|
|
||||||
pullRequests: Ember.Route.extend
|
|
||||||
route: '/pull_requests'
|
|
||||||
connectOutlets: (router, repo) ->
|
|
||||||
router.get('repoController').activate 'pull_requests'
|
|
||||||
|
|
||||||
branches: Ember.Route.extend
|
|
||||||
route: '/branches'
|
|
||||||
connectOutlets: (router, repo) ->
|
|
||||||
router.get('repoController').activate 'branches'
|
|
||||||
|
|
||||||
events: Ember.Route.extend
|
|
||||||
route: '/events'
|
|
||||||
connectOutlets: (router, repo) ->
|
|
||||||
router.get('repoController').activate 'events'
|
|
||||||
|
|
||||||
job: Ember.Route.extend
|
|
||||||
route: '/jobs/:job_id'
|
|
||||||
dynamicSegmentPattern: "([^/#]+)"
|
|
||||||
connectOutlets: (router, job) ->
|
|
||||||
unless job.get
|
|
||||||
# In case I use id
|
|
||||||
job = Travis.Job.find(job)
|
|
||||||
router.get('repoController').set 'job', job
|
|
||||||
router.get('repoController').activate 'job'
|
|
||||||
|
|
||||||
serialize: (router, job) ->
|
|
||||||
if job.get
|
|
||||||
{ job_id: job.get('id') }
|
|
||||||
else
|
|
||||||
{ job_id: job }
|
|
||||||
|
|
||||||
deserialize: (router, params) ->
|
|
||||||
job = Travis.Job.find params.job_id
|
|
||||||
|
|
||||||
if job.get 'id'
|
|
||||||
job
|
|
||||||
else
|
|
||||||
deferred = $.Deferred()
|
|
||||||
|
|
||||||
observer = ->
|
|
||||||
if job.get 'id'
|
|
||||||
job.removeObserver 'id', observer
|
|
||||||
deferred.resolve job
|
|
||||||
job.addObserver 'id', observer
|
|
||||||
deferred.promise()
|
|
||||||
|
|
||||||
initialState: 'default'
|
|
||||||
default: defaultRoute
|
|
||||||
lineNumber: lineNumberRoute
|
|
||||||
|
|
||||||
logRedirect: Ember.Route.extend
|
|
||||||
route: '/log.txt'
|
|
||||||
connectOutlets: (router, job) ->
|
|
||||||
job = router.get('repoController').get 'job'
|
|
||||||
|
|
||||||
observer = ->
|
|
||||||
if logId = job.get('log.id')
|
|
||||||
window.location = Travis.Urls.plainTextLog(logId)
|
|
||||||
|
|
||||||
job.removeObserver('log.id', observer)
|
|
||||||
|
|
||||||
job.addObserver('log.id', observer)
|
|
||||||
|
|
||||||
Ember.Router.reopen
|
Ember.Router.reopen
|
||||||
location: (if testMode? then Ember.HashLocation.create() else Ember.HistoryLocation.create())
|
location: (if testMode? then Ember.HashLocation.create() else Ember.HistoryLocation.create())
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user