Moment JS - Daily Availability Calendar
by dbasch
HTML
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>
JavaScript
var daysOfWeekAvailable = {
4: true,
5: true
}
var signupEndTime = moment('13:00', "HH:mm");
// var availabilityCalendar = {
// '0' : {
// 'dayOfWeek' : m.format('dddd'),
// 'dayOfMonth' : m.format('D'),
// 'month' : m.format('MMM'),
// 'available' : false,
// 'currentDay' : true
// },
// ....
// }
var availabilityCalendar = [];
var now = moment();
var inOneWeek = moment().add('days', 6);
var available;
// loop over the next 7 days
for (var dateIterator = now;
dateIterator.isBefore(inOneWeek);
dateIterator.add('days', 1)) {
// assume no availability
available = false;
// loop over the available days and break
// 0 based week index
Object.keys(guestlist.daysOfWeekAvailable).some(function (key) {
// if the day of the week is an available day
if (guestlist.daysOfWeekAvailable[key] === true && dateIterator.day() == key) {
available = true;
// if the availabe date is today check if the time
// is after the guestlist signup end (cutoff) time
if (dateIterator.isSame(moment(), 'day')) {
// make our signup cutoff time today because
// we store the cutoff time as UTC in a moment object
// which includes an irelevant day, month, year, etc..
var _signupEndTime = moment(guestlist.signupEndTime, "YYYY-MM-DD,HH:mm:ss.sss").format("HH:mm");
console.log(_signupEndTime);
console.log(moment().isAfter(_signupEndTime));
// no availability if the current time
// is after the guestlist signup end (cutoff) time
if (moment().isAfter(_signupEndTime)) {
available = false;
}
}
return true;
}
});
availabilityCalendar.push({
'dayOfWeek':...