travis-web/assets/javascripts/app/models/worker.coffee
Piotr Sarnacki 8b25160a62 Fix specs and a bug that they've catched
Specs needed to be updated to handle new way of receiving methods.
What's more they revealed a subtle bug that was present after changing
merge function to fetch record if it's not present.

After calling merge, store calls method to update associations. This
may be not possible if clientId for new record is not correctly set.
2012-08-12 02:26:45 +02:00

41 lines
1.1 KiB
CoffeeScript

require 'travis/model'
@Travis.Worker = Travis.Model.extend
state: DS.attr('string')
name: DS.attr('string')
host: DS.attr('string')
lastSeenAt: DS.attr('string')
payload: (->
@get('data.payload')
).property('data.payload')
number: (->
@get('name').match(/\d+$/)[0]
).property('name')
display: (->
name = @get('name')
state = @get('state')
payload = @get('payload')
if name
name = name.replace('travis-', '')
if state == 'working' && payload != undefined
repo = if payload.repository then $.truncate(payload.repository.slug, 18) else undefined
number = if payload.build and payload.build.number then ' #' + payload.build.number else ''
state = if repo then repo + number else state
name + ': ' + state
).property('state', 'name', 'payload')
urlJob: (->
"/#{@get('repository')}/jobs/#{@get('job_id')}" if @get('state') == 'working'
).property('repository', 'job_id', 'state')
repository: (->
@get('payload.repository.slug')
).property('payload.repository.slug')
job_id: (->
@get('payload.job.id')
).property('payload.job.id')