palicanon.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. $.get(
  22. "../term/term.php",
  23. {
  24. op:"my"
  25. },
  26. function(data){
  27. arrMyTerm = JSON.parse(data);
  28. }
  29. );
  30. }
  31. function tag_changed(){
  32. let strTags = "";
  33. if(list_tag.length>0){
  34. strTags = main_tag + "," + list_tag.join();
  35. }
  36. else{
  37. strTags = main_tag;
  38. }
  39. console.log(strTags);
  40. $.get("book_tag.php",
  41. {
  42. tag:strTags
  43. },
  44. function(data,status){
  45. let arrBookList = JSON.parse(data);
  46. let html="";
  47. allTags = new Array();
  48. for (const iterator of arrBookList) {
  49. let tag0="";
  50. let tags = iterator[0].tag.split("::");
  51. let currTag = new Array();
  52. currTag[main_tag] = 1;
  53. for (const scondTag of list_tag) {
  54. currTag[scondTag] = 1;
  55. }
  56. for (let tag of tags) {
  57. if(tag.slice(0,1)==":"){
  58. tag = tag.slice(1);
  59. }
  60. if(tag.slice(-1)==":"){
  61. tag = tag.slice(0,-1);
  62. }
  63. if(currTagLevel0.hasOwnProperty(tag)){
  64. tag0 = tag;
  65. }
  66. if(!currTag.hasOwnProperty(tag)){
  67. if(allTags.hasOwnProperty(tag) ){
  68. allTags[tag] += 1;
  69. }
  70. else{
  71. allTags[tag] = 1;
  72. }
  73. }
  74. }
  75. //html += "<div style='width:100%;'>";
  76. html += "<div class='sutta_row' >";
  77. html += "<div class='' style='flex:1;padding: 0 3px;'>"+tag0+"</div>";
  78. html += "<div style='flex:3;font-weight:700'><a href='../reader/?view=chapter&book="+iterator[0].book+"&para="+iterator[0].para+"' target = '_blank'>"+iterator[0].title+"</a></div>";
  79. html += "<div style='flex:3;'>book:"+iterator[0].book+" para:"+iterator[0].para+"</div>";
  80. html += "<div style='flex:5;overflow-wrap: anywhere;'>tag="+ iterator[0].tag+"</div>";
  81. html += "</div>";
  82. //html += "</div>";
  83. }
  84. let newTags = new Array();
  85. for (const oneTag in allTags) {
  86. if(allTags[oneTag]<arrBookList.length){
  87. newTags[oneTag] = allTags[oneTag];
  88. }
  89. }
  90. allTags = newTags;
  91. allTags.sort(sortNumber);
  92. tag_render_others();
  93. $("#book_list").html(html);
  94. });
  95. }
  96. function tag_render_others(){
  97. let strOthersTag = "";
  98. currTagLevel0= new Array();
  99. $(".tag_others").html("");
  100. for (const key in allTags) {
  101. if (allTags.hasOwnProperty(key)) {
  102. if($("#tag_input").val().length>0){
  103. if(key.indexOf($("#tag_input").val())>=0){
  104. strOthersTag = "<button onclick =\"tag_click('"+key+"')\" >"+key+"</button>";
  105. }
  106. }
  107. else{
  108. let termKey = term_lookup_my(key,"",getCookie("userid"),"zh-cn");
  109. let keyname = key;
  110. if(termKey){
  111. keyname = termKey.meaning;
  112. }
  113. strOthersTag = "<button onclick =\"tag_click('"+key+"')\" >"+keyname+"</button>";
  114. }
  115. let thisLevel = 100;
  116. if(tag_level.hasOwnProperty(key)){
  117. thisLevel = tag_level[key].level;
  118. if(tag_level[key].level==0){
  119. currTagLevel0[key] = 1;
  120. }
  121. }
  122. $(".tag_others[level='"+thisLevel+"']").html($(".tag_others[level='"+thisLevel+"']").html()+strOthersTag);
  123. }
  124. }
  125. }
  126. function tag_click(tag){
  127. list_tag.push(tag);
  128. render_tag_list();
  129. tag_changed();
  130. }
  131. function render_tag_list(){
  132. let strListTag = gLocal.gui.selected+":";
  133. for (const iterator of list_tag) {
  134. strListTag +="<tag><span style='margin-right: 5px; font-weight: bold;'>"+iterator+"</span>";
  135. strListTag +="<span style='display: contents;' onclick =\"tag_remove('"+iterator+"')\">";
  136. strListTag +="<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'>";
  137. strListTag += "<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' >";
  138. strListTag +="</path></svg>";
  139. strListTag +="</span></tag>";
  140. }
  141. strListTag += "<div style='display:inline-block;width:20em;'><input id='tag_input' type='input' placeholder='tag' size='20' /></div>";
  142. $("#tag_selected").html(strListTag);
  143. }
  144. function tag_remove(tag){
  145. for(let i=0; i<list_tag.length;i++){
  146. if(list_tag[i]==tag){
  147. list_tag.splice(i,1);
  148. }
  149. }
  150. render_tag_list();
  151. tag_changed();
  152. }
  153. function sortNumber(a, b)
  154. {
  155. return b -a;
  156. }