mtm_temp.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. /*高亮文本标注*/
  2. function Fill(data) {
  3. var highlightArr = [];
  4. clearHighlight();
  5. //data = JSON.parse(data);
  6. $.each(data, function (i, item) {
  7. if (typeof (item.HightCode) != 'undefined' && item.HightCode != null && item.HightCode != "") {
  8. var highlightItem = $('span[id=' + item.HightCode + ']').eq(0);
  9. if (highlightItem.length > 0) {
  10. var hitCode = highlightItem.attr('hitCode');
  11. if (hitCode) {
  12. highlightItem.attr('hitCode', hitCode + "|" + item.SourceCode);
  13. }
  14. else {
  15. highlightItem.attr('hitCode', item.SourceCode);
  16. }
  17. highlightArr.push(highlightItem);
  18. }
  19. }
  20. else if (typeof (item.SourceCode) == 'undefined' || item.SourceCode == null || item.SourceCode != "") {
  21. var highlightItem = $('span[kcode*=' + item.SourceCode + ']:first');
  22. if (highlightItem.length > 0) {
  23. var hitCode = highlightItem.attr('hitCode');
  24. if (hitCode) {
  25. highlightItem.attr('hitCode', hitCode + "|" + item.SourceCode);
  26. }
  27. else {
  28. highlightItem.attr('hitCode', item.SourceCode);
  29. }
  30. highlightArr.push(highlightItem);
  31. }
  32. }
  33. $.each(highlightArr, function (i, item) {
  34. if (item.attr('flag') == 'word') {
  35. // data-scolor显示的颜色等级卡控,data-setstatus高亮是否处于显示状态,data-lstatus:卡控是否能点击(1单词,2短语,3句型)
  36. // 附加默认所有高亮都可见.attr("showflag", "1")
  37. bindEvent(item.attr('iskeyklg', 'true').attr("data-setstatus", "0").attr("showflag", "1").attr("data-scolor", cHPhraseStyleFunc(item)).addClass('wordStyle'), true);
  38. }
  39. else if (item.attr('flag') == 'phrase') {
  40. bindEvent(item.attr('iskeyklg', 'true').attr("data-setstatus", "0").attr("showflag", "1").addClass('phraseStyle'), true);
  41. }
  42. else if (item.attr('flag') == 'sentence') {
  43. if (item.attr('iskeyklg') == 'true') return;
  44. bindEvent(item.attr('iskeyklg', 'true').attr("data-setstatus", "0").attr("showflag", "1").addClass('sentenceStyle')
  45. .before('<img src="file:///android_asset/js/sentenceIco.png" class="sentImagcs" data-lstatus="0" data-setstatus="0">'), true);
  46. }
  47. });
  48. });
  49. // 绑定横线内处理
  50. if (typeof (addFillAssist) == "function") {
  51. addFillAssist();
  52. }
  53. adjustFillFunc(7);
  54. }
  55. function clearHighlight() {
  56. $('span.klg-selected').removeClass('klg-selected');
  57. $('span[iskeyklg="true"]').each(function (i, item) {
  58. $(item).removeAttr('hitCode');
  59. $(item).attr('iskeyklg', 'false');
  60. if ($(item).attr('flag') == 'word') {
  61. $(item).removeClass('wordStyle').unbind();
  62. }
  63. else if ($(item).attr('flag') == 'phrase') {
  64. $(item).removeClass("phraseStyle").unbind();
  65. }
  66. else if ($(item).attr('flag') == 'sentence') {
  67. $(item).removeClass('sentenceStyle').unbind();
  68. $(item).prev().filter('img.sentImagcs').remove();
  69. }
  70. })
  71. }
  72. function bindEvent(ele, opt) {
  73. if (opt) {
  74. var className = '';
  75. if (ele.hasClass('phraseStyle'))
  76. className = 'phraseStyle';
  77. else if (ele.hasClass('wordStyle'))
  78. className = 'wordStyle';
  79. else if (ele.hasClass('sentenceStyle'))
  80. className = 'sentenceStyle';
  81. switch (className) {
  82. case 'phraseStyle':
  83. ele.unbind().bind({
  84. 'click': function (e) {
  85. $(".wordStyle[data-nowclick='1'],.phraseStyle[data-nowclick='1'],.sentenceStyle[data-nowclick='1'],.sentImagcs[data-nowclick='1']").attr("data-nowclick", "0");
  86. ele.attr("data-nowclick", "1"); // 正在点击
  87. //plugin.call(code);
  88. //alert($(this).attr("hitCode"));
  89. if (ele.attr("data-lstatus") == "2") {
  90. return;
  91. }
  92. runSPropagation(ele);
  93. e.stopPropagation();
  94. var sHCode = $(this).attr("shcode");
  95. if (sHCode != undefined && sHCode == 1) {
  96. test($(this).attr("hitCode"));
  97. }
  98. else if (sHCode == undefined) {
  99. test($(this).attr("hitCode"));
  100. }
  101. }
  102. });
  103. break;
  104. case 'wordStyle':
  105. ele.unbind().bind({
  106. 'click': function (e) {
  107. $(".wordStyle[data-nowclick='1'],.phraseStyle[data-nowclick='1'],.sentenceStyle[data-nowclick='1'],.sentImagcs[data-nowclick='1']").attr("data-nowclick", "0");
  108. ele.attr("data-nowclick", "1"); // 正在点击
  109. //plugin.call(code);
  110. //alert($(this).attr("hitCode"));
  111. if (ele.attr("data-lstatus") == "1") {
  112. return;
  113. }
  114. runSPropagation(ele);
  115. e.stopPropagation();
  116. var sHCode = $(this).attr("shcode");
  117. if (sHCode != undefined && sHCode == 1) {
  118. test($(this).attr("hitCode"));
  119. }
  120. else if (sHCode == undefined) {
  121. test($(this).attr("hitCode"));
  122. }
  123. }
  124. });
  125. break;
  126. case 'sentenceStyle':
  127. ele.unbind().bind({
  128. 'click': function (e) {
  129. $(".wordStyle[data-nowclick='1'],.phraseStyle[data-nowclick='1'],.sentenceStyle[data-nowclick='1'],.sentImagcs[data-nowclick='1']").attr("data-nowclick", "0");
  130. ele.attr("data-nowclick", "1"); // 正在点击
  131. ele.next(".sentenceStyle").attr("data-nowclick", "1"); // 正在点击
  132. //plugin.call(code);
  133. //alert($(this).attr("hitCode"));
  134. if (ele.attr("data-lstatus") == "3") {
  135. return;
  136. }
  137. runSPropagation(ele);
  138. e.stopPropagation();
  139. var sHCode = $(this).attr("shcode");
  140. if (sHCode != undefined && sHCode == 1) {
  141. test($(this).attr("hitCode"));
  142. }
  143. else if (sHCode == undefined) {
  144. test($(this).attr("hitCode"));
  145. }
  146. }
  147. }).prev().filter('.sentImagcs').unbind().bind({
  148. 'click': function (e) {
  149. $(".wordStyle[data-nowclick='1'],.phraseStyle[data-nowclick='1'],.sentenceStyle[data-nowclick='1'],.sentImagcs[data-nowclick='1']").attr("data-nowclick", "0");
  150. ele.attr("data-nowclick", "1"); // 正在点击
  151. ele.next(".sentenceStyle").attr("data-nowclick", "1"); // 正在点击
  152. //plugin.call(code);
  153. //alert($(this).attr("hitCode"));
  154. if (ele.attr("data-lstatus") == "3") {
  155. return;
  156. }
  157. runSPropagation(ele);
  158. e.stopPropagation();
  159. var sHCode = $(this).attr("shcode");
  160. if (sHCode != undefined && sHCode == 1) {
  161. test($(this).next().attr("hitCode"));
  162. }
  163. else if (sHCode == undefined) {
  164. test($(this).next().attr("hitCode"));
  165. }
  166. }
  167. });
  168. break;
  169. }
  170. }
  171. else {
  172. ele.unbind();
  173. }
  174. }
  175. // #region
  176. // 判断显示层级:0表示最外层;1表示在underlineContent里面;2表示在phraseStyle里面;5表示在underlineContent且phraseStyle在underlineContent里面,7表示在phraseStyle且underlineContent在phraseStyle里面
  177. function cHPhraseStyleFunc(element) {
  178. var ReNumber = 0;
  179. var wFlag=true;
  180. while (wFlag) {
  181. var ClsName = $(element).attr("class");
  182. if ($(element).parent() == null || $(element)[0].tagName.toUpperCase() == "BODY") {
  183. wFlag = false;
  184. return ReNumber;
  185. }
  186. else if (ClsName != undefined && ClsName.indexOf("phraseStyle") > -1) {
  187. wFlag = false;
  188. ReNumber += 1;
  189. }
  190. else if (ClsName != undefined && ClsName.indexOf("underlineContent") > -1) {
  191. wFlag = false;
  192. ReNumber += 2;
  193. }
  194. element = $(element).parent();
  195. };
  196. wFlag = true;
  197. while (wFlag) {
  198. var ClsName = $(element).attr("class");
  199. if ($(element).parent() == null || $(element)[0].tagName.toUpperCase() == "BODY") {
  200. wFlag = false;
  201. return ReNumber;
  202. }
  203. else if (ClsName != undefined && ClsName.indexOf("phraseStyle") > -1) {
  204. wFlag = false;
  205. ReNumber += 3;
  206. return ReNumber;
  207. }
  208. else if (ClsName != undefined && ClsName.indexOf("underlineContent") > -1) {
  209. wFlag = false;
  210. ReNumber += 5;
  211. return ReNumber;
  212. }
  213. element = $(element).parent();
  214. };
  215. return ReNumber;
  216. }
  217. // 添加高亮新调用处理(1:单词;2:短语;4:句型)
  218. var fillDataNum = 0;
  219. function adjustFillFunc(DataNum) {
  220. fillDataNum = DataNum;
  221. switch (DataNum) {
  222. case 0:
  223. $(".wordStyle").attr("data-setstatus", "0").attr("data-lstatus", "1");
  224. $(".phraseStyle").attr("data-setstatus", "0").attr("data-lstatus", "2");
  225. $(".sentenceStyle").attr("data-setstatus", "0").attr("data-lstatus", "3");
  226. $(".sentImagcs").attr("data-setstatus", "0").attr("data-lstatus", "3");
  227. break;
  228. case 1:
  229. $(".wordStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  230. $(".phraseStyle").attr("data-setstatus", "0").attr("data-lstatus", "2");
  231. $(".sentenceStyle").attr("data-setstatus", "0").attr("data-lstatus", "3");
  232. $(".sentImagcs").attr("data-setstatus", "0").attr("data-lstatus", "3");
  233. break;
  234. case 2:
  235. $(".wordStyle").attr("data-setstatus", "0").attr("data-lstatus", "1");
  236. $(".phraseStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  237. $(".sentenceStyle").attr("data-setstatus", "0").attr("data-lstatus", "3");
  238. $(".sentImagcs").attr("data-setstatus", "0").attr("data-lstatus", "3");
  239. break;
  240. case 3:
  241. $(".wordStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  242. $(".phraseStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  243. $(".sentenceStyle").attr("data-setstatus", "0").attr("data-lstatus", "3");
  244. $(".sentImagcs").attr("data-setstatus", "0").attr("data-lstatus", "3");
  245. break;
  246. case 4:
  247. $(".wordStyle").attr("data-setstatus", "0").attr("data-lstatus", "1");
  248. $(".phraseStyle").attr("data-setstatus", "0").attr("data-lstatus", "2");
  249. $(".sentenceStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  250. $(".sentImagcs").attr("data-setstatus", "1").attr("data-lstatus", "0");
  251. break;
  252. case 5:
  253. $(".wordStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  254. $(".phraseStyle").attr("data-setstatus", "0").attr("data-lstatus", "2");
  255. $(".sentenceStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  256. $(".sentImagcs").attr("data-setstatus", "1").attr("data-lstatus", "0");
  257. break;
  258. case 6:
  259. $(".wordStyle").attr("data-setstatus", "0").attr("data-lstatus", "1");
  260. $(".phraseStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  261. $(".sentenceStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  262. $(".sentImagcs").attr("data-setstatus", "1").attr("data-lstatus", "0");
  263. break;
  264. case 7:
  265. $(".wordStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  266. $(".phraseStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  267. $(".sentenceStyle").attr("data-setstatus", "1").attr("data-lstatus", "0");
  268. $(".sentImagcs").attr("data-setstatus", "1").attr("data-lstatus", "0");
  269. break;
  270. default:
  271. break;
  272. };
  273. // 处理不显示高亮
  274. if (typeof (dealNotShowFill) == "function") {
  275. dealNotShowFill();
  276. }
  277. dealJXQTFunc();
  278. dealRecvHSFill();
  279. if (typeof (dealNSFillFunc) == "function") {
  280. dealNSFillFunc();
  281. }
  282. }
  283. // #endregion
  284. function test(code) {
  285. //alert(code);
  286. cancelBubble();
  287. plugin.call(code);
  288. }
  289. // 判断父级是否是答题点,是的话需要选中
  290. function runSPropagation(ele) {
  291. var ClsName = $(ele).parent().attr("class");
  292. if (ClsName != null && (ClsName.indexOf("answer-text") > -1 || ClsName.indexOf("answer-audio-text") > -1 || ClsName.indexOf("answer-point-text") > -1)) {
  293. // 调用选择答题点回显
  294. var TElement = "";
  295. if (ClsName.indexOf("answer-text") > -1) {
  296. TElement = $(ele).parent().parent();
  297. }
  298. else if (ClsName.indexOf("answer-audio-text") > -1) {
  299. TElement = $(ele).parent().parent().parent().parent();
  300. }
  301. else if (ClsName.indexOf("answer-point-text") > -1) {
  302. TElement = $(ele).parent().parent().parent();
  303. }
  304. var curObj = new Object();
  305. curObj.Id = TElement.attr("answer-id");//答题点ID
  306. curObj.pId = TElement.attr("parent-anid");//答题点ID
  307. curObj.IsKY = TElement.attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题
  308. curObj.Text = TElement.attr("answer-text");//用户作答内容
  309. curObj.Score = TElement.attr("answer-score");//作答评分
  310. curObj.AnsText = TElement.attr("answer-anstext");//参考答案
  311. curObj.Comment = TElement.attr("answer-comment");//评语
  312. curObj.pId = curObj.pId ? curObj.pId : curObj.Id;//组ID
  313. $(".checkbox").removeClass("select-answer");
  314. $(".answer-body").removeClass("select-answer");
  315. TElement.addClass("select-answer");
  316. //已作答,弹出作答答案
  317. if (TElement.data("ans-status") == "1") {
  318. //移动端添加外部处理
  319. onClickAnswerPoint(JSON.stringify(curObj));
  320. }
  321. else {
  322. //移动端添加外部处理,弹出作答操作
  323. onClickAnswerPoint(JSON.stringify(curObj));
  324. }
  325. }
  326. }