UNPKG

basb-cli

Version:
65 lines (59 loc) 1.98 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Echarts Chart Renderer</title> <style> #render-target { width: 720px; height: 480px; } </style> </head> <body> <div id="render-target"></div> <script type="module"> import mergeObj from "../../../common/mergeObj.js" globalThis.mergeObj = mergeObj </script> <script> const { ipcRenderer } = require("electron") const { writeFileSync } = require("node:fs") const echarts = require("echarts") ipcRenderer.once("chart-content", async (_, { chartContent, renderOptions, savePath, }) => { const targetEl = document.querySelector("#render-target") try { const options = new Function( "let option;" + chartContent + ";return option" )() const finalOptions = mergeObj(renderOptions, options) finalOptions.animation = false const chart = echarts.init(targetEl) chart.setOption(finalOptions) } catch(err) { ipcRenderer.send("render-error", err.message) return } // SVG output // const SVGContent = targetEl.childNodes[0].innerHTML // writeFileSync(savePath, SVGContent) // ipcRenderer.send("render-ended") // PNG output const canvas = targetEl.querySelector("canvas") canvas.toBlob(async blob => { const buffer = await blob.arrayBuffer() const viewer = new DataView(buffer) writeFileSync(savePath, viewer) ipcRenderer.send("render-ended") }) }) </script> </body> </html>