Guest User

Untitled

a guest
Jan 21st, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. // From midnight forward.
  2. const resetArray = [
  3. { occupancy: 32, receivedTime: 1515614058833 },
  4. { occupancy: 50, receivedTime: 1515614127933 }
  5. ];
  6.  
  7. let occupancy = 0;
  8. let ins = 0;
  9. let outs = 0;
  10.  
  11. function kpiFilter(messages) {
  12. messages.forEach((message, i) => {
  13. const nextMessage = messages[i + 1] || message;
  14.  
  15. let reset;
  16.  
  17. resetArray.forEach(resetRecord => {
  18. if (
  19. resetRecord.receivedTime >= message.receivedTime &&
  20. resetRecord.receivedTime <= nextMessage.receivedTime
  21. ) {
  22. reset = resetRecord;
  23. }
  24. });
  25.  
  26. // A reset record is found close to these dates.
  27. if (reset) {
  28. // Add the current message's ins/outs first (looks the same as below)
  29. if (message.action === 'IN') {
  30. ins++;
  31. } else if (message.action === 'OUT') {
  32. outs++;
  33. }
  34.  
  35. const offset = reset.occupancy - occupancy;
  36.  
  37. // Now do the reset calculation
  38. if (offset > 0) {
  39. ins += offset;
  40. } else {
  41. outs += offset;
  42. }
  43.  
  44. occupancy = ins - outs;
  45. } else {
  46. if (message.action === 'IN') {
  47. ins++;
  48. } else if (message.action === 'OUT') {
  49. outs++;
  50. }
  51. occupancy = ins - outs;
  52. }
  53. });
  54.  
  55. console.log('INS: ', ins);
  56. console.log('OUTS: ', outs);
  57. console.log('OCCUPANCY: ', occupancy);
  58.  
  59. return {
  60. deploymentId: messages[0].deploymentId,
  61. occupancy: occupancy,
  62. availability: 200 - occupancy,
  63. turnover: ins / 200,
  64. utilization: occupancy / 200
  65. };
  66. }
Add Comment
Please, Sign In to add comment