report.html 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. {% extends 'base.html' %}
  2. {% load helpers %}
  3. {% load static %}
  4. {% block title %}{{ report.name }}{% endblock %}
  5. {% block content %}
  6. <div class="row noprint">
  7. <div class="col-md-12">
  8. <ol class="breadcrumb">
  9. <li><a href="{% url 'extras:report_list' %}">Reports</a></li>
  10. <li><a href="{% url 'extras:report_list' %}#module.{{ report.module }}">{{ report.module|bettertitle }}</a></li>
  11. <li>{{ report.name }}</li>
  12. </ol>
  13. </div>
  14. </div>
  15. {% if perms.extras.add_reportresult %}
  16. <div class="pull-right noprint">
  17. <form action="{% url 'extras:report_run' name=report.full_name %}" method="post">
  18. {% csrf_token %}
  19. {{ run_form }}
  20. <button type="submit" name="_run" class="btn btn-primary"><i class="fa fa-play"></i> Run Report</button>
  21. </form>
  22. </div>
  23. {% endif %}
  24. <h1>{{ report.name }}{% include 'extras/inc/job_label.html' with result=report.result %}</h1>
  25. <div class="row">
  26. <div class="col-md-12">
  27. {% if report.description %}
  28. <p class="lead">{{ report.description }}</p>
  29. {% endif %}
  30. {% if report.result %}
  31. <p>Last run: <strong>{{ report.result.created }}</strong> {% if report.result.completed %} Duration: <strong>{{ report.result.duration }}</strong>{% endif %}</p>
  32. {% endif %}
  33. {% if report.pending_result %}
  34. <p>
  35. Pending run: <strong>{{ report.pending_result.created }}</strong>
  36. <span id="pending-result-label">{% include 'extras/inc/job_label.html' with result=report.pending_result %}</span>
  37. <img id="pending-result-loader" src="{% static 'img/ajax-loader.gif' %}" />
  38. </p>
  39. {% endif %}
  40. {% if report.result %}
  41. <div class="panel panel-default">
  42. <div class="panel-heading">
  43. <strong>Report Methods</strong>
  44. </div>
  45. <table class="table table-hover panel-body">
  46. {% for method, data in report.result.data.items %}
  47. <tr>
  48. <td><code><a href="#{{ method }}">{{ method }}</a></code></td>
  49. <td class="text-right report-stats">
  50. <label class="label label-success">{{ data.success }}</label>
  51. <label class="label label-info">{{ data.info }}</label>
  52. <label class="label label-warning">{{ data.warning }}</label>
  53. <label class="label label-danger">{{ data.failure }}</label>
  54. </td>
  55. </tr>
  56. {% endfor %}
  57. </table>
  58. </div>
  59. <div class="panel panel-default">
  60. <div class="panel-heading">
  61. <strong>Report Results</strong>
  62. </div>
  63. <table class="table table-hover panel-body report">
  64. <thead>
  65. <tr class="table-headings">
  66. <th>Time</th>
  67. <th>Level</th>
  68. <th>Object</th>
  69. <th>Message</th>
  70. </tr>
  71. </thead>
  72. <tbody>
  73. {% for method, data in report.result.data.items %}
  74. <tr>
  75. <th colspan="4" style="font-family: monospace">
  76. <a name="{{ method }}"></a>{{ method }}
  77. </th>
  78. </tr>
  79. {% for time, level, obj, url, message in data.log %}
  80. <tr class="{% if level == 'failure' %}danger{% elif level %}{{ level }}{% endif %}">
  81. <td>{{ time }}</td>
  82. <td>
  83. <label class="label label-{% if level == 'failure' %}danger{% else %}{{ level }}{% endif %}">{{ level|title }}</label>
  84. </td>
  85. <td>
  86. {% if obj and url %}
  87. <a href="{{ url }}">{{ obj }}</a>
  88. {% elif obj %}
  89. {{ obj }}
  90. {% endif %}
  91. </td>
  92. <td>{{ message }}</td>
  93. </tr>
  94. {% endfor %}
  95. {% endfor %}
  96. </tbody>
  97. </table>
  98. </div>
  99. {% else %}
  100. <div class="well">No results are available for this report. Please run the report first.</div>
  101. {% endif %}
  102. </div>
  103. <div class="col-md-3">
  104. {% if report.result %}
  105. {% endif %}
  106. </div>
  107. </div>
  108. {% endblock %}
  109. {% block javascript %}
  110. <script type="text/javascript">
  111. {% if report.pending_result %}
  112. var pending_result_id = {{ report.pending_result.pk }};
  113. {% else %}
  114. var pending_result_id = null;
  115. {% endif %}
  116. function jobTerminatedAction(){
  117. $('#pending-result-loader').hide();
  118. var refreshButton = document.createElement('button');
  119. refreshButton.className = 'btn btn-xs btn-primary';
  120. refreshButton.onclick = refreshWindow;
  121. refreshButton.innerHTML = '<i class="fa fa-refresh"></i> Refresh';
  122. $('#pending-result-loader').parents('p').append(refreshButton)
  123. }
  124. </script>
  125. <script src="{% static 'js/job_result.js' %}?v{{ settings.VERSION }}"
  126. onerror="window.location='{% url 'media_failure' %}?filename=js/job_result.js'"></script>
  127. {% endblock %}