$(document).ready ->
window.productTemplate = Handlebars.compile($('#product_template').text());
$('#taxon_products').sortable({
handle: ".js-sort-handle"
});
formatTaxon = (taxon) ->
Select2.util.escapeMarkup(taxon.pretty_name)
$('#taxon_products').on "sortstop", (event, ui) ->
$.ajax
url: Spree.routes.classifications_api,
method: 'PUT',
dataType:'json',
data:
token: Spree.api_key,
product_id: ui.item.data('product-id'),
taxon_id: $('#taxon_id').val(),
position: ui.item.index()
if $('#taxon_id').length > 0
$('#taxon_id').select2
dropdownCssClass: "taxon_select_box",
placeholder: Spree.translations.find_a_taxon,
ajax:
url: Spree.routes.taxons_search,
datatype: 'json',
data: (term, page) ->
per_page: 50,
page: page,
without_children: true,
token: Spree.api_key,
q:
name_cont: term
results: (data, page) ->
more = page < data.pages;
results: data['taxons'],
more: more
formatResult: formatTaxon,
formatSelection: formatTaxon
$('#taxon_id').on "change", (e) ->
el = $('#taxon_products')
$.ajax
url: Spree.routes.taxon_products_api,
data:
id: e.val,
token: Spree.api_key
success: (data) ->
el.empty()
if data.products.length == 0
$('#taxon_products').html("
" + Spree.translations.no_results + "
")
else
for product in data.products
if product.master.images[0] != undefined && product.master.images[0].small_url != undefined
product.image = product.master.images[0].small_url
else
for variant in product.variants
if variant.images[0] != undefined && variant.images[0].small_url != undefined
product.image = variant.images[0].small_url
break
el.append(productTemplate({ product: product }))
$('#taxon_products').on "click", ".js-delete-product", (e) ->
current_taxon_id = $("#taxon_id").val()
product = $(this).parents(".product")
product_id = product.data("product-id")
product_taxons = String(product.data("taxons")).split(',').map(Number)
product_index = product_taxons.indexOf(parseFloat(current_taxon_id))
product_taxons.splice(product_index, 1)
taxon_ids = if product_taxons.length > 0 then product_taxons else [""]
$.ajax
url: Spree.routes.products_api + "/" + product_id
data:
product:
taxon_ids: taxon_ids
token: Spree.api_key
type: "PUT",
success: (data) ->
product.fadeOut 400, (e) ->
product.remove()
$('#taxon_products').on "click", ".js-edit-product", (e) ->
product = $(this).parents(".product")
product_id = product.data("product-id")
window.location = Spree.routes.edit_product(product_id)
$(".variant_autocomplete").variantAutocomplete();