main.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. var broken = "img/egg-broken.svg";
  2. var maxId;
  3. document.addEventListener("DOMContentLoaded", function() {
  4. document.getElementById("egg1").style.marginTop = rnd(5) + "em";
  5. document.getElementById("egg2").style.marginTop = rnd(15) + "em";
  6. document.getElementById("egg3").style.marginTop = rnd(5) + "em";
  7. document.getElementById("egg4").style.marginTop = rnd(15) + "em";
  8. document.getElementById("egg5").style.marginTop = rnd(5) + "em";
  9. });
  10. function rnd(range) {
  11. return Math.floor((Math.random() * range));
  12. }
  13. function egg1() {
  14. httpGet("/api/greet/", function(data) {
  15. document.getElementById("title").textContent = data;
  16. document.getElementById("egg1").src = "img/egg1.svg";
  17. }, function () {
  18. document.getElementById("egg1").src = broken;
  19. });
  20. }
  21. function egg2() {
  22. getJson("GET", "/api/greet/", null, function(data) {
  23. if (data.title && data.subtitle) {
  24. document.getElementById("title").textContent = data.title;
  25. document.getElementById("subtitle").textContent = data.subtitle;
  26. document.getElementById("egg2").src = "img/egg2.svg";
  27. } else {
  28. document.getElementById("egg2").src = broken;
  29. }
  30. }, function () {
  31. document.getElementById("egg2").src = broken;
  32. });
  33. }
  34. function egg3() {
  35. var nums = [];
  36. var count = 50 + rnd(50);
  37. var start = rnd(50);
  38. var end = start + rnd(count - start);
  39. var answer = 0;
  40. for (var i = 0; i < count; i++) {
  41. var r = rnd(100);
  42. nums.push(r);
  43. if (i >= start && i < end) {
  44. answer += r
  45. }
  46. }
  47. var requestBody = {start: start, end: end, numbers: nums};
  48. getJson("POST", "/api/sum/", requestBody, function(data) {
  49. if (data.answer === answer && data.contributers === (end - start)) {
  50. document.getElementById("egg3").src = "img/egg3.svg";
  51. } else {
  52. document.getElementById("egg3").src = broken;
  53. }
  54. }, function () {
  55. document.getElementById("egg3").src = broken;
  56. });
  57. }
  58. function egg4() {
  59. var name = document.getElementById("name").value;
  60. var message = document.getElementById("message").value;
  61. if (!name || !message) {
  62. document.getElementById("egg4").src = broken;
  63. }
  64. var requestBody = {
  65. name: name,
  66. message: message
  67. };
  68. getJson("POST", "/api/store/", requestBody, function(data) {
  69. if (data.id) {
  70. maxId = data.id;
  71. document.getElementById("egg4").src = "img/egg4.svg";
  72. } else {
  73. document.getElementById("egg4").src = broken;
  74. }
  75. }, function () {
  76. document.getElementById("egg4").src = broken;
  77. });
  78. }
  79. function egg5() {
  80. if (!maxId) {
  81. document.getElementById("egg5").src = broken;
  82. return;
  83. }
  84. var id = 1 + rnd(maxId);
  85. getJson("GET", "/api/store/"+ id, null, function(data) {
  86. if (data.name && data.message) {
  87. document.getElementById("subtitle").textContent = data.message + " -- " + data.name;
  88. document.getElementById("egg5").src = "img/egg5.svg";
  89. } else {
  90. document.getElementById("egg5").src = broken;
  91. }
  92. }, function() {
  93. document.getElementById("egg5").src = broken;
  94. });
  95. }
  96. function httpGet(url, callbackOK, callbackError) {
  97. var req = new XMLHttpRequest();
  98. req.onreadystatechange = function() {
  99. if (req.readyState === XMLHttpRequest.DONE && req.status === 200) {
  100. callbackOK(req.responseText);
  101. } else {
  102. callbackError();
  103. }
  104. };
  105. req.open("GET", url, true);
  106. req.setRequestHeader("Accept", "text/plain");
  107. req.send(null);
  108. }
  109. function getJson(action, url, data, callbackOK, callbackError) {
  110. var req = new XMLHttpRequest();
  111. req.onreadystatechange = function() {
  112. if (req.readyState === XMLHttpRequest.DONE && req.status === 200
  113. && req.getResponseHeader("Content-Type").indexOf("application/json") !== -1) {
  114. callbackOK(JSON.parse(req.responseText));
  115. } else {
  116. callbackError();
  117. }
  118. };
  119. req.open(action, url, true);
  120. req.setRequestHeader("Accept", "application/json");
  121. req.send(JSON.stringify(data));
  122. }