⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icalendar.js

📁 初学者
💻 JS
📖 第 1 页 / 共 2 页
字号:
			};			expandingRules.length = 0;			cullingRules.length = 0;			switch (freq) {			  case "yearly":				var nextDate = new Date(dtstart);				set.push(nextDate);				while (nextDate < tmpUntil) {					nextDate.setYear(nextDate.getFullYear() + interval);					tmpDate = new Date(nextDate);					if (tmpDate < tmpUntil) {						set.push(tmpDate);					}				}				break;			  case "monthly":				nextDate = new Date(dtstart);				set.push(nextDate);				while (nextDate < tmpUntil) {					nextDate.setMonth(nextDate.getMonth() + interval);					var tmpDate = new Date(nextDate);					if (tmpDate < tmpUntil) {						set.push(tmpDate);					}				}				break;			  case "weekly":				nextDate = new Date(dtstart);				set.push(nextDate);				while (nextDate < tmpUntil) {					nextDate.setDate(nextDate.getDate() + (7 * interval));					var tmpDate = new Date(nextDate);					if (tmpDate < tmpUntil) {						set.push(tmpDate);					}				}				break;			  case "daily":				nextDate = new Date(dtstart);				set.push(nextDate);				while (nextDate < tmpUntil) {					nextDate.setDate(nextDate.getDate() + interval);					var tmpDate = new Date(nextDate);					if (tmpDate < tmpUntil) {						set.push(tmpDate);					}				}				break;			}			if ((rrule["bymonth"]) && (order["bymonth"] < freqInt)) {				for (var z = 0; z < rrule["bymonth"].length; z++) {					if (z == 0) {						for (var zz = 0; zz < set.length; zz++) {							set[zz].setMonth(rrule["bymonth"][z] - 1);						}					} else {						var subset = [];						for (var zz = 0; zz < set.length; zz++) {							var newDate = new Date(set[zz]);							newDate.setMonth(rrule[z]);							subset.push(newDate);						}						tmp = set.concat(subset);						set = tmp;					}				}			}			if (rrule["byweekno"] && !rrule["bymonth"]) {				dojo.debug("TODO: no support for byweekno yet");			}			if (rrule["byyearday"] && !rrule["bymonth"] && !rrule["byweekno"]) {				if (rrule["byyearday"].length > 1) {					var regex = "([+-]?)([0-9]{1,3})";					for (var z = 1; x < rrule["byyearday"].length; z++) {						var regexResult = rrule["byyearday"][z].match(regex);						if (z == 1) {							for (var zz = 0; zz < set.length; zz++) {								if (regexResult[1] == "-") {									dojo.date.setDayOfYear(set[zz], 366 - regexResult[2]);								} else {									dojo.date.setDayOfYear(set[zz], regexResult[2]);								}							}						} else {							var subset = [];							for (var zz = 0; zz < set.length; zz++) {								var newDate = new Date(set[zz]);								if (regexResult[1] == "-") {									dojo.date.setDayOfYear(newDate, 366 - regexResult[2]);								} else {									dojo.date.setDayOfYear(newDate, regexResult[2]);								}								subset.push(newDate);							}							tmp = set.concat(subset);							set = tmp;						}					}				}			}			if (rrule["bymonthday"] && (order["bymonthday"] < freqInt)) {				if (rrule["bymonthday"].length > 0) {					var regex = "([+-]?)([0-9]{1,3})";					for (var z = 0; z < rrule["bymonthday"].length; z++) {						var regexResult = rrule["bymonthday"][z].match(regex);						if (z == 0) {							for (var zz = 0; zz < set.length; zz++) {								if (regexResult[1] == "-") {									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {										set[zz].setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);									}								} else {									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {										set[zz].setDate(regexResult[2]);									}								}							}						} else {							var subset = [];							for (var zz = 0; zz < set.length; zz++) {								var newDate = new Date(set[zz]);								if (regexResult[1] == "-") {									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {										newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);									}								} else {									if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {										newDate.setDate(regexResult[2]);									}								}								subset.push(newDate);							}							tmp = set.concat(subset);							set = tmp;						}					}				}			}			if (rrule["byday"] && (order["byday"] < freqInt)) {				if (rrule["bymonth"]) {					if (rrule["byday"].length > 0) {						var regex = "([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})";						for (var z = 0; z < rrule["byday"].length; z++) {							var regexResult = rrule["byday"][z].match(regex);							var occurance = regexResult[2];							var day = regexResult[3].toLowerCase();							if (z == 0) {								for (var zz = 0; zz < set.length; zz++) {									if (regexResult[1] == "-") {										var numDaysFound = 0;										var lastDayOfMonth = dojo.date.getDaysInMonth(set[zz]);										var daysToSubtract = 1;										set[zz].setDate(lastDayOfMonth);										if (weekdays[set[zz].getDay()] == day) {											numDaysFound++;											daysToSubtract = 7;										}										daysToSubtract = 1;										while (numDaysFound < occurance) {											set[zz].setDate(set[zz].getDate() - daysToSubtract);											if (weekdays[set[zz].getDay()] == day) {												numDaysFound++;												daysToSubtract = 7;											}										}									} else {										if (occurance) {											var numDaysFound = 0;											set[zz].setDate(1);											var daysToAdd = 1;											if (weekdays[set[zz].getDay()] == day) {												numDaysFound++;												daysToAdd = 7;											}											while (numDaysFound < occurance) {												set[zz].setDate(set[zz].getDate() + daysToAdd);												if (weekdays[set[zz].getDay()] == day) {													numDaysFound++;													daysToAdd = 7;												}											}										} else {											var numDaysFound = 0;											var subset = [];											lastDayOfMonth = new Date(set[zz]);											var daysInMonth = dojo.date.getDaysInMonth(set[zz]);											lastDayOfMonth.setDate(daysInMonth);											set[zz].setDate(1);											if (weekdays[set[zz].getDay()] == day) {												numDaysFound++;											}											var tmpDate = new Date(set[zz]);											daysToAdd = 1;											while (tmpDate.getDate() < lastDayOfMonth) {												if (weekdays[tmpDate.getDay()] == day) {													numDaysFound++;													if (numDaysFound == 1) {														set[zz] = tmpDate;													} else {														subset.push(tmpDate);														tmpDate = new Date(tmpDate);														daysToAdd = 7;														tmpDate.setDate(tmpDate.getDate() + daysToAdd);													}												} else {													tmpDate.setDate(tmpDate.getDate() + daysToAdd);												}											}											var t = set.concat(subset);											set = t;										}									}								}							} else {								var subset = [];								for (var zz = 0; zz < set.length; zz++) {									var newDate = new Date(set[zz]);									if (regexResult[1] == "-") {										if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {											newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]);										}									} else {										if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) {											newDate.setDate(regexResult[2]);										}									}									subset.push(newDate);								}								tmp = set.concat(subset);								set = tmp;							}						}					}				} else {					dojo.debug("TODO: byday within a yearly rule without a bymonth");				}			}			dojo.debug("TODO: Process BYrules for units larger than frequency");			var tmp = recurranceSet.concat(set);			recurranceSet = tmp;		}	}	recurranceSet.push(dtstart);	return recurranceSet;}, getDate:function () {	return dojo.date.fromIso8601(this.dtstart.value);}});var VTimeZoneProperties = [_P("tzid", 1, true), _P("last-mod", 1), _P("tzurl", 1)];dojo.cal.iCalendar.VTimeZone = function (body) {	this.name = "VTIMEZONE";	this._ValidProperties = VTimeZoneProperties;	dojo.cal.iCalendar.Component.call(this, body);};dojo.inherits(dojo.cal.iCalendar.VTimeZone, dojo.cal.iCalendar.Component);var VTodoProperties = [_P("class", 1), _P("completed", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("percent", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("due", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")];dojo.cal.iCalendar.VTodo = function (body) {	this.name = "VTODO";	this._ValidProperties = VTodoProperties;	dojo.cal.iCalendar.Component.call(this, body);};dojo.inherits(dojo.cal.iCalendar.VTodo, dojo.cal.iCalendar.Component);var VJournalProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("last-mod", 1), _P("organizer", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("related"), _P("rstatus"), _P("rdate"), _P("rrule")];dojo.cal.iCalendar.VJournal = function (body) {	this.name = "VJOURNAL";	this._ValidProperties = VJournalProperties;	dojo.cal.iCalendar.Component.call(this, body);};dojo.inherits(dojo.cal.iCalendar.VJournal, dojo.cal.iCalendar.Component);var VFreeBusyProperties = [_P("contact"), _P("dtstart", 1), _P("dtend"), _P("duration"), _P("organizer", 1), _P("dtstamp", 1), _P("uid", 1), _P("url", 1), _P("attendee"), _P("comment"), _P("freebusy"), _P("rstatus")];dojo.cal.iCalendar.VFreeBusy = function (body) {	this.name = "VFREEBUSY";	this._ValidProperties = VFreeBusyProperties;	dojo.cal.iCalendar.Component.call(this, body);};dojo.inherits(dojo.cal.iCalendar.VFreeBusy, dojo.cal.iCalendar.Component);var VAlarmProperties = [[_P("action", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)]], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), _P("summary", 1, true), _P("attendee", "*", true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("attach", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("description", 1)]];dojo.cal.iCalendar.VAlarm = function (body) {	this.name = "VALARM";	this._ValidProperties = VAlarmProperties;	dojo.cal.iCalendar.Component.call(this, body);};dojo.inherits(dojo.cal.iCalendar.VAlarm, dojo.cal.iCalendar.Component);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -