landing-klikaset/wp-content/plugins/unlimited-elements-for-elem.../js/unitecreator_screenshot.js

155 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

2024-05-06 11:04:37 +07:00
"use strict";
function UCScreenshot(){
var t = this;
var g_pageBuilder = null;
var g_ucAdminTop = null;
var g_temp = {
isInsideIframe: false,
allowLogging: false
};
/**
* trigger end event
*/
function triggerEndEvent(response){
if(g_pageBuilder){
g_pageBuilder.triggerEvent("screenshot_saved", response);
return(true);
}
if(g_ucAdminTop)
g_ucAdminTop.triggerEvent("screenshot_saved", response);
}
/**
* save data - send ajax request to save
*/
function saveScreenshotData(data, ext){
writeLog("done screenshot, saving " + ext);
jQuery("body").append("<div id='div_debug'></div>");
var data = {
screenshot_data:data,
source:"layout",
layoutid:g_layoutID,
ext:ext
};
g_ucAdmin.ajaxRequest("save_screenshot", data, function(response){
writeLog("file saved");
triggerEndEvent(response);
});
}
/**
* write log
*/
function writeLog(str){
if(g_temp.allowLogging == false)
return(false);
trace(str);
}
/**
* take screenshot
*/
this.takeScreenshot = function(){
writeLog("start screenshot");
var scale = window.devicePixelRatio * 0.5;
var objBody = jQuery("body");
var bodyHeight = objBody.height();
var bodyWidth = objBody.width();
var maxHeight = bodyWidth*3;
var options = {
logging:false,
scale:scale
};
if(bodyHeight > maxHeight)
options["height"] = maxHeight;
html2canvas(document.body, options).then(canvas => {
var dataJpg = canvas.toDataURL("image/jpeg",0.7);
var dataPng = canvas.toDataURL("image/png");
//document.body.innerHTML = "";
//document.body.appendChild(canvas)
if(dataJpg.length < dataPng.length)
saveScreenshotData(dataJpg, "jpg");
else
saveScreenshotData(dataPng, "png");
});
};
/**
* init page builder
*/
function initTopObjects(){
if(!window.top)
return(false);
if(window.top.g_objPageBuilder){
g_pageBuilder = window.top.g_objPageBuilder;
}
g_ucAdminTop = window.top.g_ucAdmin;
if(!g_ucAdminTop)
g_ucAdminTop = null;
}
/**
* init
*/
this.init = function(){
initTopObjects();
if(window.top){
g_temp.isInsideIframe = true;
}else{
g_temp.allowLogging = true;
}
}
}
jQuery(document).ready(function(){
var objScreenshot = new UCScreenshot();
objScreenshot.init();
objScreenshot.takeScreenshot();
});