asset_audit_log.html 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. {% extends "base.html" %}
  2. {% set active_page = "assets" %}
  3. {% block title %} {{asset.name}} {% endblock %}
  4. {% block divs %}
  5. {% block breadcrumbs %} {{ super() }} {% endblock %}
  6. <div class="container-fluid">
  7. <div class="row">
  8. <div class="asset auditlog card">
  9. <h3>History of actions for asset <a href="/assets/{{ asset.id }}">{{ asset.name }}</a></h3>
  10. <table id="assetAuditLog" class="table table-striped paginate nav-on-click" title="View data">
  11. </table>
  12. </div>
  13. </div>
  14. </div>
  15. <script>
  16. function AuditLog(event_datetime, event, acting_user_name) {
  17. this.event_datetime = event_datetime;
  18. this.event = event;
  19. this.acting_user_name = acting_user_name;
  20. }
  21. $(document).ready(function() {
  22. $('#assetAuditLog').DataTable({
  23. "order": [[ 0, "desc" ]], // Default sort by the hidden UTC Timestamp column
  24. serverSide: true,
  25. columns: [
  26. { data: "event_datetime", title: "Event Datetime", orderable: true },
  27. { data: "event", title: "Event Name", orderable: false, width: "80%" },
  28. { data: "acting_user_name", title: "Acting User", orderable: false },
  29. ],
  30. ajax: function (data, callback, settings) {
  31. const basePath = window.location.origin;
  32. let filter = data["search"]["value"];
  33. let orderColumnIndex = data["order"][0]["column"];
  34. let orderDirection = data["order"][0]["dir"];
  35. let orderColumnName = data["columns"][orderColumnIndex]["data"];
  36. let url = `${basePath}/api/v3_0/assets/{{ asset.id }}/auditlog?page=${Math.floor(data["start"] / data["length"]) + 1}&per_page=${data["length"]}`;
  37. if (filter.length > 0) {
  38. url = `${url}&filter=${filter}`;
  39. }
  40. if (orderColumnName){
  41. url = `${url}&sort_by=${orderColumnName}&sort_dir=${orderDirection}`;
  42. }
  43. $.ajax({
  44. type: "get",
  45. url: url,
  46. success: function(response, text) {
  47. let clean_response = [];
  48. response["data"].forEach( (element) => clean_response.push(
  49. new AuditLog(element["event_datetime"], element["event"], `${element["active_user_name"]} (Id: ${element["active_user_id"]})`)
  50. ));
  51. callback({"data": clean_response, "recordsTotal": response["num-records"], "recordsFiltered": response["filtered-records"]});
  52. },
  53. error: function (request, status, error) {
  54. console.log("Error: ", error)
  55. }
  56. });
  57. }
  58. });
  59. });
  60. </script>
  61. {% endblock %}