Feat:新增两种垂直时间轴结构

This commit is contained in:
wanglin2 2025-04-03 21:50:43 +08:00
parent 7f0368c2c8
commit bb4a07b151
4 changed files with 55 additions and 8 deletions

View File

@ -18,7 +18,9 @@ export const CONSTANTS = {
FISHBONE2: 'fishbone2', FISHBONE2: 'fishbone2',
RIGHT_FISHBONE: 'rightFishbone', RIGHT_FISHBONE: 'rightFishbone',
RIGHT_FISHBONE2: 'rightFishbone2', RIGHT_FISHBONE2: 'rightFishbone2',
VERTICAL_TIMELINE: 'verticalTimeline' VERTICAL_TIMELINE: 'verticalTimeline',
VERTICAL_TIMELINE2: 'verticalTimeline2',
VERTICAL_TIMELINE3: 'verticalTimeline3'
}, },
DIR: { DIR: {
UP: 'up', UP: 'up',
@ -127,6 +129,14 @@ export const layoutList = [
name: '竖向时间轴', name: '竖向时间轴',
value: CONSTANTS.LAYOUT.VERTICAL_TIMELINE value: CONSTANTS.LAYOUT.VERTICAL_TIMELINE
}, },
{
name: '竖向时间轴2',
value: CONSTANTS.LAYOUT.VERTICAL_TIMELINE2
},
{
name: '竖向时间轴3',
value: CONSTANTS.LAYOUT.VERTICAL_TIMELINE3
},
{ {
name: '鱼骨图', name: '鱼骨图',
value: CONSTANTS.LAYOUT.FISHBONE value: CONSTANTS.LAYOUT.FISHBONE
@ -153,6 +163,8 @@ export const layoutValueList = [
CONSTANTS.LAYOUT.TIMELINE, CONSTANTS.LAYOUT.TIMELINE,
CONSTANTS.LAYOUT.TIMELINE2, CONSTANTS.LAYOUT.TIMELINE2,
CONSTANTS.LAYOUT.VERTICAL_TIMELINE, CONSTANTS.LAYOUT.VERTICAL_TIMELINE,
CONSTANTS.LAYOUT.VERTICAL_TIMELINE2,
CONSTANTS.LAYOUT.VERTICAL_TIMELINE3,
CONSTANTS.LAYOUT.FISHBONE, CONSTANTS.LAYOUT.FISHBONE,
CONSTANTS.LAYOUT.FISHBONE2, CONSTANTS.LAYOUT.FISHBONE2,
CONSTANTS.LAYOUT.RIGHT_FISHBONE, CONSTANTS.LAYOUT.RIGHT_FISHBONE,
@ -174,7 +186,7 @@ export const nodeDataNoStylePropList = [
'isActive', 'isActive',
'generalization', 'generalization',
'richText', 'richText',
'resetRichText',// 重新创建富文本内容,去掉原有样式 'resetRichText', // 重新创建富文本内容,去掉原有样式
'uid', 'uid',
'activeStyle', 'activeStyle',
'associativeLineTargets', 'associativeLineTargets',
@ -192,7 +204,7 @@ export const nodeDataNoStylePropList = [
'customTextWidth', 'customTextWidth',
'checkbox', 'checkbox',
'dir', 'dir',
'needUpdate',// 重新创建节点内容 'needUpdate', // 重新创建节点内容
'imgMap' 'imgMap'
] ]

View File

@ -60,6 +60,10 @@ const layouts = {
[CONSTANTS.LAYOUT.TIMELINE2]: Timeline, [CONSTANTS.LAYOUT.TIMELINE2]: Timeline,
// 竖向时间轴 // 竖向时间轴
[CONSTANTS.LAYOUT.VERTICAL_TIMELINE]: VerticalTimeline, [CONSTANTS.LAYOUT.VERTICAL_TIMELINE]: VerticalTimeline,
// 竖向时间轴2
[CONSTANTS.LAYOUT.VERTICAL_TIMELINE2]: VerticalTimeline,
// 竖向时间轴3
[CONSTANTS.LAYOUT.VERTICAL_TIMELINE3]: VerticalTimeline,
// 鱼骨图 // 鱼骨图
[CONSTANTS.LAYOUT.FISHBONE]: Fishbone, [CONSTANTS.LAYOUT.FISHBONE]: Fishbone,
// 鱼骨图2 // 鱼骨图2

View File

@ -35,7 +35,14 @@ class VerticalTimeline extends Base {
this.renderer.renderTree, this.renderer.renderTree,
null, null,
(cur, parent, isRoot, layerIndex, index, ancestors) => { (cur, parent, isRoot, layerIndex, index, ancestors) => {
let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) let newNode = this.createNode(
cur,
parent,
isRoot,
layerIndex,
index,
ancestors
)
// 根节点定位在画布中心位置 // 根节点定位在画布中心位置
if (isRoot) { if (isRoot) {
this.setNodeCenter(newNode) this.setNodeCenter(newNode)
@ -46,10 +53,16 @@ class VerticalTimeline extends Base {
if (parent._node.dir) { if (parent._node.dir) {
newNode.dir = parent._node.dir newNode.dir = parent._node.dir
} else { } else {
newNode.dir = if (this.layout === CONSTANTS.LAYOUT.VERTICAL_TIMELINE2) {
index % 2 === 0 newNode.dir = CONSTANTS.LAYOUT_GROW_DIR.LEFT
? CONSTANTS.LAYOUT_GROW_DIR.RIGHT } else if (this.layout === CONSTANTS.LAYOUT.VERTICAL_TIMELINE3) {
: CONSTANTS.LAYOUT_GROW_DIR.LEFT newNode.dir = CONSTANTS.LAYOUT_GROW_DIR.RIGHT
} else {
newNode.dir =
index % 2 === 0
? CONSTANTS.LAYOUT_GROW_DIR.RIGHT
: CONSTANTS.LAYOUT_GROW_DIR.LEFT
}
} }
// 定位二级节点的left // 定位二级节点的left
if (parent._node.isRoot) { if (parent._node.isRoot) {

View File

@ -407,6 +407,8 @@ class Drag extends Base {
TIMELINE, TIMELINE,
TIMELINE2, TIMELINE2,
VERTICAL_TIMELINE, VERTICAL_TIMELINE,
VERTICAL_TIMELINE2,
VERTICAL_TIMELINE3,
FISHBONE, FISHBONE,
FISHBONE2, FISHBONE2,
RIGHT_FISHBONE, RIGHT_FISHBONE,
@ -446,6 +448,8 @@ class Drag extends Base {
this.handleTimeLine2(node) this.handleTimeLine2(node)
break break
case VERTICAL_TIMELINE: case VERTICAL_TIMELINE:
case VERTICAL_TIMELINE2:
case VERTICAL_TIMELINE3:
this.handleLogicalStructure(node) this.handleLogicalStructure(node)
break break
case FISHBONE: case FISHBONE:
@ -475,6 +479,8 @@ class Drag extends Base {
TIMELINE, TIMELINE,
TIMELINE2, TIMELINE2,
VERTICAL_TIMELINE, VERTICAL_TIMELINE,
VERTICAL_TIMELINE2,
VERTICAL_TIMELINE3,
FISHBONE, FISHBONE,
FISHBONE2, FISHBONE2,
RIGHT_FISHBONE, RIGHT_FISHBONE,
@ -572,6 +578,8 @@ class Drag extends Base {
} }
break break
case VERTICAL_TIMELINE: case VERTICAL_TIMELINE:
case VERTICAL_TIMELINE2:
case VERTICAL_TIMELINE3:
if (layerIndex === 0) { if (layerIndex === 0) {
x = x =
lastNodeRect.originLeft + lastNodeRect.originLeft +
@ -667,6 +675,8 @@ class Drag extends Base {
} }
break break
case VERTICAL_TIMELINE: case VERTICAL_TIMELINE:
case VERTICAL_TIMELINE2:
case VERTICAL_TIMELINE3:
if (layerIndex === 0) { if (layerIndex === 0) {
rotate = true rotate = true
} }
@ -718,6 +728,8 @@ class Drag extends Base {
MIND_MAP, MIND_MAP,
TIMELINE2, TIMELINE2,
VERTICAL_TIMELINE, VERTICAL_TIMELINE,
VERTICAL_TIMELINE2,
VERTICAL_TIMELINE3,
FISHBONE, FISHBONE,
FISHBONE2, FISHBONE2,
RIGHT_FISHBONE, RIGHT_FISHBONE,
@ -731,6 +743,8 @@ class Drag extends Base {
case MIND_MAP: case MIND_MAP:
case TIMELINE2: case TIMELINE2:
case VERTICAL_TIMELINE: case VERTICAL_TIMELINE:
case VERTICAL_TIMELINE2:
case VERTICAL_TIMELINE3:
case FISHBONE: case FISHBONE:
case FISHBONE2: case FISHBONE2:
case RIGHT_FISHBONE: case RIGHT_FISHBONE:
@ -748,6 +762,8 @@ class Drag extends Base {
const { LAYOUT, LAYOUT_GROW_DIR } = CONSTANTS const { LAYOUT, LAYOUT_GROW_DIR } = CONSTANTS
const { const {
VERTICAL_TIMELINE, VERTICAL_TIMELINE,
VERTICAL_TIMELINE2,
VERTICAL_TIMELINE3,
FISHBONE, FISHBONE,
FISHBONE2, FISHBONE2,
RIGHT_FISHBONE, RIGHT_FISHBONE,
@ -794,6 +810,8 @@ class Drag extends Base {
let notRenderLine = false let notRenderLine = false
switch (layout) { switch (layout) {
case VERTICAL_TIMELINE: case VERTICAL_TIMELINE:
case VERTICAL_TIMELINE2:
case VERTICAL_TIMELINE3:
if (layerIndex === 1) { if (layerIndex === 1) {
x = x =
nodeRect.originLeft + nodeRect.originLeft +