var paperBuilder = function (options) {
var builder = this;
options = options || {};
options.paperTemplate = options.paperTemplate || CMS_SystemConfig.VirtualDirectoryPath + '/Scripts/Examinee/Template/PaperTemplate.htm?v=1.1';
options.questionTemplate = options.questionTemplate || CMS_SystemConfig.VirtualDirectoryPath + '/Scripts/Examinee/Template/QuestionTemplate.htm?v=1.1';
options.navigationTemplate = options.navigationTemplate || CMS_SystemConfig.VirtualDirectoryPath + '/Scripts/Examinee/Template/NavigationTemplate.htm';
options.informationTemplate = options.informationTemplate || CMS_SystemConfig.VirtualDirectoryPath + '/Scripts/Examinee/Template/InformationTemplate.htm?v=1.5';
this.BuildInformationPanel = function (examInfo) {
if (typeof (examInfo) == 'undefined' || !examInfo)
return false;
behaviour.togglePapert(!examinee.isTakePaper);
$("#information_bar").setTemplateURL(options.informationTemplate);
$("#information_bar").processTemplate(examInfo);
$("#exam_sign").text(0);
$("#exam_over").text(0);
$("#exam_count").text(examInfo.questionCount);
behaviour.registTimer();
return true;
}
this.BuildPaper = function (paperInfo) {
if (typeof (paperInfo) == 'undefined' || !paperInfo)
return false;
// 设定导航条和答卷的高度
$(window).resize(function () { AdjustTestPanel(); });
AdjustTestPanel();
// 呈现导航条
$("#navigation_body").setTemplateURL(options.navigationTemplate);
$("#navigation_body").processTemplate(paperInfo);
// 呈现答卷
if (examInfo.display_type == 2) {
$("#question").setTemplateURL(options.questionTemplate, null, { filter_data: false });
}
else {
$("#question").setTemplateURL(options.paperTemplate, null, { filter_data: false });
}
$("#question").processTemplate(paperInfo);
// 如果考试为可控,则注册轮询事件
if (controllable) {
var server = new serverInteractively({ test_id: examInfo.test_id, user_id: examinee.userid });
server.registPersonExchange();
//server.registPublicExchange();
}
$(".PageLoad").hide();
return true;
}
}
function AdjustTestPanel() {
$(".navigation_body").height(document.documentElement.clientHeight - 267);
$("#question").height(document.documentElement.clientHeight - 215);
}
// 模版行为 --- 与样式相关
var WordSerial = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
// 乱序题目缓存
var buff = new Hashtable();
// 修改乱序答案的序号
function ReplaceFirstChar(answer) {
if (typeof (examInfo) == 'undefined' || !examInfo || examInfo.breaking == 1 || examInfo.breaking == 4)
return answer;
var reg1 = /^.{2}/;
for (var i = 0; i < answer.length; i++) {
answer[i].content = answer[i].content.replace(reg1, WordSerial[i] + "、");
}
return answer;
}
// 转换填空题单体占位符
function transformSingle(type, question, answer) {
var body = question.content;
var answers = ""; //GetTextAnswer(question.id);
var target = "";
body = transform(body, target);
return body;
}
// 转换多项填空题占位符
function transformMuilte(type, question, answer) {
var body = question.content;
var answers = ""; //GetTextAnswer(question.id).split('|');
for (var a in question.answers) {
var an = "";
// if (answers.length > a)
// an = answers[a];
var ctrlName = "ST-" + type.id + "-" + question.question_id;
var target = "";
body = transform(body, target);
}
return body;
}
// 显示答卷问题及答案
function transform2(type, question, answer) {
var body = question.content;
for (var a in question.answers) {
var an = "";
// if (answers.length > a)
// an = answers[a];
var ctrlName = "ST-" + type.id + "-" + question.question_id;
var target = "";
body = transform(body, target);
}
return body;
}
function GetCheckAnswer() {
return false;
}
//是否用户已选答案
function IsUserAnswer(question_id, answer_id, rightAnswer) {
var lan = rightAnswer.split(',');
if (lan.toString().indexOf(answer_id) > -1) {
return "checked='checked'";
}
return '';
}
// 替换占位符
function transform(content, target) {
var reg = /【.*?】/;
return content.replace(reg, target);
}
// 检查完成状况
function ChecComplate(id) {
}
function PreBtnEvent(sender) {
var me = $(sender);
var parent = me.closest(".q_container").hide();
parent.prev().show();
}
function NextBtnEvent(sender) {
var me = $(sender);
var parent = me.closest(".q_container").hide();
parent.next().show();
}
function q(question_id) {
if (examInfo.display_type == 2) {
$(".q_container").hide();
$("#q_" + question_id).show();
}
}
// 准备题目集
function prepareQuestions(typeid, questions) {
if (examInfo.breaking == 1 || examInfo.breaking == 3) {
if (buff.contains(typeid))
return buff.items(typeid);
var result = chaosArray(questions);
buff.add(typeid, result);
return result;
}
return questions;
}
// 准备答案集
function prepareAnswers(answers) {
if (examInfo.breaking == 2 || examInfo.breaking == 3)
return chaosArray(answers);
return answers;
}
// 题目乱序,需要产生2个拷贝
function chaosArray(array) {
var src = array.slice();
var result = new Array();
var count = array.length;
while (count > 0) {
var index = 0;
if (count > 1)
index = getRandom(1, count) - 1
result[result.length] = src[index];
src.splice(index, 1);
count--;
}
return result;
}
// 获取指定范围的随机数
function getRandom(start, end) {
return Math.ceil(Math.random() * ((end - start) + start));
}
//填空题题
function ShowAnswer2(rightAnswer, provid_answer) {
var rightlist = new Array();
var lan = rightAnswer.split(',');
for (var index in provid_answer) {
var ans = provid_answer[index];
if (lan.toString().indexOf(ans.answer_id) > -1) {
rightlist.push(ans.content);
}
}
return rightlist.join(",");
}
//选择题
function ShowAnswerSelect(rightAnswer, provid_answer) {
var rightlist = new Array();
var lan = rightAnswer.split(',');
for (var index in provid_answer) {
var ans = provid_answer[index];
if (lan.toString().indexOf(ans.answer_id) > -1) {
rightlist.push(ans.content.substring(0, 1));
}
}
return rightlist.join(",");
}