-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathvtex-coresPrateleira.min.js
37 lines (37 loc) · 14.7 KB
/
vtex-coresPrateleira.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* Cores Na Prateleira
* @author Carlos Vinicius [Quatro Digital]
* @version 6.1 Beta
* @license MIT <http://pt.wikipedia.org/wiki/Licen%C3%A7a_MIT>
*
* Para debugar inclua na url: debugcp
*/
(function(z){"function"!==typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});jQuery.fn.coresPrateleira=function(B){var x,b,p,t,u,q;x=jQuery("");q=/http\:\/\/[a-z\-\.]+(?=\/)/i;u=-1<document.location.href.toLowerCase().indexOf("debugcp");p=function(a,b){"object"===typeof console&&("undefined"!==typeof b&&"alerta"===b.toLowerCase()?console.warn("[Cores Prateleira]\n"+a):"undefined"!==typeof b&&"info"===b.toLowerCase()?console.info("[Cores Prateleira]\n"+
a):console.error("[Cores Prateleira]\n"+a))};t=function(b,d){"object"===typeof console&&u&&("undefined"!==typeof d&&"alerta"===d.toLowerCase()?console.warn("[Debug][Cores Prateleira]\n"+b):"undefined"!==typeof d&&"info"===d.toLowerCase()?console.info("[Debug][Cores Prateleira]\n"+b):console.error("[Debug][Cores Prateleira]\n"+b))};b={loadSkuJqxhr:null,productOriginalInfo:null,productOriginalLink:null,productOriginalSave:null,saveCount:0,onHover:!1,skuList:[],skuQueue:[],productSkus:{},skuGroup:{},
skuProduct:{},productHtml:{},productShelf:null,options:{productsLi:">ul li",messageRequestFail:"N\u00e3o foi posss\u00edvel obter as informa\u00e7\u00f5es deste item.",saveText:"Economize: R$ #value",currency:"R$ ",productPageUrl:"/cores-prateleira",skuGroupSelector:".sku-selector[name='espec_0']",restoreOriginalDetails:!1,checkLinkEquals:!1,forceAvailable:!1,forceImgList:!1,autoSetup:!0,checkIsAvaliable:!1,useProductField:!1,checkDuplicateUri:!0,speedFade:200,thumbsQuantity:4,minSkuQttShow:2,productImgId:30,
thumbImgId:3,action:2,ajaxCallback:function(){},callback:function(){},thumbRendered:function(){}},init:function(a){jQuery.extend(b.options,a);b.createSkuElementsList();b.options.callback()},createSkuElementsList:function(){var a=b.productShelf;0<a.length&&a.each(function(a){var c=jQuery(this);c.hasClass("vtex-cpIsActivated")||(v=b.exec(c,a))})},exec:function(a,d){var c=a.find(b.options.productsLi);if(1>c.length)return p("Prateleira n\u00e3o encontrada \n ("+c.selector+")"),!1;a.addClass("vtex-cpIsActivated");
c.each(function(a){var c,g,h,j,m,l,k,n,r;c=jQuery(this);!0===b.options.autoSetup&&b.shelfSetup(c);g=c.find(".vtex-cpSkuList");h=c.find(".vtex-cpProductField");m=d.toString()+"_"+a.toString();n=function(a){var d;j=b.groupSku(a,m);c.find(".vtex-cpProductImage img").addClass("vtex-cpOriginalImage");skuArrayLength=j.length;(b.options.forceAvailable||b.options.forceImgList)&&g.addClass("vtex-cpShow").removeClass("vtex-cpHide");if(skuArrayLength>=b.options.minSkuQttShow)for(var e=0;e<skuArrayLength;e++){var h,
k;h=j[e][1];k=j[e][0].trim();a=k.replace(q,"");if(b.options.checkLinkEquals&&(l=a==(c.find(".vtex-cpProductLink:first").attr("href")||"").trim().replace(q,""))){t("O sku \u201c"+h+"\u201d foi ignorado pois tem o mesmo link que o produto existente na vitrine.\n URI: "+a,"info");continue}if(b.options.checkDuplicateUri&&0<c.find(".vtex-cpSkuIds[ref='"+a+"']").length)t("O sku \u201c"+h+"\u201d foi ignorado pois j\u00e1 existe uma thumb na vitrine com o mesmo link.\n URI: "+a,"info");else if(d=c.data("vtex-cp_skusCount"),
"undefined"==typeof d?c.data("vtex-cp_skusCount",d=0):c.data("vtex-cp_skusCount",d+1),d>=b.options.thumbsQuantity){c.find(".vtex-cpViewMore").addClass("vtex-cpShow").removeClass("vtex-cpHide");break}else""!==h&&!(skuArrayLength>b.options.thumbsQuantity&&d>=b.options.thumbsQuantity-1)&&(d=jQuery("<span class='vtex-cpSkuIds vtex-cpIndex_"+d+" vtex-cpSkuId_"+h+" vtex-cpHide'><span class='vtex-cpInner'></span><span class='vtex-cpInner2'></span></span>"),d.attr({ref:a,id:h}),g.append(b.setThumbs(c,h,d,
k,m)))}r=c.find(".vtex-cpSkuIds");r.length>=b.options.minSkuQttShow&&r.removeClass("vtex-cpHide");r.first().addClass("vtex-cpFirst")};b.options.useProductField?(a=h.find("li").text().trim().split("|"),u&&""===h.find("li").text().trim()&&t("O campo produto n\u00e3o esta retornando nenhum valor.\n Produto: "+(c.find(".vtex-cpProductLink[title]:first").attr("title")||"[T\u00edtulo n\u00e3o encontrado]"),"info"),n(a)):(k=c.find(".vtex-cpProdId").val(),h=c.find(".vtex-cpUri").val(),"undefined"===typeof k&&
p("N\u00e3o foi poss\u00edvel obter o ID do produto no campo \u201cvtex-cpProdId\u201d."),"undefined"===typeof h&&p("N\u00e3o foi poss\u00edvel obter a URL do produto no campo \u201cvtex-cpUri\u201d."),b.getProductInfo(function(a){n(a,k)},k,h))})},getProductInfo:function(a,d,c,e,f,g,h){var j,m,l,k=[],n,r,q=[],u=!0;e="undefined"==typeof e?!1:e;jQuery.ajax({url:b.options.productPageUrl+"?idproduto="+d,success:function(s){var A=[],x=[],w,y=-1;if(-1<s.indexOf("Ocorreu um erro"))return p("Erro ao tentar obter os dados na p\u00e1gina de produto espec\u00edfica do plugin. Uri utilizada:"),
!1;j=jQuery(s);m=!1;l=null;b.productHtml[d]=j;j.filter("script:not([src])").each(function(){var a;a=this.innerHTML;if(-1<a.indexOf("myJSONSkuSpecification"))return a=a.replace(":,",':"",').replace(":}",':""}').replace(":]",':""]'),eval(a),l=myJSONSkuSpecification,m=!0,!1});if(!m)return p("N\u00e3o foi poss\u00edvel localizar as especifica\u00e7\u00f5es do SKU. Id produto: "+d);null!==b.options.skuGroupSelector&&j.find(b.options.skuGroupSelector).each(function(){var a=z(this).val()||"";""!==a&&A.push(a)});
r=l.skus.length;for(n=0;n<r;n++)for(var C in l.skus[n]){s=l.skus[n][C].split(",").shift();if(null!==b.options.skuGroupSelector){w=C.split(",");for(var B in w)if(y=z.inArray(w[B],A),-1<y)break;w=z.inArray(A[y],x);if(-1<y&&0>w)x.push(A[y]);else{-1<w?t("O SKU "+s+" foi ignorado pois seguindo as especifica\u00e7\u00f5es obtidas na p\u00e1gina de produto atrav\u00e9s do seletor \u201c"+b.options.skuGroupSelector+"\u201d ele tem as mesmas imagens que outro SKU j\u00e1 existente na lista.","info"):t("O SKU "+
s+" foi ignorado pois nenhuma das especifica\u00e7\u00f5es obtidas na p\u00e1gina de produto atrav\u00e9s do seletor \u201c"+b.options.skuGroupSelector+"\u201d coincidem com as dele que s\u00e3o \u201c"+C+"\u201d","info");continue}}k.push(s+";"+c);b.skuProduct[s]=d}b.productSkus[d]=k;f=f||[];q=jQuery.merge(f,k);"undefined"!=typeof h&&h.addClass("checked");e||j.find(".vtex-cpRelated").each(function(){var c,d;c=b.getRelatedProductInfo(z(this));d=c.pop();c.length&&(u=!1,b.getProductInfo(a,c[0],c[1],
!0,q,j,d))});e&&g.find(".vtex-cpRelated.checked").length>=g.find(".vtex-cpRelated").length?(debugCallType="Recursive [stop]",a(q,debugCallType)):u&&"undefined"==typeof g&&(debugCallType="Direct [exit]",a(k,debugCallType))},error:function(){p("Erro ao tentar obter os dados na p\u00e1gina de produto espec\u00edfica do plugin. Uri utilizada:")}})},getRelatedProductInfo:function(a){var b,c,e=[a];b=a.find(".vtex-cpProdId").val();c=a.find(".vtex-cpUri").val();"undefined"!==typeof b&&"undefined"!==typeof c&&
(e=[b,c,a]);return e},groupSku:function(a,d){var c={},e={},f=[],g,h,j;j=a.length;if(2>j&&""===a[0])return f;for(var m=0;m<j;m++)g=a[m].split(";"),h=g.pop(),g=g.shift(),"undefined"!=typeof h&&("undefined"==typeof c[g]?c[g]=[h]:c[g].push(h));for(var l in c){j=c[l].length;tmp2=[];if(3<j){var k;h=parseInt(j/3,10);g=j%3;k=2*h;for(m=0;m<h;m++)tmp2.push(c[l][m]),tmp2.push(c[l][m+h]),tmp2.push(c[l][m+k]);1==g?tmp2.push(c[l][j-1]):2==g&&(tmp2.push(c[l][j-1]),tmp2.push(c[l][j-2]))}else tmp2=c[l];f.push([tmp2.shift(),
l]);e[l]=tmp2}b.skuGroup[d]=e;return f},setThumbs:function(a,d,c,e,f){var g=a.find(".vtex-cpOverlay");c.addClass("vtex-cpLoadingData");b.loadSku(a,d,g,b.options.action,c,e,f);b.options.thumbRendered(a,c,b.productHtml,b.skuProduct,d);return c},checkIsAvaliable:function(a,d,c,e,f,g){if(e[0].Availability||!b.options.checkIsAvaliable)b.mouseActions2(a,d,c,e,f);else{var h=a.find(".vtex-cpOverlay");"undefined"!=typeof b.skuGroup[g][f]&&0<b.skuGroup[g][f].length?b.loadSku(a,b.skuGroup[g][f].shift(),h,b.options.action,
c,f,g):b.mouseActions2(a,d,c,e,f)}},mouseActions2:function(a,d,c,e,f){b.setImgThumb(c,e);b.setClass(c,e);c.bind({mouseenter:function(){a.find(".vtex_cpActiveSku").removeClass("vtex_cpActiveSku");c.addClass("vtex_cpActiveSku");b.productOriginalInfo=a.find(".vtex-cpProductInfoWrap").children().clone();b.productOriginalLink=a.find(".vtex-cpProductLink:first").attr("href")||"";var d=a.find(".vtex-cpSave");b.productOriginalSave=[d.html()||"",d.attr("class")||""];b.formatInfo(e,a,f);b.onHover=!0}});b.options.restoreOriginalDetails&&
c.bind({mouseleave:function(){a.find(".vtex_cpActiveSku").removeClass("vtex_cpActiveSku");b.setOriginalElements(a);b.onHover=!1}});return c},mouseActions:function(a,d,c){c.bind({mouseenter:function(){a.find(".vtex_cpActiveSku").removeClass("vtex_cpActiveSku");c.addClass("vtex_cpActiveSku");var e=a.find(".vtex-cpOverlay").show();b.loadSku(a,d,e);b.productOriginalInfo=a.find(".vtex-cpProductInfoWrap").children().clone();b.onHover=!0},mouseleave:function(){a.find(".vtex_cpActiveSku").removeClass("vtex_cpActiveSku");
a.find(".vtex-cpOverlay").hide();b.loadSkuJqxhr.abort();b.setOriginalElements(a);b.onHover=!1}});return c},formatInfo:function(a,d,c){d.addClass("vtex-cpInfoFromSKU");var e=a[0];if(e.Availability||b.options.forceAvailable)if(a=d.find(".vtex-cpProductInfo"),a.addClass("vtex-cpShow").removeClass("vtex-cpHide"),d.find(".vtex-cpProductUnavailable").addClass("vtex-cpHide").removeClass("vtex-cpShow"),a.find(".vtex-cpBestPrice").text(b.options.currency+b.numberFormat(e.Price)),d.find(".vtex-cpSave").html(b.options.saveText.replace("#value",
b.numberFormat(e.ListPrice-e.Price))),e.Price<e.ListPrice?(a.find(".vtex-cpListPriceWrap").addClass("vtex-cpShow").removeClass("vtex-cpHide").find(".vtex-cpListPrice").text(b.options.currency+b.numberFormat(e.ListPrice)),d.find(".vtex-cpSave").addClass("vtex-cpShow").removeClass("vtex-cpHide")):(a.find(".vtex-cpListPriceWrap").addClass("vtex-cpHide").removeClass("vtex-cpShow"),d.find(".vtex-cpSave").addClass("vtex-cpHide").removeClass("vtex-cpShow")),1<e.BestInstallmentNumber){var f=a.find(".vtex-cpInstallment").addClass("vtex-cpShow").removeClass("vtex-cpHide");
f.find(".vtex-cpNumbersOfInstallment").text(e.BestInstallmentNumber);f.find(".vtex-cpInstallmentValue").text(b.options.currency+b.numberFormat(e.BestInstallmentValue));a.find(".vtex-cpFullRegularPrice").addClass("vtex-cpHide").removeClass("vtex-cpShow")}else a.find(".vtex-cpInstallment").addClass("vtex-cpHide").removeClass("vtex-cpShow"),a.find(".vtex-cpFullRegularPrice").addClass("vtex-cpShow").removeClass("vtex-cpHide");else d.find(".vtex-cpProductInfo").addClass("vtex-cpHide").removeClass("vtex-cpShow"),
d.find(".vtex-cpProductUnavailable").addClass("vtex-cpShow").removeClass("vtex-cpHide");a=d.find(".vtex-cpProductImage");var g=d.find(".vtex-cpImgOverlay"),h=a.find(".vtex-cpOriginalImage"),j=h[0],m=h.clone(),f=m.attr("width")||j.naturalWidth,j=m.attr("height")||j.naturalHeight,e=b.getImageUrl(e,b.options.productImgId),m=d.find("img[src*='"+(e[0]||h.attr("src"))+"']"),l=0<m.length?!0:!1,k=jQuery('<img src="'+(e[0]||h.attr("src"))+'" alt="" '+("undefined"!==typeof f?'width="'+f+'"':"")+" "+("undefined"!==
typeof j?'height="'+j+'"':"")+' class="vtex-cpSkuImage" style="display:none;" />');""!==c&&d.find(".vtex-cpProductLink").attr("href",c.replace(q,""));g.show();l?(h.stop(!0).fadeOut(b.options.speedFade),g.hide(),d.find(".vtex-cpSkuImage").stop(!0).fadeOut(b.options.speedFade),m.stop(!0).fadeTo(b.options.speedFade,1)):(k.load(function(){b.onHover?(h.stop(!0).fadeOut(b.options.speedFade),g.hide(),d.find(".vtex-cpSkuImage").stop(!0).fadeOut(b.options.speedFade),k.stop(!0).fadeTo(b.options.speedFade,1)):
(g.hide(),b.setOriginalImg(d))}),a.append(k))},setOriginalElements:function(a){null!==b.productOriginalInfo&&a.hasClass("vtex-cpInfoFromSKU")&&(a.removeClass("vtex-cpInfoFromSKU").find(".vtex-cpProductInfoWrap").html(b.productOriginalInfo),b.setOriginalImg(a),b.setOriginalLink(a),b.setOriginalSaveText(a))},setOriginalImg:function(a){a=a.find(".vtex-cpProductImage");a.find(":not(.vtex-cpOriginalImage)").stop(!0).fadeOut(b.options.speedFade);a.find(".vtex-cpOriginalImage").stop(!0).fadeTo(b.options.speedFade,
1)},setOriginalLink:function(a){a.find(".vtex-cpProductLink").attr("href",b.productOriginalLink)},setOriginalSaveText:function(a){a.find(".vtex-cpSave").html(b.productOriginalSave[0]).attr("class",b.productOriginalSave[1])},setImgThumb:function(a,d){var c=b.getImageUrl(d[0],b.options.thumbImgId);a.removeClass("vtex-cpLoadingData");0<c.length&&(a.css("background-image","url('"+c[0]+"')"),a.find(".vtex-cpInner").append('<img src="'+c[0]+'" alt="" class="vtex-cpImgsThumb vtex-cpThumb_'+d[0].Id+'" alt=""/>'))},
loadSku:function(a,d,c,e,f,g,h){e=e||1;f=f||x;d=d.toString().trim();var j=d.toString();"undefined"!==typeof b.skuQueue[j]?b.skuQueue[j].push({liElem:a,skuId:d,span:f,link:g}):(b.skuQueue[j]=[],b.loadSkuJqxhr=jQuery.ajax({url:"/produto/sku/"+d,data:"json",success:function(c,l,k){if("object"!==typeof c)return p(b.options.messageRequestFail+"\n skuId: "+d+"\n(textStatus:'"+l+"', jqXHR:'"+k+"')"),f.hide(),!1;if(0!==k.status){b.skuQueue[j].push({liElem:a,skuId:d,span:f,link:g});l=b.skuQueue[j].length;
k=b.skuQueue[j];for(var n=0;n<l;n++)switch(e){case 1:b.formatInfo(c,k[n].liElem);break;case 2:b.checkIsAvaliable(k[n].liElem,k[n].skuId,k[n].span,c,k[n].link,h)}b.skuQueue[j]=void 0;b.options.ajaxCallback()}},error:function(a,c,e){p(b.options.messageRequestFail+"\n skuId: "+d+"\n(textStatus:'"+c+"', jqXHR:'"+a+"', errorThrown:'"+e+"')");f.hide()}}))},numberFormat:function(a){var b="",c=b="";a=a.toFixed(2).split(".");for(var e=0,f=a[0].split("").length,g=a[0].length;0<g;g--)b=a[0].substr(g-1,1),e++,
0===e%3&&f>e&&(b="."+b),c=b+c;return b=c+","+a[1]},getImageUrl:function(a,b){var c=[];if(1>a.Images.length)return p("N\u00e3o foram encontradas imagens para o SKU: "+a.Id),c;for(var e in a.Images)for(var f in a.Images[e])if(a.Images[e][f].ArchiveTypeId==b){c.push(a.Images[e][f].Path);break}return c},setClass:function(a,b){var c=b[0].Name.replace(/[^a-zA-Z0-9\-\_]/g,"");a.addClass("vtex-cp_"+c)},shelfSetup:function(a){a.find("a[href='"+a.find(".vtex-cpUri").val()+"']").addClass("vtex-cpProductLink");
var d=null;a.find("img").each(function(){var a=jQuery(this);d=null===d?a:d;if(0<(a.attr("width")||0))d=a});d.before('<div class="vtex-cpImgOverlay"></div>');d.parent().addClass("vtex-cpProductImage");var c=jQuery('<span class="vtex-cpProductTextWrap"><div class="vtex-cpOverlay"></div></span>'),e=jQuery('<span class="vtex-cpProductInfoWrap"></span>'),f=a.find(".vtex-cpProductInfo");f.before(c);f.appendTo(e);a.find(".vtex-cpProductUnavailable").appendTo(e);e.appendTo(c);1>b.saveCount&&(c=/\sR\$\s[0-9]+,[0-9]{1,2}/i,
a=a.find(".vtex-cpSave").text(),-1<a.search(c)&&(b.options.saveText=a.replace(c," R$ #value")),b.saveCount++)}};b.productShelf=jQuery(this);b.init(B);return b.productShelf}})(jQuery);$(function(){$(".prateleira").coresPrateleira({checkDuplicateUri:!1});$(document).ajaxStop(function(){$(".prateleira").coresPrateleira({checkDuplicateUri:!1})})});