ui.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. $(function (){
  2. var g_expires = 365;
  3. var g_max_noise_image = 2560 * 2560;
  4. var g_max_scale_image = 1280 * 1280;
  5. function clear_file() {
  6. var new_file = $("#file").clone();
  7. new_file.change(clear_url);
  8. $("#file").replaceWith(new_file);
  9. }
  10. function clear_url() {
  11. $("#url").val("")
  12. }
  13. function on_change_style(e) {
  14. var checked = $("input[name=style]:checked");
  15. if (checked.val() == "art") {
  16. $(".main-title").text("waifu2x");
  17. } else {
  18. $(".main-title").html("w<s>/a/</s>ifu2x");
  19. }
  20. $.cookie("style", checked.val(), {expires: g_expires});
  21. }
  22. function on_click_tta_rule(e) {
  23. e.preventDefault();
  24. e.stopPropagation();
  25. $(".tta_rule_text").toggle();
  26. }
  27. function on_change_tta_level(e) {
  28. var checked = $("input[name=tta_level]:checked");
  29. $.cookie("tta_level", checked.val(), {expires: g_expires});
  30. var level = checked.val();
  31. if (level == 0) {
  32. level = 1;
  33. }
  34. var max_noise_w = Math.floor(Math.pow(g_max_noise_image / level, 0.5));
  35. var max_scale_w = Math.floor(Math.pow(g_max_scale_image / level, 0.5));
  36. var limit_text = $(".file_limits").text();
  37. var hits = 0;
  38. limit_text = limit_text.replace(/\d+x\d+/g, function() {
  39. hits += 1;
  40. if (hits == 1) {
  41. return "" + max_noise_w + "x" + max_noise_w;
  42. } else {
  43. return "" + max_scale_w + "x" + max_scale_w;
  44. }
  45. });
  46. $(".file_limits").text(limit_text);
  47. if (level == 1) {
  48. $(".file_limits").css("color", "");
  49. } else {
  50. $(".file_limits").css("color", "blue");
  51. }
  52. }
  53. function on_change_noise_level(e)
  54. {
  55. var checked = $("input[name=noise]:checked");
  56. $.cookie("noise", checked.val(), {expires: g_expires});
  57. }
  58. function on_change_scale_factor(e)
  59. {
  60. var checked = $("input[name=scale]:checked");
  61. $.cookie("scale", checked.val(), {expires: g_expires});
  62. }
  63. function restore_from_cookie()
  64. {
  65. if ($.cookie("style")) {
  66. $("input[name=style]").filter("[value=" + $.cookie("style") + "]").prop("checked", true)
  67. }
  68. if ($.cookie("noise")) {
  69. $("input[name=noise]").filter("[value=" + $.cookie("noise") + "]").prop("checked", true)
  70. }
  71. if ($.cookie("scale")) {
  72. $("input[name=scale]").filter("[value=" + $.cookie("scale") + "]").prop("checked", true)
  73. }
  74. if ($.cookie("tta_level")) {
  75. $("input[name=tta_level]").filter("[value=" + $.cookie("tta_level") + "]").prop("checked", true)
  76. }
  77. }
  78. function uuid()
  79. {
  80. // ref: http://stackoverflow.com/a/2117523
  81. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  82. var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
  83. return v.toString(16);
  84. });
  85. }
  86. function download_with_xhr(e)
  87. {
  88. if (typeof window.URL.createObjectURL == "undefined" ||
  89. typeof window.Blob == "undefined" ||
  90. typeof window.XMLHttpRequest == "undefined" ||
  91. typeof window.URL.revokeObjectURL == "undefined")
  92. {
  93. return;
  94. }
  95. $("input[name=download]").attr("disabled", "disabled");
  96. e.preventDefault();
  97. e.stopPropagation();
  98. var xhr = new XMLHttpRequest();
  99. xhr.open('POST', '/api', true);
  100. xhr.responseType = 'arraybuffer';
  101. xhr.onload= function(e) {
  102. if (this.status == 200) {
  103. var blob = new Blob([this.response], {type : 'image/png'});
  104. var a = document.createElement("a");
  105. var url = URL.createObjectURL(blob);
  106. a.href = url;
  107. a.target = "_blank";
  108. a.download = uuid() + ".png";
  109. a.click();
  110. URL.revokeObjectURL(url);
  111. $("input[name=download]").removeAttr("disabled");
  112. } else {
  113. alert("Download Error");
  114. $("input[name=download]").removeAttr("disabled");
  115. }
  116. };
  117. xhr.send(new FormData($("form").get(0)));
  118. }
  119. $("#url").change(clear_file);
  120. $("#file").change(clear_url);
  121. $("input[name=style]").change(on_change_style);
  122. $("input[name=noise]").change(on_change_noise_level);
  123. $("input[name=scale]").change(on_change_scale_factor);
  124. $("input[name=tta_level]").change(on_change_tta_level);
  125. $("input[name=download]").click(download_with_xhr);
  126. $("a.tta_rule").click(on_click_tta_rule);
  127. restore_from_cookie();
  128. on_change_style();
  129. on_change_scale_factor();
  130. on_change_noise_level();
  131. if ($("input[name=tta_level]").length > 0) {
  132. on_change_tta_level();
  133. }
  134. })