|
@@ -12,6 +12,7 @@
|
|
<script type="text/javascript" src="./script/ao_module.js"></script>
|
|
<script type="text/javascript" src="./script/ao_module.js"></script>
|
|
<script type="text/javascript" src="./SystemAO/desktop/script/jsCalendar/source/jsCalendar.js"></script>
|
|
<script type="text/javascript" src="./SystemAO/desktop/script/jsCalendar/source/jsCalendar.js"></script>
|
|
<script type="text/javascript" src="./script/applocale.js"></script>
|
|
<script type="text/javascript" src="./script/applocale.js"></script>
|
|
|
|
+ <script type="text/javascript" src="./script/html2canvas.min.js"></script>
|
|
<style>
|
|
<style>
|
|
body {
|
|
body {
|
|
background-repeat: no-repeat;
|
|
background-repeat: no-repeat;
|
|
@@ -6232,6 +6233,78 @@
|
|
hideAllContextMenus();
|
|
hideAllContextMenus();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ var screenshotBuf = [];
|
|
|
|
+ var totalFloatWindowsLeft = 0;
|
|
|
|
+ var baseCanvas = null;
|
|
|
|
+ function screenshot(){
|
|
|
|
+ totalFloatWindowsLeft = $(".floatWindow").length;
|
|
|
|
+ baseCanvas = null;
|
|
|
|
+ screenshotBuf = [];
|
|
|
|
+ //Get the base canvas
|
|
|
|
+
|
|
|
|
+ html2canvas(document.querySelector("body")).then(basecanvas => {
|
|
|
|
+ //Set the base canvas
|
|
|
|
+ baseCanvas = basecanvas;
|
|
|
|
+
|
|
|
|
+ //Check if the other iframe screenshot done
|
|
|
|
+ if (totalFloatWindowsLeft == 0){
|
|
|
|
+ mergeScreenshotCanvas();
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //Get a screenshot from each floatWindow
|
|
|
|
+ $(".floatWindow").each(function(){
|
|
|
|
+ let contentWindow = $(this).find("iframe")[0].contentWindow;
|
|
|
|
+ let offsets = [$(this).find("iframe").offset().left, $(this).find("iframe").offset().top];
|
|
|
|
+ let thisWindowId = $(this).attr("windowid");
|
|
|
|
+ if (contentWindow.ao_module_screenshot){
|
|
|
|
+ contentWindow.ao_module_screenshot(function(capture){
|
|
|
|
+ screenshotBuf.push([thisWindowId,offsets,capture]);
|
|
|
|
+ totalFloatWindowsLeft--;
|
|
|
|
+
|
|
|
|
+ if (totalFloatWindowsLeft == 0 && baseCanvas != null){
|
|
|
|
+ //Merge the canvas
|
|
|
|
+ mergeScreenshotCanvas();
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }else{
|
|
|
|
+ alert("Not Found");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function mergeScreenshotCanvas(){
|
|
|
|
+ //Merge the screenshots
|
|
|
|
+ var baseCtx=baseCanvas.getContext('2d');
|
|
|
|
+ for (var i = 0; i < screenshotBuf.length; i++){
|
|
|
|
+ var thisWindowID = screenshotBuf[i][0];
|
|
|
|
+ var thisOffsets = screenshotBuf[i][1];
|
|
|
|
+ var thisCanvas = screenshotBuf[i][2];
|
|
|
|
+ var thisCtx = thisCanvas.getContext('2d');
|
|
|
|
+
|
|
|
|
+ //Draw thisCtx onto baseCtx at offsets thisOffsets
|
|
|
|
+ baseCtx.drawImage(thisCanvas, thisOffsets[0], thisOffsets[1]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ downloadCanvas(baseCanvas);
|
|
|
|
+
|
|
|
|
+ //Reset paramters
|
|
|
|
+ totalFloatWindowsLeft = 0;
|
|
|
|
+ baseCanvas = null;
|
|
|
|
+ screenshotBuf = [];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ function downloadCanvas(canvas){
|
|
|
|
+ var aDownloadLink = document.createElement('a');
|
|
|
|
+ aDownloadLink.download = `screenshot_${new Date().toLocaleString(undefined, {year: 'numeric', month: '2-digit', day: '2-digit', weekday:"long", hour: '2-digit', hour12: false, minute:'2-digit', second:'2-digit'}).split(":").join("_").split("/").join("-")}.png`;
|
|
|
|
+ aDownloadLink.href = canvas.toDataURL();
|
|
|
|
+ aDownloadLink.click();
|
|
|
|
+ }
|
|
|
|
+
|
|
//Function for converting bytes to human readable sizes
|
|
//Function for converting bytes to human readable sizes
|
|
function formatBytes(a,b=2){if(0===a)return"0 Bytes";const c=0>b?0:b,d=Math.floor(Math.log(a)/Math.log(1024));return parseFloat((a/Math.pow(1024,d)).toFixed(c))+" "+["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][d]}
|
|
function formatBytes(a,b=2){if(0===a)return"0 Bytes";const c=0>b?0:b,d=Math.floor(Math.log(a)/Math.log(1024));return parseFloat((a/Math.pow(1024,d)).toFixed(c))+" "+["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][d]}
|
|
|
|
|