Sha256: 25d29d1b67c7eead46ea8b42847fdda0f1c3d631779d668da7473f4cc4da2dc5

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

class @Mercury.Dialog

  constructor: (@url, @name, @options = {}) ->
    @button = @options.for

    @build()
    @bindEvents()
    @preload()


  build: ->
    @element = $('<div>', {class: "mercury-dialog mercury-#{@name}-dialog loading", style: 'display:none'})
    @element.appendTo($(@options.appendTo).get(0) ? 'body')


  bindEvents: ->
    @element.mousedown (event) -> event.stopPropagation()


  preload: ->
    @load() if @options.preload


  toggle: (element) ->
    if @visible then @hide() else @show()


  resize: ->
    @show()


  show: ->
    Mercury.trigger('hide:dialogs', @)
    @visible = true
    if @loaded
      @element.css({width: 'auto', height: 'auto'})
      @position(@visible)
      @appear()
    else
      @position()
      @appear()


  position: (keepVisible) ->


  appear: ->
    @element.css({display: 'block', opacity: 0})
    @element.animate {opacity: .95}, 200, 'easeInOutSine', =>
      @load(=> @resize()) unless @loaded


  hide: ->
    @element.hide()
    @visible = false


  load: (callback) ->
    return unless @url
    $.ajax @url, {
      success: (data) =>
        @loadContent(data)
        Mercury.dialogHandlers[@name].call(@) if Mercury.dialogHandlers[@name]
        callback() if callback
      error: =>
        @hide()
        @button.removeClass('pressed') if @button
        alert("Mercury was unable to load #{@url} for the #{@name} dialog.")
    }


  loadContent: (data) ->
    @loaded = true
    @element.removeClass('loading')
    @element.html(data)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mercury-rails-0.1.1 app/assets/javascripts/mercury/dialog.js.coffee
mercury-rails-0.1.0 app/assets/javascripts/mercury/dialog.js.coffee