Client Needs to Change the default sorting method which is currently used for sorting the cart items.
By default, the items are sorted in the order they were added. So, it need be changed to sort on the basis of brand and sub-category.
define(
‘JJ.CartSCrollUpdate.CartScrollUpdate’, [
‘JJ.CartSCrollUpdate.CartScrollUpdate.View’, ‘Cart.Item.Actions.View’, ‘GlobalViews.Modal.View’, ‘Profile.Model’, ‘Cart.AddToCart.Button.View’, ‘Cart.Summary.View’, ‘Cart.Detailed.View’, ‘Header.MiniCart.View’
],
function (
CartScrollUpdateView, CartItemActionsView, GlobalViewsModalView, ProfileModel, CartAddToCartButtonView, CartSummaryView, CartDetailedView, HeaderMiniCartView
) {
‘use strict’;
return {
mountToApp: function mountToApp(container) {
/** @type {LayoutComponent} */
// **For Implementing the Cart sorting Functionality**
_.extend(CartDetailedView.prototype, {
initialize: _.wrap(CartDetailedView.prototype.initialize, function wrapInitialice(fn) {
fn.apply(this, _.toArray(arguments).slice(1));
var recordView = this;
console.log(“this in cart view”,this)
this.on(‘afterViewRender’, function () {
var newlines = recordView.model.get(‘lines’).models;
console.log(” Before sorting”, newlines)
if (newlines.length > 0) {
//Sorting Function
recordView.model.get(‘lines’).models = _.sortBy(newlines, function (data) {
//For Getting sub category
var category = data.get(‘item’).get(‘custitem_product_category’);
if(category){
const [category1, subcategory] = category.split(‘:’);
var finalsubcat = subcategory;}
//For Getting Brand(Department)
var brand = data.get(‘item’).get(‘department’);
//Sorting condition
var sortingcondition = (finalsubcat) ? (brand.concat(finalsubcat)) : brand;
//console.log(“sortingcondition”, sortingcondition)
data.sortingcondition = sortingcondition;
return data.sortingcondition
})
}
console.log(” After sorting”, recordView.model.get(‘lines’).models)
});
}),
});
_.extend(HeaderMiniCartView.prototype, {
initialize: _.wrap(HeaderMiniCartView.prototype.initialize, function wrapInitialice(fn) {
fn.apply(this, _.toArray(arguments).slice(1));
var minirecordView = this;
console.log(“this in mini cart view”,this)
this.on(‘afterViewRender’, function () {
var mininewlines = minirecordView.model.get(‘lines’).models;
console.log(“minicart before sorting”,mininewlines)
if (mininewlines.length > 0) {
minirecordView.model.get(‘lines’).models = _.sortBy(mininewlines, function (minidata) {
var minicategory = minidata.get(‘item’).get(‘custitem_product_category’);
const [minicategory1, minisubcategory] = minicategory.split(‘:’);
var minifinalsubcat = minisubcategory;
var minibrand = minidata.get(‘item’).get(‘department’);
var minisortingcondition = (minifinalsubcat) ? (minibrand.concat(minifinalsubcat)) : minibrand;
minidata.minisortingcondition = minisortingcondition;
return minidata.minisortingcondition
})
}
});
}),
})
}
};
});