Skip to content

Instantly share code, notes, and snippets.

@atticoos
Last active August 29, 2015 14:01
Show Gist options
  • Save atticoos/ce129ee3e5980431c633 to your computer and use it in GitHub Desktop.
Save atticoos/ce129ee3e5980431c633 to your computer and use it in GitHub Desktop.
(function () {
"use strict";
console.log("Today", new Date().getDay());
function daysBetween(date1, date2) {
return (date1 - date2) / (1000 * 60 * 60 * 24);
}
function getWeekStart(){
var d = new Date(),
day = d.getDay(),
diff = d.getDate() - day + (day == 0 ? -6 : 0);
return new Date(d.setDate(diff));
}
function getOrderedEvents() {
var upcomingEvents = [],
pastEvents = [],
today = new Date().getDay(),
pivot = null;
for (var i = 0; i < rawEvents.length; i++) {
var event = rawEvents[i];
if (event.day == today) {
pivot = i;
break;
}
}
pastEvents = rawEvents.splice(0, pivot);
upcomingEvents = rawEvents.splice(0, rawEvents.length);
for (var i=0; i<pastEvents.length; i++){
pastEvents[i].origDay = pastEvents[i].day;
pastEvents[i].day += 7;
upcomingEvents.push(pastEvents[i]);
}
return upcomingEvents;
}
function getGroupedEvents() {
var orderedEvents = getOrderedEvents();
var weekStart = getWeekStart();
for (var i=0; i<orderedEvents.length; i++){
var day = orderedEvents[i].day;
orderedEvents[i].date = new Date(weekStart.getTime() + (day * 24 * 60 * 60 * 1000));
}
console.log(orderedEvents);
}
var rawEvents = [
{
day: 0,
hour: 12,
name: "Sunday Event 1",
location: "Backyard"
}, {
day: 1,
hour: 14,
name: "Monday Event 1"
},{
day: 2,
hour: 15,
name: "Tuesday Event 1",
today: true
}, {
day: 3,
hour: 8,
name: "Wednesday Event 1 - Pivot Date"
}, {
day: 4,
hour: 8,
name: "Thursday Event 1"
},{
day: 5,
hour: 8,
name: "Friday Event 1"
}, {
day: 6,
hour: 8,
name: "Saturday Event 1"
}
];
getGroupedEvents();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment