ariaNgMonitorService.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').factory('ariaNgMonitorService', ['$filter', 'ariaNgConstants', 'ariaNgCommonService', 'ariaNgLocalizationService', function ($filter, ariaNgConstants, ariaNgCommonService, ariaNgLocalizationService) {
  4. var currentGlobalStat = {};
  5. var storagesInMemory = {};
  6. var globalStorageKey = 'global';
  7. var getStorageCapacity = function (key) {
  8. if (key === globalStorageKey) {
  9. return ariaNgConstants.globalStatStorageCapacity;
  10. } else {
  11. return ariaNgConstants.taskStatStorageCapacity;
  12. }
  13. };
  14. var initStorage = function (key) {
  15. var data = {
  16. legend: {
  17. show: false
  18. },
  19. grid: {
  20. x: 50,
  21. y: 10,
  22. x2: 10,
  23. y2: 10
  24. },
  25. tooltip: {
  26. show: true,
  27. formatter: function (params) {
  28. if (params[0].name === '') {
  29. return '<div>' + ariaNgLocalizationService.getLocalizedText('No Data') + '</div>';
  30. }
  31. var time = ariaNgCommonService.getLongTimeFromUnixTime(params[0].name);
  32. var uploadSpeed = $filter('readableVolume')(params[0].value) + '/s';
  33. var downloadSpeed = $filter('readableVolume')(params[1].value) + '/s';
  34. return '<div><i class="fa fa-clock-o"></i> ' + time + '</div>'
  35. + '<div><i class="icon-download fa fa-arrow-down"></i> ' + downloadSpeed +'</div>'
  36. + '<div><i class="icon-upload fa fa-arrow-up"></i> ' + uploadSpeed + '</div>';
  37. }
  38. },
  39. xAxis: {
  40. data: [],
  41. type: 'category',
  42. boundaryGap: false,
  43. axisLabel: {
  44. show: false
  45. }
  46. },
  47. yAxis: {
  48. type: 'value',
  49. axisLabel: {
  50. formatter: function (value) {
  51. return $filter('readableVolume')(value, 'auto');
  52. }
  53. }
  54. },
  55. series: [{
  56. type: 'line',
  57. areaStyle: {
  58. normal: {
  59. opacity: 0.1
  60. }
  61. },
  62. smooth: true,
  63. symbolSize: 6,
  64. showAllSymbol: false,
  65. data: []
  66. }, {
  67. type: 'line',
  68. areaStyle: {
  69. normal: {
  70. opacity: 0.1
  71. }
  72. },
  73. smooth: true,
  74. symbolSize: 6,
  75. showAllSymbol: false,
  76. data: []
  77. }]
  78. };
  79. var timeData = data.xAxis.data;
  80. var uploadData = data.series[0].data;
  81. var downloadData = data.series[1].data;
  82. for (var i = 0; i < getStorageCapacity(key); i++) {
  83. timeData.push('');
  84. uploadData.push('');
  85. downloadData.push('');
  86. }
  87. storagesInMemory[key] = data;
  88. return data;
  89. };
  90. var isStorageExist = function (key) {
  91. return angular.isDefined(storagesInMemory[key]);
  92. };
  93. var pushToStorage = function (key, stat) {
  94. var storage = storagesInMemory[key];
  95. var timeData = storage.xAxis.data;
  96. var uploadData = storage.series[0].data;
  97. var downloadData = storage.series[1].data;
  98. if (timeData.length >= getStorageCapacity(key)) {
  99. timeData.shift();
  100. uploadData.shift();
  101. downloadData.shift();
  102. }
  103. timeData.push(stat.time);
  104. uploadData.push(stat.uploadSpeed);
  105. downloadData.push(stat.downloadSpeed);
  106. };
  107. var getStorage = function (key) {
  108. return storagesInMemory[key];
  109. };
  110. var removeStorage = function (key) {
  111. delete storagesInMemory[key];
  112. };
  113. return {
  114. recordStat: function (key, stat) {
  115. if (!isStorageExist(key)) {
  116. initStorage(key);
  117. }
  118. stat.time = ariaNgCommonService.getCurrentUnixTime();
  119. pushToStorage(key, stat);
  120. },
  121. getStatsData: function (key) {
  122. if (!isStorageExist(key)) {
  123. initStorage(key);
  124. }
  125. return getStorage(key);
  126. },
  127. getEmptyStatsData: function (key) {
  128. if (isStorageExist(key)) {
  129. removeStorage(key);
  130. }
  131. return this.getStatsData(key);
  132. },
  133. recordGlobalStat: function (stat) {
  134. this.recordStat(globalStorageKey, stat);
  135. currentGlobalStat = stat;
  136. },
  137. getGlobalStatsData: function () {
  138. return this.getStatsData(globalStorageKey);
  139. },
  140. getCurrentGlobalStat: function () {
  141. return currentGlobalStat;
  142. }
  143. };
  144. }]);
  145. }());