Guest User

Untitled

a guest
Apr 18th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. function prettify_seconds(seconds) {
  2. return (seconds / 60).toFixed(1) + "min";
  3. }
  4.  
  5. function compute_statistics_for_user(user) {
  6. user.large_pauses = [];
  7. user.max_pause = 0;
  8.  
  9. last_active = user.posts[0];
  10. total_pause_time = 0;
  11. total_accounted_pauses = 1;
  12. user.posts.slice(1).forEach(function(post_time) {
  13. pause = post_time.getTime() - last_active.getTime();
  14. pause = pause / 1000; // from milliseconds to seconds
  15. user.max_pause = Math.max(user.max_pause, pause);
  16. if (pause <= 1 * 60 * 60) {
  17. total_pause_time += pause;
  18. total_accounted_pauses += 1;
  19. } else {
  20. user.large_pauses.push({
  21. begin: last_active,
  22. end: post_time,
  23. duration: prettify_seconds(pause)
  24. });
  25. }
  26. last_active = post_time;
  27. });
  28.  
  29. user.average_pause = prettify_seconds(total_pause_time / total_accounted_pauses);
  30. user.max_pause = prettify_seconds(user.max_pause);
  31. user.posts = user.posts.length;
  32.  
  33. return user;
  34. }
  35.  
  36. function compute_statistics_for_all() {
  37. var regex_pattern = /(\d\d)\/(\d\d)\/(\d\d) [А-Яа-я]{2,4} (\d\d)\:(\d\d)\:(\d\d)/;
  38. users_by_name = {}
  39. posts = Array.from(document.querySelectorAll('.post'))
  40. .map(value => {
  41. var result = new Object();
  42. result.name = value.querySelector("[id^=id_tag_]");
  43. result.name = (result.name != null) ? result.name.innerText : "# OP"
  44. result.date = value.querySelector("[class^=post__time]").innerText;
  45. return result;
  46. })
  47. .map( post => {
  48. match = regex_pattern.exec(post.date);
  49. post.date = (new Date(Date.UTC("20" + match[3], match[2], match[1], parseInt(match[4]), match[5], match[6])));
  50. return post;
  51. })
  52. .forEach(post => {
  53. user = users_by_name[post.name] || {name: post.name, posts: []};
  54. user.posts.push(post.date);
  55. users_by_name[post.name] = user;
  56. })
  57.  
  58. users = Object.entries(users_by_name)
  59. .map(entry => entry[1])
  60. .map(compute_statistics_for_user)
  61. .sort((a, b) => b.posts - a.posts);
  62.  
  63. return users;
  64. }
  65.  
  66. compute_statistics_for_all();
Advertisement
Add Comment
Please, Sign In to add comment