Advertisement
cyntthiah

Untitled

Jun 22nd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. function cargar(cohort) { // "cohort" esta en fetch para devolver a la tabla en html
  2. Promise.all([
  3. fetch("../data/cohorts/" + cohort + "/users.json"),
  4. fetch("../data/cohorts/" + cohort + "/progress.json"),
  5. fetch("../data/cohorts.json")
  6. ]).then( //al cumplirse las promesas se hace lo siguente
  7. (DatosJsons) => {
  8. return Promise.all(DatosJsons.map((Respuesta) => { //crea un nuevo array con objetos json
  9. return Respuesta.json();
  10. }))
  11. }
  12. ).then(
  13. (RespuestaJson) => {
  14. var usuarios = computeUsersStats(RespuestaJson[0], RespuestaJson[1], RespuestaJson[2]);
  15. var items = [RespuestaJson[0], RespuestaJson[1], RespuestaJson[2]];
  16. items.sort((a, b) => a.localeCompare(b));
  17. if (usuarios && progress && courses) {
  18. computeUsersStats(usuarios, progress, courses);
  19. console.log(sortUsers(usuarios, "Nombre", "ASC"));
  20. }
  21.  
  22. var tbody = "";
  23. for (let i = 0; i < usuarios.length; i++) {
  24. tbody += '<tr>' + // aqui esta la funcionalidad de la tabla
  25. '<td>' + usuarios[i].name + '</td>' + // NombreorderDirectionorderDirection
  26. '<td>' + usuarios[i].stats.reads.percent + '</td>' + //Porcentaje de lecturas
  27. '<td>' + usuarios[i].stats.exercises.percent + '</td>' + //Porcentaje de ejercicios
  28. '<td>' + usuarios[i].stats.quizzes.percent + '</td>' + //Porcentaje de Cuestionarios
  29. '<td>' + usuarios[i].stats.quizzes.scoreAvg + '</td>' + // Puntaje de Cuestionarios
  30. '<td>' + usuarios[i].stats.percent + '</td>' + // Porcentaje Total
  31. '</tr>';
  32. }
  33. document.getElementById('tbody').innerHTML = tbody;
  34.  
  35. }
  36. ).catch((err) => {
  37. console.log(err);
  38. })
  39. }
  40.  
  41. hhb- function computeUsersStats(users, progress, cohorts) { //funcion que se encarga de devolver el obj usuario
  42. var usuarios = [];
  43. usuarios = users.map(function (x) { // x corresponde a cada dato dentro del array.orderDirectionorderDirection
  44. x.stats = { exercises: {}, reads: {}, quizzes: {}, percent: 0 };
  45. //Llenar quizzes
  46. //// Se obtiene los numeros
  47. //console.log(x.id);
  48.  
  49. if (progress[x.id].intro) { //con esta funcion comprobamos si existe el dato intro en nuestro objeto
  50. //agrega valor percent del
  51. x.stats.percent = progress[x.id].intro.percent;
  52. let quizz = progress[x.id].intro.units;//se crea la var con contenido del obj unit
  53. let quizzes = { total: 0, completed: 0, percent: 0, scoreSum: 0, scoreAvg: 0, scoreUni: 0 };
  54. let reads = { total: 0, completed: 0, percent: 0 };
  55. let exercises = { total: 0, completed: 0, percent: 0 };
  56. // Se llena los datos
  57. for (var uni in quizz) { //recorrera todos los datos de unit
  58. for (var par in quizz[uni].parts) { //recorrera todos los datos de parts
  59. let elemento = quizz[uni].parts[par]; // crea var con contenido del parts explorado
  60. if (elemento.type == "quiz") {
  61. quizzes.total++;// cuento la cantidad de quizzes
  62. if (elemento.score) {// si existe elemnto score
  63. quizzes.scoreUni++;// si existe el score lo cuenta
  64. quizzes.scoreSum = quizzes.scoreSum + elemento.score;//suma el score total que tenga
  65. }orderDirection
  66. if (elemento.completed == 1)// cuenta los quizzes completados
  67. quizzes.completed++;
  68. }
  69. if (elemento.type == "read") {
  70. reads.total++;
  71. if (elemento.completed == 1)
  72. reads.completed++;
  73.  
  74. }
  75. if (elemento.type == "practice") {
  76. exercises.total++;
  77. if (elemento.completed == 1)
  78. exercises.completed++;
  79. }
  80. }
  81. } // fin llenado de valores
  82. // poner a los valores del objeto
  83. //asigacion de valores al objeto
  84. // reads
  85. x.stats.reads.total = reads.total;
  86. x.stats.reads.completed = reads.completed;
  87. x.stats.reads.percent = parseInt((reads.completed / reads.total) * 100);
  88. // exercises
  89. x.stats.exercises.total = exercises.total;
  90. x.stats.exercises.completed = exercises.completed;
  91. x.stats.exercises.percent = parseInt((exercises.completed / exercises.total) * 100);
  92. //quizzes
  93. x.stats.quizzes.total = quizzes.total;
  94. x.stats.quizzes.completed = quizzes.completed;
  95. x.stats.quizzes.percent = parseInt((quizzes.completed / quizzes.total) * 100);
  96. x.stats.quizzes.scoreSum = quizzes.scoreSum;
  97. if (quizzes.scoreSum == 0) {
  98. x.stats.quizzes.scoreAvg = 0;
  99. } else {orderDirection
  100. x.stats.quizzes.scoreAvg = parseInt(quizzes.scoreSum / quizzes.scoreUni);//saca promedio
  101. }
  102.  
  103.  
  104. } else {
  105. x.stats.exercises.total = 0;
  106. x.stats.exercises.completed = 0;
  107. x.stats.exercises.percent = 0;
  108. x.stats.reads.total = 0;
  109. x.stats.reads.completed = 0;
  110. x.stats.reads.percent = 0;
  111. x.stats.quizzes.total = 0;
  112. x.stats.quizzes.completed = 0;
  113. x.stats.quizzes.scoreSum = 0;
  114. x.stats.quizzes.scoreAvg = 0;
  115. x.stats.percent = 0;
  116. }
  117. return x;//x al terminar de recorrer la data entrega valor usuarios
  118. });
  119.  
  120. return usuarios;
  121. }
  122. function prueba() {
  123. console.log("prueba");
  124.  
  125. }
  126. function sortUsers(usuarios, orderBy, orderDirection) {
  127. let ordenados = [];
  128. if (orderBy === "Nombre") {
  129. if (orderDirection === "ASC") {
  130. ordenados = usuarios.sort((a, b) => a.name.localeCompare(b.name));
  131. }
  132.  
  133. }
  134. return ordenados;
  135.  
  136.  
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement