goto.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. // $('.sec05-moblie-container').slick({
  2. // arrows: false,
  3. // slidesToShow: 1,
  4. // slidesToScroll: 1,
  5. // infinite: false,
  6. // centerMode: true,
  7. // });
  8. $(".sendbox").hide();
  9. $(document).on("click", ".collectcontent", function (event) {
  10. $(".sendbox").show(500);
  11. $(this).addClass("select");
  12. $(".select").siblings().removeClass('select');
  13. });
  14. $(document).on("click", ".close", function (event) {
  15. // $(this).siblings('.collectcard').removeClass('select');
  16. $(".sendbox").hide(500);
  17. $(".collectcontent").removeClass("select");
  18. });
  19. // 收藏頁面
  20. function collection(collectuserid='') {
  21. console.log('Call collection(' + collectuserid + ')'); // test
  22. var collectcontent = '';
  23. $.ajax({
  24. method: "GET",
  25. url: "https://api.ptt.cx:8750/api/v1/line/collection/" + collectuserid + "",
  26. dataType: "json",
  27. })
  28. .done(function (msg) {
  29. if (msg == "error: user don't have any nft") { // 沒NFT
  30. collectcontent += '<p>您可以到我們的「NFT商店」頁面,去購買您喜愛的NFT收藏品哦!</p>';
  31. } else { // 有NFT
  32. console.log(msg)
  33. let len = Object.keys(msg).length;
  34. let arr = []
  35. for(let i = 0; i < len; i++) {
  36. arr.push(msg[i]);
  37. }
  38. console.log(arr);
  39. for(let i = 0; i < arr.length; i++) {
  40. collectcontent += '\
  41. <div class="collectcontent col">\
  42. <input style="display: none;" type="radio" value="'+ arr[i].id + '" name="nftid" id="' + arr[i].id + '">\
  43. <label for="'+ arr[i].id + '">\
  44. <div class="collectcard card h-100">\
  45. <a target="_blank">\
  46. <img src="'+ arr[i].imgurl + '"class="card-img-top" alt="...">\
  47. </a>\
  48. <div class="card-body p-2">\
  49. <a target="_blank">\
  50. <h5 class="card-title pt-3">'+ arr[i].title + '</h5>\
  51. <p class="card-text">數量:'+ arr[i].amount + '</p>\
  52. </a>\
  53. </div>\
  54. </div>\
  55. </label>\
  56. </div>';
  57. }
  58. }
  59. $('.sec05-moblie-container').html(collectcontent);
  60. });
  61. }
  62. // 購買頁面
  63. function shop(collectuserid='') {
  64. console.log('Call shop(' + collectuserid + ')'); // test
  65. $.ajax({
  66. method: "GET",
  67. url: "https://api.ptt.cx:8750/api/v1/line/shop/" + collectuserid + "",
  68. dataType: "json",
  69. })
  70. .done(function (msg) {
  71. console.log(msg);
  72. // console.log(Object.keys(msg).length);
  73. let msgLen = Object.keys(msg).length;
  74. console.log(msgLen);
  75. var nftmall = '';
  76. var buybox = "";
  77. for (var i = 0; i < msgLen; i++) {
  78. nftmall += '\
  79. <div class="nftmall col">\
  80. <input style="display:none" type="radio" value="'+ msg[i].id + '" name="nftid" class="nftname" id="' + msg[i].id + '">\
  81. <label for="'+ msg[i].id + '">\
  82. <div class="collectcard card h-100">\
  83. <a target="_blank">\
  84. <img src="'+ msg[i].imgurl + '"class="card-img-top" alt="...">\
  85. </a>\
  86. <div class="card-body p-2">\
  87. <a target="_blank">\
  88. <h5 class="card-title pt-3">'+ msg[i].title + '</h5>\
  89. </a>\
  90. </div>\
  91. </div>\
  92. </label>\
  93. </div>';
  94. }
  95. buybox += '\
  96. <div class="p-2">\
  97. <input id="userid" style="border-radius: 10px; border:none; display: none;" class="p-2 w-100 mb-3" type="text" name="userid" value="' + collectuserid + '" placeholder="請輸入您的userid" required>\
  98. <div class="text-end px-2">\
  99. <p class="text-start text-white mb-2">※一次只能購買一則NFT收藏品</p>\
  100. <button type="button" style="border:1px solid #fff; border-radius: 30px;" class="close btn text-white px-3">取消</button>\
  101. <input style="border-radius: 30px; background:#fff; border: none;" class="send-btn px-3 ms-1 py-2" type="submit" value="購買">\
  102. </div>\
  103. </div>\
  104. </div>';
  105. $('.sec06-nft-mall').html(nftmall);
  106. $('.buybox').html(buybox);
  107. });
  108. }
  109. // Qrcode頁面
  110. function get_data(collectuserid='') {
  111. console.log('Call get_data(' + collectuserid + ')'); // test
  112. $.ajax({
  113. method: "GET",
  114. url: "https://api.ptt.cx:8750/api/v1/line/receive/" + collectuserid + "",
  115. dataType: "json",
  116. })
  117. .done(function (msg) {
  118. console.log(msg);
  119. var Qrcodeimg = '';
  120. var useraddress = '';
  121. Qrcodeimg += '\
  122. <img class="img-fluid" src="./qrcode/'+ collectuserid + '.png" alt="">\
  123. ';
  124. useraddress += '\
  125. '+ msg.useraddress + '\
  126. ';
  127. $('#Qrcode').html(Qrcodeimg);
  128. $('#copy').html(useraddress);
  129. });
  130. }
  131. $(".buybox").hide();
  132. $(document).on("click", ".nftmall", function (event) {
  133. $(".buybox").show(500);
  134. $(this).addClass("select");
  135. $(".select").siblings().removeClass('select');
  136. });
  137. $(document).on("click", ".close", function (event) {
  138. // $(this).siblings('.collectcard').removeClass('select');
  139. $(".buybox").hide(500);
  140. $(".nftmall").removeClass("select");
  141. $(".nftname").prop("checked", false);
  142. });
  143. $.fn.serializeObject = function () {
  144. var o = {};
  145. var a = this.serializeArray();
  146. $.each(a, function () {
  147. if (o[this.name]) {
  148. console.log(o[this.name], o[this.value]); // test
  149. if (!o[this.name].push) {
  150. o[this.name] = [o[this.name]];
  151. }
  152. o[this.name].push(this.value || '');
  153. } else {
  154. o[this.name] = this.value || '';
  155. }
  156. });
  157. return o;
  158. };
  159. // 確定發送按鈕處理
  160. $(".collect-send").submit(function (e) {
  161. var nftid = $("input[name='nftid']:checked").val();
  162. var address = $('#address').val();
  163. var data = `{"nftid":"` + nftid +`","address":"` + address +`"}`;
  164. console.log(data); // test
  165. var url = "https://api.ptt.cx:8750/api/v1/line/send";
  166. var xhr = new XMLHttpRequest();
  167. xhr.open("POST", url, false);
  168. xhr.setRequestHeader("accept", "application/json");
  169. xhr.setRequestHeader("Content-Type", "application/json");
  170. xhr.onreadystatechange = function () {
  171. if (xhr.readyState === 4) {
  172. console.log(xhr.status);
  173. console.log(xhr.responseText);
  174. alert("發送成功");
  175. location.replace("collect.html");
  176. }
  177. };
  178. xhr.send(data);
  179. });
  180. $(".nft-buy").submit(function (e) {
  181. var nftid = $("input[name='nftid']:checked").val();
  182. var userid = $('#userid').val();
  183. var data = `{"nftid":"` + nftid +`","userid":"` + userid +`"}`;
  184. console.log(data); // test
  185. var url = "https://api.ptt.cx:8750/api/v1/line/buy";
  186. var xhr = new XMLHttpRequest();
  187. xhr.open("POST", url, false);
  188. xhr.setRequestHeader("accept", "application/json");
  189. xhr.setRequestHeader("Content-Type", "application/json");
  190. xhr.onreadystatechange = function () {
  191. if (xhr.readyState === 4) {
  192. console.log(xhr.status);
  193. console.log(xhr.responseText);
  194. alert("購買成功");
  195. location.replace("shop.html");
  196. }
  197. };
  198. xhr.send(data);
  199. });
  200. function copyEvent(id) {
  201. var str = document.getElementById(id);
  202. window.getSelection().selectAllChildren(str);
  203. document.execCommand("Copy")
  204. toastr.options = {
  205. // 參數設定[註1]
  206. "closeButton": false, // 顯示關閉按鈕
  207. "debug": false, // 除錯
  208. "newestOnTop": false, // 最新一筆顯示在最上面
  209. "progressBar": false, // 顯示隱藏時間進度條
  210. "positionClass": "toast-top-center", // 位置的類別
  211. "preventDuplicates": false, // 隱藏重覆訊息
  212. "onclick": null, // 當點選提示訊息時,則執行此函式
  213. "showDuration": "300", // 顯示時間(單位: 毫秒)
  214. "hideDuration": "1000", // 隱藏時間(單位: 毫秒)
  215. "timeOut": "1000", // 當超過此設定時間時,則隱藏提示訊息(單位: 毫秒)
  216. "extendedTimeOut": "1000", // 當使用者觸碰到提示訊息時,離開後超過此設定時間則隱藏提示訊息(單位: 毫秒)
  217. "showEasing": "swing", // 顯示動畫時間曲線
  218. "hideEasing": "linear", // 隱藏動畫時間曲線
  219. "showMethod": "fadeIn", // 顯示動畫效果
  220. "hideMethod": "fadeOut" // 隱藏動畫效果
  221. }
  222. toastr.success("複製成功");
  223. }