Of course, but not without an external drag and drop code. Below I used the jQueryUI Sortable function and connected to its events.
To perform this work, the list of resources is filled through the function. This means that we can reorder the resources and then call the Callendar refetchResources method to extract and redraw the display. I added a sorting property to the calendar settings - resourceOrder: 'sortOrder' to make sure that it organizes resources correctly.
There are two different views with FullCalendar resources - vertical, with resources like html th cells and horizontal with resources like html td . With a vertical register, jQueryUI sorting events are lost and must be refetchResources after calling refetchResources . I have included the code for both layouts below.
To start, save the html in \fullcalendar-scheduler-1.6.2\demos\ - the paths belong to this folder.
Vertical view:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link href='../lib/fullcalendar.min.css' rel='stylesheet' /> <link href='../lib/fullcalendar.print.min.css' rel='stylesheet' media='print' /> <link href='../scheduler.min.css' rel='stylesheet' /> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src='../lib/moment.min.js'></script> <script src='../lib/jquery.min.js'></script> <script src='../lib/fullcalendar.min.js'></script> <script src='../scheduler.min.js'></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script> var resources = [ { id: 'a', sortOrder: 1}, { id: 'b', sortOrder: 2, eventColor: 'green' }, { id: 'c', sortOrder: 3, eventColor: 'orange' }, { id: 'd', sortOrder: 4 }, { id: 'e', sortOrder: 5 }, { id: 'f', sortOrder: 6, eventColor: 'red' }, { id: 'g', sortOrder: 7 } ]; $(function() { </script> <style> body { margin: 0; padding: 0; font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; font-size: 14px; } #calendar { max-width: 900px; margin: 50px auto; } </style> </head> <body> <div id='calendar'></div> <script> $(function() { var initialPos, finalPos; $("table thead tr").sortable({ items: "> th:gt(0)", axis: "x" }) .disableSelection() .on("sortstart", function(event, ui) { initialPos = ui.item.index() - 1; </script> </body> </html>
Horizontal view:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link href='../lib/fullcalendar.min.css' rel='stylesheet' /> <link href='../lib/fullcalendar.print.min.css' rel='stylesheet' media='print' /> <link href='../scheduler.min.css' rel='stylesheet' /> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src='../lib/moment.min.js'></script> <script src='../lib/jquery.min.js'></script> <script src='../lib/fullcalendar.min.js'></script> <script src='../scheduler.min.js'></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script> var resources = [ { id: 'a', sortOrder: 1}, { id: 'b', sortOrder: 2, eventColor: 'green' }, { id: 'c', sortOrder: 3, eventColor: 'orange' }, { id: 'd', sortOrder: 4 }, { id: 'e', sortOrder: 5 }, { id: 'f', sortOrder: 6, eventColor: 'red' }, { id: 'g', sortOrder: 7 } ]; $(function() { </script> <style> body { margin: 0; padding: 0; font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; font-size: 14px; } #calendar { max-width: 900px; margin: 50px auto; } </style> </head> <body> <div id='calendar'></div> <script> $(function() { var initialPos, finalPos; $("table tbody").sortable({ axis: "y" }) .disableSelection() .on("sortstart", function(event, ui) { initialPos = ui.item.index(); }) .on("sortupdate", function(event, ui) { finalPos = ui.item.index(); if (finalPos == -1) return; </script> </body> </html>