From 767e49d95a2274413d569e72072bc1de2074f51b Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki <drogus@gmail.com> Date: Tue, 10 Feb 2015 11:53:14 +0100 Subject: [PATCH 1/4] Fix sshkey form --- app/adapters/ssh-key.coffee | 12 +++++++++- app/controllers/ssh-key.coffee | 32 +++++++++++++++---------- app/helpers/travis-errors.coffee | 3 ++- app/templates/helpers/travis-errors.hbs | 2 +- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/app/adapters/ssh-key.coffee b/app/adapters/ssh-key.coffee index 68c47949..f4bad312 100644 --- a/app/adapters/ssh-key.coffee +++ b/app/adapters/ssh-key.coffee @@ -4,11 +4,21 @@ Adapter = ApplicationAdapter.extend namespace: 'settings' + find: (store, type, id, record) -> + @ajax(this.urlPrefix() + '/ssh_key/' + id, 'GET') + + deleteRecord: (store, type, record) -> + id = Ember.get(record, 'id') + + @ajax(this.urlPrefix() + '/ssh_key/' + id, "DELETE"); + createRecord: (store, type, record) -> data = {}; serializer = store.serializerFor(type.typeKey); serializer.serializeIntoHash(data, type, record, { includeId: true }); - this.ajax(this.buildURL(type.typeKey, null, record), "POST", { data: data }) + id = Ember.get(record, 'id') + + this.ajax(this.urlPrefix() + '/ssh_key/' + id, "PATCH", { data: data }) `export default Adapter` diff --git a/app/controllers/ssh-key.coffee b/app/controllers/ssh-key.coffee index d2b32f54..964b4ecb 100644 --- a/app/controllers/ssh-key.coffee +++ b/app/controllers/ssh-key.coffee @@ -18,7 +18,12 @@ Controller = Ember.ObjectController.extend Validations, actions: add: -> - model = Travis.SshKey.create(id: @get('repo.id')) + 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) @@ -30,10 +35,10 @@ Controller = Ember.ObjectController.extend Validations, @get('model').save().then => @set('isEditing', false) @set('isSaving', false) - , (xhr) => + , (error) => @set('isSaving', false) - if xhr.status == 422 - @addErrorsFromResponse(JSON.parse(xhr.response)['errors']) + if error.errors + @addErrorsFromResponse(error.errors) else @set('isSaving', false) @@ -43,18 +48,19 @@ Controller = Ember.ObjectController.extend Validations, 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 => + @get('model').deleteRecord() + @get('model').save().then(deletingDone, deletingDone).then => @set('model', null) cancel: -> - if model = @get('model') - if model.get('isNew') - @set('model', null) - @set('isEditing', false) + model = @get('model') + console.log model.get('currentState.stateName') + if model.get('currentState.stateName') == 'root.empty' || + model.get('currentState.stateName') == 'root.loaded.created.uncommitted' + @store.dematerializeRecord(model) + + @set('model', null) + @set('isEditing', false) edit: -> @set('isEditing', true) diff --git a/app/helpers/travis-errors.coffee b/app/helpers/travis-errors.coffee index 34763a00..030cb535 100644 --- a/app/helpers/travis-errors.coffee +++ b/app/helpers/travis-errors.coffee @@ -7,11 +7,12 @@ ErrorsView = Ember.View.extend classNameBindings: ['codes', 'show'] codes: (-> @get('errors').mapBy('code') - ).property('@errors') + ).property('@errors', 'errors.length') show: Ember.computed.notEmpty('errors.[]') fn = (name, options) -> errors = @get('errors').for(name) + window[name + 'Errors'] = errors view = ErrorsView.create( controller: this errors: errors diff --git a/app/templates/helpers/travis-errors.hbs b/app/templates/helpers/travis-errors.hbs index 741f5583..1f8c68c6 100644 --- a/app/templates/helpers/travis-errors.hbs +++ b/app/templates/helpers/travis-errors.hbs @@ -1 +1 @@ -{{#each erorr in view.errors}}{{error.message}}{{/each}} +{{#each error in view.errors}}{{error.message}}{{/each}} From 81911777dab84efabf640321cff20a74bc936e1c Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki <drogus@gmail.com> Date: Tue, 10 Feb 2015 11:54:37 +0100 Subject: [PATCH 2/4] dematerialize record in any kind of created states in ssh key --- app/controllers/ssh-key.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/ssh-key.coffee b/app/controllers/ssh-key.coffee index 964b4ecb..41e29583 100644 --- a/app/controllers/ssh-key.coffee +++ b/app/controllers/ssh-key.coffee @@ -56,7 +56,7 @@ Controller = Ember.ObjectController.extend Validations, model = @get('model') console.log model.get('currentState.stateName') if model.get('currentState.stateName') == 'root.empty' || - model.get('currentState.stateName') == 'root.loaded.created.uncommitted' + model.get('currentState.stateName').indexOf('root.loaded.created') != -1 @store.dematerializeRecord(model) @set('model', null) From 15415999c2981e88b11477c748b0c2426d9ac7e4 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki <drogus@gmail.com> Date: Tue, 10 Feb 2015 11:56:33 +0100 Subject: [PATCH 3/4] check if model exists when cancelling ssh key --- app/controllers/ssh-key.coffee | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/controllers/ssh-key.coffee b/app/controllers/ssh-key.coffee index 41e29583..152ba3d9 100644 --- a/app/controllers/ssh-key.coffee +++ b/app/controllers/ssh-key.coffee @@ -53,11 +53,10 @@ Controller = Ember.ObjectController.extend Validations, @set('model', null) cancel: -> - model = @get('model') - console.log model.get('currentState.stateName') - if model.get('currentState.stateName') == 'root.empty' || - model.get('currentState.stateName').indexOf('root.loaded.created') != -1 - @store.dematerializeRecord(model) + 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) From 411401fd15dbf34092b532e3bcc81da11f06417b Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki <drogus@gmail.com> Date: Tue, 10 Feb 2015 14:02:29 +0100 Subject: [PATCH 4/4] Bring back disabled class for repo actions --- app/templates/repos/show/actions.hbs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/templates/repos/show/actions.hbs b/app/templates/repos/show/actions.hbs index 41cc5609..c262912b 100644 --- a/app/templates/repos/show/actions.hbs +++ b/app/templates/repos/show/actions.hbs @@ -2,12 +2,14 @@ <ul> {{#if view.displayCancelBuild}} <li class="icon cancel-build" title="Cancel Build"> - <a href="#" {{action "cancelBuild" target=view}}></a> + <a href="#" {{action "cancelBuild" target=view}} + {{bind-attr class="view.canCancelBuild::disabled"}}></a> </li> {{/if}} {{#if view.displayCancelJob}} <li class="icon cancel-job" title="Cancel Job"> - <a href="#" {{action "cancelJob" target=view}}></a> + <a href="#" {{action "cancelJob" target=view}} + {{bind-attr class="view.canCancelJob::disabled"}}></a> </li> {{/if}} {{#if view.displayRequeueBuild}} @@ -15,7 +17,8 @@ {{#if view.requeueing}} <span class="icon loading"></span> {{else}} - <a href="#" {{action "requeueBuild" target=view}}></a> + <a href="#" {{action "requeueBuild" target=view}} + {{bind-attr class="view.canRequeueBuild::disabled"}}></a> {{/if}} </li> {{/if}} @@ -24,7 +27,8 @@ {{#if view.requeueing}} <span class="icon loading"></span> {{else}} - <a href="#" {{action "requeueJob" target=view}}></a> + <a href="#" {{action "requeueJob" target=view}} + {{bind-attr class="view.canRequeueJob::disabled"}}></a> {{/if}} </li> {{/if}}