index.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. function mgBytesToSize(bytes) {
  2. var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
  3. if (bytes <= 1) {
  4. if (bytes !== 0) {
  5. var bytes = Number(bytes).toFixed(1);
  6. }
  7. return bytes + ' Byte';
  8. }
  9. var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
  10. var total = bytes / Math.pow(1024, i) ;
  11. if(sizes[i] == 'GB' || sizes[i] == 'TB' ){
  12. return total.toFixed(2)+ ' ' + sizes[i];
  13. }
  14. return Math.round( total, 2) + ' ' + sizes[i];
  15. }
  16. function mgTooltipCpu(tooltipItem, data) {
  17. var used = Number(tooltipItem.yLabel).toFixed(2);
  18. return used + "%";
  19. }
  20. function mgTooltipServerLoad(tooltipItem, data) {
  21. var used = Number(tooltipItem.yLabel).toFixed(2);
  22. return used;
  23. }
  24. function mgTooltipCallbackForMemory(tooltipItem, data) {
  25. return mgBytesToSize(tooltipItem.yLabel) + "/s";
  26. }
  27. function mgTooltipCallbackForNet(tooltipItem, data) {
  28. return mgBytesToSize(tooltipItem.yLabel) + "/s";
  29. }
  30. function mgTooltipCallbackForDisk(tooltipItem, data) {
  31. return mgBytesToSize(tooltipItem.yLabel) + "/s";
  32. }
  33. /*Disk support*/
  34. function pmToggleDiskButton(data) {
  35. let button = $(".pmCreateDiskButton");
  36. if(data.htmlData.createButtonStatus)
  37. {
  38. button.removeClass('hidden');
  39. }
  40. else
  41. {
  42. button.addClass('hidden');
  43. }
  44. }
  45. /*Snapshot support*/
  46. function pmToggleSnapshotButton(data) {
  47. let button = $(".pmCreateSnapshotButton");
  48. if(data.htmlData.createButtonStatus)
  49. {
  50. button.removeClass('hidden');
  51. }
  52. else
  53. {
  54. button.addClass('hidden');
  55. }
  56. }
  57. /*Backup*/
  58. function pmToggleBackupButton(data) {
  59. let button = $(".pmCreateBackupButton");
  60. if(data.htmlData.createButtonStatus)
  61. {
  62. button.removeClass('hidden');
  63. }
  64. else
  65. {
  66. button.addClass('hidden');
  67. }
  68. }
  69. /*Firewall*/
  70. function pmToggleFirewallButton(data) {
  71. let button = $(".pmCreateFirewallButton");
  72. if(data.htmlData.createButtonStatus)
  73. {
  74. button.removeClass('hidden');
  75. }
  76. else
  77. {
  78. button.addClass('hidden');
  79. }
  80. }
  81. function mgLocationReload(data) {
  82. window.location.reload();
  83. }
  84. /* VM delete done*/
  85. function pcVmDeltedAjaxDone(data) {
  86. if(data.htmlData.redirectUrl)
  87. {
  88. window.location.href = data.htmlData.redirectUrl;
  89. }
  90. }
  91. $(document).ready(function () {
  92. //virtual network
  93. var selectizedInstance = $('.pm-virtual-network-content-default .selectized').selectize();
  94. selectizedInstance.each(function(){
  95. this.selectize.destroy();
  96. });
  97. //create
  98. $("#pm-add-new-virtual-network-button").on("click",function (e) {
  99. e.preventDefault();
  100. var content = $('.pm-virtual-network-content-default').clone();
  101. content.removeClass("hidden");
  102. content.removeClass("pm-virtual-network-content-default");
  103. var index = $("#pm-add-new-virtual-network-button").closest('.lu-widget').find('.lu-widget').size();
  104. content.find('select[name="virtualNetwork[id]"]').prop("name","virtualNetwork"+index+"[id]");
  105. content.find('select[name="virtualNetwork[ip]"]').prop("name","virtualNetwork"+index+"[ip]");
  106. $(this).closest('.lu-widget').find('.lu-widget').last().after(content);
  107. $(this).closest('.lu-widget').find('.pm-vn-select').trigger("change");
  108. $(this).closest('.lu-widget').find('.lu-alert').hide();
  109. $(".pm-virtual-network-content-default").parent().find(".lu-alert").hide();
  110. });
  111. //delete
  112. $(".mg-wrapper").delegate(".pm-delete-virtual-network-button","click",function (e) {
  113. e.preventDefault();
  114. $(this).closest('.lu-widget').remove();
  115. if($(".pm-virtual-network-content-default").parent().find(".lu-widget").length <= 1)
  116. {
  117. $(".pm-virtual-network-content-default").parent().find(".lu-alert").show();
  118. }
  119. });
  120. //change
  121. $(".mg-wrapper").delegate(".pm-vn-select","change",function (e) {
  122. var show = '.vn-ip-'+$(this).val();
  123. $(this).closest('.lu-widget__content').find('.pm-vn-ip-select option').hide();
  124. $(this).closest('.lu-widget__content').find(show).show();
  125. var firstOption = $(this).closest('.lu-widget__content').find('.pm-vn-ip-select '+show+':first').val();
  126. $(this).closest('.lu-widget__content').find('.pm-vn-ip-select').val(firstOption);
  127. });
  128. //disk
  129. var selectizedInstance = $('.pm-disk-content-default .selectized').selectize();
  130. selectizedInstance.each(function(){
  131. this.selectize.destroy();
  132. });
  133. //create
  134. $("#pm-add-disk-button").on("click",function (e) {
  135. e.preventDefault();
  136. var content = $('.pm-disk-content-default').clone();
  137. content.removeClass("hidden");
  138. content.removeClass("pm-disk-content-default");
  139. var index = $("#pm-add-disk-button").closest('.lu-widget').find('.lu-widget').size();
  140. content.find('input[name="additionalDiskSize"]').prop("name","additionalDiskSize"+index);
  141. content.find('select[name="additionalDiskBus"]').prop("name","additionalDiskBus"+index);
  142. content.find('select[name="additionalDiskFormat"]').prop("name","additionalDiskFormat"+index);
  143. content.find('select[name="additionalDiskBackup"]').prop("name","additionalDiskBackup"+index);
  144. content.find('input[name="additionalDiskMp"]').prop("name","additionalDiskMp"+index);
  145. $(this).closest('.lu-widget').find('.lu-widget').last().after(content);
  146. $(".pm-disk-content-default ").parent().find(".lu-alert").hide();
  147. });
  148. //delete
  149. $(".mg-wrapper").delegate(".pm-delete-disk-button","click",function (e) {
  150. e.preventDefault();
  151. $(this).closest('.lu-widget').remove();
  152. if($(".pm-disk-content-default ").parent().find(".lu-widget").length <= 1)
  153. {
  154. $(".pm-disk-content-default ").parent().find(".lu-alert").show();
  155. }
  156. });
  157. //cpuPriority change
  158. $(".mg-wrapper").delegate("#cpuPriority","input",function (e) {
  159. e.preventDefault();
  160. var label = $(this).data("label"+$(this).val());
  161. $("#outputcpuPriority").html(label);
  162. });
  163. });
  164. $(".mg-wrapper").on("change", "select[name='macro']", function () {
  165. var disable = $(this).val()!='0';
  166. if(disable){
  167. $("input[name='sport']").closest(".lu-form-group").addClass("disabled");
  168. $("input[name='dport']").closest(".lu-form-group").addClass("disabled");
  169. $("select[name='proto']").closest(".lu-form-group").addClass("disabled");
  170. }else{
  171. $("input[name='sport']").closest(".lu-form-group").removeClass("disabled");
  172. $("input[name='dport']").closest(".lu-form-group").removeClass("disabled");
  173. $("select[name='proto']").closest(".lu-form-group").removeClass("disabled");
  174. }
  175. });
  176. mgEventHandler.on('ModalLoaded', 'updateButton', function(id, params){
  177. if(id != 'updateButton'){
  178. return;
  179. }
  180. $(".mg-wrapper select[name='macro']").trigger('change');
  181. }, 1000);