// Função para ler parâmetros informados pelo iTarefa via URL // Apesar de não ser obrigatório, será muito útil para capturar os parâmetros function getParameterByName(name) { var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); return match ? decodeURIComponent(match[1].replace(/\+/g, ' ')) : null; } // Criando um array com os parâmetros informados pelo iTarefa // Observe que para cada parâmetro, é realizada a chamada do método getParameterByName, implementado acima var iLMparameters = { iLM_PARAM_ServerToGetAnswerURL: getParameterByName("iLM_PARAM_ServerToGetAnswerURL"), iLM_PARAM_SendAnswer: getParameterByName("iLM_PARAM_SendAnswer"), iLM_PARAM_AssignmentURL: getParameterByName("iLM_PARAM_AssignmentURL"), iLM_PARAM_Assignment: getParameterByName("iLM_PARAM_Assignment"), lang: getParameterByName("lang") }; // Função chamada pelo iTarefa quando o professor finaliza a criação da atividade // ou quando o aluno finaliza a resolução do exercício // O retorno é um JSON com os dados do exercício ou da resolução // Esse retorno será armazenado no banco de dados do Moodle, pelo iTarefa function getAnswer() { // Se o parâmetro "iLM_PARAM_SendAnswer" for false, // então trata-se de resolução de atividade if (iLMparameters.iLM_PARAM_SendAnswer == 'false') { // Montar o retorno da resposta do aluno var studentAnswer = "Numero de discos: " + diskQntity + " \nQuantidade de Movimentos: " + nMoves.text + " \nMovimentos:"; for (var i = 0; i < totalMoves.length; i++) { studentAnswer += "\n" + totalMoves[i]; } return studentAnswer; // teacherReturn; } else { //se for o professor acessando, mostra a pagina de elaboração diskSelectorButton.destroy(); return "Número de Discos: " + diskQntity; } } // Função chamada pelo iTarefa para receber a nota do aluno na atividade // O retorno é um valor entre 0.0 e 1.0 function getEvaluation() { if (iLMparameters.iLM_PARAM_SendAnswer == 'false') { // Cálculo da nota: resposta correta = 1, errada = 0 var nota; if (towerC.length == diskQntity) nota = 1; else nota = 0; /* Para fazer nota proporcional descomente as 3 linhas abaixo nota=nMoves.text/(Math.pow(2,diskQntity)-1); if (towerB.length==diskQntity) nota *= 0.8; else if(!towerC.length==diskQntity) nota=0;*/ // A chamada do método abaixo é obrigatória! // Observe que a chamada parte do iLM para o iTarefa parent.getEvaluationCallback(nota); } } // Função para que o iMA leia os dados da atividade fornecidos pelo iTarefa function getiLMContent() { // O parâmetro "iLM_PARAM_Assignment" fornece o URL do endereço que deve ser // requisitado via AJAX para a captura dos dados da atividade $.get(iLMparameters.iLM_PARAM_Assignment, function(d) { // Uma vez que os dados foram recebidos, o método "organizaAtividade" é chamado. // Observe que esse método faz parte do arquivo js/iarithmetic-functions.js res = d.split(" "); console.log(res[3]); restart((res[3])); //restart the game with the amount of disks defined by the teacher //goes to students last state if (res.length > 4) { res = d.split(/[\r]?\n/); for (i = 3; i < res.length; i++) { var mv = res[i].split(" "); redo = 1; //previne de mudar a textura do disco moveFromTo(parseInt(mv[0]), parseInt(mv[2])); } } }); } // Adicionamos a diretiva .ready(), para que quando a página HTML estiver carregada, // seja verificado qual a visualização deve ser apresentada: se a área de construção // de atividade ou de resolução. E no caso de ser resolução, os dados da atividade // precisam ser consultados, pelo método implementado acima, o getiLMContent() $(document).ready(function() { // Se iLM_PARAM_SendAnswer for false, então trata-se de resolução de atividade, // portanto, a "DIV" de resolução é liberada if (iLMparameters.iLM_PARAM_SendAnswer == 'false') { //abre a resolução da atividade //pode ser tanto o prof quanto o aluno getiLMContent(); } else { // Caso não esteja em modo de resolução de atividade, a visualização no momento // é para a elaboração de atividade: } }); function sleep(milliseconds) { var startSleep = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - startSleep) > milliseconds) { break; } } }