diff options
| -rw-r--r-- | package.json | 1 | ||||
| -rw-r--r-- | src/components/app/map/MapStageComponent.js | 8 | ||||
| -rw-r--r-- | src/components/app/sidebars/elements/LoadChartComponent.js | 11 |
3 files changed, 12 insertions, 8 deletions
diff --git a/package.json b/package.json index 089b7e9b..00e56349 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "redux-saga": "^0.15.6", "redux-thunk": "^2.2.0", "socket.io-client": "^2.0.3", + "svgsaver": "^0.9.0", "victory": "^0.22.2" }, "scripts": { diff --git a/src/components/app/map/MapStageComponent.js b/src/components/app/map/MapStageComponent.js index cd6e5e1b..c5b31e0f 100644 --- a/src/components/app/map/MapStageComponent.js +++ b/src/components/app/map/MapStageComponent.js @@ -30,10 +30,10 @@ class MapStageComponent extends React.Component { window.addEventListener("wheel", this.updateScale); window["exportCanvasToImage"] = () => { - const canvasData = this.stage.getStage().toDataURL(); - const newWindow = window.open(""); - newWindow.document.write("<img src='" + canvasData + "' alt='Canvas Image Export'/>"); - newWindow.document.title = "OpenDC Canvas Export"; + const download = document.createElement("a"); + download.href = this.stage.getStage().toDataURL(); + download.download = "opendc-canvas-export-" + Date.now() + ".png"; + download.click(); } } diff --git a/src/components/app/sidebars/elements/LoadChartComponent.js b/src/components/app/sidebars/elements/LoadChartComponent.js index 93664ab6..13c700db 100644 --- a/src/components/app/sidebars/elements/LoadChartComponent.js +++ b/src/components/app/sidebars/elements/LoadChartComponent.js @@ -1,15 +1,18 @@ import React from "react"; import ReactDOM from "react-dom/server"; +import SvgSaver from "svgsaver"; import {VictoryAxis, VictoryChart, VictoryLine, VictoryScatter} from "victory"; import {convertSecondsToFormattedTime} from "../../../../util/date-time"; const LoadChartComponent = ({data, currentTick}) => { const onExport = () => { - const newWindow = window.open(""); - newWindow.document.write(ReactDOM.renderToString( + const div = document.createElement("div"); + div.innerHTML = ReactDOM.renderToString( <VictoryChartComponent data={data} currentTick={currentTick} showCurrentTick={false}/> - )); - newWindow.document.title = "OpenDC Chart Export"; + ); + div.firstChild.style = "font-family: Roboto, Arial, sans-serif; font-size: 10pt;"; + const svgSaver = new SvgSaver(); + svgSaver.asSvg(div.firstChild); }; return ( |
