summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/views/my/profiles/show_view.js.coffee
blob: 1b2caaf1d9303d588da9bcd7ae3144a8dd924498 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class csx.Views.My.Profiles.ShowView extends Marionette.ItemView
  template: JST["templates/my/profiles/show"]
  ui:
    name: '#user_name'
    email: '#user_email'
    city: '#user_city'
    website: '#user_website'
    facebook: '#user_facebook'
    twitter: '#user_twitter'
    save_button: '#save-button'
    cancel_button: '#cancel-button'
    status: '#status-message'

  modelEvents:
    'invalid': 'displayError'

  events:
    "submit #profile-form": "save"
    "keyup input": "refreshStatus"
    'click #cancel-button': 'cancel'

  save: (event) ->
    event.preventDefault()
    event.stopPropagation()
    @disableSaveButton()
    @model.save(null,
      success: @savedSuccessfully
      error: @couldNotSave
    )

  savedSuccessfully: (profile) =>
    @disableSaveButton()
    @ui.status.removeClass('hide')
    @ui.status.removeClass('alert-danger')
    @ui.status.html("Saved!")

  couldNotSave: =>
    console.log('fudge')

  enableSaveButton: ->
    @ui.save_button.removeAttr('disabled')

  disableSaveButton: ->
    @ui.save_button.attr('disabled', 'disabled')

  displayError: ->
    @disableSaveButton()
    @ui.status.addClass('alert-danger')
    @ui.status.removeClass('hide')
    @ui.status.html(@model.validationError)

  refreshStatus: ->
    @ui.status.addClass('hide')
    @enableSaveButton()
    @model.set('name', @ui.name.val())
    @model.set('email', @ui.email.val())
    @model.set('city', @ui.city.val())
    @model.set('website', @ui.website.val())
    @model.set('facebook', @ui.facebook.val())
    @model.set('twitter', @ui.twitter.val())
    @model.isValid()

  cancel: ->
    @enableSaveButton()