Skip to content

Instantly share code, notes, and snippets.

@loujaybee
Created September 2, 2015 13:27
Show Gist options
  • Save loujaybee/6f30cfe13f01093fd9cd to your computer and use it in GitHub Desktop.
Save loujaybee/6f30cfe13f01093fd9cd to your computer and use it in GitHub Desktop.
hooks
var now = (new Date()).getTime();
var meetings = {
0: {
startTime: new Date(now + 1000),
endTime: new Date(now + 2000)
},
1: {
startTime: new Date(now + 2000),
endTime: new Date(now + 3000)
},
2: {
startTime: new Date(now + 3000),
endTime: new Date(now + 4000)
},
3: {
startTime: new Date(now + 4000),
endTime: new Date(now + 5000)
}
};
var hooks_module = {
current_hooks: {},
hooks: {
onStart: function(meetingID) {
console.log('meeting #' + meetingID + ' started');
},
onEnd: function(meetingID) {
console.log('meeting #' + meetingID + ' ended');
}
},
removeHook: function(index, start_or_end) {
clearTimeout(this.current_hooks[index][start_or_end]);
delete this.current_hooks[index][start_or_end];
},
removeAllHooks: function() {
var hooks_module = this;
_.each(this.current_hooks, function(meeting_data, meetingID) {
hooks_module.removeHook(meetingID, 'start');
hooks_module.removeHook(meetingID, 'end');
});
},
setupHook: function(data) {
var hooks_module = this;
_.each(data, function(meetingData, meetingID) {
var meetingStart = moment(meetingData.startTime);
var meetingEnd = moment(meetingData.endTime);
var now = moment();
var diff = {
start: meetingStart.diff(now),
end: meetingEnd.diff(now)
};
hooks_module.current_hooks[meetingID] = {};
hooks_module.current_hooks[meetingID].start = _.delay(_.partial(hooks_module.hooks.onStart, meetingID), diff.start);
hooks_module.current_hooks[meetingID].end = _.delay(_.partial(hooks_module.hooks.onEnd, meetingID), diff.end);
});
}
};
hooks_module.setupHook(meetings);
hooks_module.setupHook({
4: {
startTime: new Date(now + 1000),
endTime: new Date(now + 2000)
}
});
//hooks_module.removeAllHooks();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment