integration-functions.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 studentAnswer = "Numero de discos: " + diskQntity + " \nQuantidade de Movimentos: " + nMoves.text + " \nMovimentos:";
  26. for (var i = 0; i < totalMoves.length; i++) {
  27. studentAnswer += "\n" + totalMoves[i];
  28. }
  29. return studentAnswer; // teacherReturn;
  30. } else { //se for o professor acessando, mostra a pagina de elaboração
  31. diskSelectorButton.destroy();
  32. return "Número de Discos: " + diskQntity;
  33. }
  34. }
  35. // Função chamada pelo iTarefa para receber a nota do aluno na atividade
  36. // O retorno é um valor entre 0.0 e 1.0
  37. function getEvaluation() {
  38. if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
  39. // Cálculo da nota: resposta correta = 1, errada = 0
  40. var nota;
  41. if (towerC.length == diskQntity) nota = 1;
  42. else nota = 0;
  43. /* Para fazer nota proporcional descomente as 3 linhas abaixo
  44. nota=nMoves.text/(Math.pow(2,diskQntity)-1);
  45. if (towerB.length==diskQntity) nota *= 0.8;
  46. else if(!towerC.length==diskQntity) nota=0;*/
  47. // A chamada do método abaixo é obrigatória!
  48. // Observe que a chamada parte do iLM para o iTarefa
  49. parent.getEvaluationCallback(nota);
  50. }
  51. }
  52. // Função para que o iMA leia os dados da atividade fornecidos pelo iTarefa
  53. function getiLMContent() {
  54. // O parâmetro "iLM_PARAM_Assignment" fornece o URL do endereço que deve ser
  55. // requisitado via AJAX para a captura dos dados da atividade
  56. $.get(iLMparameters.iLM_PARAM_Assignment, function(d) {
  57. // Uma vez que os dados foram recebidos, o método "organizaAtividade" é chamado.
  58. // Observe que esse método faz parte do arquivo js/iarithmetic-functions.js
  59. res = d.split(" ");
  60. console.log(res[3]);
  61. restart((res[3])); //restart the game with the amount of disks defined by the teacher
  62. //goes to students last state
  63. if (res.length > 4) {
  64. res = d.split(/[\r]?\n/);
  65. for (i = 3; i < res.length; i++) {
  66. var mv = res[i].split(" ");
  67. redo = 1; //previne de mudar a textura do disco
  68. moveFromTo(parseInt(mv[0]), parseInt(mv[2]));
  69. }
  70. }
  71. });
  72. }
  73. // Adicionamos a diretiva .ready(), para que quando a página HTML estiver carregada,
  74. // seja verificado qual a visualização deve ser apresentada: se a área de construção
  75. // de atividade ou de resolução. E no caso de ser resolução, os dados da atividade
  76. // precisam ser consultados, pelo método implementado acima, o getiLMContent()
  77. $(document).ready(function() {
  78. // Se iLM_PARAM_SendAnswer for false, então trata-se de resolução de atividade,
  79. // portanto, a "DIV" de resolução é liberada
  80. if (iLMparameters.iLM_PARAM_SendAnswer == 'false') {
  81. //abre a resolução da atividade
  82. //pode ser tanto o prof quanto o aluno
  83. getiLMContent();
  84. } else {
  85. // Caso não esteja em modo de resolução de atividade, a visualização no momento
  86. // é para a elaboração de atividade:
  87. }
  88. });
  89. function sleep(milliseconds) {
  90. var startSleep = new Date().getTime();
  91. for (var i = 0; i < 1e7; i++) {
  92. if ((new Date().getTime() - startSleep) > milliseconds) {
  93. break;
  94. }
  95. }
  96. }