SubscriptionGroupsManager.coffee 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. require [
  2. "libs/mustache"
  3. "./main"
  4. "libs/underscore"
  5. ], (m)->
  6. $(document).ready ->
  7. tableRowTemplate = '''
  8. <tr>
  9. <td> <input type="checkbox" class="select-one"></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="{{_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.select-one:checked').closest('tr').find(".user_id").toArray()
  52. do deleteNext = () ->
  53. row = selectedUserRows.pop()
  54. if row?
  55. user_id = $(row).val()
  56. $.ajax
  57. url: "/subscription/group/user/#{user_id}"
  58. type: 'DELETE'
  59. data:
  60. _csrf: csrfToken
  61. success: ->
  62. $(row).parents("tr").fadeOut(250)
  63. deleteNext()
  64. $form.on 'keypress', (e)->
  65. if(e.keyCode == 13)
  66. addUser(e)
  67. $form.find(".addUser").on 'click', addUser
  68. $('#deleteUsers').on 'click', removeUsers
  69. $('input.select-all').on "change", () ->
  70. if $(@).is(":checked")
  71. $("input.select-one").prop( "checked", true )
  72. else
  73. $("input.select-one").prop( "checked", false )