integration-functions.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // Função para ler parâmetros informados pelo iTarefa via URL
  2. // Apesar de não ser obrigatório, será muito útil para capturar os parâmetros
  3. function getParameterByName(name) {
  4. var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
  5. return match ? decodeURIComponent(match[1].replace(/\+/g, ' ')) : null;
  6. }
  7. // Criando um array com os parâmetros informados pelo iTarefa
  8. // Observe que para cada parâmetro, é realizada a chamada do método getParameterByName, implementado acima
  9. var iLMparameters = {
  10. iLM_PARAM_ServerToGetAnswerURL: getParameterByName("iLM_PARAM_ServerToGetAnswerURL"),
  11. iLM_PARAM_SendAnswer: getParameterByName("iLM_PARAM_SendAnswer"),
  12. iLM_PARAM_AssignmentURL: getParameterByName("iLM_PARAM_AssignmentURL"),
  13. iLM_PARAM_Assignment: getParameterByName("iLM_PARAM_Assignment"),
  14. lang: getParameterByName("lang")
  15. };
  16. // Função chamada pelo iTarefa quando o professor finaliza a criação da atividade
  17. // ou quando o aluno finaliza a resolução do exercício
  18. // O retorno é um JSON com os dados do exercício ou da resolução
  19. // Esse retorno será armazenado no banco de dados do Moodle, pelo iTarefa
  20. function getAnswer() {
  21. // Se o parâmetro "iLM_PARAM_SendAnswer" for false,
  22. // então trata-se de resolução de atividade
  23. if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
  24. // Montar o retorno da resposta do aluno
  25. var teacherReturn ="Numero de discos: "+nDisks+" Quantidade de Movimentos: "+nTotalMovements+
  26. "\nQuantidade de erros: "+nWrongMoves+" Tempo Total: "+totalTime+
  27. "\n --De Para";
  28. for(var i=0; i<totalMoves.length; i++){
  29. teacherReturn+="\n"+totalMoves[i];
  30. }
  31. return teacherReturn;
  32. } else {//se for o professor acessando, mostra a pagina de elaboração
  33. return "Número de Discos: "+$('.cDiscos').val();
  34. }
  35. }
  36. // Função chamada pelo iTarefa para receber a nota do aluno na atividade
  37. // O retorno é um valor entre 0.0 e 1.0
  38. function getEvaluation() {
  39. if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
  40. // Calcula a nota do aluno:
  41. // Agora, verificamos se o aluno acertou
  42. // var acertos = 0;
  43. // Cálculo da nota: resposta correta =1, errada =0
  44. var nota = acertou;
  45. // A chamada do método abaixo é obrigatória!
  46. // Observe que a chamada parte do iLM para o iTarefa
  47. parent.getEvaluationCallback(nota);
  48. }
  49. }
  50. // Função para que o iMA leia os dados da atividade fornecidos pelo iTarefa
  51. function getiLMContent() {
  52. // O parâmetro "iLM_PARAM_Assignment" fornece o URL do endereço que deve ser
  53. // requisitado via AJAX para a captura dos dados da atividade
  54. $.get(iLMparameters.iLM_PARAM_Assignment, function (d) {
  55. // Uma vez que os dados foram recebidos, o método "organizaAtividade" é chamado.
  56. // Observe que esse método faz parte do arquivo js/iarithmetic-functions.js
  57. console.log(d);
  58. res = d.split(" ");
  59. loadIMGS(parseInt(res[3]));
  60. if (res.indexOf("Quantidade")!=-1){
  61. document.getElementById("A_button").disabled = true;
  62. document.getElementById("B_button").disabled = true;
  63. document.getElementById("C_button").disabled = true;
  64. res = d.split("\n");
  65. var j = 0
  66. while(res[j].indexOf("--")==-1){
  67. j++;
  68. }
  69. j++;
  70. while(j<res.length){
  71. res2 = res[j].split(" ");
  72. nTotalMovements--;
  73. console.log(res2);
  74. idF= res2[0];
  75. idT= res2[1];
  76. finishMove(parseInt(res2[0]),parseInt(res2[1]));
  77. j++;
  78. }
  79. }
  80. });
  81. }
  82. // Adicionamos a diretiva .ready(), para que quando a página HTML estiver carregada,
  83. // seja verificado qual a visualização deve ser apresentada: se a área de construção
  84. // de atividade ou de resolução. E no caso de ser resolução, os dados da atividade
  85. // precisam ser consultados, pelo método implementado acima, o getiLMContent()
  86. $(document).ready(function() {
  87. // Se iLM_PARAM_SendAnswer for false, então trata-se de resolução de atividade,
  88. // portanto, a "DIV" de resolução é liberada
  89. if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
  90. $('.task').css("display","block");
  91. getiLMContent();
  92. } else {
  93. // Caso não esteja em modo de resolução de atividade, a visualização no momento
  94. // é para a elaboração de atividade:
  95. $('.creation').css("display","block");
  96. }
  97. });
  98. function sleep(milliseconds) {
  99. var startSleep = new Date().getTime();
  100. for (var i = 0; i < 1e7; i++) {
  101. if ((new Date().getTime() - startSleep) > milliseconds){
  102. break;
  103. }
  104. }
  105. }