Disable past days in Fullcalendar - fullcalendar

I'm using fullcalendar with agendaWeek as defaultView. How can i make past days as non selectable .
For ex today is 15th August and i don't want to let user to select dates older , like on 13th August.
Thank you

It seems that the best solution is to use the option validRange
validRange: {
start: today,
end: '2025-06-01'
},
where
var today = new Date();
end the end date is some date in distant future.

Related

Fullcalendar Year view (December not showed)

I need to create a view of all months in a year in fullcalendar.
I've found this nice example that work except DECEMBER not appear.
https://codepen.io/webrexRavi/pen/yqMqGX
I don't understand what's wrong in the code:
views: {
timelineCustom: {
type: 'timeline',
buttonText: 'Year',
dateIncrement: { years: 1 },
slotDuration: { months: 1 },
visibleRange: function (currentDate) {
return {
start: currentDate.clone().startOf('year'),
end: currentDate.clone().endOf("year")
};
}
}
}
Well just asumed the currentDate counts with months starting from zero and visible range expects a value between 1-12 for months, currentDate.clone().endOf("year") would then display until november ( december is the 11th month when counting from zero).
If you cange it to
currentDate.clone().endOf("year") +1;
it displays december too.
Edit:
The fullcalendar documentation says following about visibleRange:
The visibleRange object must have start/end properties that resolve to Moment values. The end moment is exclusive, just like all other places in the API.
So if you want the range to include the last day, you have to add one day.
currentDate.clone().endOf("year").add(1,'day');

Custom View with dynamic visible Range

I'm trying to build a custom view with Fullcalendar with the following features:
The view I want to show is similar to the "timelineMonth" view, with the difference that it should start 3 days before the 1st of the requested month, and should end 3 days after the last day of the requested month. It's a sort of "extendedMonth" View
I also require that the first visible day is the first of the month (and the 3 days before the first will be visible through scrolling)
the view title should be the name of the requested month (not the range of the 3 months showed)
I've tried with custom Views example with visible range option, but I can't find the correct configuration.
This is my current code. The date range is correct, but the first visibile day is not the first offline the month (it's the -3 days) and the title shows the range of months (example: aug-oct)
views: {
extendedMonth: {
type: 'timeline',
dateAlignment: 'month',
titleFormat: 'MMM',
visibleRange: function(currentDate) {
var startOfMonth = currentDate.clone().startOf('month');
var endOfMonth = currentDate.clone().endOf('month');
return {
start: startOfMonth.clone().subtract(2, 'days'),
end: endOfMonth.clone().add(2, 'days')
};
},
buttonText: 'Extended Month'
}
}
Thank you for the help!

FullCalendar how to display day name above day view

I am using the FullCalendar scheduler and wish to have my calendar set to Agenda Day view, with the option of selecting Week or Month. However, my concern is that the actual day of the week does not show in the default view, only the date as follows:
January 15th, 2018
I really want to have something like:
Monday, January 15th
I don't really even need the year.
The days do appear in week and month view no problem, but I cannot find a setting that allows the day to appear for the day view, which will be extremely useful when users are wanting to skip to 'next Friday' for example without having to consult another view to find out the actual date.
Any ideas?
This is controlled by the "titleFormat" option. You can combine this with view-specific options to change the title only for "day" views:
views: {
day: {
titleFormat: 'dddd, MMMM Do YYYY'
}
},
See http://jsfiddle.net/sbxpv25p/105/ for a working demo.
See also
1) https://fullcalendar.io/docs/text/titleFormat/ (title format option)
2) https://fullcalendar.io/docs/views/View-Specific-Options/ (view specific options)
3) https://fullcalendar.io/docs/utilities/date_formatting_string/ and http://momentjs.com/docs/#/displaying/format/ (characters which can be used to format the date)
With Fullcalendar v5 the syntax changed a little. The format is defined by the local. Weekdays are added by an additional attribute and date formatting:
locale: 'en',
views: {
day: {
titleFormat: {
year: 'numeric', month: 'long', day: 'numeric', weekday: 'short'
},
},
},
See
https://fullcalendar.io/docs/v5/locale
https://fullcalendar.io/docs/v5/titleFormat
https://fullcalendar.io/docs/v5/date-formatting

Design a custom year view with 12 month slots

Sample View:
I would like to create a custom year view to show the timeline in every month slots. I can use fullcalendar-scheduler with a custom view and define like this:
views: {
timelineCustom: {
type: 'timeline',
buttonText: 'Year View',
duration: {year:1},
slotDuration: {month:1}
}
}
However, there is no way to set up a fiscal year view with month start at April 1st and end at March 31st next year. And also, a timeline bar will cover a whole month slot even though an event only starts from the second half of that month.
Your first problem - starting the view in April and ending in March of the following year, can be solved using the new "visibleRange" option. This lets you supply start/end dates for the view, relative to the "currentDate" (i.e. the date fullCalendar curently regards as being selected). You also have to set the "dateIncrement" option, to ensure that Next/Previous increment the current date by 1 year.
N.B. This requires fullCalendar 3.3.0 and Scheduler 1.6.0, or later.
timelineCustom: {
type: 'timeline',
buttonText: 'Year View',
dateIncrement: { years: 1 },
slotDuration: { months: 1 },
visibleRange: function(currentDate) {
return {
start: currentDate.clone().startOf('year').add({ months: 3}),
end: currentDate.clone().endOf("year").add({ months: 4})
};
}
}
See https://fullcalendar.io/docs/current_date/visibleRange/ and https://fullcalendar.io/docs/current_date/dateIncrement/ for more details
However, your issue where the timeline bar covers a whole month slot even though an event only starts in the second half of a month, is not really solvable in the way you want. The whole point of "slots" is to be the minimum time that an event can be displayed for in that particular view. If you want it to be more subtle than that, you would have to define shorter slots. The same thing happens in fullCalendar's default "Month" (non-timeline) view - all events cover a whole day even if they're timed, but you can see the times in the description. I see in your example you have already got the dates of those events displayed in the description, so it should be reasonably clear for your users.
I suggest your users click on the Month View to get a more detailed breakdown with the slot durations more accurately displayed. Either that or you have to compromise and set slotDuration to something smaller.

Make night mode on fullcalendar

I need a option for night mode in a fullcalendar(adamshaw) agenda week view, that is it show the night time only for example 8pm to 8am (from top 8pm to continue until 8am) is there any help regarding this?
Check out the businessHours on the fullcalendar docs. You can specify start and end times and optionally days of the week.
{
start: '10:00', // a start time (10am in this example)
end: '18:00', // an end time (6pm in this example)
dow: [ 1, 2, 3, 4 ]
// days of week. an array of zero-based day of week integers (0=Sunday)
// (Monday-Thursday in this example)
}
Very easy:
minTime: "20:00",
maxTime: "32:00",
Use this in fullCalendar options when creating it.

Resources