diff --git a/assets/scripts/app/app.coffee b/assets/scripts/app/app.coffee
index 1e750ae0..2f3409aa 100644
--- a/assets/scripts/app/app.coffee
+++ b/assets/scripts/app/app.coffee
@@ -53,5 +53,5 @@ Travis.reopen
$('#top .profile').append(element)
Em.run.later (-> element.remove()), 10
element = $(' ')
- $('#repository').append(element)
+ $('#repo').append(element)
Em.run.later (-> element.remove()), 10
diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee
index 2a760bce..26a6043c 100644
--- a/assets/scripts/app/controllers.coffee
+++ b/assets/scripts/app/controllers.coffee
@@ -29,7 +29,7 @@ require 'controllers/accounts'
require 'controllers/builds'
require 'controllers/home'
require 'controllers/profile'
-require 'controllers/repositories'
-require 'controllers/repository'
+require 'controllers/repos'
+require 'controllers/repo'
require 'controllers/sidebar'
require 'controllers/stats'
diff --git a/assets/scripts/app/controllers/builds.coffee b/assets/scripts/app/controllers/builds.coffee
index e52fee10..3f945639 100644
--- a/assets/scripts/app/controllers/builds.coffee
+++ b/assets/scripts/app/controllers/builds.coffee
@@ -1,5 +1,5 @@
Travis.BuildsController = Em.ArrayController.extend
# sortAscending: false
- repositoryBinding: 'parent.repository'
+ repo: 'parent.repo'
contentBinding: 'parent.builds'
diff --git a/assets/scripts/app/controllers/repository.coffee b/assets/scripts/app/controllers/repo.coffee
similarity index 73%
rename from assets/scripts/app/controllers/repository.coffee
rename to assets/scripts/app/controllers/repo.coffee
index 2cd80a23..08d66059 100644
--- a/assets/scripts/app/controllers/repository.coffee
+++ b/assets/scripts/app/controllers/repo.coffee
@@ -1,4 +1,4 @@
-Travis.RepositoryController = Travis.Controller.extend
+Travis.RepoController = Travis.Controller.extend
bindings: []
init: ->
@@ -20,25 +20,25 @@ Travis.RepositoryController = Travis.Controller.extend
this["view#{$.camelize(action)}"]()
viewIndex: ->
- @_bind('repository', 'controllers.repositoriesController.firstObject')
- @_bind('build', 'repository.lastBuild')
+ @_bind('repo', 'controllers.reposController.firstObject')
+ @_bind('build', 'repo.lastBuild')
@connectTab('current')
viewCurrent: ->
@connectTab('current')
- @_bind('build', 'repository.lastBuild')
+ @_bind('build', 'repo.lastBuild')
viewBuilds: ->
@connectTab('builds')
- @_bind('builds', 'repository.builds')
+ @_bind('builds', 'repo.builds')
viewPullRequests: ->
@connectTab('pull_requests')
- @_bind('builds', 'repository.pullRequests')
+ @_bind('builds', 'repo.pullRequests')
viewBranches: ->
@connectTab('branches')
- @_bind('builds', 'repository.branches')
+ @_bind('builds', 'repo.branches')
viewBuild: ->
@connectTab('build')
@@ -47,10 +47,10 @@ Travis.RepositoryController = Travis.Controller.extend
@_bind('build', 'job.build')
@connectTab('job')
- repositoryObserver: (->
- repository = @get('repository')
- repository.select() if repository
- ).observes('repository.id')
+ repoObserver: (->
+ repo = @get('repo')
+ repo.select() if repo
+ ).observes('repo.id')
connectTab: (tab) ->
name = if tab == 'current' then 'build' else tab
@@ -68,4 +68,3 @@ Travis.RepositoryController = Travis.Controller.extend
_unbind: ->
binding.disconnect(this) for binding in @bindings
@bindings.length = 0
-
diff --git a/assets/scripts/app/controllers/repositories.coffee b/assets/scripts/app/controllers/repos.coffee
similarity index 72%
rename from assets/scripts/app/controllers/repositories.coffee
rename to assets/scripts/app/controllers/repos.coffee
index 42bdb69e..fb31f626 100644
--- a/assets/scripts/app/controllers/repositories.coffee
+++ b/assets/scripts/app/controllers/repos.coffee
@@ -1,4 +1,4 @@
-Travis.RepositoriesController = Ember.ArrayController.extend
+Travis.ReposController = Ember.ArrayController.extend
defaultTab: 'recent'
sortProperties: ['sortOrder']
@@ -17,13 +17,13 @@ Travis.RepositoriesController = Ember.ArrayController.extend
this["view#{$.camelize(tab)}"](params)
viewRecent: ->
- @set('content', Travis.Repository.find())
+ @set('content', Travis.Repo.find())
viewOwned: ->
- @set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')))
+ @set('content', Travis.Repo.ownedBy(Travis.app.get('currentUser.login')))
viewSearch: (params) ->
- @set('content', Travis.Repository.search(params.search))
+ @set('content', Travis.Repo.search(params.search))
searchObserver: (->
search = @get('search')
diff --git a/assets/scripts/app/helpers/urls.coffee b/assets/scripts/app/helpers/urls.coffee
index 07d89be6..18777375 100644
--- a/assets/scripts/app/helpers/urls.coffee
+++ b/assets/scripts/app/helpers/urls.coffee
@@ -1,5 +1,5 @@
@Travis.Urls =
- repository: (slug) ->
+ repo: (slug) ->
"/#{slug}"
builds: (slug) ->
@@ -20,7 +20,7 @@
githubCommit: (slug, sha) ->
"http://github.com/#{slug}/commit/#{sha}"
- githubRepository: (slug) ->
+ githubRepo: (slug) ->
"http://github.com/#{slug}"
githubWatchers: (slug) ->
diff --git a/assets/scripts/app/models.coffee b/assets/scripts/app/models.coffee
index 3d9831b4..b116ae0f 100644
--- a/assets/scripts/app/models.coffee
+++ b/assets/scripts/app/models.coffee
@@ -6,7 +6,7 @@ require 'models/build'
require 'models/commit'
require 'models/hook'
require 'models/job'
-require 'models/repository'
+require 'models/repo'
require 'models/sponsor'
require 'models/user'
require 'models/worker'
diff --git a/assets/scripts/app/models/branch.coffee b/assets/scripts/app/models/branch.coffee
index 0648ad0f..6b6702e5 100644
--- a/assets/scripts/app/models/branch.coffee
+++ b/assets/scripts/app/models/branch.coffee
@@ -1,7 +1,7 @@
require 'travis/model'
@Travis.Branch = Travis.Model.extend Travis.Helpers,
- repositoryId: DS.attr('number')
+ repoId: DS.attr('number', key: 'repository_id')
commitId: DS.attr('number')
number: DS.attr('number')
branch: DS.attr('string')
@@ -13,9 +13,9 @@ require 'travis/model'
commit: DS.belongsTo('Travis.Commit')
- repository: (->
- Travis.Repository.find @get('repositoryId') if @get('repositoryId')
- ).property('repositoryId')
+ repo: (->
+ Travis.Repo.find @get('repoId') if @get('repoId')
+ ).property('repoId')
updateTimes: ->
@notifyPropertyChange 'started_at'
@@ -23,6 +23,6 @@ require 'travis/model'
@Travis.Branch.reopenClass
- byRepositoryId: (id) ->
+ byRepoId: (id) ->
@find repository_id: id
diff --git a/assets/scripts/app/models/build.coffee b/assets/scripts/app/models/build.coffee
index 081d1eb2..07d601e0 100644
--- a/assets/scripts/app/models/build.coffee
+++ b/assets/scripts/app/models/build.coffee
@@ -2,7 +2,7 @@ require 'travis/model'
@Travis.Build = Travis.Model.extend Travis.DurationCalculations,
eventType: DS.attr('string')
- repositoryId: DS.attr('number')
+ repoId: DS.attr('number')
commitId: DS.attr('number')
state: DS.attr('string')
@@ -14,7 +14,7 @@ require 'travis/model'
startedAt: DS.attr('string', key: 'started_at')
finishedAt: DS.attr('string', key: 'finished_at')
- repository: DS.belongsTo('Travis.Repository')
+ repo: DS.belongsTo('Travis.Repo')
commit: DS.belongsTo('Travis.Commit')
jobs: DS.hasMany('Travis.Job', key: 'job_ids')
@@ -42,7 +42,7 @@ require 'travis/model'
).property('config')
@Travis.Build.reopenClass
- byRepositoryId: (id, parameters) ->
+ byRepoId: (id, parameters) ->
@find($.extend(parameters || {}, repository_id: id))
olderThanNumber: (id, build_number) ->
diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee
index 73e094e1..99aa875a 100644
--- a/assets/scripts/app/models/job.coffee
+++ b/assets/scripts/app/models/job.coffee
@@ -1,7 +1,7 @@
require 'travis/model'
@Travis.Job = Travis.Model.extend Travis.DurationCalculations,
- repositoryId: DS.attr('number')
+ repoId: DS.attr('number', key: 'repository_id')
buildId: DS.attr('number')
commitId: DS.attr('number')
logId: DS.attr('number')
@@ -15,7 +15,7 @@ require 'travis/model'
finishedAt: DS.attr('string')
allowFailure: DS.attr('boolean', key: 'allow_failure')
- repository: DS.belongsTo('Travis.Repository', key: 'repository_id')
+ repo: DS.belongsTo('Travis.Repo', key: 'repository_id')
build: DS.belongsTo('Travis.Build', key: 'build_id')
commit: DS.belongsTo('Travis.Commit', key: 'commit_id')
log: DS.belongsTo('Travis.Artifact', key: 'log_id')
diff --git a/assets/scripts/app/models/repository.coffee b/assets/scripts/app/models/repo.coffee
similarity index 83%
rename from assets/scripts/app/models/repository.coffee
rename to assets/scripts/app/models/repo.coffee
index 77921440..42a0a6e9 100644
--- a/assets/scripts/app/models/repository.coffee
+++ b/assets/scripts/app/models/repo.coffee
@@ -1,7 +1,7 @@
require 'travis/expandable_record_array'
require 'travis/model'
-@Travis.Repository = Travis.Model.extend
+@Travis.Repo = Travis.Model.extend
slug: DS.attr('string')
description: DS.attr('string')
lastBuildId: DS.attr('number')
@@ -14,7 +14,7 @@ require 'travis/model'
builds: (->
id = @get('id')
- builds = Travis.Build.byRepositoryId id, event_type: 'push'
+ builds = Travis.Build.byRepoId id, event_type: 'push'
array = Travis.ExpandableRecordArray.create
type: Travis.Build
content: Ember.A([])
@@ -27,7 +27,7 @@ require 'travis/model'
pullRequests: (->
id = @get('id')
- builds = Travis.Build.byRepositoryId id, event_type: 'pull_request'
+ builds = Travis.Build.byRepoId id, event_type: 'pull_request'
array = Travis.ExpandableRecordArray.create
type: Travis.Build
content: Ember.A([])
@@ -39,7 +39,7 @@ require 'travis/model'
).property()
branches: (->
- Travis.Branch.byRepositoryId @get('id')
+ Travis.Branch.byRepoId @get('id')
).property()
owner: (->
@@ -72,12 +72,14 @@ require 'travis/model'
).property()
select: ->
- Travis.Repository.select(@get('id'))
+ Travis.Repo.select(@get('id'))
updateTimes: ->
@notifyPropertyChange 'lastBuildDuration'
-@Travis.Repository.reopenClass
+@Travis.Repo.reopenClass
+ url: 'repositories'
+
recent: ->
@find()
@@ -92,10 +94,10 @@ require 'travis/model'
if repo.length > 0 then repo else @find(slug: slug)
select: (id) ->
- @find().forEach (repository) ->
- repository.set('selected', repository.get('id') == id)
+ @find().forEach (repo) ->
+ repo.set('selected', repo.get('id') == id)
# buildURL: (slug) ->
- # if slug then slug else 'repositories'
+ # if slug then slug else 'repos'
diff --git a/assets/scripts/app/models/worker.coffee b/assets/scripts/app/models/worker.coffee
index df13f7f9..6164da13 100644
--- a/assets/scripts/app/models/worker.coffee
+++ b/assets/scripts/app/models/worker.coffee
@@ -18,9 +18,9 @@ require 'travis/model'
@get('state') == 'working'
).property('state')
- repository: (->
- Travis.Repository.find(@get('payload.repository.id'))
- ).property('payload.repository.id')
+ repo: (->
+ Travis.Repo.find(@get('payload.repo.id'))
+ ).property('payload.repo.id')
job_id: (->
@get('payload.job.id')
diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee
index 6517bbaa..49bca579 100644
--- a/assets/scripts/app/routes.coffee
+++ b/assets/scripts/app/routes.coffee
@@ -6,12 +6,12 @@ Travis.Router = Ember.Router.extend
showRoot: Ember.Route.transitionTo('root.home.show')
showStats: Ember.Route.transitionTo('root.stats')
- showRepository: Ember.Route.transitionTo('root.home.repository.show')
- showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index')
- showBuild: Ember.Route.transitionTo('root.home.repository.builds.show')
- showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests')
- showBranches: Ember.Route.transitionTo('root.home.repository.branches')
- showJob: Ember.Route.transitionTo('root.home.repository.job')
+ 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')
+ showJob: Ember.Route.transitionTo('root.home.repo.job')
showProfile: Ember.Route.transitionTo('root.profile')
showAccount: Ember.Route.transitionTo('root.profile.account')
@@ -113,26 +113,26 @@ Travis.Router = Ember.Router.extend
connectOutlets: (router) ->
router.get('applicationController').connectOutlet 'home'
$('body').attr('id', 'home')
- router.get('homeController').connectOutlet 'left', 'repositories'
+ router.get('homeController').connectOutlet 'left', 'repos'
router.get('homeController').connectOutlet 'right', 'sidebar'
router.get('homeController').connectOutlet 'top', 'top'
- router.get('homeController').connectOutlet 'main', 'repository'
+ router.get('homeController').connectOutlet 'main', 'repo'
show: Ember.Route.extend
route: '/'
connectOutlets: (router) ->
- router.get('repositoryController').activate('index')
+ router.get('repoController').activate('index')
- repository: Ember.Route.extend
+ repo: Ember.Route.extend
initialState: 'show'
route: '/:owner/:name'
- connectOutlets: (router, repository) ->
- router.get('repositoryController').set 'repository', repository
+ connectOutlets: (router, repo) ->
+ router.get('repoController').set 'repo', repo
deserialize: (router, params) ->
slug = "#{params.owner}/#{params.name}"
- repos = Travis.Repository.bySlug(slug)
+ repos = Travis.Repo.bySlug(slug)
deferred = $.Deferred()
observer = ->
@@ -144,16 +144,16 @@ Travis.Router = Ember.Router.extend
deferred.promise()
- serialize: (router, repository) ->
- if repository
- { owner: repository.get('owner'), name: repository.get('name') }
+ serialize: (router, repo) ->
+ if repo
+ { owner: repo.get('owner'), name: repo.get('name') }
else
{}
show: Ember.Route.extend
route: '/'
connectOutlets: (router) ->
- router.get('repositoryController').activate('current')
+ router.get('repoController').activate('current')
builds: Ember.Route.extend
route: '/builds'
@@ -161,8 +161,8 @@ Travis.Router = Ember.Router.extend
index: Ember.Route.extend
route: '/'
- connectOutlets: (router, repository) ->
- router.get('repositoryController').activate 'builds'
+ connectOutlets: (router, repo) ->
+ router.get('repoController').activate 'builds'
show: Ember.Route.extend
route: '/:build_id'
@@ -171,8 +171,8 @@ Travis.Router = Ember.Router.extend
# 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('repositoryController').set 'build', build
- router.get('repositoryController').activate 'build'
+ router.get('repoController').set 'build', build
+ router.get('repoController').activate 'build'
serialize: (router, build) ->
if build.get
@@ -200,13 +200,13 @@ Travis.Router = Ember.Router.extend
pullRequests: Ember.Route.extend
route: '/pull_requests'
- connectOutlets: (router, repository) ->
- router.get('repositoryController').activate 'pull_requests'
+ connectOutlets: (router, repo) ->
+ router.get('repoController').activate 'pull_requests'
branches: Ember.Route.extend
route: '/branches'
- connectOutlets: (router, repository) ->
- router.get('repositoryController').activate 'branches'
+ connectOutlets: (router, repo) ->
+ router.get('repoController').activate 'branches'
job: Ember.Route.extend
@@ -215,8 +215,8 @@ Travis.Router = Ember.Router.extend
unless job.get
# In case I use id
job = Travis.Job.find(job)
- router.get('repositoryController').set 'job', job
- router.get('repositoryController').activate 'job'
+ router.get('repoController').set 'job', job
+ router.get('repoController').activate 'job'
serialize: (router, job) ->
if job.get
diff --git a/assets/scripts/app/store/rest_adapter.coffee b/assets/scripts/app/store/rest_adapter.coffee
index 8158288b..8c7fd4cd 100644
--- a/assets/scripts/app/store/rest_adapter.coffee
+++ b/assets/scripts/app/store/rest_adapter.coffee
@@ -3,8 +3,10 @@ require 'models'
@Travis.RestAdapter = DS.RESTAdapter.extend Travis.Ajax,
mappings:
- repositories: Travis.Repository
- repository: Travis.Repository
+ repositories: Travis.Repo
+ repository: Travis.Repo
+ repos: Travis.Repo
+ repo: Travis.Repo
builds: Travis.Build
build: Travis.Build
commits: Travis.Commit
@@ -17,9 +19,11 @@ require 'models'
workers: Travis.Worker
plurals:
+ repositories: 'repositories',
repository: 'repositories',
- build: 'builds'
- branch: 'branches'
- job: 'jobs'
- worker: 'workers'
- profile: 'profile'
+ repo: 'repos',
+ build: 'builds'
+ branch: 'branches'
+ job: 'jobs'
+ worker: 'workers'
+ profile: 'profile'
diff --git a/assets/scripts/app/templates/jobs/list.hbs b/assets/scripts/app/templates/jobs/list.hbs
index 9647a6ab..43f3a751 100644
--- a/assets/scripts/app/templates/jobs/list.hbs
+++ b/assets/scripts/app/templates/jobs/list.hbs
@@ -24,7 +24,7 @@
{{#if job.id}}
- {{number}}
+ {{number}}
{{/if}}
diff --git a/assets/scripts/app/templates/jobs/show.hbs b/assets/scripts/app/templates/jobs/show.hbs
index db905a56..5dd669e6 100644
--- a/assets/scripts/app/templates/jobs/show.hbs
+++ b/assets/scripts/app/templates/jobs/show.hbs
@@ -7,7 +7,7 @@
{{#if job.id}}
- {{job.number}}
+ {{job.number}}
{{/if}}
{{t jobs.finished_at}}
diff --git a/assets/scripts/app/templates/queues/list.hbs b/assets/scripts/app/templates/queues/list.hbs
index a2e20081..0e133f07 100644
--- a/assets/scripts/app/templates/queues/list.hbs
+++ b/assets/scripts/app/templates/queues/list.hbs
@@ -5,9 +5,9 @@
{{#each job in queue}}
{{#view Travis.QueueItemView jobBinding="job"}}
-
+
- {{job.repository.slug}}
+ {{job.repo.slug}}
#{{job.number}}
diff --git a/assets/scripts/app/templates/repos/list.hbs b/assets/scripts/app/templates/repos/list.hbs
index 0127e85a..df40ab18 100644
--- a/assets/scripts/app/templates/repos/list.hbs
+++ b/assets/scripts/app/templates/repos/list.hbs
@@ -7,12 +7,12 @@
- {{#collection Travis.RepositoriesListView contentBinding="controller"}}
- {{#with view.repository}}
+ {{#collection Travis.ReposListView contentBinding="controller"}}
+ {{#with view.repo}}
{{#if lastBuildId}}
diff --git a/assets/scripts/app/templates/repos/show.hbs b/assets/scripts/app/templates/repos/show.hbs
index 859f7e9f..438d9f3f 100644
--- a/assets/scripts/app/templates/repos/show.hbs
+++ b/assets/scripts/app/templates/repos/show.hbs
@@ -1,6 +1,6 @@
-
- {{#if view.repository.isLoaded}}
- {{#with view.repository}}
+
+ {{#if view.repo.isLoaded}}
+ {{#with view.repo}}
diff --git a/assets/scripts/app/templates/repos/show/tabs.hbs b/assets/scripts/app/templates/repos/show/tabs.hbs
index 5b28ccbc..048c64ec 100644
--- a/assets/scripts/app/templates/repos/show/tabs.hbs
+++ b/assets/scripts/app/templates/repos/show/tabs.hbs
@@ -1,8 +1,8 @@
- {{#if view.repository.slug}}
-
+ {{#if view.repo.slug}}
+
{{t repositories.tabs.branches}}
{{/if}}
diff --git a/assets/scripts/app/templates/workers/list.hbs b/assets/scripts/app/templates/workers/list.hbs
index 20de034f..4ab1f6e0 100644
--- a/assets/scripts/app/templates/workers/list.hbs
+++ b/assets/scripts/app/templates/workers/list.hbs
@@ -17,7 +17,7 @@
{{#if worker.isWorking}}
{{#if worker.job_id}}
-
+
{{view.display}}
{{/if}}
diff --git a/assets/scripts/app/views/build.coffee b/assets/scripts/app/views/build.coffee
index be5764ff..3682e186 100644
--- a/assets/scripts/app/views/build.coffee
+++ b/assets/scripts/app/views/build.coffee
@@ -4,7 +4,7 @@
buildsBinding: 'controller.builds'
showMore: ->
- id = @get('controller.repository.id')
+ id = @get('controller.repo.id')
number = @get('builds.lastObject.number')
@get('builds').load Travis.Build.olderThanNumber(id, number)
@@ -27,7 +27,7 @@
BuildsItemView: Travis.View.extend
tagName: 'tr'
classNameBindings: ['color']
- repositoryBinding: 'controller.repository'
+ repoBinding: 'controller.repo'
buildBinding: 'context'
commitBinding: 'build.commit'
@@ -36,19 +36,19 @@
).property('build.result')
urlBuild: (->
- Travis.Urls.build(@get('repository.slug'), @get('build.id'))
- ).property('repository.slug', 'build.id')
+ Travis.Urls.build(@get('repo.slug'), @get('build.id'))
+ ).property('repo.slug', 'build.id')
urlGithubCommit: (->
- Travis.Urls.githubCommit(@get('repository.slug'), @get('commit.sha'))
- ).property('repository.slug', 'commit.sha')
+ Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
+ ).property('repo.slug', 'commit.sha')
BuildView: Travis.View.extend
templateName: 'builds/show'
elementId: 'build'
classNameBindings: ['color', 'loading']
- repositoryBinding: 'controller.repository'
+ repoBinding: 'controller.repo'
buildBinding: 'controller.build'
commitBinding: 'build.commit'
@@ -61,12 +61,12 @@
).property('build.result')
urlBuild: (->
- Travis.Urls.build(@get('repository.slug'), @get('build.id'))
- ).property('repository.slug', 'build.id')
+ Travis.Urls.build(@get('repo.slug'), @get('build.id'))
+ ).property('repo.slug', 'build.id')
urlGithubCommit: (->
- Travis.Urls.githubCommit(@get('repository.slug'), @get('commit.sha'))
- ).property('repository.slug', 'commit.sha')
+ Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
+ ).property('repo.slug', 'commit.sha')
urlAuthor: (->
Travis.Urls.email(@get('commit.authorEmail'))
diff --git a/assets/scripts/app/views/job.coffee b/assets/scripts/app/views/job.coffee
index cfc73378..3ca6acb3 100644
--- a/assets/scripts/app/views/job.coffee
+++ b/assets/scripts/app/views/job.coffee
@@ -6,7 +6,7 @@
JobsItemView: Travis.View.extend
tagName: 'tr'
classNameBindings: ['color']
- repositoryBinding: 'context.repository'
+ repoBinding: 'context.repo'
jobBinding: 'context'
color: (->
@@ -14,13 +14,13 @@
).property('job.result')
urlJob: (->
- Travis.Urls.job(@get('repository.slug'), @get('job.id'))
- ).property('repository.slug', 'job.id')
+ Travis.Urls.job(@get('repo.slug'), @get('job.id'))
+ ).property('repo.slug', 'job.id')
JobView: Travis.View.extend
templateName: 'jobs/show'
- repositoryBinding: 'controller.repository'
+ repoBinding: 'controller.repo'
jobBinding: 'controller.job'
commitBinding: 'job.commit'
@@ -29,12 +29,12 @@
).property('job.result')
urlJob: (->
- Travis.Urls.job(@get('repository.slug'), @get('job.id'))
- ).property('repository.slug', 'job.id')
+ Travis.Urls.job(@get('repo.slug'), @get('job.id'))
+ ).property('repo.slug', 'job.id')
urlGithubCommit: (->
- Travis.Urls.githubCommit(@get('repository.slug'), @get('commit.sha'))
- ).property('repository.slug', 'commit.sha')
+ Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
+ ).property('repo.slug', 'commit.sha')
urlAuthor: (->
Travis.Urls.email(@get('commit.authorEmail'))
diff --git a/assets/scripts/app/views/repo/list.coffee b/assets/scripts/app/views/repo/list.coffee
index 53843763..59dcf6dc 100644
--- a/assets/scripts/app/views/repo/list.coffee
+++ b/assets/scripts/app/views/repo/list.coffee
@@ -1,34 +1,34 @@
@Travis.reopen
- RepositoriesView: Travis.View.extend
+ ReposView: Travis.View.extend
templateName: 'repos/list'
toggleInfo: (event) ->
- $('#repositories').toggleClass('open')
+ $('#repos').toggleClass('open')
- RepositoriesListView: Em.CollectionView.extend
- elementId: 'repositories'
+ ReposListView: Em.CollectionView.extend
+ elementId: 'repos'
tagName: 'ul'
emptyView: Ember.View.extend
template: Ember.Handlebars.compile('Loading
')
itemViewClass: Travis.View.extend
- repositoryBinding: 'content'
- classNames: ['repository']
+ repoBinding: 'content'
+ classNames: ['repo']
classNameBindings: ['color', 'selected']
- selectedBinding: 'repository.selected'
+ selectedBinding: 'repo.selected'
color: (->
- Travis.Helpers.colorForResult(@get('repository.lastBuildResult'))
- ).property('repository.lastBuildResult')
+ Travis.Helpers.colorForResult(@get('repo.lastBuildResult'))
+ ).property('repo.lastBuildResult')
- urlRepository: (->
- Travis.Urls.repository(@get('repository.slug'))
- ).property('repository.slug')
+ urlRepo: (->
+ Travis.Urls.repo(@get('repo.slug'))
+ ).property('repo.slug')
urlLastBuild: (->
- Travis.Urls.build(@get('repository.slug'), @get('repository.lastBuildId'))
- ).property('repository.slug', 'repository.lastBuildId')
+ Travis.Urls.build(@get('repo.slug'), @get('repo.lastBuildId'))
+ ).property('repo.slug', 'repo.lastBuildId')
ReposListTabsView: Travis.View.extend
templateName: 'repos/list/tabs'
diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee
index 27cf3fbb..4407ba99 100644
--- a/assets/scripts/app/views/repo/show.coffee
+++ b/assets/scripts/app/views/repo/show.coffee
@@ -1,29 +1,29 @@
@Travis.reopen
- RepositoryView: Travis.View.extend
+ RepoView: Travis.View.extend
templateName: 'repos/show'
- repositoryBinding: 'controller.repository'
+ repoBinding: 'controller.repo'
class: (->
- 'loading' unless @get('repository.isLoaded')
- ).property('repository.isLoaded')
+ 'loading' unless @get('repo.isLoaded')
+ ).property('repo.isLoaded')
urlGithub: (->
- Travis.Urls.githubRepository(@get('repository.slug'))
- ).property('repository.slug'),
+ Travis.Urls.githubRepo(@get('repo.slug'))
+ ).property('repo.slug'),
urlGithubWatchers: (->
- Travis.Urls.githubWatchers(@get('repository.slug'))
- ).property('repository.slug'),
+ Travis.Urls.githubWatchers(@get('repo.slug'))
+ ).property('repo.slug'),
urlGithubNetwork: (->
- Travis.Urls.githubNetwork(@get('repository.slug'))
- ).property('repository.slug'),
+ Travis.Urls.githubNetwork(@get('repo.slug'))
+ ).property('repo.slug'),
RepoShowTabsView: Travis.View.extend
templateName: 'repos/show/tabs'
- repositoryBinding: 'controller.repository'
+ repoBinding: 'controller.repo'
buildBinding: 'controller.build'
jobBinding: 'controller.job'
tabBinding: 'controller.tab'
@@ -60,7 +60,7 @@
RepoShowToolsView: Travis.View.extend
templateName: 'repos/show/tools'
- repositoryBinding: 'controller.repository'
+ repoBinding: 'controller.repo'
buildBinding: 'controller.build'
jobBinding: 'controller.job'
tabBinding: 'controller.tab'
@@ -70,26 +70,26 @@
@set('active', element.hasClass('display-inline'))
branches: (->
- @get('repository.branches') if @get('active')
- ).property('active', 'repository.branches')
+ @get('repo.branches') if @get('active')
+ ).property('active', 'repo.branches')
- urlRepository: (->
- 'https://' + location.host + Travis.Urls.repository(@get('repository.slug'))
- ).property('repository.slug')
+ urlRepo: (->
+ 'https://' + location.host + Travis.Urls.repo(@get('repo.slug'))
+ ).property('repo.slug')
urlStatusImage: (->
- Travis.Urls.statusImage(@get('repository.slug'), @get('branch.commit.branch'))
- ).property('repository.slug', 'branch')
+ Travis.Urls.statusImage(@get('repo.slug'), @get('branch.commit.branch'))
+ ).property('repo.slug', 'branch')
markdownStatusImage: (->
- "[})](#{@get('urlRepository')})"
+ "[})](#{@get('urlRepo')})"
).property('urlStatusImage')
textileStatusImage: (->
- "!#{@get('urlStatusImage')}!:#{@get('urlRepository')}"
+ "!#{@get('urlStatusImage')}!:#{@get('urlRepo')}"
).property('urlStatusImage')
rdocStatusImage: (->
- "{ }[#{@get('urlRepository')}]"
+ "{ }[#{@get('urlRepo')}]"
).property('urlStatusImage')
diff --git a/assets/scripts/app/views/sidebar.coffee b/assets/scripts/app/views/sidebar.coffee
index d508eeea..f9fcfd32 100644
--- a/assets/scripts/app/views/sidebar.coffee
+++ b/assets/scripts/app/views/sidebar.coffee
@@ -68,7 +68,7 @@
payload = @get('worker.payload')
if state == 'working' && payload != undefined
- repo = payload.repository.slug
+ repo = payload.repo.slug
number = ' #' + payload.build.number
"#{name}: #{repo} #{number}".htmlSafe()
else
@@ -79,6 +79,6 @@
QueueItemView: Travis.View.extend
tagName: 'li'
urlJob: (->
- Travis.Urls.job(@get('job.repository.slug'), @get('job.id'))
- ).property('job.repository.slug', 'job.id')
+ Travis.Urls.job(@get('job.repo.slug'), @get('job.id'))
+ ).property('job.repo.slug', 'job.id')
diff --git a/assets/scripts/lib/ext/jquery.coffee b/assets/scripts/lib/ext/jquery.coffee
index cd097488..8e9a24cb 100644
--- a/assets/scripts/lib/ext/jquery.coffee
+++ b/assets/scripts/lib/ext/jquery.coffee
@@ -34,8 +34,8 @@ $.fn.extend
$(this).each ->
$(this).text Utils.timeInWords(parseInt($(this).attr('title')))
- updateGithubStats: (repository) ->
- Utils.updateGithubStats repository, $(this)
+ updateGithubStats: (repo) ->
+ Utils.updateGithubStats repo, $(this)
$.extend
isEmpty: (obj) ->
diff --git a/assets/styles/left/list.sass b/assets/styles/left/list.sass
index f196b77d..5d3ec08d 100644
--- a/assets/styles/left/list.sass
+++ b/assets/styles/left/list.sass
@@ -1,7 +1,7 @@
@import "_mixins/all"
#accounts,
-#repositories
+#repos
&.open li .info
display: block
diff --git a/assets/styles/main/repository.sass b/assets/styles/main/repository.sass
index becdaa03..cabe5888 100644
--- a/assets/styles/main/repository.sass
+++ b/assets/styles/main/repository.sass
@@ -1,6 +1,6 @@
@import "_mixins/all"
-#repository
+#repo
position: relative
width: 100%
overflow-x: hidden
diff --git a/assets/styles/status.sass b/assets/styles/status.sass
index 954d3336..e4444799 100644
--- a/assets/styles/status.sass
+++ b/assets/styles/status.sass
@@ -7,14 +7,14 @@
margin-right: 2px
@include border-radius(5px)
-#repositories,
+#repos,
.number
.status
background-color: $color-bg-status-pending
a
color: $color-text-status-pending
-#repositories .green,
+#repos .green,
.green #summary .number,
.list .green .number
.status
@@ -22,7 +22,7 @@
a
color: $color-text-status-passed
-#repositories .red,
+#repos .red,
.red #summary .number,
.list .red .number
.status
diff --git a/public/scripts/app.js b/public/scripts/app.js
index 4409f633..94ea26cd 100644
--- a/public/scripts/app.js
+++ b/public/scripts/app.js
@@ -29619,5248 +29619,4 @@ var _require=function(){function c(a,c){document.addEventListener?a.addEventList
++g&&setTimeout(c,0)})}}();
(function(){!window.WebSocket&&window.MozWebSocket&&(window.WebSocket=window.MozWebSocket);if(window.WebSocket)Pusher.Transport=window.WebSocket,Pusher.TransportType="native";var c=(document.location.protocol=="http:"?Pusher.cdn_http:Pusher.cdn_https)+Pusher.VERSION,a=[];window.JSON||a.push(c+"/json2"+Pusher.dependency_suffix+".js");if(!window.WebSocket)window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION=!0,a.push(c+"/flashfallback"+Pusher.dependency_suffix+".js");var b=function(){return window.WebSocket?function(){Pusher.ready()}:
function(){window.WebSocket?(Pusher.Transport=window.WebSocket,Pusher.TransportType="flash",window.WEB_SOCKET_SWF_LOCATION=c+"/WebSocketMain.swf",WebSocket.__addTask(function(){Pusher.ready()}),WebSocket.__initialize()):(Pusher.Transport=null,Pusher.TransportType="none",Pusher.ready())}}(),e=function(a){var b=function(){document.body?a():setTimeout(b,0)};b()},g=function(){e(b)};a.length>0?_require(a,g):g()})();
-;minispade.register('app', function() {(function() {
-minispade.require('auth');
-minispade.require('controllers');
-minispade.require('helpers');
-minispade.require('models');
-minispade.require('pusher');
-minispade.require('routes');
-minispade.require('slider');
-minispade.require('store');
-minispade.require('tailing');
-minispade.require('templates');
-minispade.require('views');
-minispade.require('config/locales');
-minispade.require('data/sponsors');
-
- Travis.reopen({
- App: Em.Application.extend({
- autoinit: false,
- currentUserBinding: 'auth.user',
- authStateBinding: 'auth.state',
- init: function() {
- this._super.apply(this, arguments);
- this.store = Travis.Store.create();
- this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);
- this.set('auth', Travis.Auth.create({
- app: this,
- endpoint: Travis.config.api_endpoint
- }));
- this.slider = new Travis.Slider();
- this.pusher = new Travis.Pusher(Travis.config.pusher);
- return this.tailing = new Travis.Tailing();
- },
- signIn: function() {
- return this.get('auth').signIn();
- },
- signOut: function() {
- this.get('auth').signOut();
- return this.get('router').send('goToRoot');
- },
- receive: function() {
- return this.store.receive.apply(this.store, arguments);
- },
- toggleSidebar: function() {
- var element;
- $('body').toggleClass('maximized');
- element = $(' ');
- $('#top .profile').append(element);
- Em.run.later((function() {
- return element.remove();
- }), 10);
- element = $(' ');
- $('#repository').append(element);
- return Em.run.later((function() {
- return element.remove();
- }), 10);
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('auth', function() {(function() {
-
- this.Travis.Auth = Ember.Object.extend({
- iframe: $('').hide(),
- timeout: 5000,
- state: 'signed-out',
- receivingEnd: "" + location.protocol + "//" + location.host,
- init: function() {
- var _this = this;
- this.iframe.appendTo('body');
- window.addEventListener('message', function(e) {
- return _this.receiveMessage(e);
- });
- return this.loadUser();
- },
- accessToken: (function() {
- return sessionStorage.getItem('travis.token');
- }).property(),
- loadUser: function() {
- var user;
- if (user = sessionStorage.getItem('travis.user')) {
- return this.setData({
- user: JSON.parse(user)
- });
- } else if (localStorage.getItem('travis.auto_signin')) {
- return this.trySignIn();
- }
- },
- signIn: function() {
- this.set('state', 'signing-in');
- this.trySignIn();
- return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);
- },
- trySignIn: function() {
- return this.iframe.attr('src', "" + this.endpoint + "/auth/post_message?origin=" + this.receivingEnd);
- },
- checkSignIn: function() {
- if (this.get('state') === 'signing-in') {
- return this.forceSignIn();
- }
- },
- forceSignIn: function() {
- localStorage.setItem('travis.auto_signin', 'true');
- return window.location = "" + this.endpoint + "/auth/handshake?redirect_uri=" + location;
- },
- signOut: function() {
- if (typeof localStorage !== "undefined" && localStorage !== null) {
- localStorage.clear();
- }
- if (typeof sessionStorage !== "undefined" && sessionStorage !== null) {
- sessionStorage.clear();
- }
- return this.setData();
- },
- setData: function(data) {
- var user;
- if (typeof data === 'string') {
- data = JSON.parse(data);
- }
- if (data != null ? data.token : void 0) {
- this.storeToken(data.token);
- }
- if (data != null ? data.user : void 0) {
- user = this.storeUser(data.user);
- }
- this.set('state', user ? 'signed-in' : 'signed-out');
- this.set('user', user ? user : void 0);
- if (this.app.get('router')) {
- return this.app.get('router').transitionTo('authenticated');
- }
- },
- storeToken: function(token) {
- sessionStorage.setItem('travis.token', token);
- return this.notifyPropertyChange('accessToken');
- },
- storeUser: function(user) {
- localStorage.setItem('travis.auto_signin', 'true');
- sessionStorage.setItem('travis.user', JSON.stringify(user));
- this.app.store.load(Travis.User, user);
- return this.app.store.find(Travis.User, user.id);
- },
- receiveMessage: function(event) {
- if (event.origin === this.expectedOrigin()) {
- this.setData(event.data);
- return console.log("signed in as " + event.data.user.login);
- } else {
- return console.log("unexpected message " + event.origin + ": " + event.data);
- }
- },
- expectedOrigin: function() {
- if (this.endpoint[0] === '/') {
- return this.receivingEnd;
- } else {
- return this.endpoint;
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers', function() {(function() {
-minispade.require('helpers');
-minispade.require('travis/ticker');
-
- Travis.reopen({
- Controller: Em.Controller.extend({
- connectOutlet: function() {
- var view, _connectedOutletViews;
- view = this._super.apply(this, arguments);
- if (view) {
- _connectedOutletViews = Travis.app.get('_connectedOutletViews');
- if (!_connectedOutletViews) {
- _connectedOutletViews = [];
- }
- _connectedOutletViews.pushObject(view);
- Travis.app.set('_connectedOutletViews', _connectedOutletViews);
- }
- return view;
- }
- }),
- TopController: Em.Controller.extend({
- userBinding: 'Travis.app.currentUser'
- }),
- ApplicationController: Em.Controller.extend(),
- MainController: Em.Controller.extend(),
- StatsLayoutController: Em.Controller.extend(),
- ProfileLayoutController: Em.Controller.extend(),
- AuthLayoutController: Em.Controller.extend()
- });
-minispade.require('controllers/accounts');
-minispade.require('controllers/builds');
-minispade.require('controllers/home');
-minispade.require('controllers/profile');
-minispade.require('controllers/repositories');
-minispade.require('controllers/repository');
-minispade.require('controllers/sidebar');
-minispade.require('controllers/stats');
-
-}).call(this);
-
-});minispade.register('controllers/accounts', function() {(function() {
-
- Travis.AccountsController = Ember.ArrayController.extend({
- tab: 'accounts',
- init: function() {
- return this._super();
- },
- findByLogin: function(login) {
- return this.find(function(account) {
- return account.get('login') === 'login';
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers/builds', function() {(function() {
-
- Travis.BuildsController = Em.ArrayController.extend({
- repositoryBinding: 'parent.repository',
- contentBinding: 'parent.builds'
- });
-
-}).call(this);
-
-});minispade.register('controllers/home', function() {(function() {
-
- Travis.HomeController = Travis.Controller.extend();
-
-}).call(this);
-
-});minispade.register('controllers/job', function() {(function() {
-
-
-
-}).call(this);
-
-});minispade.register('controllers/profile', function() {(function() {
-
- Travis.ProfileController = Travis.Controller.extend({
- name: 'profile',
- userBinding: 'Travis.app.currentUser',
- accountsBinding: 'Travis.app.router.accountsController',
- account: (function() {
- var login;
- login = this.get('params.login') || Travis.app.get('currentUser.login');
- return this.get('accounts').filter(function(account) {
- if (account.get('login') === login) {
- return account;
- }
- })[0];
- }).property('accounts.length', 'params.login'),
- activate: function(action, params) {
- this.setParams(params || this.get('params'));
- return this["view" + ($.camelize(action))]();
- },
- viewHooks: function() {
- this.connectTab('hooks');
- return this.set('hooks', Travis.Hook.find({
- owner_name: this.get('params.login') || Travis.app.get('currentUser.login')
- }));
- },
- viewUser: function() {
- return this.connectTab('user');
- },
- connectTab: function(tab) {
- var viewClass;
- viewClass = Travis["" + ($.camelize(tab)) + "View"];
- this.set('tab', tab);
- return this.connectOutlet({
- outletName: 'pane',
- controller: this,
- viewClass: viewClass
- });
- },
- setParams: function(params) {
- var key, value, _results;
- this.set('params', {});
- _results = [];
- for (key in params) {
- value = params[key];
- _results.push(this.set("params." + key, params[key]));
- }
- return _results;
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers/repositories', function() {(function() {
-
- Travis.RepositoriesController = Ember.ArrayController.extend({
- defaultTab: 'recent',
- sortProperties: ['sortOrder'],
- init: function() {
- this.activate(this.defaultTab);
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- updateTimes: function() {
- var content;
- if (content = this.get('content')) {
- content.forEach(function(r) {
- return r.updateTimes();
- });
- }
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- activate: function(tab, params) {
- this.set('tab', tab);
- return this["view" + ($.camelize(tab))](params);
- },
- viewRecent: function() {
- return this.set('content', Travis.Repository.find());
- },
- viewOwned: function() {
- return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));
- },
- viewSearch: function(params) {
- return this.set('content', Travis.Repository.search(params.search));
- },
- searchObserver: (function() {
- var search, tab;
- search = this.get('search');
- tab = search ? 'search' : 'recent';
- return this.activate(tab, {
- search: search
- });
- }).observes('search')
- });
-
-}).call(this);
-
-});minispade.register('controllers/repository', function() {(function() {
-
- Travis.RepositoryController = Travis.Controller.extend({
- bindings: [],
- init: function() {
- this._super.apply(this, arguments);
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- updateTimes: function() {
- var build, builds;
- if (builds = this.get('builds')) {
- builds.forEach(function(b) {
- return b.updateTimes();
- });
- }
- if (build = this.get('build')) {
- build.updateTimes();
- build.get('jobs').forEach(function(j) {
- return j.updateTimes();
- });
- }
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- activate: function(action) {
- this._unbind();
- return this["view" + ($.camelize(action))]();
- },
- viewIndex: function() {
- this._bind('repository', 'controllers.repositoriesController.firstObject');
- this._bind('build', 'repository.lastBuild');
- return this.connectTab('current');
- },
- viewCurrent: function() {
- this.connectTab('current');
- return this._bind('build', 'repository.lastBuild');
- },
- viewBuilds: function() {
- this.connectTab('builds');
- return this._bind('builds', 'repository.builds');
- },
- viewPullRequests: function() {
- this.connectTab('pull_requests');
- return this._bind('builds', 'repository.pullRequests');
- },
- viewBranches: function() {
- this.connectTab('branches');
- return this._bind('builds', 'repository.branches');
- },
- viewBuild: function() {
- return this.connectTab('build');
- },
- viewJob: function() {
- this._bind('build', 'job.build');
- return this.connectTab('job');
- },
- repositoryObserver: (function() {
- var repository;
- repository = this.get('repository');
- if (repository) {
- return repository.select();
- }
- }).observes('repository.id'),
- connectTab: function(tab) {
- var name, viewClass;
- name = tab === 'current' ? 'build' : tab;
- viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis["" + ($.camelize(name)) + "View"];
- this.set('tab', tab);
- return this.connectOutlet({
- outletName: 'pane',
- controller: this,
- viewClass: viewClass
- });
- },
- _bind: function(to, from) {
- return this.bindings.push(Ember.oneWay(this, to, from));
- },
- _unbind: function() {
- var binding, _i, _len, _ref;
- _ref = this.bindings;
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- binding = _ref[_i];
- binding.disconnect(this);
- }
- return this.bindings.length = 0;
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers/sidebar', function() {(function() {
-
- Travis.reopen({
- SidebarController: Em.ArrayController.extend({
- init: function() {
- this.tickables = [];
- return Travis.Ticker.create({
- target: this,
- interval: Travis.INTERVALS.sponsors
- });
- },
- tick: function() {
- var tickable, _i, _len, _ref, _results;
- _ref = this.tickables;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- tickable = _ref[_i];
- _results.push(tickable.tick());
- }
- return _results;
- }
- }),
- QueuesController: Em.ArrayController.extend(),
- WorkersController: Em.ArrayController.extend({
- groups: (function() {
- var content, groups, host, worker, _i, _len, _ref;
- if (content = this.get('content')) {
- groups = {};
- _ref = content.toArray();
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- worker = _ref[_i];
- host = worker.get('host');
- if (!groups[host]) {
- groups[host] = Em.ArrayProxy.create({
- content: []
- });
- }
- groups[host].pushObject(worker);
- }
- return $.values(groups);
- }
- }).property('content.length')
- }),
- SponsorsController: Em.ArrayController.extend({
- page: 0,
- arrangedContent: (function() {
- return this.get('shuffled').slice(this.start(), this.end());
- }).property('shuffled.length', 'page'),
- shuffled: (function() {
- var content;
- if (content = this.get('content')) {
- return $.shuffle(content);
- } else {
- return [];
- }
- }).property('content.length'),
- tick: function() {
- return this.set('page', this.isLast() ? 0 : this.get('page') + 1);
- },
- pages: (function() {
- var length;
- length = this.get('content.length');
- if (length) {
- return parseInt(length / this.get('perPage') + 1);
- } else {
- return 1;
- }
- }).property('length'),
- isLast: function() {
- return this.get('page') === this.get('pages') - 1;
- },
- start: function() {
- return this.get('page') * this.get('perPage');
- },
- end: function() {
- return this.start() + this.get('perPage');
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('controllers/stats', function() {(function() {
-
- Travis.StatsController = Travis.Controller.extend({
- name: 'stats',
- init: function() {
- return this._super('top');
- },
- activate: function(action, params) {}
- });
-
-}).call(this);
-
-});minispade.register('helpers', function() {(function() {
-minispade.require('helpers/handlebars');
-minispade.require('helpers/helpers');
-minispade.require('helpers/urls');
-
-}).call(this);
-
-});minispade.register('helpers/handlebars', function() {(function() {
- var safe;
-minispade.require('ext/ember/bound_helper');
-
- safe = function(string) {
- return new Handlebars.SafeString(string);
- };
-
- Handlebars.registerHelper('tipsy', function(text, tip) {
- return safe('' + text + ' ');
- });
-
- Handlebars.registerHelper('t', function(key) {
- return safe(I18n.t(key));
- });
-
- Ember.registerBoundHelper('formatTime', function(value, options) {
- return safe(Travis.Helpers.timeAgoInWords(value) || '-');
- });
-
- Ember.registerBoundHelper('formatDuration', function(duration, options) {
- return safe(Travis.Helpers.timeInWords(duration));
- });
-
- Ember.registerBoundHelper('formatCommit', function(commit, options) {
- if (commit) {
- return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));
- }
- });
-
- Ember.registerBoundHelper('formatSha', function(sha, options) {
- return safe(Travis.Helpers.formatSha(sha));
- });
-
- Ember.registerBoundHelper('pathFrom', function(url, options) {
- return safe(Travis.Helpers.pathFrom(url));
- });
-
- Ember.registerBoundHelper('formatMessage', function(message, options) {
- return safe(Travis.Helpers.formatMessage(message, options));
- });
-
- Ember.registerBoundHelper('formatConfig', function(config, options) {
- return safe(Travis.Helpers.formatConfig(config));
- });
-
- Ember.registerBoundHelper('formatLog', function(log, options) {
- return Travis.Helpers.formatLog(log) || '';
- });
-
-}).call(this);
-
-});minispade.register('helpers/helpers', function() {(function() {
-minispade.require('travis/log');
-minispade.require('emoij');
-
- this.Travis.Helpers = {
- compact: function(object) {
- var key, result, value, _ref;
- result = {};
- _ref = object || {};
- for (key in _ref) {
- value = _ref[key];
- if (!$.isEmpty(value)) {
- result[key] = value;
- }
- }
- return result;
- },
- safe: function(string) {
- return new Handlebars.SafeString(string);
- },
- colorForResult: function(result) {
- if (result === 0) {
- return 'green';
- } else {
- if (result === 1) {
- return 'red';
- } else {
- return null;
- }
- }
- },
- formatCommit: function(sha, branch) {
- return Travis.Helpers.formatSha(sha) + (branch ? " (" + branch + ")" : '');
- },
- formatSha: function(sha) {
- return (sha || '').substr(0, 7);
- },
- formatConfig: function(config) {
- var values;
- config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');
- values = $.map(config, function(value, key) {
- value = (value && value.join ? value.join(', ') : value) || '';
- return '%@: %@'.fmt($.camelize(key), value);
- });
- if (values.length === 0) {
- return '-';
- } else {
- return values.join(', ');
- }
- },
- formatMessage: function(message, options) {
- message = message || '';
- if (options.short) {
- message = message.split(/\n/)[0];
- }
- return this._emojize(this._escape(message)).replace(/\n/g, ' ');
- },
- formatLog: function(log) {
- return Travis.Log.filter(log);
- },
- pathFrom: function(url) {
- return (url || '').split('/').pop();
- },
- timeAgoInWords: function(date) {
- return $.timeago.distanceInWords(date);
- },
- durationFrom: function(started, finished) {
- started = started && this._toUtc(new Date(this._normalizeDateString(started)));
- finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();
- if (started && finished) {
- return Math.round((finished - started) / 1000);
- } else {
- return 0;
- }
- },
- timeInWords: function(duration) {
- var days, hours, minutes, result, seconds;
- days = Math.floor(duration / 86400);
- hours = Math.floor(duration % 86400 / 3600);
- minutes = Math.floor(duration % 3600 / 60);
- seconds = duration % 60;
- if (days > 0) {
- return 'more than 24 hrs';
- } else {
- result = [];
- if (hours === 1) {
- result.push(hours + ' hr');
- }
- if (hours > 1) {
- result.push(hours + ' hrs');
- }
- if (minutes > 0) {
- result.push(minutes + ' min');
- }
- if (seconds > 0) {
- result.push(seconds + ' sec');
- }
- if (result.length > 0) {
- return result.join(' ');
- } else {
- return '-';
- }
- }
- },
- _normalizeDateString: function(string) {
- if (window.JHW) {
- string = string.replace('T', ' ').replace(/-/g, '/');
- string = string.replace('Z', '').replace(/\..*$/, '');
- }
- return string;
- },
- _nowUtc: function() {
- return this._toUtc(new Date());
- },
- _toUtc: function(date) {
- return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
- },
- _emojize: function(text) {
- var emojis;
- emojis = text.match(/:\S+?:/g);
- if (emojis !== null) {
- $.each(emojis.uniq(), function(ix, emoji) {
- var image, strippedEmoji;
- strippedEmoji = emoji.substring(1, emoji.length - 1);
- if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {
- image = ' ';
- return text = text.replace(new RegExp(emoji, 'g'), image);
- }
- });
- }
- return text;
- },
- _escape: function(text) {
- return text.replace(/&/g, '&').replace(//g, '>');
- }
- };
-
-}).call(this);
-
-});minispade.register('helpers/urls', function() {(function() {
-
- this.Travis.Urls = {
- repository: function(slug) {
- return "/" + slug;
- },
- builds: function(slug) {
- return "/" + slug + "/builds";
- },
- pullRequests: function(slug) {
- return "/" + slug + "/pull_requests";
- },
- branches: function(slug) {
- return "/" + slug + "/branches";
- },
- build: function(slug, id) {
- return "/" + slug + "/builds/" + id;
- },
- job: function(slug, id) {
- return "/" + slug + "/jobs/" + id;
- },
- githubCommit: function(slug, sha) {
- return "http://github.com/" + slug + "/commit/" + sha;
- },
- githubRepository: function(slug) {
- return "http://github.com/" + slug;
- },
- githubWatchers: function(slug) {
- return "http://github.com/" + slug + "/watchers";
- },
- githubNetwork: function(slug) {
- return "http://github.com/" + slug + "/network";
- },
- githubAdmin: function(slug) {
- return "http://github.com/" + slug + "/admin/hooks#travis_minibucket";
- },
- statusImage: function(slug, branch) {
- return ("https://secure.travis-ci.org/" + slug + ".png") + (branch ? "?branch=" + branch : '');
- },
- email: function(email) {
- return "mailto:" + email;
- },
- account: function(login) {
- return "/profile/" + login;
- },
- user: function(login) {
- return "/profile/" + login + "/me";
- }
- };
-
-}).call(this);
-
-});minispade.register('models', function() {(function() {
-minispade.require('models/extensions');
-minispade.require('models/account');
-minispade.require('models/artifact');
-minispade.require('models/branch');
-minispade.require('models/build');
-minispade.require('models/commit');
-minispade.require('models/hook');
-minispade.require('models/job');
-minispade.require('models/repository');
-minispade.require('models/sponsor');
-minispade.require('models/user');
-minispade.require('models/worker');
-
-}).call(this);
-
-});minispade.register('models/account', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Account = Travis.Model.extend({
- primaryKey: 'login',
- login: DS.attr('string'),
- name: DS.attr('string'),
- type: DS.attr('string'),
- reposCount: DS.attr('number'),
- urlGithub: (function() {
- return "http://github.com/" + (this.get('login'));
- }).property()
- });
-
-}).call(this);
-
-});minispade.register('models/artifact', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Artifact = Travis.Model.extend({
- body: DS.attr('string'),
- init: function() {
- this._super.apply(this, arguments);
- return this.set('queue', Ember.A([]));
- },
- append: function(body) {
- if (this.get('isLoaded')) {
- return this.set('body', this.get('body') + body);
- } else {
- return this.get('queue').pushObject(body);
- }
- },
- recordDidLoad: (function() {
- var queue;
- if (this.get('isLoaded')) {
- queue = this.get('queue');
- if (queue.get('length') > 0) {
- return this.append(queue.toArray().join(''));
- }
- }
- }).observes('isLoaded')
- });
-
-}).call(this);
-
-});minispade.register('models/branch', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {
- repositoryId: DS.attr('number'),
- commitId: DS.attr('number'),
- number: DS.attr('number'),
- branch: DS.attr('string'),
- message: DS.attr('string'),
- result: DS.attr('number'),
- duration: DS.attr('number'),
- startedAt: DS.attr('string'),
- finishedAt: DS.attr('string'),
- commit: DS.belongsTo('Travis.Commit'),
- repository: (function() {
- if (this.get('repositoryId')) {
- return Travis.Repository.find(this.get('repositoryId'));
- }
- }).property('repositoryId'),
- updateTimes: function() {
- this.notifyPropertyChange('started_at');
- return this.notifyPropertyChange('finished_at');
- }
- });
-
- this.Travis.Branch.reopenClass({
- byRepositoryId: function(id) {
- return this.find({
- repository_id: id
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/build', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {
- eventType: DS.attr('string'),
- repositoryId: DS.attr('number'),
- commitId: DS.attr('number'),
- state: DS.attr('string'),
- number: DS.attr('number'),
- branch: DS.attr('string'),
- message: DS.attr('string'),
- result: DS.attr('number'),
- _duration: DS.attr('number', {
- key: 'duration'
- }),
- startedAt: DS.attr('string', {
- key: 'started_at'
- }),
- finishedAt: DS.attr('string', {
- key: 'finished_at'
- }),
- repository: DS.belongsTo('Travis.Repository'),
- commit: DS.belongsTo('Travis.Commit'),
- jobs: DS.hasMany('Travis.Job', {
- key: 'job_ids'
- }),
- config: (function() {
- return Travis.Helpers.compact(this.get('data.config'));
- }).property('data.config'),
- isMatrix: (function() {
- return this.get('data.job_ids.length') > 1;
- }).property('data.job_ids.length'),
- requiredJobs: (function() {
- return this.get('jobs').filter(function(data) {
- return !data.get('allowFailure');
- });
- }).property('jobs.@each.allowFailure'),
- allowedFailureJobs: (function() {
- return this.get('jobs').filter(function(data) {
- return data.get('allowFailure');
- });
- }).property('jobs.@each.allowFailure'),
- configKeys: (function() {
- var config, headers, key, keys;
- if (!(config = this.get('config'))) {
- return [];
- }
- keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);
- headers = (function() {
- var _i, _len, _ref, _results;
- _ref = ['build.job', 'build.duration', 'build.finished_at'];
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- key = _ref[_i];
- _results.push(I18n.t(key));
- }
- return _results;
- })();
- return $.map(headers.concat(keys), function(key) {
- return $.camelize(key);
- });
- }).property('config')
- });
-
- this.Travis.Build.reopenClass({
- byRepositoryId: function(id, parameters) {
- return this.find($.extend(parameters || {}, {
- repository_id: id
- }));
- },
- olderThanNumber: function(id, build_number) {
- return this.find({
- url: "/builds",
- repository_id: id,
- after_number: build_number
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/commit', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Commit = Travis.Model.extend({
- buildId: DS.attr('number'),
- sha: DS.attr('string'),
- branch: DS.attr('string'),
- message: DS.attr('string'),
- compareUrl: DS.attr('string'),
- authorName: DS.attr('string'),
- authorEmail: DS.attr('string'),
- committerName: DS.attr('string'),
- committerEmail: DS.attr('string'),
- build: DS.belongsTo('Travis.Build', {
- key: 'buildId'
- })
- });
-
-}).call(this);
-
-});minispade.register('models/extensions', function() {(function() {
-
- Travis.DurationCalculations = Ember.Mixin.create({
- duration: (function() {
- var duration;
- if (duration = this.get('_duration')) {
- return duration;
- } else {
- return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));
- }
- }).property('_duration', 'finishedAt', 'startedAt'),
- updateTimes: function() {
- this.notifyPropertyChange('_duration');
- return this.notifyPropertyChange('finished_at');
- }
- });
-
-}).call(this);
-
-});minispade.register('models/hook', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Hook = Travis.Model.extend({
- name: DS.attr('string'),
- ownerName: DS.attr('string'),
- description: DS.attr('string'),
- active: DS.attr('boolean'),
- account: (function() {
- return this.get('slug').split('/')[0];
- }).property('slug'),
- slug: (function() {
- return "" + (this.get('ownerName')) + "/" + (this.get('name'));
- }).property('ownerName', 'name'),
- urlGithub: (function() {
- return "http://github.com/" + (this.get('slug'));
- }).property(),
- urlGithubAdmin: (function() {
- return "http://github.com/" + (this.get('slug')) + "/admin/hooks#travis_minibucket";
- }).property(),
- toggle: function() {
- var transaction;
- transaction = this.get('store').transaction();
- transaction.add(this);
- this.set('active', !this.get('active'));
- return transaction.commit();
- }
- });
-
-}).call(this);
-
-});minispade.register('models/job', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {
- repositoryId: DS.attr('number'),
- buildId: DS.attr('number'),
- commitId: DS.attr('number'),
- logId: DS.attr('number'),
- queue: DS.attr('string'),
- state: DS.attr('string'),
- number: DS.attr('string'),
- result: DS.attr('number'),
- _duration: DS.attr('number', {
- key: 'duration'
- }),
- startedAt: DS.attr('string'),
- finishedAt: DS.attr('string'),
- allowFailure: DS.attr('boolean', {
- key: 'allow_failure'
- }),
- repository: DS.belongsTo('Travis.Repository', {
- key: 'repository_id'
- }),
- build: DS.belongsTo('Travis.Build', {
- key: 'build_id'
- }),
- commit: DS.belongsTo('Travis.Commit', {
- key: 'commit_id'
- }),
- log: DS.belongsTo('Travis.Artifact', {
- key: 'log_id'
- }),
- isQueued: (function() {}).property('state'),
- config: (function() {
- return Travis.Helpers.compact(this.get('data.config'));
- }).property('data.config'),
- sponsor: (function() {
- return this.get('data.sponsor');
- }).property('data.sponsor'),
- configValues: (function() {
- var config;
- if (config = this.get('config')) {
- return $.values($.only.apply(config, Travis.CONFIG_KEYS));
- } else {
- return [];
- }
- }).property('config'),
- appendLog: function(text) {
- var log;
- if (log = this.get('log')) {
- return log.append(text);
- }
- },
- subscribe: function() {
- var id;
- if (id = this.get('id')) {
- return Travis.app.pusher.subscribe("job-" + id);
- }
- },
- onStateChange: (function() {
- if (this.get('state') === 'finished') {
- return Travis.app.pusher.unsubscribe("job-" + (this.get('id')));
- }
- }).observes('state')
- });
-
- this.Travis.Job.reopenClass({
- queued: function(queue) {
- this.find();
- return Travis.app.store.filter(this, function(job) {
- var queued;
- queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;
- return queued && job.get('queue') === ("builds." + queue);
- });
- },
- findMany: function(ids) {
- return Travis.app.store.findMany(this, ids);
- }
- });
-
-}).call(this);
-
-});minispade.register('models/repository', function() {(function() {
-minispade.require('travis/expandable_record_array');
-minispade.require('travis/model');
-
- this.Travis.Repository = Travis.Model.extend({
- slug: DS.attr('string'),
- description: DS.attr('string'),
- lastBuildId: DS.attr('number'),
- lastBuildNumber: DS.attr('string'),
- lastBuildResult: DS.attr('number'),
- lastBuildStartedAt: DS.attr('string'),
- lastBuildFinishedAt: DS.attr('string'),
- lastBuild: DS.belongsTo('Travis.Build'),
- builds: (function() {
- var array, builds, id;
- id = this.get('id');
- builds = Travis.Build.byRepositoryId(id, {
- event_type: 'push'
- });
- array = Travis.ExpandableRecordArray.create({
- type: Travis.Build,
- content: Ember.A([]),
- store: this.get('store')
- });
- array.load(builds);
- return array;
- }).property(),
- pullRequests: (function() {
- var array, builds, id;
- id = this.get('id');
- builds = Travis.Build.byRepositoryId(id, {
- event_type: 'pull_request'
- });
- array = Travis.ExpandableRecordArray.create({
- type: Travis.Build,
- content: Ember.A([]),
- store: this.get('store')
- });
- array.load(builds);
- return array;
- }).property(),
- branches: (function() {
- return Travis.Branch.byRepositoryId(this.get('id'));
- }).property(),
- owner: (function() {
- return (this.get('slug') || '').split('/')[0];
- }).property('slug'),
- name: (function() {
- return (this.get('slug') || '').split('/')[1];
- }).property('slug'),
- lastBuildDuration: (function() {
- var duration;
- duration = this.get('data.last_build_duration');
- if (!duration) {
- duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));
- }
- return duration;
- }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),
- sortOrder: (function() {
- var lastBuildFinishedAt;
- if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {
- return -new Date(lastBuildFinishedAt).getTime();
- } else {
- return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));
- }
- }).property('lastBuildFinishedAt', 'lastBuildId'),
- stats: (function() {
- var _this = this;
- return this.get('_stats') || $.get("https://api.github.com/repos/" + (this.get('slug')), function(data) {
- _this.set('_stats', data);
- return _this.notifyPropertyChange('stats');
- }) && {};
- }).property(),
- select: function() {
- return Travis.Repository.select(this.get('id'));
- },
- updateTimes: function() {
- return this.notifyPropertyChange('lastBuildDuration');
- }
- });
-
- this.Travis.Repository.reopenClass({
- recent: function() {
- return this.find();
- },
- ownedBy: function(login) {
- return this.find({
- owner_name: login,
- orderBy: 'name'
- });
- },
- search: function(query) {
- return this.find({
- search: query,
- orderBy: 'name'
- });
- },
- bySlug: function(slug) {
- var repo;
- repo = $.select(this.find().toArray(), function(repo) {
- return repo.get('slug') === slug;
- });
- if (repo.length > 0) {
- return repo;
- } else {
- return this.find({
- slug: slug
- });
- }
- },
- select: function(id) {
- return this.find().forEach(function(repository) {
- return repository.set('selected', repository.get('id') === id);
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/sponsor', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Sponsor = Travis.Model.extend({
- type: DS.attr('string'),
- url: DS.attr('string'),
- link: DS.attr('string'),
- image: (function() {
- return "/images/sponsors/" + (this.get('data.image'));
- }).property('data.image')
- });
-
- Travis.Sponsor.reopenClass({
- decks: function() {
- return this.platinum().concat(this.gold());
- },
- platinum: function() {
- var platinum, sponsor, _i, _len, _results;
- platinum = this.byType('platinum').toArray();
- _results = [];
- for (_i = 0, _len = platinum.length; _i < _len; _i++) {
- sponsor = platinum[_i];
- _results.push([sponsor]);
- }
- return _results;
- },
- gold: function() {
- var gold, _results;
- gold = this.byType('gold').toArray();
- _results = [];
- while (gold.length > 0) {
- _results.push(gold.splice(0, 2));
- }
- return _results;
- },
- links: function() {
- return this.byType('silver');
- },
- byType: function() {
- var types;
- types = Array.prototype.slice.apply(arguments);
- return Travis.Sponsor.filter(function(sponsor) {
- return types.indexOf(sponsor.get('type')) !== -1;
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/user', function() {(function() {
-minispade.require('travis/ajax');
-minispade.require('travis/model');
-
- this.Travis.User = Travis.Model.extend(Travis.Ajax, {
- name: DS.attr('string'),
- email: DS.attr('string'),
- login: DS.attr('string'),
- token: DS.attr('string'),
- locale: DS.attr('string'),
- gravatarId: DS.attr('string'),
- isSyncing: DS.attr('boolean'),
- syncedAt: DS.attr('string'),
- repoCount: DS.attr('number'),
- init: function() {
- if (this.get('isSyncing')) {
- this.poll();
- }
- this._super();
- return Ember.run.next(this, function() {
- var transaction;
- transaction = this.get('store').transaction();
- return transaction.add(this);
- });
- },
- urlGithub: (function() {
- return "https://github.com/" + (this.get('login'));
- }).property(),
- updateLocale: function(locale) {
- var observer, self, transaction;
- this.setWithSession('locale', locale);
- transaction = this.get('transaction');
- transaction.commit();
- self = this;
- observer = function() {
- if (!self.get('isSaving')) {
- self.removeObserver('isSaving', observer);
- transaction = self.get('store').transaction();
- return transaction.add(self);
- }
- };
- return this.addObserver('isSaving', observer);
- },
- type: (function() {
- return 'user';
- }).property(),
- sync: function() {
- this.post('/users/sync');
- this.setWithSession('isSyncing', true);
- return this.poll();
- },
- poll: function() {
- var _this = this;
- return this.ajax('/users', 'get', {
- success: function(data) {
- if (data.user.is_syncing) {
- return Ember.run.later(_this, _this.poll.bind(_this), 3000);
- } else {
- _this.set('isSyncing', false);
- return _this.setWithSession('syncedAt', data.user.synced_at);
- }
- }
- });
- },
- setWithSession: function(name, value) {
- var user;
- this.set(name, value);
- user = JSON.parse(typeof sessionStorage !== "undefined" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);
- user[$.underscore(name)] = this.get(name);
- return typeof sessionStorage !== "undefined" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;
- }
- });
-
-}).call(this);
-
-});minispade.register('models/worker', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Worker = Travis.Model.extend({
- state: DS.attr('string'),
- name: DS.attr('string'),
- host: DS.attr('string'),
- lastSeenAt: DS.attr('string'),
- payload: (function() {
- return this.get('data.payload');
- }).property('data.payload'),
- number: (function() {
- return this.get('name').match(/\d+$/)[0];
- }).property('name'),
- isWorking: (function() {
- return this.get('state') === 'working';
- }).property('state'),
- repository: (function() {
- return Travis.Repository.find(this.get('payload.repository.id'));
- }).property('payload.repository.id'),
- job_id: (function() {
- return this.get('payload.job.id');
- }).property('payload.job.id'),
- job: (function() {
- return Travis.Job.find(this.get('job_id'));
- }).property('job_id')
- });
-
-}).call(this);
-
-});minispade.register('pusher', function() {(function() {
-
- Travis.Pusher = function(config) {
- if (config) {
- this.init(config);
- }
- return this;
- };
-
- $.extend(Travis.Pusher, {
- CHANNELS: ['common'],
- CHANNEL_PREFIX: ''
- });
-
- $.extend(Travis.Pusher.prototype, {
- active_channels: [],
- init: function(config) {
- var channel, _i, _len, _ref, _results;
- Pusher.warn = this.warn.bind(this);
- this.pusher = new Pusher(config.key);
- _ref = Travis.Pusher.CHANNELS;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- channel = _ref[_i];
- _results.push(this.subscribe(channel));
- }
- return _results;
- },
- subscribe: function(channel) {
- var _this = this;
- if (this.pusher && this.active_channels.indexOf(channel) === -1) {
- this.active_channels.push(channel);
- return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {
- return _this.receive(event, data);
- });
- }
- },
- unsubscribe: function(channel) {
- var ix;
- ix = this.active_channels.indexOf(channel);
- if (this.pusher && ix === -1) {
- this.active_channels.splice(ix, 1);
- return this.pusher.unsubscribe(this.prefix(channel));
- }
- },
- prefix: function(channel) {
- return "" + Travis.Pusher.CHANNEL_PREFIX + channel;
- },
- receive: function(event, data) {
- if (event.substr(0, 6) === 'pusher') {
- return;
- }
- if (data.id) {
- data = this.normalize(event, data);
- }
- return Ember.run.next(function() {
- return Travis.app.store.receive(event, data);
- });
- },
- normalize: function(event, data) {
- switch (event) {
- case 'build:started':
- case 'build:finished':
- return data;
- case 'job:created':
- case 'job:started':
- case 'job:finished':
- case 'job:log':
- if (data.queue) {
- data.queue = data.queue.replace('builds.', '');
- }
- return {
- job: data
- };
- case 'worker:added':
- case 'worker:updated':
- case 'worker:removed':
- return {
- worker: data
- };
- }
- },
- warn: function(type, warning) {
- if (!this.ignoreWarning(warning)) {
- return console.warn(warning);
- }
- },
- ignoreWarning: function(warning) {
- var message, _ref;
- if (message = (_ref = warning.data) != null ? _ref.message : void 0) {
- return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('routes', function() {(function() {
-
- Travis.Router = Ember.Router.extend({
- location: 'history',
- enableLogging: true,
- initialState: 'loading',
- goToRoot: Ember.Route.transitionTo('root.home.show'),
- goToStats: Ember.Route.transitionTo('root.stats'),
- showRepository: Ember.Route.transitionTo('root.home.repository.show'),
- showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),
- showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),
- showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),
- showBranches: Ember.Route.transitionTo('root.home.repository.branches'),
- showJob: Ember.Route.transitionTo('root.home.repository.job'),
- showProfile: Ember.Route.transitionTo('root.profile'),
- showAccount: Ember.Route.transitionTo('root.profile.account'),
- showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),
- signedIn: function() {
- return !!Travis.app.get('auth.user');
- },
- needsAuth: function(path) {
- return path.indexOf('/profile') === 0 && !this.signedIn();
- },
- loading: Ember.Route.extend({
- routePath: function(router, path) {
- sessionStorage.setItem('travis.path', path);
- if (router.needsAuth(path)) {
- router.transitionTo('root.auth');
- return Travis.app.signIn();
- } else {
- return router.transitionTo('authenticated');
- }
- }
- }),
- authenticated: Ember.Route.extend({
- connectOutlets: function(router) {
- var path;
- path = sessionStorage.getItem('travis.path');
- sessionStorage.removeItem('travis.path');
- router.transitionTo('root');
- if (path) {
- return router.route(path);
- }
- }
- }),
- root: Ember.Route.extend({
- initialState: 'home',
- loading: Ember.State.extend(),
- auth: Ember.Route.extend({
- route: '/auth',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('authLayout');
- $('body').attr('id', 'auth');
- router.get('authLayoutController').connectOutlet('top', 'top');
- return router.get('authLayoutController').connectOutlet('main', 'signin');
- }
- }),
- stats: Ember.Route.extend({
- route: '/stats',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('statsLayout');
- $('body').attr('id', 'stats');
- router.get('statsLayoutController').connectOutlet('top', 'top');
- return router.get('statsLayoutController').connectOutlet('main', 'stats');
- }
- }),
- profile: Ember.Route.extend({
- initialState: 'index',
- route: '/profile',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('profileLayout');
- $('body').attr('id', 'profile');
- router.get('accountsController').set('content', Travis.Account.find());
- router.get('profileLayoutController').connectOutlet('top', 'top');
- return router.get('profileLayoutController').connectOutlet('left', 'accounts');
- },
- index: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- router.get('profileLayoutController').connectOutlet('main', 'profile');
- return router.get('profileController').activate('hooks');
- }
- }),
- account: Ember.Route.extend({
- initialState: 'index',
- route: '/:login',
- connectOutlets: function(router, account) {
- var params;
- if (account) {
- params = {
- login: account.get('login')
- };
- return router.get('profileController').setParams(params);
- } else {
- return router.send('showProfile');
- }
- },
- deserialize: function(router, params) {
- return router.get('accountsController').findByLogin(params.login);
- },
- serialize: function(router, account) {
- if (account) {
- return {
- login: account.get('login')
- };
- } else {
- return {};
- }
- },
- index: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- return router.get('profileController').activate('hooks');
- }
- }),
- profile: Ember.Route.extend({
- route: '/profile',
- connectOutlets: function(router) {
- return router.get('profileController').activate('user');
- }
- })
- })
- }),
- home: Ember.Route.extend({
- initialState: 'show',
- route: '/',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('home');
- $('body').attr('id', 'home');
- router.get('homeController').connectOutlet('left', 'repositories');
- router.get('homeController').connectOutlet('right', 'sidebar');
- router.get('homeController').connectOutlet('top', 'top');
- return router.get('homeController').connectOutlet('main', 'repository');
- },
- show: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- return router.get('repositoryController').activate('index');
- }
- }),
- repository: Ember.Route.extend({
- initialState: 'show',
- route: '/:owner/:name',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').set('repository', repository);
- },
- deserialize: function(router, params) {
- var deferred, observer, repos, slug;
- slug = "" + params.owner + "/" + params.name;
- repos = Travis.Repository.bySlug(slug);
- deferred = $.Deferred();
- observer = function() {
- if (repos.get('isLoaded')) {
- repos.removeObserver('isLoaded', observer);
- return deferred.resolve(repos.objectAt(0));
- }
- };
- repos.addObserver('isLoaded', observer);
- return deferred.promise();
- },
- serialize: function(router, repository) {
- if (repository) {
- return {
- owner: repository.get('owner'),
- name: repository.get('name')
- };
- } else {
- return {};
- }
- },
- show: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- return router.get('repositoryController').activate('current');
- }
- }),
- builds: Ember.Route.extend({
- route: '/builds',
- initialState: 'index',
- index: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').activate('builds');
- }
- }),
- show: Ember.Route.extend({
- route: '/:build_id',
- connectOutlets: function(router, build) {
- if (!build.get) {
- build = Travis.Build.find(build);
- }
- router.get('repositoryController').set('build', build);
- return router.get('repositoryController').activate('build');
- },
- serialize: function(router, build) {
- if (build.get) {
- return {
- build_id: build.get('id')
- };
- } else {
- return {
- build_id: build
- };
- }
- },
- deserialize: function(router, params) {
- var build, deferred, observer;
- build = Travis.Build.find(params.build_id);
- deferred = $.Deferred();
- observer = function() {
- if (build.get('id')) {
- build.removeObserver('id', observer);
- return deferred.resolve(build);
- }
- };
- build.addObserver('id', observer);
- return deferred.promise();
- }
- })
- }),
- pullRequests: Ember.Route.extend({
- route: '/pull_requests',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').activate('pull_requests');
- }
- }),
- branches: Ember.Route.extend({
- route: '/branches',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').activate('branches');
- }
- }),
- job: Ember.Route.extend({
- route: '/jobs/:job_id',
- connectOutlets: function(router, job) {
- if (!job.get) {
- job = Travis.Job.find(job);
- }
- router.get('repositoryController').set('job', job);
- return router.get('repositoryController').activate('job');
- },
- serialize: function(router, job) {
- if (job.get) {
- return {
- job_id: job.get('id')
- };
- } else {
- return {
- job_id: job
- };
- }
- },
- deserialize: function(router, params) {
- var deferred, job, observer;
- job = Travis.Job.find(params.job_id);
- deferred = $.Deferred();
- observer = function() {
- if (job.get('id')) {
- job.removeObserver('id', observer);
- return deferred.resolve(job);
- }
- };
- job.addObserver('id', observer);
- return deferred.promise();
- }
- })
- })
- })
- })
- });
-
-}).call(this);
-
-});minispade.register('slider', function() {(function() {
-
- this.Travis.Slider = function() {
- if ((typeof localStorage !== "undefined" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {
- this.minimize();
- }
- return this;
- };
-
- $.extend(Travis.Slider.prototype, {
- persist: function() {
- return typeof localStorage !== "undefined" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;
- },
- isMinimized: function() {
- return $('body').hasClass('maximized');
- },
- minimize: function() {
- return $('body').addClass('maximized');
- },
- toggle: function() {
- var element;
- $('body').toggleClass('maximized');
- this.persist();
- element = $(' ');
- $('#top .profile').append(element);
- return Em.run.later((function() {
- return element.remove();
- }), 10);
- }
- });
-
-}).call(this);
-
-});minispade.register('store', function() {(function() {
- var DATA_PROXY,
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-minispade.require('store/rest_adapter');
-
- DATA_PROXY = {
- get: function(name) {
- return this.savedData[name];
- }
- };
-
- Travis.Store = DS.Store.extend({
- revision: 4,
- adapter: Travis.RestAdapter.create(),
- merge: function(type, id, hash) {
- var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;
- if (hash === void 0) {
- hash = id;
- primaryKey = type.proto().primaryKey;
- Ember.assert("A data hash was loaded for a record of type " + type.toString() + " but no primary key '" + primaryKey + "' was provided.", hash[primaryKey]);
- id = hash[primaryKey];
- }
- typeMap = this.typeMapFor(type);
- dataCache = typeMap.cidToHash;
- clientId = typeMap.idToCid[id];
- recordCache = this.get('recordCache');
- if (clientId !== void 0) {
- if (data = dataCache[clientId]) {
- $.extend(data, hash);
- } else {
- dataCache[clientId] = hash;
- }
- if (record = recordCache[clientId]) {
- record.send('didChangeData');
- }
- } else {
- clientId = this.find(type, id).get('clientId');
- }
- if (clientId) {
- DATA_PROXY.savedData = hash;
- this.updateRecordArrays(type, clientId, DATA_PROXY);
- return {
- id: id,
- clientId: clientId
- };
- }
- },
- receive: function(event, data) {
- var job, mappings, name, type, _ref;
- _ref = event.split(':'), name = _ref[0], type = _ref[1];
- mappings = this.adapter.get('mappings');
- type = mappings[name];
- if (event === 'job:log') {
- if (job = this.find(Travis.Job, data['job']['id'])) {
- return job.appendLog(data['job']['_log']);
- }
- } else if (data[type.singularName()]) {
- return this._loadOne(this, type, data);
- } else if (data[type.pluralName()]) {
- return this._loadMany(this, type, data);
- } else {
- if (!type) {
- throw "can't load data for " + name;
- }
- }
- },
- _loadOne: function(store, type, json) {
- var root;
- root = type.singularName();
- this.adapter.sideload(store, type, json, root);
- this.merge(type, json[root]);
- return this._updateAssociations(type, root, json[root]);
- },
- _loadMany: function(store, type, json) {
- var root;
- root = type.pluralName();
- this.adapter.sideload(store, type, json, root);
- return this.loadMany(type, json[root]);
- },
- _updateAssociations: function(type, name, data) {
- var _this = this;
- return Em.get(type, 'associationsByName').forEach(function(key, meta) {
- var clientId, dataProxy, id, ids, parent, _ref;
- if (meta.kind === 'belongsTo') {
- id = data["" + key + "_id"];
- if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {
- if (parent = _this.findByClientId(meta.type, clientId, id)) {
- dataProxy = parent.get('data');
- if (ids = dataProxy.get("" + name + "_ids")) {
- if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {
- ids.pushObject(data.id);
- }
- return parent.send('didChangeData');
- }
- }
- }
- }
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('store/fixture_adapter', function() {(function() {
-
- this.Travis.FixtureAdapter = DS.Adapter.extend({
- find: function(store, type, id) {
- var fixtures;
- fixtures = type.FIXTURES;
- Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);
- if (fixtures.hasLoaded) {
- return;
- }
- return setTimeout((function() {
- store.loadMany(type, fixtures);
- return fixtures.hasLoaded = true;
- }), 300);
- },
- findMany: function() {
- return this.find.apply(this, arguments);
- },
- findAll: function(store, type) {
- var fixtures, ids;
- fixtures = type.FIXTURES;
- Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);
- ids = fixtures.map(function(item, index, self) {
- return item.id;
- });
- return store.loadMany(type, ids, fixtures);
- },
- findQuery: function(store, type, params, array) {
- var fixture, fixtures, hashes, key, matches, value;
- fixtures = type.FIXTURES;
- Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);
- hashes = (function() {
- var _i, _len, _results;
- _results = [];
- for (_i = 0, _len = fixtures.length; _i < _len; _i++) {
- fixture = fixtures[_i];
- matches = (function() {
- var _results1;
- _results1 = [];
- for (key in params) {
- value = params[key];
- _results1.push(key === 'orderBy' || fixture[key] === value);
- }
- return _results1;
- })();
- if (matches.reduce(function(a, b) {
- return a && b;
- })) {
- _results.push(fixture);
- } else {
- _results.push(null);
- }
- }
- return _results;
- })();
- return array.load(hashes.compact());
- }
- });
-
-}).call(this);
-
-});minispade.register('store/rest_adapter', function() {(function() {
-minispade.require('travis/ajax');
-minispade.require('models');
-
- this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {
- mappings: {
- repositories: Travis.Repository,
- repository: Travis.Repository,
- builds: Travis.Build,
- build: Travis.Build,
- commits: Travis.Commit,
- commit: Travis.Commit,
- jobs: Travis.Job,
- job: Travis.Job,
- account: Travis.Account,
- accounts: Travis.Account,
- worker: Travis.Worker,
- workers: Travis.Worker
- },
- plurals: {
- repository: 'repositories',
- build: 'builds',
- branch: 'branches',
- job: 'jobs',
- worker: 'workers',
- profile: 'profile'
- }
- });
-
-}).call(this);
-
-});minispade.register('tailing', function() {(function() {
-
- this.Travis.Tailing = function() {
- this.position = $(window).scrollTop();
- $(window).scroll(this.onScroll.bind(this));
- return this;
- };
-
- $.extend(Travis.Tailing.prototype, {
- options: {
- timeout: 200
- },
- run: function() {
- this.autoScroll();
- this.positionButton();
- if (this.active()) {
- return Ember.run.later(this.run.bind(this), this.options.timeout);
- }
- },
- toggle: function(event) {
- if (this.active()) {
- return this.stop();
- } else {
- return this.start();
- }
- },
- active: function() {
- return $('#tail').hasClass('active');
- },
- start: function() {
- $('#tail').addClass('active');
- return this.run();
- },
- stop: function() {
- return $('#tail').removeClass('active');
- },
- autoScroll: function() {
- var log, logBottom, win, winBottom;
- if (!this.active()) {
- return;
- }
- win = $(window);
- log = $('#log');
- logBottom = log.offset().top + log.outerHeight() + 40;
- winBottom = win.scrollTop() + win.height();
- if (logBottom - winBottom > 0) {
- return win.scrollTop(logBottom - win.height());
- }
- },
- onScroll: function() {
- var position;
- this.positionButton();
- position = $(window).scrollTop();
- if (position < this.position) {
- this.stop();
- }
- return this.position = position;
- },
- positionButton: function() {
- var max, offset, tail;
- tail = $('#tail');
- if (tail.length === 0) {
- return;
- }
- offset = $(window).scrollTop() - $('#log').offset().top;
- max = $('#log').height() - $('#tail').height() + 5;
- if (offset > max) {
- offset = max;
- }
- if (offset > 0) {
- return tail.css({
- top: offset - 2
- });
- } else {
- return tail.css({
- top: 0
- });
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('views', function() {(function() {
-minispade.require('ext/ember/namespace');
-
- this.Travis.reopen({
- View: Em.View.extend({
- popup: function(event) {
- return $("#" + event.target.name).toggleClass('display');
- }
- })
- });
-
- this.Travis.reopen({
- HomeView: Travis.View.extend({
- templateName: 'layouts/home'
- }),
- AuthLayoutView: Travis.View.extend({
- templateName: 'layouts/simple'
- }),
- ProfileLayoutView: Travis.View.extend({
- templateName: 'layouts/profile'
- }),
- StatsLayoutView: Travis.View.extend({
- templateName: 'layouts/simple'
- }),
- ApplicationView: Travis.View.extend({
- templateName: 'application'
- })
- });
-minispade.require('views/accounts');
-minispade.require('views/build');
-minispade.require('views/job');
-minispade.require('views/repo');
-minispade.require('views/profile');
-minispade.require('views/sidebar');
-minispade.require('views/stats');
-minispade.require('views/signin');
-minispade.require('views/top');
-
-}).call(this);
-
-});minispade.register('views/accounts', function() {(function() {
-
- this.Travis.reopen({
- AccountsView: Travis.View.extend({
- tabBinding: 'controller.tab',
- templateName: 'profile/accounts',
- classAccounts: (function() {
- if (this.get('tab') === 'accounts') {
- return 'active';
- }
- }).property('tab')
- }),
- AccountsListView: Em.CollectionView.extend({
- elementId: 'accounts',
- accountBinding: 'content',
- tagName: 'ul',
- emptyView: Ember.View.extend({
- template: Ember.Handlebars.compile('Loading
')
- }),
- itemViewClass: Travis.View.extend({
- accountBinding: 'content',
- typeBinding: 'content.type',
- selectedBinding: 'account.selected',
- classNames: ['account'],
- classNameBindings: ['type', 'selected'],
- name: (function() {
- return this.get('content.name') || this.get('content.login');
- }).property('content.login', 'content.name'),
- urlAccount: (function() {
- return Travis.Urls.account(this.get('account.login'));
- }).property('account.login')
- })
- })
- });
-
-}).call(this);
-
-});minispade.register('views/build', function() {(function() {
-
- this.Travis.reopen({
- BuildsView: Travis.View.extend({
- templateName: 'builds/list',
- buildsBinding: 'controller.builds',
- showMore: function() {
- var id, number;
- id = this.get('controller.repository.id');
- number = this.get('builds.lastObject.number');
- return this.get('builds').load(Travis.Build.olderThanNumber(id, number));
- },
- ShowMoreButton: Em.View.extend({
- tagName: 'button',
- classNameBindings: ['isLoading'],
- attributeBindings: ['disabled'],
- isLoadingBinding: 'controller.builds.isLoading',
- template: Em.Handlebars.compile('{{view.label}}'),
- disabledBinding: 'isLoading',
- label: (function() {
- if (this.get('isLoading')) {
- return 'Loading';
- } else {
- return 'Show more';
- }
- }).property('isLoading'),
- click: function() {
- return this.get('parentView').showMore();
- }
- })
- }),
- BuildsItemView: Travis.View.extend({
- tagName: 'tr',
- classNameBindings: ['color'],
- repositoryBinding: 'controller.repository',
- buildBinding: 'context',
- commitBinding: 'build.commit',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('build.result'));
- }).property('build.result'),
- urlBuild: (function() {
- return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));
- }).property('repository.slug', 'build.id'),
- urlGithubCommit: (function() {
- return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));
- }).property('repository.slug', 'commit.sha')
- }),
- BuildView: Travis.View.extend({
- templateName: 'builds/show',
- elementId: 'build',
- classNameBindings: ['color', 'loading'],
- repositoryBinding: 'controller.repository',
- buildBinding: 'controller.build',
- commitBinding: 'build.commit',
- loading: (function() {
- return !this.get('build.isLoaded');
- }).property('build.isLoaded'),
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('build.result'));
- }).property('build.result'),
- urlBuild: (function() {
- return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));
- }).property('repository.slug', 'build.id'),
- urlGithubCommit: (function() {
- return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));
- }).property('repository.slug', 'commit.sha'),
- urlAuthor: (function() {
- return Travis.Urls.email(this.get('commit.authorEmail'));
- }).property('commit.authorEmail'),
- urlCommitter: (function() {
- return Travis.Urls.email(this.get('commit.committerEmail'));
- }).property('commit.committerEmail')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/job', function() {(function() {
-
- this.Travis.reopen({
- JobsView: Travis.View.extend({
- templateName: 'jobs/list',
- buildBinding: 'controller.build'
- }),
- JobsItemView: Travis.View.extend({
- tagName: 'tr',
- classNameBindings: ['color'],
- repositoryBinding: 'context.repository',
- jobBinding: 'context',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('job.result'));
- }).property('job.result'),
- urlJob: (function() {
- return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));
- }).property('repository.slug', 'job.id')
- }),
- JobView: Travis.View.extend({
- templateName: 'jobs/show',
- repositoryBinding: 'controller.repository',
- jobBinding: 'controller.job',
- commitBinding: 'job.commit',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('job.result'));
- }).property('job.result'),
- urlJob: (function() {
- return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));
- }).property('repository.slug', 'job.id'),
- urlGithubCommit: (function() {
- return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));
- }).property('repository.slug', 'commit.sha'),
- urlAuthor: (function() {
- return Travis.Urls.email(this.get('commit.authorEmail'));
- }).property('commit.authorEmail'),
- urlCommitter: (function() {
- return Travis.Urls.email(this.get('commit.committerEmail'));
- }).property('commit.committerEmail')
- }),
- LogView: Travis.View.extend({
- templateName: 'jobs/log',
- logBinding: 'job.log',
- click: function(event) {
- return $(event.target).closest('.fold').toggleClass('open');
- },
- toTop: function() {
- return $(window).scrollTop(0);
- },
- jobBinding: 'context',
- toggleTailing: function(event) {
- Travis.app.tailing.toggle();
- return event.preventDefault();
- },
- logSubscriber: (function() {
- var job, state;
- job = this.get('job');
- state = this.get('job.state');
- if (job && state !== 'finished') {
- job.subscribe();
- }
- return null;
- }).property('job', 'job.state')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/left', function() {(function() {
-
- this.Travis.reopen({
- ReposView: Travis.View.extend({
- templateName: 'repos/list',
- tabBinding: 'controller.tab',
- classRecent: (function() {
- if (this.get('tab') === 'recent') {
- return 'active';
- }
- }).property('tab'),
- classOwned: (function() {
- var classes;
- classes = [];
- if (this.get('tab') === 'owned') {
- classes.push('active');
- }
- if (Travis.app.get('currentUser')) {
- classes.push('display');
- }
- return classes.join(' ');
- }).property('tab', 'Travis.currentUser'),
- classSearch: (function() {
- if (this.get('tab') === 'search') {
- return 'active';
- }
- }).property('tab')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/profile', function() {(function() {
-
- this.Travis.reopen({
- ProfileView: Travis.View.extend({
- templateName: 'profile/show',
- accountBinding: 'controller.account',
- name: (function() {
- return this.get('account.name') || this.get('account.login');
- }).property('account.name', 'account.login')
- }),
- ProfileTabsView: Travis.View.extend({
- templateName: 'profile/tabs',
- tabBinding: 'controller.tab',
- activate: function(event) {
- return this.get('controller').activate(event.target.name);
- },
- classHooks: (function() {
- if (this.get('tab') === 'hooks') {
- return 'active';
- }
- }).property('tab'),
- classUser: (function() {
- if (this.get('tab') === 'user') {
- return 'active';
- }
- }).property('tab'),
- accountBinding: 'controller.account',
- displayUser: (function() {
- return this.get('controller.account.login') === this.get('controller.user.login');
- }).property('controller.account.login', 'controller.user.login')
- }),
- HooksView: Travis.View.extend({
- templateName: 'profile/tabs/hooks',
- userBinding: 'controller.user',
- urlGithubAdmin: (function() {
- return Travis.Urls.githubAdmin(this.get('hook.slug'));
- }).property('hook.slug')
- }),
- UserView: Travis.View.extend({
- templateName: 'profile/tabs/user',
- userBinding: 'controller.user',
- gravatarUrl: (function() {
- return "" + location.protocol + "//www.gravatar.com/avatar/" + (this.get('user.gravatarId')) + "?s=48&d=mm";
- }).property('user.gravatarId'),
- locales: (function() {
- return [
- {
- key: null,
- name: ''
- }, {
- key: 'en',
- name: 'English'
- }, {
- key: 'ca',
- name: 'Catalan'
- }, {
- key: 'cs',
- name: 'Čeština'
- }, {
- key: 'es',
- name: 'Español'
- }, {
- key: 'fr',
- name: 'Français'
- }, {
- key: 'ja',
- name: '日本語'
- }, {
- key: 'nl',
- name: 'Nederlands'
- }, {
- key: 'nb',
- name: 'Norsk Bokmål'
- }, {
- key: 'pl',
- name: 'Polski'
- }, {
- key: {
- 'pt-BR': {
- name: 'Português brasileiro'
- }
- }
- }, {
- key: 'ru',
- name: 'Русский'
- }
- ];
- }).property(),
- saveLocale: function(event) {
- return this.get('user').updateLocale($('#locale').val());
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('views/repo', function() {(function() {
-minispade.require('views/repo/list');
-minispade.require('views/repo/show');
-
-}).call(this);
-
-});minispade.register('views/repo/list', function() {(function() {
-
- this.Travis.reopen({
- RepositoriesView: Travis.View.extend({
- templateName: 'repos/list',
- toggleInfo: function(event) {
- return $('#repositories').toggleClass('open');
- }
- }),
- RepositoriesListView: Em.CollectionView.extend({
- elementId: 'repositories',
- tagName: 'ul',
- emptyView: Ember.View.extend({
- template: Ember.Handlebars.compile('Loading
')
- }),
- itemViewClass: Travis.View.extend({
- repositoryBinding: 'content',
- classNames: ['repository'],
- classNameBindings: ['color', 'selected'],
- selectedBinding: 'repository.selected',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));
- }).property('repository.lastBuildResult'),
- urlRepository: (function() {
- return Travis.Urls.repository(this.get('repository.slug'));
- }).property('repository.slug'),
- urlLastBuild: (function() {
- return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));
- }).property('repository.slug', 'repository.lastBuildId')
- })
- }),
- ReposListTabsView: Travis.View.extend({
- templateName: 'repos/list/tabs',
- tabBinding: 'controller.tab',
- activate: function(event) {
- return this.get('controller').activate(event.target.name);
- },
- classRecent: (function() {
- if (this.get('tab') === 'recent') {
- return 'active';
- }
- }).property('tab'),
- classOwned: (function() {
- var classes;
- classes = [];
- if (this.get('tab') === 'owned') {
- classes.push('active');
- }
- if (Travis.app.get('currentUser')) {
- classes.push('display-inline');
- }
- return classes.join(' ');
- }).property('tab', 'Travis.app.currentUser'),
- classSearch: (function() {
- if (this.get('tab') === 'search') {
- return 'active';
- }
- }).property('tab')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/repo/show', function() {(function() {
-
- this.Travis.reopen({
- RepositoryView: Travis.View.extend({
- templateName: 'repos/show',
- repositoryBinding: 'controller.repository',
- "class": (function() {
- if (!this.get('repository.isLoaded')) {
- return 'loading';
- }
- }).property('repository.isLoaded'),
- urlGithub: (function() {
- return Travis.Urls.githubRepository(this.get('repository.slug'));
- }).property('repository.slug'),
- urlGithubWatchers: (function() {
- return Travis.Urls.githubWatchers(this.get('repository.slug'));
- }).property('repository.slug'),
- urlGithubNetwork: (function() {
- return Travis.Urls.githubNetwork(this.get('repository.slug'));
- }).property('repository.slug')
- }),
- RepoShowTabsView: Travis.View.extend({
- templateName: 'repos/show/tabs',
- repositoryBinding: 'controller.repository',
- buildBinding: 'controller.build',
- jobBinding: 'controller.job',
- tabBinding: 'controller.tab',
- classCurrent: (function() {
- if (this.get('tab') === 'current') {
- return 'active';
- }
- }).property('tab'),
- classBuilds: (function() {
- if (this.get('tab') === 'builds') {
- return 'active';
- }
- }).property('tab'),
- classPullRequests: (function() {
- if (this.get('tab') === 'pull_requests') {
- return 'active';
- }
- }).property('tab'),
- classBranches: (function() {
- if (this.get('tab') === 'branches') {
- return 'active';
- }
- }).property('tab'),
- classBuild: (function() {
- var classes, tab;
- tab = this.get('tab');
- classes = [];
- if (tab === 'build') {
- classes.push('active');
- }
- if (tab === 'build' || tab === 'job') {
- classes.push('display-inline');
- }
- return classes.join(' ');
- }).property('tab'),
- classJob: (function() {
- if (this.get('tab') === 'job') {
- return 'active display-inline';
- }
- }).property('tab')
- }),
- RepoShowToolsView: Travis.View.extend({
- templateName: 'repos/show/tools',
- repositoryBinding: 'controller.repository',
- buildBinding: 'controller.build',
- jobBinding: 'controller.job',
- tabBinding: 'controller.tab',
- toggle: function() {
- var element;
- element = $('#tools .pane').toggleClass('display-inline');
- return this.set('active', element.hasClass('display-inline'));
- },
- branches: (function() {
- if (this.get('active')) {
- return this.get('repository.branches');
- }
- }).property('active', 'repository.branches'),
- urlRepository: (function() {
- return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));
- }).property('repository.slug'),
- urlStatusImage: (function() {
- return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));
- }).property('repository.slug', 'branch'),
- markdownStatusImage: (function() {
- return "[) + ")](" + (this.get('urlRepository')) + ")";
- }).property('urlStatusImage'),
- textileStatusImage: (function() {
- return "!" + (this.get('urlStatusImage')) + "!:" + (this.get('urlRepository'));
- }).property('urlStatusImage'),
- rdocStatusImage: (function() {
- return "{ }[" + (this.get('urlRepository')) + "]";
- }).property('urlStatusImage')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/sidebar', function() {(function() {
-
- this.Travis.reopen({
- SidebarView: Travis.View.extend({
- templateName: 'layouts/sidebar',
- DecksView: Em.View.extend({
- templateName: "sponsors/decks",
- controller: Travis.SponsorsController.create({
- perPage: 1
- }),
- didInsertElement: function() {
- var controller;
- controller = this.get('controller');
- if (!controller.get('content')) {
- Travis.app.get('router.sidebarController').tickables.push(controller);
- controller.set('content', Travis.Sponsor.decks());
- }
- return this._super.apply(this, arguments);
- }
- }),
- LinksView: Em.View.extend({
- templateName: "sponsors/links",
- controller: Travis.SponsorsController.create({
- perPage: 6
- }),
- didInsertElement: function() {
- var controller;
- controller = this.get('controller');
- if (!controller.get('content')) {
- controller.set('content', Travis.Sponsor.links());
- Travis.app.get('router.sidebarController').tickables.push(controller);
- }
- return this._super.apply(this, arguments);
- }
- }),
- WorkersView: Em.View.extend({
- templateName: 'workers/list',
- controller: Travis.WorkersController.create(),
- didInsertElement: function() {
- this.set('controller.content', Travis.Worker.find());
- return this._super.apply(this, arguments);
- }
- }),
- QueuesView: Em.View.extend({
- templateName: 'queues/list',
- controller: Travis.QueuesController.create(),
- didInsertElement: function() {
- var queue, queues;
- queues = (function() {
- var _i, _len, _ref, _results;
- _ref = Travis.QUEUES;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- queue = _ref[_i];
- _results.push(Em.ArrayController.create({
- content: Travis.Job.queued(queue.name),
- id: "queue_" + queue.name,
- name: queue.display
- }));
- }
- return _results;
- })();
- this.set('controller.content', queues);
- return this._super.apply(this, arguments);
- }
- })
- }),
- WorkersView: Travis.View.extend({
- toggleWorkers: function(event) {
- var handle;
- handle = $(event.target).toggleClass('open');
- if (handle.hasClass('open')) {
- return $('#workers li').addClass('open');
- } else {
- return $('#workers li').removeClass('open');
- }
- }
- }),
- WorkersListView: Travis.View.extend({
- toggle: function(event) {
- return $(event.target).closest('li').toggleClass('open');
- }
- }),
- WorkersItemView: Travis.View.extend({
- display: (function() {
- var name, number, payload, repo, state;
- name = (this.get('worker.name') || '').replace('travis-', '');
- state = this.get('worker.state');
- payload = this.get('worker.payload');
- if (state === 'working' && payload !== void 0) {
- repo = payload.repository.slug;
- number = ' #' + payload.build.number;
- return ("" + name + ": " + repo + " " + number).htmlSafe();
- } else {
- return "" + name + ": " + state;
- }
- }).property('worker.state')
- }),
- QueueItemView: Travis.View.extend({
- tagName: 'li',
- urlJob: (function() {
- return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));
- }).property('job.repository.slug', 'job.id')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/signin', function() {(function() {
-
- this.Travis.reopen({
- SigninView: Travis.View.extend({
- templateName: 'auth/signin',
- signingIn: (function() {
- return Travis.app.get('authState');
- }).property('Travis.app.authState')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/stats', function() {(function() {
-
- this.Travis.reopen({
- StatsView: Travis.View.extend({
- templateName: 'stats/show',
- didInsertElement: function() {},
- renderChart: function(config) {
- var chart;
- chart = new Highcharts.Chart(config);
- return this.fetch(config.source, function(data) {
- var stats;
- stats = (function() {
- var _i, _len, _ref, _results;
- _ref = data.stats;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- stats = _ref[_i];
- _results.push(config.map(stats));
- }
- return _results;
- })();
- return chart.series[0].setData(stats);
- });
- },
- fetch: function(url, callback) {
- return $.ajax({
- type: 'GET',
- url: url,
- accepts: {
- json: 'application/vnd.travis-ci.2+json'
- },
- success: callback
- });
- },
- CHARTS: {
- repos: {
- source: '/api/stats/repos',
- total: 0,
- map: function(data) {
- return [Date.parse(data.date), this.total += parseInt(data.count)];
- },
- chart: {
- renderTo: "repos_stats"
- },
- title: {
- text: "Total Projects/Repositories"
- },
- xAxis: {
- type: "datetime",
- dateTimeLabelFormats: {
- month: "%e. %b",
- year: "%b"
- }
- },
- yAxis: {
- title: {
- text: "Count"
- },
- min: 0
- },
- tooltip: {
- formatter: function() {
- return Highcharts.dateFormat("%e. %b", this.x) + ": " + this.y + " repos";
- }
- },
- series: [
- {
- name: "Repository Growth",
- data: []
- }
- ]
- },
- builds: {
- source: '/api/stats/tests',
- map: function(data) {
- return [Date.parse(data.date), parseInt(data.count)];
- },
- chart: {
- renderTo: "tests_stats",
- type: "column"
- },
- title: {
- text: "Build Count"
- },
- subtitle: {
- text: "last month"
- },
- xAxis: {
- type: "datetime",
- dateTimeLabelFormats: {
- month: "%e. %b",
- year: "%b"
- }
- },
- yAxis: {
- title: {
- text: "Count"
- },
- min: 0
- },
- tooltip: {
- formatter: function() {
- return Highcharts.dateFormat("%e. %b", this.x) + ": " + this.y + " builds";
- }
- },
- series: [
- {
- name: "Total Builds",
- data: []
- }
- ]
- }
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('views/top', function() {(function() {
-
- this.Travis.reopen({
- TopView: Travis.View.extend({
- templateName: 'layouts/top',
- tabBinding: 'controller.tab',
- userBinding: 'controller.user',
- gravatarUrl: (function() {
- return "" + location.protocol + "//www.gravatar.com/avatar/" + (this.get('user.gravatarId')) + "?s=24&d=mm";
- }).property('user.gravatarId'),
- classHome: (function() {
- if (this.get('tab') === 'home') {
- return 'active';
- }
- }).property('tab'),
- classStats: (function() {
- if (this.get('tab') === 'stats') {
- return 'active';
- }
- }).property('tab'),
- classProfile: (function() {
- var classes;
- classes = ['profile'];
- if (this.get('tab') === 'profile') {
- classes.push('active');
- }
- classes.push(Travis.app.get('authState'));
- return classes.join(' ');
- }).property('tab', 'Travis.app.authState'),
- showProfile: function() {
- return $('#top .profile ul').show();
- },
- hideProfile: function() {
- return $('#top .profile ul').hide();
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('data/sponsors', function() {(function() {
-
- this.Travis.SPONSORS = [
- {
- type: 'platinum',
- url: "http://www.wooga.com",
- image: "wooga-205x130.png"
- }, {
- type: 'platinum',
- url: "http://bendyworks.com",
- image: "bendyworks-205x130.png"
- }, {
- type: 'platinum',
- url: "http://cloudcontrol.com",
- image: "cloudcontrol-205x130.png"
- }, {
- type: 'platinum',
- url: "http://xing.de",
- image: "xing-205x130.png"
- }, {
- type: 'gold',
- url: "http://heroku.com",
- image: "heroku-205x60.png"
- }, {
- type: 'gold',
- url: "http://soundcloud.com",
- image: "soundcloud-205x60.png"
- }, {
- type: 'gold',
- url: "http://nedap.com",
- image: "nedap-205x60.png"
- }, {
- type: 'gold',
- url: "http://mongohq.com",
- image: "mongohq-205x60.png"
- }, {
- type: 'gold',
- url: "http://zweitag.de",
- image: "zweitag-205x60.png"
- }, {
- type: 'gold',
- url: "http://kanbanery.com",
- image: "kanbanery-205x60.png"
- }, {
- type: 'gold',
- url: "http://ticketevolution.com",
- image: "ticketevolution-205x60.jpg"
- }, {
- type: 'gold',
- url: "http://plan.io/travis",
- image: "planio-205x60.png"
- }, {
- type: 'silver',
- link: "Cobot : The one tool to run your coworking space "
- }, {
- type: 'silver',
- link: "JumpstartLab : We build developers "
- }, {
- type: 'silver',
- link: "Evil Martians : Agile Ruby on Rails development "
- }, {
- type: 'silver',
- link: "Zendesk : Love your helpdesk "
- }, {
- type: 'silver',
- link: "Stripe : Payments for developers "
- }, {
- type: 'silver',
- link: "Basho : We make Riak! "
- }, {
- type: 'silver',
- link: "Relevance : We deliver software solutions "
- }, {
- type: 'silver',
- link: "Mindmatters : Software für Menschen "
- }, {
- type: 'silver',
- link: "Amen : The best and worst of everything "
- }, {
- type: 'silver',
- link: "Site5 : Premium Web Hosting Solutions "
- }, {
- type: 'silver',
- link: "Crowd Interactive : Leading Rails consultancy in Mexico "
- }, {
- type: 'silver',
- link: "Atomic Object : Work with really smart people "
- }, {
- type: 'silver',
- link: "Codeminer : smart services for your startup "
- }, {
- type: 'silver',
- link: "Cloudant : grow into your data layer, not out of it "
- }, {
- type: 'silver',
- link: "Gidsy : Explore, organize & book unique things to do! "
- }, {
- type: 'silver',
- link: "5apps : Package & deploy HTML5 apps automatically "
- }, {
- type: 'silver',
- link: "Meltmedia : We are Interactive Superheroes "
- }, {
- type: 'silver',
- link: "Fingertips offers design and development services "
- }, {
- type: 'silver',
- link: "Engine Yard : Build epic apps, let us handle the rest "
- }, {
- type: 'silver',
- link: "Malwarebytes : Defeat Malware once and for all. "
- }, {
- type: 'silver',
- link: "Readmill : The best reading app on the iPad. "
- }, {
- type: 'silver',
- link: "Medidata : clinical tech improving quality of life "
- }, {
- type: 'silver',
- link: "ESM : Japan's best agile Ruby/Rails consultancy "
- }, {
- type: 'silver',
- link: "Twitter : instantly connects people everywhere "
- }, {
- type: 'silver',
- link: "AGiLE ANiMAL : we <3 Travis CI. "
- }, {
- type: 'silver',
- link: "Tupalo : Discover, review & share local businesses. "
- }
- ];
-
-}).call(this);
-
-});minispade.register('emoij', function() {(function() {
-
- this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];
-
-}).call(this);
-
-});minispade.register('ext/jquery', function() {(function() {
-
- $.fn.extend({
- outerHtml: function() {
- return $(this).wrap('
').parent().html();
- },
- outerElement: function() {
- return $($(this).outerHtml()).empty();
- },
- flash: function() {
- return Utils.flash(this);
- },
- unflash: function() {
- return Utils.unflash(this);
- },
- filterLog: function() {
- this.deansi();
- return this.foldLog();
- },
- deansi: function() {
- return this.html(Utils.deansi(this.html()));
- },
- foldLog: function() {
- return this.html(Utils.foldLog(this.html()));
- },
- unfoldLog: function() {
- return this.html(Utils.unfoldLog(this.html()));
- },
- updateTimes: function() {
- return Utils.updateTimes(this);
- },
- activateTab: function(tab) {
- return Utils.activateTab(this, tab);
- },
- timeInWords: function() {
- return $(this).each(function() {
- return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));
- });
- },
- updateGithubStats: function(repository) {
- return Utils.updateGithubStats(repository, $(this));
- }
- });
-
- $.extend({
- isEmpty: function(obj) {
- if ($.isArray(obj)) {
- return !obj.length;
- } else if ($.isObject(obj)) {
- return !$.keys(obj).length;
- } else {
- return !obj;
- }
- },
- isObject: function(obj) {
- return Object.prototype.toString.call(obj) === '[object Object]';
- },
- keys: function(obj) {
- var keys;
- keys = [];
- $.each(obj, function(key) {
- return keys.push(key);
- });
- return keys;
- },
- values: function(obj) {
- var values;
- values = [];
- $.each(obj, function(key, value) {
- return values.push(value);
- });
- return values;
- },
- underscore: function(string) {
- return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {
- if (chr) {
- return "_" + (chr.toUpperCase());
- } else {
- return '';
- }
- });
- },
- camelize: function(string, uppercase) {
- string = uppercase === false ? $.underscore(string) : $.capitalize(string);
- return string.replace(/_(.)?/g, function(match, chr) {
- if (chr) {
- return chr.toUpperCase();
- } else {
- return '';
- }
- });
- },
- capitalize: function(string) {
- return string[0].toUpperCase() + string.substring(1);
- },
- compact: function(object) {
- return $.grep(object, function(value) {
- return !!value;
- });
- },
- all: function(array, callback) {
- var args, i;
- args = Array.prototype.slice.apply(arguments);
- callback = args.pop();
- array = args.pop() || this;
- i = 0;
- while (i < array.length) {
- if (callback(array[i])) {
- return false;
- }
- i++;
- }
- return true;
- },
- detect: function(array, callback) {
- var args, i;
- args = Array.prototype.slice.apply(arguments);
- callback = args.pop();
- array = args.pop() || this;
- i = 0;
- while (i < array.length) {
- if (callback(array[i])) {
- return array[i];
- }
- i++;
- }
- },
- select: function(array, callback) {
- var args, i, result;
- args = Array.prototype.slice.apply(arguments);
- callback = args.pop();
- array = args.pop() || this;
- result = [];
- i = 0;
- while (i < array.length) {
- if (callback(array[i])) {
- result.push(array[i]);
- }
- i++;
- }
- return result;
- },
- slice: function(object, key) {
- var keys, result;
- keys = Array.prototype.slice.apply(arguments);
- object = (typeof keys[0] === 'object' ? keys.shift() : this);
- result = {};
- for (key in object) {
- if (keys.indexOf(key) > -1) {
- result[key] = object[key];
- }
- }
- return result;
- },
- only: function(object) {
- var key, keys, result;
- keys = Array.prototype.slice.apply(arguments);
- object = (typeof keys[0] === 'object' ? keys.shift() : this);
- result = {};
- for (key in object) {
- if (keys.indexOf(key) !== -1) {
- result[key] = object[key];
- }
- }
- return result;
- },
- except: function(object) {
- var key, keys, result;
- keys = Array.prototype.slice.apply(arguments);
- object = (typeof keys[0] === 'object' ? keys.shift() : this);
- result = {};
- for (key in object) {
- if (keys.indexOf(key) === -1) {
- result[key] = object[key];
- }
- }
- return result;
- },
- intersect: function(array, other) {
- return array.filter(function(element) {
- return other.indexOf(element) !== -1;
- });
- },
- map: function(elems, callback, arg) {
- var i, isArray, key, length, ret, value;
- value = void 0;
- key = void 0;
- ret = [];
- i = 0;
- length = elems.length;
- isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);
- if (isArray) {
- while (i < length) {
- value = callback(elems[i], i, arg);
- if (value != null) {
- ret[ret.length] = value;
- }
- i++;
- }
- } else {
- for (key in elems) {
- value = callback(elems[key], key, arg);
- if (value != null) {
- ret[ret.length] = value;
- }
- }
- }
- return ret.concat.apply([], ret);
- },
- shuffle: function(array) {
- var current, tmp, top;
- array = array.slice();
- top = array.length;
- while (top && --top) {
- current = Math.floor(Math.random() * (top + 1));
- tmp = array[current];
- array[current] = array[top];
- array[top] = tmp;
- }
- return array;
- },
- truncate: function(string, length) {
- if (string.length > length) {
- return string.trim().substring(0, length) + '...';
- } else {
- return string;
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/ajax', function() {(function() {
-
- jQuery.support.cors = true;
-
- this.Travis.Ajax = Ember.Mixin.create({
- DEFAULT_OPTIONS: {
- accepts: {
- json: 'application/vnd.travis-ci.2+json'
- }
- },
- post: function(url, data, callback) {
- return this.ajax(url, 'post', {
- data: data,
- success: callback
- });
- },
- ajax: function(url, method, options) {
- var accessToken, endpoint, _base, _ref;
- endpoint = Travis.config.api_endpoint || '';
- options = options || {};
- if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {
- options.headers || (options.headers = {});
- (_base = options.headers)['Authorization'] || (_base['Authorization'] = "token " + accessToken);
- }
- options.url = "" + endpoint + url;
- options.type = method;
- options.dataType = 'json';
- options.contentType = 'application/json; charset=utf-8';
- options.context = this;
- if (options.data && method !== 'GET' && method !== 'get') {
- options.data = JSON.stringify(options.data);
- }
- return $.ajax($.extend(options, this.DEFAULT_OPTIONS));
- }
- });
-
- this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {
- get: function(url, callback) {
- return this.ajax(url, 'get', {
- success: callback
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/expandable_record_array', function() {(function() {
-
- Travis.ExpandableRecordArray = DS.RecordArray.extend({
- isLoaded: false,
- isLoading: false,
- load: function(array) {
- var observer, self;
- this.set('isLoading', true);
- self = this;
- observer = function() {
- var content;
- if (this.get('isLoaded')) {
- content = self.get('content');
- array.removeObserver('isLoaded', observer);
- array.forEach(function(record) {
- return self.pushObject(record);
- });
- self.set('isLoading', false);
- return self.set('isLoaded', true);
- }
- };
- return array.addObserver('isLoaded', observer);
- },
- pushObject: function(record) {
- var clientId, id, ids;
- ids = this.get('content');
- id = record.get('id');
- clientId = record.get('clientId');
- if (ids.contains(clientId)) {
- return;
- }
- return ids.pushObject(clientId);
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/log', function() {(function() {
-
- this.Travis.Log = {
- FOLDS: {
- schema: /(\$ (?:bundle exec )?rake( db:create)? db:schema:load[\s\S]*?-- assume_migrated_upto_version[\s\S]*?<\/p>\n.*<\/p>)/g,
- migrate: /(\$ (?:bundle exec )?rake( db:create)? db:migrate[\s\S]*== +\w+: migrated \(.*\) =+)/g,
- bundle: /(\$ bundle install.*<\/p>\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\/p>\n|<\/p>\n)*)/g,
- exec: /([\/\w]*.rvm\/rubies\/[\S]*?\/(ruby|rbx|jruby) .*?<\/p>)/g
- },
- filter: function(log) {
- log = this.escape(log);
- log = this.deansi(log);
- log = log.replace(/\r/g, '');
- log = this.number(log);
- log = this.fold(log);
- log = log.replace(/\n/g, '');
- return log;
- },
- stripPaths: function(log) {
- return log.replace(/\/home\/vagrant\/builds(\/[^\/\n]+){2}\//g, '');
- },
- escape: function(log) {
- return Handlebars.Utils.escapeExpression(log);
- },
- escapeRuby: function(log) {
- return log.replace(/#<(\w+.*?)>/, '#<$1>');
- },
- number: function(log) {
- var result;
- result = '';
- $.each(log.trim().split('\n'), function(ix, line) {
- var number, path;
- number = ix + 1;
- path = Travis.Log.location().substr(1).replace(/\/L\d+/, '') + '/L' + number;
- return result += '%@ %@
\n'.fmt(path, path, number, number, line);
- });
- return result.trim();
- },
- deansi: function(log) {
- var ansi, text;
- log = log.replace(/\r\r/g, '\r').replace(/\033\[K\r/g, '\r').replace(/^.*\r(?!$)/gm, '').replace(/\[2K/g, '').replace(/\033\(B/g, "");
- ansi = ansiparse(log);
- text = '';
- ansi.forEach(function(part) {
- var classes;
- classes = [];
- part.foreground && classes.push(part.foreground);
- part.background && classes.push('bg-' + part.background);
- part.bold && classes.push('bold');
- part.italic && classes.push('italic');
- return text += (classes.length ? '' + part.text + ' ' : part.text);
- });
- return text.replace(/\033/g, '');
- },
- fold: function(log) {
- log = this.unfold(log);
- $.each(Travis.Log.FOLDS, function(name, pattern) {
- return log = log.replace(pattern, function() {
- return '' + arguments[1].trim() + '
';
- });
- });
- return log;
- },
- unfold: function(log) {
- return log.replace(/([\s\S]*?)<\/div>/g, '$1\n');
- },
- location: function() {
- return window.location.hash;
- }
- };
-
-}).call(this);
-
-});minispade.register('travis/model', function() {(function() {
-
- this.Travis.Model = DS.Model.extend({
- primaryKey: 'id',
- id: DS.attr('number'),
- refresh: function() {
- var id;
- id = this.get('id');
- if (id) {
- return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);
- }
- },
- update: function(attrs) {
- var _this = this;
- $.each(attrs, function(key, value) {
- if (key !== 'id') {
- return _this.set(key, value);
- }
- });
- return this;
- }
- });
-
- this.Travis.Model.reopenClass({
- find: function() {
- if (arguments.length === 0) {
- return Travis.app.store.findAll(this);
- } else {
- return this._super.apply(this, arguments);
- }
- },
- filter: function(callback) {
- return Travis.app.store.filter(this, callback);
- },
- load: function(attrs) {
- return Travis.app.store.load(this, attrs);
- },
- buildURL: function(suffix) {
- var base, url;
- base = this.url || this.pluralName();
- Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');
- Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');
- url = [base];
- if (suffix !== void 0) {
- url.push(suffix);
- }
- return url.join('/');
- },
- singularName: function() {
- var name, parts;
- parts = this.toString().split('.');
- name = parts[parts.length - 1];
- return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);
- },
- pluralName: function() {
- return Travis.app.store.adapter.pluralize(this.singularName());
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/ticker', function() {(function() {
-
- this.Travis.Ticker = Ember.Object.extend({
- init: function() {
- if (this.get('interval') !== -1) {
- return this.schedule();
- }
- },
- tick: function() {
- var context, target, targets, _i, _len;
- context = this.get('context');
- targets = this.get('targets') || [this.get('target')];
- for (_i = 0, _len = targets.length; _i < _len; _i++) {
- target = targets[_i];
- if (context) {
- target = context.get(target);
- }
- if (target) {
- target.tick();
- }
- }
- return this.schedule();
- },
- schedule: function() {
- var _this = this;
- return Ember.run.later((function() {
- return _this.tick();
- }), this.get('interval') || Travis.app.TICK_INTERVAL);
- }
- });
-
-}).call(this);
-
-});minispade.register('travis', function() {(function() {
-minispade.require('ext/jquery');
-minispade.require('ext/ember/namespace');
-
- this.Travis = Em.Namespace.create({
- config: {
- api_endpoint: $('meta[rel="travis.api_endpoint"]').attr('href')
- },
- CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],
- ROUTES: {
- 'profile/:login/me': ['profile', 'user'],
- 'profile/:login': ['profile', 'hooks'],
- 'profile': ['profile', 'hooks'],
- 'stats': ['stats', 'show'],
- ':owner/:name/jobs/:id/:line': ['home', 'job'],
- ':owner/:name/jobs/:id': ['home', 'job'],
- ':owner/:name/builds/:id': ['home', 'build'],
- ':owner/:name/builds': ['home', 'builds'],
- ':owner/:name/pull_requests': ['home', 'pullRequests'],
- ':owner/:name/branches': ['home', 'branches'],
- ':owner/:name': ['home', 'current'],
- '': ['home', 'index'],
- '#': ['home', 'index']
- },
- QUEUES: [
- {
- name: 'common',
- display: 'Common'
- }, {
- name: 'php',
- display: 'PHP, Perl and Python'
- }, {
- name: 'node_js',
- display: 'Node.js'
- }, {
- name: 'jvmotp',
- display: 'JVM and Erlang'
- }, {
- name: 'rails',
- display: 'Rails'
- }, {
- name: 'spree',
- display: 'Spree'
- }
- ],
- INTERVALS: {
- sponsors: -1,
- times: -1,
- updateTimes: 1000
- },
- run: function(attrs) {
- var _this = this;
- if (location.hash.slice(0, 2) === '#!') {
- location.href = location.href.replace('#!/', '');
- }
- return this.loadConfig(function(config) {
- var app;
- app = Travis.App.create(attrs || {});
- $.each(Travis, function(key, value) {
- if (value && value.isClass && key !== 'constructor') {
- return app[key] = value;
- }
- });
- _this.app = app;
- _this.store = app.store;
- return $(function() {
- return app.initialize();
- });
- });
- },
- loadConfig: function(callback) {
- var _this = this;
- return this.ajax.get('/config', function(data) {
- $.extend(_this.config, data.config);
- console.log("Connecting to " + data.config.api_endpoint);
- return callback(data.config);
- });
- }
- });
-minispade.require('travis/ajax');
-minispade.require('app');
-
-}).call(this);
-
-});minispade.register('templates', function() {
-Ember.TEMPLATES['application'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression;
-
-
- stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['auth/signin'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
-
- data.buffer.push("\n
Signing in \n
\n Trying to authenticate with GitHub.\n
\n");}
-
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n
Sign in \n
\n Sign in with GitHub \n
\n");
- return buffer;}
-
- stack1 = helpers['if'].call(depth0, "view.signingIn", {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['builds/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n\n \n ");
- stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n
\n ");
- stack1 = helpers.view.call(depth0, "view.ShowMoreButton", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contextBinding'] = "build";
- stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n ");
- stack1 = helpers['if'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n \n ");
- foundHelper = helpers.formatCommit;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n
\n ");
- stack1 = {};
- stack1['short'] = "true";
- foundHelper = helpers.formatMessage;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n
\n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-function program4(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n
\n ");
- stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program6(depth0,data) {
-
-
- data.buffer.push("\n
Loading
\n");}
-
- stack1 = helpers['if'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['builds/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
-
- data.buffer.push("\n
Loading \n ");}
-
-function program4(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n ");
- stack1 = helpers['if'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n\n \n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.formatCommit;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers['if'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatMessage;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push(" \n\n ");
- stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n\n ");
- stack1 = helpers['if'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n
");
- stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.pathFrom;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program11(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program13(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.formatConfig;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program15(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['jobsBinding'] = "build.requiredJobs";
- stack1['required'] = "true";
- stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- stack1 = {};
- stack1['jobsBinding'] = "build.allowedFailureJobs";
- stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program17(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contextBinding'] = "build.jobs.firstObject";
- stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
- stack1 = helpers['with'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['jobs/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n \n ");
- stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n
\n ");
- stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n\n ");
- stack1 = helpers.unless.call(depth0, "view.required", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.build_matrix", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.build_matrix", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program4(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- return buffer;}
-
-function program6(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "key", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program8(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contextBinding'] = "job";
- stack1 = helpers.view.call(depth0, "Travis.JobsItemView", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n ");
- stack1 = helpers['if'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- stack1 = helpers.each.call(depth0, "value", "in", "configValues", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program10(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program12(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "value", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program14(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- return buffer;}
-
- stack1 = helpers['if'].call(depth0, "view.jobs.length", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['jobs/log'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n Follow logs \n ");
- foundHelper = helpers.formatLog;
- stack1 = foundHelper ? foundHelper.call(depth0, "log.body", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatLog", "log.body", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push(" \n\n ");
- stack1 = helpers['if'].call(depth0, "sponsor.name", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n To top \n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- return buffer;}
-
-function program4(depth0,data) {
-
-
- data.buffer.push("\n \n Loading \n
\n");}
-
- stack1 = helpers._triageMustache.call(depth0, "view.logSubscriber", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n");
- stack1 = helpers['if'].call(depth0, "log.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['jobs/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "job.isLoaded", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n
\n \n
Job \n \n \n ");
- stack1 = helpers['if'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "job.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "job.finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "job.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "job.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n\n \n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.formatCommit;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers['if'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatMessage;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatConfig;
- stack1 = foundHelper ? foundHelper.call(depth0, "job.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "job.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n\n ");
- stack1 = {};
- stack1['contextBinding'] = "job";
- stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.compare", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.pathFrom;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "commit.compareUrl", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.author", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "commit.authorName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.committer", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "commit.committerName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program11(depth0,data) {
-
-
- data.buffer.push("\n \n Loading \n
\n ");}
-
- stack1 = helpers['with'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/home'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "right", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "right", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/profile'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n\n\n\n");
- stack1 = helpers.view.call(depth0, "view.DecksView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n");
- stack1 = helpers.view.call(depth0, "view.WorkersView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n");
- stack1 = helpers.view.call(depth0, "view.QueuesView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n");
- stack1 = helpers.view.call(depth0, "view.LinksView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.join", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.join", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.repository", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.repository", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": Github \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.twitter", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.twitter", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": @travisci \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": travis-ci \n irc.freenode.net#travis \n \n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/simple'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/top'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push("\n Travis \n \n\n\n \n Home \n \n \n Stats \n \n \n Blog \n \n \n Docs \n \n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.github_login", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.github_login", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n Signing in \n
\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.profile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.profile", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n \n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/accounts'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n Repositories: \n ");
- stack1 = helpers._triageMustache.call(depth0, "view.content.reposCount", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
\n ");
- return buffer;}
-
- data.buffer.push("\n
\n\n\n\n\n ");
- stack1 = {};
- stack1['contentBinding'] = "controller";
- foundHelper = helpers.collection;
- stack1 = foundHelper ? foundHelper.call(depth0, "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push("");
- stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n\n");
- stack1 = helpers.view.call(depth0, "Travis.ProfileTabsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n \n ");
- return buffer;}
-
- data.buffer.push("\n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.displayUser", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "user.isSyncing", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
-
- data.buffer.push("\n \n Please wait while we sync from GitHub \n
\n ");}
-
-function program4(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n Last synchronized from GitHub: ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "user.syncedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "user.syncedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n Sync now\n \n
\n\n \n ");
- stack1 = helpers.each.call(depth0, "hook", "in", "hooks", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- return buffer;}
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n ");
- stack1 = helpers._triageMustache.call(depth0, "hook.slug", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "hook.description", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "
\n\n \n \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
-
- data.buffer.push("\n \n You do not seem to have any repositories that we could sync.\n \n ");}
-
-function program9(depth0,data) {
-
-
- data.buffer.push("\n \n Loading \n
\n");}
-
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n");
- stack1 = helpers['if'].call(depth0, "hooks.isLoaded", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push(" \n\n\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.github", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.github", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ":\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.login", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.email", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.email", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ":\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.email", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.token", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.token", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ":\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.token", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n\n\n\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['queues/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "queue", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "queue", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": ");
- stack1 = helpers._triageMustache.call(depth0, "queue.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n ");
- stack1 = helpers.each.call(depth0, "job", "in", "queue", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['jobBinding'] = "job";
- stack1 = helpers.view.call(depth0, "Travis.QueueItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "job.repository.slug", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n #");
- stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "no_job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "no_job", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
- data.buffer.push("\n");
- stack1 = helpers.each.call(depth0, "queue", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['with'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n ");
- stack1 = helpers['if'].call(depth0, "slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n ");
- stack1 = helpers['if'].call(depth0, "lastBuildId", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildDuration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "lastBuildDuration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " ,\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
\n\n
\n\n ");
- stack1 = helpers['if'].call(depth0, "description", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "lastBuildNumber", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n
");
- stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "
\n
\n ");
- return buffer;}
-
- data.buffer.push("\n ");
- stack1 = {};
- stack1['valueBinding'] = "controller.search";
- stack1 = helpers.view.call(depth0, "Ember.TextField", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n");
- stack1 = helpers.view.call(depth0, "Travis.ReposListTabsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n \n\n\n ");
- stack1 = {};
- stack1['contentBinding'] = "controller";
- foundHelper = helpers.collection;
- stack1 = foundHelper ? foundHelper.call(depth0, "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push("\n \n \n \n \n \n \n \n \n \n \n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['with'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n ");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n\n ");
- stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "
\n\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "lastBuildLanguage", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "stats.watchers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "stats.forks", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n\n ");
- stack1 = helpers.view.call(depth0, "Travis.RepoShowTabsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- stack1 = helpers.view.call(depth0, "Travis.RepoShowToolsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program4(depth0,data) {
-
-
- data.buffer.push("\n Loading \n ");}
-
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "view.repository.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.current", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.current", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program3(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " #");
- stack1 = helpers._triageMustache.call(depth0, "view.build.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program11(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.job", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " #");
- stack1 = helpers._triageMustache.call(depth0, "view.job.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
- data.buffer.push("\n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.build.id", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.job.id", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/show/tools'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contentBinding'] = "view.branches";
- stack1['selectionBinding'] = "view.branch";
- stack1['optionLabelPath'] = "content.commit.branch";
- stack1['optionValuePath'] = "content.commit.branch";
- stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program3(depth0,data) {
-
-
- data.buffer.push("\n \n ");}
-
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['sponsors/decks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers.each.call(depth0, "deck", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n \n \n \n ");
- return buffer;}
-
- data.buffer.push("");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n\n\n\n\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['sponsors/links'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n ");
- stack1 = {};
- stack1['unescaped'] = "true";
- stack1 = helpers._triageMustache.call(depth0, "link", {hash:stack1,contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- return buffer;}
-
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n\n \n\n
\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['stats/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
-
-
-
- data.buffer.push("
\n
\n\n");
-});
-
-Ember.TEMPLATES['workers/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "workers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "workers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n ");
- stack1 = helpers.each.call(depth0, "group", "in", "controller.groups", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers.view.call(depth0, "Travis.WorkersListView", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "group.firstObject.host", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- stack1 = helpers.each.call(depth0, "worker", "in", "group", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n ");
- return buffer;}
-function program4(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['workerBinding'] = "worker";
- stack1 = helpers.view.call(depth0, "Travis.WorkersItemView", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n
\n ");
- stack1 = helpers['if'].call(depth0, "worker.isWorking", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- return buffer;}
-function program6(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "worker.job_id", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program7(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n ");
- stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program11(depth0,data) {
-
-
- data.buffer.push("\n No workers\n ");}
-
- stack1 = helpers.view.call(depth0, "Travis.WorkersView", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-});minispade.register('config/locales', function() {window.I18n = window.I18n || {}
-window.I18n.translations = {"ca":{"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"}},"en":{"errors":{"messages":{"not_found":"not found","already_confirmed":"was already confirmed","not_locked":"was not locked"}},"devise":{"failure":{"unauthenticated":"You need to sign in or sign up before continuing.","unconfirmed":"You have to confirm your account before continuing.","locked":"Your account is locked.","invalid":"Invalid email or password.","invalid_token":"Invalid authentication token.","timeout":"Your session expired, please sign in again to continue.","inactive":"Your account was not activated yet."},"sessions":{"signed_in":"Signed in successfully.","signed_out":"Signed out successfully."},"passwords":{"send_instructions":"You will receive an email with instructions about how to reset your password in a few minutes.","updated":"Your password was changed successfully. You are now signed in."},"confirmations":{"send_instructions":"You will receive an email with instructions about how to confirm your account in a few minutes.","confirmed":"Your account was successfully confirmed. You are now signed in."},"registrations":{"signed_up":"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.","updated":"You updated your account successfully.","destroyed":"Bye! Your account was successfully cancelled. We hope to see you again soon."},"unlocks":{"send_instructions":"You will receive an email with instructions about how to unlock your account in a few minutes.","unlocked":"Your account was successfully unlocked. You are now signed in."},"mailer":{"confirmation_instructions":{"subject":"Confirmation instructions"},"reset_password_instructions":{"subject":"Reset password instructions"},"unlock_instructions":{"subject":"Unlock Instructions"}}},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hour","other":"%{count} hours"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} second","other":"%{count} seconds"}}},"workers":"Workers","queue":"Queue","no_job":"There are no jobs","repositories":{"branch":"Branch","image_url":"Image URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","tabs":{"current":"Current","build_history":"Build History","branches":"Branch Summary","pull_requests":"Pull Requests","build":"Build","job":"Job"}},"build":{"job":"Job","duration":"Duration","finished_at":"Finished"},"jobs":{"messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished"},"builds":{"name":"Build","messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","show_more":"Show more"},"layouts":{"top":{"home":"Home","blog":"Blog","docs":"Docs","stats":"Stats","github_login":"Sign in with Github","profile":"Profile","sign_out":"Sign Out","admin":"Admin"},"application":{"fork_me":"Fork me on Github","recent":"Recent","search":"Search","sponsers":"Sponsors","sponsors_link":"See all of our amazing sponsors →","my_repositories":"My Repositories"},"about":{"alpha":"This stuff is alpha.","messages":{"alpha":"Please do not consider this a stable service. We're still far from that! More info here. "},"join":"Join us and help!","mailing_list":"Mailing List","repository":"Repository","twitter":"Twitter"},"mobile":{"author":"Author","build":"Build","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished at","job":"Job","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.","config":"how to configure custom build options"},"messages":{"notice":"To get started, please read our Getting Started guide .\n It will only take a couple of minutes. "},"token":"Token","your_repos":"Your Repositories","update":"Update","update_locale":"Update","your_locale":"Your Locale"}},"statistics":{"index":{"count":"Count","repo_growth":"Repository Growth","total_projects":"Total Projects/Repositories","build_count":"Build Count","last_month":"last month","total_builds":"Total Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"es":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"workers":"Procesos","queue":"Cola","no_job":"No hay trabajos","repositories":{"branch":"Rama","image_url":"Imagen URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","tabs":{"current":"Actual","build_history":"Histórico","branches":"Ramas","build":"Builds","job":"Trabajo"}},"build":{"job":"Trabajo","duration":"Duración","finished_at":"Finalizado"},"jobs":{"messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","sponsored_by":"Patrocinado por"},"builds":{"name":"Build","messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado"},"layouts":{"top":{"home":"Inicio","blog":"Blog","docs":"Documentación","stats":"Estadísticas","github_login":"Iniciar sesión con Github","profile":"Perfil","sign_out":"Desconectar","admin":"Admin"},"application":{"fork_me":"Hazme un Fork en Github","recent":"Reciente","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Ver todos nuestros patrocinadores →","my_repositories":"Mis Repositorios"},"about":{"alpha":"Esto es alpha.","messages":{"alpha":"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. "},"join":"Únetenos y ayudanos!","mailing_list":"Lista de Correos","repository":"Repositorio","twitter":"Twitter"}},"profiles":{"show":{"email":"Correo electrónico","github":"Github","message":{"your_repos":" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \n Para probar varias versiones de ruby, mira","config":"como configurar tus propias opciones para el Build"},"messages":{"notice":"Para comenzar, por favor lee nuestra Guía de Inicio .\n Solo tomará unos pocos minutos. "},"token":"Token","your_repos":"Tus repositorios","update":"Actualizar","update_locale":"Actualizar","your_locale":"Tu Idioma"}},"statistics":{"index":{"count":"Número","repo_growth":"Crecimiento de Repositorios","total_projects":"Total de Proyectos/Repositorios","build_count":"Número de Builds","last_month":"mes anterior","total_builds":"Total de Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"fr":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} heure","other":"%{count} heures"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} secondes"}}},"workers":"Processus","queue":"File","no_job":"Pas de tâches","repositories":{"branch":"Branche","image_url":"Image","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","tabs":{"current":"Actuel","build_history":"Historique des tâches","branches":"Résumé des branches","build":"Construction","job":"Tâche"}},"build":{"job":"Tâche","duration":"Durée","finished_at":"Terminé"},"jobs":{"messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"builds":{"name":"Version","messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé"},"layouts":{"top":{"home":"Accueil","blog":"Blog","docs":"Documentation","stats":"Statistiques","github_login":"Connection Github","profile":"Profil","sign_out":"Déconnection","admin":"Admin"},"application":{"fork_me":"Faites un Fork sur Github","recent":"Récent","search":"Chercher","sponsers":"Sponsors","sponsors_link":"Voir tous nos extraordinaire sponsors →","my_repositories":"Mes dépôts"},"about":{"alpha":"Ceci est en alpha.","messages":{"alpha":"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici. "},"join":"Joignez-vous à nous et aidez-nous!","mailing_list":"Liste de distribution","repository":"Dépôt","twitter":"Twitter"},"mobile":{"author":"Auteur","build":"Version","build_matrix":"Matrice des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé à","job":"Tâche","log":"Journal"}},"profiles":{"show":{"github":"Github","message":{"your_repos":"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \nPour tester sur plus de versions de ruby, voir","config":"comment configurer des options de version personnalisées"},"messages":{"notice":"Pour commencer, veuillez lire notre guide de démarrage .\n Cela ne vous prendra que quelques minutes. "},"token":"Jeton","your_repos":"Vos dépôts","email":"Courriel","update":"Modifier","update_locale":"Modifier","your_locale":"Votre langue"}},"statistics":{"index":{"count":"Décompte","repo_growth":"Croissance de dépôt","total_projects":"Total des projets/dépôts","build_count":"Décompte des versions","last_month":"mois dernier","total_builds":"Total des versions"}},"admin":{"actions":{"create":"créer","created":"créé","delete":"supprimer","deleted":"supprimé","update":"mise à jour","updated":"mis à jour"},"credentials":{"log_out":"Déconnection"},"delete":{"confirmation":"Oui, je suis sure","flash_confirmation":"%{name} a été détruit avec succès"},"flash":{"error":"%{name} n'a pas pu être %{action}","noaction":"Aucune action n'a été entreprise","successful":"%{name} a réussi à %{action}"},"history":{"name":"Historique","no_activity":"Aucune activité","page_name":"Historique pour %{name}"},"list":{"add_new":"Ajouter un nouveau","delete_action":"Supprimer","delete_selected":"Supprimer la sélection","edit_action":"Modifier","search":"Rechercher","select":"Sélectionner le %{name} à modifier","select_action":"Sélectionner","show_all":"Montrer tout"},"new":{"basic_info":"Information de base","cancel":"Annuler","chosen":"%{name} choisi","chose_all":"Choisir tout","clear_all":"Déselectionner tout","many_chars":"caractères ou moins","one_char":"caractère.","optional":"Optionnel","required":"Requis","save":"Sauvegarder","save_and_add_another":"Sauvegarder et en ajouter un autre","save_and_edit":"Sauvegarder et modifier","select_choice":"Faites vos choix et cliquez"},"dashboard":{"add_new":"Ajouter un nouveau","last_used":"Dernière utilisation","model_name":"Nom du modèle","modify":"Modification","name":"Tableau de bord","pagename":"Administration du site","records":"Enregistrements","show":"Voir","ago":"plus tôt"}},"home":{"name":"accueil"},"repository":{"duration":"Durée"},"devise":{"confirmations":{"confirmed":"Votre compte a été crée avec succès. Vous être maintenant connecté.","send_instructions":"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes."},"failure":{"inactive":"Votre compte n'a pas encore été activé.","invalid":"Adresse courriel ou mot de passe invalide.","invalid_token":"Jeton d'authentification invalide.","locked":"Votre compte est bloqué.","timeout":"Votre session est expirée, veuillez vous reconnecter pour continuer.","unauthenticated":"Vous devez vous connecter ou vous enregistrer afin de continuer","unconfirmed":"Vous devez confirmer votre compte avant de continuer."},"mailer":{"confirmation_instructions":{"subject":"Instructions de confirmations"},"reset_password_instructions":{"subject":"Instruction de remise à zéro du mot de passe"},"unlock_instructions":{"subject":"Instruction de débloquage"}},"passwords":{"send_instructions":"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.","updated":"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté."},"registrations":{"destroyed":"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.","signed_up":"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.","updated":"Votre compte a été mis a jour avec succès"},"sessions":{"signed_in":"Connecté avec succès","signed_out":"Déconnecté avec succès"},"unlocks":{"send_instructions":"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.","unlocked":"Votre compte a été débloqué avec succès."}},"errors":{"messages":{"already_confirmed":"étais déja confirmé","not_found":"n'a pas été trouvé","not_locked":"n'étais pas bloqué"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"ja":{"workers":"ワーカー","queue":"キュー","no_job":"ジョブはありません","repositories":{"branch":"ブランチ","image_url":"画像URL","markdown":".md","textile":".textile","rdoc":".rdoc","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻","tabs":{"current":"最新","build_history":"ビルド履歴","branches":"ブランチまとめ","build":"ビルド","job":"ジョブ"}},"build":{"job":"ジョブ","duration":"処理時間","finished_at":"終了時刻"},"jobs":{"messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"ビルドマトリクス","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"builds":{"name":"ビルド","messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"失敗許容範囲外","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"layouts":{"about":{"alpha":"まだアルファですよ!","join":"参加してみよう!","mailing_list":"メールリスト","messages":{"alpha":"Travis-ciは安定したサービスまで後一歩!詳しくはこちら "},"repository":"リポジトリ","twitter":"ツイッター"},"application":{"fork_me":"Githubでフォークしよう","my_repositories":"マイリポジトリ","recent":"最近","search":"検索","sponsers":"スポンサー","sponsors_link":"スポンサーをもっと見る →"},"top":{"blog":"ブログ","docs":"Travisとは?","github_login":"Githubでログイン","home":"ホーム","profile":"プロフィール","sign_out":"ログアウト","stats":"統計","admin":"管理"},"mobile":{"author":"制作者","build":"ビルド","build_matrix":"ビルドマトリクス","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","job":"ジョブ","log":"ログ"}},"profiles":{"show":{"github":"Github","email":"メール","message":{"config":"詳細設定","your_repos":"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:"},"messages":{"notice":"まずはTravisのはじめ方 を参照してください。"},"token":"トークン","your_repos":"リポジトリ","update":"更新","update_locale":"更新","your_locale":"言語設定"}},"statistics":{"index":{"build_count":"ビルド数","count":"数","last_month":"先月","repo_growth":"リポジトリ","total_builds":"合計ビルド数","total_projects":"合計リポジトリ"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"nb":{"admin":{"actions":{"create":"opprett","created":"opprettet","delete":"slett","deleted":"slettet","update":"oppdater","updated":"oppdatert"},"credentials":{"log_out":"Logg ut"},"dashboard":{"add_new":"Legg til ny","ago":"siden","last_used":"Sist brukt","model_name":"Modell","modify":"Rediger","name":"Dashbord","pagename":"Nettstedsadministrasjon","records":"Oppføringer","show":"Vis"},"delete":{"confirmation":"Ja, jeg er sikker","flash_confirmation":"%{name} ble slettet"},"flash":{"error":"%{name} kunne ikke bli %{action}","noaction":"Ingen handlinger ble utført","successful":"%{name} ble %{action}"},"history":{"name":"Logg","no_activity":"Ingen aktivitet","page_name":"Logg for %{name}"},"list":{"add_new":"Legg til ny","delete_action":"Slett","delete_selected":"Slett valgte","edit_action":"Rediger","search":"Søk","select":"Velg %{name} for å redigere","select_action":"Velg","show_all":"Vis alle "},"new":{"basic_info":"Basisinformasjon","cancel":"Avbryt","chosen":"Valgt %{name}","chose_all":"Velg alle","clear_all":"Fjern alle","many_chars":"eller færre tegn.","one_char":"tegn.","optional":"Valgfri","required":"Påkrevd","save":"Lagre","save_and_add_another":"Lagre og legg til ny","save_and_edit":"Lagre og rediger","select_choice":"Kryss av for dine valg og klikk"}},"build":{"duration":"Varighet","finished_at":"Fullført","job":"Jobb"},"builds":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testen ble kjørt på en maskin sponset av"},"name":"Jobb","started_at":"Startet"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} time","other":"%{count} timer"},"minutes_exact":{"one":"%{count} minutt","other":"%{count} minutter"},"seconds_exact":{"one":"%{count} sekund","other":"%{count} sekunder"}}},"devise":{"confirmations":{"confirmed":"Din konto er aktivert og du er nå innlogget.","send_instructions":"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din."},"failure":{"inactive":"Kontoen din har ikke blitt aktivert enda.","invalid":"Ugyldig e-post eller passord.","invalid_token":"Ugyldig autentiseringskode.","locked":"Kontoen din er låst.","timeout":"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.","unauthenticated":"Du må logge inn eller registrere deg for å fortsette.","unconfirmed":"Du må bekrefte kontoen din før du kan fortsette."},"mailer":{"confirmation_instructions":{"subject":"Bekreftelsesinformasjon"},"reset_password_instructions":{"subject":"Instruksjoner for å få nytt passord"},"unlock_instructions":{"subject":"Opplåsningsinstruksjoner"}},"passwords":{"send_instructions":"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.","updated":"Passordet ditt ble endret, og du er logget inn."},"registrations":{"destroyed":"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.","signed_up":"Du er nå registrert.","updated":"Kontoen din ble oppdatert."},"sessions":{"signed_in":"Du er nå logget inn.","signed_out":"Du er nå logget ut."},"unlocks":{"send_instructions":"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.","unlocked":"Kontoen din ble låst opp, og du er nå logget inn igjen."}},"errors":{"messages":{"already_confirmed":"har allerede blitt bekreftet","not_found":"ikke funnnet","not_locked":"var ikke låst"}},"home":{"name":"hjem"},"jobs":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testserien ble kjørt på en maskin sponset av"},"started_at":"Startet"},"layouts":{"about":{"alpha":"Dette er alfa-greier.","join":"Bli med og hjelp oss!","mailing_list":"E-postliste","messages":{"alpha":"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her ."},"repository":"Kodelager","twitter":"Twitter."},"application":{"fork_me":"Se koden på Github","my_repositories":"Mine kodelagre","recent":"Nylig","search":"Søk","sponsers":"Sponsorer","sponsors_link":"Se alle de flotte sponsorene våre →"},"mobile":{"author":"Forfatter","build":"Jobb","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","job":"Jobb","log":"Logg"},"top":{"admin":"Administrator","blog":"Blogg","docs":"Dokumentasjon","github_login":"Logg inn med Github","home":"Hjem","profile":"Profil","sign_out":"Logg ut","stats":"Statistikk"}},"no_job":"Ingen jobber finnnes","profiles":{"show":{"email":"E-post","github":"Github","message":{"config":"hvordan sette opp egne jobbinnstillinger","your_repos":"Slå\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \nFor å teste mot flere ruby-versjoner, se dokumentasjonen for"},"messages":{"notice":"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. "},"token":"Kode","update":"Oppdater","update_locale":"Oppdater","your_locale":"Ditt språk","your_repos":"Dine kodelagre"}},"queue":"Kø","repositories":{"branch":"Gren","commit":"Innsender","duration":"Varighet","finished_at":"Fullført","image_url":"Bilde-URL","markdown":"Markdown","message":"Beskrivelse","rdoc":"RDOC","started_at":"Startet","tabs":{"branches":"Grensammendrag","build":"Jobb","build_history":"Jobblogg","current":"Siste","job":"Jobb"},"textile":"Textile"},"repository":{"duration":"Varighet"},"statistics":{"index":{"build_count":"Antall jobber","count":"Antall","last_month":"siste måned","repo_growth":"Vekst i kodelager","total_builds":"Totale jobber","total_projects":"Antall prosjekter/kodelagre"}},"workers":"Arbeidere","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"nl":{"admin":{"actions":{"create":"aanmaken","created":"aangemaakt","delete":"verwijderen","deleted":"verwijderd","update":"bijwerken","updated":"bijgewerkt"},"credentials":{"log_out":"Afmelden"},"dashboard":{"add_new":"Nieuwe toevoegen","ago":"geleden","last_used":"Laatst gebruikt","model_name":"Model naam","modify":"Wijzigen","pagename":"Site administratie","show":"Laten zien","records":"Gegevens"},"delete":{"confirmation":"Ja, ik ben zeker","flash_confirmation":"%{name} is vernietigd"},"flash":{"error":"%{name} kon niet worden %{action}","noaction":"Er zijn geen acties genomen","successful":"%{name} is %{action}"},"history":{"name":"Geschiedenis","no_activity":"Geen activiteit","page_name":"Geschiedenis van %{name}"},"list":{"add_new":"Nieuwe toevoegen","delete_action":"Verwijderen","delete_selected":"Verwijder geselecteerden","edit_action":"Bewerken","search":"Zoeken","select":"Selecteer %{name} om te bewerken","select_action":"Selecteer","show_all":"Laat allen zien"},"new":{"basic_info":"Basisinfo","cancel":"Annuleren","chosen":"%{name} gekozen","chose_all":"Kies allen","clear_all":"Deselecteer allen","many_chars":"tekens of minder.","one_char":"teken.","optional":"Optioneel","required":"Vereist","save":"Opslaan","save_and_add_another":"Opslaan en een nieuwe toevoegen","save_and_edit":"Opslaan en bewerken","select_choice":"Selecteer uw keuzes en klik"}},"build":{"duration":"Duur","finished_at":"Voltooid","job":"Taak"},"builds":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw Matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze tests zijn gedraaid op een machine gesponsord door"},"name":"Bouw","started_at":"Gestart","commit":"Commit","committer":"Committer"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} uur","other":"%{count} uren"},"minutes_exact":{"one":"%{count} minuut","other":"%{count} minuten"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} seconden"}}},"devise":{"confirmations":{"confirmed":"Uw account is bevestigd. U wordt nu ingelogd.","send_instructions":"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen."},"failure":{"inactive":"Uw account is nog niet geactiveerd.","invalid":"Ongeldig email adres of wachtwoord.","invalid_token":"Ongeldig authenticatie token.","locked":"Uw account is vergrendeld.","timeout":"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.","unauthenticated":"U moet inloggen of u registeren voordat u verder gaat.","unconfirmed":"U moet uw account bevestigen voordat u verder gaat."},"mailer":{"confirmation_instructions":{"subject":"Bevestigings-instructies"},"reset_password_instructions":{"subject":"Wachtwoord herstel instructies"},"unlock_instructions":{"subject":"Ontgrendel-instructies"}},"passwords":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.","updated":"Uw wachtwoord is veranderd. U wordt nu ingelogd."},"registrations":{"destroyed":"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.","signed_up":"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.","updated":"Het bijwerken van uw account is gelukt."},"sessions":{"signed_in":"Inloggen gelukt.","signed_out":"Uitloggen gelukt."},"unlocks":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.","unlocked":"Uw account is ontgrendeld. U wordt nu ingelogd."}},"errors":{"messages":{"already_confirmed":"was al bevestigd","not_found":"niet gevonden","not_locked":"was niet vergrendeld"}},"jobs":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze testen zijn uitgevoerd op een machine gesponsord door"},"started_at":"Gestart","commit":"Commit","committer":"Committer"},"layouts":{"about":{"alpha":"Dit is in alfa-stadium.","join":"Doe met ons mee en help!","mailing_list":"Mailing lijst","messages":{"alpha":"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. "},"repository":"Repository","twitter":"Twitter"},"application":{"fork_me":"Maak een fork op Github","my_repositories":"Mijn repositories","recent":"Recent","search":"Zoeken","sponsers":"Sponsors","sponsors_link":"Bekijk al onze geweldige sponsors →"},"mobile":{"author":"Auteur","build":"Bouw","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid op","job":"Taak","commit":"Commit","committer":"Committer","log":"Logboek"},"top":{"admin":"Administratie","blog":"Blog","docs":"Documentatie","github_login":"Inloggen met Github","home":"Home","profile":"Profiel","sign_out":"Uitloggen","stats":"Statistieken"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Er zijn geen taken","profiles":{"show":{"email":"Email adres","github":"Github","message":{"config":"hoe eigen bouw-opties in te stellen","your_repos":"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \nOm te testen tegen meerdere rubies, zie"},"messages":{"notice":"Om te beginnen kunt u onze startersgids lezen.\\n Het zal maar enkele minuten van uw tijd vergen. "},"update":"Bijwerken","update_locale":"Bijwerken","your_locale":"Uw taal","your_repos":"Uw repositories","token":"Token"}},"queue":"Wachtrij","repositories":{"branch":"Tak","duration":"Duur","finished_at":"Voltooid","image_url":"Afbeeldings URL","message":"Bericht","started_at":"Gestart","tabs":{"branches":"Tak samenvatting","build":"Bouw","build_history":"Bouw geschiedenis","current":"Huidig","job":"Taak"},"commit":"Commit","markdown":"Markdown","rdoc":"RDOC","textile":"Textile"},"repository":{"duration":"Duur"},"statistics":{"index":{"build_count":"Bouw aantal","count":"Aantal","last_month":"voorbije maand","repo_growth":"Repository groei","total_builds":"Bouw totaal","total_projects":"Projecten/Repository totaal"}},"workers":"Machines","home":{"name":"Hoofdpagina"}},"pl":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} godzina","other":"%{count} godziny"},"minutes_exact":{"one":"%{count} minuta","other":"%{count} minuty"},"seconds_exact":{"one":"%{count} sekunda","other":"%{count} sekundy"}}},"workers":"Workers","queue":"Kolejka","no_job":"Brak zadań","repositories":{"branch":"Gałąź","image_url":"URL obrazka","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","tabs":{"current":"Aktualny","build_history":"Historia Buildów","branches":"Wszystkie Gałęzie","build":"Build","job":"Zadanie"}},"build":{"job":"Zadanie","duration":"Czas trwania","finished_at":"Zakończono"},"jobs":{"messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Committer","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"builds":{"name":"Build","messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Komitujący","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono"},"layouts":{"top":{"home":"Start","blog":"Blog","docs":"Dokumentacja","stats":"Statystki","github_login":"Zaloguj się przy pomocy Githuba","profile":"Profil","sign_out":"Wyloguj się"},"application":{"fork_me":"Fork me on Github","recent":"Ostatnie","search":"Wyniki","sponsers":"Sponsorzy","sponsors_link":"Zobacz naszych wszystkich wspaniałych sponsorów →","my_repositories":"Moje repozytoria"},"about":{"alpha":"To wciąż jest wersja alpha.","messages":{"alpha":"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. "},"join":"Pomóż i dołącz do nas!","mailing_list":"Lista mailingowa","repository":"Repozytorium","twitter":"Twitter"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Komitujący","compare":"Porównianie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","job":"Zadanie","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz","config":"jak skonfigurować niestandardowe opcje builda"},"messages":{"notice":"Aby zacząć, przeczytaj nasz Przewodnik .\n Zajmie ci to tylko kilka minut. "},"token":"Token","your_repos":"Twoje repozytoria"}},"statistics":{"index":{"count":"Ilość","repo_growth":"Przyrost repozytoriów","total_projects":"Łącznie projektów/repozytoriów","build_count":"Liczba buildów","last_month":"ostatni miesiąc","total_builds":"Łącznie Buildów"}},"date":{"abbr_day_names":["nie","pon","wto","śro","czw","pią","sob"],"abbr_month_names":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"day_names":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"formats":{"default":"%d-%m-%Y","long":"%B %d, %Y","short":"%d %b"},"month_names":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"order":["day","month","year"]},"errors":{"format":"%{attribute} %{message}","messages":{"accepted":"musi zostać zaakceptowane","blank":"nie może być puste"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"pt-BR":{"admin":{"actions":{"create":"criar","created":"criado","delete":"deletar","deleted":"deletado","update":"atualizar","updated":"atualizado"},"credentials":{"log_out":"Deslogar"},"dashboard":{"add_new":"Adicionar novo","ago":"atrás","last_used":"Última utilização","model_name":"Nome do modelo","modify":"Modificar","name":"Dashboard","pagename":"Administração do site","records":"Registros","show":"Mostrar"},"delete":{"confirmation":"Sim, tenho certeza","flash_confirmation":"%{name} foi destruído com sucesso"},"flash":{"error":"%{name} falhou ao %{action}","noaction":"Nenhuma ação foi tomada","successful":"%{name} foi %{action} com sucesso"},"history":{"name":"Histórico","no_activity":"Nenhuma Atividade","page_name":"Histórico para %{name}"},"list":{"add_new":"Adicionar novo","delete_action":"Deletar","delete_selected":"Deletar selecionados","edit_action":"Editar","search":"Buscar","select":"Selecionar %{name} para editar","select_action":"Selecionar","show_all":"Mostrar todos"},"new":{"basic_info":"Informações básicas","cancel":"Cancelar","chosen":"Escolhido %{name}","chose_all":"Escolher todos","clear_all":"Limpar todos","many_chars":"caracteres ou menos.","one_char":"caractere.","optional":"Opcional","required":"Requerido","save":"Salvar","save_and_add_another":"Salvar e adicionar outro","save_and_edit":"Salvar e alterar","select_choice":"Selecione e clique"}},"build":{"duration":"Duração","finished_at":"Concluído em","job":"Trabalho"},"builds":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"name":"Build","started_at":"Iniciou em"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"devise":{"confirmations":{"confirmed":"Sua conta foi confirmada com sucesso. Você agora está logado.","send_instructions":"Você receberá um email com instruções de como confirmar sua conta em alguns minutos."},"failure":{"inactive":"Sua conta ainda não foi ativada.","invalid":"Email ou senha inválidos.","invalid_token":"Token de autenticação inválido.","locked":"Sua conta está trancada.","timeout":"Sua sessão expirou, por favor faça seu login novamente.","unauthenticated":"Você precisa fazer o login ou cadastrar-se antes de continuar.","unconfirmed":"Você precisa confirmar sua conta antes de continuar."},"mailer":{"confirmation_instructions":{"subject":"Instruções de confirmação"},"reset_password_instructions":{"subject":"Instruções de atualização de senha"},"unlock_instructions":{"subject":"Instruções de destrancamento"}},"passwords":{"send_instructions":"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.","updated":"Sua senha foi alterada com sucesso. Você agora está logado."},"registrations":{"destroyed":"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!","signed_up":"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.","updated":"Você atualizou sua conta com sucesso."},"sessions":{"signed_in":"Logado com sucesso.","signed_out":"Deslogado com sucesso."},"unlocks":{"send_instructions":"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.","unlocked":"Sua conta foi destrancada com sucesso. Você agora está logado."}},"errors":{"messages":{"already_confirmed":"já foi confirmado","not_found":"não encontrado","not_locked":"não estava trancado"}},"home":{"name":"home"},"jobs":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"started_at":"Iniciou em"},"layouts":{"about":{"alpha":"Isto é um alpha.","join":"Junte-se à nós e ajude!","mailing_list":"Lista de email","messages":{"alpha":"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. "},"repository":"Repositório","twitter":"Twitter"},"application":{"fork_me":"Faça fork no Github","my_repositories":"Meus Repositórios","recent":"Recentes","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Conheça todos os nossos patrocinadores →"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","job":"Trabalho","log":"Log"},"top":{"admin":"Admin","blog":"Blog","docs":"Documentação","github_login":"Logue com o Github","home":"Home","profile":"Perfil","sign_out":"Sair","stats":"Estatísticas"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Não há trabalhos","profiles":{"show":{"email":"Email","github":"Github","message":{"config":"como configurar opções de build","your_repos":"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia"},"messages":{"notice":"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. "},"token":"Token","update":"Atualizar","update_locale":"Atualizar","your_locale":"Sua língua","your_repos":"Seus Repositórios"}},"queue":"Fila","repositories":{"branch":"Branch","commit":"Commit","duration":"Duração","finished_at":"Concluído em","image_url":"URL da imagem","markdown":"Markdown","message":"Mensagem","rdoc":"RDOC","started_at":"Iniciou em","tabs":{"branches":"Sumário do Branch","build":"Build","build_history":"Histórico de Build","current":"Atual","job":"Trabalho"},"textile":"Textile"},"repository":{"duration":"Duração"},"statistics":{"index":{"build_count":"Número de Builds","count":"Número","last_month":"último mês","repo_growth":"Crescimento de Repositório","total_builds":"Total de Builds","total_projects":"Total de Projetos/Repositórios"}},"workers":"Processos"},"ru":{"admin":{"actions":{"create":"создать","created":"создано","delete":"удалить","deleted":"удалено","update":"обновить","updated":"обновлено"},"credentials":{"log_out":"Выход"},"dashboard":{"add_new":"Добавить","ago":"назад","last_used":"Использовалось в последний раз","model_name":"Имя модели","modify":"Изменить","name":"Панель управления","pagename":"Управление сайтом","records":"Записи","show":"Показать"},"delete":{"confirmation":"Да, я уверен","flash_confirmation":"%{name} успешно удалено"},"history":{"name":"История","no_activity":"Нет активности","page_name":"История %{name}"},"list":{"add_new":"Добавить","delete_action":"Удалить","delete_selected":"Удалить выбранные","edit_action":"Редактировать","search":"Поиск","select":"Для редактирования выберите %{name}","select_action":"Выбрать","show_all":"Показать все"},"new":{"basic_info":"Основная информация","cancel":"Отмена","chosen":"Выбрано %{name}","chose_all":"Выбрать все","clear_all":"Очистить все","one_char":"символ.","optional":"Необязательно","required":"Обязательно","save":"Сохранить","save_and_add_another":"Сохранить и добавить другое","save_and_edit":"Сохранить и продолжить редактирование","select_choice":"Выберите и кликните","many_chars":"символов или меньше."},"flash":{"error":"%{name} не удалось %{action}","noaction":"Никаких действий не произведено","successful":"%{name} было успешно %{action}"}},"build":{"duration":"Длительность","finished_at":"Завершен","job":"Задача"},"builds":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Дифф","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине, спонсируемой"},"name":"Билд","started_at":"Начало"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} час","few":"%{count} часа","many":"%{count} часов","other":"%{count} часа"},"minutes_exact":{"one":"%{count} минута","few":"%{count} минуты","many":"%{count} минут","other":"%{count} минуты"},"seconds_exact":{"one":"%{count} секунда","few":"%{count} секунды","many":"%{count} секунд","other":"%{count} секунды"}}},"devise":{"confirmations":{"confirmed":"Ваш аккаунт успешно подтвержден. Приветствуем!","send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта."},"failure":{"inactive":"Ваш аккаунт еще не активирован.","invalid":"Ошибка в адресе почты или пароле.","invalid_token":"Неправильный токен аутентификации.","locked":"Ваш аккаунт заблокирован.","timeout":"Сессия окончена. Для продолжения работы войдите снова.","unauthenticated":"Вам нужно войти или зарегистрироваться.","unconfirmed":"Вы должны сначала подтвердить свой аккаунт."},"mailer":{"confirmation_instructions":{"subject":"Инструкции для подтверждению аккаунта"},"reset_password_instructions":{"subject":"Инструкции для сброса пароля"},"unlock_instructions":{"subject":"Инструкции для разблокирования аккаунта"}},"passwords":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.","updated":"Ваш пароль успешно изменен. Приветствуем!"},"registrations":{"destroyed":"Ваш аккаунт был успешно удален. Живите долго и процветайте!","signed_up":"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.","updated":"Аккаунт успешно обновлен."},"sessions":{"signed_in":"Приветствуем!","signed_out":"Удачи!"},"unlocks":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.","unlocked":"Ваш аккаунт успешно разблокирован. Приветствуем!"}},"errors":{"messages":{"already_confirmed":"уже подтвержден","not_found":"не найден","not_locked":"не заблокирован"}},"home":{"name":"Главная"},"jobs":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине спонсируемой"},"started_at":"Начало"},"layouts":{"about":{"alpha":"Это альфа-версия","join":"Присоединяйтесь к нам и помогайте!","mailing_list":"Лист рассылки","messages":{"alpha":"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности "},"repository":"Репозиторий","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"Мои репозитории","recent":"Недавние","search":"Поиск","sponsers":"Спонсоры","sponsors_link":"Список всех наших замечательных спонсоров →"},"mobile":{"author":"Автор","build":"Сборка","build_matrix":"Матрица сборок","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","job":"Задача","log":"Журнал"},"top":{"admin":"Управление","blog":"Блог","docs":"Документация","github_login":"Войти через Github","home":"Главная","profile":"Профиль","sign_out":"Выход","stats":"Статистика"}},"no_job":"Очередь пуста","profiles":{"show":{"email":"Электронная почта","github":"Github","message":{"config":"как настроить специальные опции билда","your_repos":"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \nДля тестирования на нескольких версиях Ruby смотрите"},"messages":{"notice":"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. "},"token":"Токен","update":"Обновить","update_locale":"Обновить","your_locale":"Ваш язык","your_repos":"Ваши репозитории"}},"queue":"Очередь","repositories":{"branch":"Ветка","commit":"Коммит","duration":"Длительность","finished_at":"Завершен","image_url":"URL изображения","markdown":"Markdown","message":"Комментарий","rdoc":"RDOC","started_at":"Начало","tabs":{"branches":"Статус веток","build":"Билд","build_history":"История","current":"Текущий","job":"Задача"},"textile":"Textile"},"repository":{"duration":"Длительность"},"statistics":{"index":{"build_count":"Количество билдов","count":"Количество","last_month":"прошлый месяц","repo_growth":"Рост числа репозиториев","total_builds":"Всего билдов","total_projects":"Всего проектов/репозиториев"}},"workers":"Машины","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}}};
-
-
-});minispade.register('ext/ember/bound_helper', function() {// https://gist.github.com/2018185
-// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js
-var BoundHelperView = Ember.View.extend(Ember._Metamorph, {
-
- context: null,
- options: null,
- property: null,
- // paths of the property that are also observed
- propertyPaths: [],
-
- value: Ember.K,
-
- valueForRender: function() {
- var value = this.value(Ember.get(this.context, this.property), this.options);
- if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }
- return value;
- },
-
- render: function(buffer) {
- buffer.push(this.valueForRender());
- },
-
- valueDidChange: function() {
- if (this.morph.isRemoved()) { return; }
- this.morph.html(this.valueForRender());
- },
-
- didInsertElement: function() {
- this.valueDidChange();
- },
-
- init: function() {
- this._super();
- Ember.addObserver(this.context, this.property, this, 'valueDidChange');
- this.get('propertyPaths').forEach(function(propName) {
- Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');
- }, this);
- },
-
- destroy: function() {
- Ember.removeObserver(this.context, this.property, this, 'valueDidChange');
- this.get('propertyPaths').forEach(function(propName) {
- this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');
- }, this);
- this._super();
- }
-
-});
-
-Ember.registerBoundHelper = function(name, func) {
- var propertyPaths = Array.prototype.slice.call(arguments, 2);
- Ember.Handlebars.registerHelper(name, function(property, options) {
- var data = options.data,
- view = data.view,
- ctx = this;
-
- var bindView = view.createChildView(BoundHelperView, {
- property: property,
- propertyPaths: propertyPaths,
- context: ctx,
- options: options.hash,
- value: func
- });
-
- view.appendChild(bindView);
- });
-};
-
-
-});minispade.register('ext/ember/namespace', function() {Em.Namespace.reopen = Em.Namespace.reopenClass
-
-
-
-});
\ No newline at end of file
+;minispade.register('app', "(function() {(function() {\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n autoinit: false,\n currentUserBinding: 'auth.user',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n app: this,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher(Travis.config.pusher);\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.get('router').send('showRoot');\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $(' ');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $(' ');\n $('#repo').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('').hide(),\n timeout: 5000,\n state: 'signed-out',\n receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n init: function() {\n var _this = this;\n this.iframe.appendTo('body');\n window.addEventListener('message', function(e) {\n return _this.receiveMessage(e);\n });\n return this.loadUser();\n },\n accessToken: (function() {\n return sessionStorage.getItem('travis.token');\n }).property(),\n loadUser: function() {\n var user;\n if (user = sessionStorage.getItem('travis.user')) {\n return this.setData({\n user: JSON.parse(user)\n });\n } else if (localStorage.getItem('travis.auto_signin')) {\n return this.trySignIn();\n }\n },\n signIn: function() {\n this.set('state', 'signing-in');\n this.trySignIn();\n return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n },\n trySignIn: function() {\n return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n },\n checkSignIn: function() {\n if (this.get('state') === 'signing-in') {\n return this.forceSignIn();\n }\n },\n forceSignIn: function() {\n localStorage.setItem('travis.auto_signin', 'true');\n return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n },\n signOut: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.clear();\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.clear();\n }\n return this.setData();\n },\n setData: function(data) {\n var user;\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n if (data != null ? data.token : void 0) {\n this.storeToken(data.token);\n }\n if (data != null ? data.user : void 0) {\n user = this.storeUser(data.user);\n }\n this.set('state', user ? 'signed-in' : 'signed-out');\n this.set('user', user ? user : void 0);\n if (this.app.get('router')) {\n return this.app.get('router').transitionTo('authenticated');\n }\n },\n storeToken: function(token) {\n sessionStorage.setItem('travis.token', token);\n return this.notifyPropertyChange('accessToken');\n },\n storeUser: function(user) {\n localStorage.setItem('travis.auto_signin', 'true');\n sessionStorage.setItem('travis.user', JSON.stringify(user));\n this.app.store.load(Travis.User, user);\n return this.app.store.find(Travis.User, user.id);\n },\n receiveMessage: function(event) {\n if (event.origin === this.expectedOrigin()) {\n this.setData(event.data);\n return console.log(\"signed in as \" + event.data.user.login);\n } else {\n return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n }\n },\n expectedOrigin: function() {\n if (this.endpoint[0] === '/') {\n return this.receivingEnd;\n } else {\n return this.endpoint;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth");minispade.register('controllers', "(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n Travis.reopen({\n Controller: Em.Controller.extend({\n connectOutlet: function() {\n var view, _connectedOutletViews;\n view = this._super.apply(this, arguments);\n if (view) {\n _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n if (!_connectedOutletViews) {\n _connectedOutletViews = [];\n }\n _connectedOutletViews.pushObject(view);\n Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n }\n return view;\n }\n }),\n TopController: Em.Controller.extend({\n userBinding: 'Travis.app.currentUser'\n }),\n ApplicationController: Em.Controller.extend(),\n MainController: Em.Controller.extend(),\n StatsLayoutController: Em.Controller.extend(),\n ProfileLayoutController: Em.Controller.extend(),\n AuthLayoutController: Em.Controller.extend()\n });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repos');\nminispade.require('controllers/repo');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers");minispade.register('controllers/accounts', "(function() {(function() {\n\n Travis.AccountsController = Ember.ArrayController.extend({\n tab: 'accounts',\n init: function() {\n return this._super();\n },\n findByLogin: function(login) {\n return this.find(function(account) {\n return account.get('login') === 'login';\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts");minispade.register('controllers/builds', "(function() {(function() {\n\n Travis.BuildsController = Em.ArrayController.extend({\n repo: 'parent.repo',\n contentBinding: 'parent.builds'\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds");minispade.register('controllers/home', "(function() {(function() {\n\n Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home");minispade.register('controllers/job', "(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job");minispade.register('controllers/profile', "(function() {(function() {\n\n Travis.ProfileController = Travis.Controller.extend({\n name: 'profile',\n userBinding: 'Travis.app.currentUser',\n accountsBinding: 'Travis.app.router.accountsController',\n account: (function() {\n var login;\n login = this.get('params.login') || Travis.app.get('currentUser.login');\n return this.get('accounts').filter(function(account) {\n if (account.get('login') === login) {\n return account;\n }\n })[0];\n }).property('accounts.length', 'params.login'),\n activate: function(action, params) {\n this.setParams(params || this.get('params'));\n return this[\"view\" + ($.camelize(action))]();\n },\n viewHooks: function() {\n this.connectTab('hooks');\n return this.set('hooks', Travis.Hook.find({\n owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n }));\n },\n viewUser: function() {\n return this.connectTab('user');\n },\n connectTab: function(tab) {\n var viewClass;\n viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n setParams: function(params) {\n var key, value, _results;\n this.set('params', {});\n _results = [];\n for (key in params) {\n value = params[key];\n _results.push(this.set(\"params.\" + key, params[key]));\n }\n return _results;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile");minispade.register('controllers/repo', "(function() {(function() {\n\n Travis.RepoController = Travis.Controller.extend({\n bindings: [],\n init: function() {\n this._super.apply(this, arguments);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var build, builds;\n if (builds = this.get('builds')) {\n builds.forEach(function(b) {\n return b.updateTimes();\n });\n }\n if (build = this.get('build')) {\n build.updateTimes();\n build.get('jobs').forEach(function(j) {\n return j.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(action) {\n this._unbind();\n return this[\"view\" + ($.camelize(action))]();\n },\n viewIndex: function() {\n this._bind('repo', 'controllers.reposController.firstObject');\n this._bind('build', 'repo.lastBuild');\n return this.connectTab('current');\n },\n viewCurrent: function() {\n this.connectTab('current');\n return this._bind('build', 'repo.lastBuild');\n },\n viewBuilds: function() {\n this.connectTab('builds');\n return this._bind('builds', 'repo.builds');\n },\n viewPullRequests: function() {\n this.connectTab('pull_requests');\n return this._bind('builds', 'repo.pullRequests');\n },\n viewBranches: function() {\n this.connectTab('branches');\n return this._bind('builds', 'repo.branches');\n },\n viewBuild: function() {\n return this.connectTab('build');\n },\n viewJob: function() {\n this._bind('build', 'job.build');\n return this.connectTab('job');\n },\n repoObserver: (function() {\n var repo;\n repo = this.get('repo');\n if (repo) {\n return repo.select();\n }\n }).observes('repo.id'),\n connectTab: function(tab) {\n var name, viewClass;\n name = tab === 'current' ? 'build' : tab;\n viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n _bind: function(to, from) {\n return this.bindings.push(Ember.oneWay(this, to, from));\n },\n _unbind: function() {\n var binding, _i, _len, _ref;\n _ref = this.bindings;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n binding = _ref[_i];\n binding.disconnect(this);\n }\n return this.bindings.length = 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repo");minispade.register('controllers/repos', "(function() {(function() {\n\n Travis.ReposController = Ember.ArrayController.extend({\n defaultTab: 'recent',\n sortProperties: ['sortOrder'],\n init: function() {\n this.activate(this.defaultTab);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var content;\n if (content = this.get('content')) {\n content.forEach(function(r) {\n return r.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(tab, params) {\n this.set('tab', tab);\n return this[\"view\" + ($.camelize(tab))](params);\n },\n viewRecent: function() {\n return this.set('content', Travis.Repo.find());\n },\n viewOwned: function() {\n return this.set('content', Travis.Repo.ownedBy(Travis.app.get('currentUser.login')));\n },\n viewSearch: function(params) {\n return this.set('content', Travis.Repo.search(params.search));\n },\n searchObserver: (function() {\n var search, tab;\n search = this.get('search');\n tab = search ? 'search' : 'recent';\n return this.activate(tab, {\n search: search\n });\n }).observes('search')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repos");minispade.register('controllers/sidebar', "(function() {(function() {\n\n Travis.reopen({\n SidebarController: Em.ArrayController.extend({\n init: function() {\n this.tickables = [];\n return Travis.Ticker.create({\n target: this,\n interval: Travis.INTERVALS.sponsors\n });\n },\n tick: function() {\n var tickable, _i, _len, _ref, _results;\n _ref = this.tickables;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n tickable = _ref[_i];\n _results.push(tickable.tick());\n }\n return _results;\n }\n }),\n QueuesController: Em.ArrayController.extend(),\n WorkersController: Em.ArrayController.extend({\n groups: (function() {\n var content, groups, host, worker, _i, _len, _ref;\n if (content = this.get('content')) {\n groups = {};\n _ref = content.toArray();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n worker = _ref[_i];\n host = worker.get('host');\n if (!groups[host]) {\n groups[host] = Em.ArrayProxy.create({\n content: []\n });\n }\n groups[host].pushObject(worker);\n }\n return $.values(groups);\n }\n }).property('content.length')\n }),\n SponsorsController: Em.ArrayController.extend({\n page: 0,\n arrangedContent: (function() {\n return this.get('shuffled').slice(this.start(), this.end());\n }).property('shuffled.length', 'page'),\n shuffled: (function() {\n var content;\n if (content = this.get('content')) {\n return $.shuffle(content);\n } else {\n return [];\n }\n }).property('content.length'),\n tick: function() {\n return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n },\n pages: (function() {\n var length;\n length = this.get('content.length');\n if (length) {\n return parseInt(length / this.get('perPage') + 1);\n } else {\n return 1;\n }\n }).property('length'),\n isLast: function() {\n return this.get('page') === this.get('pages') - 1;\n },\n start: function() {\n return this.get('page') * this.get('perPage');\n },\n end: function() {\n return this.start() + this.get('perPage');\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar");minispade.register('controllers/stats', "(function() {(function() {\n\n Travis.StatsController = Travis.Controller.extend({\n name: 'stats',\n init: function() {\n return this._super('top');\n },\n activate: function(action, params) {}\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats");minispade.register('helpers', "(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers");minispade.register('helpers/handlebars', "(function() {(function() {\n var safe;\nminispade.require('ext/ember/bound_helper');\n\n safe = function(string) {\n return new Handlebars.SafeString(string);\n };\n\n Handlebars.registerHelper('tipsy', function(text, tip) {\n return safe('' + text + ' ');\n });\n\n Handlebars.registerHelper('t', function(key) {\n return safe(I18n.t(key));\n });\n\n Ember.registerBoundHelper('formatTime', function(value, options) {\n return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n });\n\n Ember.registerBoundHelper('formatDuration', function(duration, options) {\n return safe(Travis.Helpers.timeInWords(duration));\n });\n\n Ember.registerBoundHelper('formatCommit', function(commit, options) {\n if (commit) {\n return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n }\n });\n\n Ember.registerBoundHelper('formatSha', function(sha, options) {\n return safe(Travis.Helpers.formatSha(sha));\n });\n\n Ember.registerBoundHelper('pathFrom', function(url, options) {\n return safe(Travis.Helpers.pathFrom(url));\n });\n\n Ember.registerBoundHelper('formatMessage', function(message, options) {\n return safe(Travis.Helpers.formatMessage(message, options));\n });\n\n Ember.registerBoundHelper('formatConfig', function(config, options) {\n return safe(Travis.Helpers.formatConfig(config));\n });\n\n Ember.registerBoundHelper('formatLog', function(log, options) {\n return Travis.Helpers.formatLog(log) || '';\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars");minispade.register('helpers/helpers', "(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n this.Travis.Helpers = {\n compact: function(object) {\n var key, result, value, _ref;\n result = {};\n _ref = object || {};\n for (key in _ref) {\n value = _ref[key];\n if (!$.isEmpty(value)) {\n result[key] = value;\n }\n }\n return result;\n },\n safe: function(string) {\n return new Handlebars.SafeString(string);\n },\n colorForResult: function(result) {\n if (result === 0) {\n return 'green';\n } else {\n if (result === 1) {\n return 'red';\n } else {\n return null;\n }\n }\n },\n formatCommit: function(sha, branch) {\n return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n },\n formatSha: function(sha) {\n return (sha || '').substr(0, 7);\n },\n formatConfig: function(config) {\n var values;\n config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n values = $.map(config, function(value, key) {\n value = (value && value.join ? value.join(', ') : value) || '';\n return '%@: %@'.fmt($.camelize(key), value);\n });\n if (values.length === 0) {\n return '-';\n } else {\n return values.join(', ');\n }\n },\n formatMessage: function(message, options) {\n message = message || '';\n if (options.short) {\n message = message.split(/\\n/)[0];\n }\n return this._emojize(this._escape(message)).replace(/\\n/g, ' ');\n },\n formatLog: function(log) {\n return Travis.Log.filter(log);\n },\n pathFrom: function(url) {\n return (url || '').split('/').pop();\n },\n timeAgoInWords: function(date) {\n return $.timeago.distanceInWords(date);\n },\n durationFrom: function(started, finished) {\n started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n if (started && finished) {\n return Math.round((finished - started) / 1000);\n } else {\n return 0;\n }\n },\n timeInWords: function(duration) {\n var days, hours, minutes, result, seconds;\n days = Math.floor(duration / 86400);\n hours = Math.floor(duration % 86400 / 3600);\n minutes = Math.floor(duration % 3600 / 60);\n seconds = duration % 60;\n if (days > 0) {\n return 'more than 24 hrs';\n } else {\n result = [];\n if (hours === 1) {\n result.push(hours + ' hr');\n }\n if (hours > 1) {\n result.push(hours + ' hrs');\n }\n if (minutes > 0) {\n result.push(minutes + ' min');\n }\n if (seconds > 0) {\n result.push(seconds + ' sec');\n }\n if (result.length > 0) {\n return result.join(' ');\n } else {\n return '-';\n }\n }\n },\n _normalizeDateString: function(string) {\n if (window.JHW) {\n string = string.replace('T', ' ').replace(/-/g, '/');\n string = string.replace('Z', '').replace(/\\..*$/, '');\n }\n return string;\n },\n _nowUtc: function() {\n return this._toUtc(new Date());\n },\n _toUtc: function(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n },\n _emojize: function(text) {\n var emojis;\n emojis = text.match(/:\\S+?:/g);\n if (emojis !== null) {\n $.each(emojis.uniq(), function(ix, emoji) {\n var image, strippedEmoji;\n strippedEmoji = emoji.substring(1, emoji.length - 1);\n if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n image = ' ';\n return text = text.replace(new RegExp(emoji, 'g'), image);\n }\n });\n }\n return text;\n },\n _escape: function(text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers");minispade.register('helpers/urls', "(function() {(function() {\n\n this.Travis.Urls = {\n repo: function(slug) {\n return \"/\" + slug;\n },\n builds: function(slug) {\n return \"/\" + slug + \"/builds\";\n },\n pullRequests: function(slug) {\n return \"/\" + slug + \"/pull_requests\";\n },\n branches: function(slug) {\n return \"/\" + slug + \"/branches\";\n },\n build: function(slug, id) {\n return \"/\" + slug + \"/builds/\" + id;\n },\n job: function(slug, id) {\n return \"/\" + slug + \"/jobs/\" + id;\n },\n githubCommit: function(slug, sha) {\n return \"http://github.com/\" + slug + \"/commit/\" + sha;\n },\n githubRepo: function(slug) {\n return \"http://github.com/\" + slug;\n },\n githubWatchers: function(slug) {\n return \"http://github.com/\" + slug + \"/watchers\";\n },\n githubNetwork: function(slug) {\n return \"http://github.com/\" + slug + \"/network\";\n },\n githubAdmin: function(slug) {\n return \"http://github.com/\" + slug + \"/admin/hooks#travis_minibucket\";\n },\n statusImage: function(slug, branch) {\n return (\"https://secure.travis-ci.org/\" + slug + \".png\") + (branch ? \"?branch=\" + branch : '');\n },\n email: function(email) {\n return \"mailto:\" + email;\n },\n account: function(login) {\n return \"/profile/\" + login;\n },\n user: function(login) {\n return \"/profile/\" + login + \"/me\";\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls");minispade.register('models', "(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repo');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models");minispade.register('models/account', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Account = Travis.Model.extend({\n primaryKey: 'login',\n login: DS.attr('string'),\n name: DS.attr('string'),\n type: DS.attr('string'),\n reposCount: DS.attr('number'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('login'));\n }).property()\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account");minispade.register('models/artifact', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Artifact = Travis.Model.extend({\n body: DS.attr('string'),\n init: function() {\n this._super.apply(this, arguments);\n return this.set('queue', Ember.A([]));\n },\n append: function(body) {\n if (this.get('isLoaded')) {\n return this.set('body', this.get('body') + body);\n } else {\n return this.get('queue').pushObject(body);\n }\n },\n recordDidLoad: (function() {\n var queue;\n if (this.get('isLoaded')) {\n queue = this.get('queue');\n if (queue.get('length') > 0) {\n return this.append(queue.toArray().join(''));\n }\n }\n }).observes('isLoaded')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact");minispade.register('models/branch', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n repoId: DS.attr('number', {\n key: 'repository_id'\n }),\n commitId: DS.attr('number'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n duration: DS.attr('number'),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n commit: DS.belongsTo('Travis.Commit'),\n repo: (function() {\n if (this.get('repoId')) {\n return Travis.Repo.find(this.get('repoId'));\n }\n }).property('repoId'),\n updateTimes: function() {\n this.notifyPropertyChange('started_at');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n this.Travis.Branch.reopenClass({\n byRepoId: function(id) {\n return this.find({\n repository_id: id\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch");minispade.register('models/build', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n eventType: DS.attr('string'),\n repoId: DS.attr('number'),\n commitId: DS.attr('number'),\n state: DS.attr('string'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string', {\n key: 'started_at'\n }),\n finishedAt: DS.attr('string', {\n key: 'finished_at'\n }),\n repo: DS.belongsTo('Travis.Repo'),\n commit: DS.belongsTo('Travis.Commit'),\n jobs: DS.hasMany('Travis.Job', {\n key: 'job_ids'\n }),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n isMatrix: (function() {\n return this.get('data.job_ids.length') > 1;\n }).property('data.job_ids.length'),\n requiredJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return !data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n allowedFailureJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n configKeys: (function() {\n var config, headers, key, keys;\n if (!(config = this.get('config'))) {\n return [];\n }\n keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n headers = (function() {\n var _i, _len, _ref, _results;\n _ref = ['build.job', 'build.duration', 'build.finished_at'];\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n key = _ref[_i];\n _results.push(I18n.t(key));\n }\n return _results;\n })();\n return $.map(headers.concat(keys), function(key) {\n return $.camelize(key);\n });\n }).property('config')\n });\n\n this.Travis.Build.reopenClass({\n byRepoId: function(id, parameters) {\n return this.find($.extend(parameters || {}, {\n repository_id: id\n }));\n },\n olderThanNumber: function(id, build_number) {\n return this.find({\n url: \"/builds\",\n repository_id: id,\n after_number: build_number\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build");minispade.register('models/commit', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Commit = Travis.Model.extend({\n buildId: DS.attr('number'),\n sha: DS.attr('string'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n compareUrl: DS.attr('string'),\n authorName: DS.attr('string'),\n authorEmail: DS.attr('string'),\n committerName: DS.attr('string'),\n committerEmail: DS.attr('string'),\n build: DS.belongsTo('Travis.Build', {\n key: 'buildId'\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit");minispade.register('models/extensions', "(function() {(function() {\n\n Travis.DurationCalculations = Ember.Mixin.create({\n duration: (function() {\n var duration;\n if (duration = this.get('_duration')) {\n return duration;\n } else {\n return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n }\n }).property('_duration', 'finishedAt', 'startedAt'),\n updateTimes: function() {\n this.notifyPropertyChange('_duration');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions");minispade.register('models/hook', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Hook = Travis.Model.extend({\n name: DS.attr('string'),\n ownerName: DS.attr('string'),\n description: DS.attr('string'),\n active: DS.attr('boolean'),\n account: (function() {\n return this.get('slug').split('/')[0];\n }).property('slug'),\n slug: (function() {\n return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n }).property('ownerName', 'name'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('slug'));\n }).property(),\n urlGithubAdmin: (function() {\n return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n }).property(),\n toggle: function() {\n var transaction;\n transaction = this.get('store').transaction();\n transaction.add(this);\n this.set('active', !this.get('active'));\n return transaction.commit();\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook");minispade.register('models/job', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n repoId: DS.attr('number', {\n key: 'repository_id'\n }),\n buildId: DS.attr('number'),\n commitId: DS.attr('number'),\n logId: DS.attr('number'),\n queue: DS.attr('string'),\n state: DS.attr('string'),\n number: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n allowFailure: DS.attr('boolean', {\n key: 'allow_failure'\n }),\n repo: DS.belongsTo('Travis.Repo', {\n key: 'repository_id'\n }),\n build: DS.belongsTo('Travis.Build', {\n key: 'build_id'\n }),\n commit: DS.belongsTo('Travis.Commit', {\n key: 'commit_id'\n }),\n log: DS.belongsTo('Travis.Artifact', {\n key: 'log_id'\n }),\n isQueued: (function() {}).property('state'),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n sponsor: (function() {\n return this.get('data.sponsor');\n }).property('data.sponsor'),\n configValues: (function() {\n var config;\n if (config = this.get('config')) {\n return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n } else {\n return [];\n }\n }).property('config'),\n appendLog: function(text) {\n var log;\n if (log = this.get('log')) {\n return log.append(text);\n }\n },\n subscribe: function() {\n var id;\n if (id = this.get('id')) {\n return Travis.app.pusher.subscribe(\"job-\" + id);\n }\n },\n onStateChange: (function() {\n if (this.get('state') === 'finished') {\n return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n }\n }).observes('state')\n });\n\n this.Travis.Job.reopenClass({\n queued: function(queue) {\n this.find();\n return Travis.app.store.filter(this, function(job) {\n var queued;\n queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n return queued && job.get('queue') === (\"builds.\" + queue);\n });\n },\n findMany: function(ids) {\n return Travis.app.store.findMany(this, ids);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job");minispade.register('models/repo', "(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n this.Travis.Repo = Travis.Model.extend({\n slug: DS.attr('string'),\n description: DS.attr('string'),\n lastBuildId: DS.attr('number'),\n lastBuildNumber: DS.attr('string'),\n lastBuildResult: DS.attr('number'),\n lastBuildStartedAt: DS.attr('string'),\n lastBuildFinishedAt: DS.attr('string'),\n lastBuild: DS.belongsTo('Travis.Build'),\n builds: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepoId(id, {\n event_type: 'push'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n pullRequests: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepoId(id, {\n event_type: 'pull_request'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n branches: (function() {\n return Travis.Branch.byRepoId(this.get('id'));\n }).property(),\n owner: (function() {\n return (this.get('slug') || '').split('/')[0];\n }).property('slug'),\n name: (function() {\n return (this.get('slug') || '').split('/')[1];\n }).property('slug'),\n lastBuildDuration: (function() {\n var duration;\n duration = this.get('data.last_build_duration');\n if (!duration) {\n duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n }\n return duration;\n }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n sortOrder: (function() {\n var lastBuildFinishedAt;\n if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n return -new Date(lastBuildFinishedAt).getTime();\n } else {\n return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n }\n }).property('lastBuildFinishedAt', 'lastBuildId'),\n stats: (function() {\n var _this = this;\n return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n _this.set('_stats', data);\n return _this.notifyPropertyChange('stats');\n }) && {};\n }).property(),\n select: function() {\n return Travis.Repo.select(this.get('id'));\n },\n updateTimes: function() {\n return this.notifyPropertyChange('lastBuildDuration');\n }\n });\n\n this.Travis.Repo.reopenClass({\n url: 'repositories',\n recent: function() {\n return this.find();\n },\n ownedBy: function(login) {\n return this.find({\n owner_name: login,\n orderBy: 'name'\n });\n },\n search: function(query) {\n return this.find({\n search: query,\n orderBy: 'name'\n });\n },\n bySlug: function(slug) {\n var repo;\n repo = $.select(this.find().toArray(), function(repo) {\n return repo.get('slug') === slug;\n });\n if (repo.length > 0) {\n return repo;\n } else {\n return this.find({\n slug: slug\n });\n }\n },\n select: function(id) {\n return this.find().forEach(function(repo) {\n return repo.set('selected', repo.get('id') === id);\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repo");minispade.register('models/sponsor', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Sponsor = Travis.Model.extend({\n type: DS.attr('string'),\n url: DS.attr('string'),\n link: DS.attr('string'),\n image: (function() {\n return \"/images/sponsors/\" + (this.get('data.image'));\n }).property('data.image')\n });\n\n Travis.Sponsor.reopenClass({\n decks: function() {\n return this.platinum().concat(this.gold());\n },\n platinum: function() {\n var platinum, sponsor, _i, _len, _results;\n platinum = this.byType('platinum').toArray();\n _results = [];\n for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n sponsor = platinum[_i];\n _results.push([sponsor]);\n }\n return _results;\n },\n gold: function() {\n var gold, _results;\n gold = this.byType('gold').toArray();\n _results = [];\n while (gold.length > 0) {\n _results.push(gold.splice(0, 2));\n }\n return _results;\n },\n links: function() {\n return this.byType('silver');\n },\n byType: function() {\n var types;\n types = Array.prototype.slice.apply(arguments);\n return Travis.Sponsor.filter(function(sponsor) {\n return types.indexOf(sponsor.get('type')) !== -1;\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor");minispade.register('models/user', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n name: DS.attr('string'),\n email: DS.attr('string'),\n login: DS.attr('string'),\n token: DS.attr('string'),\n locale: DS.attr('string'),\n gravatarId: DS.attr('string'),\n isSyncing: DS.attr('boolean'),\n syncedAt: DS.attr('string'),\n repoCount: DS.attr('number'),\n init: function() {\n if (this.get('isSyncing')) {\n this.poll();\n }\n this._super();\n return Ember.run.next(this, function() {\n var transaction;\n transaction = this.get('store').transaction();\n return transaction.add(this);\n });\n },\n urlGithub: (function() {\n return \"https://github.com/\" + (this.get('login'));\n }).property(),\n updateLocale: function(locale) {\n var observer, self, transaction;\n this.setWithSession('locale', locale);\n transaction = this.get('transaction');\n transaction.commit();\n self = this;\n observer = function() {\n if (!self.get('isSaving')) {\n self.removeObserver('isSaving', observer);\n transaction = self.get('store').transaction();\n return transaction.add(self);\n }\n };\n return this.addObserver('isSaving', observer);\n },\n type: (function() {\n return 'user';\n }).property(),\n sync: function() {\n this.post('/users/sync');\n this.setWithSession('isSyncing', true);\n return this.poll();\n },\n poll: function() {\n var _this = this;\n return this.ajax('/users', 'get', {\n success: function(data) {\n if (data.user.is_syncing) {\n return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n } else {\n _this.set('isSyncing', false);\n return _this.setWithSession('syncedAt', data.user.synced_at);\n }\n }\n });\n },\n setWithSession: function(name, value) {\n var user;\n this.set(name, value);\n user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n user[$.underscore(name)] = this.get(name);\n return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user");minispade.register('models/worker', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Worker = Travis.Model.extend({\n state: DS.attr('string'),\n name: DS.attr('string'),\n host: DS.attr('string'),\n lastSeenAt: DS.attr('string'),\n payload: (function() {\n return this.get('data.payload');\n }).property('data.payload'),\n number: (function() {\n return this.get('name').match(/\\d+$/)[0];\n }).property('name'),\n isWorking: (function() {\n return this.get('state') === 'working';\n }).property('state'),\n repo: (function() {\n return Travis.Repo.find(this.get('payload.repo.id'));\n }).property('payload.repo.id'),\n job_id: (function() {\n return this.get('payload.job.id');\n }).property('payload.job.id'),\n job: (function() {\n return Travis.Job.find(this.get('job_id'));\n }).property('job_id')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker");minispade.register('pusher', "(function() {(function() {\n\n Travis.Pusher = function(config) {\n if (config) {\n this.init(config);\n }\n return this;\n };\n\n $.extend(Travis.Pusher, {\n CHANNELS: ['common'],\n CHANNEL_PREFIX: ''\n });\n\n $.extend(Travis.Pusher.prototype, {\n active_channels: [],\n init: function(config) {\n var channel, _i, _len, _ref, _results;\n Pusher.warn = this.warn.bind(this);\n this.pusher = new Pusher(config.key);\n _ref = Travis.Pusher.CHANNELS;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n channel = _ref[_i];\n _results.push(this.subscribe(channel));\n }\n return _results;\n },\n subscribe: function(channel) {\n var _this = this;\n if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n this.active_channels.push(channel);\n return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n return _this.receive(event, data);\n });\n }\n },\n unsubscribe: function(channel) {\n var ix;\n ix = this.active_channels.indexOf(channel);\n if (this.pusher && ix === -1) {\n this.active_channels.splice(ix, 1);\n return this.pusher.unsubscribe(this.prefix(channel));\n }\n },\n prefix: function(channel) {\n return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n },\n receive: function(event, data) {\n if (event.substr(0, 6) === 'pusher') {\n return;\n }\n if (data.id) {\n data = this.normalize(event, data);\n }\n return Ember.run.next(function() {\n return Travis.app.store.receive(event, data);\n });\n },\n normalize: function(event, data) {\n switch (event) {\n case 'build:started':\n case 'build:finished':\n return data;\n case 'job:created':\n case 'job:started':\n case 'job:finished':\n case 'job:log':\n if (data.queue) {\n data.queue = data.queue.replace('builds.', '');\n }\n return {\n job: data\n };\n case 'worker:added':\n case 'worker:updated':\n case 'worker:removed':\n return {\n worker: data\n };\n }\n },\n warn: function(type, warning) {\n if (!this.ignoreWarning(warning)) {\n return console.warn(warning);\n }\n },\n ignoreWarning: function(warning) {\n var message, _ref;\n if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher");minispade.register('routes', "(function() {(function() {\n\n Travis.Router = Ember.Router.extend({\n location: 'history',\n enableLogging: true,\n initialState: 'loading',\n showRoot: Ember.Route.transitionTo('root.home.show'),\n showStats: Ember.Route.transitionTo('root.stats'),\n showRepo: Ember.Route.transitionTo('root.home.repo.show'),\n showBuilds: Ember.Route.transitionTo('root.home.repo.builds.index'),\n showBuild: Ember.Route.transitionTo('root.home.repo.builds.show'),\n showPullRequests: Ember.Route.transitionTo('root.home.repo.pullRequests'),\n showBranches: Ember.Route.transitionTo('root.home.repo.branches'),\n showJob: Ember.Route.transitionTo('root.home.repo.job'),\n showProfile: Ember.Route.transitionTo('root.profile'),\n showAccount: Ember.Route.transitionTo('root.profile.account'),\n showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n signedIn: function() {\n return !!Travis.app.get('auth.user');\n },\n needsAuth: function(path) {\n return path.indexOf('/profile') === 0 && !this.signedIn();\n },\n loading: Ember.Route.extend({\n routePath: function(router, path) {\n sessionStorage.setItem('travis.path', path);\n if (router.needsAuth(path)) {\n router.transitionTo('root.auth');\n return Travis.app.signIn();\n } else {\n return router.transitionTo('authenticated');\n }\n }\n }),\n authenticated: Ember.Route.extend({\n connectOutlets: function(router) {\n var path;\n path = sessionStorage.getItem('travis.path');\n sessionStorage.removeItem('travis.path');\n router.transitionTo('root');\n if (path) {\n return router.route(path);\n }\n }\n }),\n root: Ember.Route.extend({\n initialState: 'home',\n loading: Ember.State.extend(),\n auth: Ember.Route.extend({\n route: '/auth',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('authLayout');\n $('body').attr('id', 'auth');\n router.get('authLayoutController').connectOutlet('top', 'top');\n return router.get('authLayoutController').connectOutlet('main', 'signin');\n }\n }),\n stats: Ember.Route.extend({\n route: '/stats',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('statsLayout');\n $('body').attr('id', 'stats');\n router.get('statsLayoutController').connectOutlet('top', 'top');\n return router.get('statsLayoutController').connectOutlet('main', 'stats');\n }\n }),\n profile: Ember.Route.extend({\n initialState: 'index',\n route: '/profile',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('profileLayout');\n $('body').attr('id', 'profile');\n router.get('accountsController').set('content', Travis.Account.find());\n router.get('profileLayoutController').connectOutlet('top', 'top');\n return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n router.get('profileLayoutController').connectOutlet('main', 'profile');\n return router.get('profileController').activate('hooks');\n }\n }),\n account: Ember.Route.extend({\n initialState: 'index',\n route: '/:login',\n connectOutlets: function(router, account) {\n var params;\n if (account) {\n params = {\n login: account.get('login')\n };\n return router.get('profileController').setParams(params);\n } else {\n return router.send('showProfile');\n }\n },\n deserialize: function(router, params) {\n return router.get('accountsController').findByLogin(params.login);\n },\n serialize: function(router, account) {\n if (account) {\n return {\n login: account.get('login')\n };\n } else {\n return {};\n }\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('profileController').activate('hooks');\n }\n }),\n profile: Ember.Route.extend({\n route: '/profile',\n connectOutlets: function(router) {\n return router.get('profileController').activate('user');\n }\n })\n })\n }),\n home: Ember.Route.extend({\n initialState: 'show',\n route: '/',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('home');\n $('body').attr('id', 'home');\n router.get('homeController').connectOutlet('left', 'repos');\n router.get('homeController').connectOutlet('right', 'sidebar');\n router.get('homeController').connectOutlet('top', 'top');\n return router.get('homeController').connectOutlet('main', 'repo');\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repoController').activate('index');\n }\n }),\n repo: Ember.Route.extend({\n initialState: 'show',\n route: '/:owner/:name',\n connectOutlets: function(router, repo) {\n return router.get('repoController').set('repo', repo);\n },\n deserialize: function(router, params) {\n var deferred, observer, repos, slug;\n slug = \"\" + params.owner + \"/\" + params.name;\n repos = Travis.Repo.bySlug(slug);\n deferred = $.Deferred();\n observer = function() {\n if (repos.get('isLoaded')) {\n repos.removeObserver('isLoaded', observer);\n return deferred.resolve(repos.objectAt(0));\n }\n };\n repos.addObserver('isLoaded', observer);\n return deferred.promise();\n },\n serialize: function(router, repo) {\n if (repo) {\n return {\n owner: repo.get('owner'),\n name: repo.get('name')\n };\n } else {\n return {};\n }\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repoController').activate('current');\n }\n }),\n builds: Ember.Route.extend({\n route: '/builds',\n initialState: 'index',\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router, repo) {\n return router.get('repoController').activate('builds');\n }\n }),\n show: Ember.Route.extend({\n route: '/:build_id',\n connectOutlets: function(router, build) {\n if (!build.get) {\n build = Travis.Build.find(build);\n }\n router.get('repoController').set('build', build);\n return router.get('repoController').activate('build');\n },\n serialize: function(router, build) {\n if (build.get) {\n return {\n build_id: build.get('id')\n };\n } else {\n return {\n build_id: build\n };\n }\n },\n deserialize: function(router, params) {\n var build, deferred, observer;\n build = Travis.Build.find(params.build_id);\n deferred = $.Deferred();\n observer = function() {\n if (build.get('id')) {\n build.removeObserver('id', observer);\n return deferred.resolve(build);\n }\n };\n build.addObserver('id', observer);\n return deferred.promise();\n }\n })\n }),\n pullRequests: Ember.Route.extend({\n route: '/pull_requests',\n connectOutlets: function(router, repo) {\n return router.get('repoController').activate('pull_requests');\n }\n }),\n branches: Ember.Route.extend({\n route: '/branches',\n connectOutlets: function(router, repo) {\n return router.get('repoController').activate('branches');\n }\n }),\n job: Ember.Route.extend({\n route: '/jobs/:job_id',\n connectOutlets: function(router, job) {\n if (!job.get) {\n job = Travis.Job.find(job);\n }\n router.get('repoController').set('job', job);\n return router.get('repoController').activate('job');\n },\n serialize: function(router, job) {\n if (job.get) {\n return {\n job_id: job.get('id')\n };\n } else {\n return {\n job_id: job\n };\n }\n },\n deserialize: function(router, params) {\n var deferred, job, observer;\n job = Travis.Job.find(params.job_id);\n deferred = $.Deferred();\n observer = function() {\n if (job.get('id')) {\n job.removeObserver('id', observer);\n return deferred.resolve(job);\n }\n };\n job.addObserver('id', observer);\n return deferred.promise();\n }\n })\n })\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes");minispade.register('slider', "(function() {(function() {\n\n this.Travis.Slider = function() {\n if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n this.minimize();\n }\n return this;\n };\n\n $.extend(Travis.Slider.prototype, {\n persist: function() {\n return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n },\n isMinimized: function() {\n return $('body').hasClass('maximized');\n },\n minimize: function() {\n return $('body').addClass('maximized');\n },\n toggle: function() {\n var element;\n $('body').toggleClass('maximized');\n this.persist();\n element = $(' ');\n $('#top .profile').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider");minispade.register('store', "(function() {(function() {\n var DATA_PROXY,\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n DATA_PROXY = {\n get: function(name) {\n return this.savedData[name];\n }\n };\n\n Travis.Store = DS.Store.extend({\n revision: 4,\n adapter: Travis.RestAdapter.create(),\n merge: function(type, id, hash) {\n var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n if (hash === void 0) {\n hash = id;\n primaryKey = type.proto().primaryKey;\n Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n id = hash[primaryKey];\n }\n typeMap = this.typeMapFor(type);\n dataCache = typeMap.cidToHash;\n clientId = typeMap.idToCid[id];\n recordCache = this.get('recordCache');\n if (clientId !== void 0) {\n if (data = dataCache[clientId]) {\n $.extend(data, hash);\n } else {\n dataCache[clientId] = hash;\n }\n if (record = recordCache[clientId]) {\n record.send('didChangeData');\n }\n } else {\n clientId = this.find(type, id).get('clientId');\n }\n if (clientId) {\n DATA_PROXY.savedData = hash;\n this.updateRecordArrays(type, clientId, DATA_PROXY);\n return {\n id: id,\n clientId: clientId\n };\n }\n },\n receive: function(event, data) {\n var job, mappings, name, type, _ref;\n _ref = event.split(':'), name = _ref[0], type = _ref[1];\n mappings = this.adapter.get('mappings');\n type = mappings[name];\n if (event === 'job:log') {\n if (job = this.find(Travis.Job, data['job']['id'])) {\n return job.appendLog(data['job']['_log']);\n }\n } else if (data[type.singularName()]) {\n return this._loadOne(this, type, data);\n } else if (data[type.pluralName()]) {\n return this._loadMany(this, type, data);\n } else {\n if (!type) {\n throw \"can't load data for \" + name;\n }\n }\n },\n _loadOne: function(store, type, json) {\n var root;\n root = type.singularName();\n this.adapter.sideload(store, type, json, root);\n this.merge(type, json[root]);\n return this._updateAssociations(type, root, json[root]);\n },\n _loadMany: function(store, type, json) {\n var root;\n root = type.pluralName();\n this.adapter.sideload(store, type, json, root);\n return this.loadMany(type, json[root]);\n },\n _updateAssociations: function(type, name, data) {\n var _this = this;\n return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n var clientId, dataProxy, id, ids, parent, _ref;\n if (meta.kind === 'belongsTo') {\n id = data[\"\" + key + \"_id\"];\n if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n if (parent = _this.findByClientId(meta.type, clientId, id)) {\n dataProxy = parent.get('data');\n if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n ids.pushObject(data.id);\n }\n return parent.send('didChangeData');\n }\n }\n }\n }\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store");minispade.register('store/fixture_adapter', "(function() {(function() {\n\n this.Travis.FixtureAdapter = DS.Adapter.extend({\n find: function(store, type, id) {\n var fixtures;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n if (fixtures.hasLoaded) {\n return;\n }\n return setTimeout((function() {\n store.loadMany(type, fixtures);\n return fixtures.hasLoaded = true;\n }), 300);\n },\n findMany: function() {\n return this.find.apply(this, arguments);\n },\n findAll: function(store, type) {\n var fixtures, ids;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n ids = fixtures.map(function(item, index, self) {\n return item.id;\n });\n return store.loadMany(type, ids, fixtures);\n },\n findQuery: function(store, type, params, array) {\n var fixture, fixtures, hashes, key, matches, value;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n hashes = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n fixture = fixtures[_i];\n matches = (function() {\n var _results1;\n _results1 = [];\n for (key in params) {\n value = params[key];\n _results1.push(key === 'orderBy' || fixture[key] === value);\n }\n return _results1;\n })();\n if (matches.reduce(function(a, b) {\n return a && b;\n })) {\n _results.push(fixture);\n } else {\n _results.push(null);\n }\n }\n return _results;\n })();\n return array.load(hashes.compact());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter");minispade.register('store/rest_adapter', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n mappings: {\n repositories: Travis.Repo,\n repository: Travis.Repo,\n repos: Travis.Repo,\n repo: Travis.Repo,\n builds: Travis.Build,\n build: Travis.Build,\n commits: Travis.Commit,\n commit: Travis.Commit,\n jobs: Travis.Job,\n job: Travis.Job,\n account: Travis.Account,\n accounts: Travis.Account,\n worker: Travis.Worker,\n workers: Travis.Worker\n },\n plurals: {\n repositories: 'repositories',\n repository: 'repositories',\n repo: 'repos',\n build: 'builds',\n branch: 'branches',\n job: 'jobs',\n worker: 'workers',\n profile: 'profile'\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter");minispade.register('tailing', "(function() {(function() {\n\n this.Travis.Tailing = function() {\n this.position = $(window).scrollTop();\n $(window).scroll(this.onScroll.bind(this));\n return this;\n };\n\n $.extend(Travis.Tailing.prototype, {\n options: {\n timeout: 200\n },\n run: function() {\n this.autoScroll();\n this.positionButton();\n if (this.active()) {\n return Ember.run.later(this.run.bind(this), this.options.timeout);\n }\n },\n toggle: function(event) {\n if (this.active()) {\n return this.stop();\n } else {\n return this.start();\n }\n },\n active: function() {\n return $('#tail').hasClass('active');\n },\n start: function() {\n $('#tail').addClass('active');\n return this.run();\n },\n stop: function() {\n return $('#tail').removeClass('active');\n },\n autoScroll: function() {\n var log, logBottom, win, winBottom;\n if (!this.active()) {\n return;\n }\n win = $(window);\n log = $('#log');\n logBottom = log.offset().top + log.outerHeight() + 40;\n winBottom = win.scrollTop() + win.height();\n if (logBottom - winBottom > 0) {\n return win.scrollTop(logBottom - win.height());\n }\n },\n onScroll: function() {\n var position;\n this.positionButton();\n position = $(window).scrollTop();\n if (position < this.position) {\n this.stop();\n }\n return this.position = position;\n },\n positionButton: function() {\n var max, offset, tail;\n tail = $('#tail');\n if (tail.length === 0) {\n return;\n }\n offset = $(window).scrollTop() - $('#log').offset().top;\n max = $('#log').height() - $('#tail').height() + 5;\n if (offset > max) {\n offset = max;\n }\n if (offset > 0) {\n return tail.css({\n top: offset - 2\n });\n } else {\n return tail.css({\n top: 0\n });\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing");minispade.register('views', "(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n this.Travis.reopen({\n View: Em.View.extend({\n popup: function(event) {\n return $(\"#\" + event.target.name).toggleClass('display');\n }\n })\n });\n\n this.Travis.reopen({\n HomeView: Travis.View.extend({\n templateName: 'layouts/home'\n }),\n AuthLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ProfileLayoutView: Travis.View.extend({\n templateName: 'layouts/profile'\n }),\n StatsLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ApplicationView: Travis.View.extend({\n templateName: 'application'\n })\n });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/signin');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views");minispade.register('views/accounts', "(function() {(function() {\n\n this.Travis.reopen({\n AccountsView: Travis.View.extend({\n tabBinding: 'controller.tab',\n templateName: 'profile/accounts',\n classAccounts: (function() {\n if (this.get('tab') === 'accounts') {\n return 'active';\n }\n }).property('tab')\n }),\n AccountsListView: Em.CollectionView.extend({\n elementId: 'accounts',\n accountBinding: 'content',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n accountBinding: 'content',\n typeBinding: 'content.type',\n selectedBinding: 'account.selected',\n classNames: ['account'],\n classNameBindings: ['type', 'selected'],\n name: (function() {\n return this.get('content.name') || this.get('content.login');\n }).property('content.login', 'content.name'),\n urlAccount: (function() {\n return Travis.Urls.account(this.get('account.login'));\n }).property('account.login')\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts");minispade.register('views/build', "(function() {(function() {\n\n this.Travis.reopen({\n BuildsView: Travis.View.extend({\n templateName: 'builds/list',\n buildsBinding: 'controller.builds',\n showMore: function() {\n var id, number;\n id = this.get('controller.repo.id');\n number = this.get('builds.lastObject.number');\n return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n },\n ShowMoreButton: Em.View.extend({\n tagName: 'button',\n classNameBindings: ['isLoading'],\n attributeBindings: ['disabled'],\n isLoadingBinding: 'controller.builds.isLoading',\n template: Em.Handlebars.compile('{{view.label}}'),\n disabledBinding: 'isLoading',\n label: (function() {\n if (this.get('isLoading')) {\n return 'Loading';\n } else {\n return 'Show more';\n }\n }).property('isLoading'),\n click: function() {\n return this.get('parentView').showMore();\n }\n })\n }),\n BuildsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repoBinding: 'controller.repo',\n buildBinding: 'context',\n commitBinding: 'build.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repo.slug'), this.get('build.id'));\n }).property('repo.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repo.slug'), this.get('commit.sha'));\n }).property('repo.slug', 'commit.sha')\n }),\n BuildView: Travis.View.extend({\n templateName: 'builds/show',\n elementId: 'build',\n classNameBindings: ['color', 'loading'],\n repoBinding: 'controller.repo',\n buildBinding: 'controller.build',\n commitBinding: 'build.commit',\n loading: (function() {\n return !this.get('build.isLoaded');\n }).property('build.isLoaded'),\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repo.slug'), this.get('build.id'));\n }).property('repo.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repo.slug'), this.get('commit.sha'));\n }).property('repo.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build");minispade.register('views/job', "(function() {(function() {\n\n this.Travis.reopen({\n JobsView: Travis.View.extend({\n templateName: 'jobs/list',\n buildBinding: 'controller.build'\n }),\n JobsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repoBinding: 'context.repo',\n jobBinding: 'context',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repo.slug'), this.get('job.id'));\n }).property('repo.slug', 'job.id')\n }),\n JobView: Travis.View.extend({\n templateName: 'jobs/show',\n repoBinding: 'controller.repo',\n jobBinding: 'controller.job',\n commitBinding: 'job.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repo.slug'), this.get('job.id'));\n }).property('repo.slug', 'job.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repo.slug'), this.get('commit.sha'));\n }).property('repo.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n }),\n LogView: Travis.View.extend({\n templateName: 'jobs/log',\n logBinding: 'job.log',\n click: function(event) {\n return $(event.target).closest('.fold').toggleClass('open');\n },\n toTop: function() {\n return $(window).scrollTop(0);\n },\n jobBinding: 'context',\n toggleTailing: function(event) {\n Travis.app.tailing.toggle();\n return event.preventDefault();\n },\n logSubscriber: (function() {\n var job, state;\n job = this.get('job');\n state = this.get('job.state');\n if (job && state !== 'finished') {\n job.subscribe();\n }\n return null;\n }).property('job', 'job.state')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job");minispade.register('views/left', "(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n tabBinding: 'controller.tab',\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left");minispade.register('views/profile', "(function() {(function() {\n\n this.Travis.reopen({\n ProfileView: Travis.View.extend({\n templateName: 'profile/show',\n accountBinding: 'controller.account',\n name: (function() {\n return this.get('account.name') || this.get('account.login');\n }).property('account.name', 'account.login')\n }),\n ProfileTabsView: Travis.View.extend({\n templateName: 'profile/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classHooks: (function() {\n if (this.get('tab') === 'hooks') {\n return 'active';\n }\n }).property('tab'),\n classUser: (function() {\n if (this.get('tab') === 'user') {\n return 'active';\n }\n }).property('tab'),\n accountBinding: 'controller.account',\n displayUser: (function() {\n return this.get('controller.account.login') === this.get('controller.user.login');\n }).property('controller.account.login', 'controller.user.login')\n }),\n HooksView: Travis.View.extend({\n templateName: 'profile/tabs/hooks',\n userBinding: 'controller.user',\n urlGithubAdmin: (function() {\n return Travis.Urls.githubAdmin(this.get('hook.slug'));\n }).property('hook.slug')\n }),\n UserView: Travis.View.extend({\n templateName: 'profile/tabs/user',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n }).property('user.gravatarId'),\n locales: (function() {\n return [\n {\n key: null,\n name: ''\n }, {\n key: 'en',\n name: 'English'\n }, {\n key: 'ca',\n name: 'Catalan'\n }, {\n key: 'cs',\n name: 'Čeština'\n }, {\n key: 'es',\n name: 'Español'\n }, {\n key: 'fr',\n name: 'Français'\n }, {\n key: 'ja',\n name: '日本語'\n }, {\n key: 'nl',\n name: 'Nederlands'\n }, {\n key: 'nb',\n name: 'Norsk Bokmål'\n }, {\n key: 'pl',\n name: 'Polski'\n }, {\n key: {\n 'pt-BR': {\n name: 'Português brasileiro'\n }\n }\n }, {\n key: 'ru',\n name: 'Русский'\n }\n ];\n }).property(),\n saveLocale: function(event) {\n return this.get('user').updateLocale($('#locale').val());\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile");minispade.register('views/repo', "(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo");minispade.register('views/repo/list', "(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n toggleInfo: function(event) {\n return $('#repos').toggleClass('open');\n }\n }),\n ReposListView: Em.CollectionView.extend({\n elementId: 'repos',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n repoBinding: 'content',\n classNames: ['repo'],\n classNameBindings: ['color', 'selected'],\n selectedBinding: 'repo.selected',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('repo.lastBuildResult'));\n }).property('repo.lastBuildResult'),\n urlRepo: (function() {\n return Travis.Urls.repo(this.get('repo.slug'));\n }).property('repo.slug'),\n urlLastBuild: (function() {\n return Travis.Urls.build(this.get('repo.slug'), this.get('repo.lastBuildId'));\n }).property('repo.slug', 'repo.lastBuildId')\n })\n }),\n ReposListTabsView: Travis.View.extend({\n templateName: 'repos/list/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.app.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list");minispade.register('views/repo/show', "(function() {(function() {\n\n this.Travis.reopen({\n RepoView: Travis.View.extend({\n templateName: 'repos/show',\n repoBinding: 'controller.repo',\n \"class\": (function() {\n if (!this.get('repo.isLoaded')) {\n return 'loading';\n }\n }).property('repo.isLoaded'),\n urlGithub: (function() {\n return Travis.Urls.githubRepo(this.get('repo.slug'));\n }).property('repo.slug'),\n urlGithubWatchers: (function() {\n return Travis.Urls.githubWatchers(this.get('repo.slug'));\n }).property('repo.slug'),\n urlGithubNetwork: (function() {\n return Travis.Urls.githubNetwork(this.get('repo.slug'));\n }).property('repo.slug')\n }),\n RepoShowTabsView: Travis.View.extend({\n templateName: 'repos/show/tabs',\n repoBinding: 'controller.repo',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n classCurrent: (function() {\n if (this.get('tab') === 'current') {\n return 'active';\n }\n }).property('tab'),\n classBuilds: (function() {\n if (this.get('tab') === 'builds') {\n return 'active';\n }\n }).property('tab'),\n classPullRequests: (function() {\n if (this.get('tab') === 'pull_requests') {\n return 'active';\n }\n }).property('tab'),\n classBranches: (function() {\n if (this.get('tab') === 'branches') {\n return 'active';\n }\n }).property('tab'),\n classBuild: (function() {\n var classes, tab;\n tab = this.get('tab');\n classes = [];\n if (tab === 'build') {\n classes.push('active');\n }\n if (tab === 'build' || tab === 'job') {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab'),\n classJob: (function() {\n if (this.get('tab') === 'job') {\n return 'active display-inline';\n }\n }).property('tab')\n }),\n RepoShowToolsView: Travis.View.extend({\n templateName: 'repos/show/tools',\n repoBinding: 'controller.repo',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n toggle: function() {\n var element;\n element = $('#tools .pane').toggleClass('display-inline');\n return this.set('active', element.hasClass('display-inline'));\n },\n branches: (function() {\n if (this.get('active')) {\n return this.get('repo.branches');\n }\n }).property('active', 'repo.branches'),\n urlRepo: (function() {\n return 'https://' + location.host + Travis.Urls.repo(this.get('repo.slug'));\n }).property('repo.slug'),\n urlStatusImage: (function() {\n return Travis.Urls.statusImage(this.get('repo.slug'), this.get('branch.commit.branch'));\n }).property('repo.slug', 'branch'),\n markdownStatusImage: (function() {\n return \"[) + \")](\" + (this.get('urlRepo')) + \")\";\n }).property('urlStatusImage'),\n textileStatusImage: (function() {\n return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepo'));\n }).property('urlStatusImage'),\n rdocStatusImage: (function() {\n return \"{ }[\" + (this.get('urlRepo')) + \"]\";\n }).property('urlStatusImage')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show");minispade.register('views/sidebar', "(function() {(function() {\n\n this.Travis.reopen({\n SidebarView: Travis.View.extend({\n templateName: 'layouts/sidebar',\n DecksView: Em.View.extend({\n templateName: \"sponsors/decks\",\n controller: Travis.SponsorsController.create({\n perPage: 1\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n Travis.app.get('router.sidebarController').tickables.push(controller);\n controller.set('content', Travis.Sponsor.decks());\n }\n return this._super.apply(this, arguments);\n }\n }),\n LinksView: Em.View.extend({\n templateName: \"sponsors/links\",\n controller: Travis.SponsorsController.create({\n perPage: 6\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n controller.set('content', Travis.Sponsor.links());\n Travis.app.get('router.sidebarController').tickables.push(controller);\n }\n return this._super.apply(this, arguments);\n }\n }),\n WorkersView: Em.View.extend({\n templateName: 'workers/list',\n controller: Travis.WorkersController.create(),\n didInsertElement: function() {\n this.set('controller.content', Travis.Worker.find());\n return this._super.apply(this, arguments);\n }\n }),\n QueuesView: Em.View.extend({\n templateName: 'queues/list',\n controller: Travis.QueuesController.create(),\n didInsertElement: function() {\n var queue, queues;\n queues = (function() {\n var _i, _len, _ref, _results;\n _ref = Travis.QUEUES;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n queue = _ref[_i];\n _results.push(Em.ArrayController.create({\n content: Travis.Job.queued(queue.name),\n id: \"queue_\" + queue.name,\n name: queue.display\n }));\n }\n return _results;\n })();\n this.set('controller.content', queues);\n return this._super.apply(this, arguments);\n }\n })\n }),\n WorkersView: Travis.View.extend({\n toggleWorkers: function(event) {\n var handle;\n handle = $(event.target).toggleClass('open');\n if (handle.hasClass('open')) {\n return $('#workers li').addClass('open');\n } else {\n return $('#workers li').removeClass('open');\n }\n }\n }),\n WorkersListView: Travis.View.extend({\n toggle: function(event) {\n return $(event.target).closest('li').toggleClass('open');\n }\n }),\n WorkersItemView: Travis.View.extend({\n display: (function() {\n var name, number, payload, repo, state;\n name = (this.get('worker.name') || '').replace('travis-', '');\n state = this.get('worker.state');\n payload = this.get('worker.payload');\n if (state === 'working' && payload !== void 0) {\n repo = payload.repo.slug;\n number = ' #' + payload.build.number;\n return (\"\" + name + \": \" + repo + \" \" + number).htmlSafe();\n } else {\n return \"\" + name + \": \" + state;\n }\n }).property('worker.state')\n }),\n QueueItemView: Travis.View.extend({\n tagName: 'li',\n urlJob: (function() {\n return Travis.Urls.job(this.get('job.repo.slug'), this.get('job.id'));\n }).property('job.repo.slug', 'job.id')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar");minispade.register('views/signin', "(function() {(function() {\n\n this.Travis.reopen({\n SigninView: Travis.View.extend({\n templateName: 'auth/signin',\n signingIn: (function() {\n return Travis.app.get('authState');\n }).property('Travis.app.authState')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/signin");minispade.register('views/stats', "(function() {(function() {\n\n this.Travis.reopen({\n StatsView: Travis.View.extend({\n templateName: 'stats/show',\n didInsertElement: function() {},\n renderChart: function(config) {\n var chart;\n chart = new Highcharts.Chart(config);\n return this.fetch(config.source, function(data) {\n var stats;\n stats = (function() {\n var _i, _len, _ref, _results;\n _ref = data.stats;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n stats = _ref[_i];\n _results.push(config.map(stats));\n }\n return _results;\n })();\n return chart.series[0].setData(stats);\n });\n },\n fetch: function(url, callback) {\n return $.ajax({\n type: 'GET',\n url: url,\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n },\n success: callback\n });\n },\n CHARTS: {\n repos: {\n source: '/api/stats/repos',\n total: 0,\n map: function(data) {\n return [Date.parse(data.date), this.total += parseInt(data.count)];\n },\n chart: {\n renderTo: \"repos_stats\"\n },\n title: {\n text: \"Total Projects/Repositories\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" repos\";\n }\n },\n series: [\n {\n name: \"Repository Growth\",\n data: []\n }\n ]\n },\n builds: {\n source: '/api/stats/tests',\n map: function(data) {\n return [Date.parse(data.date), parseInt(data.count)];\n },\n chart: {\n renderTo: \"tests_stats\",\n type: \"column\"\n },\n title: {\n text: \"Build Count\"\n },\n subtitle: {\n text: \"last month\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" builds\";\n }\n },\n series: [\n {\n name: \"Total Builds\",\n data: []\n }\n ]\n }\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats");minispade.register('views/top', "(function() {(function() {\n\n this.Travis.reopen({\n TopView: Travis.View.extend({\n templateName: 'layouts/top',\n tabBinding: 'controller.tab',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n }).property('user.gravatarId'),\n classHome: (function() {\n if (this.get('tab') === 'home') {\n return 'active';\n }\n }).property('tab'),\n classStats: (function() {\n if (this.get('tab') === 'stats') {\n return 'active';\n }\n }).property('tab'),\n classProfile: (function() {\n var classes;\n classes = ['profile'];\n if (this.get('tab') === 'profile') {\n classes.push('active');\n }\n classes.push(Travis.app.get('authState'));\n return classes.join(' ');\n }).property('tab', 'Travis.app.authState'),\n showProfile: function() {\n return $('#top .profile ul').show();\n },\n hideProfile: function() {\n return $('#top .profile ul').hide();\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top");minispade.register('data/sponsors', "(function() {(function() {\n\n this.Travis.SPONSORS = [\n {\n type: 'platinum',\n url: \"http://www.wooga.com\",\n image: \"wooga-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://bendyworks.com\",\n image: \"bendyworks-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://cloudcontrol.com\",\n image: \"cloudcontrol-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://xing.de\",\n image: \"xing-205x130.png\"\n }, {\n type: 'gold',\n url: \"http://heroku.com\",\n image: \"heroku-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://soundcloud.com\",\n image: \"soundcloud-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://nedap.com\",\n image: \"nedap-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://mongohq.com\",\n image: \"mongohq-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://zweitag.de\",\n image: \"zweitag-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://kanbanery.com\",\n image: \"kanbanery-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://ticketevolution.com\",\n image: \"ticketevolution-205x60.jpg\"\n }, {\n type: 'gold',\n url: \"http://plan.io/travis\",\n image: \"planio-205x60.png\"\n }, {\n type: 'silver',\n link: \"Cobot : The one tool to run your coworking space \"\n }, {\n type: 'silver',\n link: \"JumpstartLab : We build developers \"\n }, {\n type: 'silver',\n link: \"Evil Martians : Agile Ruby on Rails development \"\n }, {\n type: 'silver',\n link: \"Zendesk : Love your helpdesk \"\n }, {\n type: 'silver',\n link: \"Stripe : Payments for developers \"\n }, {\n type: 'silver',\n link: \"Basho : We make Riak! \"\n }, {\n type: 'silver',\n link: \"Relevance : We deliver software solutions \"\n }, {\n type: 'silver',\n link: \"Mindmatters : Software für Menschen \"\n }, {\n type: 'silver',\n link: \"Amen : The best and worst of everything \"\n }, {\n type: 'silver',\n link: \"Site5 : Premium Web Hosting Solutions \"\n }, {\n type: 'silver',\n link: \"Crowd Interactive : Leading Rails consultancy in Mexico \"\n }, {\n type: 'silver',\n link: \"Atomic Object : Work with really smart people \"\n }, {\n type: 'silver',\n link: \"Codeminer : smart services for your startup \"\n }, {\n type: 'silver',\n link: \"Cloudant : grow into your data layer, not out of it \"\n }, {\n type: 'silver',\n link: \"Gidsy : Explore, organize & book unique things to do! \"\n }, {\n type: 'silver',\n link: \"5apps : Package & deploy HTML5 apps automatically \"\n }, {\n type: 'silver',\n link: \"Meltmedia : We are Interactive Superheroes \"\n }, {\n type: 'silver',\n link: \"Fingertips offers design and development services \"\n }, {\n type: 'silver',\n link: \"Engine Yard : Build epic apps, let us handle the rest \"\n }, {\n type: 'silver',\n link: \"Malwarebytes : Defeat Malware once and for all. \"\n }, {\n type: 'silver',\n link: \"Readmill : The best reading app on the iPad. \"\n }, {\n type: 'silver',\n link: \"Medidata : clinical tech improving quality of life \"\n }, {\n type: 'silver',\n link: \"ESM : Japan's best agile Ruby/Rails consultancy \"\n }, {\n type: 'silver',\n link: \"Twitter : instantly connects people everywhere \"\n }, {\n type: 'silver',\n link: \"AGiLE ANiMAL : we <3 Travis CI. \"\n }, {\n type: 'silver',\n link: \"Tupalo : Discover, review & share local businesses. \"\n }\n ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors");minispade.register('emoij', "(function() {(function() {\n\n this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij");minispade.register('ext/jquery', "(function() {(function() {\n\n $.fn.extend({\n outerHtml: function() {\n return $(this).wrap('
').parent().html();\n },\n outerElement: function() {\n return $($(this).outerHtml()).empty();\n },\n flash: function() {\n return Utils.flash(this);\n },\n unflash: function() {\n return Utils.unflash(this);\n },\n filterLog: function() {\n this.deansi();\n return this.foldLog();\n },\n deansi: function() {\n return this.html(Utils.deansi(this.html()));\n },\n foldLog: function() {\n return this.html(Utils.foldLog(this.html()));\n },\n unfoldLog: function() {\n return this.html(Utils.unfoldLog(this.html()));\n },\n updateTimes: function() {\n return Utils.updateTimes(this);\n },\n activateTab: function(tab) {\n return Utils.activateTab(this, tab);\n },\n timeInWords: function() {\n return $(this).each(function() {\n return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n });\n },\n updateGithubStats: function(repo) {\n return Utils.updateGithubStats(repo, $(this));\n }\n });\n\n $.extend({\n isEmpty: function(obj) {\n if ($.isArray(obj)) {\n return !obj.length;\n } else if ($.isObject(obj)) {\n return !$.keys(obj).length;\n } else {\n return !obj;\n }\n },\n isObject: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n },\n keys: function(obj) {\n var keys;\n keys = [];\n $.each(obj, function(key) {\n return keys.push(key);\n });\n return keys;\n },\n values: function(obj) {\n var values;\n values = [];\n $.each(obj, function(key, value) {\n return values.push(value);\n });\n return values;\n },\n underscore: function(string) {\n return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n if (chr) {\n return \"_\" + (chr.toUpperCase());\n } else {\n return '';\n }\n });\n },\n camelize: function(string, uppercase) {\n string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n return string.replace(/_(.)?/g, function(match, chr) {\n if (chr) {\n return chr.toUpperCase();\n } else {\n return '';\n }\n });\n },\n capitalize: function(string) {\n return string[0].toUpperCase() + string.substring(1);\n },\n compact: function(object) {\n return $.grep(object, function(value) {\n return !!value;\n });\n },\n all: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return false;\n }\n i++;\n }\n return true;\n },\n detect: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return array[i];\n }\n i++;\n }\n },\n select: function(array, callback) {\n var args, i, result;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n result = [];\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n result.push(array[i]);\n }\n i++;\n }\n return result;\n },\n slice: function(object, key) {\n var keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) > -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n only: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) !== -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n except: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n intersect: function(array, other) {\n return array.filter(function(element) {\n return other.indexOf(element) !== -1;\n });\n },\n map: function(elems, callback, arg) {\n var i, isArray, key, length, ret, value;\n value = void 0;\n key = void 0;\n ret = [];\n i = 0;\n length = elems.length;\n isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n if (isArray) {\n while (i < length) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n i++;\n }\n } else {\n for (key in elems) {\n value = callback(elems[key], key, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n }\n }\n return ret.concat.apply([], ret);\n },\n shuffle: function(array) {\n var current, tmp, top;\n array = array.slice();\n top = array.length;\n while (top && --top) {\n current = Math.floor(Math.random() * (top + 1));\n tmp = array[current];\n array[current] = array[top];\n array[top] = tmp;\n }\n return array;\n },\n truncate: function(string, length) {\n if (string.length > length) {\n return string.trim().substring(0, length) + '...';\n } else {\n return string;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery");minispade.register('travis/ajax', "(function() {(function() {\n\n jQuery.support.cors = true;\n\n this.Travis.Ajax = Ember.Mixin.create({\n DEFAULT_OPTIONS: {\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n }\n },\n post: function(url, data, callback) {\n return this.ajax(url, 'post', {\n data: data,\n success: callback\n });\n },\n ajax: function(url, method, options) {\n var accessToken, endpoint, _base, _ref;\n endpoint = Travis.config.api_endpoint || '';\n options = options || {};\n if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n options.headers || (options.headers = {});\n (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n }\n options.url = \"\" + endpoint + url;\n options.type = method;\n options.dataType = 'json';\n options.contentType = 'application/json; charset=utf-8';\n options.context = this;\n if (options.data && method !== 'GET' && method !== 'get') {\n options.data = JSON.stringify(options.data);\n }\n return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n }\n });\n\n this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {\n get: function(url, callback) {\n return this.ajax(url, 'get', {\n success: callback\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax");minispade.register('travis/expandable_record_array', "(function() {(function() {\n\n Travis.ExpandableRecordArray = DS.RecordArray.extend({\n isLoaded: false,\n isLoading: false,\n load: function(array) {\n var observer, self;\n this.set('isLoading', true);\n self = this;\n observer = function() {\n var content;\n if (this.get('isLoaded')) {\n content = self.get('content');\n array.removeObserver('isLoaded', observer);\n array.forEach(function(record) {\n return self.pushObject(record);\n });\n self.set('isLoading', false);\n return self.set('isLoaded', true);\n }\n };\n return array.addObserver('isLoaded', observer);\n },\n pushObject: function(record) {\n var clientId, id, ids;\n ids = this.get('content');\n id = record.get('id');\n clientId = record.get('clientId');\n if (ids.contains(clientId)) {\n return;\n }\n return ids.pushObject(clientId);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array");minispade.register('travis/log', "(function() {(function() {\n\n this.Travis.Log = {\n FOLDS: {\n schema: /(\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n.*<\\/p>)/g,\n migrate: /(\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n bundle: /(\\$ bundle install.*<\\/p>\\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<\\/p>\\n)*)/g,\n exec: /([\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n },\n filter: function(log) {\n log = this.escape(log);\n log = this.deansi(log);\n log = log.replace(/\\r/g, '');\n log = this.number(log);\n log = this.fold(log);\n log = log.replace(/\\n/g, '');\n return log;\n },\n stripPaths: function(log) {\n return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n },\n escape: function(log) {\n return Handlebars.Utils.escapeExpression(log);\n },\n escapeRuby: function(log) {\n return log.replace(/#<(\\w+.*?)>/, '#<$1>');\n },\n number: function(log) {\n var result;\n result = '';\n $.each(log.trim().split('\\n'), function(ix, line) {\n var number, path;\n number = ix + 1;\n path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n return result += '%@ %@
\\n'.fmt(path, path, number, number, line);\n });\n return result.trim();\n },\n deansi: function(log) {\n var ansi, text;\n log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\u001b\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n ansi = ansiparse(log);\n text = '';\n ansi.forEach(function(part) {\n var classes;\n classes = [];\n part.foreground && classes.push(part.foreground);\n part.background && classes.push('bg-' + part.background);\n part.bold && classes.push('bold');\n part.italic && classes.push('italic');\n return text += (classes.length ? '' + part.text + ' ' : part.text);\n });\n return text.replace(/\\033/g, '');\n },\n fold: function(log) {\n log = this.unfold(log);\n $.each(Travis.Log.FOLDS, function(name, pattern) {\n return log = log.replace(pattern, function() {\n return '' + arguments[1].trim() + '
';\n });\n });\n return log;\n },\n unfold: function(log) {\n return log.replace(/([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log");minispade.register('travis/model', "(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model");minispade.register('travis/ticker', "(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker");minispade.register('travis', "(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n if (location.hash.slice(0, 2) === '#!') {\n location.href = location.href.replace('#!/', '');\n }\n return this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return $(function() {\n return app.initialize();\n });\n });\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.ajax.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\nminispade.require('travis/ajax');\nminispade.require('app');\n\n}).call(this);\n\n})();\n//@ sourceURL=travis");minispade.register('templates', "(function() {\nEmber.TEMPLATES['application'] = Ember.Handlebars.compile(\"{{outlet}}\\n\");\n\nEmber.TEMPLATES['auth/signin'] = Ember.Handlebars.compile(\"{{#if view.signingIn}}\\n
Signing in \\n
\\n Trying to authenticate with GitHub.\\n
\\n{{else}}\\n
Sign in \\n
\\n Sign in with GitHub \\n
\\n{{/if}}\\n\\n\\n\");\n\nEmber.TEMPLATES['builds/list'] = Ember.Handlebars.compile(\"{{#if builds.isLoaded}}\\n
\\n \\n \\n {{t builds.name}} \\n {{t builds.commit}} \\n {{t builds.message}} \\n {{t builds.duration}} \\n {{t builds.finished_at}} \\n \\n \\n\\n \\n {{#each build in builds}}\\n {{#view Travis.BuildsItemView contextBinding=\\\"build\\\"}}\\n \\n \\n {{#if id}}\\n \\n {{number}}\\n \\n {{/if}}\\n \\n \\n \\n {{formatCommit commit}}\\n \\n \\n \\n {{{formatMessage commit.message short=\\\"true\\\"}}}\\n \\n \\n {{formatDuration duration}}\\n \\n \\n {{formatTime finishedAt}}\\n \\n {{/view}}\\n {{/each}}\\n \\n
\\n
\\n {{view view.ShowMoreButton}}\\n
\\n{{else}}\\n
Loading
\\n{{/if}}\\n\");\n\nEmber.TEMPLATES['builds/show'] = Ember.Handlebars.compile(\"{{#with view}}\\n {{#if loading}}\\n
Loading \\n {{else}}\\n
\\n \\n
{{t builds.name}} \\n
\\n \\n {{#if build.id}}\\n {{build.number}} \\n {{/if}}\\n \\n
{{t builds.finished_at}} \\n
{{formatTime build.finishedAt}} \\n
{{t builds.duration}} \\n
{{formatDuration build.duration}} \\n
\\n\\n \\n\\n {{t builds.message}} \\n {{{formatMessage build.commit.message}}} \\n\\n {{#unless isMatrix}}\\n {{t builds.config}} \\n {{formatConfig build.config}} \\n {{/unless}}\\n \\n\\n {{#if build.isMatrix}}\\n {{view Travis.JobsView jobsBinding=\\\"build.requiredJobs\\\" required=\\\"true\\\"}}\\n {{view Travis.JobsView jobsBinding=\\\"build.allowedFailureJobs\\\"}}\\n {{else}}\\n {{view Travis.LogView contextBinding=\\\"build.jobs.firstObject\\\"}}\\n {{/if}}\\n {{/if}}\\n{{/with}}\\n\");\n\nEmber.TEMPLATES['jobs/list'] = Ember.Handlebars.compile(\"{{#if view.jobs.length}}\\n {{#if view.required}}\\n
\\n \\n {{t jobs.build_matrix}}\\n \\n {{else}}\\n \\n \\n {{t jobs.allowed_failures}}\\n \\n \\n {{/if}}\\n \\n \\n {{#each key in view.build.configKeys}}\\n {{key}} \\n {{/each}}\\n \\n \\n \\n {{#each job in view.jobs}}\\n {{#view Travis.JobsItemView contextBinding=\\\"job\\\"}}\\n \\n \\n {{#if job.id}}\\n {{number}} \\n {{/if}}\\n \\n \\n {{formatDuration duration}}\\n \\n \\n {{formatTime finishedAt}}\\n \\n {{#each value in configValues}}\\n {{value}} \\n {{/each}}\\n {{/view}}\\n {{/each}}\\n \\n
\\n\\n {{#unless view.required}}\\n \\n {{/unless}}\\n{{/if}}\\n\");\n\nEmber.TEMPLATES['jobs/log'] = Ember.Handlebars.compile(\"{{view.logSubscriber}}\\n\\n{{#if log.isLoaded}}\\n \\n \\n Follow logs \\n {{{formatLog log.body}}} \\n\\n {{#if sponsor.name}}\\n \\n {{/if}}\\n\\n To top \\n{{else}}\\n \\n Loading \\n
\\n{{/if}}\\n\");\n\nEmber.TEMPLATES['jobs/show'] = Ember.Handlebars.compile(\"{{#with view}}\\n {{#if job.isLoaded}}\\n \\n
\\n \\n
Job \\n
\\n \\n {{#if job.id}}\\n {{job.number}} \\n {{/if}}\\n \\n
{{t jobs.finished_at}} \\n
{{formatTime job.finishedAt}} \\n
{{t jobs.duration}} \\n
{{formatDuration job.duration}} \\n
\\n\\n \\n\\n {{t jobs.message}} \\n {{formatMessage commit.message}} \\n {{t jobs.config}} \\n {{formatConfig job.config}} \\n \\n\\n {{view Travis.LogView contextBinding=\\\"job\\\"}}}\\n
\\n {{else}}\\n \\n Loading \\n
\\n {{/if}}\\n{{/with}}\\n\");\n\nEmber.TEMPLATES['layouts/home'] = Ember.Handlebars.compile(\"\\n {{outlet top}}\\n
\\n\\n\\n
\\n {{outlet left}}\\n
\\n\\n
\\n {{outlet main}}\\n
\\n\\n
\\n {{outlet right}}\\n
\\n
\\n\");\n\nEmber.TEMPLATES['layouts/profile'] = Ember.Handlebars.compile(\"\\n {{outlet top}}\\n
\\n\\n\\n
\\n {{outlet left}}\\n
\\n\\n
\\n {{outlet main}}\\n
\\n\\n
\\n
\\n\");\n\nEmber.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.compile(\"\\n {{t layouts.application.fork_me}}\\n \\n\\n\\n\\n{{view view.DecksView}}\\n{{view view.WorkersView}}\\n{{view view.QueuesView}}\\n{{view view.LinksView}}\\n\\n\\n
{{t layouts.about.join}} \\n
\\n
\\n\");\n\nEmber.TEMPLATES['layouts/simple'] = Ember.Handlebars.compile(\"\\n {{outlet top}}\\n
\\n\\n\\n
\\n {{outlet main}}\\n
\\n
\\n\\n\");\n\nEmber.TEMPLATES['layouts/top'] = Ember.Handlebars.compile(\"\\n Travis \\n \\n\\n\\n\");\n\nEmber.TEMPLATES['profile/accounts'] = Ember.Handlebars.compile(\"\\n
\\n\\n\\n\\n\\n {{#collection Travis.AccountsListView contentBinding=\\\"controller\\\"}}\\n
{{view.name}} \\n
\\n Repositories: \\n {{view.content.reposCount}} \\n
\\n {{/collection}}\\n
\\n\");\n\nEmber.TEMPLATES['profile/show'] = Ember.Handlebars.compile(\"{{view.name}} \\n\\n{{view Travis.ProfileTabsView}}\\n\\n\\n {{outlet pane}}\\n
\\n\\n\");\n\nEmber.TEMPLATES['profile/tabs'] = Ember.Handlebars.compile(\"\\n \\n \\n \\n {{#if view.displayUser}}\\n \\n \\n \\n {{/if}}\\n \\n\");\n\nEmber.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.compile(\"\\n {{{t profiles.show.message.your_repos}}}\\n
\\n\\n{{#if hooks.isLoaded}}\\n {{#if user.isSyncing}}\\n \\n Please wait while we sync from GitHub \\n
\\n {{else}}\\n \\n Last synchronized from GitHub: {{formatTime user.syncedAt}}\\n \\n Sync now\\n \\n
\\n\\n \\n {{#each hook in hooks}}\\n \\n {{hook.slug}} \\n {{hook.description}}
\\n\\n \\n \\n {{else}}\\n \\n You do not seem to have any repositories that we could sync.\\n \\n {{/each}}\\n \\n {{/if}}\\n{{else}}\\n \\n Loading \\n
\\n{{/if}}\\n\\n\\n\");\n\nEmber.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.compile(\" \\n\\n\\n \\n {{t profiles.show.github}}:\\n \\n \\n {{user.login}} \\n \\n \\n {{t profiles.show.email}}:\\n \\n \\n {{user.email}}\\n \\n \\n {{t profiles.show.token}}:\\n \\n \\n {{user.token}}\\n \\n \\n\\n\\n\\n\\n\");\n\nEmber.TEMPLATES['queues/list'] = Ember.Handlebars.compile(\"\\n{{#each queue in controller}}\\n \\n {{t queue}}: {{queue.name}} \\n \\n \\n{{/each}}\\n \\n\");\n\nEmber.TEMPLATES['repos/list'] = Ember.Handlebars.compile(\"\\n {{view Ember.TextField valueBinding=\\\"controller.search\\\"}}\\n
\\n\\n{{view Travis.ReposListTabsView}}\\n\\n \\n\\n\\n {{#collection Travis.ReposListView contentBinding=\\\"controller\\\"}}\\n {{#with view.repo}}\\n
\\n
\\n {{#if slug}}\\n
{{slug}} \\n {{/if}}\\n
\\n {{#if lastBuildId}}\\n
{{lastBuildNumber}} \\n {{/if}}\\n\\n
\\n {{t repositories.duration}}: \\n {{formatDuration lastBuildDuration}} ,\\n {{t repositories.finished_at}}: \\n {{formatTime lastBuildFinishedAt}} \\n
\\n\\n
\\n\\n {{#if description}}\\n
\\n {{/if}}\\n {{/with}}\\n {{/collection}}\\n
\\n\");\n\nEmber.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.compile(\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\");\n\nEmber.TEMPLATES['repos/show'] = Ember.Handlebars.compile(\"\\n {{#if view.repo.isLoaded}}\\n {{#with view.repo}}\\n
\\n\\n
{{description}}
\\n\\n
\\n\\n {{view Travis.RepoShowTabsView}}\\n {{view Travis.RepoShowToolsView}}\\n {{/with}}\\n\\n {{else}}\\n
Loading \\n {{/if}}\\n\\n
\\n {{outlet pane}}\\n
\\n
\\n\\n\");\n\nEmber.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.compile(\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\");\n\nEmber.TEMPLATES['repos/show/tools'] = Ember.Handlebars.compile(\"\\n\");\n\nEmber.TEMPLATES['sponsors/decks'] = Ember.Handlebars.compile(\"{{t layouts.application.sponsers}} \\n\\n\\n\\n\\n \\n {{{t layouts.application.sponsors_link}}}\\n \\n
\\n\");\n\nEmber.TEMPLATES['sponsors/links'] = Ember.Handlebars.compile(\"\\n\\n\");\n\nEmber.TEMPLATES['stats/show'] = Ember.Handlebars.compile(\"
\\n
\\n\");\n\nEmber.TEMPLATES['workers/list'] = Ember.Handlebars.compile(\"{{#view Travis.WorkersView}}\\n \\n {{t workers}}\\n \\n \\n \\n {{#each group in controller.groups}}\\n {{#view Travis.WorkersListView}}\\n \\n \\n {{group.firstObject.host}}\\n \\n \\n {{#each worker in group}}\\n {{#view Travis.WorkersItemView workerBinding=\\\"worker\\\"}}\\n \\n
\\n {{#if worker.isWorking}}\\n {{#if worker.job_id}}\\n \\n {{view.display}}\\n \\n {{/if}}\\n {{else}}\\n {{view.display}}\\n {{/if}}\\n \\n {{/view}}\\n {{/each}}\\n \\n \\n {{/view}}\\n {{else}}\\n No workers\\n {{/each}}\\n \\n{{/view}}\\n\");\n\n})();\n//@ sourceURL=templates");minispade.register('config/locales', "(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {\"ca\":{\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"pt-BR\":\"português brasileiro\",\"ru\":\"Русский\"}},\"en\":{\"errors\":{\"messages\":{\"not_found\":\"not found\",\"already_confirmed\":\"was already confirmed\",\"not_locked\":\"was not locked\"}},\"devise\":{\"failure\":{\"unauthenticated\":\"You need to sign in or sign up before continuing.\",\"unconfirmed\":\"You have to confirm your account before continuing.\",\"locked\":\"Your account is locked.\",\"invalid\":\"Invalid email or password.\",\"invalid_token\":\"Invalid authentication token.\",\"timeout\":\"Your session expired, please sign in again to continue.\",\"inactive\":\"Your account was not activated yet.\"},\"sessions\":{\"signed_in\":\"Signed in successfully.\",\"signed_out\":\"Signed out successfully.\"},\"passwords\":{\"send_instructions\":\"You will receive an email with instructions about how to reset your password in a few minutes.\",\"updated\":\"Your password was changed successfully. You are now signed in.\"},\"confirmations\":{\"send_instructions\":\"You will receive an email with instructions about how to confirm your account in a few minutes.\",\"confirmed\":\"Your account was successfully confirmed. You are now signed in.\"},\"registrations\":{\"signed_up\":\"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.\",\"updated\":\"You updated your account successfully.\",\"destroyed\":\"Bye! Your account was successfully cancelled. We hope to see you again soon.\"},\"unlocks\":{\"send_instructions\":\"You will receive an email with instructions about how to unlock your account in a few minutes.\",\"unlocked\":\"Your account was successfully unlocked. You are now signed in.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Confirmation instructions\"},\"reset_password_instructions\":{\"subject\":\"Reset password instructions\"},\"unlock_instructions\":{\"subject\":\"Unlock Instructions\"}}},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hour\",\"other\":\"%{count} hours\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} second\",\"other\":\"%{count} seconds\"}}},\"workers\":\"Workers\",\"queue\":\"Queue\",\"no_job\":\"There are no jobs\",\"repositories\":{\"branch\":\"Branch\",\"image_url\":\"Image URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"tabs\":{\"current\":\"Current\",\"build_history\":\"Build History\",\"branches\":\"Branch Summary\",\"pull_requests\":\"Pull Requests\",\"build\":\"Build\",\"job\":\"Job\"}},\"build\":{\"job\":\"Job\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"show_more\":\"Show more\"},\"layouts\":{\"top\":{\"home\":\"Home\",\"blog\":\"Blog\",\"docs\":\"Docs\",\"stats\":\"Stats\",\"github_login\":\"Sign in with Github\",\"profile\":\"Profile\",\"sign_out\":\"Sign Out\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Recent\",\"search\":\"Search\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"See all of our amazing sponsors →\",\"my_repositories\":\"My Repositories\"},\"about\":{\"alpha\":\"This stuff is alpha.\",\"messages\":{\"alpha\":\"Please do not consider this a stable service. We're still far from that! More info here. \"},\"join\":\"Join us and help!\",\"mailing_list\":\"Mailing List\",\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Author\",\"build\":\"Build\",\"build_matrix\":\"Build Matrix\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Compare\",\"config\":\"Config\",\"duration\":\"Duration\",\"finished_at\":\"Finished at\",\"job\":\"Job\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.\",\"config\":\"how to configure custom build options\"},\"messages\":{\"notice\":\"To get started, please read our Getting Started guide .\\n It will only take a couple of minutes. \"},\"token\":\"Token\",\"your_repos\":\"Your Repositories\",\"update\":\"Update\",\"update_locale\":\"Update\",\"your_locale\":\"Your Locale\"}},\"statistics\":{\"index\":{\"count\":\"Count\",\"repo_growth\":\"Repository Growth\",\"total_projects\":\"Total Projects/Repositories\",\"build_count\":\"Build Count\",\"last_month\":\"last month\",\"total_builds\":\"Total Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"es\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"workers\":\"Procesos\",\"queue\":\"Cola\",\"no_job\":\"No hay trabajos\",\"repositories\":{\"branch\":\"Rama\",\"image_url\":\"Imagen URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"tabs\":{\"current\":\"Actual\",\"build_history\":\"Histórico\",\"branches\":\"Ramas\",\"build\":\"Builds\",\"job\":\"Trabajo\"}},\"build\":{\"job\":\"Trabajo\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"sponsored_by\":\"Patrocinado por\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"layouts\":{\"top\":{\"home\":\"Inicio\",\"blog\":\"Blog\",\"docs\":\"Documentación\",\"stats\":\"Estadísticas\",\"github_login\":\"Iniciar sesión con Github\",\"profile\":\"Perfil\",\"sign_out\":\"Desconectar\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Hazme un Fork en Github\",\"recent\":\"Reciente\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Ver todos nuestros patrocinadores →\",\"my_repositories\":\"Mis Repositorios\"},\"about\":{\"alpha\":\"Esto es alpha.\",\"messages\":{\"alpha\":\"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. \"},\"join\":\"Únetenos y ayudanos!\",\"mailing_list\":\"Lista de Correos\",\"repository\":\"Repositorio\",\"twitter\":\"Twitter\"}},\"profiles\":{\"show\":{\"email\":\"Correo electrónico\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \\n Para probar varias versiones de ruby, mira\",\"config\":\"como configurar tus propias opciones para el Build\"},\"messages\":{\"notice\":\"Para comenzar, por favor lee nuestra Guía de Inicio .\\n Solo tomará unos pocos minutos. \"},\"token\":\"Token\",\"your_repos\":\"Tus repositorios\",\"update\":\"Actualizar\",\"update_locale\":\"Actualizar\",\"your_locale\":\"Tu Idioma\"}},\"statistics\":{\"index\":{\"count\":\"Número\",\"repo_growth\":\"Crecimiento de Repositorios\",\"total_projects\":\"Total de Proyectos/Repositorios\",\"build_count\":\"Número de Builds\",\"last_month\":\"mes anterior\",\"total_builds\":\"Total de Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"fr\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} heure\",\"other\":\"%{count} heures\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} secondes\"}}},\"workers\":\"Processus\",\"queue\":\"File\",\"no_job\":\"Pas de tâches\",\"repositories\":{\"branch\":\"Branche\",\"image_url\":\"Image\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"tabs\":{\"current\":\"Actuel\",\"build_history\":\"Historique des tâches\",\"branches\":\"Résumé des branches\",\"build\":\"Construction\",\"job\":\"Tâche\"}},\"build\":{\"job\":\"Tâche\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"builds\":{\"name\":\"Version\",\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"layouts\":{\"top\":{\"home\":\"Accueil\",\"blog\":\"Blog\",\"docs\":\"Documentation\",\"stats\":\"Statistiques\",\"github_login\":\"Connection Github\",\"profile\":\"Profil\",\"sign_out\":\"Déconnection\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Faites un Fork sur Github\",\"recent\":\"Récent\",\"search\":\"Chercher\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Voir tous nos extraordinaire sponsors →\",\"my_repositories\":\"Mes dépôts\"},\"about\":{\"alpha\":\"Ceci est en alpha.\",\"messages\":{\"alpha\":\"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici. \"},\"join\":\"Joignez-vous à nous et aidez-nous!\",\"mailing_list\":\"Liste de distribution\",\"repository\":\"Dépôt\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Version\",\"build_matrix\":\"Matrice des versions\",\"commit\":\"Commit\",\"committer\":\"Committeur\",\"compare\":\"Comparer\",\"config\":\"Config\",\"duration\":\"Durée\",\"finished_at\":\"Terminé à\",\"job\":\"Tâche\",\"log\":\"Journal\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"message\":{\"your_repos\":\"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \\nPour tester sur plus de versions de ruby, voir\",\"config\":\"comment configurer des options de version personnalisées\"},\"messages\":{\"notice\":\"Pour commencer, veuillez lire notre guide de démarrage .\\n Cela ne vous prendra que quelques minutes. \"},\"token\":\"Jeton\",\"your_repos\":\"Vos dépôts\",\"email\":\"Courriel\",\"update\":\"Modifier\",\"update_locale\":\"Modifier\",\"your_locale\":\"Votre langue\"}},\"statistics\":{\"index\":{\"count\":\"Décompte\",\"repo_growth\":\"Croissance de dépôt\",\"total_projects\":\"Total des projets/dépôts\",\"build_count\":\"Décompte des versions\",\"last_month\":\"mois dernier\",\"total_builds\":\"Total des versions\"}},\"admin\":{\"actions\":{\"create\":\"créer\",\"created\":\"créé\",\"delete\":\"supprimer\",\"deleted\":\"supprimé\",\"update\":\"mise à jour\",\"updated\":\"mis à jour\"},\"credentials\":{\"log_out\":\"Déconnection\"},\"delete\":{\"confirmation\":\"Oui, je suis sure\",\"flash_confirmation\":\"%{name} a été détruit avec succès\"},\"flash\":{\"error\":\"%{name} n'a pas pu être %{action}\",\"noaction\":\"Aucune action n'a été entreprise\",\"successful\":\"%{name} a réussi à %{action}\"},\"history\":{\"name\":\"Historique\",\"no_activity\":\"Aucune activité\",\"page_name\":\"Historique pour %{name}\"},\"list\":{\"add_new\":\"Ajouter un nouveau\",\"delete_action\":\"Supprimer\",\"delete_selected\":\"Supprimer la sélection\",\"edit_action\":\"Modifier\",\"search\":\"Rechercher\",\"select\":\"Sélectionner le %{name} à modifier\",\"select_action\":\"Sélectionner\",\"show_all\":\"Montrer tout\"},\"new\":{\"basic_info\":\"Information de base\",\"cancel\":\"Annuler\",\"chosen\":\"%{name} choisi\",\"chose_all\":\"Choisir tout\",\"clear_all\":\"Déselectionner tout\",\"many_chars\":\"caractères ou moins\",\"one_char\":\"caractère.\",\"optional\":\"Optionnel\",\"required\":\"Requis\",\"save\":\"Sauvegarder\",\"save_and_add_another\":\"Sauvegarder et en ajouter un autre\",\"save_and_edit\":\"Sauvegarder et modifier\",\"select_choice\":\"Faites vos choix et cliquez\"},\"dashboard\":{\"add_new\":\"Ajouter un nouveau\",\"last_used\":\"Dernière utilisation\",\"model_name\":\"Nom du modèle\",\"modify\":\"Modification\",\"name\":\"Tableau de bord\",\"pagename\":\"Administration du site\",\"records\":\"Enregistrements\",\"show\":\"Voir\",\"ago\":\"plus tôt\"}},\"home\":{\"name\":\"accueil\"},\"repository\":{\"duration\":\"Durée\"},\"devise\":{\"confirmations\":{\"confirmed\":\"Votre compte a été crée avec succès. Vous être maintenant connecté.\",\"send_instructions\":\"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes.\"},\"failure\":{\"inactive\":\"Votre compte n'a pas encore été activé.\",\"invalid\":\"Adresse courriel ou mot de passe invalide.\",\"invalid_token\":\"Jeton d'authentification invalide.\",\"locked\":\"Votre compte est bloqué.\",\"timeout\":\"Votre session est expirée, veuillez vous reconnecter pour continuer.\",\"unauthenticated\":\"Vous devez vous connecter ou vous enregistrer afin de continuer\",\"unconfirmed\":\"Vous devez confirmer votre compte avant de continuer.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instructions de confirmations\"},\"reset_password_instructions\":{\"subject\":\"Instruction de remise à zéro du mot de passe\"},\"unlock_instructions\":{\"subject\":\"Instruction de débloquage\"}},\"passwords\":{\"send_instructions\":\"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.\",\"updated\":\"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté.\"},\"registrations\":{\"destroyed\":\"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.\",\"signed_up\":\"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.\",\"updated\":\"Votre compte a été mis a jour avec succès\"},\"sessions\":{\"signed_in\":\"Connecté avec succès\",\"signed_out\":\"Déconnecté avec succès\"},\"unlocks\":{\"send_instructions\":\"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.\",\"unlocked\":\"Votre compte a été débloqué avec succès.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"étais déja confirmé\",\"not_found\":\"n'a pas été trouvé\",\"not_locked\":\"n'étais pas bloqué\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"ja\":{\"workers\":\"ワーカー\",\"queue\":\"キュー\",\"no_job\":\"ジョブはありません\",\"repositories\":{\"branch\":\"ブランチ\",\"image_url\":\"画像URL\",\"markdown\":\".md\",\"textile\":\".textile\",\"rdoc\":\".rdoc\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"tabs\":{\"current\":\"最新\",\"build_history\":\"ビルド履歴\",\"branches\":\"ブランチまとめ\",\"build\":\"ビルド\",\"job\":\"ジョブ\"}},\"build\":{\"job\":\"ジョブ\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"ビルドマトリクス\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"builds\":{\"name\":\"ビルド\",\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"失敗許容範囲外\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"layouts\":{\"about\":{\"alpha\":\"まだアルファですよ!\",\"join\":\"参加してみよう!\",\"mailing_list\":\"メールリスト\",\"messages\":{\"alpha\":\"Travis-ciは安定したサービスまで後一歩!詳しくはこちら \"},\"repository\":\"リポジトリ\",\"twitter\":\"ツイッター\"},\"application\":{\"fork_me\":\"Githubでフォークしよう\",\"my_repositories\":\"マイリポジトリ\",\"recent\":\"最近\",\"search\":\"検索\",\"sponsers\":\"スポンサー\",\"sponsors_link\":\"スポンサーをもっと見る →\"},\"top\":{\"blog\":\"ブログ\",\"docs\":\"Travisとは?\",\"github_login\":\"Githubでログイン\",\"home\":\"ホーム\",\"profile\":\"プロフィール\",\"sign_out\":\"ログアウト\",\"stats\":\"統計\",\"admin\":\"管理\"},\"mobile\":{\"author\":\"制作者\",\"build\":\"ビルド\",\"build_matrix\":\"ビルドマトリクス\",\"commit\":\"コミット\",\"committer\":\"コミット者\",\"compare\":\"比較\",\"config\":\"設定\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"job\":\"ジョブ\",\"log\":\"ログ\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"email\":\"メール\",\"message\":{\"config\":\"詳細設定\",\"your_repos\":\"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:\"},\"messages\":{\"notice\":\"まずはTravisのはじめ方 を参照してください。\"},\"token\":\"トークン\",\"your_repos\":\"リポジトリ\",\"update\":\"更新\",\"update_locale\":\"更新\",\"your_locale\":\"言語設定\"}},\"statistics\":{\"index\":{\"build_count\":\"ビルド数\",\"count\":\"数\",\"last_month\":\"先月\",\"repo_growth\":\"リポジトリ\",\"total_builds\":\"合計ビルド数\",\"total_projects\":\"合計リポジトリ\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nb\":{\"admin\":{\"actions\":{\"create\":\"opprett\",\"created\":\"opprettet\",\"delete\":\"slett\",\"deleted\":\"slettet\",\"update\":\"oppdater\",\"updated\":\"oppdatert\"},\"credentials\":{\"log_out\":\"Logg ut\"},\"dashboard\":{\"add_new\":\"Legg til ny\",\"ago\":\"siden\",\"last_used\":\"Sist brukt\",\"model_name\":\"Modell\",\"modify\":\"Rediger\",\"name\":\"Dashbord\",\"pagename\":\"Nettstedsadministrasjon\",\"records\":\"Oppføringer\",\"show\":\"Vis\"},\"delete\":{\"confirmation\":\"Ja, jeg er sikker\",\"flash_confirmation\":\"%{name} ble slettet\"},\"flash\":{\"error\":\"%{name} kunne ikke bli %{action}\",\"noaction\":\"Ingen handlinger ble utført\",\"successful\":\"%{name} ble %{action}\"},\"history\":{\"name\":\"Logg\",\"no_activity\":\"Ingen aktivitet\",\"page_name\":\"Logg for %{name}\"},\"list\":{\"add_new\":\"Legg til ny\",\"delete_action\":\"Slett\",\"delete_selected\":\"Slett valgte\",\"edit_action\":\"Rediger\",\"search\":\"Søk\",\"select\":\"Velg %{name} for å redigere\",\"select_action\":\"Velg\",\"show_all\":\"Vis alle \"},\"new\":{\"basic_info\":\"Basisinformasjon\",\"cancel\":\"Avbryt\",\"chosen\":\"Valgt %{name}\",\"chose_all\":\"Velg alle\",\"clear_all\":\"Fjern alle\",\"many_chars\":\"eller færre tegn.\",\"one_char\":\"tegn.\",\"optional\":\"Valgfri\",\"required\":\"Påkrevd\",\"save\":\"Lagre\",\"save_and_add_another\":\"Lagre og legg til ny\",\"save_and_edit\":\"Lagre og rediger\",\"select_choice\":\"Kryss av for dine valg og klikk\"}},\"build\":{\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\"},\"builds\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testen ble kjørt på en maskin sponset av\"},\"name\":\"Jobb\",\"started_at\":\"Startet\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} time\",\"other\":\"%{count} timer\"},\"minutes_exact\":{\"one\":\"%{count} minutt\",\"other\":\"%{count} minutter\"},\"seconds_exact\":{\"one\":\"%{count} sekund\",\"other\":\"%{count} sekunder\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Din konto er aktivert og du er nå innlogget.\",\"send_instructions\":\"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din.\"},\"failure\":{\"inactive\":\"Kontoen din har ikke blitt aktivert enda.\",\"invalid\":\"Ugyldig e-post eller passord.\",\"invalid_token\":\"Ugyldig autentiseringskode.\",\"locked\":\"Kontoen din er låst.\",\"timeout\":\"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.\",\"unauthenticated\":\"Du må logge inn eller registrere deg for å fortsette.\",\"unconfirmed\":\"Du må bekrefte kontoen din før du kan fortsette.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bekreftelsesinformasjon\"},\"reset_password_instructions\":{\"subject\":\"Instruksjoner for å få nytt passord\"},\"unlock_instructions\":{\"subject\":\"Opplåsningsinstruksjoner\"}},\"passwords\":{\"send_instructions\":\"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.\",\"updated\":\"Passordet ditt ble endret, og du er logget inn.\"},\"registrations\":{\"destroyed\":\"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.\",\"signed_up\":\"Du er nå registrert.\",\"updated\":\"Kontoen din ble oppdatert.\"},\"sessions\":{\"signed_in\":\"Du er nå logget inn.\",\"signed_out\":\"Du er nå logget ut.\"},\"unlocks\":{\"send_instructions\":\"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.\",\"unlocked\":\"Kontoen din ble låst opp, og du er nå logget inn igjen.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"har allerede blitt bekreftet\",\"not_found\":\"ikke funnnet\",\"not_locked\":\"var ikke låst\"}},\"home\":{\"name\":\"hjem\"},\"jobs\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testserien ble kjørt på en maskin sponset av\"},\"started_at\":\"Startet\"},\"layouts\":{\"about\":{\"alpha\":\"Dette er alfa-greier.\",\"join\":\"Bli med og hjelp oss!\",\"mailing_list\":\"E-postliste\",\"messages\":{\"alpha\":\"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her .\"},\"repository\":\"Kodelager\",\"twitter\":\"Twitter.\"},\"application\":{\"fork_me\":\"Se koden på Github\",\"my_repositories\":\"Mine kodelagre\",\"recent\":\"Nylig\",\"search\":\"Søk\",\"sponsers\":\"Sponsorer\",\"sponsors_link\":\"Se alle de flotte sponsorene våre →\"},\"mobile\":{\"author\":\"Forfatter\",\"build\":\"Jobb\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\",\"log\":\"Logg\"},\"top\":{\"admin\":\"Administrator\",\"blog\":\"Blogg\",\"docs\":\"Dokumentasjon\",\"github_login\":\"Logg inn med Github\",\"home\":\"Hjem\",\"profile\":\"Profil\",\"sign_out\":\"Logg ut\",\"stats\":\"Statistikk\"}},\"no_job\":\"Ingen jobber finnnes\",\"profiles\":{\"show\":{\"email\":\"E-post\",\"github\":\"Github\",\"message\":{\"config\":\"hvordan sette opp egne jobbinnstillinger\",\"your_repos\":\"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for\"},\"messages\":{\"notice\":\"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. \"},\"token\":\"Kode\",\"update\":\"Oppdater\",\"update_locale\":\"Oppdater\",\"your_locale\":\"Ditt språk\",\"your_repos\":\"Dine kodelagre\"}},\"queue\":\"Kø\",\"repositories\":{\"branch\":\"Gren\",\"commit\":\"Innsender\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"image_url\":\"Bilde-URL\",\"markdown\":\"Markdown\",\"message\":\"Beskrivelse\",\"rdoc\":\"RDOC\",\"started_at\":\"Startet\",\"tabs\":{\"branches\":\"Grensammendrag\",\"build\":\"Jobb\",\"build_history\":\"Jobblogg\",\"current\":\"Siste\",\"job\":\"Jobb\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Varighet\"},\"statistics\":{\"index\":{\"build_count\":\"Antall jobber\",\"count\":\"Antall\",\"last_month\":\"siste måned\",\"repo_growth\":\"Vekst i kodelager\",\"total_builds\":\"Totale jobber\",\"total_projects\":\"Antall prosjekter/kodelagre\"}},\"workers\":\"Arbeidere\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nl\":{\"admin\":{\"actions\":{\"create\":\"aanmaken\",\"created\":\"aangemaakt\",\"delete\":\"verwijderen\",\"deleted\":\"verwijderd\",\"update\":\"bijwerken\",\"updated\":\"bijgewerkt\"},\"credentials\":{\"log_out\":\"Afmelden\"},\"dashboard\":{\"add_new\":\"Nieuwe toevoegen\",\"ago\":\"geleden\",\"last_used\":\"Laatst gebruikt\",\"model_name\":\"Model naam\",\"modify\":\"Wijzigen\",\"pagename\":\"Site administratie\",\"show\":\"Laten zien\",\"records\":\"Gegevens\"},\"delete\":{\"confirmation\":\"Ja, ik ben zeker\",\"flash_confirmation\":\"%{name} is vernietigd\"},\"flash\":{\"error\":\"%{name} kon niet worden %{action}\",\"noaction\":\"Er zijn geen acties genomen\",\"successful\":\"%{name} is %{action}\"},\"history\":{\"name\":\"Geschiedenis\",\"no_activity\":\"Geen activiteit\",\"page_name\":\"Geschiedenis van %{name}\"},\"list\":{\"add_new\":\"Nieuwe toevoegen\",\"delete_action\":\"Verwijderen\",\"delete_selected\":\"Verwijder geselecteerden\",\"edit_action\":\"Bewerken\",\"search\":\"Zoeken\",\"select\":\"Selecteer %{name} om te bewerken\",\"select_action\":\"Selecteer\",\"show_all\":\"Laat allen zien\"},\"new\":{\"basic_info\":\"Basisinfo\",\"cancel\":\"Annuleren\",\"chosen\":\"%{name} gekozen\",\"chose_all\":\"Kies allen\",\"clear_all\":\"Deselecteer allen\",\"many_chars\":\"tekens of minder.\",\"one_char\":\"teken.\",\"optional\":\"Optioneel\",\"required\":\"Vereist\",\"save\":\"Opslaan\",\"save_and_add_another\":\"Opslaan en een nieuwe toevoegen\",\"save_and_edit\":\"Opslaan en bewerken\",\"select_choice\":\"Selecteer uw keuzes en klik\"}},\"build\":{\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"job\":\"Taak\"},\"builds\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw Matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze tests zijn gedraaid op een machine gesponsord door\"},\"name\":\"Bouw\",\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} uur\",\"other\":\"%{count} uren\"},\"minutes_exact\":{\"one\":\"%{count} minuut\",\"other\":\"%{count} minuten\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} seconden\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Uw account is bevestigd. U wordt nu ingelogd.\",\"send_instructions\":\"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen.\"},\"failure\":{\"inactive\":\"Uw account is nog niet geactiveerd.\",\"invalid\":\"Ongeldig email adres of wachtwoord.\",\"invalid_token\":\"Ongeldig authenticatie token.\",\"locked\":\"Uw account is vergrendeld.\",\"timeout\":\"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.\",\"unauthenticated\":\"U moet inloggen of u registeren voordat u verder gaat.\",\"unconfirmed\":\"U moet uw account bevestigen voordat u verder gaat.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bevestigings-instructies\"},\"reset_password_instructions\":{\"subject\":\"Wachtwoord herstel instructies\"},\"unlock_instructions\":{\"subject\":\"Ontgrendel-instructies\"}},\"passwords\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.\",\"updated\":\"Uw wachtwoord is veranderd. U wordt nu ingelogd.\"},\"registrations\":{\"destroyed\":\"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.\",\"signed_up\":\"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.\",\"updated\":\"Het bijwerken van uw account is gelukt.\"},\"sessions\":{\"signed_in\":\"Inloggen gelukt.\",\"signed_out\":\"Uitloggen gelukt.\"},\"unlocks\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.\",\"unlocked\":\"Uw account is ontgrendeld. U wordt nu ingelogd.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"was al bevestigd\",\"not_found\":\"niet gevonden\",\"not_locked\":\"was niet vergrendeld\"}},\"jobs\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze testen zijn uitgevoerd op een machine gesponsord door\"},\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"layouts\":{\"about\":{\"alpha\":\"Dit is in alfa-stadium.\",\"join\":\"Doe met ons mee en help!\",\"mailing_list\":\"Mailing lijst\",\"messages\":{\"alpha\":\"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. \"},\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Maak een fork op Github\",\"my_repositories\":\"Mijn repositories\",\"recent\":\"Recent\",\"search\":\"Zoeken\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Bekijk al onze geweldige sponsors →\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Bouw\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid op\",\"job\":\"Taak\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"log\":\"Logboek\"},\"top\":{\"admin\":\"Administratie\",\"blog\":\"Blog\",\"docs\":\"Documentatie\",\"github_login\":\"Inloggen met Github\",\"home\":\"Home\",\"profile\":\"Profiel\",\"sign_out\":\"Uitloggen\",\"stats\":\"Statistieken\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Er zijn geen taken\",\"profiles\":{\"show\":{\"email\":\"Email adres\",\"github\":\"Github\",\"message\":{\"config\":\"hoe eigen bouw-opties in te stellen\",\"your_repos\":\"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \\nOm te testen tegen meerdere rubies, zie\"},\"messages\":{\"notice\":\"Om te beginnen kunt u onze startersgids lezen.\\\\n Het zal maar enkele minuten van uw tijd vergen. \"},\"update\":\"Bijwerken\",\"update_locale\":\"Bijwerken\",\"your_locale\":\"Uw taal\",\"your_repos\":\"Uw repositories\",\"token\":\"Token\"}},\"queue\":\"Wachtrij\",\"repositories\":{\"branch\":\"Tak\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"image_url\":\"Afbeeldings URL\",\"message\":\"Bericht\",\"started_at\":\"Gestart\",\"tabs\":{\"branches\":\"Tak samenvatting\",\"build\":\"Bouw\",\"build_history\":\"Bouw geschiedenis\",\"current\":\"Huidig\",\"job\":\"Taak\"},\"commit\":\"Commit\",\"markdown\":\"Markdown\",\"rdoc\":\"RDOC\",\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duur\"},\"statistics\":{\"index\":{\"build_count\":\"Bouw aantal\",\"count\":\"Aantal\",\"last_month\":\"voorbije maand\",\"repo_growth\":\"Repository groei\",\"total_builds\":\"Bouw totaal\",\"total_projects\":\"Projecten/Repository totaal\"}},\"workers\":\"Machines\",\"home\":{\"name\":\"Hoofdpagina\"}},\"pl\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} godzina\",\"other\":\"%{count} godziny\"},\"minutes_exact\":{\"one\":\"%{count} minuta\",\"other\":\"%{count} minuty\"},\"seconds_exact\":{\"one\":\"%{count} sekunda\",\"other\":\"%{count} sekundy\"}}},\"workers\":\"Workers\",\"queue\":\"Kolejka\",\"no_job\":\"Brak zadań\",\"repositories\":{\"branch\":\"Gałąź\",\"image_url\":\"URL obrazka\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"tabs\":{\"current\":\"Aktualny\",\"build_history\":\"Historia Buildów\",\"branches\":\"Wszystkie Gałęzie\",\"build\":\"Build\",\"job\":\"Zadanie\"}},\"build\":{\"job\":\"Zadanie\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Committer\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Komitujący\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"layouts\":{\"top\":{\"home\":\"Start\",\"blog\":\"Blog\",\"docs\":\"Dokumentacja\",\"stats\":\"Statystki\",\"github_login\":\"Zaloguj się przy pomocy Githuba\",\"profile\":\"Profil\",\"sign_out\":\"Wyloguj się\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Ostatnie\",\"search\":\"Wyniki\",\"sponsers\":\"Sponsorzy\",\"sponsors_link\":\"Zobacz naszych wszystkich wspaniałych sponsorów →\",\"my_repositories\":\"Moje repozytoria\"},\"about\":{\"alpha\":\"To wciąż jest wersja alpha.\",\"messages\":{\"alpha\":\"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. \"},\"join\":\"Pomóż i dołącz do nas!\",\"mailing_list\":\"Lista mailingowa\",\"repository\":\"Repozytorium\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Macierz Buildów\",\"commit\":\"Commit\",\"committer\":\"Komitujący\",\"compare\":\"Porównianie\",\"config\":\"Konfiguracja\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"job\":\"Zadanie\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz\",\"config\":\"jak skonfigurować niestandardowe opcje builda\"},\"messages\":{\"notice\":\"Aby zacząć, przeczytaj nasz Przewodnik .\\n Zajmie ci to tylko kilka minut. \"},\"token\":\"Token\",\"your_repos\":\"Twoje repozytoria\"}},\"statistics\":{\"index\":{\"count\":\"Ilość\",\"repo_growth\":\"Przyrost repozytoriów\",\"total_projects\":\"Łącznie projektów/repozytoriów\",\"build_count\":\"Liczba buildów\",\"last_month\":\"ostatni miesiąc\",\"total_builds\":\"Łącznie Buildów\"}},\"date\":{\"abbr_day_names\":[\"nie\",\"pon\",\"wto\",\"śro\",\"czw\",\"pią\",\"sob\"],\"abbr_month_names\":[\"sty\",\"lut\",\"mar\",\"kwi\",\"maj\",\"cze\",\"lip\",\"sie\",\"wrz\",\"paź\",\"lis\",\"gru\"],\"day_names\":[\"niedziela\",\"poniedziałek\",\"wtorek\",\"środa\",\"czwartek\",\"piątek\",\"sobota\"],\"formats\":{\"default\":\"%d-%m-%Y\",\"long\":\"%B %d, %Y\",\"short\":\"%d %b\"},\"month_names\":[\"styczeń\",\"luty\",\"marzec\",\"kwiecień\",\"maj\",\"czerwiec\",\"lipiec\",\"sierpień\",\"wrzesień\",\"październik\",\"listopad\",\"grudzień\"],\"order\":[\"day\",\"month\",\"year\"]},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"musi zostać zaakceptowane\",\"blank\":\"nie może być puste\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"pt-BR\":{\"admin\":{\"actions\":{\"create\":\"criar\",\"created\":\"criado\",\"delete\":\"deletar\",\"deleted\":\"deletado\",\"update\":\"atualizar\",\"updated\":\"atualizado\"},\"credentials\":{\"log_out\":\"Deslogar\"},\"dashboard\":{\"add_new\":\"Adicionar novo\",\"ago\":\"atrás\",\"last_used\":\"Última utilização\",\"model_name\":\"Nome do modelo\",\"modify\":\"Modificar\",\"name\":\"Dashboard\",\"pagename\":\"Administração do site\",\"records\":\"Registros\",\"show\":\"Mostrar\"},\"delete\":{\"confirmation\":\"Sim, tenho certeza\",\"flash_confirmation\":\"%{name} foi destruído com sucesso\"},\"flash\":{\"error\":\"%{name} falhou ao %{action}\",\"noaction\":\"Nenhuma ação foi tomada\",\"successful\":\"%{name} foi %{action} com sucesso\"},\"history\":{\"name\":\"Histórico\",\"no_activity\":\"Nenhuma Atividade\",\"page_name\":\"Histórico para %{name}\"},\"list\":{\"add_new\":\"Adicionar novo\",\"delete_action\":\"Deletar\",\"delete_selected\":\"Deletar selecionados\",\"edit_action\":\"Editar\",\"search\":\"Buscar\",\"select\":\"Selecionar %{name} para editar\",\"select_action\":\"Selecionar\",\"show_all\":\"Mostrar todos\"},\"new\":{\"basic_info\":\"Informações básicas\",\"cancel\":\"Cancelar\",\"chosen\":\"Escolhido %{name}\",\"chose_all\":\"Escolher todos\",\"clear_all\":\"Limpar todos\",\"many_chars\":\"caracteres ou menos.\",\"one_char\":\"caractere.\",\"optional\":\"Opcional\",\"required\":\"Requerido\",\"save\":\"Salvar\",\"save_and_add_another\":\"Salvar e adicionar outro\",\"save_and_edit\":\"Salvar e alterar\",\"select_choice\":\"Selecione e clique\"}},\"build\":{\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\"},\"builds\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"name\":\"Build\",\"started_at\":\"Iniciou em\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Sua conta foi confirmada com sucesso. Você agora está logado.\",\"send_instructions\":\"Você receberá um email com instruções de como confirmar sua conta em alguns minutos.\"},\"failure\":{\"inactive\":\"Sua conta ainda não foi ativada.\",\"invalid\":\"Email ou senha inválidos.\",\"invalid_token\":\"Token de autenticação inválido.\",\"locked\":\"Sua conta está trancada.\",\"timeout\":\"Sua sessão expirou, por favor faça seu login novamente.\",\"unauthenticated\":\"Você precisa fazer o login ou cadastrar-se antes de continuar.\",\"unconfirmed\":\"Você precisa confirmar sua conta antes de continuar.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instruções de confirmação\"},\"reset_password_instructions\":{\"subject\":\"Instruções de atualização de senha\"},\"unlock_instructions\":{\"subject\":\"Instruções de destrancamento\"}},\"passwords\":{\"send_instructions\":\"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.\",\"updated\":\"Sua senha foi alterada com sucesso. Você agora está logado.\"},\"registrations\":{\"destroyed\":\"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!\",\"signed_up\":\"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.\",\"updated\":\"Você atualizou sua conta com sucesso.\"},\"sessions\":{\"signed_in\":\"Logado com sucesso.\",\"signed_out\":\"Deslogado com sucesso.\"},\"unlocks\":{\"send_instructions\":\"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.\",\"unlocked\":\"Sua conta foi destrancada com sucesso. Você agora está logado.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"já foi confirmado\",\"not_found\":\"não encontrado\",\"not_locked\":\"não estava trancado\"}},\"home\":{\"name\":\"home\"},\"jobs\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"started_at\":\"Iniciou em\"},\"layouts\":{\"about\":{\"alpha\":\"Isto é um alpha.\",\"join\":\"Junte-se à nós e ajude!\",\"mailing_list\":\"Lista de email\",\"messages\":{\"alpha\":\"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. \"},\"repository\":\"Repositório\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Faça fork no Github\",\"my_repositories\":\"Meus Repositórios\",\"recent\":\"Recentes\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Conheça todos os nossos patrocinadores →\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\",\"log\":\"Log\"},\"top\":{\"admin\":\"Admin\",\"blog\":\"Blog\",\"docs\":\"Documentação\",\"github_login\":\"Logue com o Github\",\"home\":\"Home\",\"profile\":\"Perfil\",\"sign_out\":\"Sair\",\"stats\":\"Estatísticas\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Não há trabalhos\",\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"config\":\"como configurar opções de build\",\"your_repos\":\"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia\"},\"messages\":{\"notice\":\"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. \"},\"token\":\"Token\",\"update\":\"Atualizar\",\"update_locale\":\"Atualizar\",\"your_locale\":\"Sua língua\",\"your_repos\":\"Seus Repositórios\"}},\"queue\":\"Fila\",\"repositories\":{\"branch\":\"Branch\",\"commit\":\"Commit\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"image_url\":\"URL da imagem\",\"markdown\":\"Markdown\",\"message\":\"Mensagem\",\"rdoc\":\"RDOC\",\"started_at\":\"Iniciou em\",\"tabs\":{\"branches\":\"Sumário do Branch\",\"build\":\"Build\",\"build_history\":\"Histórico de Build\",\"current\":\"Atual\",\"job\":\"Trabalho\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duração\"},\"statistics\":{\"index\":{\"build_count\":\"Número de Builds\",\"count\":\"Número\",\"last_month\":\"último mês\",\"repo_growth\":\"Crescimento de Repositório\",\"total_builds\":\"Total de Builds\",\"total_projects\":\"Total de Projetos/Repositórios\"}},\"workers\":\"Processos\"},\"ru\":{\"admin\":{\"actions\":{\"create\":\"создать\",\"created\":\"создано\",\"delete\":\"удалить\",\"deleted\":\"удалено\",\"update\":\"обновить\",\"updated\":\"обновлено\"},\"credentials\":{\"log_out\":\"Выход\"},\"dashboard\":{\"add_new\":\"Добавить\",\"ago\":\"назад\",\"last_used\":\"Использовалось в последний раз\",\"model_name\":\"Имя модели\",\"modify\":\"Изменить\",\"name\":\"Панель управления\",\"pagename\":\"Управление сайтом\",\"records\":\"Записи\",\"show\":\"Показать\"},\"delete\":{\"confirmation\":\"Да, я уверен\",\"flash_confirmation\":\"%{name} успешно удалено\"},\"history\":{\"name\":\"История\",\"no_activity\":\"Нет активности\",\"page_name\":\"История %{name}\"},\"list\":{\"add_new\":\"Добавить\",\"delete_action\":\"Удалить\",\"delete_selected\":\"Удалить выбранные\",\"edit_action\":\"Редактировать\",\"search\":\"Поиск\",\"select\":\"Для редактирования выберите %{name}\",\"select_action\":\"Выбрать\",\"show_all\":\"Показать все\"},\"new\":{\"basic_info\":\"Основная информация\",\"cancel\":\"Отмена\",\"chosen\":\"Выбрано %{name}\",\"chose_all\":\"Выбрать все\",\"clear_all\":\"Очистить все\",\"one_char\":\"символ.\",\"optional\":\"Необязательно\",\"required\":\"Обязательно\",\"save\":\"Сохранить\",\"save_and_add_another\":\"Сохранить и добавить другое\",\"save_and_edit\":\"Сохранить и продолжить редактирование\",\"select_choice\":\"Выберите и кликните\",\"many_chars\":\"символов или меньше.\"},\"flash\":{\"error\":\"%{name} не удалось %{action}\",\"noaction\":\"Никаких действий не произведено\",\"successful\":\"%{name} было успешно %{action}\"}},\"build\":{\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\"},\"builds\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Дифф\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине, спонсируемой\"},\"name\":\"Билд\",\"started_at\":\"Начало\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} час\",\"few\":\"%{count} часа\",\"many\":\"%{count} часов\",\"other\":\"%{count} часа\"},\"minutes_exact\":{\"one\":\"%{count} минута\",\"few\":\"%{count} минуты\",\"many\":\"%{count} минут\",\"other\":\"%{count} минуты\"},\"seconds_exact\":{\"one\":\"%{count} секунда\",\"few\":\"%{count} секунды\",\"many\":\"%{count} секунд\",\"other\":\"%{count} секунды\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Ваш аккаунт успешно подтвержден. Приветствуем!\",\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта.\"},\"failure\":{\"inactive\":\"Ваш аккаунт еще не активирован.\",\"invalid\":\"Ошибка в адресе почты или пароле.\",\"invalid_token\":\"Неправильный токен аутентификации.\",\"locked\":\"Ваш аккаунт заблокирован.\",\"timeout\":\"Сессия окончена. Для продолжения работы войдите снова.\",\"unauthenticated\":\"Вам нужно войти или зарегистрироваться.\",\"unconfirmed\":\"Вы должны сначала подтвердить свой аккаунт.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Инструкции для подтверждению аккаунта\"},\"reset_password_instructions\":{\"subject\":\"Инструкции для сброса пароля\"},\"unlock_instructions\":{\"subject\":\"Инструкции для разблокирования аккаунта\"}},\"passwords\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.\",\"updated\":\"Ваш пароль успешно изменен. Приветствуем!\"},\"registrations\":{\"destroyed\":\"Ваш аккаунт был успешно удален. Живите долго и процветайте!\",\"signed_up\":\"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.\",\"updated\":\"Аккаунт успешно обновлен.\"},\"sessions\":{\"signed_in\":\"Приветствуем!\",\"signed_out\":\"Удачи!\"},\"unlocks\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.\",\"unlocked\":\"Ваш аккаунт успешно разблокирован. Приветствуем!\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"уже подтвержден\",\"not_found\":\"не найден\",\"not_locked\":\"не заблокирован\"}},\"home\":{\"name\":\"Главная\"},\"jobs\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине спонсируемой\"},\"started_at\":\"Начало\"},\"layouts\":{\"about\":{\"alpha\":\"Это альфа-версия\",\"join\":\"Присоединяйтесь к нам и помогайте!\",\"mailing_list\":\"Лист рассылки\",\"messages\":{\"alpha\":\"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности \"},\"repository\":\"Репозиторий\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"my_repositories\":\"Мои репозитории\",\"recent\":\"Недавние\",\"search\":\"Поиск\",\"sponsers\":\"Спонсоры\",\"sponsors_link\":\"Список всех наших замечательных спонсоров →\"},\"mobile\":{\"author\":\"Автор\",\"build\":\"Сборка\",\"build_matrix\":\"Матрица сборок\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\",\"log\":\"Журнал\"},\"top\":{\"admin\":\"Управление\",\"blog\":\"Блог\",\"docs\":\"Документация\",\"github_login\":\"Войти через Github\",\"home\":\"Главная\",\"profile\":\"Профиль\",\"sign_out\":\"Выход\",\"stats\":\"Статистика\"}},\"no_job\":\"Очередь пуста\",\"profiles\":{\"show\":{\"email\":\"Электронная почта\",\"github\":\"Github\",\"message\":{\"config\":\"как настроить специальные опции билда\",\"your_repos\":\"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \\nДля тестирования на нескольких версиях Ruby смотрите\"},\"messages\":{\"notice\":\"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. \"},\"token\":\"Токен\",\"update\":\"Обновить\",\"update_locale\":\"Обновить\",\"your_locale\":\"Ваш язык\",\"your_repos\":\"Ваши репозитории\"}},\"queue\":\"Очередь\",\"repositories\":{\"branch\":\"Ветка\",\"commit\":\"Коммит\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"image_url\":\"URL изображения\",\"markdown\":\"Markdown\",\"message\":\"Комментарий\",\"rdoc\":\"RDOC\",\"started_at\":\"Начало\",\"tabs\":{\"branches\":\"Статус веток\",\"build\":\"Билд\",\"build_history\":\"История\",\"current\":\"Текущий\",\"job\":\"Задача\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Длительность\"},\"statistics\":{\"index\":{\"build_count\":\"Количество билдов\",\"count\":\"Количество\",\"last_month\":\"прошлый месяц\",\"repo_growth\":\"Рост числа репозиториев\",\"total_builds\":\"Всего билдов\",\"total_projects\":\"Всего проектов/репозиториев\"}},\"workers\":\"Машины\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}}};\n\n\n})();\n//@ sourceURL=config/locales");minispade.register('ext/ember/bound_helper', "(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n context: null,\n options: null,\n property: null,\n // paths of the property that are also observed\n propertyPaths: [],\n\n value: Ember.K,\n\n valueForRender: function() {\n var value = this.value(Ember.get(this.context, this.property), this.options);\n if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n return value;\n },\n\n render: function(buffer) {\n buffer.push(this.valueForRender());\n },\n\n valueDidChange: function() {\n if (this.morph.isRemoved()) { return; }\n this.morph.html(this.valueForRender());\n },\n\n didInsertElement: function() {\n this.valueDidChange();\n },\n\n init: function() {\n this._super();\n Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n },\n\n destroy: function() {\n Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n this._super();\n }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n var propertyPaths = Array.prototype.slice.call(arguments, 2);\n Ember.Handlebars.registerHelper(name, function(property, options) {\n var data = options.data,\n view = data.view,\n ctx = this;\n\n var bindView = view.createChildView(BoundHelperView, {\n property: property,\n propertyPaths: propertyPaths,\n context: ctx,\n options: options.hash,\n value: func\n });\n\n view.appendChild(bindView);\n });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper");minispade.register('ext/ember/namespace', "(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");
\ No newline at end of file
diff --git a/public/scripts/min/app.js b/public/scripts/min/app.js
index 4409f633..94ea26cd 100644
--- a/public/scripts/min/app.js
+++ b/public/scripts/min/app.js
@@ -29619,5248 +29619,4 @@ var _require=function(){function c(a,c){document.addEventListener?a.addEventList
++g&&setTimeout(c,0)})}}();
(function(){!window.WebSocket&&window.MozWebSocket&&(window.WebSocket=window.MozWebSocket);if(window.WebSocket)Pusher.Transport=window.WebSocket,Pusher.TransportType="native";var c=(document.location.protocol=="http:"?Pusher.cdn_http:Pusher.cdn_https)+Pusher.VERSION,a=[];window.JSON||a.push(c+"/json2"+Pusher.dependency_suffix+".js");if(!window.WebSocket)window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION=!0,a.push(c+"/flashfallback"+Pusher.dependency_suffix+".js");var b=function(){return window.WebSocket?function(){Pusher.ready()}:
function(){window.WebSocket?(Pusher.Transport=window.WebSocket,Pusher.TransportType="flash",window.WEB_SOCKET_SWF_LOCATION=c+"/WebSocketMain.swf",WebSocket.__addTask(function(){Pusher.ready()}),WebSocket.__initialize()):(Pusher.Transport=null,Pusher.TransportType="none",Pusher.ready())}}(),e=function(a){var b=function(){document.body?a():setTimeout(b,0)};b()},g=function(){e(b)};a.length>0?_require(a,g):g()})();
-;minispade.register('app', function() {(function() {
-minispade.require('auth');
-minispade.require('controllers');
-minispade.require('helpers');
-minispade.require('models');
-minispade.require('pusher');
-minispade.require('routes');
-minispade.require('slider');
-minispade.require('store');
-minispade.require('tailing');
-minispade.require('templates');
-minispade.require('views');
-minispade.require('config/locales');
-minispade.require('data/sponsors');
-
- Travis.reopen({
- App: Em.Application.extend({
- autoinit: false,
- currentUserBinding: 'auth.user',
- authStateBinding: 'auth.state',
- init: function() {
- this._super.apply(this, arguments);
- this.store = Travis.Store.create();
- this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);
- this.set('auth', Travis.Auth.create({
- app: this,
- endpoint: Travis.config.api_endpoint
- }));
- this.slider = new Travis.Slider();
- this.pusher = new Travis.Pusher(Travis.config.pusher);
- return this.tailing = new Travis.Tailing();
- },
- signIn: function() {
- return this.get('auth').signIn();
- },
- signOut: function() {
- this.get('auth').signOut();
- return this.get('router').send('goToRoot');
- },
- receive: function() {
- return this.store.receive.apply(this.store, arguments);
- },
- toggleSidebar: function() {
- var element;
- $('body').toggleClass('maximized');
- element = $(' ');
- $('#top .profile').append(element);
- Em.run.later((function() {
- return element.remove();
- }), 10);
- element = $(' ');
- $('#repository').append(element);
- return Em.run.later((function() {
- return element.remove();
- }), 10);
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('auth', function() {(function() {
-
- this.Travis.Auth = Ember.Object.extend({
- iframe: $('').hide(),
- timeout: 5000,
- state: 'signed-out',
- receivingEnd: "" + location.protocol + "//" + location.host,
- init: function() {
- var _this = this;
- this.iframe.appendTo('body');
- window.addEventListener('message', function(e) {
- return _this.receiveMessage(e);
- });
- return this.loadUser();
- },
- accessToken: (function() {
- return sessionStorage.getItem('travis.token');
- }).property(),
- loadUser: function() {
- var user;
- if (user = sessionStorage.getItem('travis.user')) {
- return this.setData({
- user: JSON.parse(user)
- });
- } else if (localStorage.getItem('travis.auto_signin')) {
- return this.trySignIn();
- }
- },
- signIn: function() {
- this.set('state', 'signing-in');
- this.trySignIn();
- return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);
- },
- trySignIn: function() {
- return this.iframe.attr('src', "" + this.endpoint + "/auth/post_message?origin=" + this.receivingEnd);
- },
- checkSignIn: function() {
- if (this.get('state') === 'signing-in') {
- return this.forceSignIn();
- }
- },
- forceSignIn: function() {
- localStorage.setItem('travis.auto_signin', 'true');
- return window.location = "" + this.endpoint + "/auth/handshake?redirect_uri=" + location;
- },
- signOut: function() {
- if (typeof localStorage !== "undefined" && localStorage !== null) {
- localStorage.clear();
- }
- if (typeof sessionStorage !== "undefined" && sessionStorage !== null) {
- sessionStorage.clear();
- }
- return this.setData();
- },
- setData: function(data) {
- var user;
- if (typeof data === 'string') {
- data = JSON.parse(data);
- }
- if (data != null ? data.token : void 0) {
- this.storeToken(data.token);
- }
- if (data != null ? data.user : void 0) {
- user = this.storeUser(data.user);
- }
- this.set('state', user ? 'signed-in' : 'signed-out');
- this.set('user', user ? user : void 0);
- if (this.app.get('router')) {
- return this.app.get('router').transitionTo('authenticated');
- }
- },
- storeToken: function(token) {
- sessionStorage.setItem('travis.token', token);
- return this.notifyPropertyChange('accessToken');
- },
- storeUser: function(user) {
- localStorage.setItem('travis.auto_signin', 'true');
- sessionStorage.setItem('travis.user', JSON.stringify(user));
- this.app.store.load(Travis.User, user);
- return this.app.store.find(Travis.User, user.id);
- },
- receiveMessage: function(event) {
- if (event.origin === this.expectedOrigin()) {
- this.setData(event.data);
- return console.log("signed in as " + event.data.user.login);
- } else {
- return console.log("unexpected message " + event.origin + ": " + event.data);
- }
- },
- expectedOrigin: function() {
- if (this.endpoint[0] === '/') {
- return this.receivingEnd;
- } else {
- return this.endpoint;
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers', function() {(function() {
-minispade.require('helpers');
-minispade.require('travis/ticker');
-
- Travis.reopen({
- Controller: Em.Controller.extend({
- connectOutlet: function() {
- var view, _connectedOutletViews;
- view = this._super.apply(this, arguments);
- if (view) {
- _connectedOutletViews = Travis.app.get('_connectedOutletViews');
- if (!_connectedOutletViews) {
- _connectedOutletViews = [];
- }
- _connectedOutletViews.pushObject(view);
- Travis.app.set('_connectedOutletViews', _connectedOutletViews);
- }
- return view;
- }
- }),
- TopController: Em.Controller.extend({
- userBinding: 'Travis.app.currentUser'
- }),
- ApplicationController: Em.Controller.extend(),
- MainController: Em.Controller.extend(),
- StatsLayoutController: Em.Controller.extend(),
- ProfileLayoutController: Em.Controller.extend(),
- AuthLayoutController: Em.Controller.extend()
- });
-minispade.require('controllers/accounts');
-minispade.require('controllers/builds');
-minispade.require('controllers/home');
-minispade.require('controllers/profile');
-minispade.require('controllers/repositories');
-minispade.require('controllers/repository');
-minispade.require('controllers/sidebar');
-minispade.require('controllers/stats');
-
-}).call(this);
-
-});minispade.register('controllers/accounts', function() {(function() {
-
- Travis.AccountsController = Ember.ArrayController.extend({
- tab: 'accounts',
- init: function() {
- return this._super();
- },
- findByLogin: function(login) {
- return this.find(function(account) {
- return account.get('login') === 'login';
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers/builds', function() {(function() {
-
- Travis.BuildsController = Em.ArrayController.extend({
- repositoryBinding: 'parent.repository',
- contentBinding: 'parent.builds'
- });
-
-}).call(this);
-
-});minispade.register('controllers/home', function() {(function() {
-
- Travis.HomeController = Travis.Controller.extend();
-
-}).call(this);
-
-});minispade.register('controllers/job', function() {(function() {
-
-
-
-}).call(this);
-
-});minispade.register('controllers/profile', function() {(function() {
-
- Travis.ProfileController = Travis.Controller.extend({
- name: 'profile',
- userBinding: 'Travis.app.currentUser',
- accountsBinding: 'Travis.app.router.accountsController',
- account: (function() {
- var login;
- login = this.get('params.login') || Travis.app.get('currentUser.login');
- return this.get('accounts').filter(function(account) {
- if (account.get('login') === login) {
- return account;
- }
- })[0];
- }).property('accounts.length', 'params.login'),
- activate: function(action, params) {
- this.setParams(params || this.get('params'));
- return this["view" + ($.camelize(action))]();
- },
- viewHooks: function() {
- this.connectTab('hooks');
- return this.set('hooks', Travis.Hook.find({
- owner_name: this.get('params.login') || Travis.app.get('currentUser.login')
- }));
- },
- viewUser: function() {
- return this.connectTab('user');
- },
- connectTab: function(tab) {
- var viewClass;
- viewClass = Travis["" + ($.camelize(tab)) + "View"];
- this.set('tab', tab);
- return this.connectOutlet({
- outletName: 'pane',
- controller: this,
- viewClass: viewClass
- });
- },
- setParams: function(params) {
- var key, value, _results;
- this.set('params', {});
- _results = [];
- for (key in params) {
- value = params[key];
- _results.push(this.set("params." + key, params[key]));
- }
- return _results;
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers/repositories', function() {(function() {
-
- Travis.RepositoriesController = Ember.ArrayController.extend({
- defaultTab: 'recent',
- sortProperties: ['sortOrder'],
- init: function() {
- this.activate(this.defaultTab);
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- updateTimes: function() {
- var content;
- if (content = this.get('content')) {
- content.forEach(function(r) {
- return r.updateTimes();
- });
- }
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- activate: function(tab, params) {
- this.set('tab', tab);
- return this["view" + ($.camelize(tab))](params);
- },
- viewRecent: function() {
- return this.set('content', Travis.Repository.find());
- },
- viewOwned: function() {
- return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));
- },
- viewSearch: function(params) {
- return this.set('content', Travis.Repository.search(params.search));
- },
- searchObserver: (function() {
- var search, tab;
- search = this.get('search');
- tab = search ? 'search' : 'recent';
- return this.activate(tab, {
- search: search
- });
- }).observes('search')
- });
-
-}).call(this);
-
-});minispade.register('controllers/repository', function() {(function() {
-
- Travis.RepositoryController = Travis.Controller.extend({
- bindings: [],
- init: function() {
- this._super.apply(this, arguments);
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- updateTimes: function() {
- var build, builds;
- if (builds = this.get('builds')) {
- builds.forEach(function(b) {
- return b.updateTimes();
- });
- }
- if (build = this.get('build')) {
- build.updateTimes();
- build.get('jobs').forEach(function(j) {
- return j.updateTimes();
- });
- }
- return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);
- },
- activate: function(action) {
- this._unbind();
- return this["view" + ($.camelize(action))]();
- },
- viewIndex: function() {
- this._bind('repository', 'controllers.repositoriesController.firstObject');
- this._bind('build', 'repository.lastBuild');
- return this.connectTab('current');
- },
- viewCurrent: function() {
- this.connectTab('current');
- return this._bind('build', 'repository.lastBuild');
- },
- viewBuilds: function() {
- this.connectTab('builds');
- return this._bind('builds', 'repository.builds');
- },
- viewPullRequests: function() {
- this.connectTab('pull_requests');
- return this._bind('builds', 'repository.pullRequests');
- },
- viewBranches: function() {
- this.connectTab('branches');
- return this._bind('builds', 'repository.branches');
- },
- viewBuild: function() {
- return this.connectTab('build');
- },
- viewJob: function() {
- this._bind('build', 'job.build');
- return this.connectTab('job');
- },
- repositoryObserver: (function() {
- var repository;
- repository = this.get('repository');
- if (repository) {
- return repository.select();
- }
- }).observes('repository.id'),
- connectTab: function(tab) {
- var name, viewClass;
- name = tab === 'current' ? 'build' : tab;
- viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis["" + ($.camelize(name)) + "View"];
- this.set('tab', tab);
- return this.connectOutlet({
- outletName: 'pane',
- controller: this,
- viewClass: viewClass
- });
- },
- _bind: function(to, from) {
- return this.bindings.push(Ember.oneWay(this, to, from));
- },
- _unbind: function() {
- var binding, _i, _len, _ref;
- _ref = this.bindings;
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- binding = _ref[_i];
- binding.disconnect(this);
- }
- return this.bindings.length = 0;
- }
- });
-
-}).call(this);
-
-});minispade.register('controllers/sidebar', function() {(function() {
-
- Travis.reopen({
- SidebarController: Em.ArrayController.extend({
- init: function() {
- this.tickables = [];
- return Travis.Ticker.create({
- target: this,
- interval: Travis.INTERVALS.sponsors
- });
- },
- tick: function() {
- var tickable, _i, _len, _ref, _results;
- _ref = this.tickables;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- tickable = _ref[_i];
- _results.push(tickable.tick());
- }
- return _results;
- }
- }),
- QueuesController: Em.ArrayController.extend(),
- WorkersController: Em.ArrayController.extend({
- groups: (function() {
- var content, groups, host, worker, _i, _len, _ref;
- if (content = this.get('content')) {
- groups = {};
- _ref = content.toArray();
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- worker = _ref[_i];
- host = worker.get('host');
- if (!groups[host]) {
- groups[host] = Em.ArrayProxy.create({
- content: []
- });
- }
- groups[host].pushObject(worker);
- }
- return $.values(groups);
- }
- }).property('content.length')
- }),
- SponsorsController: Em.ArrayController.extend({
- page: 0,
- arrangedContent: (function() {
- return this.get('shuffled').slice(this.start(), this.end());
- }).property('shuffled.length', 'page'),
- shuffled: (function() {
- var content;
- if (content = this.get('content')) {
- return $.shuffle(content);
- } else {
- return [];
- }
- }).property('content.length'),
- tick: function() {
- return this.set('page', this.isLast() ? 0 : this.get('page') + 1);
- },
- pages: (function() {
- var length;
- length = this.get('content.length');
- if (length) {
- return parseInt(length / this.get('perPage') + 1);
- } else {
- return 1;
- }
- }).property('length'),
- isLast: function() {
- return this.get('page') === this.get('pages') - 1;
- },
- start: function() {
- return this.get('page') * this.get('perPage');
- },
- end: function() {
- return this.start() + this.get('perPage');
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('controllers/stats', function() {(function() {
-
- Travis.StatsController = Travis.Controller.extend({
- name: 'stats',
- init: function() {
- return this._super('top');
- },
- activate: function(action, params) {}
- });
-
-}).call(this);
-
-});minispade.register('helpers', function() {(function() {
-minispade.require('helpers/handlebars');
-minispade.require('helpers/helpers');
-minispade.require('helpers/urls');
-
-}).call(this);
-
-});minispade.register('helpers/handlebars', function() {(function() {
- var safe;
-minispade.require('ext/ember/bound_helper');
-
- safe = function(string) {
- return new Handlebars.SafeString(string);
- };
-
- Handlebars.registerHelper('tipsy', function(text, tip) {
- return safe('' + text + ' ');
- });
-
- Handlebars.registerHelper('t', function(key) {
- return safe(I18n.t(key));
- });
-
- Ember.registerBoundHelper('formatTime', function(value, options) {
- return safe(Travis.Helpers.timeAgoInWords(value) || '-');
- });
-
- Ember.registerBoundHelper('formatDuration', function(duration, options) {
- return safe(Travis.Helpers.timeInWords(duration));
- });
-
- Ember.registerBoundHelper('formatCommit', function(commit, options) {
- if (commit) {
- return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));
- }
- });
-
- Ember.registerBoundHelper('formatSha', function(sha, options) {
- return safe(Travis.Helpers.formatSha(sha));
- });
-
- Ember.registerBoundHelper('pathFrom', function(url, options) {
- return safe(Travis.Helpers.pathFrom(url));
- });
-
- Ember.registerBoundHelper('formatMessage', function(message, options) {
- return safe(Travis.Helpers.formatMessage(message, options));
- });
-
- Ember.registerBoundHelper('formatConfig', function(config, options) {
- return safe(Travis.Helpers.formatConfig(config));
- });
-
- Ember.registerBoundHelper('formatLog', function(log, options) {
- return Travis.Helpers.formatLog(log) || '';
- });
-
-}).call(this);
-
-});minispade.register('helpers/helpers', function() {(function() {
-minispade.require('travis/log');
-minispade.require('emoij');
-
- this.Travis.Helpers = {
- compact: function(object) {
- var key, result, value, _ref;
- result = {};
- _ref = object || {};
- for (key in _ref) {
- value = _ref[key];
- if (!$.isEmpty(value)) {
- result[key] = value;
- }
- }
- return result;
- },
- safe: function(string) {
- return new Handlebars.SafeString(string);
- },
- colorForResult: function(result) {
- if (result === 0) {
- return 'green';
- } else {
- if (result === 1) {
- return 'red';
- } else {
- return null;
- }
- }
- },
- formatCommit: function(sha, branch) {
- return Travis.Helpers.formatSha(sha) + (branch ? " (" + branch + ")" : '');
- },
- formatSha: function(sha) {
- return (sha || '').substr(0, 7);
- },
- formatConfig: function(config) {
- var values;
- config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');
- values = $.map(config, function(value, key) {
- value = (value && value.join ? value.join(', ') : value) || '';
- return '%@: %@'.fmt($.camelize(key), value);
- });
- if (values.length === 0) {
- return '-';
- } else {
- return values.join(', ');
- }
- },
- formatMessage: function(message, options) {
- message = message || '';
- if (options.short) {
- message = message.split(/\n/)[0];
- }
- return this._emojize(this._escape(message)).replace(/\n/g, ' ');
- },
- formatLog: function(log) {
- return Travis.Log.filter(log);
- },
- pathFrom: function(url) {
- return (url || '').split('/').pop();
- },
- timeAgoInWords: function(date) {
- return $.timeago.distanceInWords(date);
- },
- durationFrom: function(started, finished) {
- started = started && this._toUtc(new Date(this._normalizeDateString(started)));
- finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();
- if (started && finished) {
- return Math.round((finished - started) / 1000);
- } else {
- return 0;
- }
- },
- timeInWords: function(duration) {
- var days, hours, minutes, result, seconds;
- days = Math.floor(duration / 86400);
- hours = Math.floor(duration % 86400 / 3600);
- minutes = Math.floor(duration % 3600 / 60);
- seconds = duration % 60;
- if (days > 0) {
- return 'more than 24 hrs';
- } else {
- result = [];
- if (hours === 1) {
- result.push(hours + ' hr');
- }
- if (hours > 1) {
- result.push(hours + ' hrs');
- }
- if (minutes > 0) {
- result.push(minutes + ' min');
- }
- if (seconds > 0) {
- result.push(seconds + ' sec');
- }
- if (result.length > 0) {
- return result.join(' ');
- } else {
- return '-';
- }
- }
- },
- _normalizeDateString: function(string) {
- if (window.JHW) {
- string = string.replace('T', ' ').replace(/-/g, '/');
- string = string.replace('Z', '').replace(/\..*$/, '');
- }
- return string;
- },
- _nowUtc: function() {
- return this._toUtc(new Date());
- },
- _toUtc: function(date) {
- return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
- },
- _emojize: function(text) {
- var emojis;
- emojis = text.match(/:\S+?:/g);
- if (emojis !== null) {
- $.each(emojis.uniq(), function(ix, emoji) {
- var image, strippedEmoji;
- strippedEmoji = emoji.substring(1, emoji.length - 1);
- if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {
- image = ' ';
- return text = text.replace(new RegExp(emoji, 'g'), image);
- }
- });
- }
- return text;
- },
- _escape: function(text) {
- return text.replace(/&/g, '&').replace(//g, '>');
- }
- };
-
-}).call(this);
-
-});minispade.register('helpers/urls', function() {(function() {
-
- this.Travis.Urls = {
- repository: function(slug) {
- return "/" + slug;
- },
- builds: function(slug) {
- return "/" + slug + "/builds";
- },
- pullRequests: function(slug) {
- return "/" + slug + "/pull_requests";
- },
- branches: function(slug) {
- return "/" + slug + "/branches";
- },
- build: function(slug, id) {
- return "/" + slug + "/builds/" + id;
- },
- job: function(slug, id) {
- return "/" + slug + "/jobs/" + id;
- },
- githubCommit: function(slug, sha) {
- return "http://github.com/" + slug + "/commit/" + sha;
- },
- githubRepository: function(slug) {
- return "http://github.com/" + slug;
- },
- githubWatchers: function(slug) {
- return "http://github.com/" + slug + "/watchers";
- },
- githubNetwork: function(slug) {
- return "http://github.com/" + slug + "/network";
- },
- githubAdmin: function(slug) {
- return "http://github.com/" + slug + "/admin/hooks#travis_minibucket";
- },
- statusImage: function(slug, branch) {
- return ("https://secure.travis-ci.org/" + slug + ".png") + (branch ? "?branch=" + branch : '');
- },
- email: function(email) {
- return "mailto:" + email;
- },
- account: function(login) {
- return "/profile/" + login;
- },
- user: function(login) {
- return "/profile/" + login + "/me";
- }
- };
-
-}).call(this);
-
-});minispade.register('models', function() {(function() {
-minispade.require('models/extensions');
-minispade.require('models/account');
-minispade.require('models/artifact');
-minispade.require('models/branch');
-minispade.require('models/build');
-minispade.require('models/commit');
-minispade.require('models/hook');
-minispade.require('models/job');
-minispade.require('models/repository');
-minispade.require('models/sponsor');
-minispade.require('models/user');
-minispade.require('models/worker');
-
-}).call(this);
-
-});minispade.register('models/account', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Account = Travis.Model.extend({
- primaryKey: 'login',
- login: DS.attr('string'),
- name: DS.attr('string'),
- type: DS.attr('string'),
- reposCount: DS.attr('number'),
- urlGithub: (function() {
- return "http://github.com/" + (this.get('login'));
- }).property()
- });
-
-}).call(this);
-
-});minispade.register('models/artifact', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Artifact = Travis.Model.extend({
- body: DS.attr('string'),
- init: function() {
- this._super.apply(this, arguments);
- return this.set('queue', Ember.A([]));
- },
- append: function(body) {
- if (this.get('isLoaded')) {
- return this.set('body', this.get('body') + body);
- } else {
- return this.get('queue').pushObject(body);
- }
- },
- recordDidLoad: (function() {
- var queue;
- if (this.get('isLoaded')) {
- queue = this.get('queue');
- if (queue.get('length') > 0) {
- return this.append(queue.toArray().join(''));
- }
- }
- }).observes('isLoaded')
- });
-
-}).call(this);
-
-});minispade.register('models/branch', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {
- repositoryId: DS.attr('number'),
- commitId: DS.attr('number'),
- number: DS.attr('number'),
- branch: DS.attr('string'),
- message: DS.attr('string'),
- result: DS.attr('number'),
- duration: DS.attr('number'),
- startedAt: DS.attr('string'),
- finishedAt: DS.attr('string'),
- commit: DS.belongsTo('Travis.Commit'),
- repository: (function() {
- if (this.get('repositoryId')) {
- return Travis.Repository.find(this.get('repositoryId'));
- }
- }).property('repositoryId'),
- updateTimes: function() {
- this.notifyPropertyChange('started_at');
- return this.notifyPropertyChange('finished_at');
- }
- });
-
- this.Travis.Branch.reopenClass({
- byRepositoryId: function(id) {
- return this.find({
- repository_id: id
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/build', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {
- eventType: DS.attr('string'),
- repositoryId: DS.attr('number'),
- commitId: DS.attr('number'),
- state: DS.attr('string'),
- number: DS.attr('number'),
- branch: DS.attr('string'),
- message: DS.attr('string'),
- result: DS.attr('number'),
- _duration: DS.attr('number', {
- key: 'duration'
- }),
- startedAt: DS.attr('string', {
- key: 'started_at'
- }),
- finishedAt: DS.attr('string', {
- key: 'finished_at'
- }),
- repository: DS.belongsTo('Travis.Repository'),
- commit: DS.belongsTo('Travis.Commit'),
- jobs: DS.hasMany('Travis.Job', {
- key: 'job_ids'
- }),
- config: (function() {
- return Travis.Helpers.compact(this.get('data.config'));
- }).property('data.config'),
- isMatrix: (function() {
- return this.get('data.job_ids.length') > 1;
- }).property('data.job_ids.length'),
- requiredJobs: (function() {
- return this.get('jobs').filter(function(data) {
- return !data.get('allowFailure');
- });
- }).property('jobs.@each.allowFailure'),
- allowedFailureJobs: (function() {
- return this.get('jobs').filter(function(data) {
- return data.get('allowFailure');
- });
- }).property('jobs.@each.allowFailure'),
- configKeys: (function() {
- var config, headers, key, keys;
- if (!(config = this.get('config'))) {
- return [];
- }
- keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);
- headers = (function() {
- var _i, _len, _ref, _results;
- _ref = ['build.job', 'build.duration', 'build.finished_at'];
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- key = _ref[_i];
- _results.push(I18n.t(key));
- }
- return _results;
- })();
- return $.map(headers.concat(keys), function(key) {
- return $.camelize(key);
- });
- }).property('config')
- });
-
- this.Travis.Build.reopenClass({
- byRepositoryId: function(id, parameters) {
- return this.find($.extend(parameters || {}, {
- repository_id: id
- }));
- },
- olderThanNumber: function(id, build_number) {
- return this.find({
- url: "/builds",
- repository_id: id,
- after_number: build_number
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/commit', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Commit = Travis.Model.extend({
- buildId: DS.attr('number'),
- sha: DS.attr('string'),
- branch: DS.attr('string'),
- message: DS.attr('string'),
- compareUrl: DS.attr('string'),
- authorName: DS.attr('string'),
- authorEmail: DS.attr('string'),
- committerName: DS.attr('string'),
- committerEmail: DS.attr('string'),
- build: DS.belongsTo('Travis.Build', {
- key: 'buildId'
- })
- });
-
-}).call(this);
-
-});minispade.register('models/extensions', function() {(function() {
-
- Travis.DurationCalculations = Ember.Mixin.create({
- duration: (function() {
- var duration;
- if (duration = this.get('_duration')) {
- return duration;
- } else {
- return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));
- }
- }).property('_duration', 'finishedAt', 'startedAt'),
- updateTimes: function() {
- this.notifyPropertyChange('_duration');
- return this.notifyPropertyChange('finished_at');
- }
- });
-
-}).call(this);
-
-});minispade.register('models/hook', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Hook = Travis.Model.extend({
- name: DS.attr('string'),
- ownerName: DS.attr('string'),
- description: DS.attr('string'),
- active: DS.attr('boolean'),
- account: (function() {
- return this.get('slug').split('/')[0];
- }).property('slug'),
- slug: (function() {
- return "" + (this.get('ownerName')) + "/" + (this.get('name'));
- }).property('ownerName', 'name'),
- urlGithub: (function() {
- return "http://github.com/" + (this.get('slug'));
- }).property(),
- urlGithubAdmin: (function() {
- return "http://github.com/" + (this.get('slug')) + "/admin/hooks#travis_minibucket";
- }).property(),
- toggle: function() {
- var transaction;
- transaction = this.get('store').transaction();
- transaction.add(this);
- this.set('active', !this.get('active'));
- return transaction.commit();
- }
- });
-
-}).call(this);
-
-});minispade.register('models/job', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {
- repositoryId: DS.attr('number'),
- buildId: DS.attr('number'),
- commitId: DS.attr('number'),
- logId: DS.attr('number'),
- queue: DS.attr('string'),
- state: DS.attr('string'),
- number: DS.attr('string'),
- result: DS.attr('number'),
- _duration: DS.attr('number', {
- key: 'duration'
- }),
- startedAt: DS.attr('string'),
- finishedAt: DS.attr('string'),
- allowFailure: DS.attr('boolean', {
- key: 'allow_failure'
- }),
- repository: DS.belongsTo('Travis.Repository', {
- key: 'repository_id'
- }),
- build: DS.belongsTo('Travis.Build', {
- key: 'build_id'
- }),
- commit: DS.belongsTo('Travis.Commit', {
- key: 'commit_id'
- }),
- log: DS.belongsTo('Travis.Artifact', {
- key: 'log_id'
- }),
- isQueued: (function() {}).property('state'),
- config: (function() {
- return Travis.Helpers.compact(this.get('data.config'));
- }).property('data.config'),
- sponsor: (function() {
- return this.get('data.sponsor');
- }).property('data.sponsor'),
- configValues: (function() {
- var config;
- if (config = this.get('config')) {
- return $.values($.only.apply(config, Travis.CONFIG_KEYS));
- } else {
- return [];
- }
- }).property('config'),
- appendLog: function(text) {
- var log;
- if (log = this.get('log')) {
- return log.append(text);
- }
- },
- subscribe: function() {
- var id;
- if (id = this.get('id')) {
- return Travis.app.pusher.subscribe("job-" + id);
- }
- },
- onStateChange: (function() {
- if (this.get('state') === 'finished') {
- return Travis.app.pusher.unsubscribe("job-" + (this.get('id')));
- }
- }).observes('state')
- });
-
- this.Travis.Job.reopenClass({
- queued: function(queue) {
- this.find();
- return Travis.app.store.filter(this, function(job) {
- var queued;
- queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;
- return queued && job.get('queue') === ("builds." + queue);
- });
- },
- findMany: function(ids) {
- return Travis.app.store.findMany(this, ids);
- }
- });
-
-}).call(this);
-
-});minispade.register('models/repository', function() {(function() {
-minispade.require('travis/expandable_record_array');
-minispade.require('travis/model');
-
- this.Travis.Repository = Travis.Model.extend({
- slug: DS.attr('string'),
- description: DS.attr('string'),
- lastBuildId: DS.attr('number'),
- lastBuildNumber: DS.attr('string'),
- lastBuildResult: DS.attr('number'),
- lastBuildStartedAt: DS.attr('string'),
- lastBuildFinishedAt: DS.attr('string'),
- lastBuild: DS.belongsTo('Travis.Build'),
- builds: (function() {
- var array, builds, id;
- id = this.get('id');
- builds = Travis.Build.byRepositoryId(id, {
- event_type: 'push'
- });
- array = Travis.ExpandableRecordArray.create({
- type: Travis.Build,
- content: Ember.A([]),
- store: this.get('store')
- });
- array.load(builds);
- return array;
- }).property(),
- pullRequests: (function() {
- var array, builds, id;
- id = this.get('id');
- builds = Travis.Build.byRepositoryId(id, {
- event_type: 'pull_request'
- });
- array = Travis.ExpandableRecordArray.create({
- type: Travis.Build,
- content: Ember.A([]),
- store: this.get('store')
- });
- array.load(builds);
- return array;
- }).property(),
- branches: (function() {
- return Travis.Branch.byRepositoryId(this.get('id'));
- }).property(),
- owner: (function() {
- return (this.get('slug') || '').split('/')[0];
- }).property('slug'),
- name: (function() {
- return (this.get('slug') || '').split('/')[1];
- }).property('slug'),
- lastBuildDuration: (function() {
- var duration;
- duration = this.get('data.last_build_duration');
- if (!duration) {
- duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));
- }
- return duration;
- }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),
- sortOrder: (function() {
- var lastBuildFinishedAt;
- if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {
- return -new Date(lastBuildFinishedAt).getTime();
- } else {
- return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));
- }
- }).property('lastBuildFinishedAt', 'lastBuildId'),
- stats: (function() {
- var _this = this;
- return this.get('_stats') || $.get("https://api.github.com/repos/" + (this.get('slug')), function(data) {
- _this.set('_stats', data);
- return _this.notifyPropertyChange('stats');
- }) && {};
- }).property(),
- select: function() {
- return Travis.Repository.select(this.get('id'));
- },
- updateTimes: function() {
- return this.notifyPropertyChange('lastBuildDuration');
- }
- });
-
- this.Travis.Repository.reopenClass({
- recent: function() {
- return this.find();
- },
- ownedBy: function(login) {
- return this.find({
- owner_name: login,
- orderBy: 'name'
- });
- },
- search: function(query) {
- return this.find({
- search: query,
- orderBy: 'name'
- });
- },
- bySlug: function(slug) {
- var repo;
- repo = $.select(this.find().toArray(), function(repo) {
- return repo.get('slug') === slug;
- });
- if (repo.length > 0) {
- return repo;
- } else {
- return this.find({
- slug: slug
- });
- }
- },
- select: function(id) {
- return this.find().forEach(function(repository) {
- return repository.set('selected', repository.get('id') === id);
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/sponsor', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Sponsor = Travis.Model.extend({
- type: DS.attr('string'),
- url: DS.attr('string'),
- link: DS.attr('string'),
- image: (function() {
- return "/images/sponsors/" + (this.get('data.image'));
- }).property('data.image')
- });
-
- Travis.Sponsor.reopenClass({
- decks: function() {
- return this.platinum().concat(this.gold());
- },
- platinum: function() {
- var platinum, sponsor, _i, _len, _results;
- platinum = this.byType('platinum').toArray();
- _results = [];
- for (_i = 0, _len = platinum.length; _i < _len; _i++) {
- sponsor = platinum[_i];
- _results.push([sponsor]);
- }
- return _results;
- },
- gold: function() {
- var gold, _results;
- gold = this.byType('gold').toArray();
- _results = [];
- while (gold.length > 0) {
- _results.push(gold.splice(0, 2));
- }
- return _results;
- },
- links: function() {
- return this.byType('silver');
- },
- byType: function() {
- var types;
- types = Array.prototype.slice.apply(arguments);
- return Travis.Sponsor.filter(function(sponsor) {
- return types.indexOf(sponsor.get('type')) !== -1;
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('models/user', function() {(function() {
-minispade.require('travis/ajax');
-minispade.require('travis/model');
-
- this.Travis.User = Travis.Model.extend(Travis.Ajax, {
- name: DS.attr('string'),
- email: DS.attr('string'),
- login: DS.attr('string'),
- token: DS.attr('string'),
- locale: DS.attr('string'),
- gravatarId: DS.attr('string'),
- isSyncing: DS.attr('boolean'),
- syncedAt: DS.attr('string'),
- repoCount: DS.attr('number'),
- init: function() {
- if (this.get('isSyncing')) {
- this.poll();
- }
- this._super();
- return Ember.run.next(this, function() {
- var transaction;
- transaction = this.get('store').transaction();
- return transaction.add(this);
- });
- },
- urlGithub: (function() {
- return "https://github.com/" + (this.get('login'));
- }).property(),
- updateLocale: function(locale) {
- var observer, self, transaction;
- this.setWithSession('locale', locale);
- transaction = this.get('transaction');
- transaction.commit();
- self = this;
- observer = function() {
- if (!self.get('isSaving')) {
- self.removeObserver('isSaving', observer);
- transaction = self.get('store').transaction();
- return transaction.add(self);
- }
- };
- return this.addObserver('isSaving', observer);
- },
- type: (function() {
- return 'user';
- }).property(),
- sync: function() {
- this.post('/users/sync');
- this.setWithSession('isSyncing', true);
- return this.poll();
- },
- poll: function() {
- var _this = this;
- return this.ajax('/users', 'get', {
- success: function(data) {
- if (data.user.is_syncing) {
- return Ember.run.later(_this, _this.poll.bind(_this), 3000);
- } else {
- _this.set('isSyncing', false);
- return _this.setWithSession('syncedAt', data.user.synced_at);
- }
- }
- });
- },
- setWithSession: function(name, value) {
- var user;
- this.set(name, value);
- user = JSON.parse(typeof sessionStorage !== "undefined" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);
- user[$.underscore(name)] = this.get(name);
- return typeof sessionStorage !== "undefined" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;
- }
- });
-
-}).call(this);
-
-});minispade.register('models/worker', function() {(function() {
-minispade.require('travis/model');
-
- this.Travis.Worker = Travis.Model.extend({
- state: DS.attr('string'),
- name: DS.attr('string'),
- host: DS.attr('string'),
- lastSeenAt: DS.attr('string'),
- payload: (function() {
- return this.get('data.payload');
- }).property('data.payload'),
- number: (function() {
- return this.get('name').match(/\d+$/)[0];
- }).property('name'),
- isWorking: (function() {
- return this.get('state') === 'working';
- }).property('state'),
- repository: (function() {
- return Travis.Repository.find(this.get('payload.repository.id'));
- }).property('payload.repository.id'),
- job_id: (function() {
- return this.get('payload.job.id');
- }).property('payload.job.id'),
- job: (function() {
- return Travis.Job.find(this.get('job_id'));
- }).property('job_id')
- });
-
-}).call(this);
-
-});minispade.register('pusher', function() {(function() {
-
- Travis.Pusher = function(config) {
- if (config) {
- this.init(config);
- }
- return this;
- };
-
- $.extend(Travis.Pusher, {
- CHANNELS: ['common'],
- CHANNEL_PREFIX: ''
- });
-
- $.extend(Travis.Pusher.prototype, {
- active_channels: [],
- init: function(config) {
- var channel, _i, _len, _ref, _results;
- Pusher.warn = this.warn.bind(this);
- this.pusher = new Pusher(config.key);
- _ref = Travis.Pusher.CHANNELS;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- channel = _ref[_i];
- _results.push(this.subscribe(channel));
- }
- return _results;
- },
- subscribe: function(channel) {
- var _this = this;
- if (this.pusher && this.active_channels.indexOf(channel) === -1) {
- this.active_channels.push(channel);
- return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {
- return _this.receive(event, data);
- });
- }
- },
- unsubscribe: function(channel) {
- var ix;
- ix = this.active_channels.indexOf(channel);
- if (this.pusher && ix === -1) {
- this.active_channels.splice(ix, 1);
- return this.pusher.unsubscribe(this.prefix(channel));
- }
- },
- prefix: function(channel) {
- return "" + Travis.Pusher.CHANNEL_PREFIX + channel;
- },
- receive: function(event, data) {
- if (event.substr(0, 6) === 'pusher') {
- return;
- }
- if (data.id) {
- data = this.normalize(event, data);
- }
- return Ember.run.next(function() {
- return Travis.app.store.receive(event, data);
- });
- },
- normalize: function(event, data) {
- switch (event) {
- case 'build:started':
- case 'build:finished':
- return data;
- case 'job:created':
- case 'job:started':
- case 'job:finished':
- case 'job:log':
- if (data.queue) {
- data.queue = data.queue.replace('builds.', '');
- }
- return {
- job: data
- };
- case 'worker:added':
- case 'worker:updated':
- case 'worker:removed':
- return {
- worker: data
- };
- }
- },
- warn: function(type, warning) {
- if (!this.ignoreWarning(warning)) {
- return console.warn(warning);
- }
- },
- ignoreWarning: function(warning) {
- var message, _ref;
- if (message = (_ref = warning.data) != null ? _ref.message : void 0) {
- return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('routes', function() {(function() {
-
- Travis.Router = Ember.Router.extend({
- location: 'history',
- enableLogging: true,
- initialState: 'loading',
- goToRoot: Ember.Route.transitionTo('root.home.show'),
- goToStats: Ember.Route.transitionTo('root.stats'),
- showRepository: Ember.Route.transitionTo('root.home.repository.show'),
- showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),
- showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),
- showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),
- showBranches: Ember.Route.transitionTo('root.home.repository.branches'),
- showJob: Ember.Route.transitionTo('root.home.repository.job'),
- showProfile: Ember.Route.transitionTo('root.profile'),
- showAccount: Ember.Route.transitionTo('root.profile.account'),
- showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),
- signedIn: function() {
- return !!Travis.app.get('auth.user');
- },
- needsAuth: function(path) {
- return path.indexOf('/profile') === 0 && !this.signedIn();
- },
- loading: Ember.Route.extend({
- routePath: function(router, path) {
- sessionStorage.setItem('travis.path', path);
- if (router.needsAuth(path)) {
- router.transitionTo('root.auth');
- return Travis.app.signIn();
- } else {
- return router.transitionTo('authenticated');
- }
- }
- }),
- authenticated: Ember.Route.extend({
- connectOutlets: function(router) {
- var path;
- path = sessionStorage.getItem('travis.path');
- sessionStorage.removeItem('travis.path');
- router.transitionTo('root');
- if (path) {
- return router.route(path);
- }
- }
- }),
- root: Ember.Route.extend({
- initialState: 'home',
- loading: Ember.State.extend(),
- auth: Ember.Route.extend({
- route: '/auth',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('authLayout');
- $('body').attr('id', 'auth');
- router.get('authLayoutController').connectOutlet('top', 'top');
- return router.get('authLayoutController').connectOutlet('main', 'signin');
- }
- }),
- stats: Ember.Route.extend({
- route: '/stats',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('statsLayout');
- $('body').attr('id', 'stats');
- router.get('statsLayoutController').connectOutlet('top', 'top');
- return router.get('statsLayoutController').connectOutlet('main', 'stats');
- }
- }),
- profile: Ember.Route.extend({
- initialState: 'index',
- route: '/profile',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('profileLayout');
- $('body').attr('id', 'profile');
- router.get('accountsController').set('content', Travis.Account.find());
- router.get('profileLayoutController').connectOutlet('top', 'top');
- return router.get('profileLayoutController').connectOutlet('left', 'accounts');
- },
- index: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- router.get('profileLayoutController').connectOutlet('main', 'profile');
- return router.get('profileController').activate('hooks');
- }
- }),
- account: Ember.Route.extend({
- initialState: 'index',
- route: '/:login',
- connectOutlets: function(router, account) {
- var params;
- if (account) {
- params = {
- login: account.get('login')
- };
- return router.get('profileController').setParams(params);
- } else {
- return router.send('showProfile');
- }
- },
- deserialize: function(router, params) {
- return router.get('accountsController').findByLogin(params.login);
- },
- serialize: function(router, account) {
- if (account) {
- return {
- login: account.get('login')
- };
- } else {
- return {};
- }
- },
- index: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- return router.get('profileController').activate('hooks');
- }
- }),
- profile: Ember.Route.extend({
- route: '/profile',
- connectOutlets: function(router) {
- return router.get('profileController').activate('user');
- }
- })
- })
- }),
- home: Ember.Route.extend({
- initialState: 'show',
- route: '/',
- connectOutlets: function(router) {
- router.get('applicationController').connectOutlet('home');
- $('body').attr('id', 'home');
- router.get('homeController').connectOutlet('left', 'repositories');
- router.get('homeController').connectOutlet('right', 'sidebar');
- router.get('homeController').connectOutlet('top', 'top');
- return router.get('homeController').connectOutlet('main', 'repository');
- },
- show: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- return router.get('repositoryController').activate('index');
- }
- }),
- repository: Ember.Route.extend({
- initialState: 'show',
- route: '/:owner/:name',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').set('repository', repository);
- },
- deserialize: function(router, params) {
- var deferred, observer, repos, slug;
- slug = "" + params.owner + "/" + params.name;
- repos = Travis.Repository.bySlug(slug);
- deferred = $.Deferred();
- observer = function() {
- if (repos.get('isLoaded')) {
- repos.removeObserver('isLoaded', observer);
- return deferred.resolve(repos.objectAt(0));
- }
- };
- repos.addObserver('isLoaded', observer);
- return deferred.promise();
- },
- serialize: function(router, repository) {
- if (repository) {
- return {
- owner: repository.get('owner'),
- name: repository.get('name')
- };
- } else {
- return {};
- }
- },
- show: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router) {
- return router.get('repositoryController').activate('current');
- }
- }),
- builds: Ember.Route.extend({
- route: '/builds',
- initialState: 'index',
- index: Ember.Route.extend({
- route: '/',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').activate('builds');
- }
- }),
- show: Ember.Route.extend({
- route: '/:build_id',
- connectOutlets: function(router, build) {
- if (!build.get) {
- build = Travis.Build.find(build);
- }
- router.get('repositoryController').set('build', build);
- return router.get('repositoryController').activate('build');
- },
- serialize: function(router, build) {
- if (build.get) {
- return {
- build_id: build.get('id')
- };
- } else {
- return {
- build_id: build
- };
- }
- },
- deserialize: function(router, params) {
- var build, deferred, observer;
- build = Travis.Build.find(params.build_id);
- deferred = $.Deferred();
- observer = function() {
- if (build.get('id')) {
- build.removeObserver('id', observer);
- return deferred.resolve(build);
- }
- };
- build.addObserver('id', observer);
- return deferred.promise();
- }
- })
- }),
- pullRequests: Ember.Route.extend({
- route: '/pull_requests',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').activate('pull_requests');
- }
- }),
- branches: Ember.Route.extend({
- route: '/branches',
- connectOutlets: function(router, repository) {
- return router.get('repositoryController').activate('branches');
- }
- }),
- job: Ember.Route.extend({
- route: '/jobs/:job_id',
- connectOutlets: function(router, job) {
- if (!job.get) {
- job = Travis.Job.find(job);
- }
- router.get('repositoryController').set('job', job);
- return router.get('repositoryController').activate('job');
- },
- serialize: function(router, job) {
- if (job.get) {
- return {
- job_id: job.get('id')
- };
- } else {
- return {
- job_id: job
- };
- }
- },
- deserialize: function(router, params) {
- var deferred, job, observer;
- job = Travis.Job.find(params.job_id);
- deferred = $.Deferred();
- observer = function() {
- if (job.get('id')) {
- job.removeObserver('id', observer);
- return deferred.resolve(job);
- }
- };
- job.addObserver('id', observer);
- return deferred.promise();
- }
- })
- })
- })
- })
- });
-
-}).call(this);
-
-});minispade.register('slider', function() {(function() {
-
- this.Travis.Slider = function() {
- if ((typeof localStorage !== "undefined" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {
- this.minimize();
- }
- return this;
- };
-
- $.extend(Travis.Slider.prototype, {
- persist: function() {
- return typeof localStorage !== "undefined" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;
- },
- isMinimized: function() {
- return $('body').hasClass('maximized');
- },
- minimize: function() {
- return $('body').addClass('maximized');
- },
- toggle: function() {
- var element;
- $('body').toggleClass('maximized');
- this.persist();
- element = $(' ');
- $('#top .profile').append(element);
- return Em.run.later((function() {
- return element.remove();
- }), 10);
- }
- });
-
-}).call(this);
-
-});minispade.register('store', function() {(function() {
- var DATA_PROXY,
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-minispade.require('store/rest_adapter');
-
- DATA_PROXY = {
- get: function(name) {
- return this.savedData[name];
- }
- };
-
- Travis.Store = DS.Store.extend({
- revision: 4,
- adapter: Travis.RestAdapter.create(),
- merge: function(type, id, hash) {
- var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;
- if (hash === void 0) {
- hash = id;
- primaryKey = type.proto().primaryKey;
- Ember.assert("A data hash was loaded for a record of type " + type.toString() + " but no primary key '" + primaryKey + "' was provided.", hash[primaryKey]);
- id = hash[primaryKey];
- }
- typeMap = this.typeMapFor(type);
- dataCache = typeMap.cidToHash;
- clientId = typeMap.idToCid[id];
- recordCache = this.get('recordCache');
- if (clientId !== void 0) {
- if (data = dataCache[clientId]) {
- $.extend(data, hash);
- } else {
- dataCache[clientId] = hash;
- }
- if (record = recordCache[clientId]) {
- record.send('didChangeData');
- }
- } else {
- clientId = this.find(type, id).get('clientId');
- }
- if (clientId) {
- DATA_PROXY.savedData = hash;
- this.updateRecordArrays(type, clientId, DATA_PROXY);
- return {
- id: id,
- clientId: clientId
- };
- }
- },
- receive: function(event, data) {
- var job, mappings, name, type, _ref;
- _ref = event.split(':'), name = _ref[0], type = _ref[1];
- mappings = this.adapter.get('mappings');
- type = mappings[name];
- if (event === 'job:log') {
- if (job = this.find(Travis.Job, data['job']['id'])) {
- return job.appendLog(data['job']['_log']);
- }
- } else if (data[type.singularName()]) {
- return this._loadOne(this, type, data);
- } else if (data[type.pluralName()]) {
- return this._loadMany(this, type, data);
- } else {
- if (!type) {
- throw "can't load data for " + name;
- }
- }
- },
- _loadOne: function(store, type, json) {
- var root;
- root = type.singularName();
- this.adapter.sideload(store, type, json, root);
- this.merge(type, json[root]);
- return this._updateAssociations(type, root, json[root]);
- },
- _loadMany: function(store, type, json) {
- var root;
- root = type.pluralName();
- this.adapter.sideload(store, type, json, root);
- return this.loadMany(type, json[root]);
- },
- _updateAssociations: function(type, name, data) {
- var _this = this;
- return Em.get(type, 'associationsByName').forEach(function(key, meta) {
- var clientId, dataProxy, id, ids, parent, _ref;
- if (meta.kind === 'belongsTo') {
- id = data["" + key + "_id"];
- if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {
- if (parent = _this.findByClientId(meta.type, clientId, id)) {
- dataProxy = parent.get('data');
- if (ids = dataProxy.get("" + name + "_ids")) {
- if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {
- ids.pushObject(data.id);
- }
- return parent.send('didChangeData');
- }
- }
- }
- }
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('store/fixture_adapter', function() {(function() {
-
- this.Travis.FixtureAdapter = DS.Adapter.extend({
- find: function(store, type, id) {
- var fixtures;
- fixtures = type.FIXTURES;
- Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);
- if (fixtures.hasLoaded) {
- return;
- }
- return setTimeout((function() {
- store.loadMany(type, fixtures);
- return fixtures.hasLoaded = true;
- }), 300);
- },
- findMany: function() {
- return this.find.apply(this, arguments);
- },
- findAll: function(store, type) {
- var fixtures, ids;
- fixtures = type.FIXTURES;
- Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);
- ids = fixtures.map(function(item, index, self) {
- return item.id;
- });
- return store.loadMany(type, ids, fixtures);
- },
- findQuery: function(store, type, params, array) {
- var fixture, fixtures, hashes, key, matches, value;
- fixtures = type.FIXTURES;
- Ember.assert("Unable to find fixtures for model type " + type.toString(), !!fixtures);
- hashes = (function() {
- var _i, _len, _results;
- _results = [];
- for (_i = 0, _len = fixtures.length; _i < _len; _i++) {
- fixture = fixtures[_i];
- matches = (function() {
- var _results1;
- _results1 = [];
- for (key in params) {
- value = params[key];
- _results1.push(key === 'orderBy' || fixture[key] === value);
- }
- return _results1;
- })();
- if (matches.reduce(function(a, b) {
- return a && b;
- })) {
- _results.push(fixture);
- } else {
- _results.push(null);
- }
- }
- return _results;
- })();
- return array.load(hashes.compact());
- }
- });
-
-}).call(this);
-
-});minispade.register('store/rest_adapter', function() {(function() {
-minispade.require('travis/ajax');
-minispade.require('models');
-
- this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {
- mappings: {
- repositories: Travis.Repository,
- repository: Travis.Repository,
- builds: Travis.Build,
- build: Travis.Build,
- commits: Travis.Commit,
- commit: Travis.Commit,
- jobs: Travis.Job,
- job: Travis.Job,
- account: Travis.Account,
- accounts: Travis.Account,
- worker: Travis.Worker,
- workers: Travis.Worker
- },
- plurals: {
- repository: 'repositories',
- build: 'builds',
- branch: 'branches',
- job: 'jobs',
- worker: 'workers',
- profile: 'profile'
- }
- });
-
-}).call(this);
-
-});minispade.register('tailing', function() {(function() {
-
- this.Travis.Tailing = function() {
- this.position = $(window).scrollTop();
- $(window).scroll(this.onScroll.bind(this));
- return this;
- };
-
- $.extend(Travis.Tailing.prototype, {
- options: {
- timeout: 200
- },
- run: function() {
- this.autoScroll();
- this.positionButton();
- if (this.active()) {
- return Ember.run.later(this.run.bind(this), this.options.timeout);
- }
- },
- toggle: function(event) {
- if (this.active()) {
- return this.stop();
- } else {
- return this.start();
- }
- },
- active: function() {
- return $('#tail').hasClass('active');
- },
- start: function() {
- $('#tail').addClass('active');
- return this.run();
- },
- stop: function() {
- return $('#tail').removeClass('active');
- },
- autoScroll: function() {
- var log, logBottom, win, winBottom;
- if (!this.active()) {
- return;
- }
- win = $(window);
- log = $('#log');
- logBottom = log.offset().top + log.outerHeight() + 40;
- winBottom = win.scrollTop() + win.height();
- if (logBottom - winBottom > 0) {
- return win.scrollTop(logBottom - win.height());
- }
- },
- onScroll: function() {
- var position;
- this.positionButton();
- position = $(window).scrollTop();
- if (position < this.position) {
- this.stop();
- }
- return this.position = position;
- },
- positionButton: function() {
- var max, offset, tail;
- tail = $('#tail');
- if (tail.length === 0) {
- return;
- }
- offset = $(window).scrollTop() - $('#log').offset().top;
- max = $('#log').height() - $('#tail').height() + 5;
- if (offset > max) {
- offset = max;
- }
- if (offset > 0) {
- return tail.css({
- top: offset - 2
- });
- } else {
- return tail.css({
- top: 0
- });
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('views', function() {(function() {
-minispade.require('ext/ember/namespace');
-
- this.Travis.reopen({
- View: Em.View.extend({
- popup: function(event) {
- return $("#" + event.target.name).toggleClass('display');
- }
- })
- });
-
- this.Travis.reopen({
- HomeView: Travis.View.extend({
- templateName: 'layouts/home'
- }),
- AuthLayoutView: Travis.View.extend({
- templateName: 'layouts/simple'
- }),
- ProfileLayoutView: Travis.View.extend({
- templateName: 'layouts/profile'
- }),
- StatsLayoutView: Travis.View.extend({
- templateName: 'layouts/simple'
- }),
- ApplicationView: Travis.View.extend({
- templateName: 'application'
- })
- });
-minispade.require('views/accounts');
-minispade.require('views/build');
-minispade.require('views/job');
-minispade.require('views/repo');
-minispade.require('views/profile');
-minispade.require('views/sidebar');
-minispade.require('views/stats');
-minispade.require('views/signin');
-minispade.require('views/top');
-
-}).call(this);
-
-});minispade.register('views/accounts', function() {(function() {
-
- this.Travis.reopen({
- AccountsView: Travis.View.extend({
- tabBinding: 'controller.tab',
- templateName: 'profile/accounts',
- classAccounts: (function() {
- if (this.get('tab') === 'accounts') {
- return 'active';
- }
- }).property('tab')
- }),
- AccountsListView: Em.CollectionView.extend({
- elementId: 'accounts',
- accountBinding: 'content',
- tagName: 'ul',
- emptyView: Ember.View.extend({
- template: Ember.Handlebars.compile('Loading
')
- }),
- itemViewClass: Travis.View.extend({
- accountBinding: 'content',
- typeBinding: 'content.type',
- selectedBinding: 'account.selected',
- classNames: ['account'],
- classNameBindings: ['type', 'selected'],
- name: (function() {
- return this.get('content.name') || this.get('content.login');
- }).property('content.login', 'content.name'),
- urlAccount: (function() {
- return Travis.Urls.account(this.get('account.login'));
- }).property('account.login')
- })
- })
- });
-
-}).call(this);
-
-});minispade.register('views/build', function() {(function() {
-
- this.Travis.reopen({
- BuildsView: Travis.View.extend({
- templateName: 'builds/list',
- buildsBinding: 'controller.builds',
- showMore: function() {
- var id, number;
- id = this.get('controller.repository.id');
- number = this.get('builds.lastObject.number');
- return this.get('builds').load(Travis.Build.olderThanNumber(id, number));
- },
- ShowMoreButton: Em.View.extend({
- tagName: 'button',
- classNameBindings: ['isLoading'],
- attributeBindings: ['disabled'],
- isLoadingBinding: 'controller.builds.isLoading',
- template: Em.Handlebars.compile('{{view.label}}'),
- disabledBinding: 'isLoading',
- label: (function() {
- if (this.get('isLoading')) {
- return 'Loading';
- } else {
- return 'Show more';
- }
- }).property('isLoading'),
- click: function() {
- return this.get('parentView').showMore();
- }
- })
- }),
- BuildsItemView: Travis.View.extend({
- tagName: 'tr',
- classNameBindings: ['color'],
- repositoryBinding: 'controller.repository',
- buildBinding: 'context',
- commitBinding: 'build.commit',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('build.result'));
- }).property('build.result'),
- urlBuild: (function() {
- return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));
- }).property('repository.slug', 'build.id'),
- urlGithubCommit: (function() {
- return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));
- }).property('repository.slug', 'commit.sha')
- }),
- BuildView: Travis.View.extend({
- templateName: 'builds/show',
- elementId: 'build',
- classNameBindings: ['color', 'loading'],
- repositoryBinding: 'controller.repository',
- buildBinding: 'controller.build',
- commitBinding: 'build.commit',
- loading: (function() {
- return !this.get('build.isLoaded');
- }).property('build.isLoaded'),
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('build.result'));
- }).property('build.result'),
- urlBuild: (function() {
- return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));
- }).property('repository.slug', 'build.id'),
- urlGithubCommit: (function() {
- return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));
- }).property('repository.slug', 'commit.sha'),
- urlAuthor: (function() {
- return Travis.Urls.email(this.get('commit.authorEmail'));
- }).property('commit.authorEmail'),
- urlCommitter: (function() {
- return Travis.Urls.email(this.get('commit.committerEmail'));
- }).property('commit.committerEmail')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/job', function() {(function() {
-
- this.Travis.reopen({
- JobsView: Travis.View.extend({
- templateName: 'jobs/list',
- buildBinding: 'controller.build'
- }),
- JobsItemView: Travis.View.extend({
- tagName: 'tr',
- classNameBindings: ['color'],
- repositoryBinding: 'context.repository',
- jobBinding: 'context',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('job.result'));
- }).property('job.result'),
- urlJob: (function() {
- return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));
- }).property('repository.slug', 'job.id')
- }),
- JobView: Travis.View.extend({
- templateName: 'jobs/show',
- repositoryBinding: 'controller.repository',
- jobBinding: 'controller.job',
- commitBinding: 'job.commit',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('job.result'));
- }).property('job.result'),
- urlJob: (function() {
- return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));
- }).property('repository.slug', 'job.id'),
- urlGithubCommit: (function() {
- return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));
- }).property('repository.slug', 'commit.sha'),
- urlAuthor: (function() {
- return Travis.Urls.email(this.get('commit.authorEmail'));
- }).property('commit.authorEmail'),
- urlCommitter: (function() {
- return Travis.Urls.email(this.get('commit.committerEmail'));
- }).property('commit.committerEmail')
- }),
- LogView: Travis.View.extend({
- templateName: 'jobs/log',
- logBinding: 'job.log',
- click: function(event) {
- return $(event.target).closest('.fold').toggleClass('open');
- },
- toTop: function() {
- return $(window).scrollTop(0);
- },
- jobBinding: 'context',
- toggleTailing: function(event) {
- Travis.app.tailing.toggle();
- return event.preventDefault();
- },
- logSubscriber: (function() {
- var job, state;
- job = this.get('job');
- state = this.get('job.state');
- if (job && state !== 'finished') {
- job.subscribe();
- }
- return null;
- }).property('job', 'job.state')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/left', function() {(function() {
-
- this.Travis.reopen({
- ReposView: Travis.View.extend({
- templateName: 'repos/list',
- tabBinding: 'controller.tab',
- classRecent: (function() {
- if (this.get('tab') === 'recent') {
- return 'active';
- }
- }).property('tab'),
- classOwned: (function() {
- var classes;
- classes = [];
- if (this.get('tab') === 'owned') {
- classes.push('active');
- }
- if (Travis.app.get('currentUser')) {
- classes.push('display');
- }
- return classes.join(' ');
- }).property('tab', 'Travis.currentUser'),
- classSearch: (function() {
- if (this.get('tab') === 'search') {
- return 'active';
- }
- }).property('tab')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/profile', function() {(function() {
-
- this.Travis.reopen({
- ProfileView: Travis.View.extend({
- templateName: 'profile/show',
- accountBinding: 'controller.account',
- name: (function() {
- return this.get('account.name') || this.get('account.login');
- }).property('account.name', 'account.login')
- }),
- ProfileTabsView: Travis.View.extend({
- templateName: 'profile/tabs',
- tabBinding: 'controller.tab',
- activate: function(event) {
- return this.get('controller').activate(event.target.name);
- },
- classHooks: (function() {
- if (this.get('tab') === 'hooks') {
- return 'active';
- }
- }).property('tab'),
- classUser: (function() {
- if (this.get('tab') === 'user') {
- return 'active';
- }
- }).property('tab'),
- accountBinding: 'controller.account',
- displayUser: (function() {
- return this.get('controller.account.login') === this.get('controller.user.login');
- }).property('controller.account.login', 'controller.user.login')
- }),
- HooksView: Travis.View.extend({
- templateName: 'profile/tabs/hooks',
- userBinding: 'controller.user',
- urlGithubAdmin: (function() {
- return Travis.Urls.githubAdmin(this.get('hook.slug'));
- }).property('hook.slug')
- }),
- UserView: Travis.View.extend({
- templateName: 'profile/tabs/user',
- userBinding: 'controller.user',
- gravatarUrl: (function() {
- return "" + location.protocol + "//www.gravatar.com/avatar/" + (this.get('user.gravatarId')) + "?s=48&d=mm";
- }).property('user.gravatarId'),
- locales: (function() {
- return [
- {
- key: null,
- name: ''
- }, {
- key: 'en',
- name: 'English'
- }, {
- key: 'ca',
- name: 'Catalan'
- }, {
- key: 'cs',
- name: 'Čeština'
- }, {
- key: 'es',
- name: 'Español'
- }, {
- key: 'fr',
- name: 'Français'
- }, {
- key: 'ja',
- name: '日本語'
- }, {
- key: 'nl',
- name: 'Nederlands'
- }, {
- key: 'nb',
- name: 'Norsk Bokmål'
- }, {
- key: 'pl',
- name: 'Polski'
- }, {
- key: {
- 'pt-BR': {
- name: 'Português brasileiro'
- }
- }
- }, {
- key: 'ru',
- name: 'Русский'
- }
- ];
- }).property(),
- saveLocale: function(event) {
- return this.get('user').updateLocale($('#locale').val());
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('views/repo', function() {(function() {
-minispade.require('views/repo/list');
-minispade.require('views/repo/show');
-
-}).call(this);
-
-});minispade.register('views/repo/list', function() {(function() {
-
- this.Travis.reopen({
- RepositoriesView: Travis.View.extend({
- templateName: 'repos/list',
- toggleInfo: function(event) {
- return $('#repositories').toggleClass('open');
- }
- }),
- RepositoriesListView: Em.CollectionView.extend({
- elementId: 'repositories',
- tagName: 'ul',
- emptyView: Ember.View.extend({
- template: Ember.Handlebars.compile('Loading
')
- }),
- itemViewClass: Travis.View.extend({
- repositoryBinding: 'content',
- classNames: ['repository'],
- classNameBindings: ['color', 'selected'],
- selectedBinding: 'repository.selected',
- color: (function() {
- return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));
- }).property('repository.lastBuildResult'),
- urlRepository: (function() {
- return Travis.Urls.repository(this.get('repository.slug'));
- }).property('repository.slug'),
- urlLastBuild: (function() {
- return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));
- }).property('repository.slug', 'repository.lastBuildId')
- })
- }),
- ReposListTabsView: Travis.View.extend({
- templateName: 'repos/list/tabs',
- tabBinding: 'controller.tab',
- activate: function(event) {
- return this.get('controller').activate(event.target.name);
- },
- classRecent: (function() {
- if (this.get('tab') === 'recent') {
- return 'active';
- }
- }).property('tab'),
- classOwned: (function() {
- var classes;
- classes = [];
- if (this.get('tab') === 'owned') {
- classes.push('active');
- }
- if (Travis.app.get('currentUser')) {
- classes.push('display-inline');
- }
- return classes.join(' ');
- }).property('tab', 'Travis.app.currentUser'),
- classSearch: (function() {
- if (this.get('tab') === 'search') {
- return 'active';
- }
- }).property('tab')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/repo/show', function() {(function() {
-
- this.Travis.reopen({
- RepositoryView: Travis.View.extend({
- templateName: 'repos/show',
- repositoryBinding: 'controller.repository',
- "class": (function() {
- if (!this.get('repository.isLoaded')) {
- return 'loading';
- }
- }).property('repository.isLoaded'),
- urlGithub: (function() {
- return Travis.Urls.githubRepository(this.get('repository.slug'));
- }).property('repository.slug'),
- urlGithubWatchers: (function() {
- return Travis.Urls.githubWatchers(this.get('repository.slug'));
- }).property('repository.slug'),
- urlGithubNetwork: (function() {
- return Travis.Urls.githubNetwork(this.get('repository.slug'));
- }).property('repository.slug')
- }),
- RepoShowTabsView: Travis.View.extend({
- templateName: 'repos/show/tabs',
- repositoryBinding: 'controller.repository',
- buildBinding: 'controller.build',
- jobBinding: 'controller.job',
- tabBinding: 'controller.tab',
- classCurrent: (function() {
- if (this.get('tab') === 'current') {
- return 'active';
- }
- }).property('tab'),
- classBuilds: (function() {
- if (this.get('tab') === 'builds') {
- return 'active';
- }
- }).property('tab'),
- classPullRequests: (function() {
- if (this.get('tab') === 'pull_requests') {
- return 'active';
- }
- }).property('tab'),
- classBranches: (function() {
- if (this.get('tab') === 'branches') {
- return 'active';
- }
- }).property('tab'),
- classBuild: (function() {
- var classes, tab;
- tab = this.get('tab');
- classes = [];
- if (tab === 'build') {
- classes.push('active');
- }
- if (tab === 'build' || tab === 'job') {
- classes.push('display-inline');
- }
- return classes.join(' ');
- }).property('tab'),
- classJob: (function() {
- if (this.get('tab') === 'job') {
- return 'active display-inline';
- }
- }).property('tab')
- }),
- RepoShowToolsView: Travis.View.extend({
- templateName: 'repos/show/tools',
- repositoryBinding: 'controller.repository',
- buildBinding: 'controller.build',
- jobBinding: 'controller.job',
- tabBinding: 'controller.tab',
- toggle: function() {
- var element;
- element = $('#tools .pane').toggleClass('display-inline');
- return this.set('active', element.hasClass('display-inline'));
- },
- branches: (function() {
- if (this.get('active')) {
- return this.get('repository.branches');
- }
- }).property('active', 'repository.branches'),
- urlRepository: (function() {
- return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));
- }).property('repository.slug'),
- urlStatusImage: (function() {
- return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));
- }).property('repository.slug', 'branch'),
- markdownStatusImage: (function() {
- return "[) + ")](" + (this.get('urlRepository')) + ")";
- }).property('urlStatusImage'),
- textileStatusImage: (function() {
- return "!" + (this.get('urlStatusImage')) + "!:" + (this.get('urlRepository'));
- }).property('urlStatusImage'),
- rdocStatusImage: (function() {
- return "{ }[" + (this.get('urlRepository')) + "]";
- }).property('urlStatusImage')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/sidebar', function() {(function() {
-
- this.Travis.reopen({
- SidebarView: Travis.View.extend({
- templateName: 'layouts/sidebar',
- DecksView: Em.View.extend({
- templateName: "sponsors/decks",
- controller: Travis.SponsorsController.create({
- perPage: 1
- }),
- didInsertElement: function() {
- var controller;
- controller = this.get('controller');
- if (!controller.get('content')) {
- Travis.app.get('router.sidebarController').tickables.push(controller);
- controller.set('content', Travis.Sponsor.decks());
- }
- return this._super.apply(this, arguments);
- }
- }),
- LinksView: Em.View.extend({
- templateName: "sponsors/links",
- controller: Travis.SponsorsController.create({
- perPage: 6
- }),
- didInsertElement: function() {
- var controller;
- controller = this.get('controller');
- if (!controller.get('content')) {
- controller.set('content', Travis.Sponsor.links());
- Travis.app.get('router.sidebarController').tickables.push(controller);
- }
- return this._super.apply(this, arguments);
- }
- }),
- WorkersView: Em.View.extend({
- templateName: 'workers/list',
- controller: Travis.WorkersController.create(),
- didInsertElement: function() {
- this.set('controller.content', Travis.Worker.find());
- return this._super.apply(this, arguments);
- }
- }),
- QueuesView: Em.View.extend({
- templateName: 'queues/list',
- controller: Travis.QueuesController.create(),
- didInsertElement: function() {
- var queue, queues;
- queues = (function() {
- var _i, _len, _ref, _results;
- _ref = Travis.QUEUES;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- queue = _ref[_i];
- _results.push(Em.ArrayController.create({
- content: Travis.Job.queued(queue.name),
- id: "queue_" + queue.name,
- name: queue.display
- }));
- }
- return _results;
- })();
- this.set('controller.content', queues);
- return this._super.apply(this, arguments);
- }
- })
- }),
- WorkersView: Travis.View.extend({
- toggleWorkers: function(event) {
- var handle;
- handle = $(event.target).toggleClass('open');
- if (handle.hasClass('open')) {
- return $('#workers li').addClass('open');
- } else {
- return $('#workers li').removeClass('open');
- }
- }
- }),
- WorkersListView: Travis.View.extend({
- toggle: function(event) {
- return $(event.target).closest('li').toggleClass('open');
- }
- }),
- WorkersItemView: Travis.View.extend({
- display: (function() {
- var name, number, payload, repo, state;
- name = (this.get('worker.name') || '').replace('travis-', '');
- state = this.get('worker.state');
- payload = this.get('worker.payload');
- if (state === 'working' && payload !== void 0) {
- repo = payload.repository.slug;
- number = ' #' + payload.build.number;
- return ("" + name + ": " + repo + " " + number).htmlSafe();
- } else {
- return "" + name + ": " + state;
- }
- }).property('worker.state')
- }),
- QueueItemView: Travis.View.extend({
- tagName: 'li',
- urlJob: (function() {
- return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));
- }).property('job.repository.slug', 'job.id')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/signin', function() {(function() {
-
- this.Travis.reopen({
- SigninView: Travis.View.extend({
- templateName: 'auth/signin',
- signingIn: (function() {
- return Travis.app.get('authState');
- }).property('Travis.app.authState')
- })
- });
-
-}).call(this);
-
-});minispade.register('views/stats', function() {(function() {
-
- this.Travis.reopen({
- StatsView: Travis.View.extend({
- templateName: 'stats/show',
- didInsertElement: function() {},
- renderChart: function(config) {
- var chart;
- chart = new Highcharts.Chart(config);
- return this.fetch(config.source, function(data) {
- var stats;
- stats = (function() {
- var _i, _len, _ref, _results;
- _ref = data.stats;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- stats = _ref[_i];
- _results.push(config.map(stats));
- }
- return _results;
- })();
- return chart.series[0].setData(stats);
- });
- },
- fetch: function(url, callback) {
- return $.ajax({
- type: 'GET',
- url: url,
- accepts: {
- json: 'application/vnd.travis-ci.2+json'
- },
- success: callback
- });
- },
- CHARTS: {
- repos: {
- source: '/api/stats/repos',
- total: 0,
- map: function(data) {
- return [Date.parse(data.date), this.total += parseInt(data.count)];
- },
- chart: {
- renderTo: "repos_stats"
- },
- title: {
- text: "Total Projects/Repositories"
- },
- xAxis: {
- type: "datetime",
- dateTimeLabelFormats: {
- month: "%e. %b",
- year: "%b"
- }
- },
- yAxis: {
- title: {
- text: "Count"
- },
- min: 0
- },
- tooltip: {
- formatter: function() {
- return Highcharts.dateFormat("%e. %b", this.x) + ": " + this.y + " repos";
- }
- },
- series: [
- {
- name: "Repository Growth",
- data: []
- }
- ]
- },
- builds: {
- source: '/api/stats/tests',
- map: function(data) {
- return [Date.parse(data.date), parseInt(data.count)];
- },
- chart: {
- renderTo: "tests_stats",
- type: "column"
- },
- title: {
- text: "Build Count"
- },
- subtitle: {
- text: "last month"
- },
- xAxis: {
- type: "datetime",
- dateTimeLabelFormats: {
- month: "%e. %b",
- year: "%b"
- }
- },
- yAxis: {
- title: {
- text: "Count"
- },
- min: 0
- },
- tooltip: {
- formatter: function() {
- return Highcharts.dateFormat("%e. %b", this.x) + ": " + this.y + " builds";
- }
- },
- series: [
- {
- name: "Total Builds",
- data: []
- }
- ]
- }
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('views/top', function() {(function() {
-
- this.Travis.reopen({
- TopView: Travis.View.extend({
- templateName: 'layouts/top',
- tabBinding: 'controller.tab',
- userBinding: 'controller.user',
- gravatarUrl: (function() {
- return "" + location.protocol + "//www.gravatar.com/avatar/" + (this.get('user.gravatarId')) + "?s=24&d=mm";
- }).property('user.gravatarId'),
- classHome: (function() {
- if (this.get('tab') === 'home') {
- return 'active';
- }
- }).property('tab'),
- classStats: (function() {
- if (this.get('tab') === 'stats') {
- return 'active';
- }
- }).property('tab'),
- classProfile: (function() {
- var classes;
- classes = ['profile'];
- if (this.get('tab') === 'profile') {
- classes.push('active');
- }
- classes.push(Travis.app.get('authState'));
- return classes.join(' ');
- }).property('tab', 'Travis.app.authState'),
- showProfile: function() {
- return $('#top .profile ul').show();
- },
- hideProfile: function() {
- return $('#top .profile ul').hide();
- }
- })
- });
-
-}).call(this);
-
-});minispade.register('data/sponsors', function() {(function() {
-
- this.Travis.SPONSORS = [
- {
- type: 'platinum',
- url: "http://www.wooga.com",
- image: "wooga-205x130.png"
- }, {
- type: 'platinum',
- url: "http://bendyworks.com",
- image: "bendyworks-205x130.png"
- }, {
- type: 'platinum',
- url: "http://cloudcontrol.com",
- image: "cloudcontrol-205x130.png"
- }, {
- type: 'platinum',
- url: "http://xing.de",
- image: "xing-205x130.png"
- }, {
- type: 'gold',
- url: "http://heroku.com",
- image: "heroku-205x60.png"
- }, {
- type: 'gold',
- url: "http://soundcloud.com",
- image: "soundcloud-205x60.png"
- }, {
- type: 'gold',
- url: "http://nedap.com",
- image: "nedap-205x60.png"
- }, {
- type: 'gold',
- url: "http://mongohq.com",
- image: "mongohq-205x60.png"
- }, {
- type: 'gold',
- url: "http://zweitag.de",
- image: "zweitag-205x60.png"
- }, {
- type: 'gold',
- url: "http://kanbanery.com",
- image: "kanbanery-205x60.png"
- }, {
- type: 'gold',
- url: "http://ticketevolution.com",
- image: "ticketevolution-205x60.jpg"
- }, {
- type: 'gold',
- url: "http://plan.io/travis",
- image: "planio-205x60.png"
- }, {
- type: 'silver',
- link: "Cobot : The one tool to run your coworking space "
- }, {
- type: 'silver',
- link: "JumpstartLab : We build developers "
- }, {
- type: 'silver',
- link: "Evil Martians : Agile Ruby on Rails development "
- }, {
- type: 'silver',
- link: "Zendesk : Love your helpdesk "
- }, {
- type: 'silver',
- link: "Stripe : Payments for developers "
- }, {
- type: 'silver',
- link: "Basho : We make Riak! "
- }, {
- type: 'silver',
- link: "Relevance : We deliver software solutions "
- }, {
- type: 'silver',
- link: "Mindmatters : Software für Menschen "
- }, {
- type: 'silver',
- link: "Amen : The best and worst of everything "
- }, {
- type: 'silver',
- link: "Site5 : Premium Web Hosting Solutions "
- }, {
- type: 'silver',
- link: "Crowd Interactive : Leading Rails consultancy in Mexico "
- }, {
- type: 'silver',
- link: "Atomic Object : Work with really smart people "
- }, {
- type: 'silver',
- link: "Codeminer : smart services for your startup "
- }, {
- type: 'silver',
- link: "Cloudant : grow into your data layer, not out of it "
- }, {
- type: 'silver',
- link: "Gidsy : Explore, organize & book unique things to do! "
- }, {
- type: 'silver',
- link: "5apps : Package & deploy HTML5 apps automatically "
- }, {
- type: 'silver',
- link: "Meltmedia : We are Interactive Superheroes "
- }, {
- type: 'silver',
- link: "Fingertips offers design and development services "
- }, {
- type: 'silver',
- link: "Engine Yard : Build epic apps, let us handle the rest "
- }, {
- type: 'silver',
- link: "Malwarebytes : Defeat Malware once and for all. "
- }, {
- type: 'silver',
- link: "Readmill : The best reading app on the iPad. "
- }, {
- type: 'silver',
- link: "Medidata : clinical tech improving quality of life "
- }, {
- type: 'silver',
- link: "ESM : Japan's best agile Ruby/Rails consultancy "
- }, {
- type: 'silver',
- link: "Twitter : instantly connects people everywhere "
- }, {
- type: 'silver',
- link: "AGiLE ANiMAL : we <3 Travis CI. "
- }, {
- type: 'silver',
- link: "Tupalo : Discover, review & share local businesses. "
- }
- ];
-
-}).call(this);
-
-});minispade.register('emoij', function() {(function() {
-
- this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];
-
-}).call(this);
-
-});minispade.register('ext/jquery', function() {(function() {
-
- $.fn.extend({
- outerHtml: function() {
- return $(this).wrap('
').parent().html();
- },
- outerElement: function() {
- return $($(this).outerHtml()).empty();
- },
- flash: function() {
- return Utils.flash(this);
- },
- unflash: function() {
- return Utils.unflash(this);
- },
- filterLog: function() {
- this.deansi();
- return this.foldLog();
- },
- deansi: function() {
- return this.html(Utils.deansi(this.html()));
- },
- foldLog: function() {
- return this.html(Utils.foldLog(this.html()));
- },
- unfoldLog: function() {
- return this.html(Utils.unfoldLog(this.html()));
- },
- updateTimes: function() {
- return Utils.updateTimes(this);
- },
- activateTab: function(tab) {
- return Utils.activateTab(this, tab);
- },
- timeInWords: function() {
- return $(this).each(function() {
- return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));
- });
- },
- updateGithubStats: function(repository) {
- return Utils.updateGithubStats(repository, $(this));
- }
- });
-
- $.extend({
- isEmpty: function(obj) {
- if ($.isArray(obj)) {
- return !obj.length;
- } else if ($.isObject(obj)) {
- return !$.keys(obj).length;
- } else {
- return !obj;
- }
- },
- isObject: function(obj) {
- return Object.prototype.toString.call(obj) === '[object Object]';
- },
- keys: function(obj) {
- var keys;
- keys = [];
- $.each(obj, function(key) {
- return keys.push(key);
- });
- return keys;
- },
- values: function(obj) {
- var values;
- values = [];
- $.each(obj, function(key, value) {
- return values.push(value);
- });
- return values;
- },
- underscore: function(string) {
- return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {
- if (chr) {
- return "_" + (chr.toUpperCase());
- } else {
- return '';
- }
- });
- },
- camelize: function(string, uppercase) {
- string = uppercase === false ? $.underscore(string) : $.capitalize(string);
- return string.replace(/_(.)?/g, function(match, chr) {
- if (chr) {
- return chr.toUpperCase();
- } else {
- return '';
- }
- });
- },
- capitalize: function(string) {
- return string[0].toUpperCase() + string.substring(1);
- },
- compact: function(object) {
- return $.grep(object, function(value) {
- return !!value;
- });
- },
- all: function(array, callback) {
- var args, i;
- args = Array.prototype.slice.apply(arguments);
- callback = args.pop();
- array = args.pop() || this;
- i = 0;
- while (i < array.length) {
- if (callback(array[i])) {
- return false;
- }
- i++;
- }
- return true;
- },
- detect: function(array, callback) {
- var args, i;
- args = Array.prototype.slice.apply(arguments);
- callback = args.pop();
- array = args.pop() || this;
- i = 0;
- while (i < array.length) {
- if (callback(array[i])) {
- return array[i];
- }
- i++;
- }
- },
- select: function(array, callback) {
- var args, i, result;
- args = Array.prototype.slice.apply(arguments);
- callback = args.pop();
- array = args.pop() || this;
- result = [];
- i = 0;
- while (i < array.length) {
- if (callback(array[i])) {
- result.push(array[i]);
- }
- i++;
- }
- return result;
- },
- slice: function(object, key) {
- var keys, result;
- keys = Array.prototype.slice.apply(arguments);
- object = (typeof keys[0] === 'object' ? keys.shift() : this);
- result = {};
- for (key in object) {
- if (keys.indexOf(key) > -1) {
- result[key] = object[key];
- }
- }
- return result;
- },
- only: function(object) {
- var key, keys, result;
- keys = Array.prototype.slice.apply(arguments);
- object = (typeof keys[0] === 'object' ? keys.shift() : this);
- result = {};
- for (key in object) {
- if (keys.indexOf(key) !== -1) {
- result[key] = object[key];
- }
- }
- return result;
- },
- except: function(object) {
- var key, keys, result;
- keys = Array.prototype.slice.apply(arguments);
- object = (typeof keys[0] === 'object' ? keys.shift() : this);
- result = {};
- for (key in object) {
- if (keys.indexOf(key) === -1) {
- result[key] = object[key];
- }
- }
- return result;
- },
- intersect: function(array, other) {
- return array.filter(function(element) {
- return other.indexOf(element) !== -1;
- });
- },
- map: function(elems, callback, arg) {
- var i, isArray, key, length, ret, value;
- value = void 0;
- key = void 0;
- ret = [];
- i = 0;
- length = elems.length;
- isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);
- if (isArray) {
- while (i < length) {
- value = callback(elems[i], i, arg);
- if (value != null) {
- ret[ret.length] = value;
- }
- i++;
- }
- } else {
- for (key in elems) {
- value = callback(elems[key], key, arg);
- if (value != null) {
- ret[ret.length] = value;
- }
- }
- }
- return ret.concat.apply([], ret);
- },
- shuffle: function(array) {
- var current, tmp, top;
- array = array.slice();
- top = array.length;
- while (top && --top) {
- current = Math.floor(Math.random() * (top + 1));
- tmp = array[current];
- array[current] = array[top];
- array[top] = tmp;
- }
- return array;
- },
- truncate: function(string, length) {
- if (string.length > length) {
- return string.trim().substring(0, length) + '...';
- } else {
- return string;
- }
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/ajax', function() {(function() {
-
- jQuery.support.cors = true;
-
- this.Travis.Ajax = Ember.Mixin.create({
- DEFAULT_OPTIONS: {
- accepts: {
- json: 'application/vnd.travis-ci.2+json'
- }
- },
- post: function(url, data, callback) {
- return this.ajax(url, 'post', {
- data: data,
- success: callback
- });
- },
- ajax: function(url, method, options) {
- var accessToken, endpoint, _base, _ref;
- endpoint = Travis.config.api_endpoint || '';
- options = options || {};
- if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {
- options.headers || (options.headers = {});
- (_base = options.headers)['Authorization'] || (_base['Authorization'] = "token " + accessToken);
- }
- options.url = "" + endpoint + url;
- options.type = method;
- options.dataType = 'json';
- options.contentType = 'application/json; charset=utf-8';
- options.context = this;
- if (options.data && method !== 'GET' && method !== 'get') {
- options.data = JSON.stringify(options.data);
- }
- return $.ajax($.extend(options, this.DEFAULT_OPTIONS));
- }
- });
-
- this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {
- get: function(url, callback) {
- return this.ajax(url, 'get', {
- success: callback
- });
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/expandable_record_array', function() {(function() {
-
- Travis.ExpandableRecordArray = DS.RecordArray.extend({
- isLoaded: false,
- isLoading: false,
- load: function(array) {
- var observer, self;
- this.set('isLoading', true);
- self = this;
- observer = function() {
- var content;
- if (this.get('isLoaded')) {
- content = self.get('content');
- array.removeObserver('isLoaded', observer);
- array.forEach(function(record) {
- return self.pushObject(record);
- });
- self.set('isLoading', false);
- return self.set('isLoaded', true);
- }
- };
- return array.addObserver('isLoaded', observer);
- },
- pushObject: function(record) {
- var clientId, id, ids;
- ids = this.get('content');
- id = record.get('id');
- clientId = record.get('clientId');
- if (ids.contains(clientId)) {
- return;
- }
- return ids.pushObject(clientId);
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/log', function() {(function() {
-
- this.Travis.Log = {
- FOLDS: {
- schema: /(\$ (?:bundle exec )?rake( db:create)? db:schema:load[\s\S]*?-- assume_migrated_upto_version[\s\S]*?<\/p>\n.*<\/p>)/g,
- migrate: /(\$ (?:bundle exec )?rake( db:create)? db:migrate[\s\S]*== +\w+: migrated \(.*\) =+)/g,
- bundle: /(\$ bundle install.*<\/p>\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\/p>\n|<\/p>\n)*)/g,
- exec: /([\/\w]*.rvm\/rubies\/[\S]*?\/(ruby|rbx|jruby) .*?<\/p>)/g
- },
- filter: function(log) {
- log = this.escape(log);
- log = this.deansi(log);
- log = log.replace(/\r/g, '');
- log = this.number(log);
- log = this.fold(log);
- log = log.replace(/\n/g, '');
- return log;
- },
- stripPaths: function(log) {
- return log.replace(/\/home\/vagrant\/builds(\/[^\/\n]+){2}\//g, '');
- },
- escape: function(log) {
- return Handlebars.Utils.escapeExpression(log);
- },
- escapeRuby: function(log) {
- return log.replace(/#<(\w+.*?)>/, '#<$1>');
- },
- number: function(log) {
- var result;
- result = '';
- $.each(log.trim().split('\n'), function(ix, line) {
- var number, path;
- number = ix + 1;
- path = Travis.Log.location().substr(1).replace(/\/L\d+/, '') + '/L' + number;
- return result += '%@ %@
\n'.fmt(path, path, number, number, line);
- });
- return result.trim();
- },
- deansi: function(log) {
- var ansi, text;
- log = log.replace(/\r\r/g, '\r').replace(/\033\[K\r/g, '\r').replace(/^.*\r(?!$)/gm, '').replace(/\[2K/g, '').replace(/\033\(B/g, "");
- ansi = ansiparse(log);
- text = '';
- ansi.forEach(function(part) {
- var classes;
- classes = [];
- part.foreground && classes.push(part.foreground);
- part.background && classes.push('bg-' + part.background);
- part.bold && classes.push('bold');
- part.italic && classes.push('italic');
- return text += (classes.length ? '' + part.text + ' ' : part.text);
- });
- return text.replace(/\033/g, '');
- },
- fold: function(log) {
- log = this.unfold(log);
- $.each(Travis.Log.FOLDS, function(name, pattern) {
- return log = log.replace(pattern, function() {
- return '' + arguments[1].trim() + '
';
- });
- });
- return log;
- },
- unfold: function(log) {
- return log.replace(/([\s\S]*?)<\/div>/g, '$1\n');
- },
- location: function() {
- return window.location.hash;
- }
- };
-
-}).call(this);
-
-});minispade.register('travis/model', function() {(function() {
-
- this.Travis.Model = DS.Model.extend({
- primaryKey: 'id',
- id: DS.attr('number'),
- refresh: function() {
- var id;
- id = this.get('id');
- if (id) {
- return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);
- }
- },
- update: function(attrs) {
- var _this = this;
- $.each(attrs, function(key, value) {
- if (key !== 'id') {
- return _this.set(key, value);
- }
- });
- return this;
- }
- });
-
- this.Travis.Model.reopenClass({
- find: function() {
- if (arguments.length === 0) {
- return Travis.app.store.findAll(this);
- } else {
- return this._super.apply(this, arguments);
- }
- },
- filter: function(callback) {
- return Travis.app.store.filter(this, callback);
- },
- load: function(attrs) {
- return Travis.app.store.load(this, attrs);
- },
- buildURL: function(suffix) {
- var base, url;
- base = this.url || this.pluralName();
- Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');
- Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');
- url = [base];
- if (suffix !== void 0) {
- url.push(suffix);
- }
- return url.join('/');
- },
- singularName: function() {
- var name, parts;
- parts = this.toString().split('.');
- name = parts[parts.length - 1];
- return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);
- },
- pluralName: function() {
- return Travis.app.store.adapter.pluralize(this.singularName());
- }
- });
-
-}).call(this);
-
-});minispade.register('travis/ticker', function() {(function() {
-
- this.Travis.Ticker = Ember.Object.extend({
- init: function() {
- if (this.get('interval') !== -1) {
- return this.schedule();
- }
- },
- tick: function() {
- var context, target, targets, _i, _len;
- context = this.get('context');
- targets = this.get('targets') || [this.get('target')];
- for (_i = 0, _len = targets.length; _i < _len; _i++) {
- target = targets[_i];
- if (context) {
- target = context.get(target);
- }
- if (target) {
- target.tick();
- }
- }
- return this.schedule();
- },
- schedule: function() {
- var _this = this;
- return Ember.run.later((function() {
- return _this.tick();
- }), this.get('interval') || Travis.app.TICK_INTERVAL);
- }
- });
-
-}).call(this);
-
-});minispade.register('travis', function() {(function() {
-minispade.require('ext/jquery');
-minispade.require('ext/ember/namespace');
-
- this.Travis = Em.Namespace.create({
- config: {
- api_endpoint: $('meta[rel="travis.api_endpoint"]').attr('href')
- },
- CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],
- ROUTES: {
- 'profile/:login/me': ['profile', 'user'],
- 'profile/:login': ['profile', 'hooks'],
- 'profile': ['profile', 'hooks'],
- 'stats': ['stats', 'show'],
- ':owner/:name/jobs/:id/:line': ['home', 'job'],
- ':owner/:name/jobs/:id': ['home', 'job'],
- ':owner/:name/builds/:id': ['home', 'build'],
- ':owner/:name/builds': ['home', 'builds'],
- ':owner/:name/pull_requests': ['home', 'pullRequests'],
- ':owner/:name/branches': ['home', 'branches'],
- ':owner/:name': ['home', 'current'],
- '': ['home', 'index'],
- '#': ['home', 'index']
- },
- QUEUES: [
- {
- name: 'common',
- display: 'Common'
- }, {
- name: 'php',
- display: 'PHP, Perl and Python'
- }, {
- name: 'node_js',
- display: 'Node.js'
- }, {
- name: 'jvmotp',
- display: 'JVM and Erlang'
- }, {
- name: 'rails',
- display: 'Rails'
- }, {
- name: 'spree',
- display: 'Spree'
- }
- ],
- INTERVALS: {
- sponsors: -1,
- times: -1,
- updateTimes: 1000
- },
- run: function(attrs) {
- var _this = this;
- if (location.hash.slice(0, 2) === '#!') {
- location.href = location.href.replace('#!/', '');
- }
- return this.loadConfig(function(config) {
- var app;
- app = Travis.App.create(attrs || {});
- $.each(Travis, function(key, value) {
- if (value && value.isClass && key !== 'constructor') {
- return app[key] = value;
- }
- });
- _this.app = app;
- _this.store = app.store;
- return $(function() {
- return app.initialize();
- });
- });
- },
- loadConfig: function(callback) {
- var _this = this;
- return this.ajax.get('/config', function(data) {
- $.extend(_this.config, data.config);
- console.log("Connecting to " + data.config.api_endpoint);
- return callback(data.config);
- });
- }
- });
-minispade.require('travis/ajax');
-minispade.require('app');
-
-}).call(this);
-
-});minispade.register('templates', function() {
-Ember.TEMPLATES['application'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression;
-
-
- stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['auth/signin'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
-
- data.buffer.push("\n
Signing in \n
\n Trying to authenticate with GitHub.\n
\n");}
-
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n
Sign in \n
\n Sign in with GitHub \n
\n");
- return buffer;}
-
- stack1 = helpers['if'].call(depth0, "view.signingIn", {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['builds/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n\n \n ");
- stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n
\n ");
- stack1 = helpers.view.call(depth0, "view.ShowMoreButton", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contextBinding'] = "build";
- stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n ");
- stack1 = helpers['if'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n \n ");
- foundHelper = helpers.formatCommit;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n
\n ");
- stack1 = {};
- stack1['short'] = "true";
- foundHelper = helpers.formatMessage;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n
\n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-function program4(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n
\n ");
- stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program6(depth0,data) {
-
-
- data.buffer.push("\n
Loading
\n");}
-
- stack1 = helpers['if'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['builds/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
-
- data.buffer.push("\n
Loading \n ");}
-
-function program4(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n ");
- stack1 = helpers['if'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n\n \n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.formatCommit;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers['if'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatMessage;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push(" \n\n ");
- stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n\n ");
- stack1 = helpers['if'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n
");
- stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.pathFrom;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program11(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program13(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.formatConfig;
- stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program15(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['jobsBinding'] = "build.requiredJobs";
- stack1['required'] = "true";
- stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- stack1 = {};
- stack1['jobsBinding'] = "build.allowedFailureJobs";
- stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program17(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contextBinding'] = "build.jobs.firstObject";
- stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
- stack1 = helpers['with'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['jobs/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n \n ");
- stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n
\n ");
- stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n\n ");
- stack1 = helpers.unless.call(depth0, "view.required", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n
\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.build_matrix", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.build_matrix", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program4(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- return buffer;}
-
-function program6(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "key", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program8(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contextBinding'] = "job";
- stack1 = helpers.view.call(depth0, "Travis.JobsItemView", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n ");
- stack1 = helpers['if'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- stack1 = helpers.each.call(depth0, "value", "in", "configValues", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program10(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program12(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "value", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program14(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- return buffer;}
-
- stack1 = helpers['if'].call(depth0, "view.jobs.length", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['jobs/log'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n Follow logs \n ");
- foundHelper = helpers.formatLog;
- stack1 = foundHelper ? foundHelper.call(depth0, "log.body", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatLog", "log.body", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push(" \n\n ");
- stack1 = helpers['if'].call(depth0, "sponsor.name", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n To top \n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- return buffer;}
-
-function program4(depth0,data) {
-
-
- data.buffer.push("\n \n Loading \n
\n");}
-
- stack1 = helpers._triageMustache.call(depth0, "view.logSubscriber", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n");
- stack1 = helpers['if'].call(depth0, "log.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['jobs/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "job.isLoaded", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n
\n \n
Job \n \n \n ");
- stack1 = helpers['if'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "job.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "job.finishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "job.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "job.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n\n \n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
");
- foundHelper = helpers.formatCommit;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers['if'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatMessage;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.formatConfig;
- stack1 = foundHelper ? foundHelper.call(depth0, "job.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "job.config", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n\n ");
- stack1 = {};
- stack1['contextBinding'] = "job";
- stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.compare", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- foundHelper = helpers.pathFrom;
- stack1 = foundHelper ? foundHelper.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "commit.compareUrl", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.author", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "commit.authorName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "jobs.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.committer", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "commit.committerName", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program11(depth0,data) {
-
-
- data.buffer.push("\n \n Loading \n
\n ");}
-
- stack1 = helpers['with'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/home'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "right", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "right", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/profile'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n
\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n\n\n\n");
- stack1 = helpers.view.call(depth0, "view.DecksView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n");
- stack1 = helpers.view.call(depth0, "view.WorkersView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n");
- stack1 = helpers.view.call(depth0, "view.QueuesView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n");
- stack1 = helpers.view.call(depth0, "view.LinksView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.join", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.join", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.repository", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.repository", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": Github \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.twitter", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.twitter", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": @travisci \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": travis-ci \n irc.freenode.net#travis \n \n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/simple'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
-
-
- data.buffer.push("\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['layouts/top'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push("\n Travis \n \n\n\n \n Home \n \n \n Stats \n \n \n Blog \n \n \n Docs \n \n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.github_login", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.github_login", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n Signing in \n
\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.profile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.profile", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n \n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/accounts'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n Repositories: \n ");
- stack1 = helpers._triageMustache.call(depth0, "view.content.reposCount", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
\n ");
- return buffer;}
-
- data.buffer.push("\n
\n\n\n\n\n ");
- stack1 = {};
- stack1['contentBinding'] = "controller";
- foundHelper = helpers.collection;
- stack1 = foundHelper ? foundHelper.call(depth0, "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push("");
- stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n\n");
- stack1 = helpers.view.call(depth0, "Travis.ProfileTabsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n \n ");
- return buffer;}
-
- data.buffer.push("\n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.displayUser", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "user.isSyncing", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n");
- return buffer;}
-function program2(depth0,data) {
-
-
- data.buffer.push("\n \n Please wait while we sync from GitHub \n
\n ");}
-
-function program4(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n Last synchronized from GitHub: ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "user.syncedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "user.syncedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n Sync now\n \n
\n\n \n ");
- stack1 = helpers.each.call(depth0, "hook", "in", "hooks", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- return buffer;}
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n ");
- stack1 = helpers._triageMustache.call(depth0, "hook.slug", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- stack1 = helpers._triageMustache.call(depth0, "hook.description", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "
\n\n \n \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
-
- data.buffer.push("\n \n You do not seem to have any repositories that we could sync.\n \n ");}
-
-function program9(depth0,data) {
-
-
- data.buffer.push("\n \n Loading \n
\n");}
-
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n");
- stack1 = helpers['if'].call(depth0, "hooks.isLoaded", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push(" \n\n\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.github", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.github", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ":\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.login", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.email", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.email", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ":\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.email", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.token", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.token", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ":\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "user.token", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n\n\n\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['queues/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "queue", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "queue", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": ");
- stack1 = helpers._triageMustache.call(depth0, "queue.name", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n \n ");
- stack1 = helpers.each.call(depth0, "job", "in", "queue", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['jobBinding'] = "job";
- stack1 = helpers.view.call(depth0, "Travis.QueueItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "job.repository.slug", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n #");
- stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "no_job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "no_job", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
- data.buffer.push("\n");
- stack1 = helpers.each.call(depth0, "queue", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['with'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n \n ");
- stack1 = helpers['if'].call(depth0, "slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n ");
- stack1 = helpers['if'].call(depth0, "lastBuildId", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.duration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": \n ");
- foundHelper = helpers.formatDuration;
- stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildDuration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "lastBuildDuration", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " ,\n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.finished_at", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + ": \n ");
- foundHelper = helpers.formatTime;
- stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n
\n\n
\n\n ");
- stack1 = helpers['if'].call(depth0, "description", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "lastBuildNumber", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n
");
- stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "
\n
\n ");
- return buffer;}
-
- data.buffer.push("\n ");
- stack1 = {};
- stack1['valueBinding'] = "controller.search";
- stack1 = helpers.view.call(depth0, "Ember.TextField", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n\n");
- stack1 = helpers.view.call(depth0, "Travis.ReposListTabsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n\n \n\n\n ");
- stack1 = {};
- stack1['contentBinding'] = "controller";
- foundHelper = helpers.collection;
- stack1 = foundHelper ? foundHelper.call(depth0, "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
-
-
- data.buffer.push("\n \n \n \n \n \n \n \n \n \n \n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['with'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n ");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n\n ");
- stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "
\n\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "lastBuildLanguage", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "stats.watchers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "stats.forks", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n\n ");
- stack1 = helpers.view.call(depth0, "Travis.RepoShowTabsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- stack1 = helpers.view.call(depth0, "Travis.RepoShowToolsView", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program4(depth0,data) {
-
-
- data.buffer.push("\n Loading \n ");}
-
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "view.repository.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n
\n ");
- foundHelper = helpers.outlet;
- stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n
\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.current", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.current", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program3(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program5(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program7(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " #");
- stack1 = helpers._triageMustache.call(depth0, "view.build.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program11(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.job", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " #");
- stack1 = helpers._triageMustache.call(depth0, "view.job.number", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
- data.buffer.push("\n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.build.id", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n \n ");
- stack1 = helpers['if'].call(depth0, "view.job.id", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n \n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['repos/show/tools'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['contentBinding'] = "view.branches";
- stack1['selectionBinding'] = "view.branch";
- stack1['optionLabelPath'] = "content.commit.branch";
- stack1['optionValuePath'] = "content.commit.branch";
- stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program3(depth0,data) {
-
-
- data.buffer.push("\n \n ");}
-
- data.buffer.push("\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['sponsors/decks'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers.each.call(depth0, "deck", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n \n \n \n ");
- return buffer;}
-
- data.buffer.push("");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n\n\n\n\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['sponsors/links'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n ");
- stack1 = {};
- stack1['unescaped'] = "true";
- stack1 = helpers._triageMustache.call(depth0, "link", {hash:stack1,contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- return buffer;}
-
- data.buffer.push("\n
");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + " \n\n \n\n
\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n
\n
\n\n\n");
- return buffer;
-});
-
-Ember.TEMPLATES['stats/show'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
-
-
-
- data.buffer.push("
\n
\n\n");
-});
-
-Ember.TEMPLATES['workers/list'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;
- var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
-
-function program1(depth0,data) {
-
- var buffer = '', stack1, foundHelper;
- data.buffer.push("\n \n ");
- foundHelper = helpers['t'];
- stack1 = foundHelper ? foundHelper.call(depth0, "workers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "workers", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n \n ");
- stack1 = helpers.each.call(depth0, "group", "in", "controller.groups", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n");
- return buffer;}
-function program2(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers.view.call(depth0, "Travis.WorkersListView", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program3(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n \n ");
- stack1 = helpers._triageMustache.call(depth0, "group.firstObject.host", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n \n ");
- stack1 = helpers.each.call(depth0, "worker", "in", "group", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n \n ");
- return buffer;}
-function program4(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = {};
- stack1['workerBinding'] = "worker";
- stack1 = helpers.view.call(depth0, "Travis.WorkersItemView", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program5(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n
\n ");
- stack1 = helpers['if'].call(depth0, "worker.isWorking", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n \n ");
- return buffer;}
-function program6(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers['if'].call(depth0, "worker.job_id", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n ");
- return buffer;}
-function program7(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n \n ");
- stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n \n ");
- return buffer;}
-
-function program9(depth0,data) {
-
- var buffer = '', stack1;
- data.buffer.push("\n ");
- stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});
- data.buffer.push(escapeExpression(stack1) + "\n ");
- return buffer;}
-
-function program11(depth0,data) {
-
-
- data.buffer.push("\n No workers\n ");}
-
- stack1 = helpers.view.call(depth0, "Travis.WorkersView", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});
- if(stack1 || stack1 === 0) { data.buffer.push(stack1); }
- data.buffer.push("\n\n");
- return buffer;
-});
-
-});minispade.register('config/locales', function() {window.I18n = window.I18n || {}
-window.I18n.translations = {"ca":{"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"}},"en":{"errors":{"messages":{"not_found":"not found","already_confirmed":"was already confirmed","not_locked":"was not locked"}},"devise":{"failure":{"unauthenticated":"You need to sign in or sign up before continuing.","unconfirmed":"You have to confirm your account before continuing.","locked":"Your account is locked.","invalid":"Invalid email or password.","invalid_token":"Invalid authentication token.","timeout":"Your session expired, please sign in again to continue.","inactive":"Your account was not activated yet."},"sessions":{"signed_in":"Signed in successfully.","signed_out":"Signed out successfully."},"passwords":{"send_instructions":"You will receive an email with instructions about how to reset your password in a few minutes.","updated":"Your password was changed successfully. You are now signed in."},"confirmations":{"send_instructions":"You will receive an email with instructions about how to confirm your account in a few minutes.","confirmed":"Your account was successfully confirmed. You are now signed in."},"registrations":{"signed_up":"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.","updated":"You updated your account successfully.","destroyed":"Bye! Your account was successfully cancelled. We hope to see you again soon."},"unlocks":{"send_instructions":"You will receive an email with instructions about how to unlock your account in a few minutes.","unlocked":"Your account was successfully unlocked. You are now signed in."},"mailer":{"confirmation_instructions":{"subject":"Confirmation instructions"},"reset_password_instructions":{"subject":"Reset password instructions"},"unlock_instructions":{"subject":"Unlock Instructions"}}},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hour","other":"%{count} hours"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} second","other":"%{count} seconds"}}},"workers":"Workers","queue":"Queue","no_job":"There are no jobs","repositories":{"branch":"Branch","image_url":"Image URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","tabs":{"current":"Current","build_history":"Build History","branches":"Branch Summary","pull_requests":"Pull Requests","build":"Build","job":"Job"}},"build":{"job":"Job","duration":"Duration","finished_at":"Finished"},"jobs":{"messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished"},"builds":{"name":"Build","messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","show_more":"Show more"},"layouts":{"top":{"home":"Home","blog":"Blog","docs":"Docs","stats":"Stats","github_login":"Sign in with Github","profile":"Profile","sign_out":"Sign Out","admin":"Admin"},"application":{"fork_me":"Fork me on Github","recent":"Recent","search":"Search","sponsers":"Sponsors","sponsors_link":"See all of our amazing sponsors →","my_repositories":"My Repositories"},"about":{"alpha":"This stuff is alpha.","messages":{"alpha":"Please do not consider this a stable service. We're still far from that! More info here. "},"join":"Join us and help!","mailing_list":"Mailing List","repository":"Repository","twitter":"Twitter"},"mobile":{"author":"Author","build":"Build","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished at","job":"Job","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.","config":"how to configure custom build options"},"messages":{"notice":"To get started, please read our Getting Started guide .\n It will only take a couple of minutes. "},"token":"Token","your_repos":"Your Repositories","update":"Update","update_locale":"Update","your_locale":"Your Locale"}},"statistics":{"index":{"count":"Count","repo_growth":"Repository Growth","total_projects":"Total Projects/Repositories","build_count":"Build Count","last_month":"last month","total_builds":"Total Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"es":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"workers":"Procesos","queue":"Cola","no_job":"No hay trabajos","repositories":{"branch":"Rama","image_url":"Imagen URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","tabs":{"current":"Actual","build_history":"Histórico","branches":"Ramas","build":"Builds","job":"Trabajo"}},"build":{"job":"Trabajo","duration":"Duración","finished_at":"Finalizado"},"jobs":{"messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","sponsored_by":"Patrocinado por"},"builds":{"name":"Build","messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado"},"layouts":{"top":{"home":"Inicio","blog":"Blog","docs":"Documentación","stats":"Estadísticas","github_login":"Iniciar sesión con Github","profile":"Perfil","sign_out":"Desconectar","admin":"Admin"},"application":{"fork_me":"Hazme un Fork en Github","recent":"Reciente","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Ver todos nuestros patrocinadores →","my_repositories":"Mis Repositorios"},"about":{"alpha":"Esto es alpha.","messages":{"alpha":"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. "},"join":"Únetenos y ayudanos!","mailing_list":"Lista de Correos","repository":"Repositorio","twitter":"Twitter"}},"profiles":{"show":{"email":"Correo electrónico","github":"Github","message":{"your_repos":" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \n Para probar varias versiones de ruby, mira","config":"como configurar tus propias opciones para el Build"},"messages":{"notice":"Para comenzar, por favor lee nuestra Guía de Inicio .\n Solo tomará unos pocos minutos. "},"token":"Token","your_repos":"Tus repositorios","update":"Actualizar","update_locale":"Actualizar","your_locale":"Tu Idioma"}},"statistics":{"index":{"count":"Número","repo_growth":"Crecimiento de Repositorios","total_projects":"Total de Proyectos/Repositorios","build_count":"Número de Builds","last_month":"mes anterior","total_builds":"Total de Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"fr":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} heure","other":"%{count} heures"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} secondes"}}},"workers":"Processus","queue":"File","no_job":"Pas de tâches","repositories":{"branch":"Branche","image_url":"Image","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","tabs":{"current":"Actuel","build_history":"Historique des tâches","branches":"Résumé des branches","build":"Construction","job":"Tâche"}},"build":{"job":"Tâche","duration":"Durée","finished_at":"Terminé"},"jobs":{"messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"builds":{"name":"Version","messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé"},"layouts":{"top":{"home":"Accueil","blog":"Blog","docs":"Documentation","stats":"Statistiques","github_login":"Connection Github","profile":"Profil","sign_out":"Déconnection","admin":"Admin"},"application":{"fork_me":"Faites un Fork sur Github","recent":"Récent","search":"Chercher","sponsers":"Sponsors","sponsors_link":"Voir tous nos extraordinaire sponsors →","my_repositories":"Mes dépôts"},"about":{"alpha":"Ceci est en alpha.","messages":{"alpha":"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici. "},"join":"Joignez-vous à nous et aidez-nous!","mailing_list":"Liste de distribution","repository":"Dépôt","twitter":"Twitter"},"mobile":{"author":"Auteur","build":"Version","build_matrix":"Matrice des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé à","job":"Tâche","log":"Journal"}},"profiles":{"show":{"github":"Github","message":{"your_repos":"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \nPour tester sur plus de versions de ruby, voir","config":"comment configurer des options de version personnalisées"},"messages":{"notice":"Pour commencer, veuillez lire notre guide de démarrage .\n Cela ne vous prendra que quelques minutes. "},"token":"Jeton","your_repos":"Vos dépôts","email":"Courriel","update":"Modifier","update_locale":"Modifier","your_locale":"Votre langue"}},"statistics":{"index":{"count":"Décompte","repo_growth":"Croissance de dépôt","total_projects":"Total des projets/dépôts","build_count":"Décompte des versions","last_month":"mois dernier","total_builds":"Total des versions"}},"admin":{"actions":{"create":"créer","created":"créé","delete":"supprimer","deleted":"supprimé","update":"mise à jour","updated":"mis à jour"},"credentials":{"log_out":"Déconnection"},"delete":{"confirmation":"Oui, je suis sure","flash_confirmation":"%{name} a été détruit avec succès"},"flash":{"error":"%{name} n'a pas pu être %{action}","noaction":"Aucune action n'a été entreprise","successful":"%{name} a réussi à %{action}"},"history":{"name":"Historique","no_activity":"Aucune activité","page_name":"Historique pour %{name}"},"list":{"add_new":"Ajouter un nouveau","delete_action":"Supprimer","delete_selected":"Supprimer la sélection","edit_action":"Modifier","search":"Rechercher","select":"Sélectionner le %{name} à modifier","select_action":"Sélectionner","show_all":"Montrer tout"},"new":{"basic_info":"Information de base","cancel":"Annuler","chosen":"%{name} choisi","chose_all":"Choisir tout","clear_all":"Déselectionner tout","many_chars":"caractères ou moins","one_char":"caractère.","optional":"Optionnel","required":"Requis","save":"Sauvegarder","save_and_add_another":"Sauvegarder et en ajouter un autre","save_and_edit":"Sauvegarder et modifier","select_choice":"Faites vos choix et cliquez"},"dashboard":{"add_new":"Ajouter un nouveau","last_used":"Dernière utilisation","model_name":"Nom du modèle","modify":"Modification","name":"Tableau de bord","pagename":"Administration du site","records":"Enregistrements","show":"Voir","ago":"plus tôt"}},"home":{"name":"accueil"},"repository":{"duration":"Durée"},"devise":{"confirmations":{"confirmed":"Votre compte a été crée avec succès. Vous être maintenant connecté.","send_instructions":"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes."},"failure":{"inactive":"Votre compte n'a pas encore été activé.","invalid":"Adresse courriel ou mot de passe invalide.","invalid_token":"Jeton d'authentification invalide.","locked":"Votre compte est bloqué.","timeout":"Votre session est expirée, veuillez vous reconnecter pour continuer.","unauthenticated":"Vous devez vous connecter ou vous enregistrer afin de continuer","unconfirmed":"Vous devez confirmer votre compte avant de continuer."},"mailer":{"confirmation_instructions":{"subject":"Instructions de confirmations"},"reset_password_instructions":{"subject":"Instruction de remise à zéro du mot de passe"},"unlock_instructions":{"subject":"Instruction de débloquage"}},"passwords":{"send_instructions":"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.","updated":"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté."},"registrations":{"destroyed":"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.","signed_up":"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.","updated":"Votre compte a été mis a jour avec succès"},"sessions":{"signed_in":"Connecté avec succès","signed_out":"Déconnecté avec succès"},"unlocks":{"send_instructions":"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.","unlocked":"Votre compte a été débloqué avec succès."}},"errors":{"messages":{"already_confirmed":"étais déja confirmé","not_found":"n'a pas été trouvé","not_locked":"n'étais pas bloqué"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"ja":{"workers":"ワーカー","queue":"キュー","no_job":"ジョブはありません","repositories":{"branch":"ブランチ","image_url":"画像URL","markdown":".md","textile":".textile","rdoc":".rdoc","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻","tabs":{"current":"最新","build_history":"ビルド履歴","branches":"ブランチまとめ","build":"ビルド","job":"ジョブ"}},"build":{"job":"ジョブ","duration":"処理時間","finished_at":"終了時刻"},"jobs":{"messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"ビルドマトリクス","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"builds":{"name":"ビルド","messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"失敗許容範囲外","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"layouts":{"about":{"alpha":"まだアルファですよ!","join":"参加してみよう!","mailing_list":"メールリスト","messages":{"alpha":"Travis-ciは安定したサービスまで後一歩!詳しくはこちら "},"repository":"リポジトリ","twitter":"ツイッター"},"application":{"fork_me":"Githubでフォークしよう","my_repositories":"マイリポジトリ","recent":"最近","search":"検索","sponsers":"スポンサー","sponsors_link":"スポンサーをもっと見る →"},"top":{"blog":"ブログ","docs":"Travisとは?","github_login":"Githubでログイン","home":"ホーム","profile":"プロフィール","sign_out":"ログアウト","stats":"統計","admin":"管理"},"mobile":{"author":"制作者","build":"ビルド","build_matrix":"ビルドマトリクス","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","job":"ジョブ","log":"ログ"}},"profiles":{"show":{"github":"Github","email":"メール","message":{"config":"詳細設定","your_repos":"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:"},"messages":{"notice":"まずはTravisのはじめ方 を参照してください。"},"token":"トークン","your_repos":"リポジトリ","update":"更新","update_locale":"更新","your_locale":"言語設定"}},"statistics":{"index":{"build_count":"ビルド数","count":"数","last_month":"先月","repo_growth":"リポジトリ","total_builds":"合計ビルド数","total_projects":"合計リポジトリ"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"nb":{"admin":{"actions":{"create":"opprett","created":"opprettet","delete":"slett","deleted":"slettet","update":"oppdater","updated":"oppdatert"},"credentials":{"log_out":"Logg ut"},"dashboard":{"add_new":"Legg til ny","ago":"siden","last_used":"Sist brukt","model_name":"Modell","modify":"Rediger","name":"Dashbord","pagename":"Nettstedsadministrasjon","records":"Oppføringer","show":"Vis"},"delete":{"confirmation":"Ja, jeg er sikker","flash_confirmation":"%{name} ble slettet"},"flash":{"error":"%{name} kunne ikke bli %{action}","noaction":"Ingen handlinger ble utført","successful":"%{name} ble %{action}"},"history":{"name":"Logg","no_activity":"Ingen aktivitet","page_name":"Logg for %{name}"},"list":{"add_new":"Legg til ny","delete_action":"Slett","delete_selected":"Slett valgte","edit_action":"Rediger","search":"Søk","select":"Velg %{name} for å redigere","select_action":"Velg","show_all":"Vis alle "},"new":{"basic_info":"Basisinformasjon","cancel":"Avbryt","chosen":"Valgt %{name}","chose_all":"Velg alle","clear_all":"Fjern alle","many_chars":"eller færre tegn.","one_char":"tegn.","optional":"Valgfri","required":"Påkrevd","save":"Lagre","save_and_add_another":"Lagre og legg til ny","save_and_edit":"Lagre og rediger","select_choice":"Kryss av for dine valg og klikk"}},"build":{"duration":"Varighet","finished_at":"Fullført","job":"Jobb"},"builds":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testen ble kjørt på en maskin sponset av"},"name":"Jobb","started_at":"Startet"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} time","other":"%{count} timer"},"minutes_exact":{"one":"%{count} minutt","other":"%{count} minutter"},"seconds_exact":{"one":"%{count} sekund","other":"%{count} sekunder"}}},"devise":{"confirmations":{"confirmed":"Din konto er aktivert og du er nå innlogget.","send_instructions":"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din."},"failure":{"inactive":"Kontoen din har ikke blitt aktivert enda.","invalid":"Ugyldig e-post eller passord.","invalid_token":"Ugyldig autentiseringskode.","locked":"Kontoen din er låst.","timeout":"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.","unauthenticated":"Du må logge inn eller registrere deg for å fortsette.","unconfirmed":"Du må bekrefte kontoen din før du kan fortsette."},"mailer":{"confirmation_instructions":{"subject":"Bekreftelsesinformasjon"},"reset_password_instructions":{"subject":"Instruksjoner for å få nytt passord"},"unlock_instructions":{"subject":"Opplåsningsinstruksjoner"}},"passwords":{"send_instructions":"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.","updated":"Passordet ditt ble endret, og du er logget inn."},"registrations":{"destroyed":"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.","signed_up":"Du er nå registrert.","updated":"Kontoen din ble oppdatert."},"sessions":{"signed_in":"Du er nå logget inn.","signed_out":"Du er nå logget ut."},"unlocks":{"send_instructions":"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.","unlocked":"Kontoen din ble låst opp, og du er nå logget inn igjen."}},"errors":{"messages":{"already_confirmed":"har allerede blitt bekreftet","not_found":"ikke funnnet","not_locked":"var ikke låst"}},"home":{"name":"hjem"},"jobs":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testserien ble kjørt på en maskin sponset av"},"started_at":"Startet"},"layouts":{"about":{"alpha":"Dette er alfa-greier.","join":"Bli med og hjelp oss!","mailing_list":"E-postliste","messages":{"alpha":"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her ."},"repository":"Kodelager","twitter":"Twitter."},"application":{"fork_me":"Se koden på Github","my_repositories":"Mine kodelagre","recent":"Nylig","search":"Søk","sponsers":"Sponsorer","sponsors_link":"Se alle de flotte sponsorene våre →"},"mobile":{"author":"Forfatter","build":"Jobb","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","job":"Jobb","log":"Logg"},"top":{"admin":"Administrator","blog":"Blogg","docs":"Dokumentasjon","github_login":"Logg inn med Github","home":"Hjem","profile":"Profil","sign_out":"Logg ut","stats":"Statistikk"}},"no_job":"Ingen jobber finnnes","profiles":{"show":{"email":"E-post","github":"Github","message":{"config":"hvordan sette opp egne jobbinnstillinger","your_repos":"Slå\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \nFor å teste mot flere ruby-versjoner, se dokumentasjonen for"},"messages":{"notice":"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. "},"token":"Kode","update":"Oppdater","update_locale":"Oppdater","your_locale":"Ditt språk","your_repos":"Dine kodelagre"}},"queue":"Kø","repositories":{"branch":"Gren","commit":"Innsender","duration":"Varighet","finished_at":"Fullført","image_url":"Bilde-URL","markdown":"Markdown","message":"Beskrivelse","rdoc":"RDOC","started_at":"Startet","tabs":{"branches":"Grensammendrag","build":"Jobb","build_history":"Jobblogg","current":"Siste","job":"Jobb"},"textile":"Textile"},"repository":{"duration":"Varighet"},"statistics":{"index":{"build_count":"Antall jobber","count":"Antall","last_month":"siste måned","repo_growth":"Vekst i kodelager","total_builds":"Totale jobber","total_projects":"Antall prosjekter/kodelagre"}},"workers":"Arbeidere","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"nl":{"admin":{"actions":{"create":"aanmaken","created":"aangemaakt","delete":"verwijderen","deleted":"verwijderd","update":"bijwerken","updated":"bijgewerkt"},"credentials":{"log_out":"Afmelden"},"dashboard":{"add_new":"Nieuwe toevoegen","ago":"geleden","last_used":"Laatst gebruikt","model_name":"Model naam","modify":"Wijzigen","pagename":"Site administratie","show":"Laten zien","records":"Gegevens"},"delete":{"confirmation":"Ja, ik ben zeker","flash_confirmation":"%{name} is vernietigd"},"flash":{"error":"%{name} kon niet worden %{action}","noaction":"Er zijn geen acties genomen","successful":"%{name} is %{action}"},"history":{"name":"Geschiedenis","no_activity":"Geen activiteit","page_name":"Geschiedenis van %{name}"},"list":{"add_new":"Nieuwe toevoegen","delete_action":"Verwijderen","delete_selected":"Verwijder geselecteerden","edit_action":"Bewerken","search":"Zoeken","select":"Selecteer %{name} om te bewerken","select_action":"Selecteer","show_all":"Laat allen zien"},"new":{"basic_info":"Basisinfo","cancel":"Annuleren","chosen":"%{name} gekozen","chose_all":"Kies allen","clear_all":"Deselecteer allen","many_chars":"tekens of minder.","one_char":"teken.","optional":"Optioneel","required":"Vereist","save":"Opslaan","save_and_add_another":"Opslaan en een nieuwe toevoegen","save_and_edit":"Opslaan en bewerken","select_choice":"Selecteer uw keuzes en klik"}},"build":{"duration":"Duur","finished_at":"Voltooid","job":"Taak"},"builds":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw Matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze tests zijn gedraaid op een machine gesponsord door"},"name":"Bouw","started_at":"Gestart","commit":"Commit","committer":"Committer"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} uur","other":"%{count} uren"},"minutes_exact":{"one":"%{count} minuut","other":"%{count} minuten"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} seconden"}}},"devise":{"confirmations":{"confirmed":"Uw account is bevestigd. U wordt nu ingelogd.","send_instructions":"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen."},"failure":{"inactive":"Uw account is nog niet geactiveerd.","invalid":"Ongeldig email adres of wachtwoord.","invalid_token":"Ongeldig authenticatie token.","locked":"Uw account is vergrendeld.","timeout":"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.","unauthenticated":"U moet inloggen of u registeren voordat u verder gaat.","unconfirmed":"U moet uw account bevestigen voordat u verder gaat."},"mailer":{"confirmation_instructions":{"subject":"Bevestigings-instructies"},"reset_password_instructions":{"subject":"Wachtwoord herstel instructies"},"unlock_instructions":{"subject":"Ontgrendel-instructies"}},"passwords":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.","updated":"Uw wachtwoord is veranderd. U wordt nu ingelogd."},"registrations":{"destroyed":"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.","signed_up":"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.","updated":"Het bijwerken van uw account is gelukt."},"sessions":{"signed_in":"Inloggen gelukt.","signed_out":"Uitloggen gelukt."},"unlocks":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.","unlocked":"Uw account is ontgrendeld. U wordt nu ingelogd."}},"errors":{"messages":{"already_confirmed":"was al bevestigd","not_found":"niet gevonden","not_locked":"was niet vergrendeld"}},"jobs":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze testen zijn uitgevoerd op een machine gesponsord door"},"started_at":"Gestart","commit":"Commit","committer":"Committer"},"layouts":{"about":{"alpha":"Dit is in alfa-stadium.","join":"Doe met ons mee en help!","mailing_list":"Mailing lijst","messages":{"alpha":"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. "},"repository":"Repository","twitter":"Twitter"},"application":{"fork_me":"Maak een fork op Github","my_repositories":"Mijn repositories","recent":"Recent","search":"Zoeken","sponsers":"Sponsors","sponsors_link":"Bekijk al onze geweldige sponsors →"},"mobile":{"author":"Auteur","build":"Bouw","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid op","job":"Taak","commit":"Commit","committer":"Committer","log":"Logboek"},"top":{"admin":"Administratie","blog":"Blog","docs":"Documentatie","github_login":"Inloggen met Github","home":"Home","profile":"Profiel","sign_out":"Uitloggen","stats":"Statistieken"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Er zijn geen taken","profiles":{"show":{"email":"Email adres","github":"Github","message":{"config":"hoe eigen bouw-opties in te stellen","your_repos":"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \nOm te testen tegen meerdere rubies, zie"},"messages":{"notice":"Om te beginnen kunt u onze startersgids lezen.\\n Het zal maar enkele minuten van uw tijd vergen. "},"update":"Bijwerken","update_locale":"Bijwerken","your_locale":"Uw taal","your_repos":"Uw repositories","token":"Token"}},"queue":"Wachtrij","repositories":{"branch":"Tak","duration":"Duur","finished_at":"Voltooid","image_url":"Afbeeldings URL","message":"Bericht","started_at":"Gestart","tabs":{"branches":"Tak samenvatting","build":"Bouw","build_history":"Bouw geschiedenis","current":"Huidig","job":"Taak"},"commit":"Commit","markdown":"Markdown","rdoc":"RDOC","textile":"Textile"},"repository":{"duration":"Duur"},"statistics":{"index":{"build_count":"Bouw aantal","count":"Aantal","last_month":"voorbije maand","repo_growth":"Repository groei","total_builds":"Bouw totaal","total_projects":"Projecten/Repository totaal"}},"workers":"Machines","home":{"name":"Hoofdpagina"}},"pl":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} godzina","other":"%{count} godziny"},"minutes_exact":{"one":"%{count} minuta","other":"%{count} minuty"},"seconds_exact":{"one":"%{count} sekunda","other":"%{count} sekundy"}}},"workers":"Workers","queue":"Kolejka","no_job":"Brak zadań","repositories":{"branch":"Gałąź","image_url":"URL obrazka","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","tabs":{"current":"Aktualny","build_history":"Historia Buildów","branches":"Wszystkie Gałęzie","build":"Build","job":"Zadanie"}},"build":{"job":"Zadanie","duration":"Czas trwania","finished_at":"Zakończono"},"jobs":{"messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Committer","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"builds":{"name":"Build","messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Komitujący","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono"},"layouts":{"top":{"home":"Start","blog":"Blog","docs":"Dokumentacja","stats":"Statystki","github_login":"Zaloguj się przy pomocy Githuba","profile":"Profil","sign_out":"Wyloguj się"},"application":{"fork_me":"Fork me on Github","recent":"Ostatnie","search":"Wyniki","sponsers":"Sponsorzy","sponsors_link":"Zobacz naszych wszystkich wspaniałych sponsorów →","my_repositories":"Moje repozytoria"},"about":{"alpha":"To wciąż jest wersja alpha.","messages":{"alpha":"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. "},"join":"Pomóż i dołącz do nas!","mailing_list":"Lista mailingowa","repository":"Repozytorium","twitter":"Twitter"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Komitujący","compare":"Porównianie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","job":"Zadanie","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz","config":"jak skonfigurować niestandardowe opcje builda"},"messages":{"notice":"Aby zacząć, przeczytaj nasz Przewodnik .\n Zajmie ci to tylko kilka minut. "},"token":"Token","your_repos":"Twoje repozytoria"}},"statistics":{"index":{"count":"Ilość","repo_growth":"Przyrost repozytoriów","total_projects":"Łącznie projektów/repozytoriów","build_count":"Liczba buildów","last_month":"ostatni miesiąc","total_builds":"Łącznie Buildów"}},"date":{"abbr_day_names":["nie","pon","wto","śro","czw","pią","sob"],"abbr_month_names":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"day_names":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"formats":{"default":"%d-%m-%Y","long":"%B %d, %Y","short":"%d %b"},"month_names":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"order":["day","month","year"]},"errors":{"format":"%{attribute} %{message}","messages":{"accepted":"musi zostać zaakceptowane","blank":"nie może być puste"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"pt-BR":{"admin":{"actions":{"create":"criar","created":"criado","delete":"deletar","deleted":"deletado","update":"atualizar","updated":"atualizado"},"credentials":{"log_out":"Deslogar"},"dashboard":{"add_new":"Adicionar novo","ago":"atrás","last_used":"Última utilização","model_name":"Nome do modelo","modify":"Modificar","name":"Dashboard","pagename":"Administração do site","records":"Registros","show":"Mostrar"},"delete":{"confirmation":"Sim, tenho certeza","flash_confirmation":"%{name} foi destruído com sucesso"},"flash":{"error":"%{name} falhou ao %{action}","noaction":"Nenhuma ação foi tomada","successful":"%{name} foi %{action} com sucesso"},"history":{"name":"Histórico","no_activity":"Nenhuma Atividade","page_name":"Histórico para %{name}"},"list":{"add_new":"Adicionar novo","delete_action":"Deletar","delete_selected":"Deletar selecionados","edit_action":"Editar","search":"Buscar","select":"Selecionar %{name} para editar","select_action":"Selecionar","show_all":"Mostrar todos"},"new":{"basic_info":"Informações básicas","cancel":"Cancelar","chosen":"Escolhido %{name}","chose_all":"Escolher todos","clear_all":"Limpar todos","many_chars":"caracteres ou menos.","one_char":"caractere.","optional":"Opcional","required":"Requerido","save":"Salvar","save_and_add_another":"Salvar e adicionar outro","save_and_edit":"Salvar e alterar","select_choice":"Selecione e clique"}},"build":{"duration":"Duração","finished_at":"Concluído em","job":"Trabalho"},"builds":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"name":"Build","started_at":"Iniciou em"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"devise":{"confirmations":{"confirmed":"Sua conta foi confirmada com sucesso. Você agora está logado.","send_instructions":"Você receberá um email com instruções de como confirmar sua conta em alguns minutos."},"failure":{"inactive":"Sua conta ainda não foi ativada.","invalid":"Email ou senha inválidos.","invalid_token":"Token de autenticação inválido.","locked":"Sua conta está trancada.","timeout":"Sua sessão expirou, por favor faça seu login novamente.","unauthenticated":"Você precisa fazer o login ou cadastrar-se antes de continuar.","unconfirmed":"Você precisa confirmar sua conta antes de continuar."},"mailer":{"confirmation_instructions":{"subject":"Instruções de confirmação"},"reset_password_instructions":{"subject":"Instruções de atualização de senha"},"unlock_instructions":{"subject":"Instruções de destrancamento"}},"passwords":{"send_instructions":"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.","updated":"Sua senha foi alterada com sucesso. Você agora está logado."},"registrations":{"destroyed":"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!","signed_up":"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.","updated":"Você atualizou sua conta com sucesso."},"sessions":{"signed_in":"Logado com sucesso.","signed_out":"Deslogado com sucesso."},"unlocks":{"send_instructions":"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.","unlocked":"Sua conta foi destrancada com sucesso. Você agora está logado."}},"errors":{"messages":{"already_confirmed":"já foi confirmado","not_found":"não encontrado","not_locked":"não estava trancado"}},"home":{"name":"home"},"jobs":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"started_at":"Iniciou em"},"layouts":{"about":{"alpha":"Isto é um alpha.","join":"Junte-se à nós e ajude!","mailing_list":"Lista de email","messages":{"alpha":"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. "},"repository":"Repositório","twitter":"Twitter"},"application":{"fork_me":"Faça fork no Github","my_repositories":"Meus Repositórios","recent":"Recentes","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Conheça todos os nossos patrocinadores →"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","job":"Trabalho","log":"Log"},"top":{"admin":"Admin","blog":"Blog","docs":"Documentação","github_login":"Logue com o Github","home":"Home","profile":"Perfil","sign_out":"Sair","stats":"Estatísticas"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Não há trabalhos","profiles":{"show":{"email":"Email","github":"Github","message":{"config":"como configurar opções de build","your_repos":"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia"},"messages":{"notice":"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. "},"token":"Token","update":"Atualizar","update_locale":"Atualizar","your_locale":"Sua língua","your_repos":"Seus Repositórios"}},"queue":"Fila","repositories":{"branch":"Branch","commit":"Commit","duration":"Duração","finished_at":"Concluído em","image_url":"URL da imagem","markdown":"Markdown","message":"Mensagem","rdoc":"RDOC","started_at":"Iniciou em","tabs":{"branches":"Sumário do Branch","build":"Build","build_history":"Histórico de Build","current":"Atual","job":"Trabalho"},"textile":"Textile"},"repository":{"duration":"Duração"},"statistics":{"index":{"build_count":"Número de Builds","count":"Número","last_month":"último mês","repo_growth":"Crescimento de Repositório","total_builds":"Total de Builds","total_projects":"Total de Projetos/Repositórios"}},"workers":"Processos"},"ru":{"admin":{"actions":{"create":"создать","created":"создано","delete":"удалить","deleted":"удалено","update":"обновить","updated":"обновлено"},"credentials":{"log_out":"Выход"},"dashboard":{"add_new":"Добавить","ago":"назад","last_used":"Использовалось в последний раз","model_name":"Имя модели","modify":"Изменить","name":"Панель управления","pagename":"Управление сайтом","records":"Записи","show":"Показать"},"delete":{"confirmation":"Да, я уверен","flash_confirmation":"%{name} успешно удалено"},"history":{"name":"История","no_activity":"Нет активности","page_name":"История %{name}"},"list":{"add_new":"Добавить","delete_action":"Удалить","delete_selected":"Удалить выбранные","edit_action":"Редактировать","search":"Поиск","select":"Для редактирования выберите %{name}","select_action":"Выбрать","show_all":"Показать все"},"new":{"basic_info":"Основная информация","cancel":"Отмена","chosen":"Выбрано %{name}","chose_all":"Выбрать все","clear_all":"Очистить все","one_char":"символ.","optional":"Необязательно","required":"Обязательно","save":"Сохранить","save_and_add_another":"Сохранить и добавить другое","save_and_edit":"Сохранить и продолжить редактирование","select_choice":"Выберите и кликните","many_chars":"символов или меньше."},"flash":{"error":"%{name} не удалось %{action}","noaction":"Никаких действий не произведено","successful":"%{name} было успешно %{action}"}},"build":{"duration":"Длительность","finished_at":"Завершен","job":"Задача"},"builds":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Дифф","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине, спонсируемой"},"name":"Билд","started_at":"Начало"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} час","few":"%{count} часа","many":"%{count} часов","other":"%{count} часа"},"minutes_exact":{"one":"%{count} минута","few":"%{count} минуты","many":"%{count} минут","other":"%{count} минуты"},"seconds_exact":{"one":"%{count} секунда","few":"%{count} секунды","many":"%{count} секунд","other":"%{count} секунды"}}},"devise":{"confirmations":{"confirmed":"Ваш аккаунт успешно подтвержден. Приветствуем!","send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта."},"failure":{"inactive":"Ваш аккаунт еще не активирован.","invalid":"Ошибка в адресе почты или пароле.","invalid_token":"Неправильный токен аутентификации.","locked":"Ваш аккаунт заблокирован.","timeout":"Сессия окончена. Для продолжения работы войдите снова.","unauthenticated":"Вам нужно войти или зарегистрироваться.","unconfirmed":"Вы должны сначала подтвердить свой аккаунт."},"mailer":{"confirmation_instructions":{"subject":"Инструкции для подтверждению аккаунта"},"reset_password_instructions":{"subject":"Инструкции для сброса пароля"},"unlock_instructions":{"subject":"Инструкции для разблокирования аккаунта"}},"passwords":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.","updated":"Ваш пароль успешно изменен. Приветствуем!"},"registrations":{"destroyed":"Ваш аккаунт был успешно удален. Живите долго и процветайте!","signed_up":"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.","updated":"Аккаунт успешно обновлен."},"sessions":{"signed_in":"Приветствуем!","signed_out":"Удачи!"},"unlocks":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.","unlocked":"Ваш аккаунт успешно разблокирован. Приветствуем!"}},"errors":{"messages":{"already_confirmed":"уже подтвержден","not_found":"не найден","not_locked":"не заблокирован"}},"home":{"name":"Главная"},"jobs":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине спонсируемой"},"started_at":"Начало"},"layouts":{"about":{"alpha":"Это альфа-версия","join":"Присоединяйтесь к нам и помогайте!","mailing_list":"Лист рассылки","messages":{"alpha":"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности "},"repository":"Репозиторий","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"Мои репозитории","recent":"Недавние","search":"Поиск","sponsers":"Спонсоры","sponsors_link":"Список всех наших замечательных спонсоров →"},"mobile":{"author":"Автор","build":"Сборка","build_matrix":"Матрица сборок","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","job":"Задача","log":"Журнал"},"top":{"admin":"Управление","blog":"Блог","docs":"Документация","github_login":"Войти через Github","home":"Главная","profile":"Профиль","sign_out":"Выход","stats":"Статистика"}},"no_job":"Очередь пуста","profiles":{"show":{"email":"Электронная почта","github":"Github","message":{"config":"как настроить специальные опции билда","your_repos":"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \nДля тестирования на нескольких версиях Ruby смотрите"},"messages":{"notice":"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. "},"token":"Токен","update":"Обновить","update_locale":"Обновить","your_locale":"Ваш язык","your_repos":"Ваши репозитории"}},"queue":"Очередь","repositories":{"branch":"Ветка","commit":"Коммит","duration":"Длительность","finished_at":"Завершен","image_url":"URL изображения","markdown":"Markdown","message":"Комментарий","rdoc":"RDOC","started_at":"Начало","tabs":{"branches":"Статус веток","build":"Билд","build_history":"История","current":"Текущий","job":"Задача"},"textile":"Textile"},"repository":{"duration":"Длительность"},"statistics":{"index":{"build_count":"Количество билдов","count":"Количество","last_month":"прошлый месяц","repo_growth":"Рост числа репозиториев","total_builds":"Всего билдов","total_projects":"Всего проектов/репозиториев"}},"workers":"Машины","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}}};
-
-
-});minispade.register('ext/ember/bound_helper', function() {// https://gist.github.com/2018185
-// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js
-var BoundHelperView = Ember.View.extend(Ember._Metamorph, {
-
- context: null,
- options: null,
- property: null,
- // paths of the property that are also observed
- propertyPaths: [],
-
- value: Ember.K,
-
- valueForRender: function() {
- var value = this.value(Ember.get(this.context, this.property), this.options);
- if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }
- return value;
- },
-
- render: function(buffer) {
- buffer.push(this.valueForRender());
- },
-
- valueDidChange: function() {
- if (this.morph.isRemoved()) { return; }
- this.morph.html(this.valueForRender());
- },
-
- didInsertElement: function() {
- this.valueDidChange();
- },
-
- init: function() {
- this._super();
- Ember.addObserver(this.context, this.property, this, 'valueDidChange');
- this.get('propertyPaths').forEach(function(propName) {
- Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');
- }, this);
- },
-
- destroy: function() {
- Ember.removeObserver(this.context, this.property, this, 'valueDidChange');
- this.get('propertyPaths').forEach(function(propName) {
- this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');
- }, this);
- this._super();
- }
-
-});
-
-Ember.registerBoundHelper = function(name, func) {
- var propertyPaths = Array.prototype.slice.call(arguments, 2);
- Ember.Handlebars.registerHelper(name, function(property, options) {
- var data = options.data,
- view = data.view,
- ctx = this;
-
- var bindView = view.createChildView(BoundHelperView, {
- property: property,
- propertyPaths: propertyPaths,
- context: ctx,
- options: options.hash,
- value: func
- });
-
- view.appendChild(bindView);
- });
-};
-
-
-});minispade.register('ext/ember/namespace', function() {Em.Namespace.reopen = Em.Namespace.reopenClass
-
-
-
-});
\ No newline at end of file
+;minispade.register('app', "(function() {(function() {\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n autoinit: false,\n currentUserBinding: 'auth.user',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n app: this,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher(Travis.config.pusher);\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.get('router').send('showRoot');\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $(' ');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $(' ');\n $('#repo').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('').hide(),\n timeout: 5000,\n state: 'signed-out',\n receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n init: function() {\n var _this = this;\n this.iframe.appendTo('body');\n window.addEventListener('message', function(e) {\n return _this.receiveMessage(e);\n });\n return this.loadUser();\n },\n accessToken: (function() {\n return sessionStorage.getItem('travis.token');\n }).property(),\n loadUser: function() {\n var user;\n if (user = sessionStorage.getItem('travis.user')) {\n return this.setData({\n user: JSON.parse(user)\n });\n } else if (localStorage.getItem('travis.auto_signin')) {\n return this.trySignIn();\n }\n },\n signIn: function() {\n this.set('state', 'signing-in');\n this.trySignIn();\n return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n },\n trySignIn: function() {\n return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n },\n checkSignIn: function() {\n if (this.get('state') === 'signing-in') {\n return this.forceSignIn();\n }\n },\n forceSignIn: function() {\n localStorage.setItem('travis.auto_signin', 'true');\n return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n },\n signOut: function() {\n if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n localStorage.clear();\n }\n if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n sessionStorage.clear();\n }\n return this.setData();\n },\n setData: function(data) {\n var user;\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n if (data != null ? data.token : void 0) {\n this.storeToken(data.token);\n }\n if (data != null ? data.user : void 0) {\n user = this.storeUser(data.user);\n }\n this.set('state', user ? 'signed-in' : 'signed-out');\n this.set('user', user ? user : void 0);\n if (this.app.get('router')) {\n return this.app.get('router').transitionTo('authenticated');\n }\n },\n storeToken: function(token) {\n sessionStorage.setItem('travis.token', token);\n return this.notifyPropertyChange('accessToken');\n },\n storeUser: function(user) {\n localStorage.setItem('travis.auto_signin', 'true');\n sessionStorage.setItem('travis.user', JSON.stringify(user));\n this.app.store.load(Travis.User, user);\n return this.app.store.find(Travis.User, user.id);\n },\n receiveMessage: function(event) {\n if (event.origin === this.expectedOrigin()) {\n this.setData(event.data);\n return console.log(\"signed in as \" + event.data.user.login);\n } else {\n return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n }\n },\n expectedOrigin: function() {\n if (this.endpoint[0] === '/') {\n return this.receivingEnd;\n } else {\n return this.endpoint;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth");minispade.register('controllers', "(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n Travis.reopen({\n Controller: Em.Controller.extend({\n connectOutlet: function() {\n var view, _connectedOutletViews;\n view = this._super.apply(this, arguments);\n if (view) {\n _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n if (!_connectedOutletViews) {\n _connectedOutletViews = [];\n }\n _connectedOutletViews.pushObject(view);\n Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n }\n return view;\n }\n }),\n TopController: Em.Controller.extend({\n userBinding: 'Travis.app.currentUser'\n }),\n ApplicationController: Em.Controller.extend(),\n MainController: Em.Controller.extend(),\n StatsLayoutController: Em.Controller.extend(),\n ProfileLayoutController: Em.Controller.extend(),\n AuthLayoutController: Em.Controller.extend()\n });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repos');\nminispade.require('controllers/repo');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers");minispade.register('controllers/accounts', "(function() {(function() {\n\n Travis.AccountsController = Ember.ArrayController.extend({\n tab: 'accounts',\n init: function() {\n return this._super();\n },\n findByLogin: function(login) {\n return this.find(function(account) {\n return account.get('login') === 'login';\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts");minispade.register('controllers/builds', "(function() {(function() {\n\n Travis.BuildsController = Em.ArrayController.extend({\n repo: 'parent.repo',\n contentBinding: 'parent.builds'\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds");minispade.register('controllers/home', "(function() {(function() {\n\n Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home");minispade.register('controllers/job', "(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job");minispade.register('controllers/profile', "(function() {(function() {\n\n Travis.ProfileController = Travis.Controller.extend({\n name: 'profile',\n userBinding: 'Travis.app.currentUser',\n accountsBinding: 'Travis.app.router.accountsController',\n account: (function() {\n var login;\n login = this.get('params.login') || Travis.app.get('currentUser.login');\n return this.get('accounts').filter(function(account) {\n if (account.get('login') === login) {\n return account;\n }\n })[0];\n }).property('accounts.length', 'params.login'),\n activate: function(action, params) {\n this.setParams(params || this.get('params'));\n return this[\"view\" + ($.camelize(action))]();\n },\n viewHooks: function() {\n this.connectTab('hooks');\n return this.set('hooks', Travis.Hook.find({\n owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n }));\n },\n viewUser: function() {\n return this.connectTab('user');\n },\n connectTab: function(tab) {\n var viewClass;\n viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n setParams: function(params) {\n var key, value, _results;\n this.set('params', {});\n _results = [];\n for (key in params) {\n value = params[key];\n _results.push(this.set(\"params.\" + key, params[key]));\n }\n return _results;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile");minispade.register('controllers/repo', "(function() {(function() {\n\n Travis.RepoController = Travis.Controller.extend({\n bindings: [],\n init: function() {\n this._super.apply(this, arguments);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var build, builds;\n if (builds = this.get('builds')) {\n builds.forEach(function(b) {\n return b.updateTimes();\n });\n }\n if (build = this.get('build')) {\n build.updateTimes();\n build.get('jobs').forEach(function(j) {\n return j.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(action) {\n this._unbind();\n return this[\"view\" + ($.camelize(action))]();\n },\n viewIndex: function() {\n this._bind('repo', 'controllers.reposController.firstObject');\n this._bind('build', 'repo.lastBuild');\n return this.connectTab('current');\n },\n viewCurrent: function() {\n this.connectTab('current');\n return this._bind('build', 'repo.lastBuild');\n },\n viewBuilds: function() {\n this.connectTab('builds');\n return this._bind('builds', 'repo.builds');\n },\n viewPullRequests: function() {\n this.connectTab('pull_requests');\n return this._bind('builds', 'repo.pullRequests');\n },\n viewBranches: function() {\n this.connectTab('branches');\n return this._bind('builds', 'repo.branches');\n },\n viewBuild: function() {\n return this.connectTab('build');\n },\n viewJob: function() {\n this._bind('build', 'job.build');\n return this.connectTab('job');\n },\n repoObserver: (function() {\n var repo;\n repo = this.get('repo');\n if (repo) {\n return repo.select();\n }\n }).observes('repo.id'),\n connectTab: function(tab) {\n var name, viewClass;\n name = tab === 'current' ? 'build' : tab;\n viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n this.set('tab', tab);\n return this.connectOutlet({\n outletName: 'pane',\n controller: this,\n viewClass: viewClass\n });\n },\n _bind: function(to, from) {\n return this.bindings.push(Ember.oneWay(this, to, from));\n },\n _unbind: function() {\n var binding, _i, _len, _ref;\n _ref = this.bindings;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n binding = _ref[_i];\n binding.disconnect(this);\n }\n return this.bindings.length = 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repo");minispade.register('controllers/repos', "(function() {(function() {\n\n Travis.ReposController = Ember.ArrayController.extend({\n defaultTab: 'recent',\n sortProperties: ['sortOrder'],\n init: function() {\n this.activate(this.defaultTab);\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n updateTimes: function() {\n var content;\n if (content = this.get('content')) {\n content.forEach(function(r) {\n return r.updateTimes();\n });\n }\n return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n },\n activate: function(tab, params) {\n this.set('tab', tab);\n return this[\"view\" + ($.camelize(tab))](params);\n },\n viewRecent: function() {\n return this.set('content', Travis.Repo.find());\n },\n viewOwned: function() {\n return this.set('content', Travis.Repo.ownedBy(Travis.app.get('currentUser.login')));\n },\n viewSearch: function(params) {\n return this.set('content', Travis.Repo.search(params.search));\n },\n searchObserver: (function() {\n var search, tab;\n search = this.get('search');\n tab = search ? 'search' : 'recent';\n return this.activate(tab, {\n search: search\n });\n }).observes('search')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repos");minispade.register('controllers/sidebar', "(function() {(function() {\n\n Travis.reopen({\n SidebarController: Em.ArrayController.extend({\n init: function() {\n this.tickables = [];\n return Travis.Ticker.create({\n target: this,\n interval: Travis.INTERVALS.sponsors\n });\n },\n tick: function() {\n var tickable, _i, _len, _ref, _results;\n _ref = this.tickables;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n tickable = _ref[_i];\n _results.push(tickable.tick());\n }\n return _results;\n }\n }),\n QueuesController: Em.ArrayController.extend(),\n WorkersController: Em.ArrayController.extend({\n groups: (function() {\n var content, groups, host, worker, _i, _len, _ref;\n if (content = this.get('content')) {\n groups = {};\n _ref = content.toArray();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n worker = _ref[_i];\n host = worker.get('host');\n if (!groups[host]) {\n groups[host] = Em.ArrayProxy.create({\n content: []\n });\n }\n groups[host].pushObject(worker);\n }\n return $.values(groups);\n }\n }).property('content.length')\n }),\n SponsorsController: Em.ArrayController.extend({\n page: 0,\n arrangedContent: (function() {\n return this.get('shuffled').slice(this.start(), this.end());\n }).property('shuffled.length', 'page'),\n shuffled: (function() {\n var content;\n if (content = this.get('content')) {\n return $.shuffle(content);\n } else {\n return [];\n }\n }).property('content.length'),\n tick: function() {\n return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n },\n pages: (function() {\n var length;\n length = this.get('content.length');\n if (length) {\n return parseInt(length / this.get('perPage') + 1);\n } else {\n return 1;\n }\n }).property('length'),\n isLast: function() {\n return this.get('page') === this.get('pages') - 1;\n },\n start: function() {\n return this.get('page') * this.get('perPage');\n },\n end: function() {\n return this.start() + this.get('perPage');\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar");minispade.register('controllers/stats', "(function() {(function() {\n\n Travis.StatsController = Travis.Controller.extend({\n name: 'stats',\n init: function() {\n return this._super('top');\n },\n activate: function(action, params) {}\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats");minispade.register('helpers', "(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers");minispade.register('helpers/handlebars', "(function() {(function() {\n var safe;\nminispade.require('ext/ember/bound_helper');\n\n safe = function(string) {\n return new Handlebars.SafeString(string);\n };\n\n Handlebars.registerHelper('tipsy', function(text, tip) {\n return safe('' + text + ' ');\n });\n\n Handlebars.registerHelper('t', function(key) {\n return safe(I18n.t(key));\n });\n\n Ember.registerBoundHelper('formatTime', function(value, options) {\n return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n });\n\n Ember.registerBoundHelper('formatDuration', function(duration, options) {\n return safe(Travis.Helpers.timeInWords(duration));\n });\n\n Ember.registerBoundHelper('formatCommit', function(commit, options) {\n if (commit) {\n return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n }\n });\n\n Ember.registerBoundHelper('formatSha', function(sha, options) {\n return safe(Travis.Helpers.formatSha(sha));\n });\n\n Ember.registerBoundHelper('pathFrom', function(url, options) {\n return safe(Travis.Helpers.pathFrom(url));\n });\n\n Ember.registerBoundHelper('formatMessage', function(message, options) {\n return safe(Travis.Helpers.formatMessage(message, options));\n });\n\n Ember.registerBoundHelper('formatConfig', function(config, options) {\n return safe(Travis.Helpers.formatConfig(config));\n });\n\n Ember.registerBoundHelper('formatLog', function(log, options) {\n return Travis.Helpers.formatLog(log) || '';\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars");minispade.register('helpers/helpers', "(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n this.Travis.Helpers = {\n compact: function(object) {\n var key, result, value, _ref;\n result = {};\n _ref = object || {};\n for (key in _ref) {\n value = _ref[key];\n if (!$.isEmpty(value)) {\n result[key] = value;\n }\n }\n return result;\n },\n safe: function(string) {\n return new Handlebars.SafeString(string);\n },\n colorForResult: function(result) {\n if (result === 0) {\n return 'green';\n } else {\n if (result === 1) {\n return 'red';\n } else {\n return null;\n }\n }\n },\n formatCommit: function(sha, branch) {\n return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n },\n formatSha: function(sha) {\n return (sha || '').substr(0, 7);\n },\n formatConfig: function(config) {\n var values;\n config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n values = $.map(config, function(value, key) {\n value = (value && value.join ? value.join(', ') : value) || '';\n return '%@: %@'.fmt($.camelize(key), value);\n });\n if (values.length === 0) {\n return '-';\n } else {\n return values.join(', ');\n }\n },\n formatMessage: function(message, options) {\n message = message || '';\n if (options.short) {\n message = message.split(/\\n/)[0];\n }\n return this._emojize(this._escape(message)).replace(/\\n/g, ' ');\n },\n formatLog: function(log) {\n return Travis.Log.filter(log);\n },\n pathFrom: function(url) {\n return (url || '').split('/').pop();\n },\n timeAgoInWords: function(date) {\n return $.timeago.distanceInWords(date);\n },\n durationFrom: function(started, finished) {\n started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n if (started && finished) {\n return Math.round((finished - started) / 1000);\n } else {\n return 0;\n }\n },\n timeInWords: function(duration) {\n var days, hours, minutes, result, seconds;\n days = Math.floor(duration / 86400);\n hours = Math.floor(duration % 86400 / 3600);\n minutes = Math.floor(duration % 3600 / 60);\n seconds = duration % 60;\n if (days > 0) {\n return 'more than 24 hrs';\n } else {\n result = [];\n if (hours === 1) {\n result.push(hours + ' hr');\n }\n if (hours > 1) {\n result.push(hours + ' hrs');\n }\n if (minutes > 0) {\n result.push(minutes + ' min');\n }\n if (seconds > 0) {\n result.push(seconds + ' sec');\n }\n if (result.length > 0) {\n return result.join(' ');\n } else {\n return '-';\n }\n }\n },\n _normalizeDateString: function(string) {\n if (window.JHW) {\n string = string.replace('T', ' ').replace(/-/g, '/');\n string = string.replace('Z', '').replace(/\\..*$/, '');\n }\n return string;\n },\n _nowUtc: function() {\n return this._toUtc(new Date());\n },\n _toUtc: function(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n },\n _emojize: function(text) {\n var emojis;\n emojis = text.match(/:\\S+?:/g);\n if (emojis !== null) {\n $.each(emojis.uniq(), function(ix, emoji) {\n var image, strippedEmoji;\n strippedEmoji = emoji.substring(1, emoji.length - 1);\n if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n image = ' ';\n return text = text.replace(new RegExp(emoji, 'g'), image);\n }\n });\n }\n return text;\n },\n _escape: function(text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers");minispade.register('helpers/urls', "(function() {(function() {\n\n this.Travis.Urls = {\n repo: function(slug) {\n return \"/\" + slug;\n },\n builds: function(slug) {\n return \"/\" + slug + \"/builds\";\n },\n pullRequests: function(slug) {\n return \"/\" + slug + \"/pull_requests\";\n },\n branches: function(slug) {\n return \"/\" + slug + \"/branches\";\n },\n build: function(slug, id) {\n return \"/\" + slug + \"/builds/\" + id;\n },\n job: function(slug, id) {\n return \"/\" + slug + \"/jobs/\" + id;\n },\n githubCommit: function(slug, sha) {\n return \"http://github.com/\" + slug + \"/commit/\" + sha;\n },\n githubRepo: function(slug) {\n return \"http://github.com/\" + slug;\n },\n githubWatchers: function(slug) {\n return \"http://github.com/\" + slug + \"/watchers\";\n },\n githubNetwork: function(slug) {\n return \"http://github.com/\" + slug + \"/network\";\n },\n githubAdmin: function(slug) {\n return \"http://github.com/\" + slug + \"/admin/hooks#travis_minibucket\";\n },\n statusImage: function(slug, branch) {\n return (\"https://secure.travis-ci.org/\" + slug + \".png\") + (branch ? \"?branch=\" + branch : '');\n },\n email: function(email) {\n return \"mailto:\" + email;\n },\n account: function(login) {\n return \"/profile/\" + login;\n },\n user: function(login) {\n return \"/profile/\" + login + \"/me\";\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls");minispade.register('models', "(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repo');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models");minispade.register('models/account', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Account = Travis.Model.extend({\n primaryKey: 'login',\n login: DS.attr('string'),\n name: DS.attr('string'),\n type: DS.attr('string'),\n reposCount: DS.attr('number'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('login'));\n }).property()\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account");minispade.register('models/artifact', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Artifact = Travis.Model.extend({\n body: DS.attr('string'),\n init: function() {\n this._super.apply(this, arguments);\n return this.set('queue', Ember.A([]));\n },\n append: function(body) {\n if (this.get('isLoaded')) {\n return this.set('body', this.get('body') + body);\n } else {\n return this.get('queue').pushObject(body);\n }\n },\n recordDidLoad: (function() {\n var queue;\n if (this.get('isLoaded')) {\n queue = this.get('queue');\n if (queue.get('length') > 0) {\n return this.append(queue.toArray().join(''));\n }\n }\n }).observes('isLoaded')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact");minispade.register('models/branch', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n repoId: DS.attr('number', {\n key: 'repository_id'\n }),\n commitId: DS.attr('number'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n duration: DS.attr('number'),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n commit: DS.belongsTo('Travis.Commit'),\n repo: (function() {\n if (this.get('repoId')) {\n return Travis.Repo.find(this.get('repoId'));\n }\n }).property('repoId'),\n updateTimes: function() {\n this.notifyPropertyChange('started_at');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n this.Travis.Branch.reopenClass({\n byRepoId: function(id) {\n return this.find({\n repository_id: id\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch");minispade.register('models/build', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n eventType: DS.attr('string'),\n repoId: DS.attr('number'),\n commitId: DS.attr('number'),\n state: DS.attr('string'),\n number: DS.attr('number'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string', {\n key: 'started_at'\n }),\n finishedAt: DS.attr('string', {\n key: 'finished_at'\n }),\n repo: DS.belongsTo('Travis.Repo'),\n commit: DS.belongsTo('Travis.Commit'),\n jobs: DS.hasMany('Travis.Job', {\n key: 'job_ids'\n }),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n isMatrix: (function() {\n return this.get('data.job_ids.length') > 1;\n }).property('data.job_ids.length'),\n requiredJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return !data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n allowedFailureJobs: (function() {\n return this.get('jobs').filter(function(data) {\n return data.get('allowFailure');\n });\n }).property('jobs.@each.allowFailure'),\n configKeys: (function() {\n var config, headers, key, keys;\n if (!(config = this.get('config'))) {\n return [];\n }\n keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n headers = (function() {\n var _i, _len, _ref, _results;\n _ref = ['build.job', 'build.duration', 'build.finished_at'];\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n key = _ref[_i];\n _results.push(I18n.t(key));\n }\n return _results;\n })();\n return $.map(headers.concat(keys), function(key) {\n return $.camelize(key);\n });\n }).property('config')\n });\n\n this.Travis.Build.reopenClass({\n byRepoId: function(id, parameters) {\n return this.find($.extend(parameters || {}, {\n repository_id: id\n }));\n },\n olderThanNumber: function(id, build_number) {\n return this.find({\n url: \"/builds\",\n repository_id: id,\n after_number: build_number\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build");minispade.register('models/commit', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Commit = Travis.Model.extend({\n buildId: DS.attr('number'),\n sha: DS.attr('string'),\n branch: DS.attr('string'),\n message: DS.attr('string'),\n compareUrl: DS.attr('string'),\n authorName: DS.attr('string'),\n authorEmail: DS.attr('string'),\n committerName: DS.attr('string'),\n committerEmail: DS.attr('string'),\n build: DS.belongsTo('Travis.Build', {\n key: 'buildId'\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit");minispade.register('models/extensions', "(function() {(function() {\n\n Travis.DurationCalculations = Ember.Mixin.create({\n duration: (function() {\n var duration;\n if (duration = this.get('_duration')) {\n return duration;\n } else {\n return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n }\n }).property('_duration', 'finishedAt', 'startedAt'),\n updateTimes: function() {\n this.notifyPropertyChange('_duration');\n return this.notifyPropertyChange('finished_at');\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions");minispade.register('models/hook', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Hook = Travis.Model.extend({\n name: DS.attr('string'),\n ownerName: DS.attr('string'),\n description: DS.attr('string'),\n active: DS.attr('boolean'),\n account: (function() {\n return this.get('slug').split('/')[0];\n }).property('slug'),\n slug: (function() {\n return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n }).property('ownerName', 'name'),\n urlGithub: (function() {\n return \"http://github.com/\" + (this.get('slug'));\n }).property(),\n urlGithubAdmin: (function() {\n return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n }).property(),\n toggle: function() {\n var transaction;\n transaction = this.get('store').transaction();\n transaction.add(this);\n this.set('active', !this.get('active'));\n return transaction.commit();\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook");minispade.register('models/job', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n repoId: DS.attr('number', {\n key: 'repository_id'\n }),\n buildId: DS.attr('number'),\n commitId: DS.attr('number'),\n logId: DS.attr('number'),\n queue: DS.attr('string'),\n state: DS.attr('string'),\n number: DS.attr('string'),\n result: DS.attr('number'),\n _duration: DS.attr('number', {\n key: 'duration'\n }),\n startedAt: DS.attr('string'),\n finishedAt: DS.attr('string'),\n allowFailure: DS.attr('boolean', {\n key: 'allow_failure'\n }),\n repo: DS.belongsTo('Travis.Repo', {\n key: 'repository_id'\n }),\n build: DS.belongsTo('Travis.Build', {\n key: 'build_id'\n }),\n commit: DS.belongsTo('Travis.Commit', {\n key: 'commit_id'\n }),\n log: DS.belongsTo('Travis.Artifact', {\n key: 'log_id'\n }),\n isQueued: (function() {}).property('state'),\n config: (function() {\n return Travis.Helpers.compact(this.get('data.config'));\n }).property('data.config'),\n sponsor: (function() {\n return this.get('data.sponsor');\n }).property('data.sponsor'),\n configValues: (function() {\n var config;\n if (config = this.get('config')) {\n return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n } else {\n return [];\n }\n }).property('config'),\n appendLog: function(text) {\n var log;\n if (log = this.get('log')) {\n return log.append(text);\n }\n },\n subscribe: function() {\n var id;\n if (id = this.get('id')) {\n return Travis.app.pusher.subscribe(\"job-\" + id);\n }\n },\n onStateChange: (function() {\n if (this.get('state') === 'finished') {\n return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n }\n }).observes('state')\n });\n\n this.Travis.Job.reopenClass({\n queued: function(queue) {\n this.find();\n return Travis.app.store.filter(this, function(job) {\n var queued;\n queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n return queued && job.get('queue') === (\"builds.\" + queue);\n });\n },\n findMany: function(ids) {\n return Travis.app.store.findMany(this, ids);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job");minispade.register('models/repo', "(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n this.Travis.Repo = Travis.Model.extend({\n slug: DS.attr('string'),\n description: DS.attr('string'),\n lastBuildId: DS.attr('number'),\n lastBuildNumber: DS.attr('string'),\n lastBuildResult: DS.attr('number'),\n lastBuildStartedAt: DS.attr('string'),\n lastBuildFinishedAt: DS.attr('string'),\n lastBuild: DS.belongsTo('Travis.Build'),\n builds: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepoId(id, {\n event_type: 'push'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n pullRequests: (function() {\n var array, builds, id;\n id = this.get('id');\n builds = Travis.Build.byRepoId(id, {\n event_type: 'pull_request'\n });\n array = Travis.ExpandableRecordArray.create({\n type: Travis.Build,\n content: Ember.A([]),\n store: this.get('store')\n });\n array.load(builds);\n return array;\n }).property(),\n branches: (function() {\n return Travis.Branch.byRepoId(this.get('id'));\n }).property(),\n owner: (function() {\n return (this.get('slug') || '').split('/')[0];\n }).property('slug'),\n name: (function() {\n return (this.get('slug') || '').split('/')[1];\n }).property('slug'),\n lastBuildDuration: (function() {\n var duration;\n duration = this.get('data.last_build_duration');\n if (!duration) {\n duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n }\n return duration;\n }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n sortOrder: (function() {\n var lastBuildFinishedAt;\n if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n return -new Date(lastBuildFinishedAt).getTime();\n } else {\n return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n }\n }).property('lastBuildFinishedAt', 'lastBuildId'),\n stats: (function() {\n var _this = this;\n return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n _this.set('_stats', data);\n return _this.notifyPropertyChange('stats');\n }) && {};\n }).property(),\n select: function() {\n return Travis.Repo.select(this.get('id'));\n },\n updateTimes: function() {\n return this.notifyPropertyChange('lastBuildDuration');\n }\n });\n\n this.Travis.Repo.reopenClass({\n url: 'repositories',\n recent: function() {\n return this.find();\n },\n ownedBy: function(login) {\n return this.find({\n owner_name: login,\n orderBy: 'name'\n });\n },\n search: function(query) {\n return this.find({\n search: query,\n orderBy: 'name'\n });\n },\n bySlug: function(slug) {\n var repo;\n repo = $.select(this.find().toArray(), function(repo) {\n return repo.get('slug') === slug;\n });\n if (repo.length > 0) {\n return repo;\n } else {\n return this.find({\n slug: slug\n });\n }\n },\n select: function(id) {\n return this.find().forEach(function(repo) {\n return repo.set('selected', repo.get('id') === id);\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repo");minispade.register('models/sponsor', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Sponsor = Travis.Model.extend({\n type: DS.attr('string'),\n url: DS.attr('string'),\n link: DS.attr('string'),\n image: (function() {\n return \"/images/sponsors/\" + (this.get('data.image'));\n }).property('data.image')\n });\n\n Travis.Sponsor.reopenClass({\n decks: function() {\n return this.platinum().concat(this.gold());\n },\n platinum: function() {\n var platinum, sponsor, _i, _len, _results;\n platinum = this.byType('platinum').toArray();\n _results = [];\n for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n sponsor = platinum[_i];\n _results.push([sponsor]);\n }\n return _results;\n },\n gold: function() {\n var gold, _results;\n gold = this.byType('gold').toArray();\n _results = [];\n while (gold.length > 0) {\n _results.push(gold.splice(0, 2));\n }\n return _results;\n },\n links: function() {\n return this.byType('silver');\n },\n byType: function() {\n var types;\n types = Array.prototype.slice.apply(arguments);\n return Travis.Sponsor.filter(function(sponsor) {\n return types.indexOf(sponsor.get('type')) !== -1;\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor");minispade.register('models/user', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n name: DS.attr('string'),\n email: DS.attr('string'),\n login: DS.attr('string'),\n token: DS.attr('string'),\n locale: DS.attr('string'),\n gravatarId: DS.attr('string'),\n isSyncing: DS.attr('boolean'),\n syncedAt: DS.attr('string'),\n repoCount: DS.attr('number'),\n init: function() {\n if (this.get('isSyncing')) {\n this.poll();\n }\n this._super();\n return Ember.run.next(this, function() {\n var transaction;\n transaction = this.get('store').transaction();\n return transaction.add(this);\n });\n },\n urlGithub: (function() {\n return \"https://github.com/\" + (this.get('login'));\n }).property(),\n updateLocale: function(locale) {\n var observer, self, transaction;\n this.setWithSession('locale', locale);\n transaction = this.get('transaction');\n transaction.commit();\n self = this;\n observer = function() {\n if (!self.get('isSaving')) {\n self.removeObserver('isSaving', observer);\n transaction = self.get('store').transaction();\n return transaction.add(self);\n }\n };\n return this.addObserver('isSaving', observer);\n },\n type: (function() {\n return 'user';\n }).property(),\n sync: function() {\n this.post('/users/sync');\n this.setWithSession('isSyncing', true);\n return this.poll();\n },\n poll: function() {\n var _this = this;\n return this.ajax('/users', 'get', {\n success: function(data) {\n if (data.user.is_syncing) {\n return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n } else {\n _this.set('isSyncing', false);\n return _this.setWithSession('syncedAt', data.user.synced_at);\n }\n }\n });\n },\n setWithSession: function(name, value) {\n var user;\n this.set(name, value);\n user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n user[$.underscore(name)] = this.get(name);\n return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user");minispade.register('models/worker', "(function() {(function() {\nminispade.require('travis/model');\n\n this.Travis.Worker = Travis.Model.extend({\n state: DS.attr('string'),\n name: DS.attr('string'),\n host: DS.attr('string'),\n lastSeenAt: DS.attr('string'),\n payload: (function() {\n return this.get('data.payload');\n }).property('data.payload'),\n number: (function() {\n return this.get('name').match(/\\d+$/)[0];\n }).property('name'),\n isWorking: (function() {\n return this.get('state') === 'working';\n }).property('state'),\n repo: (function() {\n return Travis.Repo.find(this.get('payload.repo.id'));\n }).property('payload.repo.id'),\n job_id: (function() {\n return this.get('payload.job.id');\n }).property('payload.job.id'),\n job: (function() {\n return Travis.Job.find(this.get('job_id'));\n }).property('job_id')\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker");minispade.register('pusher', "(function() {(function() {\n\n Travis.Pusher = function(config) {\n if (config) {\n this.init(config);\n }\n return this;\n };\n\n $.extend(Travis.Pusher, {\n CHANNELS: ['common'],\n CHANNEL_PREFIX: ''\n });\n\n $.extend(Travis.Pusher.prototype, {\n active_channels: [],\n init: function(config) {\n var channel, _i, _len, _ref, _results;\n Pusher.warn = this.warn.bind(this);\n this.pusher = new Pusher(config.key);\n _ref = Travis.Pusher.CHANNELS;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n channel = _ref[_i];\n _results.push(this.subscribe(channel));\n }\n return _results;\n },\n subscribe: function(channel) {\n var _this = this;\n if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n this.active_channels.push(channel);\n return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n return _this.receive(event, data);\n });\n }\n },\n unsubscribe: function(channel) {\n var ix;\n ix = this.active_channels.indexOf(channel);\n if (this.pusher && ix === -1) {\n this.active_channels.splice(ix, 1);\n return this.pusher.unsubscribe(this.prefix(channel));\n }\n },\n prefix: function(channel) {\n return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n },\n receive: function(event, data) {\n if (event.substr(0, 6) === 'pusher') {\n return;\n }\n if (data.id) {\n data = this.normalize(event, data);\n }\n return Ember.run.next(function() {\n return Travis.app.store.receive(event, data);\n });\n },\n normalize: function(event, data) {\n switch (event) {\n case 'build:started':\n case 'build:finished':\n return data;\n case 'job:created':\n case 'job:started':\n case 'job:finished':\n case 'job:log':\n if (data.queue) {\n data.queue = data.queue.replace('builds.', '');\n }\n return {\n job: data\n };\n case 'worker:added':\n case 'worker:updated':\n case 'worker:removed':\n return {\n worker: data\n };\n }\n },\n warn: function(type, warning) {\n if (!this.ignoreWarning(warning)) {\n return console.warn(warning);\n }\n },\n ignoreWarning: function(warning) {\n var message, _ref;\n if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher");minispade.register('routes', "(function() {(function() {\n\n Travis.Router = Ember.Router.extend({\n location: 'history',\n enableLogging: true,\n initialState: 'loading',\n showRoot: Ember.Route.transitionTo('root.home.show'),\n showStats: Ember.Route.transitionTo('root.stats'),\n showRepo: Ember.Route.transitionTo('root.home.repo.show'),\n showBuilds: Ember.Route.transitionTo('root.home.repo.builds.index'),\n showBuild: Ember.Route.transitionTo('root.home.repo.builds.show'),\n showPullRequests: Ember.Route.transitionTo('root.home.repo.pullRequests'),\n showBranches: Ember.Route.transitionTo('root.home.repo.branches'),\n showJob: Ember.Route.transitionTo('root.home.repo.job'),\n showProfile: Ember.Route.transitionTo('root.profile'),\n showAccount: Ember.Route.transitionTo('root.profile.account'),\n showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n signedIn: function() {\n return !!Travis.app.get('auth.user');\n },\n needsAuth: function(path) {\n return path.indexOf('/profile') === 0 && !this.signedIn();\n },\n loading: Ember.Route.extend({\n routePath: function(router, path) {\n sessionStorage.setItem('travis.path', path);\n if (router.needsAuth(path)) {\n router.transitionTo('root.auth');\n return Travis.app.signIn();\n } else {\n return router.transitionTo('authenticated');\n }\n }\n }),\n authenticated: Ember.Route.extend({\n connectOutlets: function(router) {\n var path;\n path = sessionStorage.getItem('travis.path');\n sessionStorage.removeItem('travis.path');\n router.transitionTo('root');\n if (path) {\n return router.route(path);\n }\n }\n }),\n root: Ember.Route.extend({\n initialState: 'home',\n loading: Ember.State.extend(),\n auth: Ember.Route.extend({\n route: '/auth',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('authLayout');\n $('body').attr('id', 'auth');\n router.get('authLayoutController').connectOutlet('top', 'top');\n return router.get('authLayoutController').connectOutlet('main', 'signin');\n }\n }),\n stats: Ember.Route.extend({\n route: '/stats',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('statsLayout');\n $('body').attr('id', 'stats');\n router.get('statsLayoutController').connectOutlet('top', 'top');\n return router.get('statsLayoutController').connectOutlet('main', 'stats');\n }\n }),\n profile: Ember.Route.extend({\n initialState: 'index',\n route: '/profile',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('profileLayout');\n $('body').attr('id', 'profile');\n router.get('accountsController').set('content', Travis.Account.find());\n router.get('profileLayoutController').connectOutlet('top', 'top');\n return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n router.get('profileLayoutController').connectOutlet('main', 'profile');\n return router.get('profileController').activate('hooks');\n }\n }),\n account: Ember.Route.extend({\n initialState: 'index',\n route: '/:login',\n connectOutlets: function(router, account) {\n var params;\n if (account) {\n params = {\n login: account.get('login')\n };\n return router.get('profileController').setParams(params);\n } else {\n return router.send('showProfile');\n }\n },\n deserialize: function(router, params) {\n return router.get('accountsController').findByLogin(params.login);\n },\n serialize: function(router, account) {\n if (account) {\n return {\n login: account.get('login')\n };\n } else {\n return {};\n }\n },\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('profileController').activate('hooks');\n }\n }),\n profile: Ember.Route.extend({\n route: '/profile',\n connectOutlets: function(router) {\n return router.get('profileController').activate('user');\n }\n })\n })\n }),\n home: Ember.Route.extend({\n initialState: 'show',\n route: '/',\n connectOutlets: function(router) {\n router.get('applicationController').connectOutlet('home');\n $('body').attr('id', 'home');\n router.get('homeController').connectOutlet('left', 'repos');\n router.get('homeController').connectOutlet('right', 'sidebar');\n router.get('homeController').connectOutlet('top', 'top');\n return router.get('homeController').connectOutlet('main', 'repo');\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repoController').activate('index');\n }\n }),\n repo: Ember.Route.extend({\n initialState: 'show',\n route: '/:owner/:name',\n connectOutlets: function(router, repo) {\n return router.get('repoController').set('repo', repo);\n },\n deserialize: function(router, params) {\n var deferred, observer, repos, slug;\n slug = \"\" + params.owner + \"/\" + params.name;\n repos = Travis.Repo.bySlug(slug);\n deferred = $.Deferred();\n observer = function() {\n if (repos.get('isLoaded')) {\n repos.removeObserver('isLoaded', observer);\n return deferred.resolve(repos.objectAt(0));\n }\n };\n repos.addObserver('isLoaded', observer);\n return deferred.promise();\n },\n serialize: function(router, repo) {\n if (repo) {\n return {\n owner: repo.get('owner'),\n name: repo.get('name')\n };\n } else {\n return {};\n }\n },\n show: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router) {\n return router.get('repoController').activate('current');\n }\n }),\n builds: Ember.Route.extend({\n route: '/builds',\n initialState: 'index',\n index: Ember.Route.extend({\n route: '/',\n connectOutlets: function(router, repo) {\n return router.get('repoController').activate('builds');\n }\n }),\n show: Ember.Route.extend({\n route: '/:build_id',\n connectOutlets: function(router, build) {\n if (!build.get) {\n build = Travis.Build.find(build);\n }\n router.get('repoController').set('build', build);\n return router.get('repoController').activate('build');\n },\n serialize: function(router, build) {\n if (build.get) {\n return {\n build_id: build.get('id')\n };\n } else {\n return {\n build_id: build\n };\n }\n },\n deserialize: function(router, params) {\n var build, deferred, observer;\n build = Travis.Build.find(params.build_id);\n deferred = $.Deferred();\n observer = function() {\n if (build.get('id')) {\n build.removeObserver('id', observer);\n return deferred.resolve(build);\n }\n };\n build.addObserver('id', observer);\n return deferred.promise();\n }\n })\n }),\n pullRequests: Ember.Route.extend({\n route: '/pull_requests',\n connectOutlets: function(router, repo) {\n return router.get('repoController').activate('pull_requests');\n }\n }),\n branches: Ember.Route.extend({\n route: '/branches',\n connectOutlets: function(router, repo) {\n return router.get('repoController').activate('branches');\n }\n }),\n job: Ember.Route.extend({\n route: '/jobs/:job_id',\n connectOutlets: function(router, job) {\n if (!job.get) {\n job = Travis.Job.find(job);\n }\n router.get('repoController').set('job', job);\n return router.get('repoController').activate('job');\n },\n serialize: function(router, job) {\n if (job.get) {\n return {\n job_id: job.get('id')\n };\n } else {\n return {\n job_id: job\n };\n }\n },\n deserialize: function(router, params) {\n var deferred, job, observer;\n job = Travis.Job.find(params.job_id);\n deferred = $.Deferred();\n observer = function() {\n if (job.get('id')) {\n job.removeObserver('id', observer);\n return deferred.resolve(job);\n }\n };\n job.addObserver('id', observer);\n return deferred.promise();\n }\n })\n })\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes");minispade.register('slider', "(function() {(function() {\n\n this.Travis.Slider = function() {\n if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n this.minimize();\n }\n return this;\n };\n\n $.extend(Travis.Slider.prototype, {\n persist: function() {\n return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n },\n isMinimized: function() {\n return $('body').hasClass('maximized');\n },\n minimize: function() {\n return $('body').addClass('maximized');\n },\n toggle: function() {\n var element;\n $('body').toggleClass('maximized');\n this.persist();\n element = $(' ');\n $('#top .profile').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider");minispade.register('store', "(function() {(function() {\n var DATA_PROXY,\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n DATA_PROXY = {\n get: function(name) {\n return this.savedData[name];\n }\n };\n\n Travis.Store = DS.Store.extend({\n revision: 4,\n adapter: Travis.RestAdapter.create(),\n merge: function(type, id, hash) {\n var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n if (hash === void 0) {\n hash = id;\n primaryKey = type.proto().primaryKey;\n Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n id = hash[primaryKey];\n }\n typeMap = this.typeMapFor(type);\n dataCache = typeMap.cidToHash;\n clientId = typeMap.idToCid[id];\n recordCache = this.get('recordCache');\n if (clientId !== void 0) {\n if (data = dataCache[clientId]) {\n $.extend(data, hash);\n } else {\n dataCache[clientId] = hash;\n }\n if (record = recordCache[clientId]) {\n record.send('didChangeData');\n }\n } else {\n clientId = this.find(type, id).get('clientId');\n }\n if (clientId) {\n DATA_PROXY.savedData = hash;\n this.updateRecordArrays(type, clientId, DATA_PROXY);\n return {\n id: id,\n clientId: clientId\n };\n }\n },\n receive: function(event, data) {\n var job, mappings, name, type, _ref;\n _ref = event.split(':'), name = _ref[0], type = _ref[1];\n mappings = this.adapter.get('mappings');\n type = mappings[name];\n if (event === 'job:log') {\n if (job = this.find(Travis.Job, data['job']['id'])) {\n return job.appendLog(data['job']['_log']);\n }\n } else if (data[type.singularName()]) {\n return this._loadOne(this, type, data);\n } else if (data[type.pluralName()]) {\n return this._loadMany(this, type, data);\n } else {\n if (!type) {\n throw \"can't load data for \" + name;\n }\n }\n },\n _loadOne: function(store, type, json) {\n var root;\n root = type.singularName();\n this.adapter.sideload(store, type, json, root);\n this.merge(type, json[root]);\n return this._updateAssociations(type, root, json[root]);\n },\n _loadMany: function(store, type, json) {\n var root;\n root = type.pluralName();\n this.adapter.sideload(store, type, json, root);\n return this.loadMany(type, json[root]);\n },\n _updateAssociations: function(type, name, data) {\n var _this = this;\n return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n var clientId, dataProxy, id, ids, parent, _ref;\n if (meta.kind === 'belongsTo') {\n id = data[\"\" + key + \"_id\"];\n if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n if (parent = _this.findByClientId(meta.type, clientId, id)) {\n dataProxy = parent.get('data');\n if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n ids.pushObject(data.id);\n }\n return parent.send('didChangeData');\n }\n }\n }\n }\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store");minispade.register('store/fixture_adapter', "(function() {(function() {\n\n this.Travis.FixtureAdapter = DS.Adapter.extend({\n find: function(store, type, id) {\n var fixtures;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n if (fixtures.hasLoaded) {\n return;\n }\n return setTimeout((function() {\n store.loadMany(type, fixtures);\n return fixtures.hasLoaded = true;\n }), 300);\n },\n findMany: function() {\n return this.find.apply(this, arguments);\n },\n findAll: function(store, type) {\n var fixtures, ids;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n ids = fixtures.map(function(item, index, self) {\n return item.id;\n });\n return store.loadMany(type, ids, fixtures);\n },\n findQuery: function(store, type, params, array) {\n var fixture, fixtures, hashes, key, matches, value;\n fixtures = type.FIXTURES;\n Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n hashes = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n fixture = fixtures[_i];\n matches = (function() {\n var _results1;\n _results1 = [];\n for (key in params) {\n value = params[key];\n _results1.push(key === 'orderBy' || fixture[key] === value);\n }\n return _results1;\n })();\n if (matches.reduce(function(a, b) {\n return a && b;\n })) {\n _results.push(fixture);\n } else {\n _results.push(null);\n }\n }\n return _results;\n })();\n return array.load(hashes.compact());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter");minispade.register('store/rest_adapter', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n mappings: {\n repositories: Travis.Repo,\n repository: Travis.Repo,\n repos: Travis.Repo,\n repo: Travis.Repo,\n builds: Travis.Build,\n build: Travis.Build,\n commits: Travis.Commit,\n commit: Travis.Commit,\n jobs: Travis.Job,\n job: Travis.Job,\n account: Travis.Account,\n accounts: Travis.Account,\n worker: Travis.Worker,\n workers: Travis.Worker\n },\n plurals: {\n repositories: 'repositories',\n repository: 'repositories',\n repo: 'repos',\n build: 'builds',\n branch: 'branches',\n job: 'jobs',\n worker: 'workers',\n profile: 'profile'\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter");minispade.register('tailing', "(function() {(function() {\n\n this.Travis.Tailing = function() {\n this.position = $(window).scrollTop();\n $(window).scroll(this.onScroll.bind(this));\n return this;\n };\n\n $.extend(Travis.Tailing.prototype, {\n options: {\n timeout: 200\n },\n run: function() {\n this.autoScroll();\n this.positionButton();\n if (this.active()) {\n return Ember.run.later(this.run.bind(this), this.options.timeout);\n }\n },\n toggle: function(event) {\n if (this.active()) {\n return this.stop();\n } else {\n return this.start();\n }\n },\n active: function() {\n return $('#tail').hasClass('active');\n },\n start: function() {\n $('#tail').addClass('active');\n return this.run();\n },\n stop: function() {\n return $('#tail').removeClass('active');\n },\n autoScroll: function() {\n var log, logBottom, win, winBottom;\n if (!this.active()) {\n return;\n }\n win = $(window);\n log = $('#log');\n logBottom = log.offset().top + log.outerHeight() + 40;\n winBottom = win.scrollTop() + win.height();\n if (logBottom - winBottom > 0) {\n return win.scrollTop(logBottom - win.height());\n }\n },\n onScroll: function() {\n var position;\n this.positionButton();\n position = $(window).scrollTop();\n if (position < this.position) {\n this.stop();\n }\n return this.position = position;\n },\n positionButton: function() {\n var max, offset, tail;\n tail = $('#tail');\n if (tail.length === 0) {\n return;\n }\n offset = $(window).scrollTop() - $('#log').offset().top;\n max = $('#log').height() - $('#tail').height() + 5;\n if (offset > max) {\n offset = max;\n }\n if (offset > 0) {\n return tail.css({\n top: offset - 2\n });\n } else {\n return tail.css({\n top: 0\n });\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing");minispade.register('views', "(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n this.Travis.reopen({\n View: Em.View.extend({\n popup: function(event) {\n return $(\"#\" + event.target.name).toggleClass('display');\n }\n })\n });\n\n this.Travis.reopen({\n HomeView: Travis.View.extend({\n templateName: 'layouts/home'\n }),\n AuthLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ProfileLayoutView: Travis.View.extend({\n templateName: 'layouts/profile'\n }),\n StatsLayoutView: Travis.View.extend({\n templateName: 'layouts/simple'\n }),\n ApplicationView: Travis.View.extend({\n templateName: 'application'\n })\n });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/signin');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views");minispade.register('views/accounts', "(function() {(function() {\n\n this.Travis.reopen({\n AccountsView: Travis.View.extend({\n tabBinding: 'controller.tab',\n templateName: 'profile/accounts',\n classAccounts: (function() {\n if (this.get('tab') === 'accounts') {\n return 'active';\n }\n }).property('tab')\n }),\n AccountsListView: Em.CollectionView.extend({\n elementId: 'accounts',\n accountBinding: 'content',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n accountBinding: 'content',\n typeBinding: 'content.type',\n selectedBinding: 'account.selected',\n classNames: ['account'],\n classNameBindings: ['type', 'selected'],\n name: (function() {\n return this.get('content.name') || this.get('content.login');\n }).property('content.login', 'content.name'),\n urlAccount: (function() {\n return Travis.Urls.account(this.get('account.login'));\n }).property('account.login')\n })\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts");minispade.register('views/build', "(function() {(function() {\n\n this.Travis.reopen({\n BuildsView: Travis.View.extend({\n templateName: 'builds/list',\n buildsBinding: 'controller.builds',\n showMore: function() {\n var id, number;\n id = this.get('controller.repo.id');\n number = this.get('builds.lastObject.number');\n return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n },\n ShowMoreButton: Em.View.extend({\n tagName: 'button',\n classNameBindings: ['isLoading'],\n attributeBindings: ['disabled'],\n isLoadingBinding: 'controller.builds.isLoading',\n template: Em.Handlebars.compile('{{view.label}}'),\n disabledBinding: 'isLoading',\n label: (function() {\n if (this.get('isLoading')) {\n return 'Loading';\n } else {\n return 'Show more';\n }\n }).property('isLoading'),\n click: function() {\n return this.get('parentView').showMore();\n }\n })\n }),\n BuildsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repoBinding: 'controller.repo',\n buildBinding: 'context',\n commitBinding: 'build.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repo.slug'), this.get('build.id'));\n }).property('repo.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repo.slug'), this.get('commit.sha'));\n }).property('repo.slug', 'commit.sha')\n }),\n BuildView: Travis.View.extend({\n templateName: 'builds/show',\n elementId: 'build',\n classNameBindings: ['color', 'loading'],\n repoBinding: 'controller.repo',\n buildBinding: 'controller.build',\n commitBinding: 'build.commit',\n loading: (function() {\n return !this.get('build.isLoaded');\n }).property('build.isLoaded'),\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('build.result'));\n }).property('build.result'),\n urlBuild: (function() {\n return Travis.Urls.build(this.get('repo.slug'), this.get('build.id'));\n }).property('repo.slug', 'build.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repo.slug'), this.get('commit.sha'));\n }).property('repo.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build");minispade.register('views/job', "(function() {(function() {\n\n this.Travis.reopen({\n JobsView: Travis.View.extend({\n templateName: 'jobs/list',\n buildBinding: 'controller.build'\n }),\n JobsItemView: Travis.View.extend({\n tagName: 'tr',\n classNameBindings: ['color'],\n repoBinding: 'context.repo',\n jobBinding: 'context',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repo.slug'), this.get('job.id'));\n }).property('repo.slug', 'job.id')\n }),\n JobView: Travis.View.extend({\n templateName: 'jobs/show',\n repoBinding: 'controller.repo',\n jobBinding: 'controller.job',\n commitBinding: 'job.commit',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('job.result'));\n }).property('job.result'),\n urlJob: (function() {\n return Travis.Urls.job(this.get('repo.slug'), this.get('job.id'));\n }).property('repo.slug', 'job.id'),\n urlGithubCommit: (function() {\n return Travis.Urls.githubCommit(this.get('repo.slug'), this.get('commit.sha'));\n }).property('repo.slug', 'commit.sha'),\n urlAuthor: (function() {\n return Travis.Urls.email(this.get('commit.authorEmail'));\n }).property('commit.authorEmail'),\n urlCommitter: (function() {\n return Travis.Urls.email(this.get('commit.committerEmail'));\n }).property('commit.committerEmail')\n }),\n LogView: Travis.View.extend({\n templateName: 'jobs/log',\n logBinding: 'job.log',\n click: function(event) {\n return $(event.target).closest('.fold').toggleClass('open');\n },\n toTop: function() {\n return $(window).scrollTop(0);\n },\n jobBinding: 'context',\n toggleTailing: function(event) {\n Travis.app.tailing.toggle();\n return event.preventDefault();\n },\n logSubscriber: (function() {\n var job, state;\n job = this.get('job');\n state = this.get('job.state');\n if (job && state !== 'finished') {\n job.subscribe();\n }\n return null;\n }).property('job', 'job.state')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job");minispade.register('views/left', "(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n tabBinding: 'controller.tab',\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left");minispade.register('views/profile', "(function() {(function() {\n\n this.Travis.reopen({\n ProfileView: Travis.View.extend({\n templateName: 'profile/show',\n accountBinding: 'controller.account',\n name: (function() {\n return this.get('account.name') || this.get('account.login');\n }).property('account.name', 'account.login')\n }),\n ProfileTabsView: Travis.View.extend({\n templateName: 'profile/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classHooks: (function() {\n if (this.get('tab') === 'hooks') {\n return 'active';\n }\n }).property('tab'),\n classUser: (function() {\n if (this.get('tab') === 'user') {\n return 'active';\n }\n }).property('tab'),\n accountBinding: 'controller.account',\n displayUser: (function() {\n return this.get('controller.account.login') === this.get('controller.user.login');\n }).property('controller.account.login', 'controller.user.login')\n }),\n HooksView: Travis.View.extend({\n templateName: 'profile/tabs/hooks',\n userBinding: 'controller.user',\n urlGithubAdmin: (function() {\n return Travis.Urls.githubAdmin(this.get('hook.slug'));\n }).property('hook.slug')\n }),\n UserView: Travis.View.extend({\n templateName: 'profile/tabs/user',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n }).property('user.gravatarId'),\n locales: (function() {\n return [\n {\n key: null,\n name: ''\n }, {\n key: 'en',\n name: 'English'\n }, {\n key: 'ca',\n name: 'Catalan'\n }, {\n key: 'cs',\n name: 'Čeština'\n }, {\n key: 'es',\n name: 'Español'\n }, {\n key: 'fr',\n name: 'Français'\n }, {\n key: 'ja',\n name: '日本語'\n }, {\n key: 'nl',\n name: 'Nederlands'\n }, {\n key: 'nb',\n name: 'Norsk Bokmål'\n }, {\n key: 'pl',\n name: 'Polski'\n }, {\n key: {\n 'pt-BR': {\n name: 'Português brasileiro'\n }\n }\n }, {\n key: 'ru',\n name: 'Русский'\n }\n ];\n }).property(),\n saveLocale: function(event) {\n return this.get('user').updateLocale($('#locale').val());\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile");minispade.register('views/repo', "(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo");minispade.register('views/repo/list', "(function() {(function() {\n\n this.Travis.reopen({\n ReposView: Travis.View.extend({\n templateName: 'repos/list',\n toggleInfo: function(event) {\n return $('#repos').toggleClass('open');\n }\n }),\n ReposListView: Em.CollectionView.extend({\n elementId: 'repos',\n tagName: 'ul',\n emptyView: Ember.View.extend({\n template: Ember.Handlebars.compile('Loading
')\n }),\n itemViewClass: Travis.View.extend({\n repoBinding: 'content',\n classNames: ['repo'],\n classNameBindings: ['color', 'selected'],\n selectedBinding: 'repo.selected',\n color: (function() {\n return Travis.Helpers.colorForResult(this.get('repo.lastBuildResult'));\n }).property('repo.lastBuildResult'),\n urlRepo: (function() {\n return Travis.Urls.repo(this.get('repo.slug'));\n }).property('repo.slug'),\n urlLastBuild: (function() {\n return Travis.Urls.build(this.get('repo.slug'), this.get('repo.lastBuildId'));\n }).property('repo.slug', 'repo.lastBuildId')\n })\n }),\n ReposListTabsView: Travis.View.extend({\n templateName: 'repos/list/tabs',\n tabBinding: 'controller.tab',\n activate: function(event) {\n return this.get('controller').activate(event.target.name);\n },\n classRecent: (function() {\n if (this.get('tab') === 'recent') {\n return 'active';\n }\n }).property('tab'),\n classOwned: (function() {\n var classes;\n classes = [];\n if (this.get('tab') === 'owned') {\n classes.push('active');\n }\n if (Travis.app.get('currentUser')) {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab', 'Travis.app.currentUser'),\n classSearch: (function() {\n if (this.get('tab') === 'search') {\n return 'active';\n }\n }).property('tab')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list");minispade.register('views/repo/show', "(function() {(function() {\n\n this.Travis.reopen({\n RepoView: Travis.View.extend({\n templateName: 'repos/show',\n repoBinding: 'controller.repo',\n \"class\": (function() {\n if (!this.get('repo.isLoaded')) {\n return 'loading';\n }\n }).property('repo.isLoaded'),\n urlGithub: (function() {\n return Travis.Urls.githubRepo(this.get('repo.slug'));\n }).property('repo.slug'),\n urlGithubWatchers: (function() {\n return Travis.Urls.githubWatchers(this.get('repo.slug'));\n }).property('repo.slug'),\n urlGithubNetwork: (function() {\n return Travis.Urls.githubNetwork(this.get('repo.slug'));\n }).property('repo.slug')\n }),\n RepoShowTabsView: Travis.View.extend({\n templateName: 'repos/show/tabs',\n repoBinding: 'controller.repo',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n classCurrent: (function() {\n if (this.get('tab') === 'current') {\n return 'active';\n }\n }).property('tab'),\n classBuilds: (function() {\n if (this.get('tab') === 'builds') {\n return 'active';\n }\n }).property('tab'),\n classPullRequests: (function() {\n if (this.get('tab') === 'pull_requests') {\n return 'active';\n }\n }).property('tab'),\n classBranches: (function() {\n if (this.get('tab') === 'branches') {\n return 'active';\n }\n }).property('tab'),\n classBuild: (function() {\n var classes, tab;\n tab = this.get('tab');\n classes = [];\n if (tab === 'build') {\n classes.push('active');\n }\n if (tab === 'build' || tab === 'job') {\n classes.push('display-inline');\n }\n return classes.join(' ');\n }).property('tab'),\n classJob: (function() {\n if (this.get('tab') === 'job') {\n return 'active display-inline';\n }\n }).property('tab')\n }),\n RepoShowToolsView: Travis.View.extend({\n templateName: 'repos/show/tools',\n repoBinding: 'controller.repo',\n buildBinding: 'controller.build',\n jobBinding: 'controller.job',\n tabBinding: 'controller.tab',\n toggle: function() {\n var element;\n element = $('#tools .pane').toggleClass('display-inline');\n return this.set('active', element.hasClass('display-inline'));\n },\n branches: (function() {\n if (this.get('active')) {\n return this.get('repo.branches');\n }\n }).property('active', 'repo.branches'),\n urlRepo: (function() {\n return 'https://' + location.host + Travis.Urls.repo(this.get('repo.slug'));\n }).property('repo.slug'),\n urlStatusImage: (function() {\n return Travis.Urls.statusImage(this.get('repo.slug'), this.get('branch.commit.branch'));\n }).property('repo.slug', 'branch'),\n markdownStatusImage: (function() {\n return \"[) + \")](\" + (this.get('urlRepo')) + \")\";\n }).property('urlStatusImage'),\n textileStatusImage: (function() {\n return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepo'));\n }).property('urlStatusImage'),\n rdocStatusImage: (function() {\n return \"{ }[\" + (this.get('urlRepo')) + \"]\";\n }).property('urlStatusImage')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show");minispade.register('views/sidebar', "(function() {(function() {\n\n this.Travis.reopen({\n SidebarView: Travis.View.extend({\n templateName: 'layouts/sidebar',\n DecksView: Em.View.extend({\n templateName: \"sponsors/decks\",\n controller: Travis.SponsorsController.create({\n perPage: 1\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n Travis.app.get('router.sidebarController').tickables.push(controller);\n controller.set('content', Travis.Sponsor.decks());\n }\n return this._super.apply(this, arguments);\n }\n }),\n LinksView: Em.View.extend({\n templateName: \"sponsors/links\",\n controller: Travis.SponsorsController.create({\n perPage: 6\n }),\n didInsertElement: function() {\n var controller;\n controller = this.get('controller');\n if (!controller.get('content')) {\n controller.set('content', Travis.Sponsor.links());\n Travis.app.get('router.sidebarController').tickables.push(controller);\n }\n return this._super.apply(this, arguments);\n }\n }),\n WorkersView: Em.View.extend({\n templateName: 'workers/list',\n controller: Travis.WorkersController.create(),\n didInsertElement: function() {\n this.set('controller.content', Travis.Worker.find());\n return this._super.apply(this, arguments);\n }\n }),\n QueuesView: Em.View.extend({\n templateName: 'queues/list',\n controller: Travis.QueuesController.create(),\n didInsertElement: function() {\n var queue, queues;\n queues = (function() {\n var _i, _len, _ref, _results;\n _ref = Travis.QUEUES;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n queue = _ref[_i];\n _results.push(Em.ArrayController.create({\n content: Travis.Job.queued(queue.name),\n id: \"queue_\" + queue.name,\n name: queue.display\n }));\n }\n return _results;\n })();\n this.set('controller.content', queues);\n return this._super.apply(this, arguments);\n }\n })\n }),\n WorkersView: Travis.View.extend({\n toggleWorkers: function(event) {\n var handle;\n handle = $(event.target).toggleClass('open');\n if (handle.hasClass('open')) {\n return $('#workers li').addClass('open');\n } else {\n return $('#workers li').removeClass('open');\n }\n }\n }),\n WorkersListView: Travis.View.extend({\n toggle: function(event) {\n return $(event.target).closest('li').toggleClass('open');\n }\n }),\n WorkersItemView: Travis.View.extend({\n display: (function() {\n var name, number, payload, repo, state;\n name = (this.get('worker.name') || '').replace('travis-', '');\n state = this.get('worker.state');\n payload = this.get('worker.payload');\n if (state === 'working' && payload !== void 0) {\n repo = payload.repo.slug;\n number = ' #' + payload.build.number;\n return (\"\" + name + \": \" + repo + \" \" + number).htmlSafe();\n } else {\n return \"\" + name + \": \" + state;\n }\n }).property('worker.state')\n }),\n QueueItemView: Travis.View.extend({\n tagName: 'li',\n urlJob: (function() {\n return Travis.Urls.job(this.get('job.repo.slug'), this.get('job.id'));\n }).property('job.repo.slug', 'job.id')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar");minispade.register('views/signin', "(function() {(function() {\n\n this.Travis.reopen({\n SigninView: Travis.View.extend({\n templateName: 'auth/signin',\n signingIn: (function() {\n return Travis.app.get('authState');\n }).property('Travis.app.authState')\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/signin");minispade.register('views/stats', "(function() {(function() {\n\n this.Travis.reopen({\n StatsView: Travis.View.extend({\n templateName: 'stats/show',\n didInsertElement: function() {},\n renderChart: function(config) {\n var chart;\n chart = new Highcharts.Chart(config);\n return this.fetch(config.source, function(data) {\n var stats;\n stats = (function() {\n var _i, _len, _ref, _results;\n _ref = data.stats;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n stats = _ref[_i];\n _results.push(config.map(stats));\n }\n return _results;\n })();\n return chart.series[0].setData(stats);\n });\n },\n fetch: function(url, callback) {\n return $.ajax({\n type: 'GET',\n url: url,\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n },\n success: callback\n });\n },\n CHARTS: {\n repos: {\n source: '/api/stats/repos',\n total: 0,\n map: function(data) {\n return [Date.parse(data.date), this.total += parseInt(data.count)];\n },\n chart: {\n renderTo: \"repos_stats\"\n },\n title: {\n text: \"Total Projects/Repositories\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" repos\";\n }\n },\n series: [\n {\n name: \"Repository Growth\",\n data: []\n }\n ]\n },\n builds: {\n source: '/api/stats/tests',\n map: function(data) {\n return [Date.parse(data.date), parseInt(data.count)];\n },\n chart: {\n renderTo: \"tests_stats\",\n type: \"column\"\n },\n title: {\n text: \"Build Count\"\n },\n subtitle: {\n text: \"last month\"\n },\n xAxis: {\n type: \"datetime\",\n dateTimeLabelFormats: {\n month: \"%e. %b\",\n year: \"%b\"\n }\n },\n yAxis: {\n title: {\n text: \"Count\"\n },\n min: 0\n },\n tooltip: {\n formatter: function() {\n return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" builds\";\n }\n },\n series: [\n {\n name: \"Total Builds\",\n data: []\n }\n ]\n }\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats");minispade.register('views/top', "(function() {(function() {\n\n this.Travis.reopen({\n TopView: Travis.View.extend({\n templateName: 'layouts/top',\n tabBinding: 'controller.tab',\n userBinding: 'controller.user',\n gravatarUrl: (function() {\n return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n }).property('user.gravatarId'),\n classHome: (function() {\n if (this.get('tab') === 'home') {\n return 'active';\n }\n }).property('tab'),\n classStats: (function() {\n if (this.get('tab') === 'stats') {\n return 'active';\n }\n }).property('tab'),\n classProfile: (function() {\n var classes;\n classes = ['profile'];\n if (this.get('tab') === 'profile') {\n classes.push('active');\n }\n classes.push(Travis.app.get('authState'));\n return classes.join(' ');\n }).property('tab', 'Travis.app.authState'),\n showProfile: function() {\n return $('#top .profile ul').show();\n },\n hideProfile: function() {\n return $('#top .profile ul').hide();\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top");minispade.register('data/sponsors', "(function() {(function() {\n\n this.Travis.SPONSORS = [\n {\n type: 'platinum',\n url: \"http://www.wooga.com\",\n image: \"wooga-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://bendyworks.com\",\n image: \"bendyworks-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://cloudcontrol.com\",\n image: \"cloudcontrol-205x130.png\"\n }, {\n type: 'platinum',\n url: \"http://xing.de\",\n image: \"xing-205x130.png\"\n }, {\n type: 'gold',\n url: \"http://heroku.com\",\n image: \"heroku-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://soundcloud.com\",\n image: \"soundcloud-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://nedap.com\",\n image: \"nedap-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://mongohq.com\",\n image: \"mongohq-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://zweitag.de\",\n image: \"zweitag-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://kanbanery.com\",\n image: \"kanbanery-205x60.png\"\n }, {\n type: 'gold',\n url: \"http://ticketevolution.com\",\n image: \"ticketevolution-205x60.jpg\"\n }, {\n type: 'gold',\n url: \"http://plan.io/travis\",\n image: \"planio-205x60.png\"\n }, {\n type: 'silver',\n link: \"Cobot : The one tool to run your coworking space \"\n }, {\n type: 'silver',\n link: \"JumpstartLab : We build developers \"\n }, {\n type: 'silver',\n link: \"Evil Martians : Agile Ruby on Rails development \"\n }, {\n type: 'silver',\n link: \"Zendesk : Love your helpdesk \"\n }, {\n type: 'silver',\n link: \"Stripe : Payments for developers \"\n }, {\n type: 'silver',\n link: \"Basho : We make Riak! \"\n }, {\n type: 'silver',\n link: \"Relevance : We deliver software solutions \"\n }, {\n type: 'silver',\n link: \"Mindmatters : Software für Menschen \"\n }, {\n type: 'silver',\n link: \"Amen : The best and worst of everything \"\n }, {\n type: 'silver',\n link: \"Site5 : Premium Web Hosting Solutions \"\n }, {\n type: 'silver',\n link: \"Crowd Interactive : Leading Rails consultancy in Mexico \"\n }, {\n type: 'silver',\n link: \"Atomic Object : Work with really smart people \"\n }, {\n type: 'silver',\n link: \"Codeminer : smart services for your startup \"\n }, {\n type: 'silver',\n link: \"Cloudant : grow into your data layer, not out of it \"\n }, {\n type: 'silver',\n link: \"Gidsy : Explore, organize & book unique things to do! \"\n }, {\n type: 'silver',\n link: \"5apps : Package & deploy HTML5 apps automatically \"\n }, {\n type: 'silver',\n link: \"Meltmedia : We are Interactive Superheroes \"\n }, {\n type: 'silver',\n link: \"Fingertips offers design and development services \"\n }, {\n type: 'silver',\n link: \"Engine Yard : Build epic apps, let us handle the rest \"\n }, {\n type: 'silver',\n link: \"Malwarebytes : Defeat Malware once and for all. \"\n }, {\n type: 'silver',\n link: \"Readmill : The best reading app on the iPad. \"\n }, {\n type: 'silver',\n link: \"Medidata : clinical tech improving quality of life \"\n }, {\n type: 'silver',\n link: \"ESM : Japan's best agile Ruby/Rails consultancy \"\n }, {\n type: 'silver',\n link: \"Twitter : instantly connects people everywhere \"\n }, {\n type: 'silver',\n link: \"AGiLE ANiMAL : we <3 Travis CI. \"\n }, {\n type: 'silver',\n link: \"Tupalo : Discover, review & share local businesses. \"\n }\n ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors");minispade.register('emoij', "(function() {(function() {\n\n this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij");minispade.register('ext/jquery', "(function() {(function() {\n\n $.fn.extend({\n outerHtml: function() {\n return $(this).wrap('
').parent().html();\n },\n outerElement: function() {\n return $($(this).outerHtml()).empty();\n },\n flash: function() {\n return Utils.flash(this);\n },\n unflash: function() {\n return Utils.unflash(this);\n },\n filterLog: function() {\n this.deansi();\n return this.foldLog();\n },\n deansi: function() {\n return this.html(Utils.deansi(this.html()));\n },\n foldLog: function() {\n return this.html(Utils.foldLog(this.html()));\n },\n unfoldLog: function() {\n return this.html(Utils.unfoldLog(this.html()));\n },\n updateTimes: function() {\n return Utils.updateTimes(this);\n },\n activateTab: function(tab) {\n return Utils.activateTab(this, tab);\n },\n timeInWords: function() {\n return $(this).each(function() {\n return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n });\n },\n updateGithubStats: function(repo) {\n return Utils.updateGithubStats(repo, $(this));\n }\n });\n\n $.extend({\n isEmpty: function(obj) {\n if ($.isArray(obj)) {\n return !obj.length;\n } else if ($.isObject(obj)) {\n return !$.keys(obj).length;\n } else {\n return !obj;\n }\n },\n isObject: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n },\n keys: function(obj) {\n var keys;\n keys = [];\n $.each(obj, function(key) {\n return keys.push(key);\n });\n return keys;\n },\n values: function(obj) {\n var values;\n values = [];\n $.each(obj, function(key, value) {\n return values.push(value);\n });\n return values;\n },\n underscore: function(string) {\n return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n if (chr) {\n return \"_\" + (chr.toUpperCase());\n } else {\n return '';\n }\n });\n },\n camelize: function(string, uppercase) {\n string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n return string.replace(/_(.)?/g, function(match, chr) {\n if (chr) {\n return chr.toUpperCase();\n } else {\n return '';\n }\n });\n },\n capitalize: function(string) {\n return string[0].toUpperCase() + string.substring(1);\n },\n compact: function(object) {\n return $.grep(object, function(value) {\n return !!value;\n });\n },\n all: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return false;\n }\n i++;\n }\n return true;\n },\n detect: function(array, callback) {\n var args, i;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n return array[i];\n }\n i++;\n }\n },\n select: function(array, callback) {\n var args, i, result;\n args = Array.prototype.slice.apply(arguments);\n callback = args.pop();\n array = args.pop() || this;\n result = [];\n i = 0;\n while (i < array.length) {\n if (callback(array[i])) {\n result.push(array[i]);\n }\n i++;\n }\n return result;\n },\n slice: function(object, key) {\n var keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) > -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n only: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) !== -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n except: function(object) {\n var key, keys, result;\n keys = Array.prototype.slice.apply(arguments);\n object = (typeof keys[0] === 'object' ? keys.shift() : this);\n result = {};\n for (key in object) {\n if (keys.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n },\n intersect: function(array, other) {\n return array.filter(function(element) {\n return other.indexOf(element) !== -1;\n });\n },\n map: function(elems, callback, arg) {\n var i, isArray, key, length, ret, value;\n value = void 0;\n key = void 0;\n ret = [];\n i = 0;\n length = elems.length;\n isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n if (isArray) {\n while (i < length) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n i++;\n }\n } else {\n for (key in elems) {\n value = callback(elems[key], key, arg);\n if (value != null) {\n ret[ret.length] = value;\n }\n }\n }\n return ret.concat.apply([], ret);\n },\n shuffle: function(array) {\n var current, tmp, top;\n array = array.slice();\n top = array.length;\n while (top && --top) {\n current = Math.floor(Math.random() * (top + 1));\n tmp = array[current];\n array[current] = array[top];\n array[top] = tmp;\n }\n return array;\n },\n truncate: function(string, length) {\n if (string.length > length) {\n return string.trim().substring(0, length) + '...';\n } else {\n return string;\n }\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery");minispade.register('travis/ajax', "(function() {(function() {\n\n jQuery.support.cors = true;\n\n this.Travis.Ajax = Ember.Mixin.create({\n DEFAULT_OPTIONS: {\n accepts: {\n json: 'application/vnd.travis-ci.2+json'\n }\n },\n post: function(url, data, callback) {\n return this.ajax(url, 'post', {\n data: data,\n success: callback\n });\n },\n ajax: function(url, method, options) {\n var accessToken, endpoint, _base, _ref;\n endpoint = Travis.config.api_endpoint || '';\n options = options || {};\n if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n options.headers || (options.headers = {});\n (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n }\n options.url = \"\" + endpoint + url;\n options.type = method;\n options.dataType = 'json';\n options.contentType = 'application/json; charset=utf-8';\n options.context = this;\n if (options.data && method !== 'GET' && method !== 'get') {\n options.data = JSON.stringify(options.data);\n }\n return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n }\n });\n\n this.Travis.ajax = Em.Object.create(this.Travis.Ajax, {\n get: function(url, callback) {\n return this.ajax(url, 'get', {\n success: callback\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax");minispade.register('travis/expandable_record_array', "(function() {(function() {\n\n Travis.ExpandableRecordArray = DS.RecordArray.extend({\n isLoaded: false,\n isLoading: false,\n load: function(array) {\n var observer, self;\n this.set('isLoading', true);\n self = this;\n observer = function() {\n var content;\n if (this.get('isLoaded')) {\n content = self.get('content');\n array.removeObserver('isLoaded', observer);\n array.forEach(function(record) {\n return self.pushObject(record);\n });\n self.set('isLoading', false);\n return self.set('isLoaded', true);\n }\n };\n return array.addObserver('isLoaded', observer);\n },\n pushObject: function(record) {\n var clientId, id, ids;\n ids = this.get('content');\n id = record.get('id');\n clientId = record.get('clientId');\n if (ids.contains(clientId)) {\n return;\n }\n return ids.pushObject(clientId);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array");minispade.register('travis/log', "(function() {(function() {\n\n this.Travis.Log = {\n FOLDS: {\n schema: /(\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n.*<\\/p>)/g,\n migrate: /(\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n bundle: /(\\$ bundle install.*<\\/p>\\n((Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<\\/p>\\n)*)/g,\n exec: /([\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n },\n filter: function(log) {\n log = this.escape(log);\n log = this.deansi(log);\n log = log.replace(/\\r/g, '');\n log = this.number(log);\n log = this.fold(log);\n log = log.replace(/\\n/g, '');\n return log;\n },\n stripPaths: function(log) {\n return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n },\n escape: function(log) {\n return Handlebars.Utils.escapeExpression(log);\n },\n escapeRuby: function(log) {\n return log.replace(/#<(\\w+.*?)>/, '#<$1>');\n },\n number: function(log) {\n var result;\n result = '';\n $.each(log.trim().split('\\n'), function(ix, line) {\n var number, path;\n number = ix + 1;\n path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n return result += '%@ %@
\\n'.fmt(path, path, number, number, line);\n });\n return result.trim();\n },\n deansi: function(log) {\n var ansi, text;\n log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\u001b\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n ansi = ansiparse(log);\n text = '';\n ansi.forEach(function(part) {\n var classes;\n classes = [];\n part.foreground && classes.push(part.foreground);\n part.background && classes.push('bg-' + part.background);\n part.bold && classes.push('bold');\n part.italic && classes.push('italic');\n return text += (classes.length ? '' + part.text + ' ' : part.text);\n });\n return text.replace(/\\033/g, '');\n },\n fold: function(log) {\n log = this.unfold(log);\n $.each(Travis.Log.FOLDS, function(name, pattern) {\n return log = log.replace(pattern, function() {\n return '' + arguments[1].trim() + '
';\n });\n });\n return log;\n },\n unfold: function(log) {\n return log.replace(/([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log");minispade.register('travis/model', "(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model");minispade.register('travis/ticker', "(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker");minispade.register('travis', "(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n if (location.hash.slice(0, 2) === '#!') {\n location.href = location.href.replace('#!/', '');\n }\n return this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return $(function() {\n return app.initialize();\n });\n });\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.ajax.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\nminispade.require('travis/ajax');\nminispade.require('app');\n\n}).call(this);\n\n})();\n//@ sourceURL=travis");minispade.register('templates', "(function() {\nEmber.TEMPLATES['application'] = Ember.Handlebars.compile(\"{{outlet}}\\n\");\n\nEmber.TEMPLATES['auth/signin'] = Ember.Handlebars.compile(\"{{#if view.signingIn}}\\n
Signing in \\n
\\n Trying to authenticate with GitHub.\\n
\\n{{else}}\\n
Sign in \\n
\\n Sign in with GitHub \\n
\\n{{/if}}\\n\\n\\n\");\n\nEmber.TEMPLATES['builds/list'] = Ember.Handlebars.compile(\"{{#if builds.isLoaded}}\\n
\\n \\n \\n {{t builds.name}} \\n {{t builds.commit}} \\n {{t builds.message}} \\n {{t builds.duration}} \\n {{t builds.finished_at}} \\n \\n \\n\\n \\n {{#each build in builds}}\\n {{#view Travis.BuildsItemView contextBinding=\\\"build\\\"}}\\n \\n \\n {{#if id}}\\n \\n {{number}}\\n \\n {{/if}}\\n \\n \\n \\n {{formatCommit commit}}\\n \\n \\n \\n {{{formatMessage commit.message short=\\\"true\\\"}}}\\n \\n \\n {{formatDuration duration}}\\n \\n \\n {{formatTime finishedAt}}\\n \\n {{/view}}\\n {{/each}}\\n \\n
\\n
\\n {{view view.ShowMoreButton}}\\n
\\n{{else}}\\n
Loading
\\n{{/if}}\\n\");\n\nEmber.TEMPLATES['builds/show'] = Ember.Handlebars.compile(\"{{#with view}}\\n {{#if loading}}\\n
Loading \\n {{else}}\\n
\\n \\n
{{t builds.name}} \\n
\\n \\n {{#if build.id}}\\n {{build.number}} \\n {{/if}}\\n \\n
{{t builds.finished_at}} \\n
{{formatTime build.finishedAt}} \\n
{{t builds.duration}} \\n
{{formatDuration build.duration}} \\n
\\n\\n \\n\\n {{t builds.message}} \\n {{{formatMessage build.commit.message}}} \\n\\n {{#unless isMatrix}}\\n {{t builds.config}} \\n {{formatConfig build.config}} \\n {{/unless}}\\n \\n\\n {{#if build.isMatrix}}\\n {{view Travis.JobsView jobsBinding=\\\"build.requiredJobs\\\" required=\\\"true\\\"}}\\n {{view Travis.JobsView jobsBinding=\\\"build.allowedFailureJobs\\\"}}\\n {{else}}\\n {{view Travis.LogView contextBinding=\\\"build.jobs.firstObject\\\"}}\\n {{/if}}\\n {{/if}}\\n{{/with}}\\n\");\n\nEmber.TEMPLATES['jobs/list'] = Ember.Handlebars.compile(\"{{#if view.jobs.length}}\\n {{#if view.required}}\\n
\\n \\n {{t jobs.build_matrix}}\\n \\n {{else}}\\n \\n \\n {{t jobs.allowed_failures}}\\n \\n \\n {{/if}}\\n \\n \\n {{#each key in view.build.configKeys}}\\n {{key}} \\n {{/each}}\\n \\n \\n \\n {{#each job in view.jobs}}\\n {{#view Travis.JobsItemView contextBinding=\\\"job\\\"}}\\n \\n \\n {{#if job.id}}\\n {{number}} \\n {{/if}}\\n \\n \\n {{formatDuration duration}}\\n \\n \\n {{formatTime finishedAt}}\\n \\n {{#each value in configValues}}\\n {{value}} \\n {{/each}}\\n {{/view}}\\n {{/each}}\\n \\n
\\n\\n {{#unless view.required}}\\n \\n {{/unless}}\\n{{/if}}\\n\");\n\nEmber.TEMPLATES['jobs/log'] = Ember.Handlebars.compile(\"{{view.logSubscriber}}\\n\\n{{#if log.isLoaded}}\\n \\n \\n Follow logs \\n {{{formatLog log.body}}} \\n\\n {{#if sponsor.name}}\\n \\n {{/if}}\\n\\n To top \\n{{else}}\\n \\n Loading \\n
\\n{{/if}}\\n\");\n\nEmber.TEMPLATES['jobs/show'] = Ember.Handlebars.compile(\"{{#with view}}\\n {{#if job.isLoaded}}\\n \\n
\\n \\n
Job \\n
\\n \\n {{#if job.id}}\\n {{job.number}} \\n {{/if}}\\n \\n
{{t jobs.finished_at}} \\n
{{formatTime job.finishedAt}} \\n
{{t jobs.duration}} \\n
{{formatDuration job.duration}} \\n
\\n\\n \\n\\n {{t jobs.message}} \\n {{formatMessage commit.message}} \\n {{t jobs.config}} \\n {{formatConfig job.config}} \\n \\n\\n {{view Travis.LogView contextBinding=\\\"job\\\"}}}\\n
\\n {{else}}\\n \\n Loading \\n
\\n {{/if}}\\n{{/with}}\\n\");\n\nEmber.TEMPLATES['layouts/home'] = Ember.Handlebars.compile(\"\\n {{outlet top}}\\n
\\n\\n\\n
\\n {{outlet left}}\\n
\\n\\n
\\n {{outlet main}}\\n
\\n\\n
\\n {{outlet right}}\\n
\\n
\\n\");\n\nEmber.TEMPLATES['layouts/profile'] = Ember.Handlebars.compile(\"\\n {{outlet top}}\\n
\\n\\n\\n
\\n {{outlet left}}\\n
\\n\\n
\\n {{outlet main}}\\n
\\n\\n
\\n
\\n\");\n\nEmber.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.compile(\"\\n {{t layouts.application.fork_me}}\\n \\n\\n\\n\\n{{view view.DecksView}}\\n{{view view.WorkersView}}\\n{{view view.QueuesView}}\\n{{view view.LinksView}}\\n\\n\\n
{{t layouts.about.join}} \\n
\\n
\\n\");\n\nEmber.TEMPLATES['layouts/simple'] = Ember.Handlebars.compile(\"\\n {{outlet top}}\\n
\\n\\n\\n
\\n {{outlet main}}\\n
\\n
\\n\\n\");\n\nEmber.TEMPLATES['layouts/top'] = Ember.Handlebars.compile(\"\\n Travis \\n \\n\\n\\n\");\n\nEmber.TEMPLATES['profile/accounts'] = Ember.Handlebars.compile(\"\\n
\\n\\n\\n\\n\\n {{#collection Travis.AccountsListView contentBinding=\\\"controller\\\"}}\\n
{{view.name}} \\n
\\n Repositories: \\n {{view.content.reposCount}} \\n
\\n {{/collection}}\\n
\\n\");\n\nEmber.TEMPLATES['profile/show'] = Ember.Handlebars.compile(\"{{view.name}} \\n\\n{{view Travis.ProfileTabsView}}\\n\\n\\n {{outlet pane}}\\n
\\n\\n\");\n\nEmber.TEMPLATES['profile/tabs'] = Ember.Handlebars.compile(\"\\n \\n \\n \\n {{#if view.displayUser}}\\n \\n \\n \\n {{/if}}\\n \\n\");\n\nEmber.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.compile(\"\\n {{{t profiles.show.message.your_repos}}}\\n
\\n\\n{{#if hooks.isLoaded}}\\n {{#if user.isSyncing}}\\n \\n Please wait while we sync from GitHub \\n
\\n {{else}}\\n \\n Last synchronized from GitHub: {{formatTime user.syncedAt}}\\n \\n Sync now\\n \\n
\\n\\n \\n {{#each hook in hooks}}\\n \\n {{hook.slug}} \\n {{hook.description}}
\\n\\n \\n \\n {{else}}\\n \\n You do not seem to have any repositories that we could sync.\\n \\n {{/each}}\\n \\n {{/if}}\\n{{else}}\\n \\n Loading \\n
\\n{{/if}}\\n\\n\\n\");\n\nEmber.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.compile(\" \\n\\n\\n \\n {{t profiles.show.github}}:\\n \\n \\n {{user.login}} \\n \\n \\n {{t profiles.show.email}}:\\n \\n \\n {{user.email}}\\n \\n \\n {{t profiles.show.token}}:\\n \\n \\n {{user.token}}\\n \\n \\n\\n\\n\\n\\n\");\n\nEmber.TEMPLATES['queues/list'] = Ember.Handlebars.compile(\"\\n{{#each queue in controller}}\\n \\n {{t queue}}: {{queue.name}} \\n \\n \\n{{/each}}\\n \\n\");\n\nEmber.TEMPLATES['repos/list'] = Ember.Handlebars.compile(\"\\n {{view Ember.TextField valueBinding=\\\"controller.search\\\"}}\\n
\\n\\n{{view Travis.ReposListTabsView}}\\n\\n \\n\\n\\n {{#collection Travis.ReposListView contentBinding=\\\"controller\\\"}}\\n {{#with view.repo}}\\n
\\n
\\n {{#if slug}}\\n
{{slug}} \\n {{/if}}\\n
\\n {{#if lastBuildId}}\\n
{{lastBuildNumber}} \\n {{/if}}\\n\\n
\\n {{t repositories.duration}}: \\n {{formatDuration lastBuildDuration}} ,\\n {{t repositories.finished_at}}: \\n {{formatTime lastBuildFinishedAt}} \\n
\\n\\n
\\n\\n {{#if description}}\\n
\\n {{/if}}\\n {{/with}}\\n {{/collection}}\\n
\\n\");\n\nEmber.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.compile(\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\");\n\nEmber.TEMPLATES['repos/show'] = Ember.Handlebars.compile(\"\\n {{#if view.repo.isLoaded}}\\n {{#with view.repo}}\\n
\\n\\n
{{description}}
\\n\\n
\\n\\n {{view Travis.RepoShowTabsView}}\\n {{view Travis.RepoShowToolsView}}\\n {{/with}}\\n\\n {{else}}\\n
Loading \\n {{/if}}\\n\\n
\\n {{outlet pane}}\\n
\\n
\\n\\n\");\n\nEmber.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.compile(\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\");\n\nEmber.TEMPLATES['repos/show/tools'] = Ember.Handlebars.compile(\"\\n\");\n\nEmber.TEMPLATES['sponsors/decks'] = Ember.Handlebars.compile(\"{{t layouts.application.sponsers}} \\n\\n\\n\\n\\n \\n {{{t layouts.application.sponsors_link}}}\\n \\n
\\n\");\n\nEmber.TEMPLATES['sponsors/links'] = Ember.Handlebars.compile(\"\\n\\n\");\n\nEmber.TEMPLATES['stats/show'] = Ember.Handlebars.compile(\"
\\n
\\n\");\n\nEmber.TEMPLATES['workers/list'] = Ember.Handlebars.compile(\"{{#view Travis.WorkersView}}\\n \\n {{t workers}}\\n \\n \\n \\n {{#each group in controller.groups}}\\n {{#view Travis.WorkersListView}}\\n \\n \\n {{group.firstObject.host}}\\n \\n \\n {{#each worker in group}}\\n {{#view Travis.WorkersItemView workerBinding=\\\"worker\\\"}}\\n \\n
\\n {{#if worker.isWorking}}\\n {{#if worker.job_id}}\\n \\n {{view.display}}\\n \\n {{/if}}\\n {{else}}\\n {{view.display}}\\n {{/if}}\\n \\n {{/view}}\\n {{/each}}\\n \\n \\n {{/view}}\\n {{else}}\\n No workers\\n {{/each}}\\n \\n{{/view}}\\n\");\n\n})();\n//@ sourceURL=templates");minispade.register('config/locales', "(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {\"ca\":{\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"pt-BR\":\"português brasileiro\",\"ru\":\"Русский\"}},\"en\":{\"errors\":{\"messages\":{\"not_found\":\"not found\",\"already_confirmed\":\"was already confirmed\",\"not_locked\":\"was not locked\"}},\"devise\":{\"failure\":{\"unauthenticated\":\"You need to sign in or sign up before continuing.\",\"unconfirmed\":\"You have to confirm your account before continuing.\",\"locked\":\"Your account is locked.\",\"invalid\":\"Invalid email or password.\",\"invalid_token\":\"Invalid authentication token.\",\"timeout\":\"Your session expired, please sign in again to continue.\",\"inactive\":\"Your account was not activated yet.\"},\"sessions\":{\"signed_in\":\"Signed in successfully.\",\"signed_out\":\"Signed out successfully.\"},\"passwords\":{\"send_instructions\":\"You will receive an email with instructions about how to reset your password in a few minutes.\",\"updated\":\"Your password was changed successfully. You are now signed in.\"},\"confirmations\":{\"send_instructions\":\"You will receive an email with instructions about how to confirm your account in a few minutes.\",\"confirmed\":\"Your account was successfully confirmed. You are now signed in.\"},\"registrations\":{\"signed_up\":\"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.\",\"updated\":\"You updated your account successfully.\",\"destroyed\":\"Bye! Your account was successfully cancelled. We hope to see you again soon.\"},\"unlocks\":{\"send_instructions\":\"You will receive an email with instructions about how to unlock your account in a few minutes.\",\"unlocked\":\"Your account was successfully unlocked. You are now signed in.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Confirmation instructions\"},\"reset_password_instructions\":{\"subject\":\"Reset password instructions\"},\"unlock_instructions\":{\"subject\":\"Unlock Instructions\"}}},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hour\",\"other\":\"%{count} hours\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} second\",\"other\":\"%{count} seconds\"}}},\"workers\":\"Workers\",\"queue\":\"Queue\",\"no_job\":\"There are no jobs\",\"repositories\":{\"branch\":\"Branch\",\"image_url\":\"Image URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"tabs\":{\"current\":\"Current\",\"build_history\":\"Build History\",\"branches\":\"Branch Summary\",\"pull_requests\":\"Pull Requests\",\"build\":\"Build\",\"job\":\"Job\"}},\"build\":{\"job\":\"Job\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"show_more\":\"Show more\"},\"layouts\":{\"top\":{\"home\":\"Home\",\"blog\":\"Blog\",\"docs\":\"Docs\",\"stats\":\"Stats\",\"github_login\":\"Sign in with Github\",\"profile\":\"Profile\",\"sign_out\":\"Sign Out\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Recent\",\"search\":\"Search\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"See all of our amazing sponsors →\",\"my_repositories\":\"My Repositories\"},\"about\":{\"alpha\":\"This stuff is alpha.\",\"messages\":{\"alpha\":\"Please do not consider this a stable service. We're still far from that! More info here. \"},\"join\":\"Join us and help!\",\"mailing_list\":\"Mailing List\",\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Author\",\"build\":\"Build\",\"build_matrix\":\"Build Matrix\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Compare\",\"config\":\"Config\",\"duration\":\"Duration\",\"finished_at\":\"Finished at\",\"job\":\"Job\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.\",\"config\":\"how to configure custom build options\"},\"messages\":{\"notice\":\"To get started, please read our Getting Started guide .\\n It will only take a couple of minutes. \"},\"token\":\"Token\",\"your_repos\":\"Your Repositories\",\"update\":\"Update\",\"update_locale\":\"Update\",\"your_locale\":\"Your Locale\"}},\"statistics\":{\"index\":{\"count\":\"Count\",\"repo_growth\":\"Repository Growth\",\"total_projects\":\"Total Projects/Repositories\",\"build_count\":\"Build Count\",\"last_month\":\"last month\",\"total_builds\":\"Total Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"es\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"workers\":\"Procesos\",\"queue\":\"Cola\",\"no_job\":\"No hay trabajos\",\"repositories\":{\"branch\":\"Rama\",\"image_url\":\"Imagen URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"tabs\":{\"current\":\"Actual\",\"build_history\":\"Histórico\",\"branches\":\"Ramas\",\"build\":\"Builds\",\"job\":\"Trabajo\"}},\"build\":{\"job\":\"Trabajo\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"sponsored_by\":\"Patrocinado por\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"layouts\":{\"top\":{\"home\":\"Inicio\",\"blog\":\"Blog\",\"docs\":\"Documentación\",\"stats\":\"Estadísticas\",\"github_login\":\"Iniciar sesión con Github\",\"profile\":\"Perfil\",\"sign_out\":\"Desconectar\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Hazme un Fork en Github\",\"recent\":\"Reciente\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Ver todos nuestros patrocinadores →\",\"my_repositories\":\"Mis Repositorios\"},\"about\":{\"alpha\":\"Esto es alpha.\",\"messages\":{\"alpha\":\"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí. \"},\"join\":\"Únetenos y ayudanos!\",\"mailing_list\":\"Lista de Correos\",\"repository\":\"Repositorio\",\"twitter\":\"Twitter\"}},\"profiles\":{\"show\":{\"email\":\"Correo electrónico\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub. \\n Para probar varias versiones de ruby, mira\",\"config\":\"como configurar tus propias opciones para el Build\"},\"messages\":{\"notice\":\"Para comenzar, por favor lee nuestra Guía de Inicio .\\n Solo tomará unos pocos minutos. \"},\"token\":\"Token\",\"your_repos\":\"Tus repositorios\",\"update\":\"Actualizar\",\"update_locale\":\"Actualizar\",\"your_locale\":\"Tu Idioma\"}},\"statistics\":{\"index\":{\"count\":\"Número\",\"repo_growth\":\"Crecimiento de Repositorios\",\"total_projects\":\"Total de Proyectos/Repositorios\",\"build_count\":\"Número de Builds\",\"last_month\":\"mes anterior\",\"total_builds\":\"Total de Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"fr\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} heure\",\"other\":\"%{count} heures\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} secondes\"}}},\"workers\":\"Processus\",\"queue\":\"File\",\"no_job\":\"Pas de tâches\",\"repositories\":{\"branch\":\"Branche\",\"image_url\":\"Image\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"tabs\":{\"current\":\"Actuel\",\"build_history\":\"Historique des tâches\",\"branches\":\"Résumé des branches\",\"build\":\"Construction\",\"job\":\"Tâche\"}},\"build\":{\"job\":\"Tâche\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"builds\":{\"name\":\"Version\",\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"layouts\":{\"top\":{\"home\":\"Accueil\",\"blog\":\"Blog\",\"docs\":\"Documentation\",\"stats\":\"Statistiques\",\"github_login\":\"Connection Github\",\"profile\":\"Profil\",\"sign_out\":\"Déconnection\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Faites un Fork sur Github\",\"recent\":\"Récent\",\"search\":\"Chercher\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Voir tous nos extraordinaire sponsors →\",\"my_repositories\":\"Mes dépôts\"},\"about\":{\"alpha\":\"Ceci est en alpha.\",\"messages\":{\"alpha\":\"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici. \"},\"join\":\"Joignez-vous à nous et aidez-nous!\",\"mailing_list\":\"Liste de distribution\",\"repository\":\"Dépôt\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Version\",\"build_matrix\":\"Matrice des versions\",\"commit\":\"Commit\",\"committer\":\"Committeur\",\"compare\":\"Comparer\",\"config\":\"Config\",\"duration\":\"Durée\",\"finished_at\":\"Terminé à\",\"job\":\"Tâche\",\"log\":\"Journal\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"message\":{\"your_repos\":\"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub. \\nPour tester sur plus de versions de ruby, voir\",\"config\":\"comment configurer des options de version personnalisées\"},\"messages\":{\"notice\":\"Pour commencer, veuillez lire notre guide de démarrage .\\n Cela ne vous prendra que quelques minutes. \"},\"token\":\"Jeton\",\"your_repos\":\"Vos dépôts\",\"email\":\"Courriel\",\"update\":\"Modifier\",\"update_locale\":\"Modifier\",\"your_locale\":\"Votre langue\"}},\"statistics\":{\"index\":{\"count\":\"Décompte\",\"repo_growth\":\"Croissance de dépôt\",\"total_projects\":\"Total des projets/dépôts\",\"build_count\":\"Décompte des versions\",\"last_month\":\"mois dernier\",\"total_builds\":\"Total des versions\"}},\"admin\":{\"actions\":{\"create\":\"créer\",\"created\":\"créé\",\"delete\":\"supprimer\",\"deleted\":\"supprimé\",\"update\":\"mise à jour\",\"updated\":\"mis à jour\"},\"credentials\":{\"log_out\":\"Déconnection\"},\"delete\":{\"confirmation\":\"Oui, je suis sure\",\"flash_confirmation\":\"%{name} a été détruit avec succès\"},\"flash\":{\"error\":\"%{name} n'a pas pu être %{action}\",\"noaction\":\"Aucune action n'a été entreprise\",\"successful\":\"%{name} a réussi à %{action}\"},\"history\":{\"name\":\"Historique\",\"no_activity\":\"Aucune activité\",\"page_name\":\"Historique pour %{name}\"},\"list\":{\"add_new\":\"Ajouter un nouveau\",\"delete_action\":\"Supprimer\",\"delete_selected\":\"Supprimer la sélection\",\"edit_action\":\"Modifier\",\"search\":\"Rechercher\",\"select\":\"Sélectionner le %{name} à modifier\",\"select_action\":\"Sélectionner\",\"show_all\":\"Montrer tout\"},\"new\":{\"basic_info\":\"Information de base\",\"cancel\":\"Annuler\",\"chosen\":\"%{name} choisi\",\"chose_all\":\"Choisir tout\",\"clear_all\":\"Déselectionner tout\",\"many_chars\":\"caractères ou moins\",\"one_char\":\"caractère.\",\"optional\":\"Optionnel\",\"required\":\"Requis\",\"save\":\"Sauvegarder\",\"save_and_add_another\":\"Sauvegarder et en ajouter un autre\",\"save_and_edit\":\"Sauvegarder et modifier\",\"select_choice\":\"Faites vos choix et cliquez\"},\"dashboard\":{\"add_new\":\"Ajouter un nouveau\",\"last_used\":\"Dernière utilisation\",\"model_name\":\"Nom du modèle\",\"modify\":\"Modification\",\"name\":\"Tableau de bord\",\"pagename\":\"Administration du site\",\"records\":\"Enregistrements\",\"show\":\"Voir\",\"ago\":\"plus tôt\"}},\"home\":{\"name\":\"accueil\"},\"repository\":{\"duration\":\"Durée\"},\"devise\":{\"confirmations\":{\"confirmed\":\"Votre compte a été crée avec succès. Vous être maintenant connecté.\",\"send_instructions\":\"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes.\"},\"failure\":{\"inactive\":\"Votre compte n'a pas encore été activé.\",\"invalid\":\"Adresse courriel ou mot de passe invalide.\",\"invalid_token\":\"Jeton d'authentification invalide.\",\"locked\":\"Votre compte est bloqué.\",\"timeout\":\"Votre session est expirée, veuillez vous reconnecter pour continuer.\",\"unauthenticated\":\"Vous devez vous connecter ou vous enregistrer afin de continuer\",\"unconfirmed\":\"Vous devez confirmer votre compte avant de continuer.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instructions de confirmations\"},\"reset_password_instructions\":{\"subject\":\"Instruction de remise à zéro du mot de passe\"},\"unlock_instructions\":{\"subject\":\"Instruction de débloquage\"}},\"passwords\":{\"send_instructions\":\"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.\",\"updated\":\"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté.\"},\"registrations\":{\"destroyed\":\"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.\",\"signed_up\":\"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.\",\"updated\":\"Votre compte a été mis a jour avec succès\"},\"sessions\":{\"signed_in\":\"Connecté avec succès\",\"signed_out\":\"Déconnecté avec succès\"},\"unlocks\":{\"send_instructions\":\"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.\",\"unlocked\":\"Votre compte a été débloqué avec succès.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"étais déja confirmé\",\"not_found\":\"n'a pas été trouvé\",\"not_locked\":\"n'étais pas bloqué\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"ja\":{\"workers\":\"ワーカー\",\"queue\":\"キュー\",\"no_job\":\"ジョブはありません\",\"repositories\":{\"branch\":\"ブランチ\",\"image_url\":\"画像URL\",\"markdown\":\".md\",\"textile\":\".textile\",\"rdoc\":\".rdoc\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"tabs\":{\"current\":\"最新\",\"build_history\":\"ビルド履歴\",\"branches\":\"ブランチまとめ\",\"build\":\"ビルド\",\"job\":\"ジョブ\"}},\"build\":{\"job\":\"ジョブ\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"ビルドマトリクス\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"builds\":{\"name\":\"ビルド\",\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"失敗許容範囲外\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"layouts\":{\"about\":{\"alpha\":\"まだアルファですよ!\",\"join\":\"参加してみよう!\",\"mailing_list\":\"メールリスト\",\"messages\":{\"alpha\":\"Travis-ciは安定したサービスまで後一歩!詳しくはこちら \"},\"repository\":\"リポジトリ\",\"twitter\":\"ツイッター\"},\"application\":{\"fork_me\":\"Githubでフォークしよう\",\"my_repositories\":\"マイリポジトリ\",\"recent\":\"最近\",\"search\":\"検索\",\"sponsers\":\"スポンサー\",\"sponsors_link\":\"スポンサーをもっと見る →\"},\"top\":{\"blog\":\"ブログ\",\"docs\":\"Travisとは?\",\"github_login\":\"Githubでログイン\",\"home\":\"ホーム\",\"profile\":\"プロフィール\",\"sign_out\":\"ログアウト\",\"stats\":\"統計\",\"admin\":\"管理\"},\"mobile\":{\"author\":\"制作者\",\"build\":\"ビルド\",\"build_matrix\":\"ビルドマトリクス\",\"commit\":\"コミット\",\"committer\":\"コミット者\",\"compare\":\"比較\",\"config\":\"設定\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"job\":\"ジョブ\",\"log\":\"ログ\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"email\":\"メール\",\"message\":{\"config\":\"詳細設定\",\"your_repos\":\"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:\"},\"messages\":{\"notice\":\"まずはTravisのはじめ方 を参照してください。\"},\"token\":\"トークン\",\"your_repos\":\"リポジトリ\",\"update\":\"更新\",\"update_locale\":\"更新\",\"your_locale\":\"言語設定\"}},\"statistics\":{\"index\":{\"build_count\":\"ビルド数\",\"count\":\"数\",\"last_month\":\"先月\",\"repo_growth\":\"リポジトリ\",\"total_builds\":\"合計ビルド数\",\"total_projects\":\"合計リポジトリ\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nb\":{\"admin\":{\"actions\":{\"create\":\"opprett\",\"created\":\"opprettet\",\"delete\":\"slett\",\"deleted\":\"slettet\",\"update\":\"oppdater\",\"updated\":\"oppdatert\"},\"credentials\":{\"log_out\":\"Logg ut\"},\"dashboard\":{\"add_new\":\"Legg til ny\",\"ago\":\"siden\",\"last_used\":\"Sist brukt\",\"model_name\":\"Modell\",\"modify\":\"Rediger\",\"name\":\"Dashbord\",\"pagename\":\"Nettstedsadministrasjon\",\"records\":\"Oppføringer\",\"show\":\"Vis\"},\"delete\":{\"confirmation\":\"Ja, jeg er sikker\",\"flash_confirmation\":\"%{name} ble slettet\"},\"flash\":{\"error\":\"%{name} kunne ikke bli %{action}\",\"noaction\":\"Ingen handlinger ble utført\",\"successful\":\"%{name} ble %{action}\"},\"history\":{\"name\":\"Logg\",\"no_activity\":\"Ingen aktivitet\",\"page_name\":\"Logg for %{name}\"},\"list\":{\"add_new\":\"Legg til ny\",\"delete_action\":\"Slett\",\"delete_selected\":\"Slett valgte\",\"edit_action\":\"Rediger\",\"search\":\"Søk\",\"select\":\"Velg %{name} for å redigere\",\"select_action\":\"Velg\",\"show_all\":\"Vis alle \"},\"new\":{\"basic_info\":\"Basisinformasjon\",\"cancel\":\"Avbryt\",\"chosen\":\"Valgt %{name}\",\"chose_all\":\"Velg alle\",\"clear_all\":\"Fjern alle\",\"many_chars\":\"eller færre tegn.\",\"one_char\":\"tegn.\",\"optional\":\"Valgfri\",\"required\":\"Påkrevd\",\"save\":\"Lagre\",\"save_and_add_another\":\"Lagre og legg til ny\",\"save_and_edit\":\"Lagre og rediger\",\"select_choice\":\"Kryss av for dine valg og klikk\"}},\"build\":{\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\"},\"builds\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testen ble kjørt på en maskin sponset av\"},\"name\":\"Jobb\",\"started_at\":\"Startet\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} time\",\"other\":\"%{count} timer\"},\"minutes_exact\":{\"one\":\"%{count} minutt\",\"other\":\"%{count} minutter\"},\"seconds_exact\":{\"one\":\"%{count} sekund\",\"other\":\"%{count} sekunder\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Din konto er aktivert og du er nå innlogget.\",\"send_instructions\":\"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din.\"},\"failure\":{\"inactive\":\"Kontoen din har ikke blitt aktivert enda.\",\"invalid\":\"Ugyldig e-post eller passord.\",\"invalid_token\":\"Ugyldig autentiseringskode.\",\"locked\":\"Kontoen din er låst.\",\"timeout\":\"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.\",\"unauthenticated\":\"Du må logge inn eller registrere deg for å fortsette.\",\"unconfirmed\":\"Du må bekrefte kontoen din før du kan fortsette.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bekreftelsesinformasjon\"},\"reset_password_instructions\":{\"subject\":\"Instruksjoner for å få nytt passord\"},\"unlock_instructions\":{\"subject\":\"Opplåsningsinstruksjoner\"}},\"passwords\":{\"send_instructions\":\"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.\",\"updated\":\"Passordet ditt ble endret, og du er logget inn.\"},\"registrations\":{\"destroyed\":\"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.\",\"signed_up\":\"Du er nå registrert.\",\"updated\":\"Kontoen din ble oppdatert.\"},\"sessions\":{\"signed_in\":\"Du er nå logget inn.\",\"signed_out\":\"Du er nå logget ut.\"},\"unlocks\":{\"send_instructions\":\"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.\",\"unlocked\":\"Kontoen din ble låst opp, og du er nå logget inn igjen.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"har allerede blitt bekreftet\",\"not_found\":\"ikke funnnet\",\"not_locked\":\"var ikke låst\"}},\"home\":{\"name\":\"hjem\"},\"jobs\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testserien ble kjørt på en maskin sponset av\"},\"started_at\":\"Startet\"},\"layouts\":{\"about\":{\"alpha\":\"Dette er alfa-greier.\",\"join\":\"Bli med og hjelp oss!\",\"mailing_list\":\"E-postliste\",\"messages\":{\"alpha\":\"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her .\"},\"repository\":\"Kodelager\",\"twitter\":\"Twitter.\"},\"application\":{\"fork_me\":\"Se koden på Github\",\"my_repositories\":\"Mine kodelagre\",\"recent\":\"Nylig\",\"search\":\"Søk\",\"sponsers\":\"Sponsorer\",\"sponsors_link\":\"Se alle de flotte sponsorene våre →\"},\"mobile\":{\"author\":\"Forfatter\",\"build\":\"Jobb\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\",\"log\":\"Logg\"},\"top\":{\"admin\":\"Administrator\",\"blog\":\"Blogg\",\"docs\":\"Dokumentasjon\",\"github_login\":\"Logg inn med Github\",\"home\":\"Hjem\",\"profile\":\"Profil\",\"sign_out\":\"Logg ut\",\"stats\":\"Statistikk\"}},\"no_job\":\"Ingen jobber finnnes\",\"profiles\":{\"show\":{\"email\":\"E-post\",\"github\":\"Github\",\"message\":{\"config\":\"hvordan sette opp egne jobbinnstillinger\",\"your_repos\":\"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github. \\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for\"},\"messages\":{\"notice\":\"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter. \"},\"token\":\"Kode\",\"update\":\"Oppdater\",\"update_locale\":\"Oppdater\",\"your_locale\":\"Ditt språk\",\"your_repos\":\"Dine kodelagre\"}},\"queue\":\"Kø\",\"repositories\":{\"branch\":\"Gren\",\"commit\":\"Innsender\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"image_url\":\"Bilde-URL\",\"markdown\":\"Markdown\",\"message\":\"Beskrivelse\",\"rdoc\":\"RDOC\",\"started_at\":\"Startet\",\"tabs\":{\"branches\":\"Grensammendrag\",\"build\":\"Jobb\",\"build_history\":\"Jobblogg\",\"current\":\"Siste\",\"job\":\"Jobb\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Varighet\"},\"statistics\":{\"index\":{\"build_count\":\"Antall jobber\",\"count\":\"Antall\",\"last_month\":\"siste måned\",\"repo_growth\":\"Vekst i kodelager\",\"total_builds\":\"Totale jobber\",\"total_projects\":\"Antall prosjekter/kodelagre\"}},\"workers\":\"Arbeidere\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nl\":{\"admin\":{\"actions\":{\"create\":\"aanmaken\",\"created\":\"aangemaakt\",\"delete\":\"verwijderen\",\"deleted\":\"verwijderd\",\"update\":\"bijwerken\",\"updated\":\"bijgewerkt\"},\"credentials\":{\"log_out\":\"Afmelden\"},\"dashboard\":{\"add_new\":\"Nieuwe toevoegen\",\"ago\":\"geleden\",\"last_used\":\"Laatst gebruikt\",\"model_name\":\"Model naam\",\"modify\":\"Wijzigen\",\"pagename\":\"Site administratie\",\"show\":\"Laten zien\",\"records\":\"Gegevens\"},\"delete\":{\"confirmation\":\"Ja, ik ben zeker\",\"flash_confirmation\":\"%{name} is vernietigd\"},\"flash\":{\"error\":\"%{name} kon niet worden %{action}\",\"noaction\":\"Er zijn geen acties genomen\",\"successful\":\"%{name} is %{action}\"},\"history\":{\"name\":\"Geschiedenis\",\"no_activity\":\"Geen activiteit\",\"page_name\":\"Geschiedenis van %{name}\"},\"list\":{\"add_new\":\"Nieuwe toevoegen\",\"delete_action\":\"Verwijderen\",\"delete_selected\":\"Verwijder geselecteerden\",\"edit_action\":\"Bewerken\",\"search\":\"Zoeken\",\"select\":\"Selecteer %{name} om te bewerken\",\"select_action\":\"Selecteer\",\"show_all\":\"Laat allen zien\"},\"new\":{\"basic_info\":\"Basisinfo\",\"cancel\":\"Annuleren\",\"chosen\":\"%{name} gekozen\",\"chose_all\":\"Kies allen\",\"clear_all\":\"Deselecteer allen\",\"many_chars\":\"tekens of minder.\",\"one_char\":\"teken.\",\"optional\":\"Optioneel\",\"required\":\"Vereist\",\"save\":\"Opslaan\",\"save_and_add_another\":\"Opslaan en een nieuwe toevoegen\",\"save_and_edit\":\"Opslaan en bewerken\",\"select_choice\":\"Selecteer uw keuzes en klik\"}},\"build\":{\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"job\":\"Taak\"},\"builds\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw Matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze tests zijn gedraaid op een machine gesponsord door\"},\"name\":\"Bouw\",\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} uur\",\"other\":\"%{count} uren\"},\"minutes_exact\":{\"one\":\"%{count} minuut\",\"other\":\"%{count} minuten\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} seconden\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Uw account is bevestigd. U wordt nu ingelogd.\",\"send_instructions\":\"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen.\"},\"failure\":{\"inactive\":\"Uw account is nog niet geactiveerd.\",\"invalid\":\"Ongeldig email adres of wachtwoord.\",\"invalid_token\":\"Ongeldig authenticatie token.\",\"locked\":\"Uw account is vergrendeld.\",\"timeout\":\"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.\",\"unauthenticated\":\"U moet inloggen of u registeren voordat u verder gaat.\",\"unconfirmed\":\"U moet uw account bevestigen voordat u verder gaat.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bevestigings-instructies\"},\"reset_password_instructions\":{\"subject\":\"Wachtwoord herstel instructies\"},\"unlock_instructions\":{\"subject\":\"Ontgrendel-instructies\"}},\"passwords\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.\",\"updated\":\"Uw wachtwoord is veranderd. U wordt nu ingelogd.\"},\"registrations\":{\"destroyed\":\"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.\",\"signed_up\":\"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.\",\"updated\":\"Het bijwerken van uw account is gelukt.\"},\"sessions\":{\"signed_in\":\"Inloggen gelukt.\",\"signed_out\":\"Uitloggen gelukt.\"},\"unlocks\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.\",\"unlocked\":\"Uw account is ontgrendeld. U wordt nu ingelogd.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"was al bevestigd\",\"not_found\":\"niet gevonden\",\"not_locked\":\"was niet vergrendeld\"}},\"jobs\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze testen zijn uitgevoerd op een machine gesponsord door\"},\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"layouts\":{\"about\":{\"alpha\":\"Dit is in alfa-stadium.\",\"join\":\"Doe met ons mee en help!\",\"mailing_list\":\"Mailing lijst\",\"messages\":{\"alpha\":\"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier. \"},\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Maak een fork op Github\",\"my_repositories\":\"Mijn repositories\",\"recent\":\"Recent\",\"search\":\"Zoeken\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Bekijk al onze geweldige sponsors →\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Bouw\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid op\",\"job\":\"Taak\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"log\":\"Logboek\"},\"top\":{\"admin\":\"Administratie\",\"blog\":\"Blog\",\"docs\":\"Documentatie\",\"github_login\":\"Inloggen met Github\",\"home\":\"Home\",\"profile\":\"Profiel\",\"sign_out\":\"Uitloggen\",\"stats\":\"Statistieken\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Er zijn geen taken\",\"profiles\":{\"show\":{\"email\":\"Email adres\",\"github\":\"Github\",\"message\":{\"config\":\"hoe eigen bouw-opties in te stellen\",\"your_repos\":\"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github \\nOm te testen tegen meerdere rubies, zie\"},\"messages\":{\"notice\":\"Om te beginnen kunt u onze startersgids lezen.\\\\n Het zal maar enkele minuten van uw tijd vergen. \"},\"update\":\"Bijwerken\",\"update_locale\":\"Bijwerken\",\"your_locale\":\"Uw taal\",\"your_repos\":\"Uw repositories\",\"token\":\"Token\"}},\"queue\":\"Wachtrij\",\"repositories\":{\"branch\":\"Tak\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"image_url\":\"Afbeeldings URL\",\"message\":\"Bericht\",\"started_at\":\"Gestart\",\"tabs\":{\"branches\":\"Tak samenvatting\",\"build\":\"Bouw\",\"build_history\":\"Bouw geschiedenis\",\"current\":\"Huidig\",\"job\":\"Taak\"},\"commit\":\"Commit\",\"markdown\":\"Markdown\",\"rdoc\":\"RDOC\",\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duur\"},\"statistics\":{\"index\":{\"build_count\":\"Bouw aantal\",\"count\":\"Aantal\",\"last_month\":\"voorbije maand\",\"repo_growth\":\"Repository groei\",\"total_builds\":\"Bouw totaal\",\"total_projects\":\"Projecten/Repository totaal\"}},\"workers\":\"Machines\",\"home\":{\"name\":\"Hoofdpagina\"}},\"pl\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} godzina\",\"other\":\"%{count} godziny\"},\"minutes_exact\":{\"one\":\"%{count} minuta\",\"other\":\"%{count} minuty\"},\"seconds_exact\":{\"one\":\"%{count} sekunda\",\"other\":\"%{count} sekundy\"}}},\"workers\":\"Workers\",\"queue\":\"Kolejka\",\"no_job\":\"Brak zadań\",\"repositories\":{\"branch\":\"Gałąź\",\"image_url\":\"URL obrazka\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"tabs\":{\"current\":\"Aktualny\",\"build_history\":\"Historia Buildów\",\"branches\":\"Wszystkie Gałęzie\",\"build\":\"Build\",\"job\":\"Zadanie\"}},\"build\":{\"job\":\"Zadanie\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Committer\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Komitujący\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"layouts\":{\"top\":{\"home\":\"Start\",\"blog\":\"Blog\",\"docs\":\"Dokumentacja\",\"stats\":\"Statystki\",\"github_login\":\"Zaloguj się przy pomocy Githuba\",\"profile\":\"Profil\",\"sign_out\":\"Wyloguj się\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Ostatnie\",\"search\":\"Wyniki\",\"sponsers\":\"Sponsorzy\",\"sponsors_link\":\"Zobacz naszych wszystkich wspaniałych sponsorów →\",\"my_repositories\":\"Moje repozytoria\"},\"about\":{\"alpha\":\"To wciąż jest wersja alpha.\",\"messages\":{\"alpha\":\"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. \"},\"join\":\"Pomóż i dołącz do nas!\",\"mailing_list\":\"Lista mailingowa\",\"repository\":\"Repozytorium\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Macierz Buildów\",\"commit\":\"Commit\",\"committer\":\"Komitujący\",\"compare\":\"Porównianie\",\"config\":\"Konfiguracja\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"job\":\"Zadanie\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\" Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie. \\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz\",\"config\":\"jak skonfigurować niestandardowe opcje builda\"},\"messages\":{\"notice\":\"Aby zacząć, przeczytaj nasz Przewodnik .\\n Zajmie ci to tylko kilka minut. \"},\"token\":\"Token\",\"your_repos\":\"Twoje repozytoria\"}},\"statistics\":{\"index\":{\"count\":\"Ilość\",\"repo_growth\":\"Przyrost repozytoriów\",\"total_projects\":\"Łącznie projektów/repozytoriów\",\"build_count\":\"Liczba buildów\",\"last_month\":\"ostatni miesiąc\",\"total_builds\":\"Łącznie Buildów\"}},\"date\":{\"abbr_day_names\":[\"nie\",\"pon\",\"wto\",\"śro\",\"czw\",\"pią\",\"sob\"],\"abbr_month_names\":[\"sty\",\"lut\",\"mar\",\"kwi\",\"maj\",\"cze\",\"lip\",\"sie\",\"wrz\",\"paź\",\"lis\",\"gru\"],\"day_names\":[\"niedziela\",\"poniedziałek\",\"wtorek\",\"środa\",\"czwartek\",\"piątek\",\"sobota\"],\"formats\":{\"default\":\"%d-%m-%Y\",\"long\":\"%B %d, %Y\",\"short\":\"%d %b\"},\"month_names\":[\"styczeń\",\"luty\",\"marzec\",\"kwiecień\",\"maj\",\"czerwiec\",\"lipiec\",\"sierpień\",\"wrzesień\",\"październik\",\"listopad\",\"grudzień\"],\"order\":[\"day\",\"month\",\"year\"]},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"musi zostać zaakceptowane\",\"blank\":\"nie może być puste\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"pt-BR\":{\"admin\":{\"actions\":{\"create\":\"criar\",\"created\":\"criado\",\"delete\":\"deletar\",\"deleted\":\"deletado\",\"update\":\"atualizar\",\"updated\":\"atualizado\"},\"credentials\":{\"log_out\":\"Deslogar\"},\"dashboard\":{\"add_new\":\"Adicionar novo\",\"ago\":\"atrás\",\"last_used\":\"Última utilização\",\"model_name\":\"Nome do modelo\",\"modify\":\"Modificar\",\"name\":\"Dashboard\",\"pagename\":\"Administração do site\",\"records\":\"Registros\",\"show\":\"Mostrar\"},\"delete\":{\"confirmation\":\"Sim, tenho certeza\",\"flash_confirmation\":\"%{name} foi destruído com sucesso\"},\"flash\":{\"error\":\"%{name} falhou ao %{action}\",\"noaction\":\"Nenhuma ação foi tomada\",\"successful\":\"%{name} foi %{action} com sucesso\"},\"history\":{\"name\":\"Histórico\",\"no_activity\":\"Nenhuma Atividade\",\"page_name\":\"Histórico para %{name}\"},\"list\":{\"add_new\":\"Adicionar novo\",\"delete_action\":\"Deletar\",\"delete_selected\":\"Deletar selecionados\",\"edit_action\":\"Editar\",\"search\":\"Buscar\",\"select\":\"Selecionar %{name} para editar\",\"select_action\":\"Selecionar\",\"show_all\":\"Mostrar todos\"},\"new\":{\"basic_info\":\"Informações básicas\",\"cancel\":\"Cancelar\",\"chosen\":\"Escolhido %{name}\",\"chose_all\":\"Escolher todos\",\"clear_all\":\"Limpar todos\",\"many_chars\":\"caracteres ou menos.\",\"one_char\":\"caractere.\",\"optional\":\"Opcional\",\"required\":\"Requerido\",\"save\":\"Salvar\",\"save_and_add_another\":\"Salvar e adicionar outro\",\"save_and_edit\":\"Salvar e alterar\",\"select_choice\":\"Selecione e clique\"}},\"build\":{\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\"},\"builds\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"name\":\"Build\",\"started_at\":\"Iniciou em\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Sua conta foi confirmada com sucesso. Você agora está logado.\",\"send_instructions\":\"Você receberá um email com instruções de como confirmar sua conta em alguns minutos.\"},\"failure\":{\"inactive\":\"Sua conta ainda não foi ativada.\",\"invalid\":\"Email ou senha inválidos.\",\"invalid_token\":\"Token de autenticação inválido.\",\"locked\":\"Sua conta está trancada.\",\"timeout\":\"Sua sessão expirou, por favor faça seu login novamente.\",\"unauthenticated\":\"Você precisa fazer o login ou cadastrar-se antes de continuar.\",\"unconfirmed\":\"Você precisa confirmar sua conta antes de continuar.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instruções de confirmação\"},\"reset_password_instructions\":{\"subject\":\"Instruções de atualização de senha\"},\"unlock_instructions\":{\"subject\":\"Instruções de destrancamento\"}},\"passwords\":{\"send_instructions\":\"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.\",\"updated\":\"Sua senha foi alterada com sucesso. Você agora está logado.\"},\"registrations\":{\"destroyed\":\"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!\",\"signed_up\":\"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.\",\"updated\":\"Você atualizou sua conta com sucesso.\"},\"sessions\":{\"signed_in\":\"Logado com sucesso.\",\"signed_out\":\"Deslogado com sucesso.\"},\"unlocks\":{\"send_instructions\":\"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.\",\"unlocked\":\"Sua conta foi destrancada com sucesso. Você agora está logado.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"já foi confirmado\",\"not_found\":\"não encontrado\",\"not_locked\":\"não estava trancado\"}},\"home\":{\"name\":\"home\"},\"jobs\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"started_at\":\"Iniciou em\"},\"layouts\":{\"about\":{\"alpha\":\"Isto é um alpha.\",\"join\":\"Junte-se à nós e ajude!\",\"mailing_list\":\"Lista de email\",\"messages\":{\"alpha\":\"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui. \"},\"repository\":\"Repositório\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Faça fork no Github\",\"my_repositories\":\"Meus Repositórios\",\"recent\":\"Recentes\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Conheça todos os nossos patrocinadores →\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\",\"log\":\"Log\"},\"top\":{\"admin\":\"Admin\",\"blog\":\"Blog\",\"docs\":\"Documentação\",\"github_login\":\"Logue com o Github\",\"home\":\"Home\",\"profile\":\"Perfil\",\"sign_out\":\"Sair\",\"stats\":\"Estatísticas\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Não há trabalhos\",\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"config\":\"como configurar opções de build\",\"your_repos\":\"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github. Para testar com múltiplas versões do Ruby, leia\"},\"messages\":{\"notice\":\"Para começar, leia nosso Guia de início . Só leva alguns minutinhos. \"},\"token\":\"Token\",\"update\":\"Atualizar\",\"update_locale\":\"Atualizar\",\"your_locale\":\"Sua língua\",\"your_repos\":\"Seus Repositórios\"}},\"queue\":\"Fila\",\"repositories\":{\"branch\":\"Branch\",\"commit\":\"Commit\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"image_url\":\"URL da imagem\",\"markdown\":\"Markdown\",\"message\":\"Mensagem\",\"rdoc\":\"RDOC\",\"started_at\":\"Iniciou em\",\"tabs\":{\"branches\":\"Sumário do Branch\",\"build\":\"Build\",\"build_history\":\"Histórico de Build\",\"current\":\"Atual\",\"job\":\"Trabalho\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duração\"},\"statistics\":{\"index\":{\"build_count\":\"Número de Builds\",\"count\":\"Número\",\"last_month\":\"último mês\",\"repo_growth\":\"Crescimento de Repositório\",\"total_builds\":\"Total de Builds\",\"total_projects\":\"Total de Projetos/Repositórios\"}},\"workers\":\"Processos\"},\"ru\":{\"admin\":{\"actions\":{\"create\":\"создать\",\"created\":\"создано\",\"delete\":\"удалить\",\"deleted\":\"удалено\",\"update\":\"обновить\",\"updated\":\"обновлено\"},\"credentials\":{\"log_out\":\"Выход\"},\"dashboard\":{\"add_new\":\"Добавить\",\"ago\":\"назад\",\"last_used\":\"Использовалось в последний раз\",\"model_name\":\"Имя модели\",\"modify\":\"Изменить\",\"name\":\"Панель управления\",\"pagename\":\"Управление сайтом\",\"records\":\"Записи\",\"show\":\"Показать\"},\"delete\":{\"confirmation\":\"Да, я уверен\",\"flash_confirmation\":\"%{name} успешно удалено\"},\"history\":{\"name\":\"История\",\"no_activity\":\"Нет активности\",\"page_name\":\"История %{name}\"},\"list\":{\"add_new\":\"Добавить\",\"delete_action\":\"Удалить\",\"delete_selected\":\"Удалить выбранные\",\"edit_action\":\"Редактировать\",\"search\":\"Поиск\",\"select\":\"Для редактирования выберите %{name}\",\"select_action\":\"Выбрать\",\"show_all\":\"Показать все\"},\"new\":{\"basic_info\":\"Основная информация\",\"cancel\":\"Отмена\",\"chosen\":\"Выбрано %{name}\",\"chose_all\":\"Выбрать все\",\"clear_all\":\"Очистить все\",\"one_char\":\"символ.\",\"optional\":\"Необязательно\",\"required\":\"Обязательно\",\"save\":\"Сохранить\",\"save_and_add_another\":\"Сохранить и добавить другое\",\"save_and_edit\":\"Сохранить и продолжить редактирование\",\"select_choice\":\"Выберите и кликните\",\"many_chars\":\"символов или меньше.\"},\"flash\":{\"error\":\"%{name} не удалось %{action}\",\"noaction\":\"Никаких действий не произведено\",\"successful\":\"%{name} было успешно %{action}\"}},\"build\":{\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\"},\"builds\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Дифф\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине, спонсируемой\"},\"name\":\"Билд\",\"started_at\":\"Начало\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} час\",\"few\":\"%{count} часа\",\"many\":\"%{count} часов\",\"other\":\"%{count} часа\"},\"minutes_exact\":{\"one\":\"%{count} минута\",\"few\":\"%{count} минуты\",\"many\":\"%{count} минут\",\"other\":\"%{count} минуты\"},\"seconds_exact\":{\"one\":\"%{count} секунда\",\"few\":\"%{count} секунды\",\"many\":\"%{count} секунд\",\"other\":\"%{count} секунды\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Ваш аккаунт успешно подтвержден. Приветствуем!\",\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта.\"},\"failure\":{\"inactive\":\"Ваш аккаунт еще не активирован.\",\"invalid\":\"Ошибка в адресе почты или пароле.\",\"invalid_token\":\"Неправильный токен аутентификации.\",\"locked\":\"Ваш аккаунт заблокирован.\",\"timeout\":\"Сессия окончена. Для продолжения работы войдите снова.\",\"unauthenticated\":\"Вам нужно войти или зарегистрироваться.\",\"unconfirmed\":\"Вы должны сначала подтвердить свой аккаунт.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Инструкции для подтверждению аккаунта\"},\"reset_password_instructions\":{\"subject\":\"Инструкции для сброса пароля\"},\"unlock_instructions\":{\"subject\":\"Инструкции для разблокирования аккаунта\"}},\"passwords\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.\",\"updated\":\"Ваш пароль успешно изменен. Приветствуем!\"},\"registrations\":{\"destroyed\":\"Ваш аккаунт был успешно удален. Живите долго и процветайте!\",\"signed_up\":\"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.\",\"updated\":\"Аккаунт успешно обновлен.\"},\"sessions\":{\"signed_in\":\"Приветствуем!\",\"signed_out\":\"Удачи!\"},\"unlocks\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.\",\"unlocked\":\"Ваш аккаунт успешно разблокирован. Приветствуем!\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"уже подтвержден\",\"not_found\":\"не найден\",\"not_locked\":\"не заблокирован\"}},\"home\":{\"name\":\"Главная\"},\"jobs\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине спонсируемой\"},\"started_at\":\"Начало\"},\"layouts\":{\"about\":{\"alpha\":\"Это альфа-версия\",\"join\":\"Присоединяйтесь к нам и помогайте!\",\"mailing_list\":\"Лист рассылки\",\"messages\":{\"alpha\":\"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности \"},\"repository\":\"Репозиторий\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"my_repositories\":\"Мои репозитории\",\"recent\":\"Недавние\",\"search\":\"Поиск\",\"sponsers\":\"Спонсоры\",\"sponsors_link\":\"Список всех наших замечательных спонсоров →\"},\"mobile\":{\"author\":\"Автор\",\"build\":\"Сборка\",\"build_matrix\":\"Матрица сборок\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\",\"log\":\"Журнал\"},\"top\":{\"admin\":\"Управление\",\"blog\":\"Блог\",\"docs\":\"Документация\",\"github_login\":\"Войти через Github\",\"home\":\"Главная\",\"profile\":\"Профиль\",\"sign_out\":\"Выход\",\"stats\":\"Статистика\"}},\"no_job\":\"Очередь пуста\",\"profiles\":{\"show\":{\"email\":\"Электронная почта\",\"github\":\"Github\",\"message\":{\"config\":\"как настроить специальные опции билда\",\"your_repos\":\"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub. \\nДля тестирования на нескольких версиях Ruby смотрите\"},\"messages\":{\"notice\":\"Перед началом, пожалуйста, прочтите Руководство для быстрого старта . Это займет всего несколько минут. \"},\"token\":\"Токен\",\"update\":\"Обновить\",\"update_locale\":\"Обновить\",\"your_locale\":\"Ваш язык\",\"your_repos\":\"Ваши репозитории\"}},\"queue\":\"Очередь\",\"repositories\":{\"branch\":\"Ветка\",\"commit\":\"Коммит\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"image_url\":\"URL изображения\",\"markdown\":\"Markdown\",\"message\":\"Комментарий\",\"rdoc\":\"RDOC\",\"started_at\":\"Начало\",\"tabs\":{\"branches\":\"Статус веток\",\"build\":\"Билд\",\"build_history\":\"История\",\"current\":\"Текущий\",\"job\":\"Задача\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Длительность\"},\"statistics\":{\"index\":{\"build_count\":\"Количество билдов\",\"count\":\"Количество\",\"last_month\":\"прошлый месяц\",\"repo_growth\":\"Рост числа репозиториев\",\"total_builds\":\"Всего билдов\",\"total_projects\":\"Всего проектов/репозиториев\"}},\"workers\":\"Машины\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}}};\n\n\n})();\n//@ sourceURL=config/locales");minispade.register('ext/ember/bound_helper', "(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n context: null,\n options: null,\n property: null,\n // paths of the property that are also observed\n propertyPaths: [],\n\n value: Ember.K,\n\n valueForRender: function() {\n var value = this.value(Ember.get(this.context, this.property), this.options);\n if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n return value;\n },\n\n render: function(buffer) {\n buffer.push(this.valueForRender());\n },\n\n valueDidChange: function() {\n if (this.morph.isRemoved()) { return; }\n this.morph.html(this.valueForRender());\n },\n\n didInsertElement: function() {\n this.valueDidChange();\n },\n\n init: function() {\n this._super();\n Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n },\n\n destroy: function() {\n Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n this.get('propertyPaths').forEach(function(propName) {\n this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n }, this);\n this._super();\n }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n var propertyPaths = Array.prototype.slice.call(arguments, 2);\n Ember.Handlebars.registerHelper(name, function(property, options) {\n var data = options.data,\n view = data.view,\n ctx = this;\n\n var bindView = view.createChildView(BoundHelperView, {\n property: property,\n propertyPaths: propertyPaths,\n context: ctx,\n options: options.hash,\n value: func\n });\n\n view.appendChild(bindView);\n });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper");minispade.register('ext/ember/namespace', "(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");
\ No newline at end of file
diff --git a/public/styles/app.css b/public/styles/app.css
index af35ffd0..92c5d262 100644
--- a/public/styles/app.css
+++ b/public/styles/app.css
@@ -2515,12 +2515,12 @@ body > div, body > div > div {
/* line 5, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts.open li .info,
-#repositories.open li .info {
+#repos.open li .info {
display: block;
}
/* line 8, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li,
-#repositories li {
+#repos li {
position: relative;
font-size: 15px;
padding: 15px 20px 15px 15px;
@@ -2529,19 +2529,19 @@ body > div, body > div > div {
}
/* line 15, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li:nth-child(odd), #accounts li:nth-child(odd) .indicator span,
-#repositories li:nth-child(odd),
-#repositories li:nth-child(odd) .indicator span {
+#repos li:nth-child(odd),
+#repos li:nth-child(odd) .indicator span {
background-color: white;
}
/* line 18, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li:nth-child(even), #accounts li:nth-child(even) .indicator span,
-#repositories li:nth-child(even),
-#repositories li:nth-child(even) .indicator span {
+#repos li:nth-child(even),
+#repos li:nth-child(even) .indicator span {
background-color: #f6f6f6;
}
/* line 22, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .slug-and-status,
-#repositories li .slug-and-status {
+#repos li .slug-and-status {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -2549,7 +2549,7 @@ body > div, body > div > div {
}
/* line 28, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .last_build,
-#repositories li .last_build {
+#repos li .last_build {
position: absolute;
top: 15px;
right: 20px;
@@ -2557,7 +2557,7 @@ body > div, body > div > div {
}
/* line 37, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .summary,
-#repositories li .summary {
+#repos li .summary {
margin: 5px 0 0 15px;
white-space: nowrap;
overflow: hidden;
@@ -2567,7 +2567,7 @@ body > div, body > div > div {
}
/* line 45, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .info,
-#repositories li .info {
+#repos li .info {
overflow: hidden;
margin: 12px -20px -15px -45px;
font-size: 12px;
@@ -2577,7 +2577,7 @@ body > div, body > div > div {
}
/* line 52, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .info p,
-#repositories li .info p {
+#repos li .info p {
margin: 0 -10px 0 -10px;
padding: 12px 35px 12px 73px;
-webkit-box-shadow: #bab9a7 0 1px 8px 0 inset;
@@ -2586,7 +2586,7 @@ body > div, body > div > div {
}
/* line 57, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .indicator,
-#repositories li .indicator {
+#repos li .indicator {
display: none;
position: absolute;
top: 0;
@@ -2597,7 +2597,7 @@ body > div, body > div > div {
}
/* line 66, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li .indicator span,
-#repositories li .indicator span {
+#repos li .indicator span {
position: relative;
display: block;
top: 50%;
@@ -2617,12 +2617,12 @@ body > div, body > div > div {
}
/* line 78, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts li.selected .indicator,
-#repositories li.selected .indicator {
+#repos li.selected .indicator {
display: block;
}
/* line 81, /Users/sven/Development/projects/travis/travis-web/assets/styles/left/list.sass */
#accounts .loading,
-#repositories .loading {
+#repos .loading {
padding: 15px 25px 15px 30px;
background-color: white;
background-image: none;
@@ -3623,33 +3623,33 @@ pre#log .fold.open {
}
/* line 3, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository {
+#repo {
position: relative;
width: 100%;
overflow-x: hidden;
}
/* line 8, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .description, #repository .language {
+#repo .description, #repo .language {
font-weight: normal;
color: #999999;
}
/* line 12, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .language {
+#repo .language {
display: none;
padding-right: 5px;
}
/* line 16, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .github-stats {
+#repo .github-stats {
position: absolute;
top: 15px;
right: 0;
}
/* line 20, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .github-stats > * {
+#repo .github-stats > * {
float: left;
}
/* line 22, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .github-stats a {
+#repo .github-stats a {
height: 16px;
display: block;
font-size: 12px;
@@ -3661,11 +3661,11 @@ pre#log .fold.open {
color: #999999;
}
/* line 32, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .github-stats a.watchers {
+#repo .github-stats a.watchers {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzAyMjQzMTJGREQzMTFFMUFDNEREQzAwMkZFNkVGNjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzAyMjQzMTNGREQzMTFFMUFDNEREQzAwMkZFNkVGNjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDMDIyNDMxMEZERDMxMUUxQUM0RERDMDAyRkU2RUY2NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMDIyNDMxMUZERDMxMUUxQUM0RERDMDAyRkU2RUY2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Piet84cAAAAwUExURZycnLq6utDQ0JCQkK2trezs7MvLy/b29tTU1PDw8Pz8/KSkpPPz8+Hh4cXFxf///4r68HYAAAAQdFJOU////////////////////wDgI10ZAAAAWUlEQVR42qTO0Q6AIAgFUOQiimL9/9+G1Vzrse4TOxtcaH+FvoKpiNqCkkDMhFQuGITezFoHjQkVQDXAziGAb/AJvFbc10p0xFHVOOqrNm8iW/73+iOHAAMAVlIL9c8yrmkAAAAASUVORK5CYII=');
}
/* line 34, /Users/sven/Development/projects/travis/travis-web/assets/styles/main/repository.sass */
-#repository .github-stats a.forks {
+#repo .github-stats a.forks {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzAyMjQzMTZGREQzMTFFMUFDNEREQzAwMkZFNkVGNjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0U1QTlDREFGREQzMTFFMUFDNEREQzAwMkZFNkVGNjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDMDIyNDMxNEZERDMxMUUxQUM0RERDMDAyRkU2RUY2NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMDIyNDMxNUZERDMxMUUxQUM0RERDMDAyRkU2RUY2NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PopAyIgAAAAwUExURebm5vj4+Kurq7u7u9ra2v39/fLy8tXV1ZCQkMTExM3NzZqamtDQ0MrKypOTk////1zRGooAAAAQdFJOU////////////////////wDgI10ZAAAAYUlEQVR42pSPQRLAIAjEwKqsivr/3xash7Y3czMOGaD5g45E0uTiMsSfUoFsoo0B6OQAxwQz5wBNoVBD2g371h3c0WX4EWSEbqbGsUY8NcorGkUk+pR0gD+LsRzfsrgFGABEEAvG8TNu0wAAAABJRU5ErkJggg==');
}
/* line 3, /Users/sven/Development/projects/travis/travis-web/assets/styles/_mixins/ansi.sass */
@@ -5996,37 +5996,37 @@ pre#log .fold.open {
}
/* line 12, /Users/sven/Development/projects/travis/travis-web/assets/styles/status.sass */
-#repositories .status,
+#repos .status,
.number .status {
background-color: #e7d100;
}
/* line 14, /Users/sven/Development/projects/travis/travis-web/assets/styles/status.sass */
-#repositories a,
+#repos a,
.number a {
color: #666666;
}
/* line 20, /Users/sven/Development/projects/travis/travis-web/assets/styles/status.sass */
-#repositories .green .status,
+#repos .green .status,
.green #summary .number .status,
.list .green .number .status {
background-color: #368c2a;
}
/* line 22, /Users/sven/Development/projects/travis/travis-web/assets/styles/status.sass */
-#repositories .green a,
+#repos .green a,
.green #summary .number a,
.list .green .number a {
color: #038035;
}
/* line 28, /Users/sven/Development/projects/travis/travis-web/assets/styles/status.sass */
-#repositories .red .status,
+#repos .red .status,
.red #summary .number .status,
.list .red .number .status {
background-color: #cc3d3d;
}
/* line 30, /Users/sven/Development/projects/travis/travis-web/assets/styles/status.sass */
-#repositories .red a,
+#repos .red a,
.red #summary .number a,
.list .red .number a {
color: #cc0000;
diff --git a/public/version b/public/version
index d5711f45..08be3831 100644
--- a/public/version
+++ b/public/version
@@ -1 +1 @@
-5f08468e
\ No newline at end of file
+a126b5e2
\ No newline at end of file
diff --git a/spec/assets/support/conditions.coffee b/spec/assets/support/conditions.coffee
index 9618cc08..6d6669d8 100644
--- a/spec/assets/support/conditions.coffee
+++ b/spec/assets/support/conditions.coffee
@@ -4,7 +4,7 @@
@hasText = (selector, text) ->
-> $(selector).text().trim() == text
-@reposRendered = notEmpty('#repositories li a.current')
+@reposRendered = notEmpty('#repos li a.current')
@buildRendered = notEmpty('#summary .number')
@buildsRendered = notEmpty('#builds .number')
@jobRendered = notEmpty('#summary .number')
diff --git a/spec/assets/support/expectations.coffee b/spec/assets/support/expectations.coffee
index 8a1f7b48..8085c7e0 100644
--- a/spec/assets/support/expectations.coffee
+++ b/spec/assets/support/expectations.coffee
@@ -44,7 +44,7 @@
listsItems('repo', items)
@listsRepo = (data) ->
- row = $('#repositories li')[data.row - 1]
+ row = $('#repos li')[data.row - 1]
repo = data.item
expect($('a.current', row).attr('href')).toEqual "/#{repo.slug}"
diff --git a/spec/assets/support/mocks.coffee b/spec/assets/support/mocks.coffee
index f9dba2d9..3cfc7b80 100644
--- a/spec/assets/support/mocks.coffee
+++ b/spec/assets/support/mocks.coffee
@@ -2,7 +2,7 @@ require 'ext/jquery'
responseTime = 0
-repositories = [
+repos = [
{ id: 1, owner: 'travis-ci', name: 'travis-core', slug: 'travis-ci/travis-core', build_ids: [1, 2], last_build_id: 1, last_build_number: 1, last_build_result: 0, last_build_duration: 30, last_build_started_at: '2012-07-02T00:00:00Z', last_build_finished_at: '2012-07-02T00:00:30Z', description: 'Description of travis-core' },
{ id: 2, owner: 'travis-ci', name: 'travis-assets', slug: 'travis-ci/travis-assets', build_ids: [3], last_build_id: 3, last_build_number: 3, last_build_result: 1, last_build_duration: 30, last_build_started_at: '2012-07-02T00:01:00Z', last_build_finished_at: '2012-07-01T00:01:30Z', description: 'Description of travis-assets'},
{ id: 3, owner: 'travis-ci', name: 'travis-hub', slug: 'travis-ci/travis-hub', build_ids: [4], last_build_id: 4, last_build_number: 4, last_build_result: undefined, last_build_duration: undefined, last_build_started_at: '2012-07-02T00:02:00Z', last_build_finished_at: undefined, description: 'Description of travis-hub'},
@@ -63,29 +63,29 @@ hooks = [
$.mockjax
- url: '/repositories'
+ url: '/repos'
responseTime: responseTime
response: (settings) ->
if !settings.data
- this.responseText = { repositories: repositories }
+ this.responseText = { repos: repos }
else if slug = settings.data.slug
- this.responseText = { repositories: [$.detect(repositories, (repository) -> repository.slug == slug)] }
+ this.responseText = { repos: [$.detect(repos, (repository) -> repository.slug == slug)] }
else if search = settings.data.search
- this.responseText = { repositories: $.select(repositories, (repository) -> repository.slug.indexOf(search) > -1).toArray() }
+ this.responseText = { repos: $.select(repos, (repository) -> repository.slug.indexOf(search) > -1).toArray() }
else
raise "don't know this ditty"
-for repository in repositories
+for repository in repos
$.mockjax
url: '/' + repository.slug
responseTime: responseTime
responseText: { repository: repository }
$.mockjax
- url: '/repositories'
+ url: '/repos'
data: { slug: repository.slug }
responseTime: responseTime
- responseText: { repositories: [repository] }
+ responseText: { repos: [repository] }
$.mockjax
url: '/builds'