Skip to content

Commit bb68694

Browse files
author
zhoudejie
committed
fix: init variable before export svg/png
1 parent 1c11b66 commit bb68694

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

painter/index.js

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
import Canvg from 'canvg'
2+
let IMG_PADDING = 40
23
let $d = document
34
// calculate distances to center from top,left,bottom,right
4-
let maxTop = 10000
5-
let maxBottom = 10000
6-
let maxLeft = 10000
7-
let maxRight = 10000
85

9-
let imgPadding = 40
10-
let svgHeight, svgWidth
6+
let maxTop, maxBottom, maxLeft, maxRight, svgHeight, svgWidth
7+
8+
function initVar() {
9+
maxTop = 10000
10+
maxBottom = 10000
11+
maxLeft = 10000
12+
maxRight = 10000
13+
svgHeight = 0
14+
svgWidth = 0
15+
}
1116

1217
let head = `<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">`
1318
function generateSvgDom() {
@@ -38,8 +43,8 @@ function generateSvgDom() {
3843
console.log(maxTop, maxBottom, maxLeft, maxRight)
3944
svgContent += RootToSvg()
4045
// 需要添加图片边缘padding
41-
svgHeight = maxBottom - maxTop + imgPadding * 2
42-
svgWidth = maxRight - maxLeft + imgPadding * 2
46+
svgHeight = maxBottom - maxTop + IMG_PADDING * 2
47+
svgWidth = maxRight - maxLeft + IMG_PADDING * 2
4348
// svgContent += customLinkTransform()
4449
let svgFile = createSvg(svgHeight, svgWidth)
4550
svgContent =
@@ -72,13 +77,13 @@ function RootToSvg() {
7277

7378
let svg2ndEle = $d.querySelector('.svg2nd')
7479

75-
let svg2nd = `<g transform="translate(${imgPadding - maxLeft}, ${
76-
imgPadding - maxTop
80+
let svg2nd = `<g transform="translate(${IMG_PADDING - maxLeft}, ${
81+
IMG_PADDING - maxTop
7782
})">${svg2ndEle.innerHTML}</g>`
7883
return (
7984
svg2nd +
80-
`<g id="root" transform="translate(${rootOffsetX + imgPadding}, ${
81-
rootOffsetY + imgPadding
85+
`<g id="root" transform="translate(${rootOffsetX + IMG_PADDING}, ${
86+
rootOffsetY + IMG_PADDING
8287
})">
8388
<rect x="${left}" y="${top}" rx="5px" ry="5px" width="${
8489
rect.width
@@ -99,8 +104,8 @@ function PrimaryToSvg(primaryNode) {
99104

100105
let svg = ''
101106
let svg3rd = primaryNode.querySelector('.svg3rd')
102-
svg += `<g transform="translate(${primaryNodeOffsetX + imgPadding}, ${
103-
primaryNodeOffsetY + imgPadding
107+
svg += `<g transform="translate(${primaryNodeOffsetX + IMG_PADDING}, ${
108+
primaryNodeOffsetY + IMG_PADDING
104109
})">`
105110
svg += svg3rd ? svg3rd.innerHTML : ''
106111
for (let i = 0; i < topics.length; i++) {
@@ -233,8 +238,10 @@ function customLinkTransform() {
233238
return resLinks
234239
}
235240

236-
export let exportSvg = function (fileName, instance) {
237-
if (instance) $d = instance.container
241+
export let exportSvg = function (instance, fileName) {
242+
if (!instance) throw new Error('Mind-elixir instance is not presented. ---> exportSvg(instance, fileName)')
243+
initVar()
244+
$d = instance.container
238245
let svgFile = generateSvgDom()
239246
let dlUrl = URL.createObjectURL(
240247
new Blob([head + svgFile.outerHTML.replace(/&nbsp;/g, ' ')])
@@ -245,8 +252,10 @@ export let exportSvg = function (fileName, instance) {
245252
a.click()
246253
}
247254

248-
export let exportPng = async function (fileName, instance) {
249-
if (instance) $d = instance.container
255+
export let exportPng = async function (instance, fileName) {
256+
if (!instance) throw new Error('Mind-elixir instance is not presented. ---> exportSvg(instance, fileName)')
257+
initVar()
258+
$d = instance.container
250259
let svgFile = generateSvgDom()
251260
const canvas = document.createElement('canvas')
252261
canvas.style.display = 'none'

src/dev.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ mind.bus.addListener('selectNode', node => {
7979
console.log(node)
8080
})
8181
window.m = mind
82+
window.m2 = mind2
8283
window.M = MindElixir
8384
window.exportSvg = exportSvg
8485
window.exportPng = exportPng

0 commit comments

Comments
 (0)