2 lines
8.4 KiB
JavaScript
2 lines
8.4 KiB
JavaScript
const poster=function(){function t(t){const d=document.querySelector(t.selector),c=n("div","id","wrapper"),g=n("canvas","id","canvas","block"),w=n("canvas","id","day"),p=n("canvas","id","date"),f=n("canvas","id","title"),u=n("canvas","id","content"),b=n("canvas","id","tags"),m=n("canvas","id","logo"),_=n("canvas","id","description");r(c,g,w,p,f,u,m,b,_),d.appendChild(c);const y=new Date,x=[aksrt__("week_sun"),aksrt__("week_mon"),aksrt__("week_tue"),aksrt__("week_wed"),aksrt__("week_thu"),aksrt__("week_fri"),aksrt__("week_sat")],v={font:"35px Arial",color:"rgba(255, 255, 255, 1)",position:"left"};l(w,v,aksrt__("week_prefix")+x[y.getDay()]);const k={font:"28px Arial",color:"rgba(255, 255, 255, 1)",position:"left"};l(p,k,y.getMonth()+1+" / "+y.getDate());const S={font:"bold 35px Arial",lineHeight:1.5,color:"#424242",length:2,position:"left"};S.font=t.titleStyle&&t.titleStyle.font||S.font,S.color=t.titleStyle&&t.titleStyle.color||S.color,S.position=t.titleStyle&&t.titleStyle.position||S.position,a(f,S,t.title);const A={font:"25px Arial",lineHeight:1.5,position:"left",color:"rgba(88, 88, 88, 1)"};A.font=t.contentStyle&&t.contentStyle.font||A.font,A.color=t.contentStyle&&t.contentStyle.color||A.color,A.lineHeight=t.contentStyle&&t.contentStyle.lineHeight||A.lineHeight,A.position=t.contentStyle&&t.contentStyle.position||A.position,a(u,A,t.content);const T={font:"24px Roboto Slab",position:"left",color:"#fc4e1f"};T.color=t.tagsStyle&&t.tagsStyle.color||T.color,a(b,T,t.tags);const I={font:"22px Arial",color:"#b4b4b4",lineHeight:1.2,position:"center"};a(_,I,t.description);const z=new Image;z.crossOrigin="Anonymous";const H=new Image;var C=0;H.crossOrigin="Anonymous",H.src=t.logo,H.onerror=function(){C++,C<3&&(H.src=t.logo)};const W=new Image;W.src=t.qrcode;var j=0;const q=function(){0==j&&(t.banner?z.src=t.banner:j=1),1==j&&(t.banner_default?z.src=t.banner_default:j=2),2==j&&(z.src=t.banner_spare),R()},R=function(){g.width=s,g.height=h,z.onload=function(){const n=g.getContext("2d");n.fillStyle="rgba(255, 255, 255, 1)",n.fillRect(0,0,g.width,g.height);var r="product"===t.type?g.width:g.height/2;const l=o(g.width,r,z.width,z.height);if(n.drawImage(z,l.sx,l.sy,l.sWidth,l.sHeight,0,0,g.width,r),n.drawImage(w,0,35),n.drawImage(p,0,85),n.strokeStyle="#00a1ff",n.lineWidth=7,n.beginPath(),n.lineCap="round",n.moveTo(40,r+38),n.lineTo(40,r+74),n.stroke(),"product"===t.type){e(n,t.title,g.width,1,"bold 35px Arial","#424242",50,20,r+69);var a,m,y,x,v=t.is_points?"#ff6f06":"#FB3961",k=t.is_points?aksrt__("points"):aksrt__("currency_yuan"),S=r+69+50+20;t.is_points?(a=e(n,t.price,g.width,1,"bold 40px Arial",v,50,0,S),m=e(n,k,g.width,1,"22px Arial",v,50,4+a.width,S-2),t.original_price&&(y=e(n,t.original_price,g.width-a.width-m.width,1,"25px Arial","#878787",50,8+a.width+m.width,S),x=e(n,k,g.width-a.width-m.width,1,"22px Arial","#878787",50,10+a.width+m.width+y.width,S-1),n.strokeStyle="#878787",n.lineWidth=2,n.beginPath(),n.lineCap="round",n.moveTo(8+a.width+m.width+42,S-15),n.lineTo(8+a.width+m.width+42+x.width+y.width,S-3),n.stroke())):(m=e(n,k,g.width,1,"26px Arial",v,50,-10,S-1),a=e(n,t.price,g.width,1,"bold 40px Arial",v,50,-10+m.width,S),t.original_price&&(x=e(n,k,g.width-a.width-m.width,1,"23px Arial","#878787",50,0+a.width+m.width,S-1),y=e(n,t.original_price,g.width-a.width-m.width,1,"25px Arial","#878787",50,0+a.width+m.width+x.width,S),n.strokeStyle="#878787",n.lineWidth=2,n.beginPath(),n.lineCap="round",n.moveTo(0+a.width+m.width+42,S-15),n.lineTo(0+a.width+m.width+42+x.width+y.width,S-3),n.stroke()));var A=a.width+m.width+(x&&x.width?x.width:0)+(y&&y.width?y.width:0),T=g.width-A-20;T>200&&e(n,t.tags,T,1,"25px Arial","#fc4545",50,A+50,S)}else n.drawImage(f,20,r+40),n.drawImage(b,0,r+160),n.drawImage(u,0,r+220);n.strokeStyle="rgba(122, 122, 122, 0.2)",n.lineWidth=2,n.rect(30,g.height-230,g.width-60,200),n.stroke();const I=i(80,g.height-190,300,100,H.width,H.height);n.drawImage(H,I.dx,I.dy,I.dWidth,I.dHeight),n.drawImage(W,g.width-200,g.height-200,120,120),n.drawImage(_,0,g.height-60);const C=new Image;C.crossOrigin="Anonymous",C.src=g.toDataURL("image/png");const j=t.radio||.7;C.width=s*j,C.height=h*j,C.className="loaded-img",n.clearRect(0,0,g.width,g.height),g.style.display="none",d.querySelector(".loaded-img")?d.querySelector(".loaded-img").src=C.src:d.appendChild(C),d.removeChild(c),d.classList.add("loaded"),jQuery.isFunction(t.callback)&&t.callback(d)},z.onerror=function(){if(j++,j>=3)return jQuery.isFunction(t.onerror)&&t.onerror(d);q()}};q()}function e(t,e,i,o,n,r,l,a,d){let s=[],h="",c=[];if(i-=120,a+=38,e=e.replace(/[\r\n]/g,""),s=e.split(""),t.fillStyle=r,t.font=n,t.measureText(e).width<=i)c.push(e);else for(let e=0;e<s.length;e++){if(c.length==o&&e<s.length-1){c[c.length-1]+="...";break}t.measureText(h).width<i?(h+=s[e],e===s.length-1&&c.push(h)):(e--,c.push(h),h="")}var g=0;for(let e=0;e<c.length;e++)g=Math.max(g,t.measureText(c[e]).width),t.fillText(c[e],a,d+e*l,i);return{width:g,height:c.length*l}}function i(t,e,i,o,n,r){var l=t,a=e,d=i,s=o;return n>r||n==r&&i<o?(s=r*d/n,a=e+(o-s)/2):(n<r||n==r&&i>o)&&(d=n*s/r,l=t+(i-d)/2),{dx:l,dy:a,dWidth:d,dHeight:s}}function o(t,e,i,o){var n=0,r=0,l=i,a=o;return i>o||i==o&&t<e?(l=t*a/e,n=(i-l)/2):(i<o||i==o&&t>e)&&(a=e*l/t,r=(o-a)/2),{sx:n,sy:r,sWidth:l,sHeight:a}}function n(t,e,i,o="none"){const n=document.createElement(t);return n.setAttribute(e,i),n.style.display=o,n.width=s,n}function r(t,...e){e.forEach(e=>{t.appendChild(e)})}function l(t,e,i){const o=t.getContext("2d");t.height=parseInt(e.font.match(/\d+/),10)+20,o.font=e.font,o.fillStyle=e.color,o.textBaseline="top";let n=0,r=0,l=!1;for(let e=0;e<i.length;e++)if(n+=o.measureText(i[e]).width,n>t.width-60){l=!0,r=e;break}let a=30;l&&(i=i.substring(0,r),a=t.width/2-n/2),d&&(o.strokeStyle="#6fda92",o.strokeRect(0,0,t.width,t.height)),"center"===e.position?(o.textAlign="center",o.fillText(i,t.width/2,2)):"left"===e.position?o.fillText(i,a,2):(o.textAlign="right",o.fillText(i,t.width-a,2))}function a(t,e,i){const o=t.getContext("2d"),n=parseInt(e.font.match(/\d+/),10);d&&(o.strokeStyle="#6fda92",o.strokeRect(0,0,t.width,t.height)),o.font=e.font,o.fillStyle=e.color,o.textBaseline="top",o.textAlign="center";let r=0;"center"===e.position?r=t.width/2:"left"===e.position?(o.textAlign="left",r=40):(o.textAlign="right",r=t.width-40);let l=0,a=0,s=2;for(let d=0;d<i.length;d++)l+=o.measureText(i[d]).width,l>t.width-120&&(o.fillText(i.substring(a,d),r,s),s+=n*e.lineHeight,l=0,a=d),d===i.length-1&&o.fillText(i.substring(a,d+1),r,s)}const d=0,s=768,h=1168;return{init:t}}();jQuery("body").on("click","[poster-share]",function(){function t(t){if(null!=t){l.find(".poster-download").attr("href",l.find("img").attr("src")).attr("download","poster_"+i+".png").removeClass("hide");var e=l.find(".poster-imgbox").outerHeight();l.find(".loading-mask").fadeOut(200),l.find(".modal-content").css({height:e,transition:".2s"}),setTimeout(function(){l.find(".modal-content").css({height:"",overflow:"",transition:""})},200)}}var e=jQuery(this),i=e.attr("poster-share"),o="modal_poster_"+i,n="#"+o,r='<div class="modal fade flex jc" id="'+o+'" tabindex="-1" role="dialog" aria-hidden="false"> <div class="modal-dialog poster-share hover-show" role="document"> <div class="modal-content" style="height:220px;overflow:hidden"> <div class="poster-imgbox hover-show"> </div> <div class="flex jc loading-mask absolute main-bg radius8"><div class="loading zts fa-2x"></div><div class="muted-2-color box-body">'+aksrt__("poster_generating")+'</div> </div> </div> <div class="padding-6 abs-center hover-show-con text-center" style="top:auto;"><a type="button" href="javascript:;" class="but cir jb-blue poster-download hide"><i class="fa fas fa-download" aria-hidden="true"></i></a><button data-dismiss="modal" class="but cir jb-yellow ml10"><svg aria-hidden="true" class="icon em12"><use xlink:href="#icon-close"></use></svg></button></div> </div> </div>';jQuery(".modal:not("+n+")").modal("hide");var l=jQuery(n);if(l.length)return l.modal("show"),!1;jQuery("body").append(r),l=jQuery(n),l.modal("show");var a={action:"poster_share_data",id:i};aksrt_ajax(e,a,function(e){poster.init({banner:e.banner,banner_default:e.banner_default,banner_spare:e.banner_spare,selector:n+" .poster-imgbox",title:e.title,content:e.content,logo:e.logo,tags:e.tags,description:e.description,qrcode:e.qrcode,type:e.type,is_points:e.is_points,price:e.price,original_price:e.original_price,onerror:function(){notyf(aksrt__("poster_load_failed"),"danger")},callback:t})},"stop",!0)});
|