Advertisement
nlozovan

Untitled

Jan 14th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. var saveScreenshot = function() {
  2.  
  3. // Prevent making screenshots if a logo is added
  4. if ( $scope.pricing.feat.url.length > 5 ) return;
  5.  
  6. var elements = jQuery('#fpt-builder-blockslist .fpt-builder-block');
  7.  
  8.  
  9. var data = {
  10. pricing_id: $scope.pricing_id,
  11. }
  12.  
  13. console.log('This is screenshot creation!')
  14.  
  15.  
  16. var mainCanvas = document.createElement('canvas');
  17. var mainCtx = mainCanvas.getContext('2d');
  18.  
  19. mainCanvas.width = 0;
  20. mainCanvas.height = 0;
  21.  
  22. var render = function(index) {
  23.  
  24. var el = elements.eq(index);
  25.  
  26. html2canvas(el[0]).then(function(canvas) {
  27.  
  28. // We require this to be null
  29. var oldImageData = null;
  30.  
  31. // Check if main canvas exists and if so, we save its image data to oldImageData
  32. if (mainCanvas.height) {
  33. oldImageData = mainCtx.getImageData(0, 0, mainCanvas.width, mainCanvas.height);
  34. }
  35.  
  36. // Adjust its size
  37. mainCanvas.width = canvas.width;
  38. mainCanvas.height += canvas.height;
  39.  
  40. // Put old image data to canvas with new size
  41. if (oldImageData) {
  42. mainCtx.putImageData(oldImageData, 0, 0);
  43. }
  44.  
  45. // Get data of rendered slide
  46. var context = canvas.getContext('2d');
  47. var imageData;
  48. if ( canvas.width && canvas.height ) {
  49. imageData = context.getImageData(0, 0, canvas.width, canvas.height);
  50.  
  51. }
  52.  
  53. // Put it to main slide
  54. mainCtx.putImageData(imageData, 0, mainCanvas.height - canvas.height);
  55.  
  56. // If there are three rendered slides (indexes 0, 1, 2) or slides number is 1, save it to the server
  57. if (index == 2 || elements.length == 1) {
  58.  
  59. mainCanvas = resizeCanvas(mainCanvas, 2);
  60.  
  61. data.image = mainCanvas.toDataURL();
  62.  
  63. $http({
  64. method: 'POST',
  65. url: ajaxurl,
  66. headers: {'Content-Type': 'application/x-www-form-urlencoded'},
  67. params: {action: 'fpt_save_pricing_screenshot'},
  68. data: jQuery.param(data),
  69. })
  70. .then(function(response) {
  71.  
  72. var data = response.data;
  73.  
  74. debugService.log('Screenshot save', data);
  75.  
  76. });
  77.  
  78. return false;
  79.  
  80. } else if (elements.eq(index + 1).length) {
  81. render(index + 1);
  82. }
  83.  
  84. });
  85.  
  86. }
  87.  
  88. if (elements.length) {
  89. render(0);
  90. }
  91.  
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement