bugfixes and minor enhancements for 1.4.2

- eventAfterRender
- getView
- displaying in iframe (also added tests)
- render method now adjusts calendar's size too
- day-of-week classnames fixed when firstDay=1
- leave more space on side event events in agenda views
- "T" optional in ISO8601 events
This commit is contained in:
Adam Shaw
2009-11-28 20:43:02 -08:00
parent 559928cec8
commit dbdbafd35d
33 changed files with 1029 additions and 34 deletions
+5 -2
View File
@@ -195,7 +195,7 @@ function Agenda(element, options, methods) {
"<table style='width:100%;height:100%'><tr class='fc-first'>";
for (i=0; i<colCnt; i++) {
s += "<td class='fc-" +
dayIDs[i] + ' ' + // needs to be first
dayIDs[d.getDay()] + ' ' + // needs to be first
tm + '-state-default ' +
(i==0 ? 'fc-leftmost ' : '') +
(+d == +today ? tm + '-state-highlight fc-today' : 'fc-not-today') +
@@ -461,6 +461,7 @@ function Agenda(element, options, methods) {
}
}
view.reportEventElement(event, eventElement);
view.trigger('eventAfterRender', event, event, eventElement);
levelHeight = Math.max(levelHeight, eventElement.outerHeight(true));
}
}
@@ -500,6 +501,7 @@ function Agenda(element, options, methods) {
bottom = timePosition(seg.start, seg.end);
tdInner = bg.find('td:eq(' + (colI*dis + dit) + ') div div');
availWidth = tdInner.width();
availWidth = Math.min(availWidth-6, availWidth*.95); // TODO: move this to CSS
if (levelI) {
// indented and thin
width = availWidth / (levelI + forward + 1);
@@ -509,7 +511,7 @@ function Agenda(element, options, methods) {
width = ((availWidth / (forward + 1)) - (12/2)) * 2; // 12 is the predicted width of resizer =
}else{
// can be entire width, aligned left
width = availWidth * .96;
width = availWidth;
}
}
left = axisWidth + tdInner.position().left + // leftmost possible
@@ -560,6 +562,7 @@ function Agenda(element, options, methods) {
}
}
view.reportEventElement(event, eventElement);
view.trigger('eventAfterRender', event, event, eventElement);
}
}
}
+1 -1
View File
@@ -152,4 +152,4 @@
cursor: s-resize;
}
+1
View File
@@ -478,6 +478,7 @@ function Grid(element, options, methods) {
}
}
view.reportEventElement(event, eventElement);
view.trigger('eventAfterRender', event, event, eventElement);
levelHeight = Math.max(levelHeight, eventElement.outerHeight(true));
}
}
+30 -18
View File
@@ -210,7 +210,7 @@ $.fn.fullCalendar = function(options) {
}
}
function render(inc) {
function render(inc, updateSize) {
if (_element.offsetWidth !== 0) { // visible on the screen
if (inc || !view.date || +view.date != +date) { // !view.date means it hasn't been rendered yet
fixContentSize();
@@ -225,7 +225,7 @@ $.fn.fullCalendar = function(options) {
unfixContentSize();
view.date = cloneDate(date);
}
else if (view.sizeDirty) {
else if (view.sizeDirty || updateSize) {
view.updateSize();
view.rerenderEvents();
}
@@ -366,9 +366,16 @@ $.fn.fullCalendar = function(options) {
var publicMethods = {
render: render,
render: function() {
render(0, true); // true forces size to updated
},
changeView: changeView,
getView: function() {
return view;
},
//
// Navigation
//
@@ -688,22 +695,27 @@ $.fn.fullCalendar = function(options) {
}
$(window).resize(function() {
if (!contentSizeFixed && view.date) { // view.date means the view has been rendered
var rcnt = ++resizeCnt; // add a delay
setTimeout(function() {
if (rcnt == resizeCnt && !contentSizeFixed) {
var newWidth = element.width();
if (newWidth != elementWidth) {
elementWidth = newWidth;
fixContentSize();
view.updateSize();
unfixContentSize();
view.rerenderEvents(true);
sizesDirtyExcept(view);
view.trigger('windowResize', _element);
if (!contentSizeFixed) {
if (view.date) { // view has already been rendered
var rcnt = ++resizeCnt; // add a delay
setTimeout(function() {
if (rcnt == resizeCnt && !contentSizeFixed) {
var newWidth = element.width();
if (newWidth != elementWidth) {
elementWidth = newWidth;
fixContentSize();
view.updateSize();
unfixContentSize();
view.rerenderEvents(true);
sizesDirtyExcept(view);
view.trigger('windowResize', _element);
}
}
}
}, 200);
}, 200);
}else{
render(); // render for first time
// was probably in a 0x0 iframe that has just been resized
}
}
});
+1 -1
View File
@@ -108,7 +108,7 @@ var parseDate = fc.parseDate = function(s) {
var parseISO8601 = fc.parseISO8601 = function(s, ignoreTimezone) {
// derived from http://delete.me.uk/2005/03/iso8601.html
var d = s.match(/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?$/);
var d = s.match(/^([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?$/);
if (!d) return null;
var offset = 0;
var date = new Date(d[1], 0, 1);