window.Alchemy = {} if typeof(window.Alchemy) is 'undefined' # Adds buttons into a toolbar inside of overlay windows Alchemy.ToolbarButton = (options) -> $btn = $('
') if options.buttonId $btn.attr(id: options.buttonId) $lnk = $("") if options.hotkey $lnk.attr('data-alchemy-hotkey', options.hotkey) $lnk.click (e) -> e.preventDefault() options.onClick(e) return $lnk.append "" $btn.append $lnk $btn.append "
" $btn Alchemy.ElementsWindow = init: (url, options, callback) -> @hidden = false @$body = $('body') @element_window = $('
') @element_area = $('
') @url = url @options = options @callback = callback @element_window.append @createToolbar(options.toolbarButtons) @element_window.append @element_area @button = $('#element_window_button') @button.click => @hide() false window.requestAnimationFrame => spinner = new Alchemy.Spinner('medium') spinner.spin @element_area[0] $('#main_content').append(@element_window) @show() @reload() createToolbar: (buttons) -> @toolbar = $('
') for btn in buttons @toolbar.append Alchemy.ToolbarButton(btn) @toolbar reload: -> $.get @url, (data) => @element_area.html data Alchemy.GUI.init(@element_area) if @callback @callback.call() .fail (xhr, status, error) => Alchemy.AjaxErrorHandler @element_area, xhr.status, status, error hide: -> @$body.removeClass('elements-window-visible'); @hidden = true @toggleButton() show: -> @$body.addClass('elements-window-visible'); @hidden = false @toggleButton() toggleButton: -> if @hidden @button.find('label').text(@options.texts.showElements) @button.off('click') @button.click => @show() false else @button.find('label').text(@options.texts.hideElements) @button.off('click') @button.click => @hide() false