Cable Trace View Readability #5995

Closed
opened 2025-12-29 19:35:30 +01:00 by adam · 14 comments
Owner

Originally created by @mshuttle76 on GitHub (Jan 25, 2022).

NetBox version

v3.1.6

Feature type

Change to existing functionality

Proposed functionality

image

For long object coordinates (site, rack group, rack ecc.) it would be useful to be rendered in two lines instead of a single one for more readability.

Use case

Improved readability for objects into cable trace view.

Database changes

No response

External dependencies

No response

Originally created by @mshuttle76 on GitHub (Jan 25, 2022). ### NetBox version v3.1.6 ### Feature type Change to existing functionality ### Proposed functionality ![image](https://user-images.githubusercontent.com/60605051/150965989-8915b7c8-3150-4f6a-9c57-677febc7cf7e.png) For long object coordinates (site, rack group, rack ecc.) it would be useful to be rendered in two lines instead of a single one for more readability. ### Use case Improved readability for objects into cable trace view. ### Database changes _No response_ ### External dependencies _No response_
adam added the type: featurestatus: needs ownerpending closure labels 2025-12-29 19:35:30 +01:00
adam closed this issue 2025-12-29 19:35:30 +01:00
Author
Owner

@jeremystretch commented on GitHub (Jan 25, 2022):

IIRC the root issue here is that SVG has no notion of text wrapping; it needs to be handled manually, which is not trivial. I could be wrong though.

@jeremystretch commented on GitHub (Jan 25, 2022): IIRC the root issue here is that SVG has no notion of text wrapping; it needs to be handled manually, which is not trivial. I could be wrong though.
Author
Owner

@github-actions[bot] commented on GitHub (Mar 27, 2022):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.

@github-actions[bot] commented on GitHub (Mar 27, 2022): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@DetunizedGravity commented on GitHub (Mar 30, 2022):

I would like to raise this issue from the (soon to be) dead: we were forced to rename all our sites to very short versions of themselves, putting the actual names in the description field, in order to keep the cable trace readable. That is a less than ideal situation.

@DetunizedGravity commented on GitHub (Mar 30, 2022): I would like to raise this issue from the (soon to be) dead: we were forced to rename all our sites to very short versions of themselves, putting the actual names in the description field, in order to keep the cable trace readable. That is a less than ideal situation.
Author
Owner

@jeremystretch commented on GitHub (Mar 30, 2022):

@DetunizedGravity are you interested in owning the issue?

@jeremystretch commented on GitHub (Mar 30, 2022): @DetunizedGravity are you interested in owning the issue?
Author
Owner

@DetunizedGravity commented on GitHub (Apr 2, 2022):

To sum up what I answered by email (and that I thought would appear here), I don't think I have enough free time to commit to anything, and I have stopped coding seriously for so long that I'm completely lost in the current devops ecosystem.

I just tried to see if I could install Visual Studio Code and evaluate the actual cost of entry and... Oh boy how steep the learning curve seems to be.

So, definitely no at the moment.

@DetunizedGravity commented on GitHub (Apr 2, 2022): To sum up what I answered by email (and that I thought would appear here), I don't think I have enough free time to commit to anything, and I have stopped coding seriously for so long that I'm completely lost in the current devops ecosystem. I just tried to see if I could install Visual Studio Code and evaluate the actual cost of entry and... Oh boy how steep the learning curve seems to be. So, definitely no at the moment.
Author
Owner

@dreng commented on GitHub (Apr 6, 2022):

Personally I've never run into that problem but the example above shows a very annoying bug.

What about just appending every variable with labels.append instead of concatenating some of them in one line (in svg.py, classmethod _get_labels)? That would be a very quick fix. It leads to the situation that you might end up with a huge amount of lines (it sums up to 5 lines at most in our environment), but that would be a much better solution than leaving it as it is.

I just fixed this on my test server and could add a PR if you consider this as an acceptable solution.

@dreng commented on GitHub (Apr 6, 2022): Personally I've never run into that problem but the example above shows a very annoying bug. What about just appending every variable with labels.append instead of concatenating some of them in one line (in svg.py, classmethod _get_labels)? That would be a very quick fix. It leads to the situation that you might end up with a huge amount of lines (it sums up to 5 lines at most in our environment), but that would be a much better solution than leaving it as it is. I just fixed this on my test server and could add a PR if you consider this as an acceptable solution.
Author
Owner

@jeremystretch commented on GitHub (May 12, 2022):

@dreng that might help but I'm not sure it would totally resolve the issue for very long strings. Either way, I'm about to make some major changes to the cable trace rendering logic for #9102, so it's probably best to hold off for now.

I'm going to mark this as blocked by #9102 and revisit during/after that work.

@jeremystretch commented on GitHub (May 12, 2022): @dreng that might help but I'm not sure it would totally resolve the issue for very long strings. Either way, I'm about to make some major changes to the cable trace rendering logic for #9102, so it's probably best to hold off for now. I'm going to mark this as blocked by #9102 and revisit during/after that work.
Author
Owner

@jeremystretch commented on GitHub (Jul 27, 2022):

The labeling still works pretty much the same after #9102 (although the code has been cleaned up significantly). Leaving this open for anyone who would like to take a stab at fitting the text into the SVG more elegantly.

@jeremystretch commented on GitHub (Jul 27, 2022): The labeling still works pretty much the same after #9102 (although the code has been cleaned up significantly). Leaving this open for anyone who would like to take a stab at fitting the text into the SVG more elegantly.
Author
Owner

@dreng commented on GitHub (Jul 27, 2022):

@jeremystretch I doubt that there's an elegant solution we can work out at compile time. There are several problems that prevent that. First of all we use a font-family. You can not expect any browser on any OS to render the font identically. Second of all we use proportional fonts which makes it more than difficult to calculate the width of a certain string. E.g. 20 times "i" takes the space of 70px on my system while 20 times "M" takes 206px (about 3 times as much!).

I think the only true solution would be to determine the width of the string at runtime after rendering and add the needed padding. That could probably be achieved using Javascript but I have no idea how to do that.

To sum it up we need a good compromise and should accept that there might be not an ideal solution.

@dreng commented on GitHub (Jul 27, 2022): @jeremystretch I doubt that there's an elegant solution we can work out at compile time. There are several problems that prevent that. First of all we use a font-family. You can not expect any browser on any OS to render the font identically. Second of all we use proportional fonts which makes it more than difficult to calculate the width of a certain string. E.g. 20 times "i" takes the space of 70px on my system while 20 times "M" takes 206px (about 3 times as much!). I think the only true solution would be to determine the width of the string at runtime after rendering and add the needed padding. That could probably be achieved using Javascript but I have no idea how to do that. To sum it up we need a good compromise and should accept that there might be not an ideal solution.
Author
Owner

@arthanson commented on GitHub (Sep 15, 2022):

Potential solution -
There is a JS implementation here (https://old.carto.net/papers/svg/textFlow/) "This ECMAScript function (textFlow) should assist SVG developers to create flow text until widespread support of SVG 1.2 viewers with flowText support is available." (haven't tried it yet), files attached as the website looked like it sometimes become non-accessible.
textflow.zip
Note: It does note some browser issues and hasn't been updated in several years.

@arthanson commented on GitHub (Sep 15, 2022): Potential solution - There is a JS implementation here (https://old.carto.net/papers/svg/textFlow/) "This ECMAScript function (textFlow) should assist SVG developers to create flow text until widespread support of SVG 1.2 viewers with flowText support is available." (haven't tried it yet), files attached as the website looked like it sometimes become non-accessible. [textflow.zip](https://github.com/netbox-community/netbox/files/9570504/textflow.zip) **Note:** It does note some browser issues and hasn't been updated in several years.
Author
Owner

@DetunizedGravity commented on GitHub (Oct 11, 2022):

Hello Jeremy,

I am sorry but it would be a bad idea. I haven't touched coding for so long
that git did not exist yet the last time I pushed code into the open (Did
you know there was another "pysocks" project on sourceforge before the the
one you surely know now was born? :) ). I'd have to (re)learn how to use
all the modern tooling before I could play an active part. Not to mention
modern python, django, docker, and the netbox code base. What leads me to
the second obstacle: I really do not have enough time on my hands for
that right now.

Netbox is already important to us and it will only become even more so with
time. So it would be nice if we could play a more active role in its
development. Unfortunately our current workload makes it impossible to most
if not all of us right now.

It may change in a few months from now, when things will have settled a bit
and I should be able to get my head out of the sand. I hope.

Best regards,
Xavier Lagraula

Le mer. 30 mars 2022 à 18:42, Jeremy Stretch @.***> a
écrit :

@DetunizedGravity https://github.com/DetunizedGravity are you
interested in owning the issue?


Reply to this email directly, view it on GitHub
https://github.com/netbox-community/netbox/issues/8450#issuecomment-1083374259,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAF45H3ROLOAX7PFP4COF63VCSAARANCNFSM5MX6NCTQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

@DetunizedGravity commented on GitHub (Oct 11, 2022): Hello Jeremy, I am sorry but it would be a bad idea. I haven't touched coding for so long that git did not exist yet the last time I pushed code into the open (Did you know there was another "pysocks" project on sourceforge before the the one you surely know now was born? :) ). I'd have to (re)learn how to use all the modern tooling before I could play an active part. Not to mention modern python, django, docker, and the netbox code base. What leads me to the second obstacle: I **really** do not have enough time on my hands for that right now. Netbox is already important to us and it will only become even more so with time. So it would be nice if we could play a more active role in its development. Unfortunately our current workload makes it impossible to most if not all of us right now. It may change in a few months from now, when things will have settled a bit and I should be able to get my head out of the sand. I hope. Best regards, Xavier Lagraula Le mer. 30 mars 2022 à 18:42, Jeremy Stretch ***@***.***> a écrit : > @DetunizedGravity <https://github.com/DetunizedGravity> are you > interested in owning the issue? > > — > Reply to this email directly, view it on GitHub > <https://github.com/netbox-community/netbox/issues/8450#issuecomment-1083374259>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/AAF45H3ROLOAX7PFP4COF63VCSAARANCNFSM5MX6NCTQ> > . > You are receiving this because you were mentioned.Message ID: > ***@***.***> >
Author
Owner

@github-actions[bot] commented on GitHub (Dec 11, 2022):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Do not attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our contributing guide.

@github-actions[bot] commented on GitHub (Dec 11, 2022): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. **Do not** attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@github-actions[bot] commented on GitHub (Mar 27, 2023):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Do not attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our contributing guide.

@github-actions[bot] commented on GitHub (Mar 27, 2023): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. **Do not** attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@github-actions[bot] commented on GitHub (Apr 27, 2023):

This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.

@github-actions[bot] commented on GitHub (Apr 27, 2023): This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#5995