No Description

kpi_dashboard.html 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. {% extends "layouts/default.html" %}
  2. {% block title %}KPI Dashboard{% endblock %}
  3. {% block stylesheets %}
  4. <link rel="stylesheet" href="/static/assets/css/kpi_dashboard.css">
  5. {% endblock %}
  6. {% block content %}
  7. <div class="panel-header bg-primary-gradient mt--4">
  8. <div class="page-inner py-4">
  9. <h2 class="text-white fw-bold">KPI Dashboard</h2>
  10. </div>
  11. </div>
  12. <div class="page-inner mt--5">
  13. <!-- Table card -->
  14. <div class="card">
  15. <!-- Tabs + filters inside card header -->
  16. <div class="card-header pb-0 pt-3">
  17. <ul class="nav nav-tabs card-header-tabs" id="kpi-tabs">
  18. <li class="nav-item">
  19. <a class="nav-link active" id="tab-alerts" href="#" onclick="switchTab('alerts'); return false;">Alerts</a>
  20. </li>
  21. <li class="nav-item">
  22. <a class="nav-link" id="tab-cases" href="#" onclick="switchTab('cases'); return false;">Cases</a>
  23. </li>
  24. </ul>
  25. <div class="d-flex gap-2 mt-2 mb-2">
  26. <input id="filter-owner" class="form-control form-control-sm" style="width:180px"
  27. placeholder="Enter Assignee..." oninput="debouncedLoad()">
  28. <input id="filter-title" class="form-control form-control-sm" style="width:240px"
  29. placeholder="Enter name..." oninput="debouncedLoad()">
  30. </div>
  31. </div>
  32. <div class="card-body p-0">
  33. <div class="table-responsive">
  34. <table class="table table-hover table-sm mb-0" id="alerts-table">
  35. <thead class="table-light">
  36. <tr>
  37. <th><input type="checkbox" id="chk-all" onchange="toggleAll(this)"></th>
  38. <th></th>
  39. <th>Assignee</th>
  40. <th class="sortable" data-col="alert_id" onclick="sortBy('alert_id')">No. <span class="sort-icon">↕</span></th>
  41. <th class="sortable" data-col="alert_title" onclick="sortBy('alert_title')">Name <span class="sort-icon">↕</span></th>
  42. <th class="sortable" data-col="alert_classification_id" onclick="sortBy('alert_classification_id')">Category <span class="sort-icon">↕</span></th>
  43. <th>Product</th>
  44. <th class="sortable" data-col="alert_creation_time" onclick="sortBy('alert_creation_time')">Created at <span class="sort-icon">↕</span></th>
  45. <th class="sortable" data-col="kpi" onclick="sortBy('kpi')">KPI Timeout <span class="sort-icon">↕</span></th>
  46. <th class="sortable" data-col="alert_source_event_time" onclick="sortBy('alert_source_event_time')">Notified at <span class="sort-icon">↕</span></th>
  47. <th>Closed at</th>
  48. <th>Region</th>
  49. </tr>
  50. </thead>
  51. <tbody id="alerts-body">
  52. <tr><td colspan="12" class="text-center text-muted py-4">Loading...</td></tr>
  53. </tbody>
  54. </table>
  55. </div>
  56. </div>
  57. </div>
  58. <!-- Pagination (outside card) -->
  59. <div class="d-flex justify-content-between align-items-center mt-2">
  60. <button class="btn btn-sm btn-outline-secondary" onclick="prevPage()">&#8249; Prev</button>
  61. <span id="page-info" class="text-muted small"></span>
  62. <button class="btn btn-sm btn-outline-secondary" onclick="nextPage()">Next &#8250;</button>
  63. </div>
  64. </div>
  65. {% endblock %}
  66. {% block javascripts %}
  67. <script src="/static/assets/js/iris/kpi_dashboard.js"></script>
  68. {% endblock %}