Feat:富文本插件增加对老版本数据的处理
This commit is contained in:
parent
3642763301
commit
628a6b72a2
@ -9,7 +9,8 @@ import {
|
|||||||
formatGetNodeGeneralization,
|
formatGetNodeGeneralization,
|
||||||
nodeRichTextToTextWithWrap,
|
nodeRichTextToTextWithWrap,
|
||||||
getNodeRichTextStyles,
|
getNodeRichTextStyles,
|
||||||
htmlEscape
|
htmlEscape,
|
||||||
|
compareVersion
|
||||||
} from '../utils'
|
} from '../utils'
|
||||||
import { CONSTANTS, richTextSupportStyleList } from '../constants/constant'
|
import { CONSTANTS, richTextSupportStyleList } from '../constants/constant'
|
||||||
import MindMapNode from '../core/render/node/MindMapNode'
|
import MindMapNode from '../core/render/node/MindMapNode'
|
||||||
@ -762,22 +763,29 @@ class RichText {
|
|||||||
}
|
}
|
||||||
|
|
||||||
handleDataToRichText(data) {
|
handleDataToRichText(data) {
|
||||||
|
const oldIsRichText = data.richText
|
||||||
data.richText = true
|
data.richText = true
|
||||||
data.resetRichText = true
|
data.resetRichText = true
|
||||||
data.text = htmlEscape(data.text)
|
// 如果原本就是富文本,那么不能转换
|
||||||
|
if (!oldIsRichText) {
|
||||||
|
data.text = htmlEscape(data.text)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理导入数据
|
// 处理导入数据
|
||||||
handleSetData(data) {
|
handleSetData(data) {
|
||||||
|
// 短期处理,为了兼容老数据,长期会去除
|
||||||
|
const isOldRichTextVersion =
|
||||||
|
!data.smmVersion || compareVersion(data.smmVersion, '0.13.0') === '<'
|
||||||
const walk = root => {
|
const walk = root => {
|
||||||
if (root.data && !root.data.richText) {
|
if (root.data && (!root.data.richText || isOldRichTextVersion)) {
|
||||||
this.handleDataToRichText(root.data)
|
this.handleDataToRichText(root.data)
|
||||||
}
|
}
|
||||||
// 概要
|
// 概要
|
||||||
if (root.data) {
|
if (root.data) {
|
||||||
const generalizationList = formatGetNodeGeneralization(root.data)
|
const generalizationList = formatGetNodeGeneralization(root.data)
|
||||||
generalizationList.forEach(item => {
|
generalizationList.forEach(item => {
|
||||||
if (!item.richText) {
|
if (!item.richText || isOldRichTextVersion) {
|
||||||
this.handleDataToRichText(item)
|
this.handleDataToRichText(item)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -175,7 +175,7 @@ export const copyRenderTree = (tree, root, removeActiveState = false) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
// data、children外的其他字段
|
// data、children外的其他字段
|
||||||
Object.keys(root).forEach((key) => {
|
Object.keys(root).forEach(key => {
|
||||||
if (!['data', 'children'].includes(key) && !/^_/.test(key)) {
|
if (!['data', 'children'].includes(key) && !/^_/.test(key)) {
|
||||||
tree[key] = root[key]
|
tree[key] = root[key]
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ export const copyNodeTree = (
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
// data、children外的其他字段
|
// data、children外的其他字段
|
||||||
Object.keys(root).forEach((key) => {
|
Object.keys(root).forEach(key => {
|
||||||
if (!['data', 'children'].includes(key) && !/^_/.test(key)) {
|
if (!['data', 'children'].includes(key) && !/^_/.test(key)) {
|
||||||
tree[key] = root[key]
|
tree[key] = root[key]
|
||||||
}
|
}
|
||||||
@ -1673,3 +1673,25 @@ export const getNodeRichTextStyles = node => {
|
|||||||
})
|
})
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断两个版本号的关系
|
||||||
|
/*
|
||||||
|
a > b 返回 >
|
||||||
|
a < b 返回 <
|
||||||
|
a = b 返回 =
|
||||||
|
*/
|
||||||
|
export const compareVersion = (a, b) => {
|
||||||
|
const aArr = String(a).split('.')
|
||||||
|
const bArr = String(b).split('.')
|
||||||
|
const max = Math.max(aArr.length, bArr.length)
|
||||||
|
for (let i = 0; i < max; i++) {
|
||||||
|
const ai = aArr[i] || 0
|
||||||
|
const bi = bArr[i] || 0
|
||||||
|
if (ai > bi) {
|
||||||
|
return '>'
|
||||||
|
} else if (ai < bi) {
|
||||||
|
return '<'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '='
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user