decko-commons/decko

View on GitHub
mod/tinymce_editor/assets/script/image_editor.js.coffee

Summary

Maintainability
Test Coverage
decko.slot.ready (slot) ->
  sdata = slot.data("slot")
  if sdata? && sdata["show"]? && sdata["show"].includes "preview_redirect"
    tabPanel = slot.closest(".tab-panel")
    tabPanel.find(".tab-li-preview a").tab("show")
    nest.updateImagePreview(slot)

  if slot.hasClass("modal_nest_image-view")
    imageSelect = slot.find('._image-card-select')
    if imageSelect.length > 0
      decko.imageComplete.init imageSelect
      nest.updateImageName(slot.find(".new_image-view .new_fields-view .submit-button"))

$(document).ready ->
  $('body').on 'select2:select', '._image-name', () ->
    nest.updateImagePreview(this)

  $('body').on 'select2:select', '._image-view-select', () ->
    nest.updateImagePreview(this)

  $('body').on 'select2:select', '._image-size-select', () ->
    nest.updateImagePreview(this)

  $('body').on 'click', ".new_image-view .new_fields-view .submit-button", ->
    nest.updateImageName($(this))


decko.imageComplete =
  init: (el) ->
    decko.select2Autocomplete.init el, @_options(el),
      data: (params) ->
        term: params.term
        view: "image_complete"

  _options: (el) ->
    dropdownParent: el.parent()

window.nest ||= {}

$.extend nest,
  updateImageName: (container) ->
    name = container.slot().data("cardName");
    nameSelect = container.closest(".tab-content").find("._image-name")
    option = new Option(name, name, true, true);
    nameSelect.append(option)
    nameSelect.val(name)
    nameSelect.trigger('change')

  updateImagePreview: (el) ->
    tabs = $(el).closest(".tab-content")
    name = tabs.find("._image-name").val();
    view = tabs.find("._image-view-select").val();
    size = tabs.find("._image-size-select").val();
    syntaxPreview = tabs.closest("._nest-editor").find("._nest-preview")
    syntaxPreview.val("{{ #{name} | view: #{view}; size: #{size} }}")

    slot = tabs.find(".tab-pane-preview > .card-slot");
    path = "#{name}?view=#{view}&size=#{size}"
    $(slot).slotReload path