我正在使用日期选择器,但我需要每周(而不是每月)进行下一步操作。
Calendar.prototype.renderMonth = function renderMonth (d, offset) {
var calendar = this;
var params = calendar.params;
var value = calendar.value;
var rows = 1; // I put a limit of only one rows(instead of 6 rows)
var cols = 7;
if (params.renderMonth) {
return params.renderMonth.call(calendar, d, offset);
}
var date = new calendar.DateHandleClass(d);
var startWeek = getStartOfWeek(date);
var endWeek = getEndOfWeek(date);
var year = date.getFullYear();
var month = date.getMonth();
if (offset === 'next') {
if (month === 11) { date = new calendar.DateHandleClass(year + 1, 0); }
else { date = new calendar.DateHandleClass(year, month + 1, 1); }
}
if (offset === 'prev') {
if (month === 0) { date = new calendar.DateHandleClass(year - 1, 11); }
else { date = new calendar.DateHandleClass(year, month - 1, 1); }
}
if (offset === 'next' || offset === 'prev') {
month = date.getMonth();
year = date.getFullYear();
}
var currentValues = [];
var today = new calendar.DateHandleClass().setHours(0, 0, 0, 0);
var minDate = params.minDate ? new calendar.DateHandleClass(params.minDate).getTime() : null;
var maxDate = params.maxDate ? new calendar.DateHandleClass(params.maxDate).getTime() : null;
var daysInPrevMonth = calendar.daysInMonth(new calendar.DateHandleClass(date.getFullYear(), date.getMonth()).getTime() - (10 * 24 * 60 * 60 * 1000));
var daysInMonth = calendar.daysInMonth(date);
var minDayNumber = params.firstDay === 6 ? 0 : 1;
var monthHtml = '';
var dayIndex = 0 + (params.firstDay - 1);
var disabled;
var hasEvents;
var firstDayOfMonthIndex = new calendar.DateHandleClass(date.getFullYear(), date.getMonth()).getDay();
if (firstDayOfMonthIndex === 0) { firstDayOfMonthIndex = 7; }
if (value && value.length) {
for (var i = 0; i < value.length; i += 1) {
currentValues.push(new calendar.DateHandleClass(value[i]).setHours(0, 0, 0, 0));
}
}
for (var row = 1; row <= rows; row += 1) {
var rowHtml = '';
var loop = function ( col ) {
dayIndex += 1;
var dayDate = (void 0);
var dayNumber = dayIndex - firstDayOfMonthIndex;
var addClass = '';
if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {
dayIndex -= 7;
dayNumber = dayIndex - firstDayOfMonthIndex;
}
var weekDayIndex = ((col - 1) + params.firstDay > 6)
? ((col - 1 - 7) + params.firstDay)
: ((col - 1) + params.firstDay);
if (dayNumber < 0) {
dayNumber = daysInPrevMonth + dayNumber + 1;
addClass += ' calendar-day-prev';
dayDate = new calendar.DateHandleClass(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();
} else {
dayNumber += 1;
if (dayNumber > daysInMonth) {
dayNumber -= daysInMonth;
addClass += ' calendar-day-next';
dayDate = new calendar.DateHandleClass(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();
} else {
dayDate = new calendar.DateHandleClass(year, month, dayNumber).getTime();
}
}
// Today
if (dayDate === today) { addClass += ' calendar-day-today'; }
// Selected
if (params.rangePicker && currentValues.length === 2) {
if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) { addClass += ' calendar-day-selected'; }
} else if (currentValues.indexOf(dayDate) >= 0) { addClass += ' calendar-day-selected'; }
// Weekend
if (params.weekendDays.indexOf(weekDayIndex) >= 0) {
addClass += ' calendar-day-weekend';
}
// Events
var eventsHtml = '';
hasEvents = false;
if (params.events) {
if (calendar.dateInRange(dayDate, params.events)) {
hasEvents = true;
}
}
if (hasEvents) {
addClass += ' calendar-day-has-events';
eventsHtml = "\n <span class=\"calendar-day-events\">\n <span class=\"calendar-day-event\"></span>\n </span>\n ";
if (Array.isArray(params.events)) {
var eventDots = [];
params.events.forEach(function (ev) {
var color = ev.color || '';
if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {
eventDots.push(color);
}
});
eventsHtml = "\n <span class=\"calendar-day-events\">\n " + (eventDots.map(function (color) { return ("\n <span class=\"calendar-day-event\" style=\"" + (color ? ("background-color: " + color) : '') + "\"></span>\n ").trim(); }).join('')) + "\n </span>\n ";
}
}
// Custom Ranges
if (params.rangesClasses) {
for (var k = 0; k < params.rangesClasses.length; k += 1) {
if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {
addClass += " " + (params.rangesClasses[k].cssClass);
}
}
}
// Disabled
disabled = false;
if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {
disabled = true;
}
if (params.disabled) {
if (calendar.dateInRange(dayDate, params.disabled)) {
disabled = true;
}
}
if (disabled) {
addClass += ' calendar-day-disabled';
}
dayDate = new calendar.DateHandleClass(dayDate);
var dayYear = dayDate.getFullYear();
var dayMonth = dayDate.getMonth();
rowHtml += ("\n <div data-year=\"" + dayYear + "\" data-month=\"" + dayMonth + "\" data-day=\"" + dayNumber + "\" class=\"calendar-day" + addClass + "\" data-date=\"" + dayYear + "-" + dayMonth + "-" + dayNumber + "\">\n <span class=\"calendar-day-number\">" + dayNumber + eventsHtml + "</span>\n </div>").trim();
};
for (var col = 1; col <= cols; col += 1) loop( col );
monthHtml += "<div class=\"calendar-row\">" + rowHtml + "</div>";
}
monthHtml = "<div class=\"calendar-month\" data-year=\"" + year + "\" data-month=\"" + month + "\">" + monthHtml + "</div>";
return monthHtml;
};
这是组成日期选择器页面的代码。我只限制了一行(而不是6行),即7天。
我想针对以下内容更新此插件:
https://demo.mobiscroll.com/jquery/eventcalendar/week-view#
我需要帮助来创建最终结果:
之前: