palicanon.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. var main_tag = "";
  2. var list_tag = new Array();
  3. var currTagLevel0 = new Array();
  4. var allTags = new Array();
  5. var arrMyTerm = new Array();
  6. palicanon_load_term();
  7. function palicanon_onload() {
  8. $("span[tag]").click(function () {
  9. $(this).siblings().removeClass("select");
  10. $(this).addClass("select");
  11. main_tag = $(this).attr("tag");
  12. list_tag = new Array();
  13. tag_changed();
  14. render_tag_list();
  15. });
  16. $("#tag_input").keypress(function () {
  17. tag_render_others();
  18. });
  19. }
  20. function palicanon_load_term() {
  21. $.post(
  22. "../term/get_term_index.php",
  23. {
  24. lang: "zh-hans",
  25. },
  26. function (data) {
  27. let result = JSON.parse(data);
  28. if (result.status == 0) {
  29. arrMyTerm = result.data;
  30. } else {
  31. alert(result.error);
  32. }
  33. }
  34. );
  35. }
  36. function tag_changed() {
  37. let strTags = "";
  38. if (list_tag.length > 0) {
  39. strTags = main_tag + "," + list_tag.join();
  40. } else {
  41. strTags = main_tag;
  42. }
  43. console.log(strTags);
  44. $.get(
  45. "book_tag.php",
  46. {
  47. tag: strTags,
  48. },
  49. function (data, status) {
  50. let arrBookList = JSON.parse(data);
  51. let html = "";
  52. allTags = new Array();
  53. for (const iterator of arrBookList) {
  54. let tag0 = "";
  55. let tags = iterator[0].tag.split("::");
  56. let currTag = new Array();
  57. currTag[main_tag] = 1;
  58. for (const scondTag of list_tag) {
  59. currTag[scondTag] = 1;
  60. }
  61. for (let tag of tags) {
  62. if (tag.slice(0, 1) == ":") {
  63. tag = tag.slice(1);
  64. }
  65. if (tag.slice(-1) == ":") {
  66. tag = tag.slice(0, -1);
  67. }
  68. if (currTagLevel0.hasOwnProperty(tag)) {
  69. tag0 = tag;
  70. }
  71. if (!currTag.hasOwnProperty(tag)) {
  72. if (allTags.hasOwnProperty(tag)) {
  73. allTags[tag] += 1;
  74. } else {
  75. allTags[tag] = 1;
  76. }
  77. }
  78. }
  79. //html += "<div style='width:100%;'>";
  80. html += "<div class='sutta_row' >";
  81. html += "<div class='' style='flex:1;padding: 0 3px;'>" + tag0 + "</div>";
  82. html +=
  83. "<div style='flex:3;font-weight:700'><a href='../reader/?view=chapter&book=" +
  84. iterator[0].book +
  85. "&para=" +
  86. iterator[0].para +
  87. "' target = '_blank'>" +
  88. iterator[0].title +
  89. "</a></div>";
  90. html += "<div style='flex:3;'>book:" + iterator[0].book + " para:" + iterator[0].para + "</div>";
  91. html += "<div style='flex:5;overflow-wrap: anywhere;'>tag=" + iterator[0].tag + "</div>";
  92. html += "</div>";
  93. //html += "</div>";
  94. }
  95. let newTags = new Array();
  96. for (const oneTag in allTags) {
  97. if (allTags[oneTag] < arrBookList.length) {
  98. newTags[oneTag] = allTags[oneTag];
  99. }
  100. }
  101. allTags = newTags;
  102. allTags.sort(sortNumber);
  103. tag_render_others();
  104. $("#book_list").html(html);
  105. }
  106. );
  107. }
  108. function tag_render_others() {
  109. let strOthersTag = "";
  110. currTagLevel0 = new Array();
  111. $(".tag_others").html("");
  112. for (const key in allTags) {
  113. if (allTags.hasOwnProperty(key)) {
  114. if ($("#tag_input").val().length > 0) {
  115. if (key.indexOf($("#tag_input").val()) >= 0) {
  116. strOthersTag = "<button onclick =\"tag_click('" + key + "')\" >" + key + "</button>";
  117. }
  118. } else {
  119. let termKey = term_lookup_my(key, "", getCookie("userid"), "zh-cn");
  120. let keyname = key;
  121. if (termKey) {
  122. keyname = termKey.meaning;
  123. }
  124. strOthersTag = "<button onclick =\"tag_click('" + key + "')\" >" + keyname + "</button>";
  125. }
  126. let thisLevel = 100;
  127. if (tag_level.hasOwnProperty(key)) {
  128. thisLevel = tag_level[key].level;
  129. if (tag_level[key].level == 0) {
  130. currTagLevel0[key] = 1;
  131. }
  132. }
  133. $(".tag_others[level='" + thisLevel + "']").html(
  134. $(".tag_others[level='" + thisLevel + "']").html() + strOthersTag
  135. );
  136. }
  137. }
  138. }
  139. function tag_click(tag) {
  140. list_tag.push(tag);
  141. render_tag_list();
  142. tag_changed();
  143. }
  144. function render_tag_list() {
  145. let strListTag = gLocal.gui.selected + ":";
  146. for (const iterator of list_tag) {
  147. strListTag += "<tag><span style='margin-right: 5px; font-weight: bold;'>" + iterator + "</span>";
  148. strListTag += "<span style='display: contents;' onclick =\"tag_remove('" + iterator + "')\">";
  149. strListTag +=
  150. "<svg t= '1598638386903' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='1223' width='16' height='16'>";
  151. strListTag +=
  152. "<path fill='#707070' p-id='1224' d='M512 620.544l253.3376 253.3376a76.6976 76.6976 0 1 0 108.544-108.544L620.6464 512l253.2352-253.3376a76.6976 76.6976 0 1 0-108.544-108.544L512 403.3536 258.6624 150.1184a76.6976 76.6976 0 1 0-108.544 108.544L403.3536 512 150.1184 765.3376a76.6976 76.6976 0 1 0 108.544 108.544L512 620.6464z' >";
  153. strListTag += "</path></svg>";
  154. strListTag += "</span></tag>";
  155. }
  156. strListTag +=
  157. "<div style='display:inline-block;width:20em;'><input id='tag_input' type='input' placeholder='tag' size='20' /></div>";
  158. $("#tag_selected").html(strListTag);
  159. }
  160. function tag_remove(tag) {
  161. for (let i = 0; i < list_tag.length; i++) {
  162. if (list_tag[i] == tag) {
  163. list_tag.splice(i, 1);
  164. }
  165. }
  166. render_tag_list();
  167. tag_changed();
  168. }
  169. function sortNumber(a, b) {
  170. return b - a;
  171. }