|
@@ -10,79 +10,20 @@
|
|
|
@drop="managerDrop"
|
|
|
:width="width"
|
|
|
:height="height">
|
|
|
- <defs>
|
|
|
- <marker id="head" class="flow-link__head" orient="auto" markerWidth="4" markerHeight="8"
|
|
|
- refX="0.1" refY="4">
|
|
|
- <path d="M0,0 V8 L4,4 Z"/>
|
|
|
- </marker>
|
|
|
- <filter
|
|
|
- id="highlight-border"
|
|
|
- x="-50%"
|
|
|
- y="-50%"
|
|
|
- width="200%"
|
|
|
- height="200%"
|
|
|
- filterUnits="userSpaceOnUse"
|
|
|
- >
|
|
|
- <feMorphology in="SourceGraphic" result="MORPH" operator="dilate" radius="1" />
|
|
|
- <feColorMatrix
|
|
|
- in="MORPH" result="BORDER" type="matrix"
|
|
|
- values=".2 0 0 0 0, 0 .2 0 0 0, 0 0 .2 0 0, 0 0 0 .7 0"/>
|
|
|
- <feColorMatrix
|
|
|
- result = "matrixOut"
|
|
|
- in = "SourceGraphic"
|
|
|
- type = "matrix"
|
|
|
- values = ".5 0 0 0 0, 0 .5 0 0 0, 0 0 .5 0 0, 0 0 0 1 0"/>
|
|
|
- <feGaussianBlur
|
|
|
- result="blurOut"
|
|
|
- in="matrixOut"
|
|
|
- stdDeviation="2" />
|
|
|
- <feMerge>
|
|
|
- <feMergeNode in="blurOut"/>
|
|
|
- <feMergeNode in="BORDER"/>
|
|
|
- <feMergeNode in="SourceGraphic"/>
|
|
|
- </feMerge>
|
|
|
+ <svg-defs/>
|
|
|
|
|
|
- </filter>
|
|
|
- <filter
|
|
|
- id="highlight"
|
|
|
- x="-50%"
|
|
|
- y="-50%"
|
|
|
- width="200%"
|
|
|
- height="200%"
|
|
|
- filterUnits="userSpaceOnUse"
|
|
|
-
|
|
|
- >
|
|
|
- <feColorMatrix
|
|
|
- result = "matrixOut"
|
|
|
- in = "SourceGraphic"
|
|
|
- type = "matrix"
|
|
|
- values = "2 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 1 0"/>
|
|
|
- <feGaussianBlur
|
|
|
- result="blurOut"
|
|
|
- in="matrixOut"
|
|
|
- stdDeviation="4" />
|
|
|
- <feMerge>
|
|
|
- <feMergeNode in="blurOut"/>
|
|
|
- <feMergeNode in="SourceGraphic"/>
|
|
|
- </feMerge>
|
|
|
-
|
|
|
- </filter>
|
|
|
- <filter id="drag-shadow" x="-100%" y="-100%" width="300%" height="300%">
|
|
|
- <feDropShadow dx="0" dy="2" stdDeviation="3"/>
|
|
|
- </filter>
|
|
|
-
|
|
|
- </defs>
|
|
|
<flow-pan-zoom
|
|
|
ref="panzoom"
|
|
|
v-model="panzoom">
|
|
|
+
|
|
|
+ <!-- links below nodes -->
|
|
|
<flow-link
|
|
|
v-for="(link,i) in nodeData.links"
|
|
|
:key="i"
|
|
|
v-bind="linkProps(link)"
|
|
|
@click="linkRemove(link)"
|
|
|
/>
|
|
|
-
|
|
|
- <!-- mouse link-->
|
|
|
+ <!-- nodes -->
|
|
|
<flow-node
|
|
|
ref="nodes"
|
|
|
v-for="(n,i) of nodeData.nodes"
|
|
@@ -91,7 +32,9 @@
|
|
|
:id="n.id"
|
|
|
@nodePointerDown.prevent="nodeDragStart($event,i)"
|
|
|
@socketPointerDown="socketPointerDown(n.id,...arguments)"
|
|
|
+ @nodeDoubleClick="$emit('nodeInspect',n.id)"
|
|
|
/>
|
|
|
+ <!-- mouse link-->
|
|
|
<flow-link
|
|
|
:pointer="true"
|
|
|
v-if="pointerLink.active"
|
|
@@ -104,23 +47,24 @@
|
|
|
<button @click="$emit('funcsPanelToggle')">Panel</button>
|
|
|
<button @click="stickySockets=!stickySockets"> {{ stickySockets? 'Hide':'Show' }} sockets </button>
|
|
|
<button v-if="panzoom.x!=0 || panzoom.y!=0 || panzoom.zoom!=1" @click="panzoomReset">Reset view</button>
|
|
|
-
|
|
|
</div>
|
|
|
<div class="flow-container__info">
|
|
|
x:{{ panzoom.x.toFixed(2) }} y:{{ panzoom.y.toFixed(2) }} scale:{{ panzoom.zoom.toFixed(2) }}
|
|
|
nodes: {{ nodeData.nodes.length }}
|
|
|
links: {{ nodeData.links.length }}
|
|
|
</div>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import FlowNode from './node'
|
|
|
import FlowLink from './link'
|
|
|
import FlowPanZoom from './panzoom'
|
|
|
+import SvgDefs from './svgdefwrapper.vue'
|
|
|
|
|
|
export default {
|
|
|
name: 'FlowManager',
|
|
|
- components: {FlowNode, FlowLink, FlowPanZoom},
|
|
|
+ components: {FlowNode, FlowLink, FlowPanZoom, SvgDefs},
|
|
|
props: {
|
|
|
'value': {type: Object, default: () => {}},
|
|
|
'registry': {type: Object, default: () => {}},
|
|
@@ -331,6 +275,10 @@ export default {
|
|
|
document.addEventListener('mousemove', drag)
|
|
|
document.addEventListener('mouseup', drop)
|
|
|
},
|
|
|
+ nodeDoubleClick (ev, i) {
|
|
|
+ this.nodeModalTarget = i
|
|
|
+ this.nodeModal = true
|
|
|
+ },
|
|
|
nodeDragStart (ev, i) {
|
|
|
document.activeElement && document.activeElement.blur()
|
|
|
var tnode = this.nodeData.nodes[i]
|
|
@@ -480,7 +428,11 @@ function guid () {
|
|
|
fill:transparent;
|
|
|
}
|
|
|
|
|
|
-/* Override flow-node */
|
|
|
+/*
|
|
|
+Override flow-node
|
|
|
+for hidden
|
|
|
+ */
|
|
|
+
|
|
|
.flow-node__socket {
|
|
|
pointer-events: none;
|
|
|
fill:transparent !important;
|
|
@@ -493,9 +445,12 @@ function guid () {
|
|
|
}
|
|
|
.flow-linking .flow-node__socket--match,
|
|
|
.flow-node__socket--match {
|
|
|
+ pointer-events: initial;
|
|
|
stroke:#2f2 !important;
|
|
|
fill:#2f2 !important;
|
|
|
- filter: url(#highlight-border);
|
|
|
}
|
|
|
|
|
|
+.flow-modal .hx-modal__container {
|
|
|
+ background: rgba(208,208,208,1);
|
|
|
+}
|
|
|
</style>
|