| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- var _ = require('lodash');
- var lastResult = null;
- function isfLookup(isf_data, timestamp) {
- var nowDate = timestamp;
- if (typeof(timestamp) === 'undefined') {
- nowDate = new Date();
- }
- var nowMinutes = nowDate.getHours() * 60 + nowDate.getMinutes();
- if (lastResult && nowMinutes >= lastResult.offset && nowMinutes < lastResult.endOffset) {
- return lastResult.sensitivity;
- }
- isf_data = _.sortBy(isf_data.sensitivities, function(o) { return o.offset; });
- var isfSchedule = isf_data[isf_data.length - 1];
- if (isf_data[0].offset !== 0) {
- return -1;
- }
- var endMinutes = 1440;
- for (var i = 0; i < isf_data.length - 1; i++) {
- var currentISF = isf_data[i];
- var nextISF = isf_data[i+1];
- if (nowMinutes >= currentISF.offset && nowMinutes < nextISF.offset) {
- endMinutes = nextISF.offset;
- isfSchedule = isf_data[i];
- break;
- }
- }
- lastResult = isfSchedule;
- lastResult.endOffset = endMinutes;
- return isfSchedule.sensitivity;
- }
- isfLookup.isfLookup = isfLookup;
- exports = module.exports = isfLookup;
|