In this Methode we can get all the items in the PLP page in the format of CSV which all items are exported
_.extend(FacetsBrowseView.prototype, {
template: jj_facets_facet_browse_tpl,
});
function recursiveFetch(facetModel, url) {
var nextLink;
var items = [];
var promise = jQuery.Deferred();
var options = {};
if (url) {
delete facetModel.options.data;
facetModel.url = url;
} else {
options = _.extend(options, { limit: 100, offset: 0 });
facetModel.options.data = _.extend(facetModel.options.data, options);
}
facetModel.fetch(options).done(function (response) {
if (response && response.items) {
items = _.union(items, response.items);
}
if (response.links) {
nextLink = _.findWhere(response.links, { rel: 'next' });
if (nextLink && nextLink.href) {
recursiveFetch(facetModel, nextLink.href).done(function doneFacetModel(responseItems) {
items = _.union(items, responseItems);
promise.resolve(items);
});
} else {
promise.resolve(items);
}
}
});
return promise;
}
function downloadFn(model) {
var promise = jQuery.Deferred();
var preCSV = [];
var maxImageCols = -1;
var facetConfig = _.extend({}, Configuration.get('searchApiMasterOptions.Facets', {}));
var facetModel = new FacetModel({ searchApiMasterOptions: _.extend(facetConfig, { fieldset: "details" }) });
facetModel.options = model.options;
model.get('category') && facetModel.set('category', model.get('category'));
recursiveFetch(facetModel).done(function (items) {
facetModel.set('items', items);
var item = {
'Internal ID': currentItem.get('internalid'),
UPC: currentItem.get('upccode'),
SKU: currentItem.get('itemid'),
'Product Name': currentItem.get('_name'),
'Product URL': window.location.origin + currentItem.get('_url'),
Status: currentItem.get('isinstock') ? 'InStock' : 'OutOfStock',
Price: currentItem.get('_price_formatted'),
MSRP: currentItem.get('pricelevel12_formatted') || ' ',
'Quantity Available': currentItem.get('quantityavailable'),
ImageUrl1: currentItem.get('_thumbnail').url.indexOf('no_image_available.jpeg') > -1 ? '' : currentItem.get('_thumbnail').url
};
try {
var count = 1;
_.each(_.pluck(currentItem.get('_images'), 'url'), function (current) {
count++;
item['ImageUrl' + count] = current.indexOf('no_image_available.jpeg') > -1 ? '' : current;
});
maxImageCols = count > maxImageCols ? count : maxImageCols;
} catch (e) {
console.log("Error on generating CSV", e);
}
preCSV.push(item);
});
// });
for (var k = 0; k < preCSV.length; k++) {
for (var j = 1; j <= maxImageCols; j++) {
preCSV[k]['ImageUrl' + j] = preCSV[k]['ImageUrl' + j] || " ";
}
}
promise.resolve(preCSV, 'facets');
});
return promise;
}