Demo:支持配置节点连线的流动效果
This commit is contained in:
parent
fbb3b47b7d
commit
f02098f697
@ -253,7 +253,12 @@ export default {
|
|||||||
arrowDir: 'Arrow dir',
|
arrowDir: 'Arrow dir',
|
||||||
arrowDirStart: 'Start',
|
arrowDirStart: 'Start',
|
||||||
arrowDirEnd: 'End',
|
arrowDirEnd: 'End',
|
||||||
direction: 'Direction'
|
direction: 'Direction',
|
||||||
|
selectNodeTip: 'Please select a node',
|
||||||
|
openLineFlow: 'Open line flow',
|
||||||
|
lineFlowDuration: 'Line flow duration',
|
||||||
|
forward: 'Forward',
|
||||||
|
reverse: 'Reverse'
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
title: 'Theme',
|
title: 'Theme',
|
||||||
|
|||||||
@ -249,7 +249,12 @@ export default {
|
|||||||
arrowDir: '箭头位置',
|
arrowDir: '箭头位置',
|
||||||
arrowDirStart: '头部',
|
arrowDirStart: '头部',
|
||||||
arrowDirEnd: '尾部',
|
arrowDirEnd: '尾部',
|
||||||
direction: '方向'
|
direction: '方向',
|
||||||
|
selectNodeTip: '请选择一个节点',
|
||||||
|
openLineFlow: '开启流动效果',
|
||||||
|
lineFlowDuration: '一个流动周期的时间',
|
||||||
|
forward: '正向',
|
||||||
|
reverse: '反向'
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
title: '主题',
|
title: '主题',
|
||||||
|
|||||||
@ -249,7 +249,12 @@ export default {
|
|||||||
endColor: '結束',
|
endColor: '結束',
|
||||||
arrowDir: '箭頭位置',
|
arrowDir: '箭頭位置',
|
||||||
arrowDirStart: '頭部',
|
arrowDirStart: '頭部',
|
||||||
arrowDirEnd: '尾部'
|
arrowDirEnd: '尾部',
|
||||||
|
selectNodeTip: '請選擇壹個節點',
|
||||||
|
openLineFlow: '開啓流動效果',
|
||||||
|
lineFlowDuration: '一個流動周期的時間',
|
||||||
|
forward: '正向',
|
||||||
|
reverse: '反向'
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
title: '主題',
|
title: '主題',
|
||||||
|
|||||||
@ -273,6 +273,61 @@
|
|||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 流动效果 -->
|
||||||
|
<div class="row" v-if="supportLineFlow">
|
||||||
|
<div class="rowItem">
|
||||||
|
<span class="name">{{ $t('style.openLineFlow') }}</span>
|
||||||
|
<el-checkbox
|
||||||
|
v-model="style.lineFlow"
|
||||||
|
@change="
|
||||||
|
value => {
|
||||||
|
update('lineFlow', value)
|
||||||
|
}
|
||||||
|
"
|
||||||
|
></el-checkbox>
|
||||||
|
</div>
|
||||||
|
<div class="rowItem">
|
||||||
|
<span class="name">{{ $t('style.direction') }}</span>
|
||||||
|
<el-select
|
||||||
|
size="mini"
|
||||||
|
style="width: 80px"
|
||||||
|
v-model="style.lineFlowForward"
|
||||||
|
placeholder=""
|
||||||
|
@change="
|
||||||
|
value => {
|
||||||
|
update('lineFlowForward', value)
|
||||||
|
}
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
key="1"
|
||||||
|
:label="$t('style.forward')"
|
||||||
|
:value="true"
|
||||||
|
></el-option>
|
||||||
|
<el-option
|
||||||
|
key="2"
|
||||||
|
:label="$t('style.reverse')"
|
||||||
|
:value="false"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="supportLineFlow">
|
||||||
|
<div class="rowItem">
|
||||||
|
<span class="name">{{ $t('style.lineFlowDuration') }}</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="style.lineFlowDuration"
|
||||||
|
@change="
|
||||||
|
value => {
|
||||||
|
update('lineFlowDuration', value)
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:min="0.1"
|
||||||
|
size="mini"
|
||||||
|
:step="0.5"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- 彩虹线条 -->
|
<!-- 彩虹线条 -->
|
||||||
<div class="title noTop">{{ $t('baseStyle.rainbowLines') }}</div>
|
<div class="title noTop">{{ $t('baseStyle.rainbowLines') }}</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -811,6 +866,9 @@ export default {
|
|||||||
rootLineKeepSameInCurve: '',
|
rootLineKeepSameInCurve: '',
|
||||||
rootLineStartPositionKeepSameInCurve: '',
|
rootLineStartPositionKeepSameInCurve: '',
|
||||||
lineRadius: 0,
|
lineRadius: 0,
|
||||||
|
lineFlow: false,
|
||||||
|
lineFlowForward: true,
|
||||||
|
lineFlowDuration: 1,
|
||||||
generalizationLineWidth: '',
|
generalizationLineWidth: '',
|
||||||
generalizationLineColor: '',
|
generalizationLineColor: '',
|
||||||
associativeLineColor: '',
|
associativeLineColor: '',
|
||||||
@ -847,7 +905,8 @@ export default {
|
|||||||
...mapState({
|
...mapState({
|
||||||
activeSidebar: state => state.activeSidebar,
|
activeSidebar: state => state.activeSidebar,
|
||||||
localConfig: state => state.localConfig,
|
localConfig: state => state.localConfig,
|
||||||
isDark: state => state.localConfig.isDark
|
isDark: state => state.localConfig.isDark,
|
||||||
|
supportLineFlow: state => state.supportLineFlow
|
||||||
}),
|
}),
|
||||||
lineStyleList() {
|
lineStyleList() {
|
||||||
return lineStyleList[this.$i18n.locale] || lineStyleList.zh
|
return lineStyleList[this.$i18n.locale] || lineStyleList.zh
|
||||||
@ -947,36 +1006,7 @@ export default {
|
|||||||
|
|
||||||
// 初始样式
|
// 初始样式
|
||||||
initStyle() {
|
initStyle() {
|
||||||
;[
|
Object.keys(this.style).forEach(key => {
|
||||||
'backgroundColor',
|
|
||||||
'lineWidth',
|
|
||||||
'lineStyle',
|
|
||||||
'showLineMarker',
|
|
||||||
'rootLineKeepSameInCurve',
|
|
||||||
'rootLineStartPositionKeepSameInCurve',
|
|
||||||
'lineRadius',
|
|
||||||
'lineColor',
|
|
||||||
'generalizationLineWidth',
|
|
||||||
'generalizationLineColor',
|
|
||||||
'associativeLineColor',
|
|
||||||
'associativeLineWidth',
|
|
||||||
'associativeLineActiveWidth',
|
|
||||||
'associativeLineDasharray',
|
|
||||||
'associativeLineActiveColor',
|
|
||||||
'associativeLineTextFontSize',
|
|
||||||
'associativeLineTextColor',
|
|
||||||
'associativeLineTextFontFamily',
|
|
||||||
'paddingX',
|
|
||||||
'paddingY',
|
|
||||||
'imgMaxWidth',
|
|
||||||
'imgMaxHeight',
|
|
||||||
'iconSize',
|
|
||||||
'backgroundImage',
|
|
||||||
'backgroundRepeat',
|
|
||||||
'backgroundPosition',
|
|
||||||
'backgroundSize',
|
|
||||||
'nodeUseLineStyle'
|
|
||||||
].forEach(key => {
|
|
||||||
this.style[key] = this.mindMap.getThemeConfig(key)
|
this.style[key] = this.mindMap.getThemeConfig(key)
|
||||||
if (key === 'backgroundImage' && this.style[key] === 'none') {
|
if (key === 'backgroundImage' && this.style[key] === 'none') {
|
||||||
this.style[key] = ''
|
this.style[key] = ''
|
||||||
|
|||||||
@ -75,14 +75,15 @@ import OuterFrame from 'simple-mind-map/src/plugins/OuterFrame.js'
|
|||||||
import Themes from 'simple-mind-map-plugin-themes'
|
import Themes from 'simple-mind-map-plugin-themes'
|
||||||
// 协同编辑插件
|
// 协同编辑插件
|
||||||
// import Cooperate from 'simple-mind-map/src/plugins/Cooperate.js'
|
// import Cooperate from 'simple-mind-map/src/plugins/Cooperate.js'
|
||||||
// 以下插件为付费插件,详情请查看开发文档。依次为:手绘风格插件、标记插件、编号插件、Freemind软件格式导入导出插件、Excel软件格式导入导出插件、待办插件
|
// 以下插件为付费插件,详情请查看开发文档。依次为:手绘风格插件、标记插件、编号插件、Freemind软件格式导入导出插件、Excel软件格式导入导出插件、待办插件、节点连线流动效果插件
|
||||||
// import HandDrawnLikeStyle from 'simple-mind-map-plugin-handdrawnlikestyle'
|
// import HandDrawnLikeStyle from 'simple-mind-map-plugin-handdrawnlikestyle'
|
||||||
// import Notation from 'simple-mind-map-plugin-notation'
|
// import Notation from 'simple-mind-map-plugin-notation'
|
||||||
// import Numbers from 'simple-mind-map-plugin-numbers'
|
// import Numbers from 'simple-mind-map-plugin-numbers'
|
||||||
// import Freemind from 'simple-mind-map-plugin-freemind'
|
// import Freemind from 'simple-mind-map-plugin-freemind'
|
||||||
// import Excel from 'simple-mind-map-plugin-excel'
|
// import Excel from 'simple-mind-map-plugin-excel'
|
||||||
// import Checkbox from 'simple-mind-map-plugin-checkbox'
|
// import Checkbox from 'simple-mind-map-plugin-checkbox'
|
||||||
// npm link simple-mind-map-plugin-excel simple-mind-map-plugin-freemind simple-mind-map-plugin-numbers simple-mind-map-plugin-notation simple-mind-map-plugin-handdrawnlikestyle simple-mind-map-plugin-checkbox simple-mind-map simple-mind-map-plugin-themes
|
// import LineFlow from 'simple-mind-map-plugin-lineflow'
|
||||||
|
// npm link simple-mind-map-plugin-excel simple-mind-map-plugin-freemind simple-mind-map-plugin-numbers simple-mind-map-plugin-notation simple-mind-map-plugin-handdrawnlikestyle simple-mind-map-plugin-checkbox simple-mind-map simple-mind-map-plugin-themes simple-mind-map-plugin-lineflow
|
||||||
import OutlineSidebar from './OutlineSidebar'
|
import OutlineSidebar from './OutlineSidebar'
|
||||||
import Style from './Style'
|
import Style from './Style'
|
||||||
import BaseStyle from './BaseStyle'
|
import BaseStyle from './BaseStyle'
|
||||||
@ -581,6 +582,10 @@ export default {
|
|||||||
this.mindMap.addPlugin(Checkbox)
|
this.mindMap.addPlugin(Checkbox)
|
||||||
this.$store.commit('setSupportCheckbox', true)
|
this.$store.commit('setSupportCheckbox', true)
|
||||||
}
|
}
|
||||||
|
if (typeof LineFlow !== 'undefined') {
|
||||||
|
this.mindMap.addPlugin(LineFlow)
|
||||||
|
this.$store.commit('setSupportLineFlow', true)
|
||||||
|
}
|
||||||
this.mindMap.keyCommand.addShortcut('Control+s', () => {
|
this.mindMap.keyCommand.addShortcut('Control+s', () => {
|
||||||
this.manualSave()
|
this.manualSave()
|
||||||
})
|
})
|
||||||
|
|||||||
@ -415,6 +415,49 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 流动效果 -->
|
||||||
|
<div class="row" v-if="supportLineFlow">
|
||||||
|
<div class="rowItem">
|
||||||
|
<span class="name">{{ $t('style.openLineFlow') }}</span>
|
||||||
|
<el-checkbox
|
||||||
|
v-model="style.lineFlow"
|
||||||
|
@change="update('lineFlow')"
|
||||||
|
></el-checkbox>
|
||||||
|
</div>
|
||||||
|
<div class="rowItem">
|
||||||
|
<span class="name">{{ $t('style.direction') }}</span>
|
||||||
|
<el-select
|
||||||
|
size="mini"
|
||||||
|
style="width: 80px"
|
||||||
|
v-model="style.lineFlowForward"
|
||||||
|
placeholder=""
|
||||||
|
@change="update('lineFlowForward')"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
key="1"
|
||||||
|
:label="$t('style.forward')"
|
||||||
|
:value="true"
|
||||||
|
></el-option>
|
||||||
|
<el-option
|
||||||
|
key="2"
|
||||||
|
:label="$t('style.reverse')"
|
||||||
|
:value="false"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row" v-if="supportLineFlow">
|
||||||
|
<div class="rowItem">
|
||||||
|
<span class="name">{{ $t('style.lineFlowDuration') }}</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="style.lineFlowDuration"
|
||||||
|
@change="update('lineFlowDuration')"
|
||||||
|
:min="0.1"
|
||||||
|
size="mini"
|
||||||
|
:step="0.5"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- 节点内边距 -->
|
<!-- 节点内边距 -->
|
||||||
<div class="title noTop">{{ $t('style.nodePadding') }}</div>
|
<div class="title noTop">{{ $t('style.nodePadding') }}</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -441,7 +484,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="tipBox" v-else>
|
<div class="tipBox" v-else>
|
||||||
<div class="tipIcon iconfont icontianjiazijiedian"></div>
|
<div class="tipIcon iconfont icontianjiazijiedian"></div>
|
||||||
<div class="tipText">请选择一个节点</div>
|
<div class="tipText">{{ $t('style.selectNodeTip') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</Sidebar>
|
</Sidebar>
|
||||||
</template>
|
</template>
|
||||||
@ -500,14 +543,18 @@ export default {
|
|||||||
gradientStyle: false,
|
gradientStyle: false,
|
||||||
startColor: '',
|
startColor: '',
|
||||||
endColor: '',
|
endColor: '',
|
||||||
linearGradientDir: ''
|
linearGradientDir: '',
|
||||||
|
lineFlow: false,
|
||||||
|
lineFlowForward: true,
|
||||||
|
lineFlowDuration: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
isDark: state => state.localConfig.isDark,
|
isDark: state => state.localConfig.isDark,
|
||||||
activeSidebar: state => state.activeSidebar
|
activeSidebar: state => state.activeSidebar,
|
||||||
|
supportLineFlow: state => state.supportLineFlow
|
||||||
}),
|
}),
|
||||||
fontFamilyList() {
|
fontFamilyList() {
|
||||||
return fontFamilyList[this.$i18n.locale] || fontFamilyList.zh
|
return fontFamilyList[this.$i18n.locale] || fontFamilyList.zh
|
||||||
@ -564,29 +611,7 @@ export default {
|
|||||||
if (this.activeNodes.length <= 0) {
|
if (this.activeNodes.length <= 0) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
;[
|
Object.keys(this.style).forEach(item => {
|
||||||
'shape',
|
|
||||||
'paddingX',
|
|
||||||
'paddingY',
|
|
||||||
'color',
|
|
||||||
'fontFamily',
|
|
||||||
'fontSize',
|
|
||||||
'textDecoration',
|
|
||||||
'fontWeight',
|
|
||||||
'fontStyle',
|
|
||||||
'borderWidth',
|
|
||||||
'borderColor',
|
|
||||||
'fillColor',
|
|
||||||
'borderDasharray',
|
|
||||||
'borderRadius',
|
|
||||||
'lineColor',
|
|
||||||
'lineDasharray',
|
|
||||||
'lineWidth',
|
|
||||||
'lineMarkerDir',
|
|
||||||
'gradientStyle',
|
|
||||||
'startColor',
|
|
||||||
'endColor'
|
|
||||||
].forEach(item => {
|
|
||||||
this.style[item] = this.activeNodes[0].getStyle(item, false)
|
this.style[item] = this.activeNodes[0].getStyle(item, false)
|
||||||
})
|
})
|
||||||
this.initLinearGradientDir()
|
this.initLinearGradientDir()
|
||||||
|
|||||||
@ -34,6 +34,7 @@ const store = new Vuex.Store({
|
|||||||
supportFreemind: false, // 是否支持Freemind插件
|
supportFreemind: false, // 是否支持Freemind插件
|
||||||
supportExcel: false, // 是否支持Excel插件
|
supportExcel: false, // 是否支持Excel插件
|
||||||
supportCheckbox: false, // 是否支持Checkbox插件
|
supportCheckbox: false, // 是否支持Checkbox插件
|
||||||
|
supportLineFlow: false, // 是否支持LineFlow插件
|
||||||
isDragOutlineTreeNode: false // 当前是否正在拖拽大纲树的节点
|
isDragOutlineTreeNode: false // 当前是否正在拖拽大纲树的节点
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
@ -111,6 +112,11 @@ const store = new Vuex.Store({
|
|||||||
state.supportCheckbox = data
|
state.supportCheckbox = data
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 设置是否支持Lineflow插件
|
||||||
|
setSupportLineFlow(state, data) {
|
||||||
|
state.supportLineFlow = data
|
||||||
|
},
|
||||||
|
|
||||||
// 设置树节点拖拽
|
// 设置树节点拖拽
|
||||||
setIsDragOutlineTreeNode(state, data) {
|
setIsDragOutlineTreeNode(state, data) {
|
||||||
state.isDragOutlineTreeNode = data
|
state.isDragOutlineTreeNode = data
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user