From ba44f69f9fd35e45ce2b1277a5389c31289c7b97 Mon Sep 17 00:00:00 2001 From: wanghao1993 Date: Wed, 20 Sep 2023 00:00:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20icon=20=E5=90=88=E5=B9=B6=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/package.json | 1 + simple-mind-map/src/svg/icons.js | 21 ++++++++++++--- simple-mind-map/src/utils/index.js | 36 ++++++++++++++++++++++++++ web/src/pages/Edit/components/Edit.vue | 11 +++++++- 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json index 898108ba..dfdac432 100644 --- a/simple-mind-map/package.json +++ b/simple-mind-map/package.json @@ -13,6 +13,7 @@ } ], "types": "./types/index.d.ts", + "typings": "./types/index.d.ts", "license": "MIT", "repository": { "type": "git", diff --git a/simple-mind-map/src/svg/icons.js b/simple-mind-map/src/svg/icons.js index c08ab61b..2747f6f8 100644 --- a/simple-mind-map/src/svg/icons.js +++ b/simple-mind-map/src/svg/icons.js @@ -1,3 +1,5 @@ +import { mergerIconListBy } from '../utils' + // 超链接图标 const hyperlink = '' @@ -281,12 +283,23 @@ export const nodeIconList = [ // 获取nodeIconList icon内容 const getNodeIconListIcon = (name, extendIconList = []) => { let arr = name.split('_') - let typeData = [...nodeIconList, ...extendIconList].find(item => { + const iconList = mergerIconListBy( + [...nodeIconList, ...extendIconList], + 'type', + 'name' + ) + + let typeData = iconList.find(item => { return item.type === arr[0] }) - return typeData.list.find(item => { - return item.name === arr[1] - }).icon + + if (typeData) { + return typeData.list.find(item => { + return item.name === arr[1] + }).icon + } else { + return '' + } } export default { diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index babbdb0e..784839f9 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -669,3 +669,39 @@ export const checkIsNodeStyleDataKey = key => { } return false } + +// 合并数组对象by某个key + +// const data = [ +// { type: 'a', list: [{ name: 1, value: 1 }, { name: 2, value: 2 }] }, +// { type: 'b', list: [{ name: 13, value: 3 }] }, +// { type: 'a', list: [{ name: 1, value: 3 }, { name: 4, value: 4 }] }, +// ]; + +// mergeObjArrayBy(data, 'type', 'name') 结果 + +// [ +// { type: 'a', list: [ { name: 1, value: 3 }, { name: 2, value: 2 }, { name: 4, value: 4 } ] }, +// { type: 'b', list: [ { name: 13, value: 3 } ] } +// ] + +export const mergerIconListBy = (arrList, key, name) => { + return arrList.reduce((result, item) => { + const existingItem = result.find(x => x[key] === item[key]) + if (existingItem) { + item.list.forEach(newObj => { + const existingObj = existingItem.list.find( + x => x[name] === newObj[name] + ) + if (existingObj) { + existingObj.icon = newObj.icon + } else { + existingItem.list.push(newObj) + } + }) + } else { + result.push({ ...item }) + } + return result + }, []) +} diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue index d0044080..aebcec38 100644 --- a/web/src/pages/Edit/components/Edit.vue +++ b/web/src/pages/Edit/components/Edit.vue @@ -292,7 +292,16 @@ export default { } }, ...(config || {}), - iconList: icon, + iconList: [...icon, { + name: '优先级图标', + type: 'priority', + list: [ + { + name: '0', + icon: `` + }, + ] + }], useLeftKeySelectionRightKeyDrag: this.useLeftKeySelectionRightKeyDrag, customInnerElsAppendTo: null, enableAutoEnterTextEditWhenKeydown: true,