Skip to content

Instantly share code, notes, and snippets.

@osiro
Last active August 29, 2015 14:01
Show Gist options
  • Save osiro/daef6c11503b27d72f5d to your computer and use it in GitHub Desktop.
Save osiro/daef6c11503b27d72f5d to your computer and use it in GitHub Desktop.
# Dicas:
# Nós criamos sempre um namespace, exemplo: RC.Permissions
# Colocados tudo em classe: class PRC.Permissions
# Quase nunca fazemos bind no document
class PRC.Permissions
constructor: ->
@$visitPermissions = $(".visit-permissions")
@visitId = @$visitPermissions.data("visitId")
@userId = @$visitPermissions.data("userId")
@$searchForReferrers = $("input.search.referrers")
@$tableSearchReferrers = $(".search-referrers table.referrers")
@$spinnerTarget = $(".search-referrers .spinner")
@$tableAuthorisedReferrers = $(".authorised-referrers table.access")
@$authoriseLinks = $(".actions .btn.authorise")
@$revokeLinks = $(".actions .btn.revoke")
@loadPermissions()
@bindElements()
bindElements: ->
@$tableSearchReferrers.on('click', '.actions .btn.authorise', @authoriseAccess)
@$tableAuthorisedReferrers.on('click', '.actions .btn.revoke', @revokeAccess)
@$searchForReferrers.autocomplete
minLength: 3
source: (request, response) =>
$.ajax
url: "/referrers"
data:
name: request.term
beforeSend: => PRC.spinner.spin(@$spinnerTarget[0])
.done (result) =>
for referrer in result.referrers
switch(referrer.referrer_type)
when "referrer_account" then referrer.referrer_type_str = "Account"
when "referrer_group" then referrer.referrer_type_str = "Group"
else referrer.referrer_type_str = ""
@renderReferrers(@$tableSearchReferrers, result.referrers)
.always =>
PRC.spinner.stop()
renderReferrers: (container, referrers) =>
template = JST["templates/permissions/referrers"]
container.find("tbody")
.empty()
.append(template(referrers: referrers))
loadPermissions: ->
$.ajax
url: "/visits/#{@visitId}/permissions.json"
type: "GET"
data:
user_id: @userId
.done (data, textStatus, jqXHR) =>
PRC.DebugHelpers.logSuccessAjax(data, textStatus, jqXHR)
@renderPermissions(@$tableAuthorisedReferrers, data.permissions)
.error (jqXHR, textStatus, errorThrown) =>
PRC.DebugHelpers.logFailAjax(jqXHR, textStatus, errorThrown)
renderPermissions: (container, permissions) =>
template = JST["templates/permissions/access"]
container.find("tbody")
.empty()
.append(template(permissions: permissions))
authoriseAccess: (event) =>
event.preventDefault()
@$link = $(event.target)
$.ajax
url: "/visits/#{@visitId}/permissions"
type: "POST"
data:
id: @$link.data("referrerId")
user_id: @userId
.done (data, textStatus, jqXHR) =>
PRC.DebugHelpers.logSuccessAjax(data, textStatus, jqXHR)
@$link.closest("tr").hide()
@loadPermissions()
.error (jqXHR, textStatus, errorThrown) =>
alert("Permission could not be changed.")
PRC.DebugHelpers.logFailAjax(jqXHR, textStatus, errorThrown)
revokeAccess: (event) =>
event.preventDefault()
@$link = $(event.target)
$.ajax
url: "/visits/#{@visitId}/permissions/#{@$link.data("id")}"
type: "DELETE"
data:
sender_account_id: @$link.data("senderAccountId")
user_id: @userId
.done (data, textStatus, jqXHR) =>
@loadPermissions()
PRC.DebugHelpers.logSuccessAjax(data, textStatus, jqXHR)
.error (jqXHR, textStatus, errorThrown ) =>
alert("Permission could not be changed.")
PRC.DebugHelpers.logFailAjax(jqXHR, textStatus, errorThrown)
createPermissions = ->
if $(".public-user-permissions").length > 0
window.PRC.permissionManagement = new PRC.Permissions()
$(document).on 'page:load', createPermissions
$(document).ready createPermissions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment