jam-cloud/web/app/assets/javascripts/url_validator.js.coffee

84 lines
2.1 KiB
CoffeeScript
Raw Normal View History

$ = jQuery
context = window
context.JK ||= {};
context.JK.UrlValidator = class UrlValidator
2015-02-02 07:45:52 +00:00
constructor: (input_div) ->
@EVENTS = context.JK.EVENTS
@rest = context.JK.Rest()
@input_div = input_div
@url_input = @input_div.find('input')
this.show_format_status()
@logger = context.JK.logger
@site_status = null
2015-02-01 03:43:58 +00:00
@spinner = @input_div.find('span.spinner-small')
@checkmark = @input_div.find('.validate-checkmark')
init: () =>
this.renderErrors({})
2015-02-01 03:43:58 +00:00
@spinner.hide()
validator = this
2015-01-31 05:22:58 +00:00
@url_input.bind 'blur', ->
if validator.show_format_status()
validator.validate_url_site()
2015-02-02 07:45:52 +00:00
@url_input.bind 'focus', ->
validator.show_format_status()
url_to_validate: () =>
url = @url_input.val()
if 0 < url.length
url.substring(0,2000)
else
null
2015-01-31 05:22:58 +00:00
validate_url_format: () =>
regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
regexp.test(this.url_to_validate())
show_format_status: () =>
url = this.url_to_validate()
2015-01-31 08:59:25 +00:00
yn = true
if url
2015-01-31 08:59:25 +00:00
yn = this.validate_url_format()
if yn
2015-02-01 03:43:58 +00:00
@checkmark.show()
2015-01-31 08:59:25 +00:00
else
2015-02-01 03:43:58 +00:00
@checkmark.hide()
yn
validate_url_site: () =>
@site_status = null
2015-02-01 03:43:58 +00:00
@spinner.show()
@checkmark.hide()
@rest.validateUrlSite(this.url_to_validate())
.done(this.processSiteCheck)
.fail(this.processSiteCheckFail)
processSiteCheck: (response) =>
2015-02-01 03:43:58 +00:00
@spinner.hide()
if 'Valid Site' == response.message
@site_status = 'valid'
this.renderErrors({})
else
@site_status = 'invalid'
this.renderErrors(response)
@logger.debug("site_status = "+@site_status)
processSiteCheckFail: (response) =>
2015-02-01 03:43:58 +00:00
@spinner.hide()
@checkmark.hide()
@logger.error("site check error")
@site_status = 'invalid'
renderErrors: (errors) =>
errdiv = @input_div.find('.error')
if errmsg = context.JK.format_errors("site", errors)
2015-02-01 03:43:58 +00:00
@checkmark.hide()
errdiv.show()
errdiv.html(errmsg)
else
2015-02-01 03:43:58 +00:00
@checkmark.show()
errdiv.hide()
errdiv.html('')