like.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. var arrElement = new Array();
  2. function Like (){
  3. $("like").each(function(){
  4. if($(this).attr("init")!="true"){
  5. arrElement.push({
  6. like_type:$(this).attr("liketype"),
  7. resource_type:$(this).attr("restype"),
  8. resource_id:$(this).attr("resid"),
  9. like:0,
  10. me:0,
  11. init:false
  12. });
  13. }
  14. });
  15. $("like").on("click",function(){
  16. let liketype = $(this).attr("liketype");
  17. let rettype = $(this).attr("restype");
  18. let resid = $(this).attr("resid");
  19. let e = arrElement.find(function(item){
  20. if(liketype===item.like_type && rettype===item.resource_type && resid===item.resource_id){
  21. return true;
  22. }
  23. else{
  24. return false;
  25. }
  26. });
  27. if(e.me==0 ){
  28. add(e.like_type,e.resource_type,e.resource_id);
  29. }else{
  30. remove(e.like_type,e.resource_type,e.resource_id);
  31. }
  32. })
  33. LikeRefreshAll();
  34. }
  35. function add(liketype,restype,resid) {
  36. $.ajaxSetup({contentType: "application/json; charset=utf-8"});
  37. $.post(
  38. "../api/like.php?_method=create",
  39. JSON.stringify({
  40. like_type:liketype,
  41. resource_type:restype,
  42. resource_id:resid
  43. })
  44. ).done(function (data) {
  45. console.log(data);
  46. let result = JSON.parse(data);
  47. if(result.ok==true){
  48. for (let it of arrElement) {
  49. if(result["data"].resource_type===it.resource_type &&
  50. result["data"].resource_id===it.resource_id &&
  51. result["data"].like_type===it.like_type){
  52. it.like++;
  53. it.me=1;
  54. }
  55. }
  56. Render();
  57. }
  58. });
  59. }
  60. function remove(liketype,restype,resid) {
  61. $.getJSON(
  62. "../api/like.php",
  63. {
  64. _method:"delete",
  65. like_type:liketype,
  66. resource_type:restype,
  67. resource_id:resid
  68. }
  69. ).done(function (data) {
  70. console.log("delete",data);
  71. if(data.ok){
  72. LikeRefresh(data.data);
  73. }
  74. }).fail(function(jqXHR, textStatus, errorThrown){
  75. switch (textStatus) {
  76. case "timeout":
  77. break;
  78. case "error":
  79. switch (jqXHR.status) {
  80. case 404:
  81. break;
  82. case 500:
  83. break;
  84. default:
  85. break;
  86. }
  87. break;
  88. case "abort":
  89. break;
  90. case "parsererror":
  91. console.log("delete-parsererror",jqXHR.responseText);
  92. break;
  93. default:
  94. break;
  95. }
  96. });
  97. }
  98. function LikeRefresh(data){
  99. $.ajaxSetup({contentType: "application/json; charset=utf-8"});
  100. $.post(
  101. "../api/like.php?_method=list",
  102. JSON.stringify([data])
  103. ).done(function (data) {
  104. console.log(data);
  105. let result = JSON.parse(data);
  106. for (let it of arrElement) {
  107. if(result["data"][0].resource_type===it.resource_type &&
  108. result["data"][0].resource_id===it.resource_id &&
  109. result["data"][0].like_type===it.like_type){
  110. it.like=result["data"][0].like;
  111. it.me=result["data"][0].me;
  112. }
  113. }
  114. Render();
  115. });
  116. }
  117. function LikeRefreshAll(){
  118. $.ajaxSetup({contentType: "application/json; charset=utf-8"});
  119. $.post(
  120. "../api/like.php?_method=list",
  121. JSON.stringify(arrElement)
  122. ).done(function (data) {
  123. console.log(data);
  124. arrElement = JSON.parse(data).data;
  125. Render();
  126. });
  127. }
  128. function Render(){
  129. for (const it of arrElement) {
  130. let html=" ";
  131. let meClass="";
  132. let likeIcon="";
  133. switch (it.like_type) {
  134. case "like":
  135. likeIcon = "👍";
  136. break;
  137. case "favorite":
  138. likeIcon = "⭐";
  139. break;
  140. case "watch":
  141. likeIcon = "👁️";
  142. break;
  143. default:
  144. break;
  145. }
  146. if(it.me>0){
  147. meClass = " like_mine";
  148. }
  149. html +="<div class='like_inner "+meClass+"'>"+likeIcon+it.like+"</div>";
  150. $("like[liketype='"+it.like_type+"'][restype='"+it.resource_type+"'][resid='"+it.resource_id+"']").html(html);
  151. }
  152. }