cable_trace.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. {% extends 'base/layout.html' %}
  2. {% load helpers %}
  3. {% load i18n %}
  4. {% block title %}{% blocktrans %}Cable Trace for {{ object|meta:"verbose_name"|bettertitle }} {{ object }}{% endblocktrans %}{% endblock %}
  5. {% block content %}
  6. <div class="row">
  7. {# Cable trace SVG & options #}
  8. <div class="col col-md-5">
  9. {% if path %}
  10. <div class="text-center my-3">
  11. <object data="{{ svg_url }}" class="rack_elevation"></object>
  12. <div>
  13. <a class="btn btn-outline-primary btn-sm my-3" href="{{ svg_url }}">
  14. <i class="mdi mdi-file-download"></i> {% trans "Download SVG" %}
  15. </a>
  16. </div>
  17. </div>
  18. <div class="trace-end">
  19. {% if path.is_split %}
  20. <h3 class="text-danger">{% trans "Path split" %}!</h3>
  21. <p>{% trans "Select a node below to continue" %}:</p>
  22. <ul class="text-start">
  23. {% for next_node in path.get_split_nodes %}
  24. {% if next_node.cable %}
  25. {% with viewname=next_node|viewname:"trace" %}
  26. <li>
  27. <a href="{% url viewname pk=next_node.pk %}">{{ next_node|meta:"verbose_name"|bettertitle }} {{ next_node }}</a>
  28. ({% trans "Cable" %} {{ next_node.cable|linkify }})
  29. </li>
  30. {% endwith %}
  31. {% else %}
  32. <li class="text-muted">{{ next_node }}</li>
  33. {% endif %}
  34. {% endfor %}
  35. </ul>
  36. {% else %}
  37. <h3 class="text-center text-success">{% trans "Trace Completed" %}</h3>
  38. <table class="table">
  39. <tr>
  40. <th scope="row">{% trans "Total segments" %}</th>
  41. <td>{{ path.segment_count }}</td>
  42. </tr>
  43. <tr>
  44. <th scope="row">{% trans "Total length" %}</th>
  45. <td>
  46. {% if total_length %}
  47. {{ total_length|floatformat:"-2" }}{% if not is_definitive %}+{% endif %} {% trans "Meters" %} /
  48. {{ total_length|meters_to_feet|floatformat:"-2" }} {% trans "Feet" %}
  49. {% else %}
  50. <span class="text-muted">{% trans "N/A" %}</span>
  51. {% endif %}
  52. </td>
  53. </tr>
  54. </table>
  55. {% endif %}
  56. </div>
  57. {% else %}
  58. <h3 class="text-center text-muted my-3">
  59. {% trans "No paths found" %}
  60. </h3>
  61. {% endif %}
  62. </div>
  63. {# Related paths #}
  64. <div class="col col-md-7">
  65. <div class="card">
  66. <h5 class="card-header">
  67. {% trans "Related Paths" %}
  68. </h5>
  69. <div class="card-body">
  70. <table class="table table-hover">
  71. <thead>
  72. <tr>
  73. <th>{% trans "Origin" %}</th>
  74. <th>{% trans "Destination" %}</th>
  75. <th>{% trans "Segments" %}</th>
  76. </tr>
  77. </thead>
  78. <tbody>
  79. {% for cablepath in related_paths %}
  80. <tr{% if cablepath.pk == path.pk %} class="info"{% endif %}>
  81. <td>
  82. <a href="?cablepath_id={{ cablepath.pk }}">{{ cablepath.origins|join:", " }}</a>
  83. </td>
  84. <td>
  85. {% if cablepath.destinations %}
  86. {{ cablepath.destinations|join:", " }}
  87. {% else %}
  88. <span class="text-muted">{% trans "Incomplete" %}</span>
  89. {% endif %}
  90. </td>
  91. <td>
  92. {{ cablepath.segment_count }}
  93. </td>
  94. </tr>
  95. {% empty %}
  96. <td colspan="3" class="text-muted">
  97. {% trans "None found" %}
  98. </td>
  99. {% endfor %}
  100. </tbody>
  101. </table>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. {% endblock %}