123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- console.log("integration-functions.js: inicio");
- const NOTA_MINIMO_B = 0.8;
- const ESPERA = 0;
- function getParameterByName (name) {
- var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
- return match ? decodeURIComponent(match[1].replace(/\+/g, ' ')) : null;
- }
- var iLMparameters = {
-
- iLM_PARAM_Authoring: getParameterByName("iLM_PARAM_Authoring"),
- 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"),
- iLM_PARAM_TeacherAutoEval: getParameterByName("iLM_PARAM_TeacherAutoEval"),
- lang: getParameterByName("lang")
- };
- function getAnswer () {
-
-
- if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
-
- var studentAnswer = "Numero de discos: " + nDiscos + " \nQuantidade de Movimentos: " + contador + " \nMovimentos:";
- for (var i = 0; i < vetorMovimentos.length; i++) {
- studentAnswer += "\n" + vetorMovimentos[i];
- }
-
- return studentAnswer;
- } else {
- return "Número de Discos: " + nDiscos;
- }
- }
- function potencia2 (n) {
- var pot = 1, i;
- for (i=0; i<n; i++) pot *= 2;
- return pot;
- }
- function getEvaluation () {
- if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
-
- var aux;
- var nota;
- var minimo = potencia2(nDiscos)-1;
- if (topoHasteC+1 == nDiscos) {
- if (contador == minimo) {
- nota = 1;
- aux = 1;
- }
- else {
- nota = minimo / contador;
- aux = 2;
- }
- }
- else
- if (topoHasteB+1 == nDiscos) {
- if (contador == minimo) {
- nota = NOTA_MINIMO_B;
- aux = 3;
- }
- else {
- nota = minimo / contador;
- aux = 4;
- }
- }
- else {
- nota = 0;
- aux = 5;
- }
-
-
- console.log("getEvaluation(): topoHasteB=" + topoHasteB + ", topoHasteC=" + topoHasteC + ", nota="+nota + " :: " + aux + " minimo="+minimo+" contador="+contador+" "+(minimo/contador));
-
-
-
- parent.getEvaluationCallback(nota);
- return nota;
- }
- }
- function decodificaArquivo (strContent) {
- var linhas = strContent.split("\n");
- var msg = "";
- var nlinhas = linhas.length, nmov;
- var itens, i1, i2;
- if (nlinhas>0) {
- itens = linhas[0].split(":");
- nDiscos = eval(itens[1]);
- nDiscos0 = nDiscos;
- if (iLMparameters.iLM_PARAM_Authoring == 'true')
- setExercise(true);
- else
- setExercise(false);
-
-
- reiniciar();
- if (nlinhas>1) {
- itens = linhas[1].split(":");
- nmov = itens[1];
- contador = nmov;
- }
- if (nlinhas>2) {
- contador = 0;
- for (i=3; i<nlinhas; i++) {
- itens = linhas[i].split(" ");
- if (itens=="" || itens.length<2) {
- console.log("Erro: arquivo nao está no formato iHanoi. Linha " + i + ": " + linhas[i]);
- return;
- }
- i0 = 0; i1 = 1;
- if (itens.length==3)
- i1 = 2;
- clickDe = itens[i0];
- clickPara = -1;
-
- movaHaste(eval(itens[i1]));
- desenhaTudo();
-
- msg += "\n" + linhas[i];
- }
- }
- }
- }
- function getiLMContent () {
- var msg = "";
-
-
- var pagina = iLMparameters.iLM_PARAM_Assignment;
- var txtFile;
- var data = -1;
-
-
- if (iLMparameters.iLM_PARAM_Assignment == null) {
- console.log("integration-functions.js: getiLMContent(): NAO existe arquivo IHN para ser carregado (iLMparameters.iLM_PARAM_Assignment vazio), finalize");
- return;
- }
- if (iLMparameters.iLM_PARAM_TeacherAutoEval != null) {
- try {
- parent.getAutoEvalOriginalData();
- } catch (Error) {
- console.log("integration-functions.js: getiLMContent(): erro ao tentar executar funcao 'getAutoEvalOriginalData()'");
- }
-
- teacherAutoEval(data);
- console.log("integration-functions.js: getiLMContent(): final (apos ler arquivo IHN)");
- return;
- }
- txtFile = new XMLHttpRequest();
- console.log("integration-functions.js: getiLMContent(): tenta pegar arquivo de " + pagina);
-
- txtFile.open("GET", pagina, true);
- txtFile.send();
- txtFile.responseType="text";
- txtFile.onreadystatechange = function () {
- if (txtFile.readyState === 4) {
- if (txtFile.status === 200) {
-
- var nDiscos0;
- nDiscos0 = nDiscos;
- allText = txtFile.responseText;
- texto = allText;
-
- decodificaArquivo(allText);
- }
-
- }
-
- }
- console.log("integration-functions.js: getiLMContent(): final");
- }
- getiLMContent();
- function sleep (milliseconds) {
- var startSleep = new Date().getTime();
- for (var i = 0; i < 1e7; i++) {
- if ((new Date().getTime() - startSleep) > milliseconds) {
- break;
- }
- }
- }
- function teacherAutoEval (data) {
- var nDiscos0;
- nDiscos0 = nDiscos;
- alert("integration-functions.js: teacherAutoEval(.): " + data);
-
- decodificaArquivo(data);
- }
- console.log("integration-functions.js: final");
|