travis-web/assets/scripts/app/models/worker.coffee
Piotr Sarnacki 823c8441be Change EmberData properties/relationships into EmberModel versions
DS.attr -> Ember.attr
DS.belongsTo -> Ember.belongsTo
DS.hasMany -> Ember.hasMany
2013-07-31 13:29:55 +02:00

62 lines
1.5 KiB
CoffeeScript

require 'travis/model'
@Travis.Worker = Travis.Model.extend
state: Ember.attr('string')
name: Ember.attr('string')
host: Ember.attr('string')
payload: Ember.attr('object')
number: (->
@get('name').match(/\d+$/)[0]
).property('name')
isWorking: (->
@get('state') == 'working'
).property('state')
jobId: (->
@get('payload.build.id') || @get('payload.job.id')
).property('payload.job.id', 'payload.build.id')
job: (->
Travis.Job.find @get('job_id')
).property('jobId')
jobNumber: (->
@get('payload.job.number')
).property('jobNumber')
repo: (->
id = @get('payload.repository.id') || @get('payload.repo.id')
slug = @get('repoSlug')
@get('store').loadIncomplete(Travis.Repo, {
id: id,
slug: slug
}, { skipIfExists: true })
Travis.Repo.find(@get('payload.repository.id') || @get('payload.repo.id'))
).property('payload.repository.id', 'payload.repo.id')
repoSlug: (->
@get('payload.repo.slug') || @get('payload.repository.slug')
).property('payload.repo.slug', 'payload.repository.slug')
repoId: (->
@get('payload.repo.id') || @get('payload.repository.id')
).property('payload.repo.id', 'payload.repository.id')
nameForSort: (->
if name = @get('name')
match = name.match /(.*?)-(\d+)/
if match
name = match[1]
id = match[2].toString()
if id.length < 2
id = "00#{id}"
else if id.length < 3
id = "0#{id}"
"#{name}-#{id}"
).property('name')