Explorar o código

option getter, small optimizations, iframe fix for IE, getDate

Adam Shaw %!s(int64=16) %!d(string=hai) anos
pai
achega
52df18a83b
Modificáronse 2 ficheiros con 36 adicións e 7 borrados
  1. 24 5
      src/main.js
  2. 12 2
      tests/methods.html

+ 24 - 5
src/main.js

@@ -213,9 +213,8 @@ $.fn.fullCalendar = function(options) {
 		}
 		
 		function render(inc, forceUpdateSize) {
-			if (_element.offsetWidth !== 0) { // visible on the screen
-				if (!elementWidth) {
-					elementWidth = element.width();
+			if ((elementWidth = _element.offsetWidth) !== 0) { // visible on the screen
+				if (!contentHeight) {
 					contentHeight = calculateContentHeight();
 				}
 				if (inc || !view.date || +view.date != +date) { // !view.date means it hasn't been rendered yet
@@ -286,9 +285,13 @@ $.fn.fullCalendar = function(options) {
 		// called when we know the element size has changed
 		function sizeChanged(fix) {
 			contentHeight = calculateContentHeight();
-			if (fix) fixContentSize();
+			if (fix) {
+				fixContentSize();
+			}
 			view.updateSize(contentHeight);
-			if (fix) unfixContentSize();
+			if (fix) {
+				unfixContentSize();
+			}
 			sizesDirtyExcept(view);
 			view.rerenderEvents(true);
 		}
@@ -403,7 +406,14 @@ $.fn.fullCalendar = function(options) {
 				return view;
 			},
 			
+			getDate: function() {
+				return date;
+			},
+			
 			option: function(name, value) {
+				if (value == undefined) {
+					return options[name];
+				}
 				if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') {
 					options[name] = value;
 					sizeChanged();
@@ -751,6 +761,15 @@ $.fn.fullCalendar = function(options) {
 		
 		// let's begin...
 		changeView(options.defaultView);
+		
+		// in IE, when in 0x0 iframe, initial resize never gets called, so do this...
+		if ($.browser.msie && !$('body').width()) {
+			setTimeout(function() {
+				render();
+				content.hide().show(); // needed for IE 6
+				view.rerenderEvents(); // needed for IE 7
+			}, 0);
+		}
 	
 	});
 	

+ 12 - 2
tests/methods.html

@@ -111,6 +111,14 @@
 		console.log(view.start + ' --- ' + view.end + ' "' + view.title + '"');
 	}
 	
+	function getDate() {
+		console.log(cal.fullCalendar('getDate'));
+	}
+	
+	function optionGetter() {
+		console.log(cal.fullCalendar('option', 'editable'));
+	}
+	
 	var gcalFeed = $.fullCalendar.gcalFeed("http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic");
 	
 	var jsonFeed = "../examples/json-events.php";
@@ -163,8 +171,10 @@
 <button onclick="cal.fullCalendar('changeView', 'month')">change to month</button>
 <button onclick="cal.fullCalendar('changeView', 'basicWeek')">change to basicWeek</button>
 <button onclick="cal.fullCalendar('changeView', 'basicDay')">change to basicDay</button>
-<button onclick="getView()">view info</button>
-<button onclick="cal.width(1100)" onclick=''>change size</button>
+<button onclick="getView()">getView</button>
+<button onclick="getDate()">getDate</button>
+<button onclick="optionGetter()">option getter</button>
+<button onclick="cal.width(1100)">change size</button>
 <button onclick="cal.fullCalendar('render')">render</button>
 
 </p>