# FR: Wire Tie Downs

**URL:** <https://discourse.nodered.org/t/fr-wire-tie-downs/57811>\
**Category:** Feature Requests\
**Created:** [5 February 2022 05:28 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811 "2022-02-05T05:28:58Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![quarfie](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quarfie/32/39697_2.png) [@quarfie](https://discourse.nodered.org/u/quarfie)\
**Post date:** [5 February 2022 05:28 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/1 "2022-02-05T05:28:58Z")

</div>

The objective of this idea is to have a little more control over how wires are visually router so that they can be arranged a little more neatly.

Like adding a waypoint on a Google Maps route, you could double-click a wire to add a tie-down, which would be represented as a dot. You could drag the dot anywhere and the wire would have to pass through it.

To delete the tie down, click it and press delete.

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/2/02c337d95efa61a889beac5e328836ff387f6a33.jpeg)

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [5 February 2022 07:30 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/2 "2022-02-05T07:30:49Z")

</div>

I'm sitting on the fence (and getting splinters).

I am not sure this is _valid_ in Node-Red.  
There aren't _busses_ of wires going from one place to another.

And I've found when connecting nodes together NR does a pretty good job anyway.

No, it isn't prefect, but it is good.

I think that what you are wanting done could just as easily be done by moving the nodes.  
And in some cases, use the `link-out` and `link-in` nodes sometimes.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [5 February 2022 08:20 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/3 "2022-02-05T08:20:15Z")

</div>

@quarfie this is something that has been discussed in different guises a few times.

The main difficulty is that wires do not have properties in the flow file format. So there's no easy way to store routing information without a significant change to the flow file.

We do have this proposal being considered for 3.0 which achieves a similar thing but in a more consistent way

> **[Adding junctions to wires · Discussion #62 · node-red/designs](https://github.com/node-red/designs/discussions/62)**
>
> This is an often requested feature that we have historically pushed back on. I recently stumbled over an approach that could work and wanted to get it written down and out of my head. The wires bet...

---

<div class="post-metadata">

**Author:** ![paulkeates](https://avatars.discourse-cdn.com/v4/letter/p/9de053/32.png) [@paulkeates](https://discourse.nodered.org/u/paulkeates)\
**Post date:** [5 February 2022 16:14 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/4 "2022-02-05T16:14:43Z")

</div>

Hi,

You can get a 'little' control over wire positioning depending on how much work you want to put into it.

You can install node-red-contrib-noop, set the Appearance to hide the label (text), and choose a 'neutral' icon to make it more correct for this purpose.

Copy / paste as many as you need - especially using the Group feature - and it can add to the visual appeal.

No-op nodes simply pass the messages along - they do not do ANY processing.

This ONLY works well for vertically-placed nodes due to the left-to-right layout of Node-RED itself. Yes, there have been MANY discussions on allowing flows to contain both horizontal and vertical connections. Personally, I think it would be cool to allow entry/exit points from nodes on the screen to be either vertical or horizontal, which would solve this for you, but not likely to happen soon / ever.

There have been several 'alternate' versions of NR created that do this but I don't think it's on 'The Plan' for core BR.

 ![Screen Shot 2022-02-05 at 11.07.42 AM](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/c/2/c26ef6f08ca2e86eaadc81c35ba854d1109316da.png)

You can see this method break down on the bottom-right of the snapshot I posted; but it might be enough to help you.

Cheers,

Paul

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [5 February 2022 16:20 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/5 "2022-02-05T16:20:45Z")

</div>

A junction node in a tangle of wires would be a good place for the debug suggestion in [this post](https://discourse.nodered.org/t/fr-debug-directly-on-node-output/57812)

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [5 February 2022 16:27 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/6 "2022-02-05T16:27:47Z")

</div>

> [@paulkeates](#):
>
> node-red-contrib-noop

Once again, a Change node with the default rule removed is just as good. There's no need to install an extra node for that.

---

<div class="post-metadata">

**Author:** ![quarfie](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quarfie/32/39697_2.png) [@quarfie](https://discourse.nodered.org/u/quarfie)\
**Post date:** [5 February 2022 16:31 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/7 "2022-02-05T16:31:13Z")

</div>

Just want to propose what I think might be a way to address this...

> [@knolleary](#):
>
> The main difficulty is that wires do not have properties in the flow file format. So there's no easy way to store routing information without a significant change to the flow file.

... in case it hasn't been thought of this way before:

Here is an example flow:

```auto
[{
	"id": "bd5605b0fd7c0e31",
	...
	"x": 860,
	"y": 520,
	"wires": [
		["1e65d35daafa03d1"]
	]
}, {
	"id": "1e65d35daafa03d1",
	...
	"x": 1030,
	"y": 520,
	"wires": []
}]

```

Here it is with tie downs between these nodes:

```auto
[{
	"id": "bd5605b0fd7c0e31",
	...
	"x": 860,
	"y": 520,
	"wires": [
		["1e65d35daafa03d1"]
	],
	"ties": {
		"1e65d35daafa03d1": [
			{ "x": 900, "y": 490 },
			{ "x": 1000, "y": 490 },
		]
	}
}, {
	"id": "1e65d35daafa03d1",
	...
	"x": 1030,
	"y": 520,
	"wires": []
}]

```

The `ties` element appears in the origin node. In it you have the destination node id as a key (so you can put ties on multiple outgoing wires individually). Its value is an array of points, in order from the origin node to the destination node.

The runtime would simply ignore this data, unlike an intermediary node that it would have to iterate through. The editor presumably already reads the `wires` array as it's drawing the lines, and this places the `ties` information conveniently right next to it.

...But maybe it does clog up the flows file too much to be worth it. I don't know...

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [5 February 2022 16:34 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/8 "2022-02-05T16:34:42Z")

</div>

That's an interesting approach - not one I had considered. Worth thinking about alongside the junction concept I linked to.

---

<div class="post-metadata">

**Author:** ![quarfie](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quarfie/32/39697_2.png) [@quarfie](https://discourse.nodered.org/u/quarfie)\
**Post date:** [5 February 2022 17:04 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/9 "2022-02-05T17:04:12Z")

</div>

You could also use a similar structure but instead of a series of x _and_ y points, you could set a series of x _or_ y planes. I'm thinking about a diagraming tool like Whimsical, where the lines mostly travel horizontally or vertically, and you can drag segments side to side or vertically to change the routing.

I think I would prefer that wire design, where the only curves you would see would be rounded corners and the lines are otherwise straight. I'm probably proposing something that would be way more work now... 😂

---

<div class="post-metadata">

**Author:** ![paulkeates](https://avatars.discourse-cdn.com/v4/letter/p/9de053/32.png) [@paulkeates](https://discourse.nodered.org/u/paulkeates)\
**Post date:** [5 February 2022 17:32 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/10 "2022-02-05T17:32:55Z")

</div>

Hi,

Of course you are correct.

The only reason I used no-op was to get the neutral gray colour I preferred. This makes it look less like an 'active component' and more like background wiring to me.

Change nodes are yellow and I don't know of an option to change the colour (maybe I missed it). I use change nodes frequently and in my mind they 'always do something'. When displayed with no label I instinctively hover over them to remind me of their function. Then I'd get the 'change: 0 rules' hover text.

As always: unbounded thanks for writing node-red! We have a team of 10 people using it daily and it replaced tools that we spent \> $80,000 / year with more functionality.

Cheers,

Paul

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [5 February 2022 22:21 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/11 "2022-02-05T22:21:05Z")

</div>

Disclaimer: what follow is just a simple proof of concept to play around with the user interaction. It could turn into something. It could turn into nothing. There's plenty about it I like, and a few things I don't. But for a couple hours tinkering on a Saturday evening, I thought it worth sharing.

![fcpLB4zj6t](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/7/073af702666ea0958973a0714e96d492cb0c0f5f.gif)

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [5 February 2022 22:24 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/12 "2022-02-05T22:24:33Z")

</div>

love it 🙂

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [5 February 2022 22:34 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/13 "2022-02-05T22:34:10Z")

</div>

Looks pretty good to me. 😀

At the risk of really annoying you - I don't suppose there could be an option to add a "name" to the junctions that would appear under them? Being able to annotate wires is something that would be really useful.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [5 February 2022 22:53 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/14 "2022-02-05T22:53:45Z")

</div>

> [@TotallyInformation](#):
>
> I don't suppose there could be an option to add a "name" to the junctions that would appear under them?

Tonight's goal was to experiment with the user experience of adding junctions to the flow. It is far from a full implementation that can start considering the creeping list of features I'm sure you'll all start asking for.

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [5 February 2022 23:03 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/15 "2022-02-05T23:03:23Z")

</div>

Oh yes please 😁

---

<div class="post-metadata">

**Author:** ![quarfie](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/quarfie/32/39697_2.png) [@quarfie](https://discourse.nodered.org/u/quarfie)\
**Post date:** [6 February 2022 00:11 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/16 "2022-02-06T00:11:05Z")

</div>

For an evening, wow, it's pretty amazing! The main limitation I see right now is how the wires follow the same rules as nodes in terms of how they enter and exit at the left and right. So it won't work great for routing wires to the left, I think.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [6 February 2022 00:39 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/17 "2022-02-06T00:39:43Z")

</div>

> [@knolleary](#):
>
> I'm sure you'll all start asking for

Haha, not taking away from your nice demo. I love it when an evenings work goes like that!

But I'll do my best not to be too creative 😀

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [6 February 2022 09:03 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/18 "2022-02-06T09:03:51Z")

</div>

It might be problematic getting the operation right when you start moving the nodes about.

---

<div class="post-metadata">

**Author:** ![Marooned](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marooned/32/2858_2.png) [@Marooned](https://discourse.nodered.org/u/Marooned)\
**Post date:** [8 February 2022 09:56 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/19 "2022-02-08T09:56:30Z")

</div>

> [@knolleary](#):
>
> you'll all start asking for

Well, since you mention it 😉  
Those new points looks like they could be attached to so for example input exit could be pinned to a new dot that would go to all debug nodes. Currently I'm using empty function node as a proxy for connection "many to many" and maintain one wire between them.  
 ![proxy](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/6/c/6c4a13f2330d5e26abe25a1a15392ebe64500de7.png)

But yeah, from working PoC to final version there is always a bumpy road 🙂

---

<div class="post-metadata">

**Author:** ![IanH](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ianh/32/95002_2.png) [@IanH](https://discourse.nodered.org/u/IanH)\
**Post date:** [13 February 2022 00:13 UTC](https://discourse.nodered.org/t/fr-wire-tie-downs/57811/20 "2022-02-13T00:13:03Z")

</div>

I like the concept Nick. Also usfull on the i put to a node which has a lot of feeds, then you want a debug noded added to monitor what goes in.  
Ticks the boxes..  
1 it does nothing to flows other than amalgamate to a single wire.  
2. It is small.. aka a dot big enough to see but takes little visual real estate.  
It has my vote.

[Next page](https://discourse.nodered.org/t/fr-wire-tie-downs/57811.md?page=2)
