gbreplayer.js 38.4 KB
$(function(){function e(t,r){for(var a=0;a<r.text.length;a++)"HTMLplayer"===t.getTextArea().id?(null!==c&&t.clearMarker(c),c=t.setMarker(r.from.line+a,'<span class="text-primary glyphicon glyphicon-pencil"></span>')):"CSSplayer"===t.getTextArea().id?(null!==g&&t.clearMarker(g),g=t.setMarker(r.from.line+a,'<span class="text-primary glyphicon glyphicon-pencil"></span>')):"JSplayer"===t.getTextArea().id&&(null!==p&&t.clearMarker(p),p=t.setMarker(r.from.line+a,'<span class="text-primary glyphicon glyphicon-pencil"></span>')),t.setCursor({line:r.from.line+a,ch:r.from.ch}),3===r.text.length&&""!==r.text[1]&&1===a?t.setSelection({line:r.from.line+a,ch:0}):3===r.text.length&&""!==r.text[2]&&2===a?t.setSelection({line:r.from.line+a,ch:0}):2===r.text.length&&""===r.text[a]&&1===a?t.setSelection({line:r.from.line+a,ch:0}):0==a?t.setSelection({line:r.from.line+a,ch:r.from.ch},{line:r.to.line+a,ch:r.to.ch}):t.setSelection({line:r.from.line+a,ch:0},{line:r.from.line+a,ch:0}),a!==r.text.length-1?t.replaceSelection(r.text[a]+"\n"):t.replaceSelection(r.text[a]);r.next&&e(t,r.next),d.autorun&&d.generateResult(d.htmlplayereditor.getValue(),d.cssplayereditor.getValue(),d.jsplayereditor.getValue())}function t(e){$.jStorage.set("gb_autosave_recording",e)}function r(){var e=$("#startRecordModal");if(e.length){var r=$.jStorage.get("gb_autosave_recording")||[];r.length&&(e.find(".modal-footer").append('<button id="continue_recording" class="btn btn-success"><span class="glyphicon glyphicon-exclamation-sign"></span>&nbsp;继续录制</button>'),e.find("#startrecord_desc").html('<small class="text-primary"><i class="glyphicon glyphicon-exclamation-sign"></i>&nbsp;发现尚未保存的代码录制,需继续录制请点击“继续录制”按钮</div>'))}$("#continue_recording").click(function(){var e=$.jStorage.get("gb_autosave_langid")||0;35!==e&&(10===e?($("#htmlbutton").data("languageid",10).html("JAVA").trigger("click"),d.htmleditor.setOption("mode","text/x-java"),d.htmlplayereditor.setOption("mode","text/x-java")):43===e?($("#htmlbutton").data("languageid",43).html("Objective-c").trigger("click"),d.htmleditor.setOption("mode","text/x-csrc"),d.htmlplayereditor.setOption("mode","text/x-csrc")):11===e?($("#htmlbutton").data("languageid",11).html("C").trigger("click"),d.htmleditor.setOption("mode","text/x-csrc"),d.htmlplayereditor.setOption("mode","text/x-csrc")):82===e?($("#htmlbutton").data("languageid",82).html("C++").trigger("click"),d.htmleditor.setOption("mode","text/x-c++src"),d.htmlplayereditor.setOption("mode","text/x-c++src")):29===e&&($("#htmlbutton").data("languageid",29).html("PHP").trigger("click"),d.htmleditor.setOption("mode","application/x-httpd-php"),d.htmlplayereditor.setOption("mode","application/x-httpd-php")),$("#fontendrun").addClass("hidden"),$("#comprunbtngrp").html('<button id="comprun" type="button" data-style="expand-right" class="btn btn-primary ladda-button" title="编译并运行代码"><span class="glyphicon glyphicon-cog"></span>&nbsp;编译&运行</button>'),$("#ifrcontainer").addClass("hidden"),$("#cmprun-output").removeClass("hidden"),$("#frontenttools").remove(),$("#allbutton").remove(),$("#cssbutton").remove(),$("#jsbutton").remove(),d.autorun=0);var t=$.jStorage.get("gb_autosave_recording")||[];d.records=t,d.continue_recording=1,d.speed=8,$("#autorun").data("autorun")&&$("#autorun").trigger("click"),$("#gbloading").removeClass("hidden"),$("#startRecordModal").modal("hide"),$("#replay").trigger("click")}),$("#select_type_btn").click(function(){$.jStorage.deleteKey("gb_autosave_recording"),setInterval(function(){t(d.records)},5e3)})}function a(e){switch(e){case 10:$("#htmlbutton").data("languageid",10).html("JAVA").trigger("click");break;case 35:$("#htmlbutton").data("languageid",35).html("HTML/CSS/JS").trigger("click");break;case 43:$("#htmlbutton").data("languageid",43).html("Objective-C").trigger("click");break;case 11:$("#htmlbutton").data("languageid",11).html("C").trigger("click");break;case 82:$("#htmlbutton").data("languageid",82).html("C++").trigger("click");break;case 29:$("#htmlbutton").data("languageid",29).html("PHP").trigger("click");break;case 4:$("#htmlbutton").data("languageid",4).html("Python").trigger("click");break;case 40:$("#htmlbutton").data("languageid",40).html("SQL").trigger("click");break;case 117:$("#htmlbutton").data("languageid",117).html("R").trigger("click")}}var i=getQuery("languageid"),o=getQuery("userId"),l=getQuery("role"),n=getQuery("codeReplayId");getQuery("studentReplayId"),getQuery("chapterId");_source=getQuery("source");var s=$(".recording-time");1==l?($(".audio-wrap").hide(),$(".audio-title").hide(),$("#savecorde").show(),$("#upload").hide()):0==l&&$("#upload").show();var d={records:[],excercise_records:[],autorun:1,triggertotal:0,triggeroffset:0,excercise_triggertotal:0,replay_enhancement:1,replay_enhancement_value:250,speed:1,recordtimeoutcontrolls:[],excercise_recordtimeoutcontrolls:[],isgblibreplay:0,continue_recording:0,recording_status:1,recordinit:function(e,t){function r(e){$.ajax({type:"get",url:e,success:function(e){var t=parseInt(e.languageid);a(t),c(t)},error:function(){alert("错误")}})}function c(e){"empty"!==e&&0!=e&&35!=e&&($("#fontendrun").addClass("hidden"),$("#comprunbtngrp").html('<button id="comprun" type="button" data-style="expand-right" class="btn" title="编译并运行代码">&nbsp;编译&运行</button>'),$("#ifrcontainer").addClass("hidden"),$("#cmprun-output").removeClass("hidden"),$("#frontenttools").remove(),$("#allbutton").remove(),$("#cssbutton").remove(),$("#jsbutton").remove(),d.autorun=0)}function g(e){$.ajax({type:"get",url:e,success:function(e){if($("#play_audio").attr("src","http://gxb-file.oss-cn-beijing.aliyuncs.com/"+e.audioUrl),0==l)var e=e.codeRecordList;else if(1==l)var e=e.studentRecordList;d.htmlplayereditor.setValue(""),d.cssplayereditor.setValue(""),d.jsplayereditor.setValue("");for(var t=0;t<e.length;t++)e[t].trigger||(e[t].trigger=0),e[t].changeobj=jQuery.parseJSON(e[t].changeobj);d.records=e,$("#playrecord").addClass("hidden"),$("#play").show(),$("#play").trigger("click")},error:function(){alert("请求错误")}})}function p(){$(window).width()>992&&($("#editorpanel").hasClass("col-md-8")?($("#playcontrolls").children("button").clone(!0).removeClass("hidden").appendTo($("#editorcontrolls")),$("#playcontrolls").find("button").remove()):($("#editorcontrolls").children("button").clone(!0).removeClass("hidden").appendTo($("#playcontrolls")),$("#editorcontrolls").find("button").remove()),$("#playrecord").hasClass("hidden")?($("#playcontrolls").children("button").removeClass("hidden"),$("#editorcontrolls").children("button").removeClass("hidden")):($("#playcontrolls").children("button").addClass("hidden"),$("#editorcontrolls").children("button").addClass("hidden")))}var u=document.getElementById("HTMLeditor"),h=document.getElementById("CSSeditor"),m=document.getElementById("JSeditor");if(e&&(d.isgblibreplay=1),u&&h&&m){this.htmleditor=CodeMirror.fromTextArea(u,{value:"输入HTML代码",mode:"text/html",lineNumbers:!0,smartIndent:!1,onChange:function(e,t){d.recording_status&&d.onChange("html",t),d.autorun&&d.generateResult(d.htmleditor.getValue(),d.csseditor.getValue(),d.jseditor.getValue())},onFocus:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var r=e.getCursor(!1),a=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");a.val(r.line),i.val(r.ch),o.val(r.line+","+r.ch)},onCursorActivity:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var r=e.getCursor(!1),a=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");a.val(r.line),i.val(r.ch),o.val(r.line+","+r.ch)}}),this.csseditor=CodeMirror.fromTextArea(h,{value:"输入CSS代码",mode:"text/css",lineNumbers:!0,smartIndent:!1,onChange:function(e,t){d.recording_status&&d.onChange("css",t),d.autorun&&d.generateResult(d.htmleditor.getValue(),d.csseditor.getValue(),d.jseditor.getValue())},onFocus:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var r=e.getCursor(!1),a=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");a.val(r.line),i.val(r.ch),o.val(r.line+","+r.ch)},onCursorActivity:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var r=e.getCursor(!1),a=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");a.val(r.line),i.val(r.ch),o.val(r.line+","+r.ch)}}),this.jseditor=CodeMirror.fromTextArea(m,{value:"输入Javascript代码",mode:"text/javascript",lineNumbers:!0,smartIndent:!1,matchBrackets:!0,onChange:function(e,t){d.recording_status&&d.onChange("js",t),d.autorun&&d.generateResult(d.htmleditor.getValue(),d.csseditor.getValue(),d.jseditor.getValue())},onFocus:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var r=e.getCursor(!1),a=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");a.val(r.line),i.val(r.ch),o.val(r.line+","+r.ch)},onCursorActivity:function(e){var t=e.getTextArea().id;"HTMLeditor"===t?t="html":"CSSeditor"===t?t="css":"JSeditor"===t&&(t="js"),$("#transcript_editor").text("编辑器:"+t).data("editor",t);var r=e.getCursor(!1),a=$("#linenum"),i=$("#charnum"),o=$("#linechardisplay");a.val(r.line),i.val(r.ch),o.val(r.line+","+r.ch)}});var y=$("#htmlbutton").data("languageid");10===y?this.htmleditor.setOption("mode","text/x-java"):43===y?this.htmleditor.setOption("mode","text/x-csrc"):11===y?this.htmleditor.setOption("mode","text/x-csrc"):82===y?this.htmleditor.setOption("mode","text/x-c++src"):29===y&&this.htmleditor.setOption("mode","application/x-httpd-php"),y>0&&(d.autorun=0)}var f=document.getElementById("HTMLplayer"),v=document.getElementById("CSSplayer"),b=document.getElementById("JSplayer"),C=1;if(f&&v&&b){this.htmlplayereditor=CodeMirror.fromTextArea(f,{mode:"text/html",lineNumbers:!0,readOnly:!0,onChange:function(e,t){0===$("#play").data("status")&&d.autorun&&d.generateResult(d.htmlplayereditor.getValue(),d.cssplayereditor.getValue(),d.jsplayereditor.getValue())},onKeyEvent:function(e,t){var r=$("#recordertab").find("li").not(".clearfix");C&&"keypress"===t.type&&d.htmlplayereditor.getOption("readOnly")&&(r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-exclamation-sign"></span>&nbsp;播放编辑器只读,无法输入字符</div>'}).popover("show"),C=0,setTimeout(function(){r.popover("destroy"),C=1},1500))}}),this.cssplayereditor=CodeMirror.fromTextArea(v,{mode:"text/css",lineNumbers:!0,readOnly:!0,theme:"default gbtags",onChange:function(e,t){0===$("#play").data("status")&&d.autorun&&d.generateResult(d.htmlplayereditor.getValue(),d.cssplayereditor.getValue(),d.jsplayereditor.getValue())},onKeyEvent:function(e,t){var r=$("#recordertab").find("li").not(".clearfix");C&&"keypress"===t.type&&d.htmlplayereditor.getOption("readOnly")&&(r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-exclamation-sign"></span>&nbsp;播放编辑器只读,无法输入字符</div>'}).popover("show"),C=0,setTimeout(function(){r.popover("destroy"),C=1},1500))}}),this.jsplayereditor=CodeMirror.fromTextArea(b,{mode:"text/javascript",lineNumbers:!0,readOnly:!0,matchBrackets:!0,theme:"default gbtags-dark",onChange:function(e,t){0===$("#play").data("status")&&d.autorun&&d.generateResult(d.htmlplayereditor.getValue(),d.cssplayereditor.getValue(),d.jsplayereditor.getValue())},onKeyEvent:function(e,t){var r=$("#recordertab").find("li").not(".clearfix");C&&"keypress"===t.type&&d.htmlplayereditor.getOption("readOnly")&&(r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-exclamation-sign"></span>&nbsp;播放编辑器只读,无法输入字符</div>'}).popover("show"),C=0,setTimeout(function(){r.popover("destroy"),C=1},1500))}});var y=$("#htmlbutton").data("languageid");10===y?this.htmlplayereditor.setOption("mode","text/x-java"):43===y?this.htmlplayereditor.setOption("mode","text/x-csrc"):11===y?this.htmlplayereditor.setOption("mode","text/x-csrc"):82===y?this.htmlplayereditor.setOption("mode","text/x-c++src"):29===y&&this.htmlplayereditor.setOption("mode","application/x-httpd-php"),y>0&&(d.autorun=0)}$("#selecttype").find("button").click(function(){$(this).addClass("btn-primary").data("selected",1).siblings().data("selected",0).removeClass("btn-primary")}),document.URL.indexOf("index.htm")>=0&&(35==i?$("#htmlbutton").data("languageid",35).attr("data-original-title","HTML/CSS/JS").html("HTML/CSS/JS").trigger("click"):10==i?($("#htmlbutton").data("languageid",10).html("java").trigger("click"),d.htmleditor.setOption("mode","text/x-java")):43==i?(d.htmleditor.setValue("/* Objective-c基础代码 */\n"),$("#htmlbutton").data("languageid",43).attr("data-original-title","Objective-c").html("Objective-c").trigger("click"),d.htmleditor.setOption("mode","text/x-csrc")):11==i?(d.htmleditor.setValue("/* c基础代码 */\n"),$("#htmlbutton").data("languageid",11).attr("data-original-title","C").html("C").trigger("click"),d.htmleditor.setOption("mode","text/x-csrc")):1==i||41==i||82==i?(d.htmleditor.setValue("/* cpp基础代码 */\n"),$("#htmlbutton").data("languageid",82).attr("data-original-title","C++").html("C++").trigger("click"),d.htmleditor.setOption("mode","text/x-c++src")):4==i?$("#htmlbutton").data("languageid",4).attr("data-original-title","Python").html("Python").trigger("click"):40==i?$("#htmlbutton").data("languageid",40).attr("data-original-title","SQL").html("SQL").trigger("click"):117==i&&$("#htmlbutton").data("languageid",117).attr("data-original-title","R").html("R").trigger("click"));var x=$("#htmlbutton").data("languageid");if($.jStorage.set("gb_autosave_langid",x),document.URL.indexOf("player.htm")>=0){if(0==l){var w=gxb_api+"/programming/codeReplay/"+n+"/api";r(w)}else if(1==l){var w=gxb_api+"/programming/student/studentReplay/"+n+"/api";r(w)}}else c(i);setTimeout(function(){$("#htmlbutton").trigger("click")},50);var k;$("#play").click(function(){var e=$("#play_audio");$("#replaydone").data("readonly")||$("#replaydone").trigger("click"),$("#recordertab a:eq(1)").tab("show");var t=$(this).data("status");if(document.URL.indexOf("player.html")>=0&&(t?(e[0].pause(),$("#play").removeClass("play-stop").addClass("replay-corder").attr("data-original-title","播放"),console.log(t)):(k=(new Date).getTime(),console.log(k),$("#play").show(),e[0].play(),$("#play").removeClass("replay-corder").addClass("play-stop").attr("data-original-title","暂停"),console.log(t))),t){var r=d.records,a=(new Date).getTime();console.log(a),console.log("++++++++++++++++++++");for(var i=0;i<r.length;i++)0==i?(d.stopInterval=a-k,console.log("***********************************")):(0===r[i].trigger&&(d.stopInterval=parseInt(r[i].intervaltime)-(parseInt(a)-parseInt(r[i-1].playTime))),console.log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"));console.log("--------------------------------"),console.log(k),console.log(r),console.log(a),console.log(d);for(var o=d.recordtimeoutcontrolls,i=0;i<o.length;i++)clearTimeout(o[i]);d.recordtimeouts=[]}else{var l=d.records,n="",s=l[0].intervaltime;console.log(l);for(var i=0;i<l.length;i++){if(0===l[i].trigger){var c=null,g=parseInt(l[i].intervaltime);d.replay_enhancement_value;d.stopInterval?(s=d.stopInterval,console.log(s),a=null):s=0!=i?parseInt(s)+g:g,c=setTimeout(d.changeValueCallback(l[i]),s/d.speed),d.recordtimeoutcontrolls.push(c)}n=l[i].editor}console.log(l)}$(this).data("status",!t)}),$("#startRecordModal").length>0&&$("#startRecordModal").modal({backdrop:"static",keyboard:!1}),$(".audio-play").click(function(){var e=$(this).attr("data");if(timer.init(s),1==e){0==l&&recorder.play(audio),$(this).attr("data",0).attr("title","播放录音"),$(this).css("background-color","#F0F3F5");var t=$("#play"),r=d.records;d.triggertotal=0;for(var a=0;a<r.length;a++)r[a].trigger=0;for(var a=0;a<d.recordtimeoutcontrolls.length;a++)clearTimeout(d.recordtimeoutcontrolls[a]);d.recordtimeoutcontrolls=[],d.htmlplayereditor.setValue(""),d.cssplayereditor.setValue(""),d.jsplayereditor.setValue(""),t.data("status",0),$("#play").trigger("click")}else 0==e&&($(this).attr("data",1).attr("title","预览录制"),$(this).css("background-color"," #7FDE94"))}),$("#selectedspeed").text("x"+d.speed).data("speed",d.speed),$(".speed").click(function(){var e=$(this),t=e.data("speed");e.addClass("btn-primary").siblings().removeClass("btn-primary"),d.speed=t,1==$("#play").data("status")&&$("#play").trigger("click")}),$("#preparespeed").click(function(){1==$("#play").data("status")&&$("#play").trigger("click")}),$("#speedlist a").click(function(e){e.preventDefault();var t=$(this).data("speed");$("#selectedspeed").text("x"+t).data("speed",t),d.speed=t,$("#playrecord").hasClass("hidden")&&0==$("#play").data("status")&&$("#play").trigger("click"),$.cookie("gb.replay.speed",t,{expires:30,path:"/"})}),$("#playrecord").click(function(){if(document.URL.indexOf("player.html")>=0,$(window).width()>992){var e=$("#tutorialinfopanel"),t=($("#editorpanel"),e.data("size"));t?($("#resizetutorial").trigger("click"),$("#resizeeditors").trigger("click")):t||$("#resizeeditors").trigger("click")}if(j.slider("option","disabled",!1),$(this).popover("destroy"),$(this).find("span").toggleClass("glyphicon-cloud-download").toggleClass("glyphicon-play"),0==l){var r=gxb_api+"/programming/codeReplay/"+n+"/api";g(r)}else if(1==l){var r=gxb_api+"/programming/student/studentReplay/"+n+"/api";g(r)}}),$("#resizeprevieweditor").click(function(){$("#editorpanel").toggleClass("col-md-8").toggleClass("col-md-12"),$("#previewpanel").toggleClass("col-md-4").toggleClass("hidden"),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small")}),$("#resizepreview").click(function(){$("#previewpanel").toggleClass("col-md-4").toggleClass("col-md-12"),$("#editorpanel").toggleClass("col-md-4").toggleClass("hidden"),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small")}),$("#resizetutorialpreview").click(function(){var e=$("#previewpanel"),t=$("#tutorialinfopanel"),r=$("#editorpanel"),a=t.data("size"),i=r.data("size");e.hasClass("col-md-4")?(t.addClass("hidden"),r.addClass("hidden")):e.hasClass("col-md-12")&&(a?(t.removeClass("hidden").removeClass("col-md-3").addClass("col-md-8"),r.addClass("hidden")):a||(t.removeClass("hidden").removeClass("col-md-8").addClass("col-md-3"),r.removeClass("hidden").removeClass("col-md-8").addClass("col-md-5")),i&&(r.removeClass("hidden").removeClass("col-md-5").addClass("col-md-8"),t.addClass("hidden"))),e.toggleClass("col-md-4").toggleClass("col-md-12"),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small"),p()}),$("#resizetutorial").click(function(){var e=$("#tutorialinfopanel"),t=$("#editorpanel"),r=e.data("size");t.data("size");r?(e.remove("hidden").removeClass("col-md-8").addClass("col-md-3"),t.addClass("col-md-5").removeClass("hidden").removeClass("col-md-8"),e.data("size",0),t.data("size",0)):r||(e.remove("hidden").addClass("col-md-8").removeClass("col-md-3"),t.removeClass("col-md-5").addClass("hidden").removeClass("col-md-8"),e.data("size",1),t.data("size",0)),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small")}),$("#resizeeditors").click(function(){var e=$("#tutorialinfopanel"),t=$("#editorpanel"),r=(e.data("size"),t.data("size"));r?(t.remove("hidden").removeClass("col-md-8").addClass("col-md-5"),e.addClass("col-md-3").removeClass("hidden").removeClass("col-md-8"),t.data("size",0),e.data("size",0)):r||(t.remove("hidden").addClass("col-md-8").removeClass("col-md-5"),e.removeClass("col-md-3").addClass("hidden").removeClass("col-md-8"),t.data("size",1),e.data("size",0)),$(this).find("span").toggleClass("glyphicon-resize-full").toggleClass("glyphicon-resize-small"),p(),$("#playrecord").popover("hide")}),$("#editorwrapper").find("button").click(function(){$this=$(this),$this.addClass("btn-primary").siblings().removeClass("btn-primary");var e=$this.data("editorname");if("html"===e){$("#recordertab a#relatedcode").trigger("click");var t=$("#HTMLeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(d.codemirrorheight).siblings().height(0);var t=$("#HTMLplayer").next(".CodeMirror");t.height(d.codemirrorheight).siblings().height(0),$("#transcript_editor").text("编辑器:"+e).data("editor",e)}else if("css"===e){$("#recordertab a#relatedcode").trigger("click");var t=$("#CSSeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(d.codemirrorheight).siblings().height(0);var t=$("#CSSplayer").next(".CodeMirror");t.height(d.codemirrorheight).siblings().height(0),$("#transcript_editor").text("编辑器:"+e).data("editor",e)}else if("js"===e){$("#recordertab a#relatedcode").trigger("click");var t=$("#JSeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(d.codemirrorheight).siblings().height(0);var t=$("#JSplayer").next(".CodeMirror");t.height(d.codemirrorheight).siblings().height(0),$("#transcript_editor").text("编辑器:"+e).data("editor",e)}else $("#recordertab a#relatedcode").trigger("click"),$(window).width()>992?($("#recordzone").find(".CodeMirror").height(d.codemirrorheight/3).find(".CodeMirror-gutter-text").removeClass("cmgutter"),$("#replayzone").find(".CodeMirror").height(d.codemirrorheight/3).find(".CodeMirror-gutter-text").removeClass("cmgutter")):($("#recordzone").find(".CodeMirror").height(d.codemirrorheight).find(".CodeMirror-gutter-text").removeClass("cmgutter"),$("#replayzone").find(".CodeMirror").height(d.codemirrorheight).find(".CodeMirror-gutter-text").removeClass("cmgutter"));"undefined"!=typeof d.htmleditor&&"undefined"!=typeof d.csseditor&&"undefined"!=typeof d.jseditor&&(d.htmleditor.refresh(),d.csseditor.refresh(),d.jseditor.refresh()),document.URL.indexOf("rtreplayerpreview")<0?document.URL.indexOf("index.htm")>=0||document.URL.indexOf("rtrecordtutorial.htm")>=0||$("#recordertab a:first").tab("show"):$("#recordertab a:eq(1)").tab("show"),(document.URL.indexOf("rtwidget-replayerpreview")>0||document.URL.indexOf("rtwidgetinterview-replayerpreview")>0)&&$("#recordertab a:eq(1)").tab("show")}),$("#cancel").click(function(){$(window).unbind("beforeunload"),window.close()}),$("#savecorde").click(function(){$("#savemsg").addClass("hidden"),$("#uploading2").css("display","inline-block"),$(this).prop("disable",!0);var e="课程名",t="回放说明",r=getQuery("languageid")||35;saveformat=$("#saveformat").find(".active").data("saveformat")||5,pickup=0;var a={replaytitle:e,replaydesc:t,pickup:pickup,languageid:r,saveformat:saveformat},i=$("#previewcoverimg").data("demoimg");void 0===i&&(i="placeholder.png"),a.image=i,a.userid=o,$("#publishnow").is(":checked")?a.deleted=0:a.deleted=-1,$("#interviewtool").is(":checked")&&(a.deleted=-2);var n=0;$("#eventtagid").is(":checked")&&(n=$("#eventtagid").data("tagid")),a.html=d.htmleditor.getValue(),a.css=d.csseditor.getValue(),a.javascript=d.jseditor.getValue(),a.audioUrl=$(".audio-url").val(),a.deleteFlag=1;for(var s=[],c=0;c<d.records.length;c++){var g={intervaltime:d.records[c].intervaltime,editor:d.records[c].editor,changeobj:JSON.stringify(d.records[c].changeobj)};s.push(g)}s.deleteFlag=1;var p=$(".recording-time").val();a.totaltime=parseInt(p),0==l?(a.codeRecordList=s,$.ajax({type:"post",url:gxb_api+"/programming/codeReplay/api",data:JSON.stringify(a),dataType:"json",contentType:"application/json",success:function(e){console.log(e),$(window).unbind("beforeunload");var t={programId:e.codeReplayId,programLanguageName:e.languageName,programAudioLength:p};$(".upload-tip").hide(),$("#cancel").prop("disabled",!1),window.opener.postMessage(t,_source),window.close()},error:function(){$(".upload-tip").hide(),alert("代码保存失败重新保存")}})):1==l&&(a.studentRecordList=s,$.ajax({type:"post",url:gxb_api+"/programming/student/studentReplay/api",data:JSON.stringify(a),dataType:"json",contentType:"application/json",success:function(e){console.log(e),$(window).unbind("beforeunload");var t={programId:e.studentReplayId,programLanguageName:e.languageName,programAudioLength:p};$(".upload-tip").hide(),$("#cancel").prop("disabled",!1),window.opener.postMessage(t,_source),window.close()},error:function(){$(".upload-tip").hide(),alert("代码保存失败重新保存")}}))}),$("#toggle_replay_enhancement").click(function(){$(this).toggleClass("btn-primary").toggleClass("btn-default"),d.replay_enhancement=!d.replay_enhancement}),$("#autorun").click(function(){var e=$(this),t=e.data("autorun");1===t?$("#runnow").prop("disabled",!1).toggleClass("btn-success").toggleClass("btn-default"):$("#runnow").prop("disabled",!0).toggleClass("btn-success").toggleClass("btn-default"),e.data("autorun",t?0:1),d.autorun=!d.autorun,$("#runnow").trigger("click")}),1===d.autorun?$("#runnow").prop("disabled",!0).removeClass("btn-success").addClass("btn-default"):$("#runnow").prop("disabled",!1).addClass("btn-success").removeClass("btn-default"),$("#runnow").click(function(){return"undefined"!=typeof d.htmleditor&&"undefined"!=typeof d.csseditor&&"undefined"!=typeof d.jseditor?(d.generateResult(d.htmleditor.getValue(),d.csseditor.getValue(),d.jseditor.getValue()),!1):void("undefined"!=typeof d.htmlplayereditor&&"undefined"!=typeof d.cssplayereditor&&"undefined"!=typeof d.jsplayereditor&&d.generateResult(d.htmlplayereditor.getValue(),d.cssplayereditor.getValue(),d.jsplayereditor.getValue()))}),$("#comprunbtngrp").on("click","#comprun",function(){var e=Ladda.create(this);e.start();var t="undefined"!=typeof d.htmleditor&&d.htmleditor.getValue()||"undefined"!=typeof d.htmlplayereditor&&d.htmlplayereditor.getValue(),r=$("#htmlbutton").data("languageid"),a=$("#input").val()||"",i={code:t,langid:r,input:a};$.ajax({type:"post",url:gxb_api+"/submit/submitCode/api",data:JSON.stringify(i),dataType:"json",contentType:"application/json",success:function(t){t.result?($("#cmpinfo").html('<p class="text-warning">'+t.cmpinfo.replace(/\n/g,"<br />")+"</p>"),$("#stderr").html('<p class="text-danger">'+t.stderr.replace(/\n/g,"<br />")+"</p>"),$("#output").html('<p class="text-success">'+t.output.replace(/\n/g,"<br />")+"</p>"),t.cmpinfo.length?$('#cmprun-tabs a[href="#cmpinfo"]').tab("show"):t.stderr.length?$('#cmprun-tabs a[href="#stderr"]').tab("show"):t.output.length&&$('#cmprun-tabs a[href="#output"]').tab("show"),t.cmpinfo.length||$("#cmpinfo").prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 编译已成功</p>'),t.stderr.length||$("#stderr").prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 无输出错误</p>'),t.output.length||$("#output").prepend('<p class="alert alert-warning"><i class="glyphicon glyphicon-exclamation-sign"></i> 代码编译错误或者运行相关功能受限制</p>')):($("#cmpinfo").html('<p class="alert alert-danger"><i class="glyphicon glyphicon-exclamation-sign"></i> 云端编译超时,请稍后重新尝试</p>'),$('#cmprun-tabs a[href="#cmpinfo"]').tab("show")),e.stop()},error:function(){e.stop(),alert("错误")}})});var j=$(".replayprogress");j.slider({}).slider("option","disabled",!0),j.on("sliderstop",function(e,t){if($("#playrecord").hasClass("hidden")){j.slider("option","disabled",!1);var r=Math.ceil(t.value),a=Math.ceil(d.records.length*(r/100));d.triggeroffset=a,$("#speedlist a").first().trigger("click"),$("#autorun").data("autorun")&&$("#autorun").trigger("click"),$("#replay").trigger("click")}}),$("#readonly").click(function(){var e=$(this),t=$(this).data("readonly"),r=$("#recordertab").find("li").first();e.addClass("disabled"),t?(r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-success"><span class="glyphicon glyphicon-hand-left"></span>&nbsp;代码播放编辑器“<b>已启用</b>”</div>'}).popover("show"),d.htmlplayereditor.setOption("readOnly",!1),d.cssplayereditor.setOption("readOnly",!1),d.jsplayereditor.setOption("readOnly",!1),e.data("readonly",0).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-danger").toggleClass("btn-success")):(r.popover({placement:"right",container:"body",html:!0,content:'<div class="text-success"><span class="glyphicon glyphicon-hand-left"></span>&nbsp;代码播放编辑器“<b>目前只读</b>”</div>'}).popover("show"),d.htmlplayereditor.setOption("readOnly",!0),d.cssplayereditor.setOption("readOnly",!0),d.jsplayereditor.setOption("readOnly",!0),e.data("readonly",1).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-danger").toggleClass("btn-success")),setTimeout(function(){r.popover("destroy"),e.removeClass("disabled")},1500)}),$("#mobilereplaydone").click(function(){$("#replaydone").trigger("click")}),$("#mobiledonenext").click(function(){$("#donenext").trigger("click")}),$("#showtutorialinfo").click(function(){$("#mobiletutorialdetails").slideToggle()}),$("#replaydone").click(function(){var e=$(this),t=$(this).data("readonly"),r=$("#codechallenges"),a=$("#recordertab").find("li").first();e.addClass("disabled"),t?a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-success"><span class="glyphicon glyphicon-hand-left"></span>&nbsp;代码播放编辑器“<b>已启用</b>”</div>'}).popover("show"):a.popover({placement:"right",container:"body",html:!0,content:'<div class="text-primary"><span class="glyphicon glyphicon-hand-left"></span>&nbsp;代码播放编辑器“<b>目前只读</b>”</div>'}).popover("show"),setTimeout(function(){a.popover("destroy"),e.removeClass("disabled")},1500),t?(d.htmlplayereditor.setOption("readOnly",!1),d.cssplayereditor.setOption("readOnly",!1),d.jsplayereditor.setOption("readOnly",!1),e.data("readonly",0).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-success").toggleClass("btn-primary")):(d.htmlplayereditor.setOption("readOnly",!0),d.cssplayereditor.setOption("readOnly",!0),d.jsplayereditor.setOption("readOnly",!0),e.data("readonly",1).find("span").toggleClass("glyphicon-ban-circle").toggleClass("glyphicon-pencil").end().toggleClass("btn-success").toggleClass("btn-primary")),r.toggleClass("tutorialexcercise_hide").toggleClass("tutorialexcercise_show");$("#trybymyselfttips").closest(".panel-body")}),$("#readcode").click(function(){$("#donenext").removeClass("disabled");var e=$("#trybymyselfttips").closest(".panel-body");if($("#trybymyselfttips").removeClass("tutorialexcercise_hide").addClass("tutorialexcercise_show"),$("#replaydone").length&&scrollToElement(e,$("#donenext")),$("#replaydone").trigger("click"),$(window).width()>992&&$("#resizetutorial").trigger("click"),$(this).removeClass("btn-success").addClass("btn-default").addClass("disabled"),$("#resizetutorial").removeClass("hidden"),0!==$("#htmlbutton").data("languageid")){var t=$("#HTMLeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(d.codemirrorheight).siblings().height(0);var t=$("#HTMLplayer").next(".CodeMirror");t.height(d.codemirrorheight).siblings().height(0)}d.htmlplayereditor.refresh(),d.cssplayereditor.refresh(),d.jsplayereditor.refresh()}),$("#readanswer").click(function(){$("#donenext").removeClass("disabled");var e=$("#trybymyselfttips").closest(".panel-body");if($("#trybymyselfttips").removeClass("tutorialexcercise_hide").addClass("tutorialexcercise_show"),$("#replaydone").length&&scrollToElement(e,$("#donenext")),$("#replaydone").trigger("click"),$(window).width()>992&&$("#resizetutorial").trigger("click"),$(this).removeClass("btn-success").addClass("btn-default").addClass("disabled").addClass("hidden"),$("#resizetutorial").removeClass("hidden"),$("#playpanel").removeClass("hidden"),0!==$("#htmlbutton").data("languageid")){var t=$("#HTMLeditor").next(".CodeMirror");t.find(".CodeMirror-gutter-text").addClass("cmgutter"),t.height(d.codemirrorheight).siblings().height(0);var t=$("#HTMLplayer").next(".CodeMirror");t.height(d.codemirrorheight).siblings().height(0);
}d.htmlplayereditor.refresh(),d.cssplayereditor.refresh(),d.jsplayereditor.refresh()}),this.resizeWindow($("#ifrcontainer").find("#resultiframe")),$(window).bind("beforeunload",function(){return"确认立刻退出?  请确保已录制的代码回放以保存,以防回放数据丢失"}),function(){function e(e){var r="visible",a="hidden",i={focus:r,focusin:r,pageshow:r,blur:a,focusout:a,pagehide:a};e=e||window.event,e.type in i?document.body.className=i[e.type]:document.body.className=this[t]?"hidden":"visible","hidden"===document.body.className&&1==$("#play").data("status")&&$("#play").trigger("click")}var t="hidden";t in document?document.addEventListener("visibilitychange",e):(t="mozHidden")in document?document.addEventListener("mozvisibilitychange",e):(t="webkitHidden")in document?document.addEventListener("webkitvisibilitychange",e):(t="msHidden")in document?document.addEventListener("msvisibilitychange",e):"onfocusin"in document?document.onfocusin=document.onfocusout=e:window.onpageshow=window.onpagehide=window.onfocus=window.onblur=e}(),setTimeout(function(){$(window).width()>992&&$("#resizetutorial").trigger("click"),$("#gbloading").addClass("hidden")},600)},resizeWindow:function(e){var t=function(){$("#tutorialpanel").css({height:""}).find(".panel-body").css({"overflow-y":"scroll"});var t=$("#resultpanel").offset();$("#recordpanel").height($(window).height()-t.top-22-68),$("#resultpanel").height($(window).height()-t.top-22),$("#tutorialpanel > .panel-body").height($(window).height()-t.top-22-2*$("#tutorialpanel > .panel-heading").outerHeight()-4),t=$("#resultpanel").find(".panel-body:not(.hidden)").offset(),e.height($(window).height()-t.top-22-30),$("#resultoutput").height($(window).height()-t.top-22-30);var r=$("#recordzone").offset(),a=$("#replayzone").offset(),i="";i=a.top?a.top:null!=r?r.top:0,d.codemirrorheight=$(window).height()-i-24-15,"undefined"!=typeof d.htmleditor&&"undefined"!=typeof d.csseditor&&"undefined"!=typeof d.jseditor&&(d.htmleditor.refresh(),d.csseditor.refresh(),d.jseditor.refresh())};$(window).resize(function(){$("#editorwrapper").find("button").removeClass("btn-primary").find("#allbutton").addClass("btn-primary"),t(),$("#playrecord").popover("hide")}).load(function(){t()}),t()},onChange:function(e,t){var r=100,a=(new Date).getTime();0==l&&(r=a-d.record_startime);var i={intervaltime:r,editor:e,changeobj:t,trigger:0,playTime:""};d.records.push(i),d.record_startime=a},changeValueCallback:function(r,a,i){var o=r.changeobj,l=r.editor;return function(){d.active_editor!==l?$("#"+l+"button").trigger("click"):d.active_editor=l,"html"===l?e(d.htmlplayereditor,o):"css"===l?e(d.cssplayereditor,o):"js"===l&&e(d.jsplayereditor,o),r.trigger=1,r.playTime=(new Date).getTime(),console.log(r),a?d.excercise_triggertotal+=1:d.triggertotal+=1;var n="0%",s=0;if(a?(s=Math.ceil(d.excercise_triggertotal/d.excercise_records.length*100),n=s+"%"):i||(s=Math.ceil(d.triggertotal/d.records.length*100),n=s+"%",$("#replayprogressbar").css({width:n}).find("span").html(n),$(".slider").slider("option","now",s)),d.triggertotal===d.records.length&&!a){$("#play").data("status",0).attr("title","播放").addClass("btn-success").removeClass("btn-danger").removeClass("infinite").find("span").addClass("glyphicon-play").removeClass("glyphicon-pause"),$("#recordertab a:first").tab("show"),$("#donenext").removeClass("disabled"),$("#mobiledonenext").removeClass("disabled"),$(window).width()>992&&$("#editorpanel").hasClass("col-md-8")&&$("#resizeeditors").trigger("click"),$("#replayprogressbar").addClass("animated flash");var c=$("#trybymyselfttips").closest(".panel-body");if($("#trybymyselfttips").removeClass("tutorialexcercise_hide").addClass("tutorialexcercise_show"),$("#replaydone").length&&scrollToElement(c,$("#donenext")),$("#replaydone").addClass("animated bounce"),$("#replaydone").data("readonly")&&$("#replaydone").trigger("click"),d.triggeroffset=0,$("#readonly").length>0&&setTimeout(function(){$("#readonly").trigger("click")},1500),d.continue_recording){var g=d.jsplayereditor.getValue(),p=d.cssplayereditor.getValue(),u=d.htmlplayereditor.getValue();d.recording_status=0,d.htmleditor.setValue(u),d.csseditor.setValue(p),d.jseditor.setValue(g),d.jseditor.refresh(),d.csseditor.refresh(),d.htmleditor.refresh(),d.recording_status=1,d.continue_recording=0,d.speed=1,$("#gbloading").addClass("hidden"),$("#autorun").data("autorun")||$("#autorun").trigger("click"),setInterval(function(){t(d.records)},5e3)}}if(d.excercise_triggertotal===d.excercise_records.length){var h=$(".replayprogress");h.slider("option","disabled",!1),$("#excerciselist .ineedautocodehelp").data("status",0).attr("title","播放").find("span").addClass("glyphicon-play-circle").removeClass("glyphicon-stop")}}},generateResult:function(e,t,r){$("#ifrcontainer").html($("<iframe />",{id:"resultiframe",frameBorder:"0",style:"width:100%","z-index":"-1000"}));var a=$("#ifrcontainer").find("#resultiframe");if($(window).width()>992){var i=$("#resultpanel").find(".panel-body:not(.hidden)").offset();a.height($(window).height()-i.top-22-30),$("#resultoutput").height($(window).height()-i.top-22-30)}else a.height(450);var o,l=$("#resultiframe")[0];o=l.contentDocument?l.contentDocument:l.contentWindow?l.contentWindow.document:l.document;var n=0,s=e.toLowerCase();s.toLowerCase().indexOf("</body>")>=0&&s.toLowerCase().indexOf("<body>")>=0&&(n=1),n?(e=e.replace(/\<link href="style.css" rel="stylesheet"\/>/g,"<style>"+t+"</style>"),e=e.replace(/\<link rel="stylesheet" href="style.css"\/>/g,"<style>"+t+"</style>"),e=e.replace(/\<script src="script.js"\>\<\/script\>/g,"<script>"+r+"</script>"),result=e):result="<!DOCTYPE HTML><html><head><style>"+t+"</style></head><body>"+e+'<script type="text/javascript">'+r+"</script></body></html>",o.open(),o.writeln(result),o.close()}};document.URL.indexOf("index.htm")>=0&&0==l?HZRecorder.get(function(e){var t=0;$(".tip").show(),$(".start-btn").click(function(){$(".tip").hide(),$("#countdown").find("img").attr("src","img/dribbble-1.gif");var a=setInterval(function(){t+=1,3==t&&($(".record-before").hide(),clearInterval(a),$("#countdown").css("display","none"),$("#countdown").find("img").attr("src",""),d.record_startime=(new Date).getTime(),recorder=e,recorder.start(),d.recordinit(),r(),timer.init(s))},1e3)})}):($(".record-before").hide(),d.recordinit(),r(),timer.init(s));var c=null,g=null,p=null;$(".record-back").click(function(){$(window).unbind("beforeunload"),window.close()}),$("#coverpreview").on("click",".removeimg",function(){$(this).hide().next().remove()}),document.URL.indexOf("index.htm")>=0||document.URL.indexOf("rtrecordtutorial.htm")>=0||$(window).unbind("beforeunload")});