global.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. $(document).ready(function(){
  2. wireClicks();
  3. animateProgressBars();
  4. toggleEvents();
  5. });
  6. function wireClicks(){
  7. $("span.versionInfo").click(function(e){
  8. handleVersionClick();
  9. });
  10. $(".getAutoUpdateLink").click(function(e){
  11. showSteamUpdateLink($(this));
  12. });
  13. $(".serverIdToggle").click(function(e){
  14. showHideServerIDShow($(this));
  15. });
  16. }
  17. function showHideServerIDShow(linkElem){
  18. if($(".serverId:visible").length){
  19. $(".serverId").removeClass('hide').addClass('hide');
  20. $(linkElem).text($(linkElem).attr('showtext'));
  21. $("tr.expand-child").each(function(e){
  22. $("td:first", $(this)).attr('colspan', Number($("td:first", $(this)).attr('colspan')) - 1);
  23. });
  24. }else{
  25. $(".serverId").removeClass('hide');
  26. $(linkElem).text($(linkElem).attr('hidetext'));
  27. $("tr.expand-child").each(function(e){
  28. $("td:first", $(this)).attr('colspan', Number($("td:first", $(this)).attr('colspan')) + 1);
  29. });
  30. }
  31. }
  32. function animateProgressBars(){
  33. var percent = 0;
  34. $(".progress-bar").each(function() {
  35. percent = $(this).attr("data");
  36. if(percent){
  37. $(this).animate({
  38. width: percent + "%"
  39. });
  40. }
  41. });
  42. }
  43. function showSteamUpdateLink(elem){
  44. $("div.mangificWrapper .magnificTitle").text($(elem).attr('autoupdatetext'));
  45. $("div.mangificWrapper .magnificContentsDiv").html('<p>' + $(elem).attr('autoupdatehtml') + '</p><p><input class="updateLink" style="width: 75%;" type="text" value="' + $(elem).attr('autoupdatelink') + '"><button class="copyButton">' + $(elem).attr('copyme') + '</button>&nbsp; <span class="copyStatus"></span></p>');
  46. showPopup(function(){
  47. $("input.updateLink").click(function(e){
  48. $(this).select();
  49. });
  50. $(".copyButton").click(function(e){
  51. copyInput($("input.updateLink"), $("span.copyStatus"), elem);
  52. });
  53. copyInput($("input.updateLink"), $("span.copyStatus"), elem);
  54. });
  55. }
  56. function copyInput(input, resultArea, elemWithAttr){
  57. $(input).select();
  58. var successful = document.execCommand('copy');
  59. var msg = successful ? 'successful' : 'unsuccessful';
  60. logToConsole('Copying text command was ' + msg);
  61. if(successful){
  62. $(resultArea).text($(elemWithAttr).attr('copysuccess')).fadeIn('fast').delay(500).fadeOut('slow').delay(500).fadeIn('slow').delay(500).fadeOut('slow').delay(500).fadeIn('fast').delay(2000).fadeIn('fast');
  63. }else{
  64. $(resultArea).text($(elemWithAttr).attr('copyfail')).fadeIn('fast').delay(500).fadeOut('slow').delay(500).fadeIn('slow').delay(500).fadeOut('slow').delay(500).fadeIn('fast').delay(2000).fadeIn('fast');
  65. }
  66. }
  67. function showPopup(onOpen, onClose){
  68. $.magnificPopup.open({
  69. items: {
  70. src: $("div.mangificWrapper div.white-popup"),
  71. type: 'inline'
  72. },
  73. callbacks: {
  74. close: function() {
  75. cleanupPopup();
  76. if(!isUndefinedOrEmptyValue(onClose) && jQuery.isFunction(onClose)){
  77. onClose();
  78. }
  79. },
  80. open: function() {
  81. if(!isUndefinedOrEmptyValue(onOpen) && jQuery.isFunction(onOpen)){
  82. onOpen();
  83. }
  84. }
  85. }
  86. });
  87. }
  88. function cleanupPopup(){
  89. $("div.mangificWrapper .magnificTitle").text('');
  90. $("div.mangificWrapper .magnificContentsDiv").html('');
  91. }
  92. function handleVersionClick(){
  93. if($("span.versionNumber").hasClass("hide")){
  94. $("span.versionNumber").removeClass("hide");
  95. $("span.version").removeClass("hide");
  96. // Copy the value of the version if their browser supports it
  97. $(document.body).append("<input class='tempCopyValue hide' type='text' value='" + $("span.versionNumber").text() + "' />");
  98. try {
  99. $("input.tempCopyValue").removeClass("hide");
  100. $("input.tempCopyValue").select();
  101. var successful = document.execCommand('copy');
  102. $("input.tempCopyValue").remove();
  103. var msg = successful ? 'successful' : 'unsuccessful';
  104. logToConsole('Copying text command was ' + msg);
  105. if(successful){
  106. $("span.copyVersionResult").text($("span.copyVersionResult").attr('lang')).css("color", "#43ff0f").removeClass("hide");
  107. $("span.copyVersionResult").css("left", $("span.versionNumber").offset().left + $("span.versionNumber").width() + 5 + "px");
  108. $("span.copyVersionResult").fadeIn('fast', function(e){ hideVLength(); }).delay(500).fadeOut('slow', function(e){ showVLength(); }).delay(500).fadeIn('slow', function(e){ hideVLength(); }).delay(500).fadeOut('slow', function(e){ showVLength(); }).delay(500).fadeIn('fast', function(e){ hideVLength(); }).delay(2000).fadeIn('fast',function() {
  109. resetVersionView(true);
  110. });
  111. }
  112. }catch(err){
  113. resetVersionView(true);
  114. }
  115. }else{
  116. $("span.copyVersionResult").stop();
  117. resetVersionView();
  118. }
  119. }
  120. function logToConsole(msg){
  121. window.console && console.log(msg);
  122. }
  123. function isUndefinedOrEmptyValue(input, canBeFalse){
  124. if(typeof input === typeof undefined || input === null || input === ''){
  125. return true;
  126. }
  127. if(input === false && !isUndefinedOrEmptyValue(canBeFalse) && canBeFalse === true){
  128. return false;
  129. }else if(input === false){
  130. return true;
  131. }
  132. return false;
  133. }
  134. function resetVersionView(hideVersion){
  135. $("input.tempCopyValue").remove();
  136. $("span.copyVersionResult").text("");
  137. if(isUndefinedOrEmptyValue(hideVersion)){
  138. $("span.versionNumber").removeClass("hide").addClass("hide");
  139. $("span.version").removeClass("hide").addClass("hide");
  140. }
  141. $("span.copyVersionResult").removeClass("hide").addClass("hide");
  142. }
  143. function hideVLength(){
  144. $("span.versionNumberCopyLengthener").removeClass("hide").addClass("hide");
  145. }
  146. function showVLength(){
  147. $("span.versionNumberCopyLengthener").removeClass("hide");
  148. }
  149. function toggleEvents(){
  150. // Toggle show server id if setting is enabled and the markup is on the page.
  151. if($("p.serverIdToggle").length){
  152. $("p.serverIdToggle").trigger("click");
  153. }
  154. $(".tablesorter").tablesorter({
  155. cssHeader: "header",
  156. cssAsc: "headerSortUp",
  157. cssDesc: "headerSortDown",
  158. cssChildRow: "expand-child",
  159. sortInitialOrder: "asc",
  160. sortMultiSortKey: "shiftKey",
  161. });
  162. }
  163. function getLang(key){
  164. if(!key.startsWith(langConstPrefix)){
  165. key = langConstPrefix + key;
  166. }
  167. if(langConsts && langConsts.hasOwnProperty(key)){
  168. return langConsts[key];
  169. }
  170. return false;
  171. }