goto.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  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. for (var i in msg) {
  33. for(var j in msg[i]) {
  34. collectcontent += '\
  35. <div class="collectcontent col">\
  36. <input style="display: none;" type="checkbox" value="'+ msg[i][j].id + '" name="nftid" id="' + msg[i][j].id + '">\
  37. <label for="'+ msg[i][j].id + '">\
  38. <div class="collectcard card h-100">\
  39. <a target="_blank">\
  40. <img src="'+ msg[i][j].imgurl + '"class="card-img-top" alt="...">\
  41. </a>\
  42. <div class="card-body p-2">\
  43. <a target="_blank">\
  44. <h5 class="card-title pt-3">'+ msg[i][j].title + '</h5>\
  45. </a>\
  46. </div>\
  47. </div>\
  48. </label>\
  49. </div>';
  50. /*
  51. collectcontent += '\
  52. <div class="collectcontent col">\
  53. <input style="display: none;" type="checkbox" value="'+ msg[i][j].id + '" name="nftid" id="' + msg[i][j].id + '">\
  54. <label for="'+ msg[i][j].id + '">\
  55. <div class="collectcard card h-100">\
  56. <a target="_blank">\
  57. <img src="'+ msg[i][j].imgurl + '"class="card-img-top" alt="...">\
  58. </a>\
  59. <div class="card-body p-2">\
  60. <a target="_blank">\
  61. <h5 class="card-title pt-3">'+ msg[i][j].title + '</h5>\
  62. </a>\
  63. <p class="card-text">\
  64. '+ msg[i][j].context + ' \
  65. </p>\
  66. <p class="card-text row">\
  67. <small class="text-muted col-6 px-1">\
  68. <img class="mb-1 mx-1 d-inline" style="width: 10px; object-fit: cover; "\
  69. src="./img/sec05/Icon awesome-ethereum.png" alt=""><span>'+ msg[i][j].cost + '</span>\
  70. </small>\
  71. <small class="price col-6 px-0 text-center">\
  72. <img class="mb-1 mx-1 d-inline" style="width: 12px; object-fit: cover; " src="./img/sec05/like.png" alt=""><sp an>'+ msg[i][j].likes + '</span></small>\
  73. </p>\
  74. </div>\
  75. </div>\
  76. </label>\
  77. </div>';
  78. */
  79. }
  80. }
  81. }
  82. $('.sec05-moblie-container').html(collectcontent);
  83. });
  84. }
  85. // 購買頁面
  86. function shop(collectuserid='') {
  87. console.log('Call shop(' + collectuserid + ')'); // test
  88. $.ajax({
  89. method: "GET",
  90. url: "https://api.ptt.cx:8750/api/v1/line/shop/" + collectuserid + "",
  91. dataType: "json",
  92. })
  93. .done(function (msg) {
  94. console.log(msg);
  95. // console.log(Object.keys(msg).length);
  96. let msgLen = Object.keys(msg).length;
  97. console.log(msgLen);
  98. var nftmall = '';
  99. var buybox = "";
  100. for (var i = 0; i < msgLen; i++) {
  101. nftmall += '\
  102. <div class="nftmall col">\
  103. <input style="display:none" type="checkbox" value="'+ msg[i].id + '" name="nftid" class="nftname" id="' + msg[i].id + '">\
  104. <label for="'+ msg[i].id + '">\
  105. <div class="collectcard card h-100">\
  106. <a target="_blank">\
  107. <img src="'+ msg[i].imgurl + '"class="card-img-top" alt="...">\
  108. </a>\
  109. <div class="card-body p-2">\
  110. <a target="_blank">\
  111. <h5 class="card-title pt-3">'+ msg[i].title + '</h5>\
  112. </a>\
  113. </div>\
  114. </div>\
  115. </label>\
  116. </div>';
  117. /*
  118. nftmall += '\
  119. <div class="nftmall col">\
  120. <input style="display:none" type="checkbox" value="'+ msg[i].id + '" name="nftid" class="nftname" id="' + msg[i].id + '">\
  121. <label for="'+ msg[i].id + '">\
  122. <div class="collectcard card h-100">\
  123. <a target="_blank">\
  124. <img src="'+ msg[i].imgurl + '"class="card-img-top" alt="...">\
  125. </a>\
  126. <div class="card-body p-2">\
  127. <a target="_blank">\
  128. <h5 class="card-title pt-3">'+ msg[i].title + '</h5>\
  129. </a>\
  130. <p class="card-text">\
  131. '+ msg[i].context + ' \
  132. </p>\
  133. <p class="card-text row">\
  134. <small class="text-muted col-6 px-1">\
  135. <img class="mb-1 mx-1 d-inline" style="width: 10px; object-fit: cover; "\
  136. src="./img/sec05/Icon awesome-ethereum.png" alt=""><span>'+ msg[i].cost + '</span>\
  137. </small>\
  138. <small class="price col-6 px-0 text-center">\
  139. <img class="mb-1 mx-1 d-inline" style="width: 12px; object-fit: cover; " src="./img/sec05/like.png" alt=""><span>'+ msg[i].likes + '</span>\
  140. </small>\
  141. </p>\
  142. </div>\
  143. </div>\
  144. </label>\
  145. </div>';
  146. */
  147. }
  148. buybox += '\
  149. <div class="p-2">\
  150. <input style="border-radius: 10px; border:none; display: none;" class="p-2 w-100 mb-3" type="text" name="userid" value="' + collectuserid + '" placeholder="請輸入您的userid" required>\
  151. <div class="text-end px-2">\
  152. <p class="text-start text-white mb-2">※一次只能購買一則NFT收藏品</p>\
  153. <button type="button" style="border:1px solid #fff; border-radius: 30px;" class="close btn text-white px-3">取消</button>\
  154. <input style="border-radius: 30px; background:#fff; border: none;" class="send-btn px-3 ms-1 py-2" type="submit" value="購買">\
  155. </div>\
  156. </div>\
  157. </div>';
  158. $('.sec06-nft-mall').html(nftmall);
  159. $('.buybox').html(buybox);
  160. });
  161. }
  162. // Qrcode頁面
  163. function get_data(collectuserid='') {
  164. console.log('Call get_data(' + collectuserid + ')'); // test
  165. $.ajax({
  166. method: "GET",
  167. url: "https://api.ptt.cx:8750/api/v1/line/receive/" + collectuserid + "",
  168. dataType: "json",
  169. })
  170. .done(function (msg) {
  171. console.log(msg);
  172. var Qrcodeimg = '';
  173. var useraddress = '';
  174. Qrcodeimg += '\
  175. <img class="img-fluid" src="./qrcode/'+ collectuserid + '.png" alt="">\
  176. ';
  177. useraddress += '\
  178. '+ msg.useraddress + '\
  179. ';
  180. $('#Qrcode').html(Qrcodeimg);
  181. $('#copy').html(useraddress);
  182. });
  183. }
  184. // $(document).ready(function () {
  185. // // 收藏頁面
  186. // collection(collectuserid);
  187. // // 購買頁面
  188. // shop(collectuserid);
  189. // // Qrcode頁面
  190. // get_data(collectuserid);
  191. // });
  192. $(".buybox").hide();
  193. $(document).on("click", ".nftmall", function (event) {
  194. $(".buybox").show(500);
  195. $(this).addClass("select");
  196. $(".select").siblings().removeClass('select');
  197. });
  198. $(document).on("click", ".close", function (event) {
  199. // $(this).siblings('.collectcard').removeClass('select');
  200. $(".buybox").hide(500);
  201. $(".nftmall").removeClass("select");
  202. $(".nftname").prop("checked", false);
  203. });
  204. $.fn.serializeObject = function () {
  205. var o = {};
  206. var a = this.serializeArray();
  207. // o["id"] = 0;
  208. // o["time_stamp"] = "";
  209. $.each(a, function () {
  210. if (o[this.name]) {
  211. console.log(o[this.name], o[this.value]); // test
  212. if (!o[this.name].push) {
  213. o[this.name] = [o[this.name]];
  214. }
  215. o[this.name].push(this.value || '');
  216. } else {
  217. o[this.name] = this.value || '';
  218. }
  219. });
  220. return o;
  221. };
  222. // 確定發送按鈕處理
  223. $(".collect-send").submit(function (e) {
  224. /* var formRef = $('#form1').serializeArray();
  225. var jsonString = JSON.stringify(formRef);*/
  226. var url = "https://api.ptt.cx:8750/api/v1/line/send";
  227. var xhr = new XMLHttpRequest();
  228. xhr.open("POST", url);
  229. xhr.setRequestHeader("accept", "application/json");
  230. xhr.setRequestHeader("Content-Type", "application/json");
  231. xhr.onreadystatechange = function () {
  232. if (xhr.readyState === 4) {
  233. console.log(xhr.status);
  234. console.log(xhr.responseText);
  235. }};
  236. var data = `{
  237. "nftid": "1000",
  238. "address": "0xf05cc78a5eba78775847beea5b3ab88d4694d1b6"
  239. }`;
  240. xhr.send(data);
  241. // var jsonInfo = $('.collect-send').serializeObject();
  242. // var jsonString = JSON.stringify(jsonInfo);
  243. // console.log(jsonString);
  244. // $.ajax({
  245. // type: 'POST',
  246. // url: 'https://api.ptt.cx:8750/api/v1/line/send',
  247. // data: jsonString,
  248. // dataType: 'json',
  249. // async: false,
  250. // success: function (data) {
  251. // console.log('發送成功: ' + JSON.stringify(data));
  252. // alert("發送成功");
  253. // location.reload();
  254. // },
  255. // beforeSend: function () {
  256. // console.log('beforeSend');
  257. // },
  258. // complete: function () {
  259. // console.log('complete');
  260. // },
  261. // error: function (jqXHR, textStatus, errorThrown) {
  262. // console.log(JSON.stringify(jqXHR));
  263. // console.log("AJAX errr: " + textStatus + ' : ' + errorThrown);
  264. // console.log('送出失敗: ' + jqXHR.responseText);
  265. // }
  266. // });
  267. // return false;
  268. });
  269. $(".nft-buy").submit(function (e) {
  270. /* var formRef = $('#form1').serializeArray();
  271. var jsonString = JSON.stringify(formRef);*/
  272. var jsonInfo = $('.nft-buy').serializeObject();
  273. var jsonString = JSON.stringify(jsonInfo);
  274. console.log(jsonString);
  275. $.ajax({
  276. type: 'POST',
  277. url: 'https://api.ptt.cx:8750/api/v1/line/buy',
  278. data: jsonString,
  279. dataType: 'json',
  280. success: function (data) {
  281. console.log('購買成功: ' + data);
  282. alert("購買成功");
  283. location.reload();
  284. },
  285. beforeSend: function () {
  286. console.log('beforeSend');
  287. },
  288. complete: function () {
  289. console.log('complete');
  290. },
  291. error: function (jqXHR, textStatus, errorThrown) {
  292. console.log(JSON.stringify(jqXHR));
  293. console.log("AJAX errr: " + textStatus + ' : ' + errorThrown);
  294. console.log('送出失敗: ' + jqXHR.responseText);
  295. }
  296. });
  297. return false;
  298. });
  299. function copyEvent(id) {
  300. var str = document.getElementById(id);
  301. window.getSelection().selectAllChildren(str);
  302. document.execCommand("Copy")
  303. toastr.options = {
  304. // 參數設定[註1]
  305. "closeButton": false, // 顯示關閉按鈕
  306. "debug": false, // 除錯
  307. "newestOnTop": false, // 最新一筆顯示在最上面
  308. "progressBar": false, // 顯示隱藏時間進度條
  309. "positionClass": "toast-top-center", // 位置的類別
  310. "preventDuplicates": false, // 隱藏重覆訊息
  311. "onclick": null, // 當點選提示訊息時,則執行此函式
  312. "showDuration": "300", // 顯示時間(單位: 毫秒)
  313. "hideDuration": "1000", // 隱藏時間(單位: 毫秒)
  314. "timeOut": "1000", // 當超過此設定時間時,則隱藏提示訊息(單位: 毫秒)
  315. "extendedTimeOut": "1000", // 當使用者觸碰到提示訊息時,離開後超過此設定時間則隱藏提示訊息(單位: 毫秒)
  316. "showEasing": "swing", // 顯示動畫時間曲線
  317. "hideEasing": "linear", // 隱藏動畫時間曲線
  318. "showMethod": "fadeIn", // 顯示動畫效果
  319. "hideMethod": "fadeOut" // 隱藏動畫效果
  320. }
  321. toastr.success("複製成功");
  322. }