summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke "Jared" Bennett <lbennett@gitlab.com>2016-07-15 04:22:01 +0100
committerLuke Bennett <lukeeeebennettplus@gmail.com>2016-08-20 17:07:50 +0100
commitcb6a2e534ea07fb1bf1e376abecba2fa989f0d31 (patch)
treeca01acdf5a92db7fbc515e44dd5c41d94163a081
parentb8a0c57e04ec1625a002ae7ffba24cfb0bf12d01 (diff)
downloadgitlab-ce-cb6a2e534ea07fb1bf1e376abecba2fa989f0d31.tar.gz
Review changes
-rw-r--r--app/assets/javascripts/username_validator.coffee36
1 files changed, 36 insertions, 0 deletions
diff --git a/app/assets/javascripts/username_validator.coffee b/app/assets/javascripts/username_validator.coffee
new file mode 100644
index 00000000000..9d77fd50f8a
--- /dev/null
+++ b/app/assets/javascripts/username_validator.coffee
@@ -0,0 +1,36 @@
+class @UsernameValidator
+ DEBOUNCE_TIMEOUT_DURATION = 1000
+ ERROR_ICON_CLASSES = 'fa fa-exclamation-circle error'
+ USERNAME_IN_USE_MESSAGE = 'Username "$1" is in use!'
+ LOADING_ICON_CLASSES = 'fa fa-spinner fa-spin'
+ SUCCESS_ICON_CLASSES = 'fa fa-check-circle success'
+ TOOLTIP_PLACEMENT = 'left'
+
+ constructor: () ->
+ @inputElement = $('#new_user_username')
+ @iconElement = $('<i></i>')
+ @inputElement.parent().append @iconElement
+
+ debounceTimeout = _.debounce @validateUsername, DEBOUNCE_TIMEOUT_DURATION
+
+ @inputElement.keyup =>
+ @iconElement.removeClass().tooltip 'destroy'
+ username = @inputElement.val()
+ return if username is ''
+ @iconElement.addClass LOADING_ICON_CLASSES
+ debounceTimeout username
+
+ validateUsername: (username) =>
+ $.ajax
+ type: 'GET'
+ url: "/u/#{username}/exists"
+ dataType: 'json'
+ success: (res) =>
+ if res.exists
+ @iconElement.removeClass().addClass ERROR_ICON_CLASSES
+ .tooltip
+ title: USERNAME_IN_USE_MESSAGE.replace /\$1/g, username
+ placement: TOOLTIP_PLACEMENT
+ else
+ @iconElement.removeClass().addClass SUCCESS_ICON_CLASSES
+ .tooltip 'destroy'