Advertisement
cyntthiah

Untitled

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