class @Machine

constructor: (data, @el) ->
  @host = data.host
  @pid = data.pid
  @jobs = data.jobs
  @status = @getStatus()
  @resetFrozenTimeout()

getStatus: ->
  if @jobs == 0 then "Idle" else "Working"

resetFrozenTimeout: ->
  clearTimeout(@frozen)
  clearTimeout(@dead)
  @frozen = setTimeout(@markAsFrozen, 6000)

markAsFrozen: =>
  @status = "Frozen"
  @render()
  @dead = setTimeout(@markAsDead, 6000)

markAsDead: =>
  @status = "Dead"
  @render()

markAsAlive: ->
  @status = @getStatus()
  @resetFrozenTimeout()

render: ->
  row = @el.find("tr[data-pid='#{@pid}']")
  template = Templates.machine(pid: @pid, host: @host, status: @status, jobs: @jobs)

  if row.length == 0
    @el.append(template)
  else
    row.replaceWith(template)