全日历时间线视图
FullCalendar Time Line View
我正在使用带有时间网格插件的完整日历,一切正常。我想更改过去日期和时间的颜色。通过 dayRender 事件,我可以更改前一个日期的颜色,但不能更改时间,例如查看从 2019 年 9 月 8 日星期日到 2019 年星期六 14 日的一周。并在 2019 年 9 月 10 日上午 9 点打开页面,我应该在 2019 年 9 月 10 日之前更改颜色上午 9 点,但我可以做到 2019 年 9 月 9 日。
我怎样才能包括时间。我的密码笔
https://codepen.io/milindsaraswala/pen/VwZXpRM
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'resourceTimeGrid' ],
timeZone: 'UTC',
defaultView: 'resourceTimeGridFourDay',
soltDuration: '00:30:00',
slotLabelInterval: '00:30:00',
minTime:'07:00:00',
maxTime:'24:00:00',
slotLabelFormat:{
hour: 'numeric',
minute: '2-digit',
omitZeroMinute: false,
meridiem: 'short'
},
header: {
left: 'prev,next',
center: 'title',
right: 'resourceTimeGridDay,resourceTimeGridFourDay'
},
views: {
resourceTimeGridFourDay: {
type: 'resourceTimeGrid',
duration: { weeks:1},
buttonText: '7 days'
}
},
resources: [
{ id: 'a', title: 'Room A' },
],
//events: 'https://fullcalendar.io/demo-events.json?with-resources=2',
events:events,
dayRender:function(day){
if (moment(day.date).isBefore(moment())) {
day.el.classList.add('disabledDates');
}
}
});
calendar.render();
});
您可以使用没有结束日期的 validRange 来更严格地限制前几天:
validRange: function(nowDate) {
return {
start: nowDate
};
},
除了在视觉上使日期变灰之外,这还会停止向其添加或拖放事件。
将当天的 次 变灰会出现更多问题。这是因为没有单个 HTML 元素表示特定日期的 "time slot",您可以将其作为目标以进行每小时甚至每分钟的限制。我认为您在这里可以做的最好的事情是创建一个 background event 涵盖一天中直到当前时间的时间段:
dayRender: function(day) {
var d = moment(day.date).startOf("day");
var today = moment().startOf("day");
if (d.isSame(today)) {
var now = moment();
var evt = {
start: today.format("YYYY-MM-DD HH:mm"),
end: now.format("YYYY-MM-DD HH:mm"),
rendering: "background",
className: "disabledDates"
}
calendar.addEvent(evt);
}
}
如果您随后想限制在背景事件上创建/拖动其他事件,您可以通过一些 date selection settings.
我正在使用带有时间网格插件的完整日历,一切正常。我想更改过去日期和时间的颜色。通过 dayRender 事件,我可以更改前一个日期的颜色,但不能更改时间,例如查看从 2019 年 9 月 8 日星期日到 2019 年星期六 14 日的一周。并在 2019 年 9 月 10 日上午 9 点打开页面,我应该在 2019 年 9 月 10 日之前更改颜色上午 9 点,但我可以做到 2019 年 9 月 9 日。
我怎样才能包括时间。我的密码笔 https://codepen.io/milindsaraswala/pen/VwZXpRM
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'resourceTimeGrid' ],
timeZone: 'UTC',
defaultView: 'resourceTimeGridFourDay',
soltDuration: '00:30:00',
slotLabelInterval: '00:30:00',
minTime:'07:00:00',
maxTime:'24:00:00',
slotLabelFormat:{
hour: 'numeric',
minute: '2-digit',
omitZeroMinute: false,
meridiem: 'short'
},
header: {
left: 'prev,next',
center: 'title',
right: 'resourceTimeGridDay,resourceTimeGridFourDay'
},
views: {
resourceTimeGridFourDay: {
type: 'resourceTimeGrid',
duration: { weeks:1},
buttonText: '7 days'
}
},
resources: [
{ id: 'a', title: 'Room A' },
],
//events: 'https://fullcalendar.io/demo-events.json?with-resources=2',
events:events,
dayRender:function(day){
if (moment(day.date).isBefore(moment())) {
day.el.classList.add('disabledDates');
}
}
});
calendar.render();
});
您可以使用没有结束日期的 validRange 来更严格地限制前几天:
validRange: function(nowDate) {
return {
start: nowDate
};
},
除了在视觉上使日期变灰之外,这还会停止向其添加或拖放事件。
将当天的 次 变灰会出现更多问题。这是因为没有单个 HTML 元素表示特定日期的 "time slot",您可以将其作为目标以进行每小时甚至每分钟的限制。我认为您在这里可以做的最好的事情是创建一个 background event 涵盖一天中直到当前时间的时间段:
dayRender: function(day) {
var d = moment(day.date).startOf("day");
var today = moment().startOf("day");
if (d.isSame(today)) {
var now = moment();
var evt = {
start: today.format("YYYY-MM-DD HH:mm"),
end: now.format("YYYY-MM-DD HH:mm"),
rendering: "background",
className: "disabledDates"
}
calendar.addEvent(evt);
}
}
如果您随后想限制在背景事件上创建/拖动其他事件,您可以通过一些 date selection settings.