diff --git a/src/components/report/CopyPaste.js b/src/components/report/CopyPaste.js index a3af25d16..1e683b53d 100644 --- a/src/components/report/CopyPaste.js +++ b/src/components/report/CopyPaste.js @@ -1,7 +1,8 @@ import React, { Component } from "react"; import { allowCopyClipboardItem, - writeHTMLToClipboard, + // writeHTMLToClipboard, + writeTextToClipboard, } from "../../helpers/utility"; export default class CopyPaste extends Component { @@ -39,18 +40,26 @@ export default class CopyPaste extends Component { this.importScoreSummaryContent(); return; } - const tempNode = this.contentAreaRef.current.cloneNode(true); - console.log("temp node? ", tempNode); - const originalElement = tempNode.querySelector(".original"); - console.log("original ", originalElement); this.setState( { - contentHTML: originalElement.innerHTML, + contentHTML: this.getDefaultContent(), }, () => { - this.contentAreaRef.current.innerHTML = this.state.contentHTML; + this.contentAreaRef.current.value = this.state.contentHTML; } ); + // const tempNode = this.contentAreaRef.current.cloneNode(true); + // console.log("temp node? ", tempNode); + // const originalElement = tempNode.querySelector(".original"); + // console.log("original ", originalElement); + // this.setState( + // { + // contentHTML: originalElement.innerHTML, + // }, + // () => { + // this.contentAreaRef.current.innerHTML = this.state.contentHTML; + // } + // ); } ); } @@ -72,11 +81,16 @@ export default class CopyPaste extends Component { alert("ClipboardItem API not supported by this browser"); return false; } - writeHTMLToClipboard(this.state.contentHTML) + writeTextToClipboard(this.state.contentHTML) .then(() => { alert("Content copied to clipboard"); }) .catch((e) => alert("Unable to copy content to clipboard")); + // writeHTMLToClipboard(this.state.contentHTML) + // .then(() => { + // alert("Content copied to clipboard"); + // }) + // .catch((e) => alert("Unable to copy content to clipboard")); } getDefaultContent() { @@ -85,17 +99,12 @@ export default class CopyPaste extends Component { } importScoreSummaryContent() { + let copyText = ""; const scorePanelElement = document.querySelector(".score-panel"); const scoreSummaryNode = scorePanelElement ? scorePanelElement.cloneNode(true) : null; if (scoreSummaryNode) { - const tableElement = scoreSummaryNode.querySelector("table"); - if (tableElement) { - tableElement.style.fontFamily = "Ariel, sans-serif"; - tableElement.setAttribute("width", "100%"); - } - scoreSummaryNode.querySelector("h3").style.fontSize = "20px"; scoreSummaryNode.querySelectorAll("a").forEach((anchorElement) => { const span = document.createElement("span"); span.innerText = anchorElement.innerText; @@ -106,27 +115,85 @@ export default class CopyPaste extends Component { span.innerText = ` (${imageElement.getAttribute("alt")}) `; imageElement.replaceWith(span); }); - scoreSummaryNode.querySelectorAll("td, th").forEach((cellElement) => { - cellElement.style.padding = "8px"; + const tableElement = scoreSummaryNode.querySelector("table"); + if (tableElement) { + const headerCells = tableElement.querySelectorAll("th"); + headerCells.forEach((cell, index) => { + const delimiter = " | "; + copyText += + cell.innerText + (index > 0 && index < headerCells.length-1 ? delimiter : ""); + }); + copyText += "\r\n"; + const rows = tableElement.querySelectorAll("tr"); + rows.forEach((row, rindex) => { + const cells = row.querySelectorAll("td"); + // const arrCells = [...cells].map(cell=> cell.innerText?.length??0); + // console.log("arrCells ", arrCells) + // const maxLength = Math.max(...arrCells); + // console.log("max length ", maxLength); + cells.forEach((cell, index) => { + //const delimiter = cell.innerText?.length >= maxLength ? " | " : [...Array(maxLength - cell.innerText?.length).keys()].map(item => " ").join("") + "| "; + const delimiter = " | "; + copyText += + cell.innerText + (index < cells.length-1 ? delimiter : ""); + }); + if (rindex !== 0) copyText += "\r\n"; + }); + } + writeTextToClipboard(copyText).then((text) => { + this.setState( + { + contentHTML: this.getDefaultContent() + "\r\n\r\n" + copyText, + }, + () => { + this.contentAreaRef.current.value = this.state.contentHTML; + } + ); }); - this.setState( - { - contentHTML: - "