viewStatistics.html 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <!DOCTYPE html>
  2. <html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{monitoring/layout}">
  3. <head>
  4. <title th:text="#{cas.statistics.pagetitle}"></title>
  5. <script type="text/javascript" th:src="@{#{webjars.d3js.d3min.js}}"></script>
  6. <script type="text/javascript" th:inline="javascript">
  7. var messages = {
  8. memoryGaugeTitle: /*[[#{cas.statistics.section.serverstatistics.freememorygauge.label}]]*/
  9. };
  10. var urls = {
  11. availability: /*[[@{/status/stats/getAvailability}]]*/,
  12. memory: /*[[@{/status/stats/getMemStats}]]*/,
  13. tickets: /*[[@{/status/stats/getTicketStats}]]*/
  14. };
  15. function jqueryReady() {
  16. head.load(
  17. /*[[@{/js/statisticsview.js}]]*/
  18. ,
  19. function () {
  20. var server_uptime = upTime([[${upTime}]], 'uptime');
  21. casStatistics(urls, messages);
  22. }
  23. );
  24. };
  25. </script>
  26. </head>
  27. <body>
  28. <div layout:fragment="content">
  29. <div id="loading" th:text="#{cas.statistics.loading}"></div>
  30. <div class="statisticsView">
  31. <h2 th:text="#{cas.statistics.pagetitle}">cas.statistics.pagetitle</h2>
  32. <div class="section adminPanels">
  33. <h3 th:text="#{cas.statistics.section.ticket.title}">cas.statistics.section.ticket.title</h3>
  34. <div class="card-deck">
  35. <div class="card" id="card-unexpired-tgts">
  36. <div class="card-body">
  37. <h4 class="card-title semi-huge"
  38. th:text="#{cas.statistics.section.ticket.panel.unexpiredtgts.title}"></h4>
  39. <p id="unexpiredTgts" class="card-text huge">--</p>
  40. </div>
  41. </div>
  42. <div class="card" id="card-unexpired-sts">
  43. <div class="card-body">
  44. <h4 class="card-title semi-huge" th:text="#{cas.statistics.section.ticket.panel.unexpiredsts.title}"/>
  45. <p id="unexpiredSts" class="card-text huge">--</p>
  46. </div>
  47. </div>
  48. <div class="card" id="card-expired-tgts">
  49. <div class="card-body">
  50. <h4 class="card-title semi-huge" th:text="#{cas.statistics.section.ticket.panel.expiredtgts.title}"/>
  51. <p id="expiredTgts" class="card-text huge">--</p>
  52. </div>
  53. </div>
  54. <div class="card" id="card-expired-sts">
  55. <div class="card-body">
  56. <h4 class="card-title semi-huge" th:text="#{cas.statistics.section.ticket.panel.expiredsts.title}"/>
  57. <p id="expiredSts" class="card-text huge">--</p>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <section class="runtimePanels">
  63. <h3 th:text="#{cas.statistics.section.serverstatistics.title}"></h3>
  64. <div class="row">
  65. <div class="col-md-4">
  66. <div class="text-center">
  67. <div class="section" id="memoryUsageWrapper">
  68. <div id="memoryGauge"></div>
  69. </div>
  70. <div id="maxMemoryWrapper">
  71. <div id="maxMemoryGauge"></div>
  72. </div>
  73. </div>
  74. </div>
  75. <div class="col-md-8">
  76. <div id="card-uptime" class="card">
  77. <div class="card-header">
  78. <div class="row">
  79. <div class="col-auto mr-auto">
  80. <i class="far fa-clock fa-4x"></i>
  81. </div>
  82. <div class="col-auto text-right">
  83. <div class="huge" th:text="#{cas.statistics.section.serverstatistics.panel.uptime.title}"></div>
  84. <div id="uptime"></div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. <div id="card-server-info" class="card">
  90. <div class="card-header d-flex">
  91. <div class="fas fa-server fa-4x"></div>
  92. <div class="ml-auto huge" th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.title}"></div>
  93. </div>
  94. <div class="card-body">
  95. <table class="table table-striped">
  96. <thead>
  97. <tr>
  98. <th class="w-25"
  99. th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.label}"/>
  100. <th class="w-75"
  101. th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.value.label}"/>
  102. </tr>
  103. </thead>
  104. <tbody>
  105. <tr>
  106. <td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.server.label}"/>
  107. <td th:text="${#httpServletRequest.getServerName() + '-' + #httpServletRequest.getLocalAddr()}"/>
  108. </tr>
  109. <tr th:if="${casTicketSuffix}">
  110. <td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.casticketsuffix.label}"/>
  111. <td th:text="${casTicketSuffix}"/>
  112. </tr>
  113. <tr>
  114. <td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.starttime.label}"/>
  115. <td th:text="${startTime}"/>
  116. </tr>
  117. <tr>
  118. <td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.memory.label}"/>
  119. <td><span id="freeMemory" th:text="${freeMemory}"/> MB
  120. <span th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.free}"/>
  121. <br/>
  122. <span id="totalMemory" th:text="${totalMemory}"/> MB
  123. <span th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.total}"/>
  124. </td>
  125. </tr>
  126. <tr>
  127. <td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.maxmemory.label}"/>
  128. <td>
  129. <span id="maxMemory" th:text="${maxMemory}"/> MB
  130. </td>
  131. </tr>
  132. <tr>
  133. <td th:text="#{cas.statistics.section.serverstatistics.panel.serverinfo.table.property.availprocessors.label}"/>
  134. <td id="availableProcessors" th:text="${availableProcessors}"/>
  135. </tr>
  136. </tbody>
  137. </table>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. </section>
  143. <div th:replace="monitoring/fragments/footerButtons"/>
  144. </div>
  145. </div>
  146. </body>
  147. </html>