Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
logic-flow2
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
hookehuyr
2025-03-13 21:05:57 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a9b149dd3a0776c512fffe9f53ac8edc3ff196f1
a9b149dd
1 parent
4f087c8c
小地图功能
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
138 additions
and
1 deletions
src/router/index.js
src/views/home.vue
src/views/mini-map/index.vue
src/router/index.js
View file @
a9b149d
...
...
@@ -100,6 +100,11 @@ const router = createRouter({
name
:
'adv-dnd-panel-custom'
,
component
:
()
=>
import
(
'../views/adv-dnd-panel/custom.vue'
)
},
{
path
:
'/mini-map'
,
name
:
'mini-map'
,
component
:
()
=>
import
(
'../views/mini-map/index.vue'
)
},
]
})
...
...
src/views/home.vue
View file @
a9b149d
<!--
* @Date: 2025-03-10 14:37:31
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-03-13
17:45:28
* @LastEditTime: 2025-03-13
20:52:22
* @FilePath: /logic-flow2/src/views/home.vue
* @Description: 文件描述
-->
...
...
@@ -24,6 +24,7 @@
<el-button type="primary" @click="goTo('adv-menu')">adv-menu</el-button>
<el-button type="primary" @click="goTo('adv-dnd-panel')">adv-dnd-panel</el-button>
<el-button type="primary" @click="goTo('adv-dnd-panel-custom')">adv-dnd-panel-custom</el-button>
<el-button type="primary" @click="goTo('mini-map')">mini-map</el-button>
</template>
<script setup>
...
...
src/views/mini-map/index.vue
0 → 100644
View file @
a9b149d
<!--
* @Date: 2025-03-10 16:52:35
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-03-13 21:05:08
* @FilePath: /logic-flow2/src/views/mini-map/index.vue
* @Description: 小地图
-->
<template>
<div class="container">
<div ref="container" class="flow-container"></div>
<div class="mini-map-container">
<el-button type="primary" @click="toggleVisible">
{{ visible ? "隐藏" : "显示" }}
</el-button>
<el-button type="primary" @click="handleReset">重置</el-button>
<el-button type="primary" @click="updatePositionWithObject1">
左上角
</el-button>
<el-button type="primary" @click="updatePositionWithObject2">
右下角
</el-button>
</div>
</div>
</template>
<script setup>
import LogicFlow from "@logicflow/core";
import { MiniMap } from "@logicflow/extension";
const container = ref(null);
let lf = null;
const miniMapOptions = {
isShowHeader: false,
isShowCloseIcon: true,
headerTitle: "MiniMap",
width: 200,
height: 120,
rightPosition: 100,
bottomPosition: 100,
};
const visible = ref(false);
const position = ref(false);
onMounted(() => {
lf = new LogicFlow({
container: container.value,
grid: true,
plugins: [MiniMap],
pluginsOptions: {
miniMap: {
...miniMapOptions,
},
},
});
lf.on("miniMap:close", () => {
visible.value = false;
});
lf.render({
nodes: [
{ id: "node1", type: "rect", x: 200, y: 100 },
{ id: "node2", type: "circle", x: 400, y: 100 },
],
edges: [{ id: "edge1", sourceNodeId: "node1", targetNodeId: "node2" }],
});
});
const toggleVisible = () => {
if (lf) {
const miniMap = lf.extension.miniMap;
if (visible.value) {
miniMap.hide();
} else {
miniMap.show();
}
visible.value = !visible.value;
}
};
const handleReset = () => {
if (lf) {
lf.extension.miniMap.reset();
}
};
const updatePosition = (position) => {
if (lf) {
const miniMap = lf.extension.miniMap;
miniMap.updatePosition(position);
position.value = position;
}
};
const updatePositionWithObject1 = () => {
(lf?.extension.miniMap).updatePosition({
left: 100,
top: 100,
});
};
const updatePositionWithObject2 = () => {
(lf?.extension.miniMap).updatePosition({
right: 100,
bottom: 100,
});
};
</script>
<style scoped>
.container {
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
}
.flow-container {
flex: 1;
width: 100%;
height: 100%;
}
.mini-map-container {
position: absolute;
bottom: 20px;
right: 20px;
}
</style>
Please
register
or
login
to post a comment