travis-web/assets/scripts/app/controllers/ssh-key.coffee
2015-01-30 15:43:23 +01:00

64 lines
1.5 KiB
CoffeeScript

require 'utils/validations'
Validations = Travis.Validations
Controller = Ember.ObjectController.extend Validations,
isEditing: false
isSaving: false
isDeleting: false
defaultKey: null
needs: ['repo']
repo: Ember.computed.alias('controllers.repo.repo')
validates:
value: ['presence']
reset: ->
@set('isEditing', false)
actions:
add: ->
model = Travis.SshKey.create(id: @get('repo.id'))
@set('model', model)
@set('isEditing', true)
save: ->
return if @get('isSaving')
@set('isSaving', true)
if @isValid()
@get('model').save().then =>
@set('isEditing', false)
@set('isSaving', false)
, (xhr) =>
@set('isSaving', false)
if xhr.status == 422
@addErrorsFromResponse(JSON.parse(xhr.response)['errors'])
else
@set('isSaving', false)
delete: ->
return if @get('isDeleting')
@set('isDeleting', true)
deletingDone = => @set('isDeleting', false)
# because of the bug in ember model reference is not cleared after
# deleting the record, so I'm doing it manually here
delete @get('model').constructor._referenceCache[parseInt(@get('model.id'))]
@get('model').deleteRecord().then(deletingDone, deletingDone).then =>
@set('model', null)
cancel: ->
if model = @get('model')
if model.get('isNew')
@set('model', null)
@set('isEditing', false)
edit: ->
@set('isEditing', true)
Travis.SshKeyController = Controller