palicanon.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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: getCookie("language"),
  25. },
  26. function (data) {
  27. let result = JSON.parse(data);
  28. if (result.status == 0) {
  29. arrMyTerm = result.data;
  30. render_main_tag();
  31. } else {
  32. alert(result.error);
  33. }
  34. }
  35. );
  36. }
  37. function render_main_tag() {
  38. $("#main_tag")
  39. .children()
  40. .each(function () {
  41. $(this).html(tag_get_local_word($(this).attr("tag")));
  42. });
  43. }
  44. function tag_changed() {
  45. let strTags = "";
  46. if (list_tag.length > 0) {
  47. strTags = main_tag + "," + list_tag.join();
  48. } else {
  49. strTags = main_tag;
  50. }
  51. console.log(strTags);
  52. $.get(
  53. "book_tag.php",
  54. {
  55. tag: strTags,
  56. },
  57. function (data, status) {
  58. let arrBookList = JSON.parse(data);
  59. let html = "";
  60. allTags = new Array();
  61. for (const iterator of arrBookList) {
  62. let tag0 = "";
  63. let tags = iterator[0].tag.split("::");
  64. let currTag = new Array();
  65. currTag[main_tag] = 1;
  66. for (const scondTag of list_tag) {
  67. currTag[scondTag] = 1;
  68. }
  69. for (let tag of tags) {
  70. if (tag.slice(0, 1) == ":") {
  71. tag = tag.slice(1);
  72. }
  73. if (tag.slice(-1) == ":") {
  74. tag = tag.slice(0, -1);
  75. }
  76. if (currTagLevel0.hasOwnProperty(tag)) {
  77. tag0 = tag;
  78. }
  79. if (!currTag.hasOwnProperty(tag)) {
  80. if (allTags.hasOwnProperty(tag)) {
  81. allTags[tag] += 1;
  82. } else {
  83. allTags[tag] = 1;
  84. }
  85. }
  86. }
  87. //html += "<div style='width:100%;'>";
  88. html += "<div class='sutta_row' >";
  89. html += "<div class='sutta_box'>" + tag0 + "</div>";
  90. html +=
  91. "<div class='sutta_box'><a href='../reader/?view=chapter&book=" +
  92. iterator[0].book +
  93. "&para=" +
  94. iterator[0].para +
  95. "' target = '_blank'>" +
  96. iterator[0].title +
  97. "</a></div>";
  98. html += "<div class='sutta_box'>book:" + iterator[0].book + " para:" + iterator[0].para + "</div>";
  99. html += "<div class='sutta_tag'>tag=" + iterator[0].tag + "</div>";
  100. html += "</div>";
  101. //html += "</div>";
  102. }
  103. let newTags = new Array();
  104. for (const oneTag in allTags) {
  105. if (allTags[oneTag] < arrBookList.length) {
  106. newTags[oneTag] = allTags[oneTag];
  107. }
  108. }
  109. allTags = newTags;
  110. allTags.sort(sortNumber);
  111. tag_render_others();
  112. $("#book_list").html(html);
  113. }
  114. );
  115. }
  116. function tag_get_local_word(word) {
  117. let termKey = term_lookup_my(word, "", getCookie("userid"), getCookie("language"));
  118. if (termKey) {
  119. return termKey.meaning;
  120. } else {
  121. return word;
  122. }
  123. }
  124. function tag_render_others() {
  125. let strOthersTag = "";
  126. currTagLevel0 = new Array();
  127. $(".tag_others").html("");
  128. document.getElementById("main_tag").style.margin = 1 + "em";
  129. document.getElementById("main_tag").style.fontSize = 100 + "%";
  130. for (const key in allTags) {
  131. if (allTags.hasOwnProperty(key)) {
  132. if ($("#tag_input").val().length > 0) {
  133. if (key.indexOf($("#tag_input").val()) >= 0) {
  134. strOthersTag =
  135. '<button class="canon-tag" onclick ="tag_click(\'' + key + "')\" >" + key + "</button>";
  136. }
  137. } else {
  138. let keyname = tag_get_local_word(key);
  139. strOthersTag =
  140. '<button class="canon-tag" title="' +
  141. key +
  142. '" onclick ="tag_click(\'' +
  143. key +
  144. "')\" >" +
  145. keyname +
  146. "</button>";
  147. }
  148. let thisLevel = 100;
  149. if (tag_level.hasOwnProperty(key)) {
  150. thisLevel = tag_level[key].level;
  151. if (tag_level[key].level == 0) {
  152. currTagLevel0[key] = 1;
  153. }
  154. }
  155. $(".tag_others[level='" + thisLevel + "']").html(
  156. $(".tag_others[level='" + thisLevel + "']").html() + strOthersTag
  157. );
  158. }
  159. }
  160. }
  161. function tag_click(tag) {
  162. list_tag.push(tag);
  163. render_tag_list();
  164. tag_changed();
  165. }
  166. function render_tag_list() {
  167. let strListTag = gLocal.gui.selected + ":";
  168. for (const iterator of list_tag) {
  169. strListTag += '<tag><span class="textt" title="' + iterator + '">' + tag_get_local_word(iterator) + "</span>";
  170. strListTag += '<span class="tag-delete" onclick ="tag_remove(\'' + iterator + "')\">✕</span></tag>";
  171. }
  172. strListTag +=
  173. "<div style='display:inline-block;width:20em;'>" +
  174. "<input id='tag_input' type='input' placeholder='tag' size='20' />" +
  175. "</div>";
  176. $("#tag_selected").html(strListTag);
  177. }
  178. function tag_remove(tag) {
  179. for (let i = 0; i < list_tag.length; i++) {
  180. if (list_tag[i] == tag) {
  181. list_tag.splice(i, 1);
  182. }
  183. }
  184. render_tag_list();
  185. tag_changed();
  186. }
  187. function sortNumber(a, b) {
  188. return b - a;
  189. }