SubscriptionGroupsManager.coffee 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. require [
  2. "libs/mustache"
  3. "./main"
  4. "libs/underscore"
  5. ], (m)->
  6. $(document).ready ->
  7. tableRowTemplate = '''
  8. <tr>
  9. <td> {{ email }} </td>
  10. <td> {{ first_name }} {{ last_name }} </td>
  11. <td> {{ !holdingAccount }} </td>
  12. <td><button id="{{_id}}"" class="btn btn-danger">Remove</button></td>
  13. </tr>
  14. '''
  15. window.temp = tableRowTemplate
  16. $form = $('form#addUserToGroup')
  17. addUser = (e)->
  18. parseEmails = (emailsString)->
  19. regexBySpaceOrComma = /[\s,]+/
  20. emails = emailsString.split(regexBySpaceOrComma)
  21. emails = _.map emails, (email)->
  22. email = email.trim()
  23. emails = _.select emails, (email)->
  24. email.indexOf("@") != -1
  25. return emails
  26. sendNewUserToServer = (email)->
  27. $.ajax
  28. url: "/subscription/group/user"
  29. type: 'POST'
  30. data:
  31. email: email
  32. _csrf: $("input[name=_csrf]").val()
  33. success: (data)->
  34. if data.limitReached
  35. alert("You have reached your maximum number of members")
  36. else
  37. renderNewUserInList data.user
  38. renderNewUserInList = (user)->
  39. html = Mustache.to_html(tableRowTemplate, user)
  40. $('#userList').append(html)
  41. e.preventDefault()
  42. val = $form.find("input[name=email]").val()
  43. emails = parseEmails(val)
  44. emails.forEach (email)->
  45. sendNewUserToServer(email)
  46. $form.find("input").val('')
  47. removeUser = (e)->
  48. button = $(e.target)
  49. user_id = button.attr("id")
  50. $.ajax
  51. url: "/subscription/group/user/#{user_id}"
  52. type: 'DELETE'
  53. data:
  54. _csrf: csrfToken
  55. success: ->
  56. button.parents("tr").fadeOut(250)
  57. $form.on 'keypress', (e)->
  58. if(e.keyCode == 13)
  59. addUser(e)
  60. $form.find(".addUser").on 'click', addUser
  61. $('table').on 'click', '.btn-danger', removeUser