{% extends 'generic/object.html' %} {% load static %} {% load i18n %} {% load rack_design %} {# Read-only projected rack elevation, rendered with GridStack (staticGrid). #} {# Consumes the projection.project_rack contract: design, rack, front, rear, #} {# non_racked, face. Front/Rear toggle is client-side; the tray below lists #} {# position-less placements. State tints come from rack_design.css. #} {% block head %} {{ block.super }} {% endblock head %} {% block content %}

{% blocktrans with rack=rack.name design=design.title %}Projected elevation: {{ rack }} ({{ design }}){% endblocktrans %}

{# Legend #}
{% trans "Existing" %} {% trans "Add" %} {% trans "Move in" %} {% trans "Move out (ghost)" %} {% trans "Remove" %}
{# ---- Front face ---- #}

{% trans "Front" %}

    {% for u in rack.units %}
  • {% if u|rack_whole_unit %}{{ u|floatformat:"0" }}{% endif %}
  • {% endfor %}
{% for slot in front %}
{{ slot.label }}
{% empty %} {% endfor %}
{% if not front %}

{% trans "No projected slots on this face." %}

{% endif %}
{# ---- Rear face ---- #}

{% trans "Rear" %}

    {% for u in rack.units %}
  • {% if u|rack_whole_unit %}{{ u|floatformat:"0" }}{% endif %}
  • {% endfor %}
{% for slot in rear %}
{{ slot.label }}
{% empty %} {% endfor %}
{% if not rear %}

{% trans "No projected slots on this face." %}

{% endif %}
{# ---- Non-racked tray ---- #}

{% trans "Non-racked placements" %}

{% if non_racked %}
{% for slot in non_racked %}
{{ slot.label }}
{% endfor %}
{% else %}

{% trans "No non-racked placements." %}

{% endif %}
{% endblock content %} {% block javascript %} {{ block.super }} {% endblock javascript %}