H18. 5, W12, D6cm. EAN: 6953182716150. 9 reviewsOverall rating (4. 2)4. 2CloseCustomer ReviewsReview breakdown4. 2/5 from 9 reviews5 stars (4)4 stars (3)3 stars (2)2 stars (0)1 stars (0)CloseQualityEase of useDesign78% would recommend to a friend22 June 20165 / 5QualityEase of useDesignVery StrongGood qualityYes, I recommend this productHelpful?Yes (2)No (0)The JokerLocation:AberdeenAge:25 to 34Gender:Male20 July 20165 / 5QualityEase of useDesignStrong and cheap!Best bulk buy dog poo bags on the market!Yes, I recommend this productHelpful?Yes (1)No (0)BaronLocation:St Albans, UKAge:45 to 54Gender:Male22 June 20163 / 5QualityEase of useDesignThick bags, don't fit the scoop!These are nice thick little bags. Decent value at half price however, they are half the size of the scoop they were recommended with! I am disabled and cannot bend, so these bags are useless to me. Helpful?Yes (1)No (0)Fairy PrincessLocation:EnglandAge:25 to 34Gender:FemaleRead more reviewsRead reviews9 reviewsNewestOldestMost HelpfulHighest RatingLowest RatingBack to ProductQuestions & answersBe the first to ask a question!Ask a questionBoring but important info*Prices correct as displayed but are subject to change. var br_related_rid = Rir1l2cplrbg14y9gsvbb-uf,r1,m1;var br_iuid = aHR0cDovL3d3dy5hcmdvcy5jby51ay9yZXMvc3RhdGljL1Byb2R1Y3QvcGFydE51bWJlci81MDY3MzU0Lmh0bQ==;Related Products
Buy RSPCA Faux Leather Plush Dog Jacket -
RSPCA luxury lined brown faux-leather and honeycomb plush . . .
More details. . .
Buy Pet Rebellion I Love My Dinner 100x45cm
This absorbent food mat makes a perfect resting . . .
More details. . .
Buy Petface Reflective Black Paws Medium Dog Collar
The Petface Signature collar and lead set is . . .
More details. . .
Related Searches. . . customers also searched for
Related Searches
pet food mats
vacuum bags
vacuum storage bags set
protect & store vacuum bags
view productEssential InformationCustomer ServicesPrivacy policyCookie policyTerms & conditionsSite mapSecure online shoppingEmail sign upShopping at ArgosHelp getting onlineArgos gift cardHome deliveryCheck & ReserveOrder trackingReturns & refundsQuick shopStore locatorProduct informationBuying guidesProduct careArgos CardArgos Credit & InsuranceA – Z indexFeatures & articlesProduct RecallProduct SupportAbout ArgosAbout usAffiliate programArgos for BusinessPress enquiriesOther sitesSainsbury'sArgos CareersArgos. ieArgos SparesArgos app for:iPhone |iPad |Android© Argos Limited 2016. All Rights Reserved. Store LocatorCustomer ServicesArgos CardPrivacy PolicyCookie PolicyTerms & ConditionsSainsbury'sMy Account© Argos Limited 2016. All Rights Reserved. window. App={context:{dispatcher:{stores:{RouteStore:{currentUrl:u002Fproductu002F5067354,currentNavigate:{transactionId:424766156312798,url:u002Fproductu002F5067354},currentNavigateError:null,isNavigateComplete:true,routes:null},ProductStore:{name:Dog Poop Bags - 240 Pack. ,attributes:{fastTrack:true,catentryId:1390143,freeDelivery:false,description:u003Culu003Eu003Cliu003EH18. 5, W12, D6cm. u003Cu002Fliu003Eu003Cliu003EEAN: 6953182716150. u003Cu002Fliu003Eu003Cu002Fulu003E,deliverable:true,excludedFromMoneyBack:false,deliveryPrice:3. 95,variableDeliveryPrice:false,name:Dog Poop Bags - 240 Pack. ,collectable:true,partNumber:5067354,brand:,maximumQuantity:10,price:{flashText:,now:4. 99}},relationships:{breadcrumb:{links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Frelationshipsu002Fbreadcrumb,related:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Fbreadcrumb},data:{type:breadcrumb,id:5067354}},media:{links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Frelationshipsu002Fmedia,related:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Fmedia},data:{type:media,id:5067354}},legalText:{links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Frelationshipsu002FlegalText,related:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002FlegalText},data:{type:legalTexts,id:5067354}},price:{links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Frelationshipsu002Fprice,related:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Fprice},data:{type:prices,id:5067354}},variants:{links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Frelationshipsu002Fvariants,related:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fproductu002F5067354u002Fvariants},data:{type:variants,id:5067354}}},err:null,productId:5067354,pricing:{type:prices,id:5067354,attributes:{flashText:,now:4. 99},relationships:{},links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fpricesu002F5067354}},productNotFound:false,variants:{type:variants,id:5067354,attributes:{variants:[]},relationships:{},links:{self:http:u002Fu002Fpro-eben-1va7ylod6drde. phuqpfkunw. eu-west-1. elasticbeanstalk. comu002Fvariantsu002F5067354}},breadcrumb:[{attributes:{name:Home and garden,path:u002Fu002Fwww. argos. co. uku002Fstaticu002FBrowseu002FID72u002F33016251u002Fc_1u002F1|category_root|Home+and+garden|33005908. htm,id:33005908}},{attributes:{name:Pet supplies,path:u002Fu002Fwww. argos. co. uku002Fstaticu002FBrowseu002FID72u002F33016251u002Fc_1u002F1|category_root|Home+and+garden|33005908u002Fc_2u002F2|33005908|Pet+supplies|33007638. htm,id:33007638}},{attributes:{name:Dog,path:u002Fu002Fwww. argos. co. uku002Fstaticu002FBrowseu002FID72u002F33016251u002Fc_1u002F1|category_root|Home+and+garden|33005908u002Fc_2u002F2|33005908|Pet+supplies|33007638u002Fc_3u002F3|33007638|Dog|33013166. htm,id:33013166}},{attributes:{name:Dog clean up,path:u002Fu002Fwww. argos. co. uku002Fstaticu002FBrowseu002FID72u002F33016251u002Fc_1u002F1|category_root|Home+and+garden|33005908u002Fc_2u002F2|33005908|Pet+supplies|33007638u002Fc_3u002F3|33007638|Dog|33013166u002Fc_4u002F4|33013166|Dog+clean+up|33027887. htm,id:33027887}}],legalText:{displaySwatchMessage:false},altView:false,media:{images:[http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F5067354_R_Z001A,http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F5067354_R_Z002A],pdfs:[],threesixty:[],meta:{http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F5067354_R_Z001A:{width:2970,height:2986},http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F5067354_R_Z002A:{width:1334,height:2000}},videos:[]},offers:[]},ApplicationStore:{currentPageName:null,currentPage:null,pages:{pdp_0:{path:u002Fstaticu002FProductu002FpartNumberu002F:partNumber. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_1:{path:u002Fresu002Fstaticu002FProductu002FpartNumberu002F:partNumber. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_2:{path:u002Fmu002Fstaticu002FProductu002FpartNumberu002F:partNumber. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_3:{path:u002Fresu002Fmu002Fstaticu002FProductu002FpartNumberu002F:partNumber. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_4:{path:u002Fstaticu002FSearchu002FsearchTermu002F:partNumber([0-9]+). htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_5:{path:u002Fresu002Fstaticu002FSearchu002FsearchTermu002F:partNumber([0-9]+). htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_6:{path:u002Fmu002Fstaticu002FSearchu002FsearchTermu002F:partNumber([0-9]+). htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_7:{path:u002Fresu002Fmu002Fstaticu002FSearchu002FsearchTermu002F:partNumber([0-9]+). htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_8:{path:u002Fwebappu002Fwcsu002Fstoresu002Fservletu002FProductDisplay,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_9:{path:u002Fwebappu002Fwcsu002Fstoresu002Fservletu002FProductDisplayMobileView,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_10:{path:u002Fresu002Fwebappu002Fwcsu002Fstoresu002Fservletu002FProductDisplay,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_11:{path:u002Fresu002Fwebappu002Fwcsu002Fstoresu002Fservletu002FProductDisplayMobileView,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_12:{path:u002Fresu002Fmu002Fstaticu002FProductu002FpartNumberu002F:partNumberu002FsearchTermu002F:searchTerm. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_13:{path:u002Fmu002Fstaticu002FProductu002FpartNumberu002F:partNumberu002FsearchTermu002F:searchTerm. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_14:{path:u002Fresu002Fstaticu002FProductu002FpartNumberu002F:partNumberu002FsearchTermu002F:searchTerm. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_15:{path:u002Fstaticu002FProductu002FpartNumberu002F:partNumberu002FsearchTermu002F:searchTerm. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_16:{path:u002Fresu002Fmu002Fstaticu002FProductu002FpartNumberu002F:partNumberu002FfromPageu002FSpecialOfferBuilder. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_17:{path:u002Fmu002Fstaticu002FProductu002FpartNumberu002F:partNumberu002FfromPageu002FSpecialOfferBuilder. htm,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},pdp_18:{path:u002Fproductu002F:partNumber,method:get,page:pdp,title:PDP,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber || payload. query. partNumber;
var start = Date. now();
if (payload. query. alt === true) {
context. dispatch(PDP_ALT_VIEW, true);
}
debug(Executing productPageAction, partNumber);
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, productPageAction read);
if (err || response && response. status !== 200) {
if (!err) {
err = {};
}
if (err && err. message === Not Found || response && response. status === 404) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PRODUCT_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, productPageAction 404 Error);
break;
default:
context. dispatch(PDP_PRODUCT_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, productPageAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(QUANTIY_CHANGE, 1);
context. dispatch(PDP_PRODUCT, response. data);
var getReviews = new Promise(function (resolve, reject) {
context. executeAction(_bazaarvoiceAction2. default, {
partNumber: partNumber. toString()
}, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
if (global. window) {
(0, _taggingSerializer2. default)(context. getStore, null, a variant was selected);
(0, _taggingSerializer. doTrack)(pdp_variant);
}
resolve();
});
});
var getSpecialOffers = new Promise(function (resolve, reject) {
context. executeAction(_fetchSpecialOffersAction2. default, partNumber, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
var getBloomReach = new Promise(function (resolve, reject) {
context. executeAction(_fetchBloomReachAction2. default, { partNumber: partNumber. toString() }, function (err) {
if (err) {
reject(err);
throw new Error(err);
}
resolve();
});
});
Promise. all([getReviews, getSpecialOffers, getBloomReach]). then(function () {
debug(Execution complete of productPageAction, partNumber);
done();
}, function (reason) {
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: reason }, Non-handled rejection error in pdpAction meaning we will never repsond);
done();
});
});
}},specialoffers:{path:u002Fproductu002F:partNumberu002Fspecialoffersu002F:promotionId,method:get,page:specialoffers,title:PDP Special Offers Bundle Creator,handler:function StoreConnector(props, context) {
React. Component. apply(this, arguments);
this. state = this. getStateFromStores();
this. _onStoreChange = null;
this. _isMounted = false;
},action:function (context, payload, done) {
var _arguments = arguments;
var partNumber = payload. params. partNumber;
var promotionId = payload. params. promotionId;
var start = Date. now();
debug(Executing specialOffersCreatorAction, partNumber);
var getProductInformation = new Promise(function (resolve, reject) {
context. service. read(pdp-service, { partNumber: partNumber }, context. config, function (err, response) {
response. data = JSON. parse(response. text). data;
response. data. included = JSON. parse(response. text). included;
context. dispatch(SPECIAL_OFFERS_SET_BREADCRUMB, response. data);
resolve();
});
});
context. service. read(pdp-special-offers-service, { partNumber: partNumber, promotionId: promotionId }, context. config, function (err, response) {
var end = Date. now();
logger. debug(apiLogger, { params: payload. params, responseTime: end - start, partNumber: partNumber }, specialOffersCreatorAction read);
if (err) {
if (err. message === Not Found) {
err. status = 404;
}
if (err. code === ECONNREFUSED || err. code === ECONNABORTED) {
err. status = 503;
}
switch (err. status) {
case 404:
context. dispatch(PDP_PROMOTION_NOT_FOUND, {});
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: 404 }, specialOffersCreatorAction 404 Error);
break;
default:
context. dispatch(PDP_PROMOTION_SERVICE_ERR, { status: err. status || 500 });
logger. error(apiLogger, { arguments: _arguments, responseTime: end - start, error: err. status || 500 }, specialOffersCreatorAction + err. status || 500 + Error);
break;
}
done();
return;
}
response. data = (typeof response === undefined ? undefined : _typeof(response)) === object ? response. data : JSON. parse(response. text). data;
response. data. attributes. targetPartNumber = partNumber;
context. dispatch(PDP_PROMOTION, response. data);
getProductInformation. then(function () {
return done();
});
});
}},error:{path:*,method:get,page:error,title:404 Not Found,handler:function ErrorPage() {
_classCallCheck(this, ErrorPage);
return _possibleConstructorReturn(this, (ErrorPage. __proto__ || Object. getPrototypeOf(ErrorPage)). apply(this, arguments));
}}},pageTitle:Dog Poop Bags - 240 Pack. },BazaarVoiceReviewStore:{reviews:[{id:67871698,type:review,attributes:{secondaryRatings:{Quality:5,Ease of use:5,Design:5},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:The Joker,location:Aberdeen,contextAttributes:{Age:25 to 34,Gender:Male},badges:[]},overallRating:5,text:Good quality,helpfulness:{helpful:2,unhelpful:0},title:Very Strong,submitted:22 June 2016,recommended:true,recommendedProducts:[],syndication:null}},{id:68867624,type:review,attributes:{secondaryRatings:{Quality:5,Ease of use:5,Design:5},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:Baron,location:St Albans, UK,contextAttributes:{Age:45 to 54,Gender:Male},badges:[]},overallRating:5,text:Best bulk buy dog poo bags on the market!,helpfulness:{helpful:1,unhelpful:0},title:Strong and cheap!,submitted:20 July 2016,recommended:true,recommendedProducts:[],syndication:null}},{id:67900069,type:review,attributes:{secondaryRatings:{Quality:5,Ease of use:1,Design:3},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:Fairy Princess,location:England,contextAttributes:{Age:25 to 34,Gender:Female},badges:[]},overallRating:3,text:These are nice thick little bags. Decent value at half price however, they are half the size of the scoop they were recommended with! I am disabled and cannot bend, so these bags are useless to me. ,helpfulness:{helpful:1,unhelpful:0},title:Thick bags, dont fit the scoop!,submitted:22 June 2016,recommended:false,recommendedProducts:[],syndication:null}},{id:70625936,type:review,attributes:{secondaryRatings:{Quality:5,Ease of use:5,Design:5},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:patricia,location:essex,contextAttributes:{Age:45 to 54,Gender:Female},badges:[top500Contributor]},overallRating:5,text:these bags are thick, good size very good quality and value for money,helpfulness:{helpful:1,unhelpful:0},title:Dog bags,submitted:30 August 2016,recommended:true,recommendedProducts:[],syndication:null}},{id:65864687,type:review,attributes:{secondaryRatings:{Quality:5,Ease of use:5,Design:5},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:jojo,location:Stockport,contextAttributes:{Age:35 to 44,Gender:Female},badges:[]},overallRating:5,text:Absolutely brilliant purchase. So thick and easy to use. Half price too! I bought 3 lots :),helpfulness:{helpful:1,unhelpful:0},title:Dog poo bags,submitted:10 May 2016,recommended:true,recommendedProducts:[],syndication:null}},{id:64795975,type:review,attributes:{secondaryRatings:{Quality:3,Ease of use:3,Design:4},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:Rosa,location:null,contextAttributes:{Age:25 to 34},badges:[]},overallRating:3,text:The get the job done. Not as easy to tie or pick up muptiple poops because there are not handles but they serve their purpose well. ,helpfulness:{helpful:0,unhelpful:0},title:Not the best but they work,submitted:14 April 2016,recommended:false,recommendedProducts:[],syndication:null}},{id:64566646,type:review,attributes:{secondaryRatings:{Quality:5,Ease of use:4,Design:4},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:Bamangelbam,location:London, UK,contextAttributes:{Age:18 to 24,Gender:Male},badges:[]},overallRating:4,text:Fits standard holders, strong bags, good value for money when discounted,helpfulness:{helpful:0,unhelpful:0},title:Good value for money when discounted!,submitted:8 April 2016,recommended:true,recommendedProducts:[],syndication:null}},{id:74328943,type:review,attributes:{secondaryRatings:{Quality:4,Ease of use:4,Design:4},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:Stooge,location:North Yorkshire, UK,contextAttributes:{Age:55 to 64,Gender:Male},badges:[]},overallRating:4,text:My second purchase of these multi packs. Really good value. Lots of bags in a small neat roll, fit in pocket a treat. ,helpfulness:{helpful:0,unhelpful:0},title:Excellent value. ,submitted:3 November 2016,recommended:true,recommendedProducts:[],syndication:null}},{id:67633704,type:review,attributes:{secondaryRatings:{Quality:4,Ease of use:4,Design:4},productReviewed:{name:Dog Poop Bags - 240 Pack. ,id:5067354},profile:{name:KandJ,location:Essex, UK,contextAttributes:{Age:55 to 64,Gender:Female},badges:[]},overallRating:4,text:Really treasonably priced,helpfulness:{helpful:0,unhelpful:0},title:Excellent value,submitted:15 June 2016,recommended:true,recommendedProducts:[],syndication:null}}],stats:{id:5067354,type:reviewStatistics,attributes:{overallRating:4. 2222,reviewCount:9,secondaryRatings:{Quality:4. 5555553,Ease of use:4,Design:4. 3333335},recommendationPercentage:78,ratingDistribution:[{Count:2,RatingValue:3},{Count:3,RatingValue:4},{Count:4,RatingValue:5}]}}},BazaarVoiceQuestionAnswerStore:{questions:[],stats:{attributes:{questionCount:0,answerCount:0}}},AlternativeProductStore:{products:[],bloomReachData:{alsoSearchedFor:u003Cdiv class=r-sf-widget\u003Eu003Cdiv class=r-sf-widget-merchant-cont\u003Eu003Cdiv id=r1 class=item\u003E
u003Cdiv class=r-sf-widget-merchant-img\u003E
u003Ca href=http:u002Fu002Fwww. argos. co. uku002Fproductu002F4769457\u003Eu003Cimg src=http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F4769457_R_SET?$Listers$\u003Eu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-title\u003E
u003Ca href=http:u002Fu002Fwww. argos. co. uku002Fproductu002F4769457\u003EBuy RSPCA Faux Leather Plush Dog Jacket -u003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-desc\u003E
RSPCA luxury lined brown faux-leather and honeycomb plush . . .
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-qv\u003E
u003Ca href=javascript:void(0); u003EMore details. . . u003Cu002Fau003E
u003Cu002Fdivu003E
u003Cu002Fdivu003Eu003Cu002Fdivu003Eu003Cu002Fdivu003Eu003Cdiv class=r-sf-widget\u003Eu003Cdiv class=r-sf-widget-merchant-cont\u003Eu003Cdiv id=r2 class=item\u003E
u003Cdiv class=r-sf-widget-merchant-img\u003E
u003Ca href=http:u002Fu002Fwww. argos. co. uku002Fproductu002F5285648\u003Eu003Cimg src=http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F5285648_R_SET?$Listers$\u003Eu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-title\u003E
u003Ca href=http:u002Fu002Fwww. argos. co. uku002Fproductu002F5285648\u003EBuy Pet Rebellion I Love My Dinner 100x45cmu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-desc\u003E
This absorbent food mat makes a perfect resting . . .
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-qv\u003E
u003Ca href=javascript:void(0); u003EMore details. . . u003Cu002Fau003E
u003Cu002Fdivu003E
u003Cu002Fdivu003Eu003Cu002Fdivu003Eu003Cu002Fdivu003Eu003Cdiv class=r-sf-widget\u003Eu003Cdiv class=r-sf-widget-merchant-cont\u003Eu003Cdiv id=r3 class=item\u003E
u003Cdiv class=r-sf-widget-merchant-img\u003E
u003Ca href=http:u002Fu002Fwww. argos. co. uku002Fproductu002F3818251\u003Eu003Cimg src=http:u002Fu002Fargos. scene7. comu002Fisu002Fimageu002FArgosu002F3818251_R_SET?$Listers$\u003Eu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-title\u003E
u003Ca href=http:u002Fu002Fwww. argos. co. uku002Fproductu002F3818251\u003EBuy Petface Reflective Black Paws Medium Dog Collaru003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-desc\u003E
The Petface Signature collar and lead set is . . .
u003Cu002Fdivu003E
u003Cdiv class=r-sf-widget-merchant-qv\u003E
u003Ca href=javascript:void(0); u003EMore details. . . u003Cu002Fau003E
u003Cu002Fdivu003E
u003Cu002Fdivu003Eu003Cu002Fdivu003Eu003Cu002Fdivu003E,relatedSearches:
u003Cdiv class=r-related-heading\u003ERelated Searchesu003Cu002Fdivu003E
u003Cdiv class=r-related-query\u003E
u003Ca class=r-related-query-link href=\u002Fproductu002F5285648\u003Epet food matsu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-related-query\u003E
u003Ca class=r-related-query-link href=\u002Fstaticu002FBrowseu002FID72u002F34955050u002Fc_1u002F1|category_root|Home+and+garden|33005908u002Fc_2u002F2|33005908|Storage|33008937u002Fc_3u002F3|cat_33008937|Storage+bags|34955050u002Fr_001u002F3|Colour|Clear|1. htm\u003Evacuum bagsu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-related-query\u003E
u003Ca class=r-related-query-link href=\u002Fstaticu002FBrowseu002FID72u002F34955050u002Fc_1u002F1|category_root|Home+and+garden|33005908u002Fc_2u002F2|33005908|Storage|33008937u002Fc_3u002F3|cat_33008937|Storage+bags|34955050u002Fr_001u002F4|Material|Wood|1. htm\u003Evacuum storage bags setu003Cu002Fau003E
u003Cu002Fdivu003E
u003Cdiv class=r-related-query\u003E
u003Ca class=r-related-query-link href=\u002Fstaticu002FBrowseu002FID72u002F34955050u002Fc_1u002F1|category_root|Home+and+garden|33005908u002Fc_2u002F2|33005908|Storage|33008937u002Fc_3u002F3|cat_33008937|Storage+bags|34955050u002Fr_001u002F4|Colour|Beech|1. htm\u003Eprotect & store vacuum bagsu003Cu002Fau003E
u003Cu002Fdivu003E
,scripts:[var br_related_rid = Rir1l2cplrbg14y9gsvbb-uf,r1,m1;,var br_iuid = aHR0cDovL3d3dy5hcmdvcy5jby51ay9yZXMvc3RhdGljL1Byb2R1Y3QvcGFydE51bWJlci81MDY3MzU0Lmh0bQ==;]}}}},plugins:{FetchrPlugin:{xhrPath:u002Fproduct-api,xhrTimeout:3000,corsPath:null}}},plugins:{}}_satellite. pageBottom()
*Prices correct as displayed but are subject to change. |