diff --git a/src/agenda.js b/src/agenda.js
index 85eb95affc..63d058e552 100644
--- a/src/agenda.js
+++ b/src/agenda.js
@@ -89,6 +89,7 @@ function Agenda(element, options, methods) {
colContentPositions = new HorizontalPositionCache(function(col) {
return bg.find('td:eq(' + col + ') div div');
}),
+ slotTopCache = {},
// ...
view = $.extend(this, viewMethods, methods, {
@@ -167,7 +168,7 @@ function Agenda(element, options, methods) {
s += "
" +
"" + options.allDayText + " | " +
"" +
- " | " +
+ "" +
" | " +
"
|
";
@@ -177,7 +178,7 @@ function Agenda(element, options, methods) {
head.find('td').click(slotClick);
// all-day event container
- daySegmentContainer = $("").appendTo(head);
+ daySegmentContainer = $("").appendTo(head);
// body
d = zeroDate();
@@ -191,7 +192,7 @@ function Agenda(element, options, methods) {
"'>" +
((!slotNormal || minutes==0) ? formatDate(d, options.axisFormat) : ' ') +
" | | ";
+ tm + "-state-default'>
";
addMinutes(d, options.slotMinutes);
}
s += "";
@@ -287,6 +288,7 @@ function Agenda(element, options, methods) {
viewWidth = width;
viewHeight = height;
colContentPositions.clear();
+ slotTopCache = {};
body.width(width);
body.height(height - head.height());
@@ -357,7 +359,7 @@ function Agenda(element, options, methods) {
slotEvents.push(events[i]);
}
}
- renderDaySegs(stackSegs(view.sliceSegs(dayEvents, $.map(dayEvents, visEventEnd), view.visStart, view.visEnd)));
+ renderDaySegs(compileDaySegs(dayEvents));
renderSlotSegs(compileSlotSegs(slotEvents));
}
@@ -375,19 +377,49 @@ function Agenda(element, options, methods) {
}
+
+
+
+ function compileDaySegs(events) {
+ var levels = stackSegs(view.sliceSegs(events, $.map(events, visEventEnd), view.visStart, view.visEnd)),
+ i, levelCnt=levels.length, level,
+ j, seg,
+ segs=[];
+ for (i=0; i" +
"" +
+ "" +
"" + htmlEscape(formatDates(event.start, event.end, view.option('timeFormat'))) + "" +
"" + htmlEscape(event.title) + "" +
- "" +
"" +
((event.editable || event.editable == undefined && options.editable) && !options.disableResizing && $.fn.resizable ?
"=
"
: '') +
"";
- });
- slotSegmentContainer.html(html);
- eventElements = slotSegmentContainer.children();
+ }
+ slotSegmentContainer[0].innerHTML = html;
+ _eventElements = $.makeArray(slotSegmentContainer[0].childNodes); // TODO: look at .children() again
- // retrieve elements, run through eventRender callback, record outer-edge dimensions
- eachLeaf(segCols, function(l, seg) {
+ // retrieve elements, run through eventRender callback, bind event handlers
+ for (i=0; i" +
(showNumbers ? "" + d.getDate() + "
" : '') +
- "";
+ "";
addDays(d, 1);
if (nwe) {
skipWeekend(d);
@@ -216,7 +216,7 @@ function Grid(element, options, methods) {
tbody = $(s + "").appendTo(table);
tbody.find('td').click(dayClick);
- segmentContainer = $("").appendTo(element);
+ segmentContainer = $("").appendTo(element); // style='position:absolute;top:0;left:0' // made it a little slower for some reason
}else{ // NOT first time, reuse as many cells as possible
@@ -236,7 +236,7 @@ function Grid(element, options, methods) {
tm + '-state-default fc-new fc-day' + (i*colCnt+j) +
(j==dit ? ' fc-leftmost' : '') + "'>" +
(showNumbers ? "" : '') +
- "" +
+ "" +
"";
addDays(d, 1);
if (nwe) {
@@ -385,31 +385,42 @@ function Grid(element, options, methods) {
function compileSegs(events) {
var d1 = cloneDate(view.visStart),
d2 = addDays(cloneDate(d1), colCnt),
- rows = [],
- i=0;
- for (; i" +
"" +
@@ -569,14 +573,17 @@ function _renderDaySegs(segRows, view, minLeft, maxLeft, getTr, dayContentLeft,
"" + htmlEscape(event.title) + "" +
"" +
"";
- });
- segmentContainer.html(html);
- eventElements = segmentContainer.children();
+ seg.left = left;
+ seg.outerWidth = right - left;
+ }
+ segmentContainer[0].innerHTML = html;
+ _eventElements = $.makeArray(segmentContainer[0].childNodes); // TODO: look at .children() again
- // retrieve elements, run through eventRender callback, record outer-edge dimensions
- eachLeaf(segRows, function(l, seg) {
+ // retrieve elements, run through eventRender callback, bind handlers
+ for (i=0; i div') // > is optimal???
+ .height(top + levelHeight);
+ }
+
+ // calculate row tops
+ for (rowI=0; rowI= view.visEnd) { // !view.date means it hasn't been rendered yet
+ if (inc || !view.date || date < view.start || date >= view.end) { // !view.date means it hasn't been rendered yet
fixContentSize();
view.render(date, inc || 0, contentWidth, contentHeight, function(callback) {
// dont refetch if new view contains the same events (or a subset)
@@ -307,7 +307,7 @@ $.fn.fullCalendar = function(options) {
return options.contentHeight;
}
else if (options.height) {
- return options.height - (header ? header.height() : 0) - vsides(content);
+ return options.height - (header ? header.height() : 0) - vsides(content[0]);
}
return Math.round(contentWidth / Math.max(options.aspectRatio, .5));
}
diff --git a/src/util.js b/src/util.js
index f075e591a6..a633eb24ec 100644
--- a/src/util.js
+++ b/src/util.js
@@ -298,37 +298,42 @@ var dateFormatters = {
-----------------------------------------------------------------------------*/
function setOuterWidth(element, width, includeMargins) {
- element.each(function() {
- var e = $(this);
- e.width(width - hsides(e, includeMargins));
+ element.each(function(i, _element) {
+ _element.style.width = width - hsides(_element, includeMargins) + 'px';
});
}
-function hsides(e, includeMargins) {
- return (parseInt(e.css('border-left-width')) || 0) +
- (parseInt(e.css('padding-left')) || 0) +
- (parseInt(e.css('padding-right')) || 0) +
- (parseInt(e.css('border-right-width')) || 0) +
- (includeMargins ?
- (parseInt(e.css('margin-left')) || 0) + (parseInt(e.css('margin-right')) || 0)
- : 0);
-}
-
function setOuterHeight(element, height, includeMargins) {
- element.each(function() {
- var e = $(this);
- e.height(height - vsides(e, includeMargins));
+ element.each(function(i, _element) {
+ _element.style.height = height - vsides(_element, includeMargins) + 'px';
});
}
-function vsides(e, includeMargins) {
- return (parseInt(e.css('border-top-width')) || 0) +
- (parseInt(e.css('padding-top')) || 0) +
- (parseInt(e.css('padding-bottom')) || 0) +
- (parseInt(e.css('border-bottom-width')) || 0) +
- (includeMargins ?
- (parseInt(e.css('margin-top')) || 0) + (parseInt(e.css('margin-bottom')) || 0)
- : 0);
+
+function hsides(_element, includeMargins) {
+ return (parseFloat(jQuery.curCSS(_element, 'paddingLeft', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'paddingRight', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'borderLeftWidth', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'borderRightWidth', true)) || 0) +
+ (includeMargins ? hmargins(_element) : 0);
+}
+
+function hmargins(_element) {
+ return (parseFloat(jQuery.curCSS(_element, 'marginLeft', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'marginRight', true)) || 0);
+}
+
+function vsides(_element, includeMargins) {
+ return (parseFloat(jQuery.curCSS(_element, 'paddingTop', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'paddingBottom', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'borderTopWidth', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'borderBottomWidth', true)) || 0) +
+ (includeMargins ? vmargins(_element) : 0);
+}
+
+function vmargins(_element) {
+ return (parseFloat(jQuery.curCSS(_element, 'marginTop', true)) || 0) +
+ (parseFloat(jQuery.curCSS(_element, 'marginBottom', true)) || 0);
}
@@ -455,18 +460,6 @@ function htmlEscape(s) {
.replace(/"/g, '"')
}
-function eachLeaf(node, callback, leafIndex, indexTrail) {
- if (node.pop == arrayPop) { // is an array?
- for (var i=0, len=node.length; i").text(event.title);
+ return $("").text(event.title);
}
else if (event.id == 999) {
element.css('border-color', 'red');
//console.log('renderEvent (' + event.title + ') - ' + view.title);
}
},
-
eventAfterRender: function(event, element, view) {
//console.log('after render for "' + event.title + '":');
//console.log(element);
@@ -99,9 +98,9 @@
console.log(dayDelta + ' days');
console.log(minuteDelta + ' minutes');
console.log('allday: ' + allDay);
- /*setTimeout(function() {
- revertFunc();
- }, 2000);*/
+ //setTimeout(function() {
+ // revertFunc();
+ //}, 2000);
//console.log(jsEvent);
//console.log(ui);
//console.log(view.title);
@@ -120,9 +119,9 @@
console.log('RESIZE!! ' + event.title);
console.log(dayDelta + ' days');
console.log(minuteDelta + ' minutes');
- /*setTimeout(function() {
- revertFunc();
- }, 2000);*/
+ //setTimeout(function() {
+ // revertFunc();
+ //}, 2000);
//console.log(jsEvent);
//console.log(ui);
//console.log(view.title);
diff --git a/version.txt b/version.txt
index 428b770e3e..1c99cf0e80 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-1.4.3
+1.4.4