Merge branch 'ps-ember-update' of github.com:travis-ci/travis-web into ps-ember-update
This commit is contained in:
commit
c4bb49cc17
|
@ -1,3 +1,3 @@
|
||||||
---
|
---
|
||||||
:polled_at: 1358204368
|
:polled_at: 1361792606
|
||||||
:updated_at: 1358204368
|
:updated_at: 1361792606
|
||||||
|
|
|
@ -16,6 +16,7 @@ env:
|
||||||
script: "script/ci"
|
script: "script/ci"
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
|
- "ENV=production bundle exec rakep"
|
||||||
- "test $TEST_SUITE = \"ember\" && travis-artifacts upload --target-path assets/$TRAVIS_BRANCH --path public/scripts:scripts --path public/styles:styles"
|
- "test $TEST_SUITE = \"ember\" && travis-artifacts upload --target-path assets/$TRAVIS_BRANCH --path public/scripts:scripts --path public/styles:styles"
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
|
|
24
README.md
24
README.md
|
@ -28,10 +28,30 @@ This will run against API run locally.
|
||||||
|
|
||||||
### Running the spec suite
|
### Running the spec suite
|
||||||
|
|
||||||
To run the test suite, you must first start the app (see above).
|
First, start the app (see above).
|
||||||
|
|
||||||
bundle exec foreman start
|
bundle exec foreman start
|
||||||
|
|
||||||
Then run rspec against the spec/ directory
|
To run the Ruby specs, run rspec against the spec/ directory:
|
||||||
|
|
||||||
bundle exec rspec spec/
|
bundle exec rspec spec/
|
||||||
|
|
||||||
|
To run the Jasmine specs, open the spec page: [localhost:5000/spec.html](http://localhost:5000/spec.html)
|
||||||
|
|
||||||
|
### i18n
|
||||||
|
|
||||||
|
Localization for travis-web is managed via [localeapp](http://localeapp.com).
|
||||||
|
If you are interested in improving the existing localizations or adding
|
||||||
|
a new locale, please contact us on irc (#travis) and we will set you up.
|
||||||
|
|
||||||
|
Please do **not** edit the YAML files directly.
|
||||||
|
|
||||||
|
Localization data can be synced with the following rake task:
|
||||||
|
|
||||||
|
bundle exec localeapp:update
|
||||||
|
|
||||||
|
This will publish any new keys in en.yml, as well as any missing keys
|
||||||
|
from your handlebars templates and pull down the latest localizations.
|
||||||
|
|
||||||
|
*note*: You will need to have the localeapp api key exported to
|
||||||
|
LOCALEAPP_API_KEY
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
Travis.setLocale Travis.default_locale
|
Travis.setLocale Travis.default_locale
|
||||||
@set('state', 'signed-out')
|
@set('state', 'signed-out')
|
||||||
@set('user', undefined)
|
@set('user', undefined)
|
||||||
|
Travis.__container__.lookup('controller:currentUser').set('content', null)
|
||||||
|
Travis.__container__.lookup('router:main').send('afterSignOut')
|
||||||
|
|
||||||
signIn: ->
|
signIn: ->
|
||||||
@set('state', 'signing-in')
|
@set('state', 'signing-in')
|
||||||
|
@ -51,12 +53,13 @@
|
||||||
@storeData(data, Travis.storage) unless @userDataFrom(Travis.storage)
|
@storeData(data, Travis.storage) unless @userDataFrom(Travis.storage)
|
||||||
user = @loadUser(data.user)
|
user = @loadUser(data.user)
|
||||||
# TODO: we should not use __container__ directly, how to do it better?
|
# TODO: we should not use __container__ directly, how to do it better?
|
||||||
|
# A good answer seems to do auth in context of controller.
|
||||||
Travis.__container__.lookup('controller:currentUser').set('content', user)
|
Travis.__container__.lookup('controller:currentUser').set('content', user)
|
||||||
|
|
||||||
@set('state', 'signed-in')
|
@set('state', 'signed-in')
|
||||||
Travis.setLocale(data.user.locale || Travis.default_locale)
|
Travis.setLocale(data.user.locale || Travis.default_locale)
|
||||||
Travis.trigger('user:signed_in', data.user)
|
Travis.trigger('user:signed_in', data.user)
|
||||||
#@get('app.router').send('afterSignIn', @readAfterSignInPath())
|
Travis.__container__.lookup('router:main').send('afterSignIn', @readAfterSignInPath())
|
||||||
|
|
||||||
storeData: (data, storage) ->
|
storeData: (data, storage) ->
|
||||||
storage.setItem('travis.token', data.token)
|
storage.setItem('travis.token', data.token)
|
||||||
|
|
|
@ -2,6 +2,15 @@ Travis.BuildsController = Em.ArrayController.extend
|
||||||
# sortAscending: false
|
# sortAscending: false
|
||||||
needs: ['repo']
|
needs: ['repo']
|
||||||
|
|
||||||
repoBinding: 'controllers.repo'
|
repoBinding: 'controllers.repo.repo'
|
||||||
buildsBinding: 'repo.builds'
|
buildsBinding: 'controllers.repo.builds'
|
||||||
tabBinding: 'controllers.repo.tab'
|
tabBinding: 'controllers.repo.tab'
|
||||||
|
|
||||||
|
showMore: ->
|
||||||
|
id = @get('repo.id')
|
||||||
|
number = @get('builds.lastObject.number')
|
||||||
|
@get('builds').load Travis.Build.olderThanNumber(id, number, @get('tab'))
|
||||||
|
|
||||||
|
displayShowMoreButton: (->
|
||||||
|
@get('tab') != 'branches'
|
||||||
|
).property('tab')
|
||||||
|
|
|
@ -86,4 +86,4 @@ Travis.RepoController = Travis.Controller.extend
|
||||||
|
|
||||||
urlGithub: (->
|
urlGithub: (->
|
||||||
Travis.Urls.githubRepo(@get('repo.slug'))
|
Travis.Urls.githubRepo(@get('repo.slug'))
|
||||||
).property('repo.slug'),
|
).property('repo.slug')
|
||||||
|
|
|
@ -18,6 +18,9 @@ Travis.reopen
|
||||||
name: queue.display
|
name: queue.display
|
||||||
@set 'content', queues
|
@set 'content', queues
|
||||||
|
|
||||||
|
showAll: (queue) ->
|
||||||
|
queue.showAll()
|
||||||
|
|
||||||
WorkersController: Em.ArrayController.extend
|
WorkersController: Em.ArrayController.extend
|
||||||
init: ->
|
init: ->
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
|
|
|
@ -10,7 +10,7 @@ require 'travis/model'
|
||||||
branch: DS.attr('string')
|
branch: DS.attr('string')
|
||||||
message: DS.attr('string')
|
message: DS.attr('string')
|
||||||
_duration: DS.attr('number')
|
_duration: DS.attr('number')
|
||||||
_config: DS.attr('string')
|
_config: DS.attr('object')
|
||||||
startedAt: DS.attr('string')
|
startedAt: DS.attr('string')
|
||||||
finishedAt: DS.attr('string')
|
finishedAt: DS.attr('string')
|
||||||
|
|
||||||
|
@ -75,6 +75,11 @@ require 'travis/model'
|
||||||
branches: (options) ->
|
branches: (options) ->
|
||||||
@find repository_id: options.repoId, branches: true
|
@find repository_id: options.repoId, branches: true
|
||||||
|
|
||||||
olderThanNumber: (id, build_number) ->
|
olderThanNumber: (id, build_number, type) ->
|
||||||
|
console.log type
|
||||||
# TODO fix this api and use some kind of pagination scheme
|
# TODO fix this api and use some kind of pagination scheme
|
||||||
@find(url: "/builds", repository_id: id, after_number: build_number)
|
options = { repository_id: id, after_number: build_number }
|
||||||
|
if type?
|
||||||
|
options.event_type = type.replace(/s$/, '') # poor man's singularize
|
||||||
|
|
||||||
|
@find(options)
|
||||||
|
|
|
@ -19,6 +19,13 @@ require 'travis/model'
|
||||||
commit: DS.belongsTo('Travis.Commit')
|
commit: DS.belongsTo('Travis.Commit')
|
||||||
commits: DS.belongsTo('Travis.Commit')
|
commits: DS.belongsTo('Travis.Commit')
|
||||||
|
|
||||||
|
# this is a fake relationship just to get rid
|
||||||
|
# of ember data's bug: https://github.com/emberjs/data/issues/758
|
||||||
|
# TODO: remove when this issue is fixed
|
||||||
|
fakeBuild: DS.belongsTo('Travis.Build')
|
||||||
|
|
||||||
|
_config: DS.attr('object')
|
||||||
|
|
||||||
log: ( ->
|
log: ( ->
|
||||||
Travis.Log.create(job: this)
|
Travis.Log.create(job: this)
|
||||||
).property()
|
).property()
|
||||||
|
@ -32,8 +39,8 @@ require 'travis/model'
|
||||||
).property('repoSlug', 'repoId')
|
).property('repoSlug', 'repoId')
|
||||||
|
|
||||||
config: (->
|
config: (->
|
||||||
Travis.Helpers.compact(@get('data.config'))
|
Travis.Helpers.compact(@get('_config'))
|
||||||
).property('data.config')
|
).property('_config')
|
||||||
|
|
||||||
isFinished: (->
|
isFinished: (->
|
||||||
@get('state') in ['passed', 'failed', 'errored', 'canceled']
|
@get('state') in ['passed', 'failed', 'errored', 'canceled']
|
||||||
|
|
|
@ -22,12 +22,7 @@ require 'travis/model'
|
||||||
).property('lastBuildId', 'lastBuildNumber')
|
).property('lastBuildId', 'lastBuildNumber')
|
||||||
|
|
||||||
allBuilds: (->
|
allBuilds: (->
|
||||||
allBuilds = DS.RecordArray.create
|
Travis.Build.find()
|
||||||
type: Travis.Build
|
|
||||||
content: Ember.A([])
|
|
||||||
store: @get('store')
|
|
||||||
@get('store').registerRecordArray(allBuilds, Travis.Build);
|
|
||||||
allBuilds
|
|
||||||
).property()
|
).property()
|
||||||
|
|
||||||
builds: (->
|
builds: (->
|
||||||
|
@ -42,7 +37,7 @@ require 'travis/model'
|
||||||
array.load(builds)
|
array.load(builds)
|
||||||
|
|
||||||
id = @get('id')
|
id = @get('id')
|
||||||
array.observe(@get('allBuilds'), (build) -> build.get('repo.id') == id && !build.get('isPullRequest') )
|
array.observe(@get('allBuilds'), (build) -> build.get('isLoaded') && build.get('eventType') && build.get('repo.id') == id && !build.get('isPullRequest') )
|
||||||
|
|
||||||
array
|
array
|
||||||
).property()
|
).property()
|
||||||
|
@ -58,7 +53,7 @@ require 'travis/model'
|
||||||
array.load(builds)
|
array.load(builds)
|
||||||
|
|
||||||
id = @get('id')
|
id = @get('id')
|
||||||
array.observe(@get('allBuilds'), (build) -> @get('repositoryId') == id && build.get('isPullRequest') )
|
array.observe(@get('allBuilds'), (build) -> build.get('isLoaded') && build.get('eventType') && build.get('repo.id') == id && build.get('isPullRequest') )
|
||||||
|
|
||||||
array
|
array
|
||||||
).property()
|
).property()
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
require 'travis/location'
|
require 'travis/location'
|
||||||
|
require 'travis/line_number_parser'
|
||||||
|
|
||||||
Ember.Router.reopen
|
Ember.Router.reopen
|
||||||
location: (if testMode? then Ember.HashLocation.create() else Travis.Location.create())
|
location: (if testMode? then Ember.HashLocation.create() else Travis.Location.create())
|
||||||
|
@ -7,6 +8,36 @@ Ember.Router.reopen
|
||||||
url = url.replace(/#.*?$/, '')
|
url = url.replace(/#.*?$/, '')
|
||||||
@_super(url)
|
@_super(url)
|
||||||
|
|
||||||
|
# TODO: don't reopen Ember.Route to add events, there should be
|
||||||
|
# a better way (like "parent" resource for everything inside map)
|
||||||
|
Ember.Route.reopen
|
||||||
|
events:
|
||||||
|
afterSignIn: (path) ->
|
||||||
|
@routeTo(path)
|
||||||
|
|
||||||
|
afterSignOut: ->
|
||||||
|
@routeTo('/')
|
||||||
|
|
||||||
|
routeTo: (path) ->
|
||||||
|
return unless path
|
||||||
|
@router.handleURL(path)
|
||||||
|
@router.location.setURL(path)
|
||||||
|
|
||||||
|
signedIn: ->
|
||||||
|
@controllerFor('currentUser').get('content')
|
||||||
|
|
||||||
|
redirect: ->
|
||||||
|
if @get('needsAuth')
|
||||||
|
@authorize(@router.location.getURL())
|
||||||
|
else
|
||||||
|
@_super.apply this, arguments
|
||||||
|
Travis.autoSignIn() unless @signedIn()
|
||||||
|
|
||||||
|
authorize: (path) ->
|
||||||
|
if !@signedIn()
|
||||||
|
Travis.storeAfterSignInPath(path)
|
||||||
|
@transitionTo('auth')
|
||||||
|
|
||||||
Travis.Router.map ->
|
Travis.Router.map ->
|
||||||
@resource 'index', path: '/', ->
|
@resource 'index', path: '/', ->
|
||||||
@route 'current', path: '/'
|
@route 'current', path: '/'
|
||||||
|
@ -19,6 +50,7 @@ Travis.Router.map ->
|
||||||
@resource 'branches', path: '/branches'
|
@resource 'branches', path: '/branches'
|
||||||
|
|
||||||
@route 'stats', path: '/stats'
|
@route 'stats', path: '/stats'
|
||||||
|
@route 'auth', path: '/auth'
|
||||||
|
|
||||||
@resource 'profile', path: '/profile', ->
|
@resource 'profile', path: '/profile', ->
|
||||||
@route 'index', path: '/'
|
@route 'index', path: '/'
|
||||||
|
@ -34,18 +66,18 @@ Travis.IndexCurrentRoute = Ember.Route.extend
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:repo').activate('index')
|
@container.lookup('controller:repo').activate('index')
|
||||||
|
|
||||||
Travis.AbstractBuidsRoute = Ember.Route.extend
|
Travis.AbstractBuildsRoute = Ember.Route.extend
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'builds', outlet: 'pane', into: 'repo'
|
@render 'builds', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:repo').activate(@get('contentType'))
|
@container.lookup('controller:repo').activate(@get('contentType'))
|
||||||
|
|
||||||
Travis.BuildsRoute = Travis.AbstractBuidsRoute.extend(contentType: 'builds')
|
Travis.BuildsRoute = Travis.AbstractBuildsRoute.extend(contentType: 'builds')
|
||||||
Travis.PullRequestsRoute = Travis.AbstractBuidsRoute.extend(contentType: 'pull_requests')
|
Travis.PullRequestsRoute = Travis.AbstractBuildsRoute.extend(contentType: 'pull_requests')
|
||||||
Travis.BranchesRoute = Travis.AbstractBuidsRoute.extend(contentType: 'branches')
|
Travis.BranchesRoute = Travis.AbstractBuildsRoute.extend(contentType: 'branches')
|
||||||
|
|
||||||
Travis.BuildRoute = Ember.Route.extend
|
Travis.BuildRoute = Ember.Route.extend Travis.LineNumberParser,
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'build', outlet: 'pane', into: 'repo'
|
@render 'build', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
|
@ -57,11 +89,14 @@ Travis.BuildRoute = Ember.Route.extend
|
||||||
setupController: (controller, model) ->
|
setupController: (controller, model) ->
|
||||||
model = Travis.Build.find(model) if model && !model.get
|
model = Travis.Build.find(model) if model && !model.get
|
||||||
|
|
||||||
|
if lineNumber = @fetchLineNumber()
|
||||||
|
controller.set('lineNumber', lineNumber)
|
||||||
|
|
||||||
repo = @container.lookup('controller:repo')
|
repo = @container.lookup('controller:repo')
|
||||||
repo.set('build', model)
|
repo.set('build', model)
|
||||||
repo.activate('build')
|
repo.activate('build')
|
||||||
|
|
||||||
Travis.JobRoute = Ember.Route.extend
|
Travis.JobRoute = Ember.Route.extend Travis.LineNumberParser,
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'job', outlet: 'pane', into: 'repo'
|
@render 'job', outlet: 'pane', into: 'repo'
|
||||||
|
|
||||||
|
@ -73,6 +108,9 @@ Travis.JobRoute = Ember.Route.extend
|
||||||
setupController: (controller, model) ->
|
setupController: (controller, model) ->
|
||||||
model = Travis.Job.find(model) if model && !model.get
|
model = Travis.Job.find(model) if model && !model.get
|
||||||
|
|
||||||
|
if lineNumber = @fetchLineNumber()
|
||||||
|
controller.set('lineNumber', lineNumber)
|
||||||
|
|
||||||
repo = @container.lookup('controller:repo')
|
repo = @container.lookup('controller:repo')
|
||||||
console.log model.toString()
|
console.log model.toString()
|
||||||
repo.set('job', model)
|
repo.set('job', model)
|
||||||
|
@ -143,6 +181,8 @@ Travis.StatsRoute = Ember.Route.extend
|
||||||
@container.lookup('controller:application').connectLayout('simple')
|
@container.lookup('controller:application').connectLayout('simple')
|
||||||
|
|
||||||
Travis.ProfileRoute = Ember.Route.extend
|
Travis.ProfileRoute = Ember.Route.extend
|
||||||
|
needsAuth: true
|
||||||
|
|
||||||
setupController: ->
|
setupController: ->
|
||||||
@container.lookup('controller:application').connectLayout('profile')
|
@container.lookup('controller:application').connectLayout('profile')
|
||||||
@container.lookup('controller:accounts').set('content', Travis.Account.find())
|
@container.lookup('controller:accounts').set('content', Travis.Account.find())
|
||||||
|
@ -160,7 +200,7 @@ Travis.ProfileIndexRoute = Ember.Route.extend
|
||||||
@container.lookup('controller:profile').activate 'hooks'
|
@container.lookup('controller:profile').activate 'hooks'
|
||||||
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'hooks', outlet: 'pane', into: 'profile'
|
@render 'hooks', outlet: 'pane', into: 'profile', controller: 'profile'
|
||||||
|
|
||||||
Travis.AccountRoute = Ember.Route.extend
|
Travis.AccountRoute = Ember.Route.extend
|
||||||
setupController: (controller, account) ->
|
setupController: (controller, account) ->
|
||||||
|
@ -208,3 +248,13 @@ Travis.AccountProfileRoute = Ember.Route.extend
|
||||||
|
|
||||||
renderTemplate: ->
|
renderTemplate: ->
|
||||||
@render 'user', outlet: 'pane', into: 'profile'
|
@render 'user', outlet: 'pane', into: 'profile'
|
||||||
|
|
||||||
|
Travis.AuthRoute = Ember.Route.extend
|
||||||
|
renderTemplate: ->
|
||||||
|
$('body').attr('id', 'auth')
|
||||||
|
|
||||||
|
@render 'top', outlet: 'top'
|
||||||
|
@render 'auth.signin'
|
||||||
|
|
||||||
|
setupController: ->
|
||||||
|
@container.lookup('controller:application').connectLayout('simple')
|
||||||
|
|
|
@ -52,7 +52,6 @@ Travis.Store = DS.Store.extend
|
||||||
!!@typeMapFor(type).idToCid[id]
|
!!@typeMapFor(type).idToCid[id]
|
||||||
|
|
||||||
receive: (event, data) ->
|
receive: (event, data) ->
|
||||||
#console.log event, data
|
|
||||||
[name, type] = event.split(':')
|
[name, type] = event.split(':')
|
||||||
|
|
||||||
mappings = @adapter.get('mappings')
|
mappings = @adapter.get('mappings')
|
||||||
|
@ -142,8 +141,6 @@ Travis.Store = DS.Store.extend
|
||||||
result = @merge(type, hash, true)
|
result = @merge(type, hash, true)
|
||||||
if result && result.clientId
|
if result && result.clientId
|
||||||
@addLoadedData(type, result.clientId, hash)
|
@addLoadedData(type, result.clientId, hash)
|
||||||
# TODO: it will be probably needed to uncomment and fix this
|
|
||||||
#@_updateAssociations(type, type.singularName(), hash)
|
|
||||||
|
|
||||||
result
|
result
|
||||||
|
|
||||||
|
@ -161,14 +158,3 @@ Travis.Store = DS.Store.extend
|
||||||
root = type.pluralName()
|
root = type.pluralName()
|
||||||
@adapter.sideload(store, type, json, root)
|
@adapter.sideload(store, type, json, root)
|
||||||
@loadMany(type, json[root])
|
@loadMany(type, json[root])
|
||||||
|
|
||||||
_updateAssociations: (type, name, data) ->
|
|
||||||
Em.get(type, 'associationsByName').forEach (key, meta) =>
|
|
||||||
if meta.kind == 'belongsTo'
|
|
||||||
id = data["#{key}_id"]
|
|
||||||
if clientId = @typeMapFor(meta.type).idToCid[id]
|
|
||||||
if parent = this.findByClientId(meta.type, clientId, id)
|
|
||||||
dataProxy = parent.get('data')
|
|
||||||
if ids = dataProxy.get("#{name}_ids")
|
|
||||||
ids.pushObject(data.id) unless data.id in ids
|
|
||||||
parent.send('didChangeData');
|
|
||||||
|
|
|
@ -7,6 +7,22 @@ DS.JSONTransforms['object'] = {
|
||||||
}
|
}
|
||||||
|
|
||||||
Travis.Serializer = DS.RESTSerializer.extend
|
Travis.Serializer = DS.RESTSerializer.extend
|
||||||
|
# The next 3 methods specify the behavior of adding records to dirty sets
|
||||||
|
# (ie. which records will be treated as dirty on the next commit). We don't
|
||||||
|
# allow to change most of the records on the client, so for anything except
|
||||||
|
# the User, we ignore dirtyiness.
|
||||||
|
dirtyRecordsForAttributeChange: (dirtySet, record) ->
|
||||||
|
if record.constructor == Travis.User
|
||||||
|
@_super.apply this, arguments
|
||||||
|
|
||||||
|
dirtyRecordsForBelongsToChange: (dirtySet, record) ->
|
||||||
|
if record.constructor == Travis.User
|
||||||
|
@_super.apply this, arguments
|
||||||
|
|
||||||
|
dirtyRecordsForHasManyChange: (dirtySet, record) ->
|
||||||
|
if record.constructor == Travis.User
|
||||||
|
@_super.apply this, arguments
|
||||||
|
|
||||||
merge: (record, serialized) ->
|
merge: (record, serialized) ->
|
||||||
data = record.get('data')
|
data = record.get('data')
|
||||||
|
|
||||||
|
@ -42,9 +58,6 @@ Travis.Serializer = DS.RESTSerializer.extend
|
||||||
record.notifyPropertyChange(name)
|
record.notifyPropertyChange(name)
|
||||||
, this)
|
, this)
|
||||||
|
|
||||||
# TODO: add test that ensures that this line is called
|
|
||||||
# it should check if record goes into loaded.saved
|
|
||||||
# state after being in materializing
|
|
||||||
record.notifyPropertyChange('data')
|
record.notifyPropertyChange('data')
|
||||||
|
|
||||||
Travis.RestAdapter = DS.RESTAdapter.extend
|
Travis.RestAdapter = DS.RESTAdapter.extend
|
||||||
|
@ -106,6 +119,7 @@ Travis.RestAdapter.map 'Travis.Repo', {
|
||||||
Travis.RestAdapter.map 'Travis.Job', {
|
Travis.RestAdapter.map 'Travis.Job', {
|
||||||
repoId: { key: 'repository_id' }
|
repoId: { key: 'repository_id' }
|
||||||
repo: { key: 'repository_id' }
|
repo: { key: 'repository_id' }
|
||||||
|
_config: { key: 'config' }
|
||||||
}
|
}
|
||||||
|
|
||||||
Travis.RestAdapter.map 'Travis.User', {
|
Travis.RestAdapter.map 'Travis.User', {
|
||||||
|
|
|
@ -59,9 +59,11 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p>
|
{{#if displayShowMoreButton}}
|
||||||
{{view view.ShowMoreButton}}
|
<p>
|
||||||
</p>
|
{{view view.ShowMoreButton}}
|
||||||
|
</p>
|
||||||
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="loading"><span>Loading</span></div>
|
<div class="loading"><span>Loading</span></div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{{#if queue.isMore}}
|
{{#if queue.isMore}}
|
||||||
<a {{action showAll this.queue target="view"}} class="show-more-jobs">
|
<a {{action showAll queue}} class="show-more-jobs">
|
||||||
{{queue.leftLength}} more jobs - show all
|
{{queue.leftLength}} more jobs - show all
|
||||||
</a>
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
<p class="description">{{description}}</p>
|
<p class="description">{{description}}</p>
|
||||||
|
|
||||||
{{view Travis.RepoShowStatsView}}
|
|
||||||
{{view Travis.RepoShowTabsView}}
|
{{view Travis.RepoShowTabsView}}
|
||||||
{{view Travis.RepoShowToolsView}}
|
{{view Travis.RepoShowToolsView}}
|
||||||
{{/with}}
|
{{/with}}
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
<ul class="github-stats">
|
|
||||||
<!-- <li class="language">
|
|
||||||
{{lastBuildLanguage}}
|
|
||||||
</li> -->
|
|
||||||
<li>
|
|
||||||
<a class="watchers" title="Watchers" {{bindAttr href="view.urlGithubWatchers"}}>
|
|
||||||
{{view.stats.watchers}}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="forks" title="Forks" {{bindAttr href="view.urlGithubNetwork"}}>
|
|
||||||
{{view.stats.forks}}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@ require 'ext/ember/namespace'
|
||||||
|
|
||||||
@Travis.reopen
|
@Travis.reopen
|
||||||
View: Em.View.extend
|
View: Em.View.extend
|
||||||
popup: ->
|
popup: (name) ->
|
||||||
@popupCloseAll()
|
@popupCloseAll()
|
||||||
name = if event.target then event.target.name else event
|
name = event?.target?.name || name
|
||||||
$("##{name}").toggleClass('display')
|
$("##{name}").toggleClass('display')
|
||||||
popupClose: ->
|
popupClose: ->
|
||||||
$(event.target).closest('.popup').removeClass('display')
|
$(event.target).closest('.popup').removeClass('display')
|
||||||
|
|
|
@ -7,11 +7,6 @@ Travis.reopen
|
||||||
@get('controller.tab') == 'pull_requests'
|
@get('controller.tab') == 'pull_requests'
|
||||||
).property('controller.tab')
|
).property('controller.tab')
|
||||||
|
|
||||||
showMore: ->
|
|
||||||
id = @get('controller.repo.id')
|
|
||||||
number = @get('builds.lastObject.number')
|
|
||||||
@get('builds').load Travis.Build.olderThanNumber(id, number)
|
|
||||||
|
|
||||||
ShowMoreButton: Em.View.extend
|
ShowMoreButton: Em.View.extend
|
||||||
tagName: 'button'
|
tagName: 'button'
|
||||||
classNameBindings: ['isLoading']
|
classNameBindings: ['isLoading']
|
||||||
|
@ -26,7 +21,7 @@ Travis.reopen
|
||||||
).property('isLoading')
|
).property('isLoading')
|
||||||
|
|
||||||
click: ->
|
click: ->
|
||||||
@get('parentView').showMore()
|
@get('controller').showMore()
|
||||||
|
|
||||||
BuildsItemView: Travis.View.extend
|
BuildsItemView: Travis.View.extend
|
||||||
tagName: 'tr'
|
tagName: 'tr'
|
||||||
|
@ -54,5 +49,5 @@ Travis.reopen
|
||||||
loadingBinding: 'controller.loading'
|
loadingBinding: 'controller.loading'
|
||||||
|
|
||||||
color: (->
|
color: (->
|
||||||
Travis.Helpers.colorForState(@get('build.state'))
|
Travis.Helpers.colorForState(@get('controller.build.state'))
|
||||||
).property('build.state')
|
).property('controller.build.state')
|
||||||
|
|
|
@ -20,6 +20,7 @@ Travis.reopen
|
||||||
console.log 'log view: did insert'
|
console.log 'log view: did insert'
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
@createEngine()
|
@createEngine()
|
||||||
|
@lineNumberDidChange()
|
||||||
|
|
||||||
willDestroyElement: ->
|
willDestroyElement: ->
|
||||||
console.log 'log view: will destroy'
|
console.log 'log view: will destroy'
|
||||||
|
@ -67,7 +68,7 @@ Travis.reopen
|
||||||
Travis.Urls.plainTextLog(id) if id = @get('log.job.id')
|
Travis.Urls.plainTextLog(id) if id = @get('log.job.id')
|
||||||
).property('job.log.id')
|
).property('job.log.id')
|
||||||
|
|
||||||
toggleTailing: (event) ->
|
toggleTailing: ->
|
||||||
Travis.tailing.toggle()
|
Travis.tailing.toggle()
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
|
||||||
|
@ -75,7 +76,7 @@ Travis.reopen
|
||||||
$('#log').on 'mouseenter', 'a', ->
|
$('#log').on 'mouseenter', 'a', ->
|
||||||
$(this).attr('href', '#L' + ($(this.parentNode).prevAll('p').length + 1))
|
$(this).attr('href', '#L' + ($(this.parentNode).prevAll('p').length + 1))
|
||||||
|
|
||||||
click: (event) ->
|
click: ->
|
||||||
if (href = $(event.target).attr('href')) && matches = href?.match(/#L(\d+)$/)
|
if (href = $(event.target).attr('href')) && matches = href?.match(/#L(\d+)$/)
|
||||||
@lineNumberClicked(matches[1])
|
@lineNumberClicked(matches[1])
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
@ -101,7 +102,7 @@ Log.Scroll.prototype = $.extend new Log.Listener,
|
||||||
@tryScroll() if @number
|
@tryScroll() if @number
|
||||||
|
|
||||||
tryScroll: ->
|
tryScroll: ->
|
||||||
if element = $("#log p:nth-child(#{@number})")
|
if (element = $("#log p:nth-child(#{@number})")) && element.length
|
||||||
$('#main').scrollTop(0)
|
$('#main').scrollTop(0)
|
||||||
$('html, body').scrollTop(element.offset()?.top) # weird, html works in chrome, body in firefox
|
$('html, body').scrollTop(element.offset()?.top) # weird, html works in chrome, body in firefox
|
||||||
@highlight(element)
|
@highlight(element)
|
||||||
|
|
|
@ -60,6 +60,7 @@ Travis.reopen
|
||||||
{ key: 'pl', name: 'Polski' }
|
{ key: 'pl', name: 'Polski' }
|
||||||
{ key: 'pt-BR', name: 'Português brasileiro' }
|
{ key: 'pt-BR', name: 'Português brasileiro' }
|
||||||
{ key: 'ru', name: 'Русский' }
|
{ key: 'ru', name: 'Русский' }
|
||||||
|
{ key: 'de', name: 'Deutsch' }
|
||||||
]
|
]
|
||||||
).property()
|
).property()
|
||||||
|
|
||||||
|
|
|
@ -12,19 +12,6 @@ Travis.reopen
|
||||||
@get('repos.isLoaded') && @get('repos.length') == 0
|
@get('repos.isLoaded') && @get('repos.length') == 0
|
||||||
).property('repos.isLoaded', 'repos.length')
|
).property('repos.isLoaded', 'repos.length')
|
||||||
|
|
||||||
RepoShowStatsView: Travis.View.extend
|
|
||||||
templateName: 'repos/show/stats'
|
|
||||||
repoBinding: 'parentView.repo'
|
|
||||||
statsBinding: 'repo.stats'
|
|
||||||
|
|
||||||
urlGithubWatchers: (->
|
|
||||||
Travis.Urls.githubWatchers(@get('repo.slug'))
|
|
||||||
).property('repo.slug'),
|
|
||||||
|
|
||||||
urlGithubNetwork: (->
|
|
||||||
Travis.Urls.githubNetwork(@get('repo.slug'))
|
|
||||||
).property('repo.slug'),
|
|
||||||
|
|
||||||
ReposEmptyView: Travis.View.extend
|
ReposEmptyView: Travis.View.extend
|
||||||
template: ''
|
template: ''
|
||||||
|
|
||||||
|
@ -131,11 +118,10 @@ Travis.reopen
|
||||||
|
|
||||||
regenerateKey: ->
|
regenerateKey: ->
|
||||||
@popupCloseAll()
|
@popupCloseAll()
|
||||||
self = this
|
|
||||||
|
|
||||||
@get('repo').regenerateKey
|
(@get('repo.content') || @get('repo')).regenerateKey
|
||||||
success: ->
|
success: =>
|
||||||
self.popup('regeneration-success')
|
@popup('regeneration-success')
|
||||||
error: ->
|
error: ->
|
||||||
Travis.app.router.flashController.loadFlashes([{ error: 'Travis encountered an error while trying to regenerate the key, please try again.'}])
|
Travis.app.router.flashController.loadFlashes([{ error: 'Travis encountered an error while trying to regenerate the key, please try again.'}])
|
||||||
|
|
||||||
|
|
|
@ -26,10 +26,6 @@
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
@set 'controller', @get('controller').container.lookup('controller:queues')
|
@set 'controller', @get('controller').container.lookup('controller:queues')
|
||||||
|
|
||||||
showAll: ->
|
|
||||||
queue = event.context
|
|
||||||
queue.showAll()
|
|
||||||
|
|
||||||
RunningJobsView: Em.View.extend
|
RunningJobsView: Em.View.extend
|
||||||
templateName: 'jobs/running'
|
templateName: 'jobs/running'
|
||||||
elementId: 'running-jobs'
|
elementId: 'running-jobs'
|
||||||
|
|
|
@ -34,13 +34,13 @@ Travis.ajax = Em.Object.create
|
||||||
success = options.success || (->)
|
success = options.success || (->)
|
||||||
options.success = (data) =>
|
options.success = (data) =>
|
||||||
Travis.app.router.flashController.loadFlashes(data.flash) if Travis.app?.router && data.flash
|
Travis.app.router.flashController.loadFlashes(data.flash) if Travis.app?.router && data.flash
|
||||||
delete data.flash
|
delete data.flash if data?
|
||||||
success.apply(this, arguments)
|
success.apply(this, arguments)
|
||||||
|
|
||||||
error = options.error || (->)
|
error = options.error || (->)
|
||||||
options.error = (data) =>
|
options.error = (data) =>
|
||||||
Travis.app.router.flashController.pushObject(data.flash) if data.flash
|
Travis.app.router.flashController.pushObject(data.flash) if data.flash
|
||||||
delete data.flash
|
delete data.flash if data?
|
||||||
error.apply(this, arguments)
|
error.apply(this, arguments)
|
||||||
|
|
||||||
$.ajax($.extend(options, Travis.ajax.DEFAULT_OPTIONS))
|
$.ajax($.extend(options, Travis.ajax.DEFAULT_OPTIONS))
|
||||||
|
|
5
assets/scripts/lib/travis/line_number_parser.coffee
Normal file
5
assets/scripts/lib/travis/line_number_parser.coffee
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Travis.LineNumberParser = Ember.Mixin.create
|
||||||
|
fetchLineNumber: ->
|
||||||
|
url = @container.lookup('router:main').get('url')
|
||||||
|
if match = url.match(/#L(\d+)$/)
|
||||||
|
match[1]
|
|
@ -18,7 +18,9 @@ describe 'Travis.Model - incomplete', ->
|
||||||
niceBar: DS.belongsTo('Travis.Bar')
|
niceBar: DS.belongsTo('Travis.Bar')
|
||||||
veryNiceBar: DS.belongsTo('Travis.Bar')
|
veryNiceBar: DS.belongsTo('Travis.Bar')
|
||||||
|
|
||||||
Travis.Bar = Travis.Model.extend()
|
Travis.Bar = Travis.Model.extend
|
||||||
|
name: DS.attr('string')
|
||||||
|
foos: DS.hasMany('Travis.Foo')
|
||||||
|
|
||||||
adapterClass = Travis.RestAdapter.extend()
|
adapterClass = Travis.RestAdapter.extend()
|
||||||
adapterClass.map 'Travis.Foo',
|
adapterClass.map 'Travis.Foo',
|
||||||
|
@ -33,6 +35,22 @@ describe 'Travis.Model - incomplete', ->
|
||||||
delete Travis.Bar
|
delete Travis.Bar
|
||||||
store.destroy()
|
store.destroy()
|
||||||
|
|
||||||
|
it 'allows to merge many times', ->
|
||||||
|
store.load(Travis.Bar, { id: '1', foo_ids: ['1', '2'] }, { id: '1' })
|
||||||
|
store.load(Travis.Foo, { id: '1', bar_id: '1' }, { id: '1' })
|
||||||
|
store.load(Travis.Foo, { id: '2', bar_id: '1' }, { id: '2' })
|
||||||
|
|
||||||
|
record = store.find(Travis.Bar, 1)
|
||||||
|
store.find(Travis.Foo, 1)
|
||||||
|
store.find(Travis.Foo, 2)
|
||||||
|
|
||||||
|
record.get('foos')
|
||||||
|
store.loadIncomplete(Travis.Bar, id: 1, name: 'foo')
|
||||||
|
store.loadIncomplete(Travis.Bar, id: 1, name: 'bar')
|
||||||
|
|
||||||
|
expect( record.get('foos.length') ).toEqual(2)
|
||||||
|
expect( record.get('name') ).toEqual('bar')
|
||||||
|
|
||||||
describe 'with incomplete record with loaded associations', ->
|
describe 'with incomplete record with loaded associations', ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
attrs = {
|
attrs = {
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
require 'ext/jquery'
|
require 'ext/jquery'
|
||||||
require 'ext/ember/namespace'
|
require 'ext/ember/namespace'
|
||||||
|
|
||||||
|
window.bootstrapTravis = ->
|
||||||
|
Travis.advanceReadiness()
|
||||||
|
|
||||||
# TODO: how can I put it in Travis namespace and use immediately?
|
# TODO: how can I put it in Travis namespace and use immediately?
|
||||||
Storage = Em.Object.extend
|
Storage = Em.Object.extend
|
||||||
init: ->
|
init: ->
|
||||||
|
@ -43,7 +46,6 @@ window.Travis = Em.Application.extend(Ember.Evented,
|
||||||
|
|
||||||
signOut: ->
|
signOut: ->
|
||||||
@get('auth').signOut()
|
@get('auth').signOut()
|
||||||
#@get('router').send('afterSignOut')
|
|
||||||
|
|
||||||
receive: ->
|
receive: ->
|
||||||
@store.receive.apply(@store, arguments)
|
@store.receive.apply(@store, arguments)
|
||||||
|
@ -69,7 +71,6 @@ window.Travis = Em.Application.extend(Ember.Evented,
|
||||||
location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!'
|
location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!'
|
||||||
I18n.fallbacks = true
|
I18n.fallbacks = true
|
||||||
@setLocale 'locale', @get('defaultLocale')
|
@setLocale 'locale', @get('defaultLocale')
|
||||||
@autoSignIn() unless @get('signedIn')
|
|
||||||
).create()
|
).create()
|
||||||
|
|
||||||
Travis.deferReadiness()
|
Travis.deferReadiness()
|
||||||
|
|
161
locales/de.yml
Normal file
161
locales/de.yml
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
de:
|
||||||
|
build:
|
||||||
|
duration: Dauer
|
||||||
|
finished_at: Fertig
|
||||||
|
job: Aufgabe
|
||||||
|
builds:
|
||||||
|
allowed_failures: Erlaubte Fehlschläge
|
||||||
|
author: Autor
|
||||||
|
branch:
|
||||||
|
build_matrix: Build-Matrix
|
||||||
|
commit:
|
||||||
|
commiter:
|
||||||
|
committer:
|
||||||
|
compare: Vergleich
|
||||||
|
config: Konfiguration
|
||||||
|
duration: Dauer
|
||||||
|
finished_at: Fertig
|
||||||
|
message: Nachricht
|
||||||
|
messages:
|
||||||
|
sponsored_by: Dieser Testablauf lief auf einem Arbeiter-Rechner gesponsert von
|
||||||
|
name:
|
||||||
|
pr:
|
||||||
|
started_at: Läuft
|
||||||
|
state: Status
|
||||||
|
datetime:
|
||||||
|
distance_in_words:
|
||||||
|
hours_exact:
|
||||||
|
one: ! '%{count} Stunde'
|
||||||
|
other: ! '%{count} Stunden'
|
||||||
|
minutes_exact:
|
||||||
|
one: ! '%{count} Minute'
|
||||||
|
other: ! '%{count} Minuten'
|
||||||
|
seconds_exact:
|
||||||
|
one: ! '%{count} Sekunde'
|
||||||
|
other: ! '%{count} Sekunden'
|
||||||
|
errors:
|
||||||
|
messages:
|
||||||
|
already_confirmed: wurde bereits bestätigt
|
||||||
|
not_found: nicht gefunden
|
||||||
|
not_locked: war nicht gesperrt
|
||||||
|
home:
|
||||||
|
name: Startseite
|
||||||
|
jobs:
|
||||||
|
allowed_failures: Erlaubte Fehlschläge
|
||||||
|
author: Autor
|
||||||
|
branch:
|
||||||
|
build_matrix: Build-Matrix
|
||||||
|
commit:
|
||||||
|
committer:
|
||||||
|
compare: Vergleich
|
||||||
|
config: Konfiguration
|
||||||
|
duration: Dauer
|
||||||
|
finished_at: Fertig
|
||||||
|
message: Nachricht
|
||||||
|
messages:
|
||||||
|
sponsored_by: Dieser Testablauf lief auf einem Arbeiter-Rechner gesponsert von
|
||||||
|
sponsored_by: Gesponsert von
|
||||||
|
started_at: Läuft
|
||||||
|
state: Status
|
||||||
|
layouts:
|
||||||
|
about:
|
||||||
|
alpha: Dieses Zeugs ist Alpha!
|
||||||
|
join: Komm dazu und helfe!
|
||||||
|
mailing_list: Mailingliste
|
||||||
|
messages:
|
||||||
|
alpha: Bitte empfinde das <strong>nicht</strong> als stabilen Dienst. Wir sind immer noch weit davon entfernt! Mehr Informationen <a href='https://github.com/travis-ci'>hier</a>.
|
||||||
|
repository:
|
||||||
|
twitter:
|
||||||
|
application:
|
||||||
|
fork_me: Auf GitHub forken
|
||||||
|
my_repositories: Meine Repositories
|
||||||
|
recent: Aktuell
|
||||||
|
search: Suche
|
||||||
|
sponsers: Sponsoren
|
||||||
|
sponsors_link: Schaue alle unsere tollen Sponsoren an →
|
||||||
|
mobile:
|
||||||
|
author: Autor
|
||||||
|
build:
|
||||||
|
build_matrix: Build-Matrix
|
||||||
|
commit:
|
||||||
|
committer:
|
||||||
|
compare: Vergleich
|
||||||
|
config: Konfiguration
|
||||||
|
duration: Dauer
|
||||||
|
finished_at: Fertig
|
||||||
|
job: Aufgabe
|
||||||
|
log: Log
|
||||||
|
top:
|
||||||
|
accounts: Accounts
|
||||||
|
admin: Admin
|
||||||
|
blog: Blog
|
||||||
|
docs: Dokumentation
|
||||||
|
github_login: Mit GitHub anmelden
|
||||||
|
home: Startseite
|
||||||
|
profile: Profil
|
||||||
|
sign_out: Abmelden
|
||||||
|
signing_in: Anmelden...
|
||||||
|
stats: Statistik
|
||||||
|
locales:
|
||||||
|
ca:
|
||||||
|
de: Deutsch
|
||||||
|
en: English
|
||||||
|
es: Español
|
||||||
|
fr: Français
|
||||||
|
ja: 日本語
|
||||||
|
nb: Norsk Bokmål
|
||||||
|
nl: Nederlands
|
||||||
|
pl: Polski
|
||||||
|
pt-BR: português brasileiro
|
||||||
|
ru: Русский
|
||||||
|
no_job: Es gibt keine Aufgaben
|
||||||
|
profiles:
|
||||||
|
show:
|
||||||
|
email: E-Mail
|
||||||
|
github:
|
||||||
|
locale: Sprache
|
||||||
|
message:
|
||||||
|
config: Wie du eigene Build-Optionen konfigurieren kannst
|
||||||
|
your_repos: Lege die Schalter unten um, um den Travis Dienst-Hook für deine Projekte zu aktivieren, dann pushe zu GitHub.<br />\n Um gegen mehrere Rubine zu testen, sehe
|
||||||
|
messages:
|
||||||
|
notice: Bitte lese dir unser <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Getting Started-Handbuch</a> durch, um loszulegen.\\n <small>Es dauert nur ein paar Minuten.</small>
|
||||||
|
token:
|
||||||
|
update:
|
||||||
|
update_locale: Update
|
||||||
|
your_locale: Deine Sprache
|
||||||
|
your_repos: Deine Repositories
|
||||||
|
queue: Warteschlange
|
||||||
|
repositories:
|
||||||
|
asciidoc:
|
||||||
|
branch:
|
||||||
|
commit:
|
||||||
|
duration: Dauer
|
||||||
|
finished_at: Fertig
|
||||||
|
image_url: Bild-URL
|
||||||
|
markdown:
|
||||||
|
message: Nachricht
|
||||||
|
rdoc:
|
||||||
|
started_at: Läuft
|
||||||
|
tabs:
|
||||||
|
branches: Branch-Zusammenfassung
|
||||||
|
build:
|
||||||
|
build_history: Build-Geschichte
|
||||||
|
current: Aktuell
|
||||||
|
job: Aufgabe
|
||||||
|
pull_requests:
|
||||||
|
test:
|
||||||
|
textile:
|
||||||
|
repository:
|
||||||
|
duration: Dauer
|
||||||
|
statistics:
|
||||||
|
index:
|
||||||
|
build_count: Build-Anzahl
|
||||||
|
count: Anzahl
|
||||||
|
last_month: letzter Monat
|
||||||
|
repo_growth: Repository-Zuwachs
|
||||||
|
total_builds: Alle Builds
|
||||||
|
total_projects: Alle Projekte/Repositories
|
||||||
|
user:
|
||||||
|
failure: Fehlschlag
|
||||||
|
signed_out: Abgemeldet
|
||||||
|
workers: Arbeiter
|
|
@ -9,6 +9,7 @@ en:
|
||||||
branch: Branch
|
branch: Branch
|
||||||
build_matrix: Build Matrix
|
build_matrix: Build Matrix
|
||||||
commit: Commit
|
commit: Commit
|
||||||
|
commiter: commiter
|
||||||
committer: Committer
|
committer: Committer
|
||||||
compare: Compare
|
compare: Compare
|
||||||
config: Config
|
config: Config
|
||||||
|
@ -97,6 +98,7 @@ en:
|
||||||
stats: Stats
|
stats: Stats
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ es:
|
||||||
branch: Rama
|
branch: Rama
|
||||||
build_matrix: Matriz de Builds
|
build_matrix: Matriz de Builds
|
||||||
commit: Commit
|
commit: Commit
|
||||||
|
commiter:
|
||||||
committer: Committer
|
committer: Committer
|
||||||
compare: Comparar
|
compare: Comparar
|
||||||
config: Configuración
|
config: Configuración
|
||||||
|
@ -97,6 +98,7 @@ es:
|
||||||
stats: Estadísticas
|
stats: Estadísticas
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ fr:
|
||||||
branch: Branche
|
branch: Branche
|
||||||
build_matrix: Table des versions
|
build_matrix: Table des versions
|
||||||
commit: Commit
|
commit: Commit
|
||||||
|
commiter:
|
||||||
committer: Committeur
|
committer: Committeur
|
||||||
compare: Comparer
|
compare: Comparer
|
||||||
config: Config
|
config: Config
|
||||||
|
@ -97,6 +98,7 @@ fr:
|
||||||
stats: Statistiques
|
stats: Statistiques
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ ja:
|
||||||
branch: ブランチ
|
branch: ブランチ
|
||||||
build_matrix: 失敗許容範囲外
|
build_matrix: 失敗許容範囲外
|
||||||
commit: コミット
|
commit: コミット
|
||||||
|
commiter:
|
||||||
committer: コミット者
|
committer: コミット者
|
||||||
compare: 比較
|
compare: 比較
|
||||||
config: 設定
|
config: 設定
|
||||||
|
@ -91,6 +92,7 @@ ja:
|
||||||
stats: 統計
|
stats: 統計
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ nb:
|
||||||
branch: Gren
|
branch: Gren
|
||||||
build_matrix: Jobbmatrise
|
build_matrix: Jobbmatrise
|
||||||
commit: Innsending
|
commit: Innsending
|
||||||
|
commiter:
|
||||||
committer: Innsender
|
committer: Innsender
|
||||||
compare: Sammenlign
|
compare: Sammenlign
|
||||||
config: Oppsett
|
config: Oppsett
|
||||||
|
@ -97,6 +98,7 @@ nb:
|
||||||
stats: Statistikk
|
stats: Statistikk
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ nl:
|
||||||
branch: Tak
|
branch: Tak
|
||||||
build_matrix: Bouw matrix
|
build_matrix: Bouw matrix
|
||||||
commit: Commit
|
commit: Commit
|
||||||
|
commiter:
|
||||||
committer: Committer
|
committer: Committer
|
||||||
compare: Vergelijk
|
compare: Vergelijk
|
||||||
config: Configuratie
|
config: Configuratie
|
||||||
|
@ -97,6 +98,7 @@ nl:
|
||||||
stats: Statistieken
|
stats: Statistieken
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ pl:
|
||||||
branch: Gałąź
|
branch: Gałąź
|
||||||
build_matrix: Macierz Buildów
|
build_matrix: Macierz Buildów
|
||||||
commit: Commit
|
commit: Commit
|
||||||
|
commiter:
|
||||||
committer: Komitujący
|
committer: Komitujący
|
||||||
compare: Porównanie
|
compare: Porównanie
|
||||||
config: Konfiguracja
|
config: Konfiguracja
|
||||||
|
@ -100,6 +101,7 @@ pl:
|
||||||
stats: Statystki
|
stats: Statystki
|
||||||
locales:
|
locales:
|
||||||
ca: Čeština
|
ca: Čeština
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ pt-BR:
|
||||||
branch: Branch
|
branch: Branch
|
||||||
build_matrix: Matriz de Build
|
build_matrix: Matriz de Build
|
||||||
commit: Commit
|
commit: Commit
|
||||||
|
commiter:
|
||||||
committer: Committer
|
committer: Committer
|
||||||
compare: Comparar
|
compare: Comparar
|
||||||
config: Config
|
config: Config
|
||||||
|
@ -97,6 +98,7 @@ pt-BR:
|
||||||
stats: Estatísticas
|
stats: Estatísticas
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
|
|
@ -9,6 +9,7 @@ ru:
|
||||||
branch: Ветка
|
branch: Ветка
|
||||||
build_matrix: Матрица
|
build_matrix: Матрица
|
||||||
commit: Коммит
|
commit: Коммит
|
||||||
|
commiter:
|
||||||
committer: Коммитер
|
committer: Коммитер
|
||||||
compare: Дифф
|
compare: Дифф
|
||||||
config: Конфигурация
|
config: Конфигурация
|
||||||
|
@ -18,7 +19,7 @@ ru:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Эта серия тестов была запущена на машине, спонсируемой
|
sponsored_by: Эта серия тестов была запущена на машине, спонсируемой
|
||||||
name: Билд
|
name: Билд
|
||||||
pr:
|
pr: PR
|
||||||
started_at: Начало
|
started_at: Начало
|
||||||
state: состояние
|
state: состояние
|
||||||
datetime:
|
datetime:
|
||||||
|
@ -103,6 +104,7 @@ ru:
|
||||||
stats: Статистика
|
stats: Статистика
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
de: Deutsch
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
@ -162,6 +164,6 @@ ru:
|
||||||
total_builds: Всего билдов
|
total_builds: Всего билдов
|
||||||
total_projects: Всего проектов/репозиториев
|
total_projects: Всего проектов/репозиториев
|
||||||
user:
|
user:
|
||||||
failure:
|
failure: сбой
|
||||||
signed_out:
|
signed_out: Вышел
|
||||||
workers: Машины
|
workers: Машины
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<script src="/scripts/app.js"></script>
|
<script src="/scripts/app.js"></script>
|
||||||
<script>
|
<script>
|
||||||
minispade.require('travis')
|
minispade.require('travis')
|
||||||
Travis.advanceReadiness()
|
bootstrapTravis()
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body id="home"></body>
|
<body id="home"></body>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user