update editor
This commit is contained in:
parent
07af07cf50
commit
7225ce7f29
@ -7,11 +7,17 @@ import { getGraph } from './client';
|
|||||||
|
|
||||||
const network = ref<HTMLElement>()
|
const network = ref<HTMLElement>()
|
||||||
|
|
||||||
|
type GraphApplication = {
|
||||||
|
name: string,
|
||||||
|
}
|
||||||
|
|
||||||
type GraphNode = {
|
type GraphNode = {
|
||||||
id: number,
|
id: number,
|
||||||
label: string,
|
label: string,
|
||||||
name: string,
|
name: string,
|
||||||
text: string,
|
text: string,
|
||||||
|
applications: Array<GraphApplication>,
|
||||||
|
links: Array<GraphNode>,
|
||||||
};
|
};
|
||||||
|
|
||||||
type GraphEdge = {
|
type GraphEdge = {
|
||||||
@ -35,6 +41,8 @@ const selectedNode = ref<GraphNode>({
|
|||||||
label: "",
|
label: "",
|
||||||
name: "",
|
name: "",
|
||||||
text: "",
|
text: "",
|
||||||
|
applications: [],
|
||||||
|
links: [],
|
||||||
})
|
})
|
||||||
|
|
||||||
let net = <Network>{}
|
let net = <Network>{}
|
||||||
@ -71,8 +79,7 @@ onMounted(async () => {
|
|||||||
net = new Network(network.value, data, options)
|
net = new Network(network.value, data, options)
|
||||||
net.on("click", function (params) {
|
net.on("click", function (params) {
|
||||||
if (params.nodes.length > 0) {
|
if (params.nodes.length > 0) {
|
||||||
console.log("Clicked node:", params.nodes[0]);
|
selectNode(graph.value.nodes[params.nodes[0]])
|
||||||
selectedNode.value = graph.value.nodes[params.nodes[0]]
|
|
||||||
} else if (params.edges.length > 0) {
|
} else if (params.edges.length > 0) {
|
||||||
console.log("Clicked edge:", params.edges[0]);
|
console.log("Clicked edge:", params.edges[0]);
|
||||||
}
|
}
|
||||||
@ -82,7 +89,17 @@ onMounted(async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
function selectNode(node: GraphNode) {
|
function selectNode(node: GraphNode) {
|
||||||
|
console.log("Select node:", node.id)
|
||||||
selectedNode.value = node
|
selectedNode.value = node
|
||||||
|
const links = graph.value.edges.filter(function (it: GraphEdge) {
|
||||||
|
return it.from == node.id
|
||||||
|
}).map(function (it: GraphEdge): GraphNode {
|
||||||
|
const id = it.to
|
||||||
|
const linkNode = graph.value.nodes.filter(function (it: GraphNode) { return it.id == id })
|
||||||
|
return linkNode[0]
|
||||||
|
})
|
||||||
|
|
||||||
|
selectedNode.value.links = links
|
||||||
net.selectNodes([selectedNode.value.id])
|
net.selectNodes([selectedNode.value.id])
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +122,9 @@ function nodeHeader(node: GraphNode): string {
|
|||||||
|
|
||||||
<div v-bind:key="node.id" v-for="node in graph.nodes">
|
<div v-bind:key="node.id" v-for="node in graph.nodes">
|
||||||
<div :class="[node.id == selectedNode.id ? 'selected-node' : '']" class="node-select-button"
|
<div :class="[node.id == selectedNode.id ? 'selected-node' : '']" class="node-select-button"
|
||||||
v-on:click="selectNode(node)">{{ nodeHeader(node) }}</div>
|
v-on:click="selectNode(node)">
|
||||||
|
{{ nodeHeader(node) }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -117,6 +136,20 @@ function nodeHeader(node: GraphNode): string {
|
|||||||
<div>
|
<div>
|
||||||
{{ selectedNode.text }}
|
{{ selectedNode.text }}
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3>Приложения</h3>
|
||||||
|
<div v-bind:key="application.name" v-for="application in selectedNode.applications">
|
||||||
|
{{ application.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3>Ссылки</h3>
|
||||||
|
<div v-bind:key="node.id" v-for="node in selectedNode.links">
|
||||||
|
<div class="node-select-button" v-on:click="selectNode(node)">
|
||||||
|
{{ nodeHeader(node) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -145,6 +178,10 @@ function nodeHeader(node: GraphNode): string {
|
|||||||
max-width: 300px;
|
max-width: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.node-select-button {
|
||||||
|
color: #373737;
|
||||||
|
}
|
||||||
|
|
||||||
.node-select-button:hover {
|
.node-select-button:hover {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user