| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- $(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(/(<br[^>]*>)+/gi, "</p><p>");
- pageVar.klgArr = klg.split("|");
- pageVar.klgcodeArr = klgcode.split("|");
- //替换所有的换行符
- words = words.replace(/\r\n/g, "<br>");
- words = words.replace(/\n/g, "<br>");
- words = $.MarkKnowledge("<p>" + words + "</p>", klg.split("|"));
- var reg = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/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, "<br>");
- words = words.replace(/\n/g, "<br>");
- $("#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("<div class='TextMarkFly' style='right:" + tagR + "px;top:" + tagT + "px;width:" + tagW + "px;height:" + tagH + "px;'>" + knowlegde + "</div>");
- $(".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(/(<br[^>]*>)+/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 "<span style='color:#999;'>未作答</span>";
- }
- var wArr = WriteS.trim().split(" ");
- var oArr = originS.trim().split(" ");
- originS = " " + originS + " ";
- sReturn = "<u>" + HTMLEncode(originS) + " </u>" + "<s>" + HTMLEncode(WriteS) + "</s>";
- 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<u>/ig, " ").replace(/<\/s>\s<s>/ig, " ");
- return sStr;
- }
- }
- var CompareWriteUnderline = function (text) {// 加下划线
- var s1 = "", s2 = "";
- if (0 == text.indexOf(" ")) {
- s1 = "<u> ";
- }
- else {
- s1 = "<u>";
- }
- if (0 == IsReverse(text).indexOf(" ")) {
- s2 = "</u> ";
- }
- else {
- s2 = "</u>";
- }
- 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 = "<s> ";
- }
- else {
- s1 = "<s>";
- }
- if (0 == IsReverse(text).indexOf(" ")) {
- s2 = "</s> ";
- }
- else {
- s2 = "</s>";
- }
- 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();
- }
|