ajax_index.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /* $Id: ajax_index.js 3061 2007-05-29 20:49:35Z danez $ */
  2. // fields
  3. var ajax_fieldIds = new Array(
  4. "speedDown",
  5. "speedUp",
  6. "speedTotal",
  7. "cons",
  8. "freeSpace",
  9. "loadavg"
  10. );
  11. var ajax_idCount = ajax_fieldIds.length;
  12. var ajax_fieldIdsXfer = new Array(
  13. "xferGlobalTotal",
  14. "xferGlobalMonth",
  15. "xferGlobalWeek",
  16. "xferGlobalDay",
  17. "xferUserTotal",
  18. "xferUserMonth",
  19. "xferUserWeek",
  20. "xferUserDay"
  21. );
  22. var ajax_idCountXfer = ajax_fieldIdsXfer.length;
  23. //
  24. var silentEnabled = 0;
  25. var titleChangeEnabled = 0;
  26. var pageTitle = "torrentflux-b4rt";
  27. var goodLookingStatsEnabled = 0;
  28. var goodLookingStatsSettings = null;
  29. var bottomStatsEnabled = 0;
  30. var queueActive = 0;
  31. var xferEnabled = 0;
  32. var usersEnabled = 0;
  33. var usersHideOffline = 0;
  34. var userList = "";
  35. var transferListEnabled = 0;
  36. var sortTableEnabled = 0;
  37. var driveSpaceBarStyle = "tf";
  38. var bandwidthBarsEnabled = 0;
  39. var bandwidthBarsStyle = "tf";
  40. var imgSrcDriveSpaceBlank = "themes/default/images/blank.gif";
  41. var imgHeightDriveSpaceBlank = 12;
  42. var indexTimer = null;
  43. var updateTimeLeft = 0;
  44. /**
  45. * ajax_initialize
  46. *
  47. * @param timer
  48. * @param delim
  49. * @param sEnabled
  50. * @param tChangeEnabled
  51. * @param pTitle
  52. * @param glsEnabled
  53. * @param glsSettings
  54. * @param bsEnabled
  55. * @param qActive
  56. * @param xEnabled
  57. * @param uEnabled
  58. * @param uHideOffline
  59. * @param tEnabled
  60. * @param sortEnabled
  61. * @param dsBarStyle
  62. * @param bwBarsEnabled
  63. * @param bwBarsStyle
  64. */
  65. function ajax_initialize(timer, delim, sEnabled, tChangeEnabled, pTitle, glsEnabled, glsSettings, bsEnabled, qActive, xEnabled, uEnabled, uHideOffline, tEnabled, sortEnabled, dsBarStyle, bwBarsEnabled, bwBarsStyle) {
  66. ajax_updateTimer = timer;
  67. ajax_txtDelim = delim;
  68. silentEnabled = sEnabled;
  69. titleChangeEnabled = tChangeEnabled;
  70. pageTitle = pTitle;
  71. goodLookingStatsEnabled = glsEnabled;
  72. bottomStatsEnabled = bsEnabled;
  73. queueActive = qActive;
  74. xferEnabled = xEnabled;
  75. usersEnabled = uEnabled;
  76. usersHideOffline = uHideOffline;
  77. transferListEnabled = tEnabled;
  78. sortTableEnabled = sortEnabled;
  79. driveSpaceBarStyle = dsBarStyle;
  80. bandwidthBarsEnabled = bwBarsEnabled;
  81. bandwidthBarsStyle = bwBarsStyle;
  82. // url + params
  83. ajax_updateUrl = "index.php?iid=index";
  84. ajax_updateParams = "&ajax_update=1";
  85. if ((bottomStatsEnabled == 1) && (xferEnabled == 1))
  86. ajax_updateParams += '1';
  87. else
  88. ajax_updateParams += '0';
  89. ajax_updateParams += usersEnabled;
  90. ajax_updateParams += transferListEnabled;
  91. // gls
  92. if (goodLookingStatsEnabled == 1)
  93. goodLookingStatsSettings = glsSettings.split(":");
  94. // state
  95. ajax_updateState = 1;
  96. // http-request
  97. ajax_httpRequest = ajax_getHttpRequest();
  98. // start update-thread
  99. updateTimeLeft = ajax_updateTimer / 1000;
  100. ajax_pageUpdate();
  101. }
  102. /**
  103. * page ajax-update
  104. *
  105. */
  106. function ajax_pageUpdate() {
  107. var obj = document.getElementById("span_update");
  108. if (ajax_updateState == 1) {
  109. if (updateTimeLeft > 0) {
  110. if (silentEnabled == 0) {
  111. if (obj) obj.innerHTML = "Next AJAX-Update in " + String(updateTimeLeft) + " seconds";
  112. } else {
  113. if (obj) obj.innerHTML = "AJAX-Update enabled";
  114. }
  115. updateTimeLeft--;
  116. }
  117. else if (updateTimeLeft == 0) {
  118. updateTimeLeft = -1;
  119. if (silentEnabled == 0) {
  120. if (obj) obj.innerHTML = "Update in progress...";
  121. }
  122. if ((titleChangeEnabled == 1) && (silentEnabled == 0)) {
  123. document.title = "Update in progress... - "+ pageTitle;
  124. }
  125. setTimeout("ajax_update();", 100);
  126. }
  127. indexTimer = setTimeout("ajax_pageUpdate();", 1000);
  128. } else {
  129. if (obj) obj.innerHTML = "AJAX-Update disabled";
  130. }
  131. }
  132. /**
  133. * process XML-response
  134. *
  135. * @param content
  136. */
  137. function ajax_processXML(content) {
  138. alert(content);
  139. }
  140. /**
  141. * process text-response
  142. *
  143. * @param content
  144. */
  145. function ajax_processText(content) {
  146. var aryCount = 1;
  147. if ((bottomStatsEnabled == 1) && (xferEnabled == 1))
  148. aryCount++;
  149. if (usersEnabled == 1)
  150. aryCount++;
  151. if (transferListEnabled == 1)
  152. aryCount++;
  153. if (aryCount == 1) {
  154. // update
  155. ajax_updateContent(content, "", "", "");
  156. } else {
  157. var tempAry = content.split("|");
  158. // transfer-list
  159. var transferList = "";
  160. if (transferListEnabled == 1)
  161. transferList = tempAry.pop();
  162. // users
  163. var users = "";
  164. if (usersEnabled == 1)
  165. users = tempAry.pop();
  166. // xfer
  167. var statsXfer = "";
  168. if ((bottomStatsEnabled == 1) && (xferEnabled == 1))
  169. statsXfer = tempAry.pop();
  170. // update
  171. ajax_updateContent(tempAry.pop(), statsXfer, users, transferList);
  172. }
  173. // timer
  174. updateTimeLeft = ajax_updateTimer / 1000;
  175. }
  176. /**
  177. * update page contents from response
  178. *
  179. * @param statsServerStr
  180. * @param statsXferStr
  181. * @param usersStr
  182. * @param transferListStr
  183. */
  184. function ajax_updateContent(statsServerStr, statsXferStr, usersStr, transferListStr) {
  185. var statsServer = statsServerStr.split(ajax_txtDelim);
  186. // page-title
  187. if (titleChangeEnabled == 1) {
  188. var newTitle = "";
  189. for (i = 0; i < 5; i++) {
  190. newTitle += statsServer[i] + "|";
  191. }
  192. newTitle += statsServer[5]+ " - " + pageTitle;
  193. document.title = newTitle;
  194. }
  195. // good looking stats
  196. if (goodLookingStatsEnabled == 1) {
  197. for (i = 0; i < ajax_idCount; i++) {
  198. if (goodLookingStatsSettings[i] == 1)
  199. document.getElementById("g_" + ajax_fieldIds[i]).innerHTML = statsServer[i];
  200. }
  201. }
  202. // drivespace-bar
  203. var dSpace = statsServer[10];
  204. document.getElementById("barFreeSpace").innerHTML = statsServer[4];
  205. document.getElementById("barDriveSpacePercent").innerHTML = (100 - dSpace);
  206. document.getElementById("barDriveSpace1").style.width = dSpace + "%";
  207. document.getElementById("barDriveSpace2").style.width = (100 - dSpace) + "%";
  208. if (driveSpaceBarStyle == "xfer") {
  209. // set color
  210. var dsbCol = 'rgb(';
  211. dsbCol += parseInt(255 - 255 * ((100 - dSpace) / 100));
  212. dsbCol += ',' + parseInt(255 * ((100 - dSpace) / 100));
  213. dsbCol += ',0)';
  214. document.getElementById("barDriveSpace2").style.backgroundcolor = dsbCol;
  215. }
  216. // bandwidth-bars
  217. if (bandwidthBarsEnabled == 1) {
  218. // up
  219. var upPer = statsServer[9];
  220. document.getElementById("barSpeedUpPercent").innerHTML = upPer;
  221. document.getElementById("barSpeedUp").innerHTML = statsServer[1];
  222. document.getElementById("barSpeedUp1").style.width = upPer + "%";
  223. document.getElementById("barSpeedUp2").style.width = (100 - upPer) + "%";
  224. // down
  225. var downPer = statsServer[8];
  226. document.getElementById("barSpeedDownPercent").innerHTML = downPer;
  227. document.getElementById("barSpeedDown").innerHTML = statsServer[0];
  228. document.getElementById("barSpeedDown2").style.width = (100 - downPer) + "%";
  229. document.getElementById("barSpeedDown1").style.width = downPer + "%";
  230. if (bandwidthBarsStyle == "xfer") {
  231. // set color
  232. // up
  233. var bwbCol = 'rgb(';
  234. bwbCol += parseInt(255 - 255 * ((100 - upPer) / 150));
  235. bwbCol += ',' + parseInt(255 * ((100 - upPer) / 150));
  236. bwbCol += ',0)';
  237. document.getElementById("barSpeedUp1").style.backgroundcolor = bwbCol;
  238. // down
  239. bwbCol = 'rgb(';
  240. bwbCol += parseInt(255 - 255 * ((100 - downPer) / 150));
  241. bwbCol += ',' + parseInt(255 * ((100 - downPer) / 150));
  242. bwbCol += ',0)';
  243. document.getElementById("barSpeedDown1").style.backgroundcolor = bwbCol;
  244. }
  245. }
  246. // bottom stats
  247. if (bottomStatsEnabled == 1) {
  248. for (i = 0; i < ajax_idCount; i++) {
  249. document.getElementById("b_" + ajax_fieldIds[i]).innerHTML = statsServer[i];
  250. }
  251. // running + queued
  252. if (queueActive == 1) {
  253. document.getElementById("running").innerHTML = statsServer[ajax_idCount];
  254. document.getElementById("queued").innerHTML = statsServer[ajax_idCount + 1];
  255. }
  256. // xfer
  257. if (xferEnabled == 1) {
  258. var statsXfer = statsXferStr.split(ajax_txtDelim);
  259. for (i = 0; i < ajax_idCountXfer; i++) {
  260. document.getElementById(ajax_fieldIdsXfer[i]).innerHTML = statsXfer[i];
  261. }
  262. }
  263. }
  264. // users
  265. if (usersEnabled == 1) {
  266. if (userList != usersStr) {
  267. userList = usersStr;
  268. if (usersHideOffline == 0) {
  269. var allUsers = usersStr.split("+");
  270. // online
  271. var onlineUsers = allUsers[0].split(ajax_txtDelim);
  272. var onlineUsersCount = onlineUsers.length;
  273. var htmlString = "";
  274. for (i = 0; i < onlineUsersCount; i++) {
  275. htmlString += '<a href="index.php?iid=message&to_user='+onlineUsers[i]+'">'+onlineUsers[i]+'</a><br>';
  276. }
  277. document.getElementById("usersOnline").innerHTML = htmlString;
  278. // offline
  279. var offlineUsers = allUsers[1].split(ajax_txtDelim);
  280. var offlineUsersCount = offlineUsers.length;
  281. htmlString = "";
  282. for (i = 0; i < offlineUsersCount; i++) {
  283. htmlString += '<a href="index.php?iid=message&to_user='+offlineUsers[i]+'">'+offlineUsers[i]+'</a><br>';
  284. }
  285. document.getElementById("usersOffline").innerHTML = htmlString;
  286. } else {
  287. // online
  288. var onlineUsers = usersStr.split(ajax_txtDelim);
  289. var onlineUsersCount = onlineUsers.length;
  290. var htmlString = "";
  291. for (i = 0; i < onlineUsersCount; i++) {
  292. htmlString += '<a href="index.php?iid=message&to_user='+onlineUsers[i]+'">'+onlineUsers[i]+'</a><br>';
  293. }
  294. document.getElementById("usersOnline").innerHTML = htmlString;
  295. }
  296. }
  297. }
  298. // transfer-list
  299. if (transferListEnabled == 1) {
  300. // update content
  301. document.getElementById("transferList").innerHTML = transferListStr;
  302. // re-init sort-table
  303. if (sortTableEnabled == 1)
  304. sortables_init();
  305. }
  306. }
  307. /**
  308. * unload
  309. */
  310. function ajax_unload() {
  311. if(indexTimer) window.clearTimeout(indexTimer);
  312. }