Skip to content

Commit 1aa1dce

Browse files
committed
Display device names in front of device front/rear images
Fixes #6879
1 parent 76df55d commit 1aa1dce

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

netbox/dcim/elevations.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,9 @@ def _draw_device_front(self, drawing, device, start, end, text):
8989
)
9090
link.set_desc(self._get_device_description(device))
9191
link.add(drawing.rect(start, end, style='fill: #{}'.format(color), class_='slot'))
92-
hex_color = '#{}'.format(foreground_color(color))
93-
link.add(drawing.text(str(name), insert=text, fill=hex_color))
9492

9593
# Embed front device type image if one exists
94+
text_color = '#{}'.format(foreground_color(color))
9695
if self.include_images and device.device_type.front_image:
9796
image = drawing.image(
9897
href=device.device_type.front_image.url,
@@ -103,11 +102,14 @@ def _draw_device_front(self, drawing, device, start, end, text):
103102
image.fit(scale='slice')
104103
link.add(image)
105104

105+
link.add(drawing.text(str(name), insert=text, stroke='#{}'.format(color),
106+
stroke_width='0.2em', stroke_linejoin='round', class_='device-label'))
107+
link.add(drawing.text(str(name), insert=text, fill=text_color, class_='device-label'))
108+
106109
def _draw_device_rear(self, drawing, device, start, end, text):
107110
rect = drawing.rect(start, end, class_="slot blocked")
108111
rect.set_desc(self._get_device_description(device))
109112
drawing.add(rect)
110-
drawing.add(drawing.text(str(device), insert=text))
111113

112114
# Embed rear device type image if one exists
113115
if self.include_images and device.device_type.rear_image:
@@ -120,6 +122,10 @@ def _draw_device_rear(self, drawing, device, start, end, text):
120122
image.fit(scale='slice')
121123
drawing.add(image)
122124

125+
drawing.add(drawing.text(str(device), insert=text, stroke='white',
126+
stroke_width='0.2em', stroke_linejoin='round', class_='device-label'))
127+
drawing.add(drawing.text(str(device), insert=text, class_='device-label'))
128+
123129
@staticmethod
124130
def _draw_empty(drawing, rack, start, end, text, id_, face_id, class_, reservation):
125131
link = drawing.add(

netbox/project-static/js/rack_elevations.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,16 @@ $('button.toggle-images').click(function() {
1111
$(this).children('span').toggleClass('mdi-checkbox-marked-circle-outline mdi-checkbox-blank-circle-outline');
1212
return false;
1313
});
14+
// Toggle the display of device labels within an SVG rack elevation
15+
$('button.toggle-labels').click(function() {
16+
var selected = $(this).attr('selected');
17+
var rack_elevation = $(".rack_elevation");
18+
if (selected) {
19+
$('.device-label', rack_elevation.contents()).addClass('hidden');
20+
} else {
21+
$('.device-label', rack_elevation.contents()).removeClass('hidden');
22+
}
23+
$(this).attr('selected', !selected);
24+
$(this).children('span').toggleClass('mdi-checkbox-marked-circle-outline mdi-checkbox-blank-circle-outline');
25+
return false;
26+
});

netbox/templates/dcim/rack.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
<button class="btn btn-sm btn-default toggle-images" selected="selected">
4141
<span class="mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Images
4242
</button>
43+
<button class="btn btn-sm btn-default toggle-labels" selected="selected">
44+
<span class="mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Labels
45+
</button>
4346
{{ block.super }}
4447
{% endblock %}
4548

netbox/templates/dcim/rack_elevation_list.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
<button class="btn btn-default toggle-images" selected="selected">
88
<span class="mdi mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Images
99
</button>
10+
<button class="btn btn-default toggle-labels" selected="selected">
11+
<span class="mdi mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Labels
12+
</button>
1013
<div class="btn-group" role="group">
1114
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='front' %}" class="btn btn-default{% if rack_face == 'front' %} active{% endif %}">Front</a>
1215
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='rear' %}" class="btn btn-default{% if rack_face == 'rear' %} active{% endif %}">Rear</a>

0 commit comments

Comments
 (0)