Advertisement
cyntthiah

Untitled

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