Sha256: b9fe5fbbcc8e45e59bc191138ae99ef390fff56ec43cdfc16a3666c3b69eee3e

Contents?: true

Size: 1.45 KB

Versions: 19

Compression:

Stored size: 1.45 KB

Contents

$.fn.productAutocomplete = function (options) {
  'use strict'

  // Default options
  options = options || {}
  var multiple = typeof (options.multiple) !== 'undefined' ? options.multiple : true
  var values = typeof (options.values) !== 'undefined' ? options.values : null

  function formatProductList(products) {
    return products.map(function(obj) {
      return { id: obj.id, text: obj.name }
    })
  }

  function addOptions(select, values) {
    $.ajax({
      url: Spree.routes.products_api,
      dataType: 'json',
      data: {
        q: {
          id_in: values
        },
        token: Spree.api_key
      }
    }).then(function (data) {
      select.addSelect2Options(data.products)
    })
  }

  this.select2({
    multiple: multiple,
    minimumInputLength: 3,
    ajax: {
      url: Spree.routes.products_api,
      dataType: 'json',
      data: function (params) {
        return {
          q: {
            name_or_master_sku_cont: params.term
          },
          m: 'OR',
          token: Spree.api_key
        }
      },
      processResults: function(data) {
        var products = data.products ? data.products : []
        var results = formatProductList(products)

        return {
          results: results
        }
      }
    },
    templateSelection: function(data, _container) {
      return data.text
    }
  })

  if (values) {
    addOptions(this, values)
  }
}

$(document).ready(function () {
  $('.product_picker').productAutocomplete()
})

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
spree_backend-4.2.7 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.3 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.6 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.2 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.1 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.0 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.0.rc3 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.0.rc2 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.3.0.rc1 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.5 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.4 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.3.1 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.3 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.2 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.1 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.0 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.0.rc5 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.0.rc4 app/assets/javascripts/spree/backend/product_picker.js
spree_backend-4.2.0.rc3 app/assets/javascripts/spree/backend/product_picker.js