Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // console.log('<insertRecomendationItem>');
- function insertRecomendationItem() {
- // Проверка на мультикорзину
- if ($('.bCartTotal .eCartTotal_summButton, .bCartPaymentContainer .submitBtn').length > 1)
- return false;
- var cartStorage = Core.Namespace.imp('storages/cart_page/cart_page_storage'),
- cartModel = cartStorage.getModelInstance(),
- cartOzonModel,
- isShowProgressBar = false,
- mainTitle = '${title}',
- itemID = '141827520',
- priceTargetSum = parseInt('3500'),
- areaId = OzonShop.Storages.LocationStorage.model.get('areaId'),
- minSumForProgressBar = 0,
- startCheckoutRecommendation,
- $targetElement = $('.eCartTotal_DYcheckoutRecommendation');
- var getDYRecommendations = function (widgetId) {
- var deferred = DYO.Q.defer();
- DYO.recommendationWidgetData(widgetId, {
- context: {
- type: "CART",
- data: [].map.call(document.querySelectorAll('.eCartSplitItems [data-id]'), function (el) {
- return el.getAttribute("data-id")
- })
- }
- },
- function (err, data) {
- if (err || data.slots.length === 0) {
- deferred.reject(err);
- } else {
- deferred.resolve(data.slots.map(function (slot) {
- return slot.item.sku
- }));
- }
- });
- return deferred.promise;
- };
- var popupModel = new OzonShop.Modules.Banners.CheckoutRecommendation.CheckoutRecommendationModel();
- var CheckoutRecommendationClass = OzonShop.Modules.Banners.CheckoutRecommendation.CheckoutRecommendation.extend({
- _addToCart() {
- cartStorage.actions.dispatch(cartStorage.actions.CART.ADD_RECOMMENDATION_ITEM, {
- itemId: itemID
- });
- },
- _close() {
- this.$element.remove();
- // Отправить событие о закрытии
- },
- progressBarUpdate() {
- cartOzonModel = Core.Namespace.imp('storages/cart_page/cart_page_storage').getModelInstance().nestedModels.carts.get('ozon');
- var total = cartOzonModel.splits[0],
- price = total && total.price,
- isShowProgressBar = (price < priceTargetSum) && (price > minSumForProgressBar);
- this.model.set('meta.isShowProgressBar', isShowProgressBar);
- if (!isShowProgressBar)
- return;
- // Для прогрессбара
- var deltaToFreeDelivery = priceTargetSum - price;
- var progress = 100 - deltaToFreeDelivery / ((priceTargetSum - minSumForProgressBar) / 100);
- this.model.set('meta.priceDifference', deltaToFreeDelivery);
- this.model.set('meta.progress', progress);
- },
- initialize() {
- var self = this;
- cartOzonModel = cartModel.nestedModels.carts.get('ozon');
- // Смена города из корзины
- cartStorage.actions.bind(cartStorage.actions.CART.CHANGE_CITY, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Сохрании информации о том, что город определн корректно
- cartStorage.actions.bind(cartStorage.actions.CART.SET_EXACT_CITY, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Добавление товара из рекоммендаций
- cartStorage.actions.bind(cartStorage.actions.CART.ADD_RECOMMENDATION_ITEM, (result) => { result.then(function() {self.$element.remove(); startCheckoutRecommendation()});});
- // Включение кодового слова
- cartStorage.actions.bind(cartStorage.actions.CART.ACTIVATE_MAGIC_CODE, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Изменение количества товаров
- cartStorage.actions.bind(cartStorage.actions.CART.CHANGE_QUANTITY, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Удаление товара из корзины
- cartStorage.actions.bind(cartStorage.actions.CART.REMOVE_CART_ITEM, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Восстановление товара в корзине
- cartStorage.actions.bind(cartStorage.actions.CART.RESTORE_CART_ITEM, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Удалание всех товаров в корзине
- cartStorage.actions.bind(cartStorage.actions.CART.REMOVE_ALL_CART_ITEMS, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- // Восстановление всех товаров в корзине
- cartStorage.actions.bind(cartStorage.actions.CART.RESTORE_ALL_CART_ITEMS, (result) => { result.then(function() {self.progressBarUpdate({}, cartOzonModel); self.render()});});
- self.progressBarUpdate({}, cartOzonModel);
- },
- model: popupModel
- });
- var popupView = new CheckoutRecommendationClass();
- startCheckoutRecommendation = function () {
- var defer = $.Deferred();
- getDYRecommendations(27765).then(function (SKU) {
- console.log('>recived SKUs>: ', SKU);
- itemID = SKU[0];
- OzonShop.Services.ItemServiceV5.getItemsData({
- items: [{item: itemID}],
- fields: ['Name', 'Availability', 'CoverImage', 'Images', 'Description', 'Price', 'PriceCurrency'],
- areaId: areaId,
- currency: ['USD', 'EUR']
- }).then(function (data) {
- defer.resolve(data[0]);
- }, function (error) {
- }
- );
- });
- $.when(defer).then(function (data) {
- // Показываем только товары в наличии
- if (data.availability &&
- data.availability[0] &&
- data.availability[0].availabilityType !== 'InStock')
- return;
- popupView.model.set('', data);
- popupView.model.set('meta.priceTargetSum', priceTargetSum);
- popupView.model.set('meta.priceDifference', priceTargetSum - data.price.price);
- popupView.progressBarUpdate();
- popupView.render();
- $targetElement.html(popupView.element);
- $targetElement.append('<style>.eDYRecomendPopup_arrowTop::after {left: -3px; top: -6px;}</style>');
- });
- };
- startCheckoutRecommendation();
- }
- DY.API('callback', insertRecomendationItem);
Add Comment
Please, Sign In to add comment