2
0

dict.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. var dict_pre_searching = false;
  2. var dict_pre_search_curr_word = "";
  3. var dict_search_xml_http = null;
  4. var _autoSplit = true;
  5. function dict_search(word, autoSplit = true) {
  6. word = word.replace(/[\[\]]/g,"");
  7. _autoSplit = autoSplit;
  8. $("#pre_search_result").hide();
  9. if (!localStorage.searchword) {
  10. localStorage.searchword = "";
  11. }
  12. let oldHistory = localStorage.searchword;
  13. let arrOldHistory = oldHistory.split(",");
  14. let isExist = false;
  15. for (let i = 0; i < arrOldHistory.length; i++) {
  16. if (arrOldHistory[i] == word) {
  17. isExist = true;
  18. }
  19. }
  20. if (!isExist) {
  21. localStorage.searchword = word + "," + oldHistory;
  22. }
  23. word = standardize(word);
  24. //word = com_getPaliReal(word);
  25. $.get(
  26. "./dict_lookup.php",
  27. {
  28. word: word,
  29. },
  30. function (data, status) {
  31. $("#dict_search_result").html(data);
  32. $("#dict_list").append($("#dictlist"));
  33. $("#right_bar").html("");
  34. $("#right_bar").append($("#dict_user"));
  35. $("#search_result_shell").html("");
  36. $("#search_result_shell").append($("#search_summary"));
  37. guide_init();
  38. if (_autoSplit == true && word.length > 10) {
  39. get_comp_data(word);
  40. }
  41. let word_count = parseInt($("#word_count").val());
  42. if (_autoSplit == true && word_count < 6) {
  43. //trubo_split();
  44. }
  45. }
  46. );
  47. }
  48. function standardize(word) {
  49. let word_end = word.slice(-1);
  50. if (word_end == "n" || word_end == "m") {
  51. word_end = "ṃ";
  52. word = word.slice(0, -1) + word_end;
  53. }
  54. return word;
  55. }
  56. function dict_pre_search(word) {
  57. if (dict_pre_searching == true) {
  58. return;
  59. }
  60. dict_pre_searching = true;
  61. dict_pre_search_curr_word = word;
  62. $.get(
  63. "./dict_lookup_pre.php",
  64. {
  65. word: word,
  66. },
  67. function (data, status) {
  68. dict_pre_searching = false;
  69. dict_pre_search_curr_word = "";
  70. try {
  71. let result = JSON.parse(data);
  72. let html = "<div>";
  73. for (const iterator of result) {
  74. html += "<div class='dict_word_list' onclick=\"dict_pre_word_click('" + iterator.word + "')\">";
  75. html += "<span class='spell' >" + iterator.word + "(" + iterator.count + ")</span>";
  76. html += "<div class='mean'>" + iterator.mean + "</div>";
  77. html += "</div>";
  78. }
  79. html += "</div>";
  80. $("#pre_search_word_content").html(html);
  81. $("#pre_search_result").css("display", "block");
  82. $(document).one("click", function () {
  83. $("#pre_search_result").hide();
  84. });
  85. } catch (error) {}
  86. }
  87. );
  88. }
  89. function dict_pre_word_click(word) {
  90. $("#dict_ref_search_input").val(word);
  91. $("#pre_search_result").hide();
  92. dict_search(word);
  93. }
  94. function search_on_load(word) {
  95. $("#dict_ref_search_input").val(word);
  96. dict_search(word);
  97. }
  98. function dict_input_change(obj) {
  99. dict_pre_search(obj.value);
  100. }
  101. function dict_input_onfocus() {
  102. if ($("#dict_ref_search_input").val() == "") {
  103. dict_show_history();
  104. }
  105. }
  106. function dict_input_keyup(e, obj) {
  107. var keynum;
  108. var keychar;
  109. var numcheck;
  110. if ($("#dict_ref_search_input").val() == "") {
  111. dict_show_history();
  112. return;
  113. }
  114. if (window.event) {
  115. // IE
  116. keynum = e.keyCode;
  117. } else if (e.which) {
  118. // Netscape/Firefox/Opera
  119. keynum = e.which;
  120. }
  121. var keychar = String.fromCharCode(keynum);
  122. if (keynum == 13) {
  123. dict_search(obj.value);
  124. } else {
  125. dict_input_split(obj.value);
  126. if (obj.value.indexOf("+") == -1) {
  127. dict_pre_search(obj.value);
  128. } else {
  129. dict_input_split(obj.value);
  130. $("#pre_search_result").hide();
  131. }
  132. }
  133. }
  134. var t;
  135. function dict_input_split(word) {
  136. if (word.indexOf("+") >= 0) {
  137. let wordParts = word.split("+");
  138. let strParts = "";
  139. for (const iterator of wordParts) {
  140. strParts += "<part><a onclick='dict_search(\"" + iterator + "\")'>" + iterator + "</a></part>";
  141. }
  142. let html =
  143. "点击查词<div class='dropdown_ctl'><div class='content'><div class='main_view' >" +
  144. strParts +
  145. "</div></div></div>";
  146. $("#manual_split").html(html);
  147. clearTimeout(t);
  148. t = setTimeout("getPartMeaning()", 1000);
  149. } else {
  150. $("#manual_split").html("");
  151. $("#part_mean_shell").slideUp();
  152. }
  153. }
  154. function dict_show_history() {
  155. if (!localStorage.searchword) {
  156. localStorage.searchword = "";
  157. }
  158. var arrHistory = localStorage.searchword.split(",");
  159. var strHistory = "";
  160. if (arrHistory.length > 0) {
  161. strHistory += '<a onclick="cls_word_search_history()">清空历史记录</a>';
  162. }
  163. for (var i = 0; i < arrHistory.length; i++) {
  164. var word = arrHistory[i];
  165. strHistory += "<div class='dict_word_list'>";
  166. strHistory += "<a onclick='dict_pre_word_click(\"" + word + "\")'>" + word + "</a>";
  167. strHistory += "</div>";
  168. }
  169. $("#dict_ref_search_result").html(strHistory);
  170. }
  171. function cls_word_search_history() {
  172. localStorage.searchword = "";
  173. $("#dict_ref_search_result").html("");
  174. }
  175. function get_comp_data(word) {
  176. $.get(
  177. "./get_split_data.php",
  178. {
  179. word: word,
  180. },
  181. function (data, status) {
  182. $("#pre_search_result").hide();
  183. try {
  184. let result = JSON.parse(data);
  185. if (result.length > 0) {
  186. let comp = new Array();
  187. for (const iterator of result) {
  188. comp.push({ word: iterator[7], confidence: iterator[10] });
  189. }
  190. let compGroup = new Array(comp);
  191. render_parts_select(compGroup);
  192. } else {
  193. trubo_split();
  194. }
  195. } catch (e) {
  196. console.error(e.message);
  197. }
  198. }
  199. );
  200. }
  201. var gCurrWordParts = "";
  202. function render_parts_select(part_list) {
  203. let html = "<div>";
  204. let firstWord = new Array();
  205. if (part_list.length > 0 && part_list[0].length > 0) {
  206. html += "组成";
  207. let level1Count = 0;
  208. for (const part of part_list) {
  209. firstWord.push(part[0].word);
  210. html += '<div class="dropdown_ctl">';
  211. html += '<div class="content">';
  212. html +=
  213. '<div class="main_view">' +
  214. "<part>" +
  215. part[0].word.replace(/\+/g, "</part><part>") +
  216. "</part>" +
  217. "</div>";
  218. html += '<div class="more_button">' + part_list[0].length + "</div>";
  219. html += "</div>";
  220. html += '<div class="menu" >';
  221. for (const one_part of part) {
  222. html += '<div class="part_list">' + one_part.word + "</div>";
  223. }
  224. html += "<div class='part_list' onclick=\"trubo_split()\">深度拆分</div>";
  225. html += "</div>";
  226. html += "</div>";
  227. level1Count++;
  228. }
  229. } else {
  230. html += "<button class='part_list' onclick=\"trubo_split()\">深度拆分</button>";
  231. }
  232. html += "<button onclick='copy_parts()'>copy</button>";
  233. html += "</div>";
  234. $("#input_parts").html(html);
  235. gCurrWordParts = firstWord.join("+");
  236. getPartMeaning(gCurrWordParts);
  237. $(".more_button").click(function () {
  238. $(this).parent().siblings(".menu").toggle();
  239. });
  240. $(".part_list").click(function () {
  241. let html = "<part>" + $(this).text().replace(/\+/g, "</part><part>") + "</part>";
  242. $(this).parent().parent().find(".main_view").html(html);
  243. $(this).parent().hide();
  244. gCurrWordParts = $(this).text();
  245. getPartMeaning($(this).text());
  246. $("part").click(function () {
  247. dict_search($(this).text(), false);
  248. });
  249. });
  250. $("part").click(function () {
  251. dict_search($(this).text(), false);
  252. });
  253. }
  254. function copy_parts() {
  255. copy_to_clipboard(gCurrWordParts);
  256. }
  257. function trubo_split() {
  258. let strSpliting = "正在自动切分……";
  259. if ($("#input_parts").html() == strSpliting) {
  260. return;
  261. }
  262. $("#pre_search_result").hide();
  263. $("#input_parts").html(strSpliting);
  264. $.post(
  265. "./split.php",
  266. {
  267. word: $("#dict_ref_search_input").val(),
  268. },
  269. function (data, status) {
  270. try {
  271. let result = JSON.parse(data);
  272. render_parts_select(result[0]["data"]);
  273. } catch (e) {}
  274. }
  275. );
  276. }
  277. function getPartMeaning(word = "") {
  278. let sWord = word;
  279. if (word == "") {
  280. sWord = $("#dict_ref_search_input").val();
  281. }
  282. $.get(
  283. "../dict/get_first_mean.php",
  284. {
  285. word: sWord,
  286. },
  287. function (data, status) {
  288. try {
  289. let result = JSON.parse(data);
  290. let html = "<div>";
  291. if (result.length > 0) {
  292. for (const part of result) {
  293. html +=
  294. "<div class='auto_mean'><span class='spell'>" +
  295. part.word +
  296. "</span><span class='meaning'>" +
  297. part.mean +
  298. "</span></div>";
  299. }
  300. }
  301. html += "</div>";
  302. $("#part_mean").html(html);
  303. $("#part_mean_shell").slideDown();
  304. } catch (error) {}
  305. }
  306. );
  307. }
  308. function setNaviVisibility(strObjId = "") {
  309. var objNave = document.getElementById("dict_list");
  310. var objblack = document.getElementById("dict_list_shell");
  311. if (strObjId == "") {
  312. objblack.style.display = "none";
  313. objNave.className = "dict_list_off";
  314. } else {
  315. objblack.style.display = "block";
  316. objNave.className = "dict_list_on";
  317. }
  318. }
  319. function refDictShowTranslateDiv(obj){
  320. $(this).parent().children().find(".tool_innter").slideToggle();
  321. }
  322. function SaveToMyDict(){
  323. }