Commit d3a9e73ec4b7f562ae3b9f56c61c27e98e1b9f0a

Authored by ykxie
1 parent 35de1d9d

fix bug

src/live/js/student.js
... ... @@ -35,6 +35,22 @@ $(function() {
35 35 // socket.emit('programming.content', teacher.getValue());
36 36 });
37 37  
  38 + // 选中 input
  39 + socket.on('select.menu', function(msg) {
  40 + console.log('select.menu ---- ' + msg);
  41 + $('#runtimeArgus').addClass('effect-2');
  42 + });
  43 +
  44 + // 标准输入
  45 + socket.on('stdin.value', function(msg) {
  46 + console.log('stdin.value ---- ' + msg);
  47 + $('#runtimeArgus').val(msg)
  48 + });
  49 +
  50 +
  51 +
  52 +
  53 +
38 54 socket.on('programming.compile', function(msg) {
39 55 console.log('-------------');
40 56 console.log(msg);
... ... @@ -75,19 +91,20 @@ $(function() {
75 91  
76 92  
77 93  
78   - $('#CompileBtn').on('click', function(){
79   - console.log('编译' + teacher.getValue());
80   - var el = document.querySelector('#CompileBtn')
  94 + $('#studCompile').on('click', function(){
  95 +
  96 + var el = document.querySelector('#studCompile')
81 97 var l = Ladda.create(el);
82 98 l.start();
83 99  
84 100 var input = $('#input').val() || '';
85   - var code = teacher.getValue();
  101 + var code = student.getValue();
86 102 var compileData = {
87 103 code: code,
88 104 langid: 10,
89 105 input: input
90 106 }
  107 +
91 108 $.ajax({
92 109 type: "post",
93 110 url: gxb_api + "/submit/submitCode/api",
... ... @@ -97,7 +114,7 @@ $(function() {
97 114 success: function(data) {
98 115 console.log(data);
99 116 l.remove();
100   - compileResult(data);
  117 + studCompileResult(data);
101 118 },
102 119 error: function(){
103 120 l.stop();
... ...
src/live/js/teacher.js
... ... @@ -39,7 +39,20 @@ $(function(){
39 39 operations: [] // 存储录制时的动作对象
40 40 }
41 41  
  42 + // 选中 input 事件
  43 + $('#runtimeArgus').focus(function(){
  44 + console.log('------getValue')
  45 + socket.emit('select.menu');
  46 + })
42 47  
  48 + // 输入事件
  49 + $('#runtimeArgus').bind('input propertychange', function() {
  50 + console.log($('#runtimeArgus').val());
  51 + socket.emit('stdin.value', $('#runtimeArgus').val());
  52 + });
  53 + // $("#runtimeArgus").change(function(){
  54 +
  55 + // });
43 56  
44 57  
45 58  
... ... @@ -50,10 +63,10 @@ $(function(){
50 63 events: function(){
51 64 var _this = this;
52 65 $('#liveStart').on('click', function(){ liveStartFun(); });
53   - $('#liveEnd').on('click', function(){ });
  66 + $('#liveEnd').on('click', function(){ liveEndFun(); });
54 67  
55 68 $('#liveConfirm').on('click', function(){ liveConfirmFun(); });
56   - $('#liveCancel').on('click', function(){ liveCancelFun() });
  69 + $('#liveCancel').on('click', function(){ liveCancelFun(); });
57 70  
58 71 $('#liveSave').on('click', function(){ });
59 72 $('#liveOut').on('click', function(){ liveOutFun(); });
... ... @@ -74,15 +87,18 @@ $(function(){
74 87 }
75 88  
76 89 // 禁止关闭浏览器
77   - // window.onbeforeunload = function(){
78   - // return ('你确定要结束教学吗?请确认保存内容');
79   - // }
  90 + window.onbeforeunload = function(){
  91 + // return ('你确定要结束教学吗?请确认保存内容');
  92 + $('#liveStart').hide();
  93 + }
80 94  
81 95 LiveTeacher.init();
82 96  
83 97 // 开始录制
84 98 function liveStartFun(){
85   - $('.tip-wrap').show();
  99 + // $('.tip-wrap').show();
  100 + $('#liveStart').hide();
  101 + $('#liveEnd').show();
86 102 }
87 103  
88 104 // 确认开始录制
... ... @@ -92,6 +108,13 @@ $(function(){
92 108 console.log(IDELive.record_startime);
93 109 }
94 110  
  111 + // 结束录制
  112 + function liveEndFun(){
  113 + // $('#liveStart').hide();
  114 + $('#liveEnd').hide();
  115 + $('#liveSave').removeAttr('disabled')
  116 + }
  117 +
95 118 // 取消开始录制
96 119 function liveCancelFun(){
97 120 $('.tip-wrap').hide();
... ... @@ -149,6 +172,7 @@ $(function(){
149 172 // window.onbeforeunload = function(){
150 173 // return ('你确定要结束教学吗?')
151 174 // }
  175 + window.close()
152 176 }
153 177  
154 178  
... ...
src/live/js/utils.js
... ... @@ -92,4 +92,38 @@ function compileResult(data){
92 92 $('#cmpinfo').html('<p class="alert alert-danger"><i class="glyphicon glyphicon-exclamation-sign"></i> 云端编译超时,请稍后重新尝试</p>');
93 93 $('#cmprun-tabs a[href="#cmpinfo"]').tab('show');
94 94 }
  95 +}
  96 +
  97 +// 学生编译结果
  98 +function studCompileResult(data){
  99 + if(data.result){
  100 +
  101 + $('#studCmpinfo').html('<p class="text-warning">' + data.cmpinfo.replace(/\n/g, "<br />") + "</p>");
  102 + $('#studStderr').html('<p class="text-danger">' + data.stderr.replace(/\n/g, "<br />") + "</p>");
  103 + $('#studOutput').html('<p class="text-success">' + data.output.replace(/\n/g, "<br />") + "</p>");
  104 +
  105 + if(data.cmpinfo.length){
  106 + $('#cmprun-tabs a[href="#studCmpinfo"]').tab('show');
  107 + }else if(data.stderr.length){
  108 + $('#cmprun-tabs a[href="#studStderr"]').tab('show');
  109 + }else if(data.output.length){
  110 + $('#cmprun-tabs a[href="#studOutput"]').tab('show');
  111 + }
  112 +
  113 + if(!data.cmpinfo.length){
  114 + $('#studCmpinfo').prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 编译已成功</p>');
  115 + }
  116 +
  117 + if(!data.stderr.length){
  118 + $('#studStderr').prepend('<p class="alert alert-success"><i class="glyphicon glyphicon-ok-sign"></i> 无输出错误</p>');
  119 + }
  120 +
  121 + if(!data.output.length){
  122 + $('#studOutput').prepend('<p class="alert alert-warning"><i class="glyphicon glyphicon-exclamation-sign"></i> 代码编译错误或者运行相关功能受限制</p>');
  123 + }
  124 +
  125 + }else{
  126 + $('#studCmpinfo').html('<p class="alert alert-danger"><i class="glyphicon glyphicon-exclamation-sign"></i> 云端编译超时,请稍后重新尝试</p>');
  127 + $('#cmprun-tabs a[href="#studCmpinfo"]').tab('show');
  128 + }
95 129 }
96 130 \ No newline at end of file
... ...
src/live/student.html
... ... @@ -8,6 +8,7 @@
8 8 <link rel="stylesheet" href="../js/codemirror-5.25.0/lib/codemirror.css">
9 9 <link rel="stylesheet" href="../js/ladda/ladda-themeless.min.css">
10 10 <link rel="stylesheet" href="style/main.css">
  11 + <link rel="stylesheet" href="style/student.css">
11 12 <style>
12 13  
13 14 .teacher-live, .student-work{
... ... @@ -56,12 +57,6 @@
56 57 <button class="btn compile-btn" id="CompileBtn">
57 58 <span class="ladda-label">编译运行</span>
58 59 </button>
59   - <a id="full-screen" class="fb">
60   - <img src="../img/full-screen-icon.svg" alt="">
61   - </a>
62   - <a id="back-screen" class="fb" style="display: none;">
63   - <img src="../img/full-screen-icon.svg" alt="">
64   - </a>
65 60 </div>
66 61 </div>
67 62  
... ... @@ -80,10 +75,9 @@
80 75 </div>
81 76  
82 77 <!-- 录制控制区 -->
83   - <div class="live-ctrl">
84   -
85   - </div>
  78 + <!-- <div class="live-ctrl"></div> -->
86 79 </div>
  80 + <div class="mask"></div>
87 81 </div>
88 82 <div class="student-work">
89 83 <div class="live-wrap">
... ... @@ -99,12 +93,44 @@
99 93  
100 94 <!-- 编译操作区 -->
101 95 <!-- 运行结果区 -->
  96 + <div class="live-console-wrap">
  97 + <div id="toolbar">
  98 + <!-- Nav tabs -->
  99 + <ul class="nav nav-tabs result-tabs need-compile" role="tablist" id="cmprun-tabs">
  100 + <li class="active"><a href="#studStdin" role="tab" data-toggle="tab" class="text">标准</a></li>
  101 + <li><a href="#studCmpinfo" role="tab" data-toggle="tab" class="text">编译</a></li>
  102 + <li><a href="#studStderr" role="tab" data-toggle="tab" class="text">错误</a></li>
  103 + <li><a href="#studOutput" role="tab" data-toggle="tab" class="text">结果</a></li>
  104 + </ul>
  105 + <div class="pull-right func">
  106 + <button class="btn compile-btn" id="studCompile">
  107 + <span class="ladda-label">编译运行</span>
  108 + </button>
  109 + <a id="full-screen" class="fb">
  110 + <img src="../img/full-screen-icon.svg" alt="">
  111 + </a>
  112 + <a id="back-screen" class="fb" style="display: none;">
  113 + <img src="../img/full-screen-icon.svg" alt="">
  114 + </a>
  115 + </div>
  116 + </div>
102 117  
  118 + <!-- Tab panes -->
  119 + <div id="resultoutput" class="tab-content need-compile">
  120 + <div class="tab-pane active padall15" id="studStdin">
  121 + <div class="stdin-wrap">
  122 + <input class="effect-2" id="runtimeArgus" type="text" placeholder="标准输入">
  123 + <span class="focus-border"></span>
  124 + </div>
  125 + </div>
  126 + <div class="tab-pane padall15" id="studCmpinfo"></div>
  127 + <div class="tab-pane padall15" id="studStderr"></div>
  128 + <div class="tab-pane padall15" id="studOutput"></div>
  129 + </div>
  130 + </div>
103 131  
104 132 <!-- 录制控制区 -->
105   - <div class="live-ctrl">
106   -
107   - </div>
  133 + <!-- <div class="live-ctrl"></div> -->
108 134 </div>
109 135 </div>
110 136 </div>
... ...
src/live/style/main.css
... ... @@ -20,11 +20,14 @@ button{
20 20 text-align: center;
21 21 border-bottom: 1px solid #c1c1c1;
22 22 padding: 8px 0;
  23 + background-image: -webkit-linear-gradient(left, #1FB6FF 0%, #62DCF5 100%);
  24 + background-image: linear-gradient(to right, #1FB6FF 0%, #62DCF5 100%);
23 25 }
24 26  
25 27 .header h1 {
26 28 font-size: 18px;
27 29 margin: 0;
  30 + color: #FFF;
28 31 }
29 32  
30 33 .live-code {
... ... @@ -36,6 +39,7 @@ button{
36 39  
37 40 .live-code .CodeMirror {
38 41 height: 100%;
  42 + border-right: 1px solid #eee;
39 43 }
40 44  
41 45 .live-console-wrap {
... ... @@ -105,11 +109,11 @@ button{
105 109 width: 100%;
106 110 }
107 111  
108   -#stdin:focus {
  112 +.stdin-wrap:focus {
109 113 outline: none;
110 114 }
111 115  
112   -#stdin input[type="text"] {
  116 +.stdin-wrap input[type="text"] {
113 117 font: 15px/24px "Lato", Arial, sans-serif;
114 118 color: #333;
115 119 width: 100%;
... ... @@ -119,13 +123,13 @@ button{
119 123 outline: none;
120 124 }
121 125  
122   -#stdin .effect-2 {
  126 +.stdin-wrap .effect-2 {
123 127 border: 0;
124 128 padding: 12px 0 1px;
125 129 border-bottom: 1px solid #ccc;
126 130 }
127 131  
128   -#stdin .effect-2 ~ .focus-border {
  132 +.stdin-wrap .effect-2 ~ .focus-border {
129 133 position: absolute;
130 134 bottom: 0;
131 135 left: 50%;
... ... @@ -135,7 +139,7 @@ button{
135 139 transition: 1s;
136 140 }
137 141  
138   -#stdin .effect-2:focus ~ .focus-border {
  142 +.stdin-wrap .effect-2:focus ~ .focus-border {
139 143 width: 100%;
140 144 transition: 1s;
141 145 left: 0;
... ...
src/live/style/student.css 0 → 100644
  1 +.mask{
  2 + position: absolute;
  3 + width: 100%;
  4 + height: 100%;
  5 + top: 0;
  6 + background-color: rgba(255,255,255,0);
  7 + z-index: 9999;
  8 +}
  9 +
  10 +.student .live-console-wrap{
  11 + height: 260px;
  12 + bottom: 0;
  13 + border-right: 1px solid #f7f7f7;
  14 + border-left: 1px solid #f7f7f7;
  15 +}
  16 +.student .teacher-live{
  17 + border-right: 6px solid #FFF;
  18 +}
  19 +.student .live-code{
  20 + border-right: 1px solid #f7f7f7;
  21 +}
... ...
src/live/style/teacher.css 0 → 100644
  1 +#liveEnd{
  2 + display: none;
  3 +}
0 4 \ No newline at end of file
... ...
src/live/teacher.html
... ... @@ -9,6 +9,7 @@
9 9 <link rel="stylesheet" href="../js/codemirror-5.25.0/lib/codemirror.css">
10 10 <link rel="stylesheet" href="../js/ladda/ladda-themeless.min.css">
11 11 <link rel="stylesheet" href="style/main.css">
  12 + <link rel="stylesheet" href="style/teacher.css">
12 13  
13 14 <script>
14 15 var gxb_api = "https://restful.gaoxiaobang.com";
... ... @@ -73,7 +74,7 @@
73 74 <button class="btn compile-btn" id="liveEnd">结束</button>
74 75 </div>
75 76 <div class="save-cancel">
76   - <button class="btn compile-btn" id="liveSave">保存</button>
  77 + <button class="btn compile-btn" id="liveSave" disabled="disabled">保存</button>
77 78 <button class="btn compile-btn" id="liveOut">关闭</button>
78 79 </div>
79 80 </div>
... ...