isf.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. var _ = require('lodash');
  2. var lastResult = null;
  3. function isfLookup(isf_data, timestamp) {
  4. var nowDate = timestamp;
  5. if (typeof(timestamp) === 'undefined') {
  6. nowDate = new Date();
  7. }
  8. var nowMinutes = nowDate.getHours() * 60 + nowDate.getMinutes();
  9. if (lastResult && nowMinutes >= lastResult.offset && nowMinutes < lastResult.endOffset) {
  10. return lastResult.sensitivity;
  11. }
  12. isf_data = _.sortBy(isf_data.sensitivities, function(o) { return o.offset; });
  13. var isfSchedule = isf_data[isf_data.length - 1];
  14. if (isf_data[0].offset !== 0) {
  15. return -1;
  16. }
  17. var endMinutes = 1440;
  18. for (var i = 0; i < isf_data.length - 1; i++) {
  19. var currentISF = isf_data[i];
  20. var nextISF = isf_data[i+1];
  21. if (nowMinutes >= currentISF.offset && nowMinutes < nextISF.offset) {
  22. endMinutes = nextISF.offset;
  23. isfSchedule = isf_data[i];
  24. break;
  25. }
  26. }
  27. lastResult = isfSchedule;
  28. lastResult.endOffset = endMinutes;
  29. return isfSchedule.sensitivity;
  30. }
  31. isfLookup.isfLookup = isfLookup;
  32. exports = module.exports = isfLookup;