var sqmod_test = function(that,j_page){
var pro_pbox = new class_sqmod_test_pro_pbox(that.sqid,j_page);
that.node.url_chg = function(direct,url_upart,url_dpart){
if(direct == 'in'){
index.title_set('TOJ-' + that.sqname);
index.tab_add('pro','/toj/sq/' + that.sqid + '/pro/','題目');
if(url_dpart.length == 0){
com.url_update('/toj/sq/' + that.sqid + '/pro/');
return 'stop';
}
}else if(direct == 'out'){
index.tab_empty();
}
return 'cont';
};
that.node.child_set(pro_pbox.node);
};
var class_sqmod_test_pro_pbox = function(sqid,j_page){
var that = this;
var j_pbox = j_page.find('div.pro_pbox');
var promap = null;
var pro_listset = function(j_item,proo){
var i;
var bscore;
var fscore;
var ratio;
var j_a;
var j_team;
if(proo != null){
j_item.attr('proid',proo.proid);
j_item.find('td.no').text(proo.prono);
j_a = j_item.find('td.name > a');
j_a.attr('href','/toj/pro/' + proo.proid + '/');
j_a.text(proo.proname);
bscore = proo.bscore;
fscore = proo.full_score;
j_item.find('td.bscore').text(Math.floor(bscore) + ' / ' + Math.floor(fscore));
if(proo.tried == false){
j_item.css('border-color','#1C1C1C');
}else{
ratio = bscore / fscore;
if(ratio < 0.6){
j_item.css('border-color','#FF0000');
}else if(ratio < 0.8){
j_item.css('border-color','#00FF00');
}else if(ratio < 1){
j_item.css('border-color','#FFFF00');
}else{
j_item.css('border-color','#FFFFFF');
}
}
j_item.find('td.team').remove();
for(i = 0;i < proo.tscore.length;i++){
j_team = $('
| ');
j_team.text(Math.floor(proo.tscore[i]));
j_item.append(j_team);
}
}
};
var pro_listnew = function(proo){
var j_item;
j_item = $(' | | |
');
pro_listset(j_item,proo);
return j_item;
};
var prog_set = function(j_progbox,baseline,totalscore){
var off;
var ratio;
var j_prog;
off = 0;
ratio = baseline.pass_score * 100 / baseline.total_score;
j_prog = j_progbox.find('div.pass');
j_prog.css('width',ratio + '%');
j_prog.html(Math.floor(baseline.pass_score) + ' ');
off += ratio;
ratio = (baseline.good_score - baseline.pass_score) * 100 / baseline.total_score;
j_prog = j_progbox.find('div.good');
j_prog.css('left',off + '%');
j_prog.css('width',ratio + '%');
j_prog.html(Math.floor(baseline.good_score) + ' ');
off += ratio;
ratio = 100 - off;
j_prog = j_progbox.find('div.total');
j_prog.css('left',off + '%');
j_prog.css('width',ratio + '%');
j_prog.html(Math.floor(baseline.total_score) + ' ');
ratio = totalscore * 100 / baseline.total_score;
j_prog = j_progbox.find('div.prog');
j_prog.css('width',ratio + '%');
j_prog.html(Math.floor(totalscore) + ' ');
if(totalscore < baseline.pass_score){
ratio = totalscore / baseline.pass_score;
j_prog.css('background-color','rgba(255,' + Math.round(64 * ratio) + ',0,0.8)');
}else if(totalscore < baseline.good_score){
ratio = (totalscore - baseline.pass_score) / (baseline.good_score - baseline.pass_score);
j_prog.css('background-color','rgba(' + Math.round(128 * ratio) + ',255,0,0.8)');
}else if(totalscore < baseline.total_score){
ratio = (totalscore - baseline.good_score) / (baseline.total_score - baseline.good_score);
j_prog.css('background-color','rgba(255,255,' + Math.round(128 * ratio) + ',0.8)');
}else{
j_prog.css('background-color','rgba(255,255,255,0.8)');
}
}
var prostat_refresh = function(){
if(refresh_flag == false){
return;
}
$.post('/toj/sqmod/sqmod_test/sqmod_test.php',{'action':'get_user_stat','data':JSON.stringify({'sqid':sqid,'display_team':true})},function(res){
var i;
var j;
var reto;
var team;
var teamo;
var prostat;
var prostato;
var proo;
var user_total;
var team_total;
var maxscore;
var j_list;
var j_head;
var j_team;
var j_a;
var j_item;
if(res[0] != 'E'){
reto = JSON.parse(res);
team = reto.team;
prostat = reto.prostat;
j_list = j_pbox.find('table.prolist');
if(team != undefined){
j_head = j_list.find('tr.head');
j_head.find('th.team').remove();
for(i = 0;i < team.length;i++){
teamo = team[i];
j_team = $(' | ');
j_a = j_team.find('a');
j_a.attr('href','/toj/user/' + teamo.uid + '/')
j_a.text(teamo.name);
for(j = 0;j < teamo.prostat.length;j++){
if(teamo.prostat[j].tried == true){
promap[teamo.prostat[j].proid].tscore[i] = teamo.prostat[j].best_score;
}else{
promap[teamo.prostat[j].proid].tscore[i] = 0;
}
}
j_head.append(j_team);
}
j_pbox.find('table.stat tr.team_prog').show();
}
user_total = 0;
team_total = 0;
for(i = 0;i < prostat.length;i++){
prostato = prostat[i];
proo = promap[prostato.proid];
proo.bscore = prostato.best_score;
proo.tried = prostato.tried;
user_total += prostato.best_score;
j_item = j_list.find('[proid = "' + prostato.proid + '"]');
if(j_item.length > 0){
pro_listset(j_item,proo);
}
maxscore = proo.bscore;
for(j = 0;j < proo.tscore.length;j++){
maxscore = Math.max(maxscore,proo.tscore[j]);
}
team_total += maxscore;
}
prog_set(j_pbox.find('table.stat div.user_prog'),reto.base_line,user_total);
if(team != undefined){
prog_set(j_pbox.find('table.stat div.team_prog'),reto.team_base_line,team_total);
}
setTimeout(prostat_refresh,2000);
}
});
};
that.node = new vus.node('pro');
that.__super();
that.node.url_chg = function(direct,url_upart,url_dpart){
if(direct == 'in'){
index.tab_hl('pro');
that.fadein(j_pbox);
refresh_flag = true;
$.post('/toj/sqmod/sqmod_test/sqmod_test.php',{'action':'get_prolist','data':JSON.stringify({'sqid':sqid})},function(res){
var i;
var reto;
var proo;
var j_list;
var j_item;
if(res[0] != 'E'){
reto = JSON.parse(res);
promap = new Array;
j_list = j_pbox.find('table.prolist');
console.log(j_pbox.length);
for(i = 0;i < reto.length;i++){
proo = reto[i];
proo.bscore = 0;
proo.tscore = new Array;
proo.tried = false;
if(proo.hidden == false || user.level == -1){
promap[proo.proid] = proo;
j_item = pro_listnew(proo);
j_list.append(j_item);
}
}
prostat_refresh();
}
});
}else if(direct == 'out'){
index.tab_ll('pro');
that.fadeout(j_pbox);
refresh_flag = false;
}
return 'cont';
};
}; __extend(class_sqmod_test_pro_pbox,class_com_pbox);