You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
7.0 KiB

  1. //DataTables
  2. //Sort file size data.
  3. jQuery.extend(jQuery.fn.dataTableExt.oSort, {
  4. "file-size-units": {
  5. K : 1024,
  6. M : Math.pow(1024, 2),
  7. G : Math.pow(1024, 3),
  8. T : Math.pow(1024, 4),
  9. P : Math.pow(1024, 5),
  10. E : Math.pow(1024, 6)
  11. },
  12. "file-size-pre": function(a) {
  13. var x = a.substring(0, a.length - 1);
  14. var x_unit = a.substring(a.length - 1, a.length);
  15. if(jQuery.fn.dataTableExt.oSort['file-size-units'][x_unit]) {
  16. return parseInt(x * jQuery.fn.dataTableExt.oSort['file-size-units'][x_unit], 10);
  17. }
  18. else {
  19. return parseInt(x + x_unit, 10);
  20. }
  21. },
  22. "file-size-asc": function(a, b) {
  23. return ((a < b) ? -1 : ((a > b) ? 1 : 0));
  24. },
  25. "file-size-desc": function(a, b) {
  26. return ((a < b) ? 1 : ((a > b) ? -1 : 0));
  27. }
  28. });
  29. //DataTables
  30. //Sort numeric data which has a percent sign with it.
  31. jQuery.extend(jQuery.fn.dataTableExt.oSort, {
  32. "percent-pre": function(a) {
  33. var x = (a === "-") ? 0 : a.replace(/%/, "");
  34. return parseFloat(x);
  35. },
  36. "percent-asc": function(a, b) {
  37. return ((a < b) ? -1 : ((a > b) ? 1 : 0));
  38. },
  39. "percent-desc": function(a, b) {
  40. return ((a < b) ? 1 : ((a > b) ? -1 : 0));
  41. }
  42. });
  43. //DataTables
  44. //Sort IP addresses
  45. jQuery.extend(jQuery.fn.dataTableExt.oSort, {
  46. "ip-address-pre": function(a) {
  47. // split the address into octets
  48. //
  49. var x = a.split('.');
  50. // pad each of the octets to three digits in length
  51. //
  52. function zeroPad(num, places) {
  53. var zero = places - num.toString().length + 1;
  54. return Array(+(zero > 0 && zero)).join("0") + num;
  55. }
  56. // build the resulting IP
  57. var r = '';
  58. for(var i=0; i<x.length; i++)
  59. r = r + zeroPad(x[i],3);
  60. // return the formatted IP address
  61. //
  62. return r;
  63. },
  64. "ip-address-asc": function(a, b) {
  65. return ((a < b) ? -1 : ((a > b) ? 1 : 0));
  66. },
  67. "ip-address-desc": function(a, b) {
  68. return ((a < b) ? 1 : ((a > b) ? -1 : 0));
  69. }
  70. });
  71. // If dataTable with provided ID exists, destroy it.
  72. function destroy_dataTable(table_id) {
  73. var table = $("#" + table_id);
  74. var ex = document.getElementById(table_id);
  75. if ($.fn.DataTable.fnIsDataTable(ex)) {
  76. table.hide().dataTable().fnClearTable();
  77. table.dataTable().fnDestroy();
  78. }
  79. }
  80. function get_os_data(url, element) {
  81. $.get(url, function(data) {
  82. $(element).text(data);
  83. }, "json");
  84. }
  85. var dashboard = {};
  86. dashboard.getUptime = function() {
  87. get_os_data('/info/uptime/', "#get-uptime");
  88. }
  89. dashboard.getDisk = function() {
  90. $.getJSON('/info/getdisk/', function(data) {
  91. destroy_dataTable("get_disk");
  92. $("#filter-ps").val("").off("keyup");
  93. var psTable = $("#get_disk").dataTable({
  94. aaData: data,
  95. aoColumns: [
  96. { sTitle: "FILESYSTEM" },
  97. { sTitle: "SIZE" },
  98. { sTitle: "USED" },
  99. { sTitle: "AVAIL" },
  100. { sTitle: "USE %" },
  101. { sTitle: "MOUNTED" }
  102. ],
  103. bPaginate: false,
  104. bFilter: true,
  105. sDom: "lrtip",
  106. bAutoWidth: false,
  107. bInfo: false
  108. }).fadeIn();
  109. $("#filter-ps").on("keyup", function() {
  110. psTable.fnFilter(this.value);
  111. });
  112. });
  113. }
  114. dashboard.getUsers = function() {
  115. $.getJSON('/info/getusers/', function(data) {
  116. destroy_dataTable("get_users");
  117. $("#filter-ps").val("").off("keyup");
  118. var psTable = $("#get_users").dataTable({
  119. aaData: data,
  120. aoColumns: [
  121. { sTitle: "USER" },
  122. { sTitle: "TTY" },
  123. { sTitle: "LOOGED IN FROM" }
  124. ],
  125. bPaginate: false,
  126. bFilter: true,
  127. sDom: "lrtip",
  128. bAutoWidth: false,
  129. bInfo: false
  130. }).fadeIn();
  131. $("#filter-ps").on("keyup", function() {
  132. psTable.fnFilter(this.value);
  133. });
  134. });
  135. }
  136. dashboard.getNetstat = function() {
  137. $.getJSON('/info/getnetstat/', function(data) {
  138. destroy_dataTable("get_netstat");
  139. $("#filter-ps").val("").off("keyup");
  140. var psTable = $("#get_netstat").dataTable({
  141. aaData: data,
  142. aoColumns: [
  143. { sTitle: "COUNT" },
  144. { sTitle: "LOCAL IP" },
  145. { sTitle: "LOCAL PORT" },
  146. { sTitle: "FOREIGN" }
  147. ],
  148. bPaginate: true,
  149. sPaginationType: "two_button",
  150. bFilter: true,
  151. sDom: "lrtip",
  152. bAutoWidth: false,
  153. bInfo: false
  154. }).fadeIn();
  155. $("#filter-ps").on("keyup", function() {
  156. psTable.fnFilter(this.value);
  157. });
  158. });
  159. }
  160. dashboard.getProc = function() {
  161. $.getJSON('/info/proc/', function(data) {
  162. destroy_dataTable("get_proc");
  163. $("#filter-ps").val("").off("keyup");
  164. var psTable = $("#get_proc").dataTable({
  165. aaData: data,
  166. aoColumns: [
  167. { sTitle: "USER" },
  168. { sTitle: "PID" },
  169. { sTitle: "%CPU" },
  170. { sTitle: "%MEM" },
  171. { sTitle: "VSZ" },
  172. { sTitle: "RSS" },
  173. { sTitle: "TTY" },
  174. { sTitle: "STAT" },
  175. { sTitle: "START" },
  176. { sTitle: "TIME" },
  177. { sTitle: "COMMAND" }
  178. ],
  179. bPaginate: true,
  180. sPaginationType: "full_numbers",
  181. bFilter: true,
  182. sDom: "lrtip",
  183. bAutoWidth: false,
  184. bInfo: false
  185. }).fadeIn();
  186. $("#filter-ps").on("keyup", function() {
  187. psTable.fnFilter(this.value);
  188. });
  189. });
  190. }
  191. dashboard.getIps = function() {
  192. $.getJSON('/info/getips/', function(data) {
  193. destroy_dataTable("get_ips");
  194. $("#filter-ps").val("").off("keyup");
  195. var psTable = $("#get_ips").dataTable({
  196. aaData: data,
  197. aoColumns: [
  198. { sTitle: "INTERFACE" },
  199. { sTitle: "MAC ADDRESS" },
  200. { sTitle: "IPv4 ADDRESS" },
  201. { sTitle: "IPv6 ADDRESS" }
  202. ],
  203. bPaginate: false,
  204. bFilter: true,
  205. sDom: "lrtip",
  206. bAutoWidth: false,
  207. bInfo: false
  208. }).fadeIn();
  209. $("#filter-ps").on("keyup", function() {
  210. psTable.fnFilter(this.value);
  211. });
  212. });
  213. }