$(function () { $(".no-text-audio").attr("data-drm", GetQueryString("drm")); $("body").on("click", function () { if (typeof wpfCallBack != "undefined") { wpfCallBack.hideTools(); } }); var html = $.ajax({ url: "data/html.json", async: false }).responseText;//作答信息 var klg = $.ajax({ url: "data/klg.txt", async: false }).responseText;//评阅信息 var klgcode = $.ajax({ url: "data/klgcode.txt", async: false }).responseText;//评阅信息 InitSynPageData(html, klg, klgcode, "http://192.168.129.250:10103/WS_FSCModule/", "zxstu36", 1); }); //存储页面信息 var pageVar = { index: 0, klgArr: [], klgcodeArr: [], data: new Object() } function updatePlayState(state) { $(".no-text-audio").attr("data-playing", state); } function getKlgCode(klgtext) { for (var i = 0; i < pageVar.klgArr.length; i++) { if (klgtext.toLowerCase() == pageVar.klgArr[i].toLowerCase()) { return pageVar.klgcodeArr[i]; } } return ""; } //设置页面的展示内容 function InitSynPageData(html, klg, klgcode, url, userid) { var audioMetaData = JSON.parse(html); pageVar.klgArr = klg.split("|"); pageVar.klgcodeArr = klgcode.split("|"); pageVar.data = audioMetaData; if (audioMetaData.length > 0) { $(".no-text-audio").hide(); $.DataTemplate("AudioSynArticle-template", audioMetaData, "AudioContentData", false); $("#AudioContentData").html($.MarkKnowledge($("#AudioContentData").html(), klg.split("|"))); //知识点绑定事件 $('.TextMark').click(function () { $(this).attr("id", $(this).attr("word"));//临时给词汇添加ID ShowWord(this, url, userid); }); } else { $(".no-text-audio").show(); $("#AudioContentData").hide(); } if (typeof wpfCallBack != "undefined") { wpfCallBack.hideMainWindowLoad(); } } //设置页面的展示内容,ismark 是否要标注,0-不标注,1-标注知识点 function InitPageData(html, klg, klgcode, url, userid, ismark) { if (ismark == 1 && html != "") { var words = html.replace(/(]*>)+/gi, "

"); pageVar.klgArr = klg.split("|"); pageVar.klgcodeArr = klgcode.split("|"); //替换所有的换行符 words = words.replace(/\r\n/g, "
"); words = words.replace(/\n/g, "
"); words = $.MarkKnowledge("

" + words + "

", klg.split("|")); var reg = /)<[^<]*)*<\/script>/gi; words = words.replace(reg, function (replacement) { return HTMLEncode(replacement); }); $("#AudioContentData").html(words); $(".no-text-audio").hide(); //知识点绑定事件 $('.TextMark').click(function () { $(this).attr("id", $(this).attr("word"));//临时给词汇添加ID ShowWord(this, url, userid); }); } else if (html != "") { //替换所有的换行符 words = words.replace(/\r\n/g, "
"); words = words.replace(/\n/g, "
"); $("#AudioContentData").html(html); $(".no-text-audio").hide(); } else { $("#AudioContentData").hide(); $(".no-text-audio").show(); } if (typeof wpfCallBack != "undefined") { wpfCallBack.hideMainWindowLoad(); } } //模式切换 function ChangeMode(mode) { if (mode == "Dictation") { $("#AudioContentData").css("display", "none"); $("#WriteContentData").css("display", "block"); } else { $("#AudioContentData").css("display", "block"); $("#WriteContentData").css("display", "none"); } } //设置某一句跟读样式 function SetSentenceStatus(currentNum) { var relative = $(".syn-article-sentence[data-id=" + (currentNum + 1) + "]"); relative.siblings().removeClass("sentence-read-ing"); relative.addClass("sentence-read-ing"); relative.prevAll().addClass("sentence-read-ed"); relative.nextAll().removeClass("sentence-read-ed"); } //清除所有跟读样式 function ClearSentenceStatus() { $(".syn-article-sentence").removeClass("sentence-read-ed").removeClass("sentence-read-ing"); } //显示及隐藏原文 function ShowPageData(flag) { if (flag == 0) { $("#AudioContentData").hide(); $(".hide-text").show(); } else { $("#AudioContentData").show(); $(".hide-text").hide(); } } //显示知识点课件 function ShowWord(obj, url, userid) { var JQThis = $(obj); var knowlegde = $.trim(JQThis.attr("word")); var isAdd = 1; if (typeof wpfCallBack != "undefined") { isAdd = wpfCallBack.checkKlgStudy(knowlegde) ? 0: 1; } $(obj).KLGTool({ "userid": userid, "knowledgeCode": getKlgCode(knowlegde),//知识点ID "knowledge": knowlegde,//知识点文本 "levelCode": "", //水平级别 "isAddReStudy": isAdd, "Url": url + "/api/Resources/GetNewCourseware",//获取知识点信息的url addReStudy: function (klgcode) { var tagW = $(obj).width();//目标div宽度 var tagH = $(obj).height();//目标div高度 var tagL = $(obj).offset().left;//目标div距离页面左边长度 var tagT = $(obj).offset().top;//目标div距离页面顶部长度 var tagR = $("body").width() - tagL - tagW;//目标div距离页面右部长度 $("body").append("
" + knowlegde + "
"); $(".TextMarkFly").animate({ top: 0, right: "200px" }, 800, function () { $(".TextMarkFly").remove(); if (typeof wpfCallBack != "undefined") { wpfCallBack.addResStudyKn(klgcode, knowlegde); } }); },//添加到再学习知识点回调 detailAction: function (klgcode) { if (typeof wpfCallBack != "undefined") { wpfCallBack.startKlgClient(klgcode); } }//详细释义点击事件 }); } //加载听写模式mode:1-作答状态,2-批阅状态 var loadWriteMode = function (mode) { if (mode == 1) { loadWriteModeOne(); } else { loadWriteModeTwo(); } } //加载听写模式作答界面 var loadWriteModeOne = function () { $("#WriteContentData").empty(); var myTemplate = Handlebars.compile($("#LRModeOne-template").html()); $('#WriteContentData').append(myTemplate(pageVar.data)); $("input").off("keyup").keyup(function (e) { if (e.keyCode == 9) { if (typeof wpfCallBack != "undefined") { wpfCallBack.tabNextSentence(); } } }); } //加载听写模式批阅界面 var loadWriteModeTwo = function () { if ($("input").length > 0) { for (var i = 0; i < pageVar.data.length; i++) { pageVar.data[i].PYEtext = pageVar.data[i].Etext.replace(/^\d+./, "").replace(/^\D{1,16}:/, "").replace(/(]*>)+/gi, " "); pageVar.data[i].StuAnswer = $.trim($(".modetwo[data-index='" + i + "']").find("input").val()); pageVar.data[i].StuScore = getScore(pageVar.data[i].PYEtext, pageVar.data[i].StuAnswer); pageVar.data[i].PYAnswer = markAns(pageVar.data[i].StuAnswer, pageVar.data[i].PYEtext); } } $("#WriteContentData").empty(); var myTemplate = Handlebars.compile($("#LRModeTwo-template").html()); $('#WriteContentData').append(myTemplate(pageVar.data)); $(".submittitle span:nth-of-type(1)").text(pageVar.data.length); var wrongnum = $(".modethree[data-score='0']").length; $(".submittitle span:nth-of-type(2)").text(pageVar.data.length - wrongnum); $(".submittitle span:nth-of-type(3)").text(wrongnum); } //设置当前播放到第index句 var setPagePlayIndex = function (index) { pageVar.index = index; $(".modetwo").attr("data-play", "0"); $(".modetwo[data-index='" + index + "']").attr("data-play", "1"); $(".modetwo[data-index='" + index + "'] div:nth-of-type(2) input").focus(); layui.layer.closeAll(); } //显示作答提示 var showContinueTip = function () { if (pageVar.index >= (pageVar.data.length - 1)) { //LayerTip("按tab键结束听写~~", 1, ".modetwo[data-resindex='" + resindex + "'][data-playindex='" + playindex + "'] div:nth-of-type(2) input", 3000); } else { LayerTip("按tab键可以继续听写哦~~", 1, ".modetwo[data-index='" + pageVar.index + "'] div:nth-of-type(2) input", 3000); } } //取消页面作答状态 var cancelPagePlayStatus = function () { $(".modetwo").attr("data-play", "0"); } //评判作答得分 var getScore = function (currectAns, myAns) { currectAns = $.trim(currectAns.toLowerCase().replace(/\s+/g, " ").replace(/\./g, "")); myAns = $.trim(myAns.toLowerCase().replace(/\s+/g, " ").replace(/\./g, "")); if (currectAns == myAns) { return 100; } return 0; } var markAns = function (WriteS, originS) { if ($.trim(WriteS) == "") { return "未作答"; } var wArr = WriteS.trim().split(" "); var oArr = originS.trim().split(" "); originS = " " + originS + " "; sReturn = "" + HTMLEncode(originS) + " " + "" + HTMLEncode(WriteS) + ""; if (undefined == originS) { return sReturn; // 正确词汇数为0 } else { var arrLine = new Array(); var iNum = 0; // 正确词汇数 var ss = ""; var sn1 = 0, sn2 = -1; var bTwoOrMoreWords = false; for (var i = 0; i < oArr.length; i++) { for (var j = sn1; j < wArr.length; j++) { // 每次从上一次找到词汇的地方开始查找 if (oArr[i] == wArr[j]) { sn2 = j; break; } } if (sn2 < sn1) { // 找不到这个词汇 ss += CompareWriteUnderline(oArr[i]) + " "; } else { // 找得到这个词汇 var mA = originS.split(" " + oArr[i] + " "); // 判断是否有重复词汇 if (mA.length > 2) { bTwoOrMoreWords = true; } iNum += 1; for (var j = sn1; j < sn2; j++) { ss += CompareWriteDecoration(wArr[j]) + " "; } sn1 = sn2 + 1; ss += HTMLEncode(oArr[i]) + " "; } } for (var j = sn1; j < wArr.length; j++) { ss += CompareWriteDecoration(wArr[j]) + " "; } var arrAnd = new Array(); arrAnd.push(iNum); // 正确词汇数 arrAnd.push(ss); // 组合的包含标签的句子 arrLine.push(arrAnd); // 某个词汇含有两个以上并且词汇正确个数低于总词汇数,则进入反序判断 if (bTwoOrMoreWords && iNum < oArr.length) { iNum = 0; // 正确词汇数 ss = ""; sn1 = 0, sn2 = -1; // 原句子词汇反序 for (var i = 0; i < parseInt(oArr.length / 2) ; i++) { var ssss = oArr[i]; oArr[i] = oArr[oArr.length - 1 - i]; oArr[oArr.length - 1 - i] = ssss; } // 听写句子词汇反序 for (var i = 0; i < parseInt(wArr.length / 2) ; i++) { var ssss = wArr[i]; wArr[i] = wArr[wArr.length - 1 - i]; wArr[wArr.length - 1 - i] = ssss; } for (var i = 0; i < oArr.length; i++) { for (var j = sn1; j < wArr.length; j++) { // 每次从上一次找到词汇的地方开始查找 if (oArr[i] == wArr[j]) { sn2 = j; break; } } if (sn2 < sn1) { // 找不到这个词汇 ss = CompareWriteUnderline(oArr[i]) + " " + ss; } else { // 找得到这个词汇 iNum += 1; for (var j = sn1; j < sn2; j++) { ss = CompareWriteDecoration(wArr[j]) + " " + ss; } sn1 = sn2 + 1; ss = HTMLEncode(oArr[i]) + " " + ss; } } for (var j = sn1; j < wArr.length; j++) { ss = CompareWriteDecoration(wArr[j]) + " " + ss; } var arrAnd = new Array(); arrAnd.push(iNum); // 正确词汇数 arrAnd.push(ss); // 组合的包含标签的句子 arrLine.push(arrAnd); } var sStr = arrLine[0][1]; if (arrLine.length > 1) { if (parseInt(arrLine[0][0]) < parseInt(arrLine[1][0])) { sStr = arrLine[1][1]; } } sStr = sStr.replace(/<\/u>\s/ig, " ").replace(/<\/s>\s/ig, " "); return sStr; } } var CompareWriteUnderline = function (text) {// 加下划线 var s1 = "", s2 = ""; if (0 == text.indexOf(" ")) { s1 = " "; } else { s1 = ""; } if (0 == IsReverse(text).indexOf(" ")) { s2 = " "; } else { s2 = ""; } return s1 + HTMLEncode(text.trim()) + s2; } function IsReverse(text) { return text.split('').reverse().join(''); } var CompareWriteDecoration = function (text) {// 加删除线 var s1 = "", s2 = ""; if (0 == text.indexOf(" ")) { s1 = " "; } else { s1 = ""; } if (0 == IsReverse(text).indexOf(" ")) { s2 = " "; } else { s2 = ""; } return s1 + HTMLEncode(text.trim()) + s2; } var closeKLGTool = function () { $("body").KLGTool("destroy"); } var getNowTipTop = function () { var obj = $(".sentence-read-ing")[0]; if (obj.offsetTop < $("body").scrollTop() || obj.offsetTop > ($("body").scrollTop() + $(window).height())) { $("body").animate({ scrollTop: obj.offsetTop }, 50); return 0; } return obj.offsetTop - $("body").scrollTop(); }