diff -Nru --unified=1 iCal.wdgt.orig.wdgt/Calendar.css wwCal.wdgt/Calendar.css --- iCal.wdgt.orig.wdgt/Calendar.css 2009-02-02 13:32:00.000000000 -0700 +++ wwCal.wdgt/Calendar.css 2010-11-07 00:09:50.000000000 -0600 @@ -204,12 +204,23 @@ top: 20px; padding-left: 9px; padding-top: 6px; - width: 163px; + width: 193px; font: 13px "Helvetica Neue"; font-weight: bold; line-height: 17px; } +.calendar-narrowWorkWeekTitle { + float: left; + position: relative; + left: 3px; + width: 22px; + border-right: 7px solid transparent; + margin-top: 0px; + text-align: right; + color: rgb(153,153,153); +} + .calendar-narrowDayOfWeekTitle { float: left; position: relative; @@ -221,6 +232,48 @@ color: rgb(153,153,153); } +.calendar-workWeekNumberOuter { + background-color: #000000; + float: left; + position: relative; + left: 3px; + width: 22px; + height: 16px; + top: 1px; + border-right: 7px solid transparent; + margin-top: 0px; + text-align: right; + color: white; +} + +.calendar-workWeekNumberInner { + background-color: #5050f0; + float: left; + position: relative; + left: 1px; + width: 20px; + top: -1px; + height: 16px; + border-right: 7px solid transparent; + margin-top: 0px; + padding-bottom: 0px; + padding-top: 0px; + text-align: right; + color: white; +} + +.calendar-workWeekNumberNormal { + background-color: #6263ff; + float: left; + position: relative; + left: 3px; + width: 22px; + border-right: 7px solid transparent; + margin-top: 0px; + text-align: right; + color: white; +} + .calendar-dayOfMonthNumberNormal { float: left; position: relative; @@ -269,7 +322,7 @@ #Button-Right { position: absolute; - left: 126px; + left: 156px; top: 7px; padding-left: 20px; padding-right: 15px; diff -Nru --unified=1 iCal.wdgt.orig.wdgt/Calendar.html wwCal.wdgt/Calendar.html --- iCal.wdgt.orig.wdgt/Calendar.html 2009-02-02 13:32:00.000000000 -0700 +++ wwCal.wdgt/Calendar.html 2010-11-06 16:59:47.000000000 -0600 @@ -37,6 +37,7 @@
+ diff -Nru --unified=1 iCal.wdgt.orig.wdgt/Calendar.js wwCal.wdgt/Calendar.js --- iCal.wdgt.orig.wdgt/Calendar.js 2009-04-28 09:23:57.000000000 -0600 +++ wwCal.wdgt/Calendar.js 2011-04-07 13:05:56.000000000 -0600 @@ -24,8 +24,8 @@ var kWidgetDayViewWidth = 167; -var kWidgetDayMonthViewWidth = 333; -var kWidgetDayMonthEventViewWidth = 485; +var kWidgetDayMonthViewWidth = 363; +var kWidgetDayMonthEventViewWidth = 515; var kWidgetHeight = 163; var kEventViewContentHeight = 129; @@ -33,12 +33,12 @@ var kDayViewMiddleFillWidth = 142; var kDayViewRightContentLeftPosition = 178; -var kDayMonthViewMiddleContainerWidth = 324; -var kDayMonthViewMiddleFillWidth = 311; +var kDayMonthViewMiddleContainerWidth = 354; +var kDayMonthViewMiddleFillWidth = 341; var kDayMonthViewRightContentLeftPosition = 151; -var kDayMonthEventViewMiddleContainerWidth = 474; -var kDayMonthEventViewMiddleFillWidth = 461; +var kDayMonthEventViewMiddleContainerWidth = 504; +var kDayMonthEventViewMiddleFillWidth = 491; var kDayMonthEventViewRightContentLeftPosition = 152; var kDayView = "kDayView"; @@ -333,7 +333,7 @@ } else if (gCurrentView == kDayMonthView) { // Expand month view. - gResizeAnimation.elementMonthContent.style.left = (gResizeAnimation.positionNow - 173) + "px"; + gResizeAnimation.elementMonthContent.style.left = (gResizeAnimation.positionNow - 203) + "px"; rightContentClippingOnItsLeft = kDayMonthViewMiddleContainerWidth - gResizeAnimation.positionNow; gResizeAnimation.elementMonthContent.style.clip = "rect(0,999,999," + rightContentClippingOnItsLeft + ")"; } else if (gCurrentView == kDayMonthEventView) { @@ -388,6 +388,7 @@ // Get localized names of the narrow days of the week from the plugin and populate the Expanded View's calendar-grid's header: // { + document.getElementById("WorkWeekHeading").innerText = "WW"; for (var i = 0; i <= 6; i++) { document.getElementById ("DayOfWeek-" + i).innerText = fetchIPrefNarrowDayOfWeekName (i); @@ -460,6 +461,41 @@ } +/** + * Returns the week number for this date. dowOffset is the day of week the week + * "starts" on for your locale - it can be from 0 to 6. If dowOffset is 1 (Monday), + * the week returned is the ISO 8601 week number. + * @param int dowOffset + * @return int + */ +Date.prototype.getWeek = function (dowOffset) { +/*getWeek() was developed by Nick Baicoianu at MeanFreePath: http://www.meanfreepath.com */ + + dowOffset = typeof(dowOffset) == 'int' ? dowOffset : 0; //default dowOffset to zero + var newYear = new Date(this.getFullYear(),0,1); + var day = newYear.getDay() - dowOffset; //the day of week the year begins on + day = (day >= 0 ? day : day + 7); + var daynum = Math.floor((this.getTime() - newYear.getTime() - + (this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1; + var weeknum; + //if the year starts before the middle of a week + //// no, count the week if *any* day, i.e. Saturday, is in the new year. so 7 instead of 4. + if(day < 7) { + weeknum = Math.floor((daynum+day-1)/7) + 1; + if(weeknum > 52) { + nYear = new Date(this.getFullYear() + 1,0,1); + nday = nYear.getDay() - dowOffset; + nday = nday >= 0 ? nday : nday + 7; + /*if the next year starts before the middle of + the week, it is week #1 of that year*/ + weeknum = nday < 7 ? 1 : 53; + } + } + else { + weeknum = Math.floor((daynum+day-1)/7); + } + return weeknum; +}; function drawGrid (inJSDate) // @@ -493,8 +529,21 @@ var numberOfDaysInPreviousMonth = calculateNumberOfDaysInPreviousMonth (inJSDate); var workingDate = new Date(Calendar.addDeltaForUnitToDate(-zeroBasedFirstDayOfWeekInOurMonth, kCFCalendarUnitDay, dateForOurMonth.getTime())); var ourMonth = Calendar.getUnitForDate(kCFCalendarUnitMonth, dateForOurMonth.getTime())-1; + for (i = 0; i < 42; i++) { + if (!(i%7)) { + var workWeekSpan = document.createElement ("span"); + var week = workingDate.getWeek(); + workWeekSpan.innerHTML = ((week<10)?"0":"") + week; + //workWeekSpan.setAttribute ("class", "calendar-workWeekNumberNormal"); + //monthDiv.appendChild(workWeekSpan); + workWeekSpan.setAttribute ("class", "calendar-workWeekNumberInner"); + var outer = document.createElement("span"); + outer.setAttribute ("class", "calendar-workWeekNumberOuter"); + outer.appendChild(workWeekSpan); + monthDiv.appendChild(outer); + } var dateSpan = document.createElement ("span"); var date = Calendar.getUnitForDate(kCFCalendarUnitDay, workingDate.getTime()); @@ -970,7 +1019,7 @@ /* starting font size: */ 12, /* starting left position: */ 23, /* starting top position: */ 9, - /* max width: */ 120, + /* max width: */ 150, /* max height: */ 25); } Binary files iCal.wdgt.orig.wdgt/Images/monthcard.png and wwCal.wdgt/Images/monthcard.png differ Binary files iCal.wdgt.orig.wdgt/Images/monthcard.png.orig and wwCal.wdgt/Images/monthcard.png.orig differ diff -Nru --unified=1 iCal.wdgt.orig.wdgt/Info.plist wwCal.wdgt/Info.plist --- iCal.wdgt.orig.wdgt/Info.plist 2009-05-01 12:24:38.000000000 -0600 +++ wwCal.wdgt/Info.plist 2010-11-06 12:50:03.000000000 -0600 @@ -7,9 +7,9 @@ CFBundleDevelopmentRegion English CFBundleDisplayName - Calendar + WorkWeekCalendar CFBundleIdentifier - com.apple.widget.calendar + com.davidsimmons.workweekcalendar CFBundleName Calendar CFBundleShortVersionString