Javascript 更新日历用户界面,以反映使用';戈托达特';功能 简化测试用例
HTML: 缺陷描述Javascript 更新日历用户界面,以反映使用';戈托达特';功能 简化测试用例,javascript,fullcalendar,fullcalendar-4,fullcalendar-scheduler,Javascript,Fullcalendar,Fullcalendar 4,Fullcalendar Scheduler,HTML: 缺陷描述 我正在尝试使用'gotoDate'函数更新日历的UI,以便传入该函数的日期将反映为所示范围的第一个日期。如果我在函数中传递的日期不在视图中显示的范围内,此功能将起作用。当我选择一个显示在当前范围内但不是第一个日期的日期时,UI不会更改。这似乎是预期的行为-如果您想要的日期在当前渲染区域之外,日历只会麻烦更改日期(这可能涉及重绘日期并重新渲染事件)。我没有写代码,但这似乎是为了节省时间。您可以随时输入一个选项,看看是否可以添加一个选项以使其工作(甚至可以自己编写代码,因为它是
我正在尝试使用'gotoDate'函数更新日历的UI,以便传入该函数的日期将反映为所示范围的第一个日期。如果我在函数中传递的日期不在视图中显示的范围内,此功能将起作用。当我选择一个显示在当前范围内但不是第一个日期的日期时,UI不会更改。这似乎是预期的行为-如果您想要的日期在当前渲染区域之外,日历只会麻烦更改日期(这可能涉及重绘日期并重新渲染事件)。我没有写代码,但这似乎是为了节省时间。您可以随时输入一个选项,看看是否可以添加一个选项以使其工作(甚至可以自己编写代码,因为它是开源的)。请注意,尽管它更可能在v5中实现,因为它现在已经取代了v4.P.s。你的例子有点奇怪,如果我可以这么说的话-你有这个“周”视图,你指定它为“resourceTimeline”,但它不是-你没有加载任何资源或时间线插件,所以它实际上是一个timeGridWeek视图,有一些自定义天,奇怪的24小时持续时间,只给它一个插槽,并将视图中第一天的日期放入左侧列中。这有点不直观…这是你试图做一个最小的例子的结果还是什么?我看不出它在实际使用中有什么意义。
<button
onclick="updateDateRange()"
>
Click
</button>
<div id='calendar'></div>
const updateDateRange = () => {
// calendar.gotoDate(new Date('11-04-2020')); // this will change the view because the date passed in the function isn't currently in view
calendar.gotoDate(new Date('10-04-2020')); // this will not update the view with the passed in date as the first date in range because it's already in view
}
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
events: [
{
id: 'a',
resourceId: 'a',
title: 'All Day Event',
start: '2020-09-01',
},
{
title: 'Long Event',
start: '2020-09-07',
end: '2020-09-10',
},
],
allDaySlot: false,
displayEventTime: false,
header: false,
plugins: [ 'dayGrid', 'timeGrid', 'rrule'],
defaultView: 'timeGridWeek',
resourceOrder: 'sort',
defaultDate: new Date('10-01-2020'),
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
views: {
month: {
type: 'dayGridMonth',
},
week: {
type: 'resourceTimeline',
slotLabelFormat: [
{
weekday: 'short',
day: 'numeric',
month: 'short',
},
],
resourceLabelText: 'Property',
duration: {
days: 14, // getDefaultWeekDuration(start, end)
},
dateIncrement: {
days: 1,
},
slotDuration: '24:00:00',
},
},
// eventRender: ({ date, el, view }) => {
// },
themeSystem: 'bootstrap',
eventOverlap: false,
contentHeight: 'auto',
resourceAreaWidth: '10%',
resources: [{ id: 'a', title: 'Auditorium A' }],
});
calendar.render();