Railsã§ç»é¢ã®äžéšããã£ããã£ããŠç»åãšããŠããŠã³ããŒãã§ããæ©èœãã€ããŠã¿ãã
(photo credit: Stuck in Customs via photopin cc)
çµ¶è³éå¶äžã®ãTHE TOURNAMENTãã§ã¯ããŒãã¡ã³ã衚ãjsã§åºåããŠãŠã
ããã¯ããã§ã€ã³ã¿ã©ã¯ãã£ããªæãã«ã§ããããšãããã§ããããã¯ãç»åã§ä¿åããããšããããŒãºãæ ¹åŒ·ãã
ããã§ç»é¢ã®ãã®éšåã ããç»åãšããŠããŠã³ããŒãã§ããæ©èœãã€ããŠã¿ãã
ããããæ©èœãªæ°ãããŠããäœè£ããšæã£ããã©æå€ãšããã©ãããã£ãã§ããã
Continue Reading
ãŸãã¯ä»åã®èŠä»¶ãå®ç§ã«æºãããŠãããéœåã®ããgemã§ããªãããªãŒãšæ¢ããŠã¿ããã©ããã¶ããªãã
ïŒãããã£ããæããŠãã ããïŒ
ãã éšåéšåããã£ãŠãããããªããŒãã¯èŠã€ããã®ã§ããããçµã¿åãããŠä»åã®æ©èœãå®çŸããŸãã
html2canvas.jsã§DOMèŠçŽ ãæå®ããŠcanvasã«å€æ
HTML5ã®toDataURLã§canvasãDataURLã«å€æ
HTML5ã®download屿§ã«DataURLãæå®ããŠããŠã³ããŒããã¿ã³ãæå¹å
ãšããæãã§ãããŸããã
ã¡ãã£ãšããã©ããããã©é çªã«èŠãŠãããŸããã
html2canvas.jsã§DOMèŠçŽ ãæå®ããŠcanvasã«å€æ
DOMèŠçŽ ããããªãç»åã«ããŠãããã®ã¯ãªãã£ãã®ã§ãcanvasã«å€æããŠãããã®ã§ããŸãã
ã§ãç°¡åã«ã€ãããŠããªã䟿å©ã
ãŸãã¯å
¬åŒãµã€ãããjsãã¡ã€ã«ãããŠã³ããŒãããŠãrailsã®assets/javascriptsã«é
眮ã
application.jsããèªã¿èŸŒãã§ãããŸããããã§ãšããããæºåãªãã±ãŒã
察象ã®èŠçŽ ãcanvasã«å€æããã®ã¯ã
html2canvas($(".hoge"), { onrendered: (canvas) -> # xxxxx })
ãšããæãã$('.hoge')ã®ãšãã¯ãã£ããã£ãããèŠçŽ ã®ã«çœ®ãæããŠãã ãããŸãã xxxxxã®ãšãããcanvasã«å€æããããšã®åŠçã«ãªãã®ã§æ¬¡ã«ãããèŠãŠã¿ãŸãã
ã©ãã§ããããã©å€§äœããã¥ã¡ã³ãã¯çŽ ã®jsããããcoffee scriptã§ã©ãæžãã®ããã€ãæ©ããã
toDataURLã§canvasããDataURLã«å€æ
ãæ¬¡ã¯ãã®canvasãDataURLã«å€æããŸãã
ããã°ã©ãã³ã°ã§é£¯ãé£ããè
ããããããåå¿é²ïŒãããããDataURLãšã¯ïŒïŒïœcanvasãç»åã«å€æããæ¹æ³ïŒtoDataURL()ïŒïŒâ ã
ããããDataURLã£ãŠäœãã£ãã£ãŠãšãããã埩ç¿ãã€ã€å€æã
ãã£ãã®åŠçã«è¿œå ããŠã
html2canvas($(".hoge"), { onrendered: (canvas) -> canvasImage = canvas.toDataURL("image/jpeg") })
ããã ãã
æ¡åŒµåã¯"image/jpeg"ãš"image/png"ãéžã¹ãã¿ããã§ããªã
HTML5.jpãtoDataURL()ã¡ãœããã
ããæåŸã¯ãã®ããŒã¿ãããŠã³ããŒãã§ããããã«ããã ãã§ãã
HTML5ã®download屿§ã€ãã£ãŠããŠã³ããŒããªã³ã¯ãã€ãã
ãããããã°ããŠã³ããŒããªã³ã¯ã£ãŠäœã£ãããšããªããŠãã©ããããããªãŒãšèª¿ã¹ãã
åçŽã«ãªã³ã¯å
ããã©ãŠã¶ã§è§£éã§ãã圢åŒããšããŠã³ããŒãããã£ãŠæããªãã§ããªã
ãããŠããããšç»åã®å Žåãã©ãŠã¶ãè§£éã§ãã¡ããã®ã§ç»é¢å·Šäžã«ç»åã ã衚瀺ãããã
ã¿ãããªãããããã£ããããæãã«ãªã£ãŠããŸããå¥ã«ãããã§ããã©ãã
ããã¡ãã£ãšèª¿ã¹ãŠã¿ããHTML5ã§download屿§ã£ãŠã®ãã§ããŠãç°¡åã«ããŠã³ããŒããªã³ã¯ãå®çŸã§ããã¿ããã§ããã
WORKABROADãHTML5ã䜿ã£ãŠãã¡ã€ã«ã衚瀺ãããã«ããŠã³ããŒããããæ¹æ³ã
# views %a.hoge(href="#" download="hogehgoe") ããŠã³ããŒããªã³ã¯ã ã
ãšããæãã®ç©ºãªã³ã¯ãçšæããšããŠãDataURLãçšæã§ãããhrefã«ã»ããããŸãã
# javascripts html2canvas($(".hoge"), { onrendered: (canvas) -> canvasImage = canvas.toDataURL("image/jpeg") $(".hoge").attr('href', canvasImage) })
ããã§ãªã³ã¯ã¯ãªãã¯ãããšå€æãããç»åãããŠã³ããŒããããŸããïŒ
ãããããã£ããdownload屿§ã§ãã¡ã€ã«åæå®ããŠãã®ã«å
šç¶å¹ãããdownload.jpegã«ãªã£ãŠããŸãã
hrefã«DataURLæå®ãããã£ããã¡ãããšåæ ãããããããããæªãããŠãã®ããã
ãã°ããããã°ã£ããã©ãŸã æ
å ±ãå°ãªããŠè§£æ±ºããã
ããŒãã¡ãã£ãšæ°æã¡æªããã©ãããããªããã
Bootstrapã§ã¡ãã£ãšããæãã«
æåŸã«Bootstrapã®ããã©ã«ãComponentãã€ãã£ãŠããŠã³ããŒããªã³ã¯ã®è¡šç€ºãããæãã«ããŠã¿ãŸãã
ããããããšã¯ãããŠã³ããŒãã®æºåãã§ãããŸã§ã¯ãªã³ã¯ãã¿ã³ãLoading..衚瀺ã«ããŠã
æºåãã§ãããã¯ãªãã¯å¯èœç¶æ
ã«ãããšããæããè³ããå°œãããã§ããªã
ãœãŒã¹ã¯ãããªã®ã§ã
# views %a.hoge.btn.btn-sm.btn-default(href="#" download="hogehoge" data-loading-text="ç»åããŠã³ããŒãã®æºåãããŠããŸã...") ç»åããŠã³ããŒã # javascripts $(".hoge").button('loading') #=> loadingç¶æ
ã«ããšã html2canvas($(".hoge"), { onrendered: (canvas) -> canvasImage = canvas.toDataURL("image/jpeg") $(".hoge").attr('href', canvasImage) $(".hoge").button('reset') #=> å®äºãããã¯ãªãã¯å¯èœç¶æ
ã«æ»ã })
ãªããªãããæãã«ä»äžãã£ãæ°ãããŸãã
å®ç©ãèŠããæ¹ã¯ãã¡ããã©ãããããŒãã¡ã³ã衚ã®äžã«ããŠã³ããŒããã¿ã³ããããŸãã
(PCçã§ãã衚瀺ãããŸãã)
THE TOURNAMENTãFIFAã¯ãŒã«ãã«ãã 1990 ã€ã¿ãªã¢å€§äŒã