Commit e81a6b61d715b91a49bee1212fb4fe64d346f7d6
1 parent
f853514a
add compile run and save
Showing
5 changed files
with
232 additions
and
43 deletions
src/css/ide.css
| ... | ... | @@ -176,7 +176,7 @@ html, body { |
| 176 | 176 | .record-toolbox #resultoutput { |
| 177 | 177 | height: 204px; |
| 178 | 178 | overflow: auto; } |
| 179 | - .record-toolbox #compileBtn { | |
| 179 | + .record-toolbox #teacherCompileBtn, .record-toolbox #studentCompileBtn { | |
| 180 | 180 | background-image: -webkit-linear-gradient(left, #1FB6FF 0%, #62DCF5 100%); |
| 181 | 181 | background-image: linear-gradient(to right, #1FB6FF 0%, #62DCF5 100%); |
| 182 | 182 | -webkit-transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important; |
| ... | ... | @@ -215,3 +215,38 @@ html, body { |
| 215 | 215 | z-index: 99; |
| 216 | 216 | margin: 2px 8px; |
| 217 | 217 | border-radius: 50%; } |
| 218 | + | |
| 219 | +.pause-shodow { | |
| 220 | + position: absolute; | |
| 221 | + top: 0; | |
| 222 | + z-index: 999; | |
| 223 | + width: 100%; | |
| 224 | + height: 100%; | |
| 225 | + background-color: rgba(0, 0, 0, 0.4); } | |
| 226 | + .pause-shodow img { | |
| 227 | + position: absolute; | |
| 228 | + top: 15%; | |
| 229 | + left: 50%; | |
| 230 | + transform: translate(-50%); } | |
| 231 | + .pause-shodow .compile-reslut .btn { | |
| 232 | + margin-right: 8px; } | |
| 233 | + | |
| 234 | +.compile-reslut, .re-reslut { | |
| 235 | + position: absolute; | |
| 236 | + height: 200px; | |
| 237 | + width: 400px; | |
| 238 | + background-color: #FFF; | |
| 239 | + top: 15%; | |
| 240 | + left: 50%; | |
| 241 | + transform: translate(-50%); } | |
| 242 | + .compile-reslut .tip-header, .compile-reslut .tip-footer, .re-reslut .tip-header, .re-reslut .tip-footer { | |
| 243 | + width: 100%; | |
| 244 | + padding: 8px 8px; | |
| 245 | + background-color: #F5F6FA; } | |
| 246 | + .compile-reslut .tip-content, .re-reslut .tip-content { | |
| 247 | + padding: 40px; | |
| 248 | + line-height: 1.7; } | |
| 249 | + .compile-reslut .tip-footer, .re-reslut .tip-footer { | |
| 250 | + position: absolute; | |
| 251 | + bottom: 0; | |
| 252 | + text-align: right; } | ... | ... |
src/css/main.css
| ... | ... | @@ -98,7 +98,7 @@ html, body { |
| 98 | 98 | .record-toolbox #resultoutput { |
| 99 | 99 | height: 204px; |
| 100 | 100 | overflow: auto; } |
| 101 | - .record-toolbox #compileBtn { | |
| 101 | + .record-toolbox #teacherCompileBtn, .record-toolbox #studentCompileBtn { | |
| 102 | 102 | background-image: -webkit-linear-gradient(left, #1FB6FF 0%, #62DCF5 100%); |
| 103 | 103 | background-image: linear-gradient(to right, #1FB6FF 0%, #62DCF5 100%); |
| 104 | 104 | -webkit-transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important; |
| ... | ... | @@ -137,3 +137,38 @@ html, body { |
| 137 | 137 | z-index: 99; |
| 138 | 138 | margin: 2px 8px; |
| 139 | 139 | border-radius: 50%; } |
| 140 | + | |
| 141 | +.pause-shodow { | |
| 142 | + position: absolute; | |
| 143 | + top: 0; | |
| 144 | + z-index: 999; | |
| 145 | + width: 100%; | |
| 146 | + height: 100%; | |
| 147 | + background-color: rgba(0, 0, 0, 0.4); } | |
| 148 | + .pause-shodow img { | |
| 149 | + position: absolute; | |
| 150 | + top: 15%; | |
| 151 | + left: 50%; | |
| 152 | + transform: translate(-50%); } | |
| 153 | + .pause-shodow .compile-reslut .btn { | |
| 154 | + margin-right: 8px; } | |
| 155 | + | |
| 156 | +.compile-reslut, .re-reslut { | |
| 157 | + position: absolute; | |
| 158 | + height: 200px; | |
| 159 | + width: 400px; | |
| 160 | + background-color: #FFF; | |
| 161 | + top: 15%; | |
| 162 | + left: 50%; | |
| 163 | + transform: translate(-50%); } | |
| 164 | + .compile-reslut .tip-header, .compile-reslut .tip-footer, .re-reslut .tip-header, .re-reslut .tip-footer { | |
| 165 | + width: 100%; | |
| 166 | + padding: 8px 8px; | |
| 167 | + background-color: #F5F6FA; } | |
| 168 | + .compile-reslut .tip-content, .re-reslut .tip-content { | |
| 169 | + padding: 40px; | |
| 170 | + line-height: 1.7; } | |
| 171 | + .compile-reslut .tip-footer, .re-reslut .tip-footer { | |
| 172 | + position: absolute; | |
| 173 | + bottom: 0; | |
| 174 | + text-align: right; } | ... | ... |
src/gxb-ide/Iterm.js
| 1 | 1 | ;(function(window){ |
| 2 | - var template = '<div class="upload-tip" style="display: none;"><img src="../img/upload_tip.png" alt=""></div>' | |
| 3 | 2 | |
| 4 | 3 | function Iterm(){ |
| 5 | 4 | this.initIterm.apply(this, arguments); |
| 6 | - } | |
| 5 | + } | |
| 7 | 6 | |
| 8 | 7 | Iterm.prototype = { |
| 9 | 8 | constructor: Iterm, |
| ... | ... | @@ -20,51 +19,106 @@ |
| 20 | 19 | }, |
| 21 | 20 | events: function(){ |
| 22 | 21 | var _this = this; |
| 23 | - $('#compileBtn').on('click', function(){ _this.compileMode(); }) | |
| 22 | + $('#teacherCompileBtn').on('click', function(){ _this.teacherCompile(); }) | |
| 23 | + $('#studentCompileBtn').on('click', function(){ _this.studentCompile(); }) | |
| 24 | + $('#save_compile').on('click', function(){ _this.saveCompile(); }) | |
| 25 | + $('#cancel_compile').on('click', function(){ _this.cancelCompile(); }) | |
| 24 | 26 | }, |
| 25 | - compileMode: function(){ | |
| 27 | + teacherCompile: function(){ | |
| 26 | 28 | console.log('========================'); |
| 27 | - var l = Ladda.create(document.querySelector( '#compileBtn' )); | |
| 28 | - l.start(); | |
| 29 | + console.log(Iterm.prototype.options); | |
| 30 | + | |
| 31 | + Hourglass.pauseTimer(); // 暂停计时器 | |
| 32 | + recorder.pause(); // 音频暂停 | |
| 33 | + $('.pause-shodow').show() | |
| 34 | + | |
| 35 | + // 编译时插入操作 | |
| 36 | + var treeNode = null; | |
| 37 | + var check_tree_time = new Date().getTime(); | |
| 38 | + CodingEditer.addRecord(treeNode, check_tree_time); | |
| 39 | + | |
| 40 | + var _this = this; | |
| 41 | + var el = document.querySelector('#teacherCompileBtn'); | |
| 42 | + var userId = _this.options.userId; | |
| 43 | + var languageId = _this.options.languageId; | |
| 29 | 44 | |
| 45 | + compileMode(el, userId, languageId) | |
| 46 | + }, | |
| 47 | + studentCompile: function(){ | |
| 30 | 48 | var _this = this; |
| 31 | - console.log(_this.options) | |
| 32 | - // 获取标准输入值 | |
| 33 | - var runtimeArgus = $('#runtimeArgus').val() || ''; | |
| 34 | - var mainPath = Dir.mainPath; | |
| 35 | - var _fileList = Dir.getTreeData(); | |
| 49 | + var el = document.querySelector('#studentCompileBtn'); | |
| 36 | 50 | var userId = _this.options.userId; |
| 37 | 51 | var languageId = _this.options.languageId; |
| 52 | + compileMode(el, userId, languageId) | |
| 53 | + }, | |
| 54 | + saveCompile: function(){ | |
| 55 | + recodingConf() | |
| 38 | 56 | |
| 39 | - var compileData = { | |
| 40 | - "userId": userId, | |
| 41 | - "langId": languageId, | |
| 42 | - "mainPath": mainPath, | |
| 43 | - "mainArgus": "", | |
| 44 | - "runtimeArgus": runtimeArgus, | |
| 45 | - "rand": "123456", | |
| 46 | - "fileList": _fileList || [] | |
| 47 | - } | |
| 48 | - console.log(compileData); | |
| 49 | - $.ajax({ | |
| 50 | - type: "POST", | |
| 51 | - url: gxb_api + "/gxb-web/programmingMulti/codeRun/api", | |
| 52 | - data: JSON.stringify(compileData), | |
| 53 | - dataType: "json", | |
| 54 | - contentType: "application/json", | |
| 55 | - success: function(data) { | |
| 56 | - console.log(data); | |
| 57 | - compileResult(data) | |
| 58 | - l.remove(); | |
| 59 | - CodingEditer.compileResultData = data; | |
| 60 | - }, | |
| 61 | - error: function(XMLHttpRequest, textStatus, errorThrown) { | |
| 62 | - l.remove(); | |
| 63 | - alert('错误'); | |
| 64 | - console.log(XMLHttpRequest); | |
| 65 | - }, | |
| 66 | - }); | |
| 57 | + var length = CodingEditer.records.length - 1; | |
| 58 | + | |
| 59 | + CodingEditer.records[length].compile = CodingEditer.compileResultData; | |
| 60 | + | |
| 61 | + CodingEditer.records[length].content = CodingEditer.compileResultData.content; | |
| 62 | + CodingEditer.records[length].error = CodingEditer.compileResultData.error; | |
| 63 | + CodingEditer.records[length].compilerInfo = CodingEditer.compileResultData.compilerInfo; | |
| 64 | + CodingEditer.records[length].code = CodingEditer.compileResultData.code; | |
| 65 | + | |
| 66 | + }, | |
| 67 | + cancelCompile: function(){ | |
| 68 | + recodingConf() | |
| 69 | + } | |
| 70 | + } | |
| 71 | + | |
| 72 | + // 继续录制配置 | |
| 73 | + function recodingConf(){ | |
| 74 | + $('.pause-shodow').hide() | |
| 75 | + | |
| 76 | + Hourglass.pauseTimer(); | |
| 77 | + recorder.pause(); | |
| 78 | + | |
| 79 | + CodingEditer.record_startime = new Date().getTime(); | |
| 80 | + } | |
| 81 | + | |
| 82 | + // 编译 | |
| 83 | + function compileMode(el, userId, languageId){ | |
| 84 | + var l = Ladda.create(el); | |
| 85 | + l.start(); | |
| 86 | + // 获取标准输入值 | |
| 87 | + var runtimeArgus = $('#runtimeArgus').val() || ''; | |
| 88 | + var mainPath = Dir.mainPath; | |
| 89 | + var _fileList = Dir.getTreeData(); | |
| 90 | + | |
| 91 | + var compileData = { | |
| 92 | + "userId": userId, | |
| 93 | + "langId": languageId, | |
| 94 | + "mainPath": mainPath, | |
| 95 | + "mainArgus": "", | |
| 96 | + "runtimeArgus": runtimeArgus, | |
| 97 | + "rand": "123456", | |
| 98 | + "fileList": _fileList || [] | |
| 67 | 99 | } |
| 100 | + console.log(compileData); | |
| 101 | + $.ajax({ | |
| 102 | + type: "POST", | |
| 103 | + url: gxb_api + "/gxb-web/programmingMulti/codeRun/api", | |
| 104 | + data: JSON.stringify(compileData), | |
| 105 | + dataType: "json", | |
| 106 | + contentType: "application/json", | |
| 107 | + success: function(data) { | |
| 108 | + console.log(data); | |
| 109 | + $('.pause-shodow img').hide() | |
| 110 | + $('.pause-shodow .compile-reslut').show() | |
| 111 | + compileResult(data) | |
| 112 | + l.remove(); | |
| 113 | + CodingEditer.compileResultData = data; | |
| 114 | + }, | |
| 115 | + error: function(XMLHttpRequest, textStatus, errorThrown) { | |
| 116 | + $('.pause-shodow img').remove() | |
| 117 | + l.remove(); | |
| 118 | + alert('错误'); | |
| 119 | + console.log(XMLHttpRequest); | |
| 120 | + }, | |
| 121 | + }); | |
| 68 | 122 | } |
| 69 | 123 | |
| 70 | 124 | // 编译结果 | ... | ... |
src/scss/main.scss
| ... | ... | @@ -134,7 +134,7 @@ html, body{ |
| 134 | 134 | overflow: auto; |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | - #compileBtn{ | |
| 137 | + #teacherCompileBtn, #studentCompileBtn{ | |
| 138 | 138 | background-image: -webkit-linear-gradient(left, #1FB6FF 0%, #62DCF5 100%); |
| 139 | 139 | background-image: linear-gradient(to right, #1FB6FF 0%, #62DCF5 100%); |
| 140 | 140 | -webkit-transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important; |
| ... | ... | @@ -184,6 +184,51 @@ html, body{ |
| 184 | 184 | } |
| 185 | 185 | } |
| 186 | 186 | } |
| 187 | +.pause-shodow{ | |
| 188 | + position: absolute; | |
| 189 | + top: 0; | |
| 190 | + z-index: 999; | |
| 191 | + width: 100%; | |
| 192 | + height: 100%; | |
| 193 | + background-color: rgba(0,0,0,0.4); | |
| 194 | + | |
| 195 | + img{ | |
| 196 | + position: absolute; | |
| 197 | + top: 15%; | |
| 198 | + left: 50%; | |
| 199 | + transform: translate(-50%); | |
| 200 | + } | |
| 201 | + .compile-reslut{ | |
| 202 | + .btn{ | |
| 203 | + margin-right: 8px; | |
| 204 | + } | |
| 205 | + } | |
| 206 | +} | |
| 207 | + | |
| 208 | +.compile-reslut, .re-reslut{ | |
| 209 | + position: absolute; | |
| 210 | + height: 200px; | |
| 211 | + width: 400px; | |
| 212 | + background-color: #FFF; | |
| 213 | + top: 15%; | |
| 214 | + left: 50%; | |
| 215 | + transform: translate(-50%); | |
| 216 | + | |
| 217 | + .tip-header, .tip-footer{ | |
| 218 | + width: 100%; | |
| 219 | + padding: 8px 8px; | |
| 220 | + background-color: #F5F6FA; | |
| 221 | + } | |
| 222 | + .tip-content{ | |
| 223 | + padding: 40px; | |
| 224 | + line-height: 1.7; | |
| 225 | + } | |
| 226 | + .tip-footer{ | |
| 227 | + position: absolute; | |
| 228 | + bottom: 0; | |
| 229 | + text-align: right; | |
| 230 | + } | |
| 231 | +} | |
| 187 | 232 | |
| 188 | 233 | |
| 189 | 234 | ... | ... |
src/v1.1/c.html
| ... | ... | @@ -111,6 +111,23 @@ |
| 111 | 111 | <div id="replayzone" class="tab-pane"></div> |
| 112 | 112 | </div> |
| 113 | 113 | </div> |
| 114 | + <div class="pause-shodow" style="display: none;"> | |
| 115 | + <div class="compile-loading"> | |
| 116 | + <img src="../img/loading.png" alt=""> | |
| 117 | + </div> | |
| 118 | + <div class="compile-reslut" style="display: none;"> | |
| 119 | + <div class="tip-header"> | |
| 120 | + <span>成功获取编译运行结果</span> | |
| 121 | + </div> | |
| 122 | + <div class="tip-content"> | |
| 123 | + <p>保存编译结果后,播放到此处会在运行区域直接显示结果。需要保存结果后继续录制吗?</p> | |
| 124 | + </div> | |
| 125 | + <div class="tip-footer"> | |
| 126 | + <button class="btn btn-success btn-sm" id="save_compile">保存并继续录制</button> | |
| 127 | + <button class="btn btn-danger btn-sm" id="cancel_compile">不保存继续录制</button> | |
| 128 | + </div> | |
| 129 | + </div> | |
| 130 | + </div> | |
| 114 | 131 | </div> |
| 115 | 132 | |
| 116 | 133 | |
| ... | ... | @@ -128,7 +145,10 @@ |
| 128 | 145 | <li><a href="#output" role="tab" data-toggle="tab" class="text">结果</a></li> |
| 129 | 146 | </ul> |
| 130 | 147 | <div class="pull-right func"> |
| 131 | - <a class="btn btn-success" id="compileBtn"> | |
| 148 | + <a class="btn btn-success" id="teacherCompileBtn"> | |
| 149 | + <span class="ladda-label">编译运行</span> | |
| 150 | + </a> | |
| 151 | + <a class="btn btn-success" id="studentCompileBtn"> | |
| 132 | 152 | <span class="ladda-label">编译运行</span> |
| 133 | 153 | </a> |
| 134 | 154 | <a id="full-screen" class=""><i class="icon iconfont icon-quanping1"></i></a> | ... | ... |