summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien MUETTON <the.mouette@gmail.com>2010-06-23 11:23:43 +0200
committerJulien MUETTON <the.mouette@gmail.com>2010-06-23 11:23:43 +0200
commit6d61f428f2b1f3a33eaf826596ea0e09eecf2097 (patch)
treea98f6f1eca0384cc801ef604bb18eb779d216781
parentb2b167b6c7dd920f557c091b47571e5d76d313fb (diff)
parent34daa36f3f3a64fcb555cb7426a454aef9e2acaf (diff)
downloadjquery-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.js9
-rw-r--r--full_demo/weekcalendar_full_demo.html2
-rw-r--r--jquery.weekcalendar.css7
-rw-r--r--jquery.weekcalendar.js72
-rw-r--r--skins/default.css1
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;}