Commit 08286742064a6d1e7c6a5fb06e3866e054cd7ff5

Authored by ykxie
1 parent 6fc2f36b

fix play compile

src/css/ide.css
... ... @@ -287,3 +287,12 @@ html, body {
287 287 top: 50%;
288 288 left: 50%;
289 289 transform: translate(-50%, -50%); }
  290 +
  291 +#playFooter {
  292 + height: 60px;
  293 + width: 100%;
  294 + z-index: 999;
  295 + background-color: #23383f;
  296 + padding: 10px 24px; }
  297 + #playFooter #componentWrapper {
  298 + width: 100%; }
... ...
src/css/main.css
... ... @@ -209,3 +209,12 @@ html, body {
209 209 top: 50%;
210 210 left: 50%;
211 211 transform: translate(-50%, -50%); }
  212 +
  213 +#playFooter {
  214 + height: 60px;
  215 + width: 100%;
  216 + z-index: 999;
  217 + background-color: #23383f;
  218 + padding: 10px 24px; }
  219 + #playFooter #componentWrapper {
  220 + width: 100%; }
... ...
src/gxb-ide/CodingEditer.js
... ... @@ -76,6 +76,10 @@
76 76 */
77 77 playCoding: function(){
78 78 CodingEditer.resetCodeMirrorValue(1)
  79 + var iterm = new Iterm();
  80 + iterm.compileResult()
  81 + console.log('------------------CodingEditer.records')
  82 + console.log(CodingEditer.records)
79 83 var playbackrecord = CodingEditer.records;
80 84 var starttime = 0;
81 85 $('#recordertab a:eq(1)').tab('show');
... ... @@ -315,20 +319,19 @@
315 319 record.trigger = 1; //标记已运行
316 320 record.playTime = new Date().getTime(); // 播放开始时间
317 321  
318   - // var iterm = new Iterm();
319   - // var resultData = {
320   - // status: record.status || 200,
321   - // compilerInfo: record.compilerInfo || '',
322   - // content: record.content || '',
323   - // error: record.error || '',
324   - // code: record.code || ''
325   - // };
326   - // console.log("================== _role ======================");
327   - // console.log(record);
328   - // console.log(_role);
329   - // if (record.code == 0 || record.code == 1) {
330   - // iterm.compileResult(resultData, ecord.runtimeArgus)
331   - // }
  322 +
  323 + console.log("================== _role ======================");
  324 + if (record.code == 0 || record.code == 1) {
  325 + var iterm = new Iterm();
  326 + var resultData = {
  327 + status: record.status || 200,
  328 + compilerInfo: record.compilerInfo || '',
  329 + content: record.content || '',
  330 + error: record.error || '',
  331 + code: record.code || ''
  332 + };
  333 + iterm.compileResult(resultData)
  334 + }
332 335  
333 336 CodingEditer.triggertotal += 1;
334 337  
... ...
src/gxb-ide/ToolBox.js
... ... @@ -72,6 +72,7 @@
72 72 $('#start-recording').hide()
73 73 $('#stop-recording').show()
74 74 var _this = this;
  75 + _this.readOnly(0)
75 76 if (typeof _this.options.startCallback == 'function') {
76 77 console.log('startCallback');
77 78 _this.options.startCallback();
... ... @@ -87,11 +88,9 @@
87 88 Hourglass.stopTimer()
88 89 var _this = this;
89 90 _this.readOnly(1)
90   - console.log('-===============******************' + _this.options.role)
91 91 // 老师端录制停止录音
92 92 if (_this.options.role == 0) {
93 93 _this.stopAudio();
94   - console.log('-===============******************')
95 94 }
96 95 // 回调
97 96 if (typeof _this.options.stopCallback == 'function') {
... ... @@ -121,8 +120,6 @@
121 120 var _this = this;
122 121 if (_this.options.role == 0) {
123 122 HZRecorder.get(function(rec) {
124   - console.log('-============================================')
125   - console.log(rec);
126 123 recorder = rec;
127 124 recorder.start();
128 125 CodingEditer.initRecodesValue()
... ...
src/index.html
... ... @@ -18,7 +18,7 @@
18 18 <link href="css/recording.css" rel="stylesheet">
19 19  
20 20 <script>
21   - var gxb_api = "https://restful1.gaoxiaobang.com";
  21 + var gxb_api = "https://restful.gaoxiaobang.com";
22 22 // var gxb_api = "http://192.168.80.236:8080"
23 23  
24 24 </script>
... ...
src/js/player.js
1 1 $(function(){
2   - $('#full-screen').click(function(){
3   - var fullData = $(this).data('full');
4   - launchFullScreen(document.getElementById("player"));
5   - $('#back-screen').show();
6   - $('#full-screen').hide();
  2 + var _languageid = getQuery('languageid');
  3 + var _userId = getQuery('userId');
  4 + var _role = getQuery('role');
  5 + var _codeReplayId = getQuery('codeReplayId');
  6 + var player = $.AudioPlayer;
  7 +
  8 + $("title").html("C 语言");
  9 + // new一个基本IDE结构
  10 + var ide = new GxbIde({
  11 + el: '#folder',
  12 + languageid: parseInt(_languageid)
7 13 });
8 14  
9   - $('#back-screen').click(function(){
10   - exitFullscreen();
11   - $('#full-screen').show();
12   - $('#back-screen').hide();
13   - })
14   - // 找到支持的方法, 使用需要全屏的 element 调用
15   - function launchFullScreen(element) {
16   - if (element.requestFullscreen) {
17   - element.requestFullscreen();
18   - } else if (element.mozRequestFullScreen) {
19   - element.mozRequestFullScreen();
20   - } else if (element.webkitRequestFullscreen) {
21   - element.webkitRequestFullscreen();
22   - } else if (element.msRequestFullscreen) {
23   - element.msRequestFullscreen();
24   - }
  15 + // 编译控制台
  16 + var iterm = new Iterm({
  17 + userId: _userId,
  18 + languageId: _languageid
  19 + });
  20 +
  21 + console.log(_role)
  22 + if (_role == 0) {
  23 + playUrl = gxb_api + "/programming/codeReplay/" + _codeReplayId + "/api";
  24 + getCodeData(playUrl)
  25 + } else if (_role == 1) {
  26 + playUrl = gxb_api + "/programming/student/studentReplay/" + _codeReplayId + "/api";
  27 + getCodeData(playUrl)
  28 + }
  29 +
  30 +
  31 +
  32 +
  33 + // 获取code
  34 + function getCodeData(url){
  35 + console.log(url)
  36 + $.ajax({
  37 + type: "get",
  38 + url: url,
  39 + dataType: "json",
  40 + contentType: "application/json",
  41 + success: function(res) {
  42 + console.log('++++++++--------');
  43 + console.log(res)
  44 + var coderecords = res.codeRecordList
  45 + var audioUrl = res.audioUrl;
  46 +
  47 + initTrigger(coderecords)
  48 + AudioPlayer(audioUrl)
  49 + },
  50 + error: function(error) {
  51 + console.log(error)
  52 + }
  53 + });
25 54 }
26 55  
27   - function exitFullscreen() {
28   - if (document.exitFullscreen) {
29   - document.exitFullscreen();
30   - } else if (document.mozExitFullScreen) {
31   - document.mozExitFullScreen();
32   - } else if (document.webkitExitFullscreen) {
33   - document.webkitExitFullscreen();
  56 + // 初始化tigger
  57 + function initTrigger(records){
  58 + var records = records
  59 + for (var i = 0, leg = records.length; i < leg; i++) {
  60 + if (!records[i].trigger) records[i].trigger = 0;
  61 + records[i].changeobj = jQuery.parseJSON(records[i].changeobj);
  62 + records[i].treefile = jQuery.parseJSON(records[i].treefile);
34 63 }
  64 + CodingEditer.records = records;
  65 + }
  66 +
  67 + // 初始化播放音频控制条
  68 + function AudioPlayer(audioUrl){
  69 + player.init({
  70 + container: '#audioWrap',
  71 + source: "https://gxb-file.oss-cn-beijing.aliyuncs.com" + audioUrl,
  72 + imagePath: '../js/audioPlayer/image',
  73 + debuggers: false,
  74 + allowSeek: false,
  75 + playCallback: function() { // 播放
  76 + console.log('++++++++');
  77 + CodingEditer.playCoding();
  78 + },
  79 + pauseCallback: function() { // 暂停
  80 + },
  81 + seekedCallback: function() { // 拖拽
  82 + },
  83 + endedCallback: function() { // 结束播放
  84 + playEnd()
  85 + }
  86 + });
35 87 }
36 88  
37 89  
... ...
src/js/player1.js 0 → 100644
  1 +$(function(){
  2 + $('#full-screen').click(function(){
  3 + var fullData = $(this).data('full');
  4 + launchFullScreen(document.getElementById("player"));
  5 + $('#back-screen').show();
  6 + $('#full-screen').hide();
  7 + });
  8 +
  9 + $('#back-screen').click(function(){
  10 + exitFullscreen();
  11 + $('#full-screen').show();
  12 + $('#back-screen').hide();
  13 + })
  14 + // 找到支持的方法, 使用需要全屏的 element 调用
  15 + function launchFullScreen(element) {
  16 + if (element.requestFullscreen) {
  17 + element.requestFullscreen();
  18 + } else if (element.mozRequestFullScreen) {
  19 + element.mozRequestFullScreen();
  20 + } else if (element.webkitRequestFullscreen) {
  21 + element.webkitRequestFullscreen();
  22 + } else if (element.msRequestFullscreen) {
  23 + element.msRequestFullscreen();
  24 + }
  25 + }
  26 +
  27 + function exitFullscreen() {
  28 + if (document.exitFullscreen) {
  29 + document.exitFullscreen();
  30 + } else if (document.mozExitFullScreen) {
  31 + document.mozExitFullScreen();
  32 + } else if (document.webkitExitFullscreen) {
  33 + document.webkitExitFullscreen();
  34 + }
  35 + }
  36 +
  37 +
  38 +})
0 39 \ No newline at end of file
... ...
src/player.html
... ... @@ -17,7 +17,7 @@
17 17 <link rel="stylesheet" href="js/audioPlayer/theme.default.css">
18 18  
19 19 <script>
20   - var gxb_api = "https://restful1.gaoxiaobang.com";
  20 + var gxb_api = "https://restful.gaoxiaobang.com";
21 21 // var gxb_api = "https://restful.gaoxiaobang.com"
22 22 </script>
23 23  
... ...
src/scss/main.scss
... ... @@ -277,6 +277,28 @@ html, body{
277 277 }
278 278 }
279 279  
  280 +// player
  281 +#playFooter{
  282 + height: 60px;
  283 + width: 100%;
  284 + z-index: 999;
  285 + background-color: #23383f;
  286 + padding: 10px 24px;
  287 +
  288 + #componentWrapper{
  289 + width: 100%;
  290 + }
  291 +}
  292 +
  293 +
  294 +
  295 +
  296 +
  297 +
  298 +
  299 +
  300 +
  301 +
280 302  
281 303  
282 304  
... ...
src/v1.1/index.html
... ... @@ -50,7 +50,7 @@
50 50 <script src="../js/gbdebug/mode/clike/clike.js"></script>
51 51  
52 52 <script>
53   - var gxb_api = "https://restful1.gaoxiaobang.com";
  53 + var gxb_api = "https://restful.gaoxiaobang.com";
54 54 // var gxb_api = "http://192.168.80.223:8080"
55 55 $(function(){
56 56 $('.my-button').click(function(){
... ...
src/v1.1/index1.html
... ... @@ -20,7 +20,7 @@
20 20 <link rel="stylesheet" href="../js/zTree_v3-3.5.27/css/zTreeStyle/zTreeStyle.css">
21 21  
22 22 <script>
23   - var gxb_api = "https://restful1.gaoxiaobang.com";
  23 + var gxb_api = "https://restful.gaoxiaobang.com";
24 24 // var gxb_api = "http://192.168.80.223:8080"
25 25  
26 26 </script>
... ...
src/v1.1/player1.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 + <meta charset="UTF-8">
  5 + <title>JAVA</title>
  6 + <link rel="stylesheet" href="../css/responsive/css/bootstrap.min.css">
  7 + <link href="../css/codemirror.css" rel="stylesheet">
  8 + <link href="../css/reset.css" rel="stylesheet">
  9 + <link rel="stylesheet" href="../js/audioPlayer/theme.default.css">
  10 + <link rel="stylesheet" href="../js/zTree_v3-3.5.27/css/zTreeStyle/zTreeStyle.css">
  11 +
  12 + <link href="../common/fonts/iconfont.css" rel="stylesheet">
  13 +
  14 + <link href="../css/cm-theme/gbtags.css" rel="stylesheet">
  15 + <link href="../css/cm-theme/eclipse.css" rel="stylesheet">
  16 + <link href="../css/cm-theme/gbtags-dark.css" rel="stylesheet">
  17 +
  18 + <link rel="stylesheet" href="../gxb-ide/toolBox.css">
  19 + <link rel="stylesheet" href="../css/ide.css">
  20 +
  21 + <script src="../js/jquery-1.7.1.js"></script>
  22 + <script src="../js/bootstrap.js"></script>
  23 + <script src="../js/codemirror.js"></script>
  24 + <script type="text/javascript" src="../js/zTree_v3-3.5.27/js/jquery.ztree.core.js"></script>
  25 + <script type="text/javascript" src="../js/zTree_v3-3.5.27/js/jquery.ztree.exedit.js"></script>
  26 + <script src="../js/emmet.js"></script>
  27 +
  28 + <link rel="stylesheet" href="../js/ladda/ladda-themeless.min.css">
  29 + <script src="../js/ladda/spin.js"></script>
  30 + <script src="../js/ladda/ladda.js"></script>
  31 +
  32 + <script src="../js/util/Hourglass.js"></script>
  33 + <script src="../js/util/util.js"></script>
  34 +
  35 + <script src="../js/05-util.js"></script>
  36 + <script src="../js/03-http.js"></script>
  37 +
  38 + <script src="../js/recorder/Myna.js"></script>
  39 + <script src="../gxb-ide/Dir.js"></script>
  40 + <script src="../gxb-ide/CodingEditer.js"></script>
  41 + <script src="../gxb-ide/Iterm.js"></script>
  42 + <script src="../gxb-ide/Ide.js"></script>
  43 + <script src="../gxb-ide/ToolBox.js"></script>
  44 + <script type="text/javascript" src="../js/audioPlayer/jQuery.AudioPlayer.js"></script>
  45 +
  46 + <script src="../js/player.js"></script>
  47 +
  48 + <script src="../js/gbdebug/mode/xml/xml.js"></script>
  49 + <script src="../js/gbdebug/mode/javascript/javascript.js"></script>
  50 + <script src="../js/gbdebug/mode/css/css.js"></script>
  51 + <script src="../js/gbdebug/mode/htmlmixed/htmlmixed.js"></script>
  52 + <script src="../js/gbdebug/mode/clike/clike.js"></script>
  53 +
  54 + <script>
  55 + var gxb_api = "https://restful.gaoxiaobang.com";
  56 + // var gxb_api = "http://192.168.80.223:8080"
  57 + </script>
  58 +
  59 + <style>
  60 + .ladda-button[data-style=expand-right] .ladda-spinner{
  61 + right: 0;
  62 + }
  63 + .ladda-button[data-style=expand-right][data-loading]{
  64 + padding-right: 32px;
  65 + }
  66 + .ladda-button .ladda-spinner{
  67 + top: 0;
  68 + }
  69 + </style>
  70 +
  71 +
  72 +</head>
  73 +<body>
  74 + <div class="programing">
  75 + <!-- 控制条 -->
  76 + <div class="record-title">
  77 + <ul id="recordertab" class="nav nav-tabs pull-left">
  78 + <li class="active">
  79 + <a href="#recordzone" data-toggle="tab">
  80 + <i class="icon iconfont icon-suspend"></i>课程录制区
  81 + </a>
  82 + </li>
  83 + <li>
  84 + <a href="#replayzone" data-toggle="tab">
  85 + <i class="icon iconfont icon-yulan"></i>课程预览区
  86 + </a>
  87 + </li>
  88 + </ul>
  89 + </div>
  90 +
  91 + <!-- 录制区 -->
  92 + <div class="record-wrap">
  93 + <!-- 录制区 -->
  94 + <div class="gxb-record">
  95 + <div id="ideDir">
  96 + <div class="tree-header">目录</div>
  97 + <ul id="folder" class="ztree"></ul>
  98 + <div id="handleLM"></div>
  99 + </div>
  100 +
  101 + <div id="ideEditer" class="tab-content">
  102 + <div id="recordzone" class="tab-pane active"></div>
  103 + <div id="replayzone" class="tab-pane"></div>
  104 + </div>
  105 + </div>
  106 + <div class="pause-shodow" style="display: none;">
  107 + <div class="compile-loading">
  108 + <img src="../img/loading.png" alt="">
  109 + </div>
  110 + <div class="compile-reslut" style="display: none;">
  111 + <div class="tip-header">
  112 + <span>成功获取编译运行结果</span>
  113 + </div>
  114 + <div class="tip-content">
  115 + <p>保存编译结果后,播放到此处会在运行区域直接显示结果。需要保存结果后继续录制吗?</p>
  116 + </div>
  117 + <div class="tip-footer">
  118 + <button class="btn btn-success btn-sm" id="save_compile">保存并继续录制</button>
  119 + <button class="btn btn-danger btn-sm" id="cancel_compile">不保存继续录制</button>
  120 + </div>
  121 + </div>
  122 + </div>
  123 + </div>
  124 +
  125 + <!-- 控录制录制 -->
  126 + <div class="record-toolbox">
  127 + <!-- 运行结果区 -->
  128 + <div class="console-wrap">
  129 + <div id="toolbar">
  130 + <!-- Nav tabs -->
  131 + <ul class="nav nav-tabs result-tabs need-compile" role="tablist" id="cmprun-tabs">
  132 + <li class="active"><a href="#stdin" role="tab" data-toggle="tab" class="text">标准</a></li>
  133 + <li><a href="#cmpinfo" role="tab" data-toggle="tab" class="text">编译</a></li>
  134 + <li><a href="#stderr" role="tab" data-toggle="tab" class="text">错误</a></li>
  135 + <li><a href="#output" role="tab" data-toggle="tab" class="text">结果</a></li>
  136 + </ul>
  137 + <div class="pull-right func">
  138 + <a class="btn btn-success" id="CompileBtn">
  139 + <span class="ladda-label">编译运行</span>
  140 + </a>
  141 + <a id="full-screen" class=""><i class="icon iconfont icon-quanping1"></i></a>
  142 + <!-- <a id="back-screen" class=""><i class="icon iconfont icon-quanping1"></i></a> -->
  143 + </div>
  144 + </div>
  145 +
  146 + <!-- Tab panes -->
  147 + <div id="resultoutput" class="tab-content need-compile">
  148 + <div class="tab-pane active padall15" id="stdin">
  149 + <input type="text" class="form-control" id="runtimeArgus" placeholder="标准输入">
  150 + </div>
  151 + <div class="tab-pane padall15" id="cmpinfo"></div>
  152 + <div class="tab-pane padall15" id="stderr"></div>
  153 + <div class="tab-pane padall15" id="output"></div>
  154 + </div>
  155 + <div class="panel-body no-compile" id="ifrcontainer">
  156 + <iframe id="resultiframe" frameBorder="0" width="100%"></iframe>
  157 + </div>
  158 + </div>
  159 + <input type="hidden" class="audio-url" value="">
  160 + <div id="playFooter">
  161 + <div class="" id="audioWrap">
  162 + <button class="play-code" style="display: none;">
  163 + <i class="icon iconfont icon-play"></i>
  164 + </button>
  165 + </div>
  166 + </div>
  167 + </div>
  168 +
  169 + <!-- 准备开始 -->
  170 + <div id="countdown" style="display: none;">
  171 + <img src="" alt="">
  172 + </div>
  173 + <!-- 保存提示 -->
  174 + <div class="upload-tip" style="display: none;">
  175 + <img src="../img/upload_tip.png" alt="">
  176 + </div>
  177 +
  178 + </div>
  179 +
  180 +</body>
  181 +</html>
0 182 \ No newline at end of file
... ...