palicanon.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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. let level_class = "c_level_" + iterator[0].level;
  88. //html += "<div style='width:100%;'>";
  89. html += "<div class='sutta_row " + level_class + "' >";
  90. html += "<div class='sutta_box'>" + tag0 + "</div>";
  91. html +=
  92. "<div class='chapter_title'><a href='../reader/?view=chapter&book=" +
  93. iterator[0].book +
  94. "&para=" +
  95. iterator[0].para +
  96. "' target = '_blank'>" +
  97. iterator[0].title +
  98. "</a></div>";
  99. html += "<div class='chapter_book'>book:" + iterator[0].book + " para:" + iterator[0].para + "</div>";
  100. html += "<div class='chapter_progress'>tag=" + iterator[0].tag + "</div>";
  101. html += "</div>";
  102. //html += "</div>";
  103. }
  104. let newTags = new Array();
  105. for (const oneTag in allTags) {
  106. if (allTags[oneTag] < arrBookList.length) {
  107. newTags[oneTag] = allTags[oneTag];
  108. }
  109. }
  110. allTags = newTags;
  111. allTags.sort(sortNumber);
  112. tag_render_others();
  113. $("#book_list").html(html);
  114. }
  115. );
  116. }
  117. function palicanon_load_chapter(book, para) {
  118. $.get(
  119. "get_chapter_children.php",
  120. {
  121. book: book,
  122. para: para,
  123. },
  124. function (data, status) {
  125. let arrChapterList = JSON.parse(data);
  126. let html = "";
  127. for (const iterator of arrChapterList) {
  128. html += palicanon_render_chapter_row(iterator);
  129. }
  130. $("#chapter_list_1").html(html);
  131. $("#chapter_list_1").show();
  132. $("#book_list").addClass("parent_chapter");
  133. }
  134. );
  135. }
  136. function palicanon_render_chapter_row(chapter) {
  137. let html = "";
  138. html += "<div class='sutta_row' >";
  139. html += "<div class='chapter_title'><a>" + chapter.title + "</a></div>";
  140. html += "<div class='chapter_book'>book:" + chapter.book + " para:" + chapter.para + "</div>";
  141. html += "<div class='chapter_progress'>";
  142. if (chapter.progress) {
  143. for (const iterator of chapter.progress) {
  144. html += "<div>" + iterator.lang + "-" + iterator.all_trans + "</div>";
  145. }
  146. }
  147. html += "</div>";
  148. html += "</div>";
  149. return html;
  150. }
  151. function tag_get_local_word(word) {
  152. let termKey = term_lookup_my(word, "", getCookie("userid"), getCookie("language"));
  153. if (termKey) {
  154. return termKey.meaning;
  155. } else {
  156. return word;
  157. }
  158. }
  159. function tag_render_others() {
  160. let strOthersTag = "";
  161. currTagLevel0 = new Array();
  162. $(".tag_others").html("");
  163. document.getElementById("main_tag").style.margin = 1 + "em";
  164. document.getElementById("main_tag").style.fontSize = 100 + "%";
  165. for (const key in allTags) {
  166. if (allTags.hasOwnProperty(key)) {
  167. if ($("#tag_input").val().length > 0) {
  168. if (key.indexOf($("#tag_input").val()) >= 0) {
  169. strOthersTag =
  170. '<button class="canon-tag" onclick ="tag_click(\'' + key + "')\" >" + key + "</button>";
  171. }
  172. } else {
  173. let keyname = tag_get_local_word(key);
  174. strOthersTag =
  175. '<button class="canon-tag" title="' +
  176. key +
  177. '" onclick ="tag_click(\'' +
  178. key +
  179. "')\" >" +
  180. keyname +
  181. "</button>";
  182. }
  183. let thisLevel = 100;
  184. if (tag_level.hasOwnProperty(key)) {
  185. thisLevel = tag_level[key].level;
  186. if (tag_level[key].level == 0) {
  187. currTagLevel0[key] = 1;
  188. }
  189. }
  190. $(".tag_others[level='" + thisLevel + "']").html(
  191. $(".tag_others[level='" + thisLevel + "']").html() + strOthersTag
  192. );
  193. }
  194. }
  195. }
  196. function tag_click(tag) {
  197. list_tag.push(tag);
  198. render_tag_list();
  199. tag_changed();
  200. }
  201. function render_tag_list() {
  202. let strListTag = gLocal.gui.selected + ":";
  203. for (const iterator of list_tag) {
  204. strListTag += '<tag><span class="textt" title="' + iterator + '">' + tag_get_local_word(iterator) + "</span>";
  205. strListTag += '<span class="tag-delete" onclick ="tag_remove(\'' + iterator + "')\">✕</span></tag>";
  206. }
  207. strListTag +=
  208. "<div style='display:inline-block;width:20em;'>" +
  209. "<input id='tag_input' type='input' placeholder='tag' size='20' />" +
  210. "</div>";
  211. $("#tag_selected").html(strListTag);
  212. }
  213. function tag_remove(tag) {
  214. for (let i = 0; i < list_tag.length; i++) {
  215. if (list_tag[i] == tag) {
  216. list_tag.splice(i, 1);
  217. }
  218. }
  219. render_tag_list();
  220. tag_changed();
  221. }
  222. function sortNumber(a, b) {
  223. return b - a;
  224. }