Sha256: b913d71240b82a84a58973e3efa5d049c57c8334e5914e5a650897dcb3f2ed18

Contents?: true

Size: 1.91 KB

Versions: 13

Compression:

Stored size: 1.91 KB

Contents

$(window).ready ->
  navbox = $('._navbox')
  navbox.select2
    placeholder: navbox.attr("placeholder")
    escapeMarkup: (markup) ->
      markup
    minimumInputLength: 1
    maximumSelectionSize: 1
    ajax:
      url: decko.path ':search.json'
      data: (params) ->
        query: { keyword: params.term }
        view: "complete"
      processResults: (data) ->
        results: navboxize(data)
      cache: true
    templateResult: formatNavboxItem
    templateSelection: formatNavboxSelectedItem
    multiple: true
    containerCssClass: 'select2-navbox-autocomplete'

  navbox.on "select2:select", (e) ->
    navboxSelect(e)

formatNavboxItem = (i) ->
  if i.loading
    return i.text
  '<i class="material-icons">' + i.icon + '</i>' +
  '<span class="navbox-item-label">' + i.prefix + ':</span> ' +
  '<span class="navbox-item-value">' + i.label + '</span>'

formatNavboxSelectedItem = (i) ->
  unless i.icon
    return i.text
  '<i class="material-icons">' + i.icon + '</i>' +
  '<span class="navbox-item-value">' + i.label + '</span>'

navboxize = (results) ->
  items = []
  term = results.term
  if results["search"]
    # id is what the form sends
    items.push navboxItem(prefix: "search", id: term, text: term)

  $.each ['add', 'new'], (index, key) ->
    if val = results[key]
      items.push navboxItem(prefix: key, icon: "add", text: val[0], href: val[1])

  $.each results['goto'], (index, val) ->
    i = navboxItem(
      prefix: "go to", id: index, icon: "arrow_forward",
      text: val[0], href: val[1], label: val[2]
    )
    items.push i

  items

navboxItem = (data) ->
  data.id ||= data.prefix
  data.icon ||= data.prefix
  data.label ||= '<strong class="highlight">' + data.text + '</strong>'
  data

navboxSelect = (event) ->
  item = event.params.data
  if item.href
    window.location = decko.path(item.href)
  else
    $(event.target).closest('form').submit()

  $(event.target).attr('disabled', 'disabled')

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
card-1.96.8 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.7 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.6 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.5 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.4 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.3 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.2 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.1 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.96.0 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.95.3 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.95.2 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.95.1 mod/machines/lib/javascript/decko_navbox.js.coffee
card-1.95.0 mod/machines/lib/javascript/decko_navbox.js.coffee