68 lines
1.7 KiB
CoffeeScript
68 lines
1.7 KiB
CoffeeScript
`import Ember from 'ember'`
|
|
`import Validations from 'travis/utils/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: ->
|
|
id = @get('repo.id')
|
|
model = @store.recordForId('sshKey', id)
|
|
if model.get('currentState.stateName') == 'root.empty'
|
|
@store.dematerializeRecord(model)
|
|
|
|
model = @store.createRecord('sshKey', id: 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)
|
|
, (error) =>
|
|
@set('isSaving', false)
|
|
if error.errors
|
|
@addErrorsFromResponse(error.errors)
|
|
else
|
|
@set('isSaving', false)
|
|
|
|
delete: ->
|
|
return if @get('isDeleting')
|
|
@set('isDeleting', true)
|
|
|
|
deletingDone = => @set('isDeleting', false)
|
|
|
|
@get('model').deleteRecord()
|
|
@get('model').save().then(deletingDone, deletingDone).then =>
|
|
@set('model', null)
|
|
|
|
cancel: ->
|
|
if model = @get('model')
|
|
if model.get('currentState.stateName') == 'root.empty' ||
|
|
model.get('currentState.stateName').indexOf('root.loaded.created') != -1
|
|
@store.dematerializeRecord(model)
|
|
|
|
@set('model', null)
|
|
@set('isEditing', false)
|
|
|
|
edit: ->
|
|
@set('isEditing', true)
|
|
|
|
`export default Controller`
|