Make confirm methods independents

stable
Jesús Espino 2014-09-18 11:48:17 +02:00 committed by David Barragán Merino
parent d9ffaa0913
commit 11eec044c6
1 changed files with 41 additions and 42 deletions

View File

@ -44,53 +44,52 @@ class ConfirmService extends taiga.Service
constructor: (@q, @lightboxService, @loading) -> constructor: (@q, @lightboxService, @loading) ->
_.bindAll(@) _.bindAll(@)
hide: -> hide: (el)->
if @.el if el
@lightboxService.close(@.el) @lightboxService.close(el)
@.el.off(".confirm-dialog") el.off(".confirm-dialog")
delete @.el
ask: (title, subtitle, lightboxSelector=".lightbox_confirm-delete") -> ask: (title, subtitle, lightboxSelector=".lightbox_confirm-delete") ->
@.el = angular.element(lightboxSelector) el = angular.element(lightboxSelector)
# Render content # Render content
@.el.find("h2.title").html(title) el.find("h2.title").html(title)
@.el.find("span.subtitle").html(subtitle) el.find("span.subtitle").html(subtitle)
defered = @q.defer() defered = @q.defer()
# Assign event handlers # Assign event handlers
@.el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
event.preventDefault() event.preventDefault()
target = angular.element(event.currentTarget) target = angular.element(event.currentTarget)
@loading.start(target) @loading.start(target)
defered.resolve => defered.resolve =>
@loading.finish(target) @loading.finish(target)
@.hide() @.hide(el)
@.el.on "click.confirm-dialog", "a.button-red", (event) => el.on "click.confirm-dialog", "a.button-red", (event) =>
event.preventDefault() event.preventDefault()
defered.reject() defered.reject()
@.hide() @.hide(el)
@lightboxService.open(@.el) @lightboxService.open(el)
return defered.promise return defered.promise
askChoice: (title, subtitle, choices, lightboxSelector=".lightbox-ask-choice") -> askChoice: (title, subtitle, choices, lightboxSelector=".lightbox-ask-choice") ->
@.el = angular.element(lightboxSelector) el = angular.element(lightboxSelector)
# Render content # Render content
@.el.find("h2.title").html(title) el.find("h2.title").html(title)
@.el.find("span.subtitle").html(subtitle) el.find("span.subtitle").html(subtitle)
choicesField = @.el.find("select.choices") choicesField = el.find("select.choices")
choicesField.html('') choicesField.html('')
_.each choices, (value, key) -> _.each choices, (value, key) ->
choicesField.append(angular.element("<option value='#{key}'>#{value}</option>")) choicesField.append(angular.element("<option value='#{key}'>#{value}</option>"))
defered = @q.defer() defered = @q.defer()
# Assign event handlers # Assign event handlers
@.el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) => el.on "click.confirm-dialog", "a.button-green", debounce 2000, (event) =>
event.preventDefault() event.preventDefault()
target = angular.element(event.currentTarget) target = angular.element(event.currentTarget)
@loading.start(target) @loading.start(target)
@ -98,59 +97,59 @@ class ConfirmService extends taiga.Service
selected: choicesField.val() selected: choicesField.val()
finish: => finish: =>
@loading.finish(target) @loading.finish(target)
@.hide() @.hide(el)
} }
@.el.on "click.confirm-dialog", "a.button-red", (event) => el.on "click.confirm-dialog", "a.button-red", (event) =>
event.preventDefault() event.preventDefault()
defered.reject() defered.reject()
@.hide() @.hide(el)
@lightboxService.open(@.el) @lightboxService.open(el)
return defered.promise return defered.promise
error: (message) -> error: (message) ->
@.el = angular.element(".lightbox-generic-error") el = angular.element(".lightbox-generic-error")
# Render content # Render content
@.el.find("h2.title").html(message) el.find("h2.title").html(message)
defered = @q.defer() defered = @q.defer()
# Assign event handlers # Assign event handlers
@.el.on "click.confirm-dialog", "a.button-green", (event) => el.on "click.confirm-dialog", "a.button-green", (event) =>
event.preventDefault() event.preventDefault()
defered.resolve() defered.resolve()
@.hide() @.hide(el)
@.el.on "click.confirm-dialog", "a.close", (event) => el.on "click.confirm-dialog", "a.close", (event) =>
event.preventDefault() event.preventDefault()
defered.resolve() defered.resolve()
@.hide() @.hide(el)
@lightboxService.open(@.el) @lightboxService.open(el)
return defered.promise return defered.promise
success: (message) -> success: (message) ->
@.el = angular.element(".lightbox-generic-success") el = angular.element(".lightbox-generic-success")
# Render content # Render content
@.el.find("h2.title").html(message) el.find("h2.title").html(message)
defered = @q.defer() defered = @q.defer()
# Assign event handlers # Assign event handlers
@.el.on "click.confirm-dialog", "a.button-green", (event) => el.on "click.confirm-dialog", "a.button-green", (event) =>
event.preventDefault() event.preventDefault()
defered.resolve() defered.resolve()
@.hide() @.hide(el)
@.el.on "click.confirm-dialog", "a.close", (event) => el.on "click.confirm-dialog", "a.close", (event) =>
event.preventDefault() event.preventDefault()
defered.resolve() defered.resolve()
@.hide() @.hide(el)
@lightboxService.open(@.el) @lightboxService.open(el)
return defered.promise return defered.promise
@ -160,17 +159,17 @@ class ConfirmService extends taiga.Service
# Add default texts to NOTIFICATION_MSG for new notification types # Add default texts to NOTIFICATION_MSG for new notification types
selector = ".notification-message-#{type}" selector = ".notification-message-#{type}"
@.el = angular.element(selector) el = angular.element(selector)
if title if title
@.el.find("h4").html(title) el.find("h4").html(title)
else else
@.el.find("h4").html(NOTIFICATION_MSG[type].title) el.find("h4").html(NOTIFICATION_MSG[type].title)
if message if message
@.el.find("p").html(message) el.find("p").html(message)
else else
@.el.find("p").html(NOTIFICATION_MSG[type].message) el.find("p").html(NOTIFICATION_MSG[type].message)
body = angular.element("body") body = angular.element("body")
body.find(".notification-message .notification-light") body.find(".notification-message .notification-light")
@ -193,7 +192,7 @@ class ConfirmService extends taiga.Service
delete @.tsem delete @.tsem
@.el.on "click", ".icon-delete", (event) => el.on "click", ".icon-delete", (event) =>
body.find(selector) body.find(selector)
.removeClass('active') .removeClass('active')
.addClass('inactive') .addClass('inactive')