Sorting Functionality In Cart

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

 })

}

});

}),

})

}

};

});

Leave a comment

Your email address will not be published. Required fields are marked *