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.

249 lines
7.6 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.getOSname = function() {
  90. get_os_data('/info/platform/osname/', "#get-osname");
  91. }
  92. dashboard.getHostname = function() {
  93. get_os_data('/info/platform/hostname/', "#get-hostname");
  94. }
  95. dashboard.getKernel = function() {
  96. get_os_data('/info/platform/kernel/', "#get-kernel");
  97. }
  98. dashboard.getCPUcount = function() {
  99. get_os_data('/info/getcpus/count/', "#get-cpucount");
  100. }
  101. dashboard.getCPUtype = function() {
  102. get_os_data('/info/getcpus/type/', "#get-cputype");
  103. }
  104. dashboard.getDisk = function() {
  105. $.getJSON('/info/getdisk/', function(data) {
  106. destroy_dataTable("get_disk");
  107. $("#filter-ps").val("").off("keyup");
  108. var psTable = $("#get_disk").dataTable({
  109. aaData: data,
  110. aoColumns: [
  111. { sTitle: "FILESYSTEM" },
  112. { sTitle: "SIZE" },
  113. { sTitle: "USED" },
  114. { sTitle: "AVAIL" },
  115. { sTitle: "USE %" },
  116. { sTitle: "MOUNTED" }
  117. ],
  118. bPaginate: false,
  119. bFilter: true,
  120. sDom: "lrtip",
  121. bAutoWidth: false,
  122. bInfo: false
  123. }).fadeIn();
  124. $("#filter-ps").on("keyup", function() {
  125. psTable.fnFilter(this.value);
  126. });
  127. });
  128. }
  129. dashboard.getUsers = function() {
  130. $.getJSON('/info/getusers/', function(data) {
  131. destroy_dataTable("get_users");
  132. $("#filter-ps").val("").off("keyup");
  133. var psTable = $("#get_users").dataTable({
  134. aaData: data,
  135. aoColumns: [
  136. { sTitle: "USER" },
  137. { sTitle: "TTY" },
  138. { sTitle: "LOOGED IN FROM",
  139. sDefaultContent: "unavailable" }
  140. ],
  141. bPaginate: false,
  142. bFilter: true,
  143. sDom: "lrtip",
  144. bAutoWidth: false,
  145. bInfo: false
  146. }).fadeIn();
  147. $("#filter-ps").on("keyup", function() {
  148. psTable.fnFilter(this.value);
  149. });
  150. });
  151. }
  152. dashboard.getNetstat = function() {
  153. $.getJSON('/info/getnetstat/', function(data) {
  154. destroy_dataTable("get_netstat");
  155. $("#filter-ps").val("").off("keyup");
  156. var psTable = $("#get_netstat").dataTable({
  157. aaData: data,
  158. aoColumns: [
  159. { sTitle: "COUNT" },
  160. { sTitle: "LOCAL IP" },
  161. { sTitle: "LOCAL PORT" },
  162. { sTitle: "FOREIGN" }
  163. ],
  164. bPaginate: true,
  165. sPaginationType: "two_button",
  166. bFilter: true,
  167. sDom: "lrtip",
  168. bAutoWidth: false,
  169. bInfo: false
  170. }).fadeIn();
  171. $("#filter-ps").on("keyup", function() {
  172. psTable.fnFilter(this.value);
  173. });
  174. });
  175. }
  176. dashboard.getProc = function() {
  177. $.getJSON('/info/proc/', function(data) {
  178. destroy_dataTable("get_proc");
  179. $("#filter-ps").val("").off("keyup");
  180. var psTable = $("#get_proc").dataTable({
  181. aaData: data,
  182. aoColumns: [
  183. { sTitle: "USER" },
  184. { sTitle: "PID" },
  185. { sTitle: "%CPU" },
  186. { sTitle: "%MEM" },
  187. { sTitle: "VSZ" },
  188. { sTitle: "RSS" },
  189. { sTitle: "TTY" },
  190. { sTitle: "STAT" },
  191. { sTitle: "START" },
  192. { sTitle: "TIME" },
  193. { sTitle: "COMMAND" }
  194. ],
  195. bPaginate: true,
  196. sPaginationType: "full_numbers",
  197. bFilter: true,
  198. sDom: "lrtip",
  199. bAutoWidth: false,
  200. bInfo: false
  201. }).fadeIn();
  202. $("#filter-ps").on("keyup", function() {
  203. psTable.fnFilter(this.value);
  204. });
  205. });
  206. }
  207. dashboard.getIps = function() {
  208. $.getJSON('/info/getips/', function(data) {
  209. destroy_dataTable("get_ips");
  210. $("#filter-ps").val("").off("keyup");
  211. var psTable = $("#get_ips").dataTable({
  212. aaData: data,
  213. aoColumns: [
  214. { sTitle: "INTERFACE" },
  215. { sTitle: "MAC ADDRESS" },
  216. { sTitle: "IPv4 ADDRESS" },
  217. { sTitle: "IPv6 ADDRESS",
  218. sDefaultContent: "unavailable" }
  219. ],
  220. bPaginate: false,
  221. bFilter: true,
  222. sDom: "lrtip",
  223. bAutoWidth: false,
  224. bInfo: false
  225. }).fadeIn();
  226. $("#filter-ps").on("keyup", function() {
  227. psTable.fnFilter(this.value);
  228. });
  229. });
  230. }