163 lines
9.9 KiB
Plaintext
163 lines
9.9 KiB
Plaintext
<span class="mt10 -flex c_grey ml15" id="time-consuming"></span>
|
||
<div id="code_test">
|
||
<a href="javascript:void(0)" class="shixun-task-btn task-btn-blue mr15 mt8" onclick="training_task_submmit();">评测</a>
|
||
</div>
|
||
<div id="code_estimate">
|
||
<% if @game.status == 1 %>
|
||
<a class="shixun-task-btn mt8 mr15" id="code_testing">评测中..</a>
|
||
<% elsif @game.status == 2 %>
|
||
<% if @had_done == 0 %>
|
||
<%= link_to "下一关 ", {:controller => 'games',
|
||
:action => "next_step", :id => @game,
|
||
:myshixun_id => @myshixun},
|
||
:class => "shixun-task-btn task-btn-blue mr15 mt8",
|
||
:id => "next_step",
|
||
:remote => true %>
|
||
<!--<a href="javascript:void(0);" onclick="shixun_next_step();" class="task-btn task-btn-blue mr15 mt8">下 一 步</a>-->
|
||
<% else %>
|
||
<a href="<%= shixuns_path() %>" class="shixun-task-btn task-btn-blue mt8 mr15">退出实训</a>
|
||
<% end %>
|
||
<% end %>
|
||
</div>
|
||
<script>
|
||
/* ------------------耗时------------------------- */
|
||
var cTime = 1; // 时间累加参数
|
||
var cm = setInterval(setTime, 1000);
|
||
function setTime(){
|
||
var startTime = 0; // 开始时间 - 毫秒
|
||
var endTime = 0; // 结束时间
|
||
var consumeTime = 0; // 耗时
|
||
<% if @game.status == 2 %>
|
||
startTime = (new Date("<%= consume_time(@game.open_time) %>")).getTime();
|
||
endTime = (new Date("<%= consume_time(@game.end_time) %>")).getTime();
|
||
consumeTime = parseInt(endTime - startTime);
|
||
<% else %>
|
||
startTime = (new Date("<%= consume_time(@game.open_time) %>")).getTime();
|
||
endTime = (new Date("<%= consume_time(Time.now) %>")).getTime();
|
||
consumeTime = parseInt(endTime - startTime) + cTime * 1000;
|
||
cTime++;
|
||
<% end %>
|
||
formatDuring(consumeTime);
|
||
}
|
||
|
||
function formatDuring(time){
|
||
var days = parseInt(time / (1000 * 60 * 60 * 24));
|
||
var hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||
var minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60));
|
||
var seconds = parseInt((time % (1000 * 60)) / 1000);
|
||
$("#time-consuming").html("耗时:" + days + " 天 " + hours + " 小时 " + minutes + " 分钟 " + seconds + " 秒 ");
|
||
}
|
||
|
||
/* -----------------下一关--------------------- */
|
||
$("#next_step").on("click", function(){
|
||
nNext = $("#code_estimate");
|
||
html = "<a href='javascript:void(0);' class='task-btn mr15 mt8'>下一关<img src='/images/bigdata/loading2.svg' style='width:25px;float:left;margin-top: 3px' /></a>";
|
||
nNext.html(html);
|
||
});
|
||
|
||
/* ----------------- 评测 -------------------- */
|
||
function training_task_submmit(){
|
||
// 加载页面
|
||
nEvalContent = $("#evaluating_contents");
|
||
nEvalInfo = $("#evaluating_info");
|
||
nAjaxLoading = $("#evaluating_ajax_loading");
|
||
nInfoAjaxLoading = $("#info_ajax_loading");
|
||
nAjaxLoading.css("display","flex");
|
||
nInfoAjaxLoading.css("display","flex");
|
||
nEvalContent.hide();
|
||
nEvalInfo.hide();
|
||
nAjaxLoading.show();
|
||
nInfoAjaxLoading.show();
|
||
nAjaxLoading.html("<embed src='/images/bigdata/loading2.svg' />");
|
||
nInfoAjaxLoading.html("<embed src='/images/bigdata/loading2.svg' />");
|
||
$("#code_test").html("<a class='task-btn mt8 mr15'>评测中..</a>");
|
||
// 保存版本库代码
|
||
$.ajax({
|
||
type: "POST",
|
||
url: '<%= file_update_myshixun_game_path(@game, :myshixun_id => @myshixun, :path => @path) %>',
|
||
data:{ content: $('#challenge-answer-edit-small').val()},
|
||
success: function(data){
|
||
if(data.success == "success"){
|
||
var i = 0; // i变量用来统计setInterval执行了多少次,便于统计访问时间
|
||
// 建立job
|
||
$.ajax({
|
||
url: '<%= game_build_myshixun_game_path(@game, :myshixun_id => @myshixun) %>',
|
||
success: function (data){
|
||
// 每2s匹配一次状态,成功2 评测中1 评测 0
|
||
var intId = setInterval(function(){
|
||
var ajaxTimeoutTest = $.ajax({
|
||
url: '<%= game_status_myshixun_game_path(@game, :myshixun_id => @myshixun) %>',
|
||
timeout : 50000,
|
||
async: false,
|
||
data:{"resubmit":data.resubmit},
|
||
success:function(data){
|
||
// 如果查到了,就退出
|
||
i = i + 1;
|
||
console.log(i);
|
||
if(data.status == 2 || data.status == 0){
|
||
clearInterval(intId);
|
||
nEvalContent.show();
|
||
nEvalInfo.show();
|
||
nAjaxLoading.val("");
|
||
nInfoAjaxLoading.val("");
|
||
nAjaxLoading.hide();
|
||
nInfoAjaxLoading.hide();
|
||
// test_sets 公开测,hide_test_sets 隐藏测试集
|
||
var html = bt('t:exec_results_1',{
|
||
"test_sets": eval('[' + data.test_sets + ']'),
|
||
had_test_count: data.had_test_count,
|
||
test_sets_count: data.test_sets_count,
|
||
had_passed_testsests_error_count: data.had_passed_testsests_error_count,
|
||
test_sets_hidden_count: data.test_sets_hidden_count,
|
||
test_sets_public_count: data.test_sets_public_count,
|
||
had_passed_testsests_hidden_count: data.had_passed_testsests_hidden_count,
|
||
had_passed_testsests_public_count: data.had_passed_testsests_public_count,
|
||
final_score: data.final_score,
|
||
latest_output: data.latest_output
|
||
});
|
||
$("#game_test_set_results").html(html);
|
||
if(data.status == 2){
|
||
clearInterval(cm);
|
||
clearInterval(intId);
|
||
if( data.had_done == 0 ) {
|
||
$("#code_estimate").html("<a href='<%= next_step_myshixun_game_path(@game, :myshixun_id => @myshixun) %>' class='task-btn task-btn-blue mr15 mt8' id='code_test' data-remote='true'>下一关</a>");
|
||
var htmlvalue = "<%= j (render :partial => 'games/pass_game_show', :locals => { :game=> @game, :myshixun => @myshixun, :had_done => 0}) %>";
|
||
}else{
|
||
$("#code_estimate").html("<a href='<%= shixuns_path() %>' class='task-btn task-btn-blue mt8 mr15' >退出实训</a>");
|
||
var htmlvalue = "<%= j (render :partial => 'games/pass_game_show', :locals => { :game=> @game, :myshixun => @myshixun, :had_done => 1}) %>";
|
||
}
|
||
// 传递具体屏幕的宽高,实现不同浏览器与不同分辨率都能撑满屏幕
|
||
pop_box_new2(htmlvalue, window.innerWidth, window.innerHeight);
|
||
}
|
||
var html = "<a href='javascript:void(0)' class='task-btn task-btn-blue mr15 mt8' onclick='training_task_submmit();'>评测</a>";
|
||
$("#code_test").html(html);
|
||
}
|
||
// 访问60次,即120s后后台还未改变状态即执行
|
||
if(i == 60){
|
||
clearInterval(intId);
|
||
nEvalContent.show();
|
||
nEvalInfo.show();
|
||
nAjaxLoading.val("");
|
||
nInfoAjaxLoading.val("");
|
||
nAjaxLoading.hide();
|
||
nInfoAjaxLoading.hide();
|
||
var html = "<a href='javascript:void(0)' class='task-btn task-btn-blue mr15 mt8' onclick='training_task_submmit();'>评测</a>";
|
||
var html_1 = "实训云平台繁忙(繁忙等级:88)";
|
||
$("#code_test").html(html);
|
||
notice_box(html_1);
|
||
}
|
||
},
|
||
complete: function(XMLHttpRequest,status){if(status=='timeout'){
|
||
ajaxTimeoutTest.abort();
|
||
clearInterval(intId);
|
||
}}
|
||
});
|
||
}, 2000);
|
||
}
|
||
|
||
});
|
||
}
|
||
}
|
||
});
|
||
}
|
||
</script> |