SubscriptionGroupsManager.coffee 1.8 KB

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