diff options
author | Julien MUETTON <the.mouette@gmail.com> | 2010-06-23 11:23:43 +0200 |
---|---|---|
committer | Julien MUETTON <the.mouette@gmail.com> | 2010-06-23 11:23:43 +0200 |
commit | 6d61f428f2b1f3a33eaf826596ea0e09eecf2097 (patch) | |
tree | a98f6f1eca0384cc801ef604bb18eb779d216781 | |
parent | b2b167b6c7dd920f557c091b47571e5d76d313fb (diff) | |
parent | 34daa36f3f3a64fcb555cb7426a454aef9e2acaf (diff) | |
download | jquery-week-calendar-6d61f428f2b1f3a33eaf826596ea0e09eecf2097.zip jquery-week-calendar-6d61f428f2b1f3a33eaf826596ea0e09eecf2097.tar.gz jquery-week-calendar-6d61f428f2b1f3a33eaf826596ea0e09eecf2097.tar.bz2 |
Merge branch 'master' into gh-pages
-rw-r--r-- | full_demo/demo.js | 9 | ||||
-rw-r--r-- | full_demo/weekcalendar_full_demo.html | 2 | ||||
-rw-r--r-- | jquery.weekcalendar.css | 7 | ||||
-rw-r--r-- | jquery.weekcalendar.js | 72 | ||||
-rw-r--r-- | skins/default.css | 1 |
5 files changed, 50 insertions, 41 deletions
diff --git a/full_demo/demo.js b/full_demo/demo.js index 41ac117..1412b97 100644 --- a/full_demo/demo.js +++ b/full_demo/demo.js @@ -184,8 +184,13 @@ $(document).ready(function() { "end": new Date(year, month, day, 11), "title":"I'm read-only", readOnly : true + }, + { + "id":7, + "start": new Date(year, month, day + 2, 17), + "end": new Date(year, month, day + 3, 9), + "title":"Multiday" } - ] }; } @@ -265,4 +270,4 @@ $(document).ready(function() { }); -});
\ No newline at end of file +}); diff --git a/full_demo/weekcalendar_full_demo.html b/full_demo/weekcalendar_full_demo.html index c5bd863..61af81b 100644 --- a/full_demo/weekcalendar_full_demo.html +++ b/full_demo/weekcalendar_full_demo.html @@ -20,7 +20,7 @@ --> <script type='text/javascript' src='../libs/jquery-ui-1.8.min.js'></script> - <script type="text/javascript" src="libs/date.js"></script> + <script type="text/javascript" src="../libs/date.js"></script> <script type='text/javascript' src='../jquery.weekcalendar.js'></script> <script type='text/javascript' src='demo.js'></script> diff --git a/jquery.weekcalendar.css b/jquery.weekcalendar.css index 1a7e3af..1afcb90 100644 --- a/jquery.weekcalendar.css +++ b/jquery.weekcalendar.css @@ -33,13 +33,14 @@ padding: 0; } -.wc-header { +.wc-header{ background: #eee; border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; +} +.wc-header table{ width: 100%; table-layout:fixed; - background-color: #eee; } .wc-header .wc-time-column-header { @@ -88,9 +89,9 @@ table.wc-time-slots { overflow: visible; vertical-align: top; } -.wc-scrollable-grid .wc-day-column-first{border-left: 3px double #ddd;} .wc-scrollable-grid .wc-day-column-last, .wc-scrollable-grid .wc-day-column-middle{border-left: 1px dashed #ddd;} +.wc-scrollable-grid .wc-day-column-first{border-left: 3px double #ddd;} .wc-day-column-inner { width: 100%; diff --git a/jquery.weekcalendar.js b/jquery.weekcalendar.js index 9d3d8da..76a3bea 100644 --- a/jquery.weekcalendar.js +++ b/jquery.weekcalendar.js @@ -486,9 +486,7 @@ // compute dynamic options based on other config values _computeOptions : function() { - var options = this.options; - if (options.businessHours.limitDisplay) { options.timeslotsPerDay = options.timeslotsPerHour * (options.businessHours.end - options.businessHours.start); options.millisToDisplay = (options.businessHours.end - options.businessHours.start) * 60 * 60 * 1000; @@ -509,7 +507,15 @@ var calendarHeight = options.height(this.element); var headerHeight = this.element.find(".wc-header").outerHeight(); var navHeight = this.element.find(".wc-toolbar").outerHeight(); - this.element.find(".wc-scrollable-grid").height(calendarHeight - navHeight - headerHeight); + var scrollContainerHeight = calendarHeight - navHeight - headerHeight; + var timeslotHeight = this.element.find(".wc-time-slots").outerHeight(); + this.element.find(".wc-scrollable-grid").height(scrollContainerHeight); + if(timeslotHeight <= scrollContainerHeight){ + this.element.find(".wc-scrollbar-shim").width(0); + } + else{ + this.element.find(".wc-scrollbar-shim").width(16); + } this._trigger('resize', this); } }, @@ -680,7 +686,8 @@ } //first row - calendarHeaderHtml = "<table class=\"wc-header\"><tbody><tr><td class=\"wc-time-column-header\"></td>"; + calendarHeaderHtml = "<div class=\"wc-header\">"; + calendarHeaderHtml+= "<table><tbody><tr><td class=\"wc-time-column-header\"></td>"; for (var i = 1; i <= options.daysToShow; i++) { calendarHeaderHtml += "<td class=\"wc-day-column-header wc-day-" + i + "\""+colspan+"></td>"; } @@ -717,7 +724,7 @@ calendarHeaderHtml+= "</tr>"; } //close the header - calendarHeaderHtml += "</tbody></table>"; + calendarHeaderHtml += "</tbody></table></div>"; $(calendarHeaderHtml).appendTo($calendarContainer); }, @@ -1221,40 +1228,38 @@ //thanks to http://github.com/fbeauchamp/jquery-week-calendar var initialStart = new Date(calEvent.start); var initialEnd = new Date(calEvent.end); - var maxHour = self.options.businessHours.limitDisplay ? self.options.businessHours.end -1 : 23; - var minHour = self.options.businessHours.limitDisplay ? self.options.businessHours.start : 0; - var start = new Date(calEvent.start); - var end = new Date(calEvent.end); - - + var maxHour = self.options.businessHours.limitDisplay ? self.options.businessHours.end : 24; + var minHour = self.options.businessHours.limitDisplay ? self.options.businessHours.start : 0; + var start = new Date(initialStart); + var endDay = initialEnd.getDay(); var $weekDay; - while(start.getDay() != end.getDay()){ + + while( start.getDay() < endDay ){ calEvent.start = start; //end of this virual calEvent is set to the end of the day calEvent.end.setFullYear(start.getFullYear()); calEvent.end.setMonth(start.getMonth()); calEvent.end.setDate(start.getDate()); calEvent.end.setHours(maxHour); - calEvent.end.setMinutes(59); - calEvent.end.setSeconds(59); - $weekDay = self._findWeekDayForEvent(calEvent, $weekDayColumns); - - if ($weekDay) { + calEvent.end.setMinutes(0); + calEvent.end.setSeconds(0); + if ( ($weekDay = self._findWeekDayForEvent(calEvent, $weekDayColumns)) ) { self._renderEvent(calEvent, $weekDay); } - //start is set to the begin of the new day - start.setDate( start.getDate() + 1); + start.setDate( start.getDate() + 1 ); start.setHours( minHour ); start.setMinutes( 0 ); + start.setSeconds( 0 ); } - calEvent.start = start; - calEvent.end = initialEnd; - $weekDay = self._findWeekDayForEvent(calEvent, $weekDayColumns); - - if ($weekDay) { - self._renderEvent(calEvent, $weekDay); + if ( start < initialEnd ) { + calEvent.start = start; + calEvent.end = initialEnd; + if ( ($weekDay = self._findWeekDayForEvent(calEvent, $weekDayColumns))) { + self._renderEvent(calEvent, $weekDay); + } } + //put back the initial start date calEvent.start = initialStart; }); @@ -1424,10 +1429,9 @@ } $weekDayColumns.each(function(index, curDay) { - if ( - $(this).data("startDate").getTime() <= calEvent.start.getTime() - && $(this).data("endDate").getTime() >= calEvent.end.getTime() - && ( !showAsSeparatedUser || $.inArray($(this).data("wcUserId"), user_ids) !== -1 ) + if ( $(this).data("startDate").getTime() <= calEvent.start.getTime() && + $(this).data("endDate").getTime() >= calEvent.end.getTime() && + ( !showAsSeparatedUser || $.inArray($(this).data("wcUserId"), user_ids) !== -1 ) ) { if($weekDay){ $weekDay = $weekDay.add($(curDay)); @@ -1568,7 +1572,7 @@ var options = this.options; $calEvent.draggable({ handle : ".wc-time", - containment: ".wc-scrollable-grid", + containment: ".wc-scrollable-grid table", revert: 'valid', opacity: 0.5, grid : [$calEvent.outerWidth() + 1, options.timeslotHeight ], @@ -1594,7 +1598,7 @@ var calEvent = $calEvent.data("calEvent"); var newCalEvent = $.extend(true, {}, calEvent, {start: eventDuration.start, end: eventDuration.end}); var showAsSeparatedUser = options.showAsSeparateUsers && options.users && options.users.length; - if(showAsSeparatedUser){ + if(showAsSeparatedUser){ // we may have dragged the event on column with a new user. // nice way to handle that is: // - get the newly dragged on user @@ -1616,7 +1620,7 @@ } } newCalEvent = self._setEventUserId(newCalEvent, ((userIdList.length == 1) ? userIdList[0] : userIdList)); - } + } self._adjustForEventCollisions($weekDay, $calEvent, newCalEvent, calEvent, true); var $weekDayColumns = self.element.find(".wc-day-column-inner"); @@ -1703,12 +1707,10 @@ if (hour <= self.options.businessHours.start) { slot = 0; } else if (hour >= self.options.businessHours.end) { - slot = self.options.businessHours.end - - self.options.businessHours.start - 1; + slot = self.options.businessHours.end - self.options.businessHours.start - 1; } else { slot = hour - self.options.businessHours.start; } - } var $target = this.element.find(".wc-grid-timeslot-header .wc-hour-header:eq(" + slot + ")"); diff --git a/skins/default.css b/skins/default.css index b8aef80..a8b62af 100644 --- a/skins/default.css +++ b/skins/default.css @@ -1,4 +1,5 @@ .wc-toolbar{font-size:12px;padding:2px 5px;margin:0} +.wc-toolbar h1{font-size:14px;font-weight:bold;} .wc-toolbar .ui-buttonset{font-size:0.8em;} .wc-toolbar .wc-title{text-align:left;} .wc-header{font-size:11px;} |