app/assets/javascripts/spree/backend/stock_transfer.js in spree_backend-4.3.3 vs app/assets/javascripts/spree/backend/stock_transfer.js in spree_backend-4.4.0.rc1
- old
+ new
@@ -1,6 +1,6 @@
-$(function () {
+document.addEventListener("spree:load", function() {
function TransferVariant (variant1) {
// refactor variant1
this.variant = variant1
this.id = this.variant[0].variant.id
this.name = this.variant[0].variant.name + ' - ' + this.variant[0].variant.sku
@@ -14,17 +14,30 @@
function TransferLocations () {
this.source = $('#transfer_source_location_id')
this.destination = $('#transfer_destination_location_id')
this.source.change(this.populate_destination.bind(this))
$('#transfer_receive_stock').change(this.receive_stock_change.bind(this))
- $.getJSON(Spree.url(Spree.routes.stock_locations_api) + '?token=' + Spree.api_key + '&per_page=1000', function (data) {
+
+ $.ajax({
+ url: Spree.routes.stock_locations_api_v2 + '?per_page=1000',
+ type: 'GET',
+ data: {
+ fields: {
+ stock_location: 'name'
+ }
+ },
+ headers: Spree.apiV2Authentication()
+ }).then(function (json) {
this.locations = (function () {
- var ref = data.stock_locations
+ var ref = json.data
var results = []
var i, len
for (i = 0, len = ref.length; i < len; i++) {
- results.push(ref[i])
+ results.push({
+ id: ref[i].id,
+ name: ref[i].attributes.name
+ })
}
return results
})()
if (this.locations.length < 2) {
this.force_receive_stock()
@@ -71,11 +84,11 @@
TransferLocations.prototype.populate_destination = function () {
if (this.is_source_location_hidden()) {
return this.populate_select(this.destination)
} else {
- return this.populate_select(this.destination, parseInt(this.source.val()))
+ return this.populate_select(this.destination, this.source.val())
}
}
TransferLocations.prototype.populate_select = function (select, except) {
var i, len, location, ref
@@ -108,16 +121,16 @@
return this._search_transfer_stock_items()
}
}
TransferVariants.prototype._search_transfer_variants = function () {
- return this.build_select(Spree.url(Spree.routes.variants_api), 'product_name_or_sku_cont')
+ return this.build_select(Spree.url(Spree.routes.variants_api_v2), 'product_name_or_sku_cont')
}
TransferVariants.prototype._search_transfer_stock_items = function () {
var stockLocationId = $('#transfer_source_location_id').val()
- return this.build_select(Spree.url(Spree.routes.stock_locations_api + ('/' + stockLocationId + '/stock_items')), 'variant_product_name_or_variant_sku_cont')
+ return this.build_select(Spree.routes.stock_items_api_v2 + '?filter[stock_location_id_eq]=' + stockLocationId + '&include=variant', 'variant_product_name_or_variant_sku_cont')
}
TransferVariants.prototype.format_variant_result = function (result) {
// eslint-disable-next-line no-extra-boolean-cast
if (!!result.options_text) {
@@ -126,45 +139,61 @@
return result.name + ' - ' + result.sku
}
}
function formattedVariantList(obj) {
- return { id: obj.id, text: obj.name, name: obj.name, sku: obj.sku, options_text: obj.options_text, variant: obj }
+ return {
+ id: obj.id,
+ text: obj.name,
+ name: obj.name,
+ sku: obj.sku,
+ options_text: obj.options_text,
+ variant: obj
+ }
}
- function formattedStockItemsList(obj) {
- return { id: obj.variant.id, text: obj.variant.name, name: obj.variant.name, sku: obj.variant.sku, options_text: obj.variant.options_text, variant: obj.variant }
- }
-
TransferVariants.prototype.build_select = function (url, query) {
return $('#transfer_variant').select2({
minimumInputLength: 3,
ajax: {
url: url,
datatype: 'json',
data: function (params) {
- var q = {}
- q[query] = params.term
+ var filter = {}
+ filter[query] = params.term
+
return {
- q: q,
- token: Spree.api_key
+ filter: filter,
+ fields: {
+ 'variant': 'name,sku,options_text'
+ }
}
},
- processResults: function (data) {
- var result = data.variants || data.stock_items
- if (data.variants != null) {
- var res = (result).map(function (variant) {
- return formattedVariantList(variant)
- })
- } else {
- var res = (result).map(function (variant) {
- return formattedStockItemsList(variant)
- })
- }
+ headers: Spree.apiV2Authentication(),
+ success: function(data) {
+ var JSONAPIDeserializer = require('jsonapi-serializer').Deserializer
+ new JSONAPIDeserializer({ keyForAttribute: 'snake_case' }).deserialize(data, function (_err, variants) {
+ jsonApiVariants = variants
+ })
+ },
+ processResults: function (json) {
+ if (json && json.data && jsonApiVariants) {
+ var res = {}
- return {
- results: res
+ if (json.links.self.match(/platform\/variants/)) {
+ res = jsonApiVariants.map(function (variant) {
+ return formattedVariantList(variant)
+ })
+ } else {
+ res = jsonApiVariants.map(function (variant) {
+ return formattedVariantList(variant.variant)
+ })
+ }
+
+ return {
+ results: res
+ }
}
}
},
templateResult: function(variant) {
if (variant.options_text !== "") {
@@ -216,11 +245,11 @@
return this.render()
}
TransferAddVariants.prototype.find_or_add = function (variant) {
var existing = _.find(this.variants, function (v) {
- return v.id === variant.id
+ return v.id.toString() === variant[0].id
})
if (existing) {
return existing
} else {
variant = new TransferVariant($.extend({}, variant))
@@ -229,17 +258,18 @@
}
}
TransferAddVariants.prototype.remove_variant = function (target) {
var v
- var variantId = parseInt(target.data('variantId'))
+ var variantId = target.data('variantId').toString()
+
this.variants = (function () {
var ref = this.variants
var results = []
var i, len
for (i = 0, len = ref.length; i < len; i++) {
v = ref[i]
- if (v.id !== variantId) {
+ if (v.id.toString() !== variantId) {
results.push(v)
}
}
return results
}.call(this))