CR/LF correction

This commit is contained in:
pucherot
2021-01-05 14:51:52 +01:00
parent c6f11a428c
commit 766671ad6d
7156 changed files with 671400 additions and 1 deletions

View File

@@ -0,0 +1,277 @@
v1.9.4 (2018-03-27)
-------------------
Require fullcalendar 3.9.x, solving #4089
v1.9.3 (2018-03-04)
-------------------
- error second time changing to timeline view with resource-specific business hours (#414)
- typescript definition doesn't expose OptionsInput (#421)
- expose typescript defs for ResourceInput & ResourceSourceInput
v1.9.2 (2018-01-23)
-------------------
Bugfixes:
- fix event resize highlight not being unrendered (#406)
- vert resource view fast navigation with refetchResourcesOnNavigate, breaks ([core-4009])
- long-press touch selecting one event after another, gets confused (#410)
- firstDay option not considered when slotLabelInterval is days (#408)
- TypeScript definition file not compatible with noImplicitAny (#405)
[core-4009]: https://github.com/fullcalendar/fullcalendar/issues/4009
v1.9.1 (2017-12-18)
-------------------
- exposed MAX_TIMELINE_SLOTS (#47)
- TypeScript definition file (scheduler.d.ts) included in npm package (#213)
- CoffeeScript within codebase converted to TypeScript
- more robust testing environment
v1.9.0 (2017-11-13)
-------------------
Bugfixes:
- when navigating prev/next using resource column grouping, renders duplicate resources (#380)
- when navigating prev/next, prevent unnecessary resource rerenders (introduced in v1.8.0)
- `addResource` with parentId does not render with correct nesting (#379)
- `resourcesInitiallyExpanded` not compatible with resource groups (#378)
- switching to view with async resources, nowIndicator causes JS error ([core-3918])
[core-3918]: https://github.com/fullcalendar/fullcalendar/issues/3918
v1.8.1 (2017-10-23)
-------------------
Bugfixes:
- `resourceGroupField` not working (#370)
- timeline slot headers would not render in localized text (#367)
- fc-content-skeleton DOM element would repeatedly render on navigation in
vertical resource view (#363)
v1.8.0 (2017-10-10)
-------------------
Features:
- `resourcesInitiallyExpanded` set to `false` for collapsing by default (#40)
- performance gains with positioning/sizing (#277, #320) thx @MartijnWelker
Bugfixes:
- `updateEvent` makes events disappear (#350)
- `addResource` scrollTo param broken (#335)
- `filterResourcesWithEvents` considers current view's range (#334)
Incompatibilities:
- Vertical resource view (agenda or basic), when waiting to receive asynchronous
event sources, previously would render generic date columns as placeholders.
Now, empty rectangles will simply be rendered.
v1.7.1 (2017-09-06)
-------------------
- vertical divider in timeline view in bootstrap3 theme ugly (#341)
- render all helper elements while DnD, an event w/ multiple resourceIds (#155)
- Composer.json fixes, Packagist now working
v1.7.0 (2017-08-30)
-------------------
- Bootstrap 3 theme support (more info in [core release notes][core-3.5.0])
- fixed resources businessHours leak in other views (#204)
- fixed timeline business hours on single day not rendered (#299)
[core-3.5.0]: https://github.com/fullcalendar/fullcalendar/releases/tag/v3.5.0
v1.6.2 (2017-04-27)
-------------------
- composer.js for Composer (PHP package manager) (#291)
- fixed removed background events coming back when collapsing & expanding a resource (#295)
- fixed refetchResourcesOnNavigate with refetchResources not receiving start & end (#296)
- internal refactor of async systems
v1.6.1 (2017-04-01)
-------------------
Bugfixes (code changes in v3.3.1 of core project):
- stale calendar title when navigate away from then back to the a view
- js error when gotoDate immediately after calendar initialization
- agenda view scrollbars causes misalignment in jquery 3.2.1
- navigation bug when trying to navigate to a day of another week
- dateIncrement not working when duration and dateIncrement have different units (#287)
v1.6.0 (2017-03-23)
-------------------
Adjustments to accommodate all date-related features in core v3.3.0, including:
- `visibleRange` - complete control over view's date range
- `validRange` - restrict date range
- `changeView` - pass in a date or visibleRange as second param
- `dateIncrement` - customize prev/next jump (#36)
- `dateAlignment` - custom view alignment, like start-of-week
- `dayCount` - force a fixed number-of-days, even with hiddenDays
- `disableNonCurrentDates` - option to hide day cells for prev/next months
Bugfixes:
- event titles strangely positioned while touch scrolling in Timeline (#223)
v1.5.1 (2017-02-14)
-------------------
- dragging an event that lives on multiple resources should maintain the
non-dragged resource IDs when dropped (#111)
- resources function/feed should receive start/end params (#246)
(when `refetchResourcesOnNavigate` is true)
- iOS 10, unwanted scrolling while dragging events/selection (#230)
- timeline, clicking scrollbars triggers dayClick (#256)
- timeline, external drag element droppable when outside of calendar (#256)
v1.5.0 (2016-12-05)
-------------------
- dynamically refetch resources upon navigation (#12):
- `refetchResourcesOnNavigate`
- only display resources with events (#98):
- `filterResourcesWithEvents`
- `navLinks` support (#218)
- timeline vertical scrolling wrongly resetting (#238)
- missing bottom border on last resource (#162)
- businessHours occupying whole view wouldn't display (#233)
- text-decoration on event elements lost when scrolling (#229)
- fc-today and other day-related classes in timeline header cells
- fix touch scrolling glitchiness regression
- made gulp-based build system consistent with core project
- as with the corresponding core project release, there was an internal refactor
related to timing of rendering and firing handlers. calls to rerender the current
date-range/events/resources from within handlers might not execute immediately.
instead, will execute after handler finishes.
v1.4.0 (2016-09-04)
-------------------
- `eventResourceEditable` for control over events changing resources (#140)
- `eventConstraint` accepts `resourceId` or `resourceIds` (#50)
- `eventAllow`, programmatic control over event dragging (#50)
- `selectAllow`, programmatic control over allowed selection
- adjustments to work with v3 of the core project
v1.3.3 (2016-07-31)
-------------------
- business hours per-resource (#61)
- fix non-business days without styles (#109)
- fix bug with scrollbars causing selection after the first (#192)
- certain rendering actions, such as initial rendering of a resource view,
would not always execute synchronously once jQuery 3 was introduced.
fixes have been made to ensure synchronous execution with jQuery 3.
- integration with TravisCI
v1.3.2 (2016-06-02)
-------------------
- refetchResources and view switching causes blank screen (#179)
- UMD definition for Node, defined core dependency (#172)
- setResources should return an array copy (#160)
- revertFunc misbehaves for events specified with multiple resourceIds (#156)
- nowIndicator sometimes incorrectly positioned on wide screens (#130)
- memory leak upon destroy (#87)
v1.3.1 (2016-05-01)
-------------------
- events offset by minTime in timelineWeek view (#151)
- icons for prev/next not working in MS Edge
v1.3.0 (2016-04-23)
-------------------
touch support introduced in core v2.7.0
v1.2.1 (2016-02-17)
-------------------
- allow minTime/maxTime to be negative or beyond 24hrs in timeline (#112)
- fix for nowIndicator not updating position on window resize (#130)
- fix for events resourceId/resourceIds being non-string integers (#120)
- fix external drag handlers not being unbound (#117, #118)
- fix refetchResources should rerender resources in vertical view (#100)
- fix events incorrectly rendered when clipped by minTime/maxTime (#96)
- fix resourceRender's resource object param when resources above dates (#91)
- fix eventOverlap:false with eventResourceField (#86)
- fix license key warning being rendered multiple times (#75)
- fix broken Resource Object eventClassName property
- fix separate event instances via multiple resourceIds, wrong color assignment
v1.2.0 (2016-01-07)
-------------------
- current time indicator (#9)
- resourceIds, allows associating an event to multiple resources (#13)
- pass resourceId into the drop event (#27)
- fix for refetchEvents reseting the scroll position (#89)
- fix for addResource/removeResource failing to rerender in vertical views (#84)
- fix for timeline resource rows sometimes being misaligned when column grouping (#80)
- fix for timeline events not rendering correctly when minTime specified (#78)
- fix for erradic resource ordering in verical views when no resourceOrder specified (#74)
- fix bug where external event dragging would not respect eventOverlap (#72)
v1.1.0 (2015-11-30)
-------------------
- vertical resource view (#5)
- fix event overlap not working in day/week/month view (#24)
v1.0.2 (2015-10-18)
-------------------
- incorrect rendering of events when using slotDuration equal to one day (#49)
- minimum jQuery is now v1.8.0 (solves #44)
- more tests
v1.0.1 (2015-10-13)
-------------------
- fix event rendering coordinates when timezone (#15)
- fix event rendering in non-expanded non-rendered resource rows (#30)
- fix accidentally caching result of resource fetching (#41)
- fix for dragging between resources when custom eventResourceField (#18)
- fix scroll jumping bug (#25)
- relax bower's ignore (#21)
v1.0.0 (2015-08-17)
-------------------
Issues resolved since v1.0.0-beta:
[2523], [2533], [2534], [2562]
[2523]: https://code.google.com/p/fullcalendar/issues/detail?id=2523
[2533]: https://code.google.com/p/fullcalendar/issues/detail?id=2533
[2534]: https://code.google.com/p/fullcalendar/issues/detail?id=2534
[2562]: https://code.google.com/p/fullcalendar/issues/detail?id=2562

View File

@@ -0,0 +1,34 @@
## Reporting Bugs
Each bug report MUST have a [Codepen/JSFiddle] recreation before any work can begin. [further instructions »](http://fullcalendar.io/wiki/Reporting-Bugs/)
## Requesting Features
Please search the [Issue Tracker] to see if your feature has already been requested, and if so, subscribe to it. Otherwise, read these [further instructions »](http://fullcalendar.io/wiki/Requesting-Features/)
## Contributing Features
Each new feature should be designed as robustly as possible and be useful beyond the immediate usecase it was initially designed for. Feel free to start a ticket discussing the feature's specs before coding.
## Contributing Bugfixes
In the description of your [Pull Request][Using Pull Requests], please include recreation steps for the bug as well as a [JSFiddle/JSBin] demo. Communicating the buggy behavior is a requirement before a merge can happen.
## Other Ways to Contribute
[Read about other ways to contribute »](http://fullcalendar.io/wiki/Contributing/)
## What to edit
When modifying files, please do not edit the generated or minified files in the `dist/` directory. Please edit the original `src/` files.
[Codepen/JSFiddle]: http://fullcalendar.io/wiki/Reporting-Bugs/
[Issue Tracker]: https://github.com/fullcalendar/fullcalendar-scheduler/issues
[Using Pull Requests]: https://help.github.com/articles/using-pull-requests/

View File

@@ -0,0 +1,18 @@
For complete licensing information, visit:
http://fullcalendar.io/scheduler/license/
FullCalendar Scheduler is tri-licensed, meaning you must choose
one of three licenses to use. Here is a summary of those licenses:
- Commercial License
(a paid license, meant for commercial use)
http://fullcalendar.io/scheduler/license-details/
- Creative Commons Non-Commercial No-Derivatives
(meant for trial and non-commercial use)
https://creativecommons.org/licenses/by-nc-nd/4.0/
- GPLv3 License
(meant for open-source projects)
http://www.gnu.org/licenses/gpl-3.0.en.html

View File

@@ -0,0 +1,106 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
// background event, associated with a resource
{ id: 'bg1', resourceId: 'b', rendering: 'background', start: '2018-04-07T01:00:00', end: '2018-04-07T04:00:00' },
// background event, NOT associated with a resource
{ id: 'bg2', rendering: 'background', start: '2018-04-07T05:00:00', end: '2018-04-07T08:00:00' },
// normal events...
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,113 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceAreaWidth: '40%',
resourceColumns: [
{
group: true,
labelText: 'Building',
field: 'building'
},
{
labelText: 'Room',
field: 'title'
},
{
labelText: 'Occupancy',
field: 'occupancy'
}
],
resources: [
{ id: 'a', building: '460 Bryant', title: 'Auditorium A', occupancy: 40 },
{ id: 'b', building: '460 Bryant', title: 'Auditorium B', occupancy: 40, eventColor: 'green' },
{ id: 'c', building: '460 Bryant', title: 'Auditorium C', occupancy: 40, eventColor: 'orange' },
{ id: 'd', building: '460 Bryant', title: 'Auditorium D', occupancy: 40, children: [
{ id: 'd1', title: 'Room D1', occupancy: 10 },
{ id: 'd2', title: 'Room D2', occupancy: 10 }
] },
{ id: 'e', building: '460 Bryant', title: 'Auditorium E', occupancy: 40 },
{ id: 'f', building: '460 Bryant', title: 'Auditorium F', occupancy: 40, eventColor: 'red' },
{ id: 'g', building: '564 Pacific', title: 'Auditorium G', occupancy: 40 },
{ id: 'h', building: '564 Pacific', title: 'Auditorium H', occupancy: 40 },
{ id: 'i', building: '564 Pacific', title: 'Auditorium I', occupancy: 40 },
{ id: 'j', building: '564 Pacific', title: 'Auditorium J', occupancy: 40 },
{ id: 'k', building: '564 Pacific', title: 'Auditorium K', occupancy: 40 },
{ id: 'l', building: '564 Pacific', title: 'Auditorium L', occupancy: 40 },
{ id: 'm', building: '564 Pacific', title: 'Auditorium M', occupancy: 40 },
{ id: 'n', building: '564 Pacific', title: 'Auditorium N', occupancy: 40 },
{ id: 'o', building: '564 Pacific', title: 'Auditorium O', occupancy: 40 },
{ id: 'p', building: '564 Pacific', title: 'Auditorium P', occupancy: 40 },
{ id: 'q', building: '564 Pacific', title: 'Auditorium Q', occupancy: 40 },
{ id: 'r', building: '564 Pacific', title: 'Auditorium R', occupancy: 40 },
{ id: 's', building: '564 Pacific', title: 'Auditorium S', occupancy: 40 },
{ id: 't', building: '564 Pacific', title: 'Auditorium T', occupancy: 40 },
{ id: 'u', building: '564 Pacific', title: 'Auditorium U', occupancy: 40 },
{ id: 'v', building: '564 Pacific', title: 'Auditorium V', occupancy: 40 },
{ id: 'w', building: '564 Pacific', title: 'Auditorium W', occupancy: 40 },
{ id: 'x', building: '564 Pacific', title: 'Auditorium X', occupancy: 40 },
{ id: 'y', building: '564 Pacific', title: 'Auditorium Y', occupancy: 40 },
{ id: 'z', building: '564 Pacific', title: 'Auditorium Z', occupancy: 40 }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,108 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceAreaWidth: '30%',
resourceColumns: [
{
labelText: 'Room',
field: 'title'
},
{
labelText: 'Occupancy',
field: 'occupancy'
}
],
resources: [
{ id: 'a', title: 'Auditorium A', occupancy: 40 },
{ id: 'b', title: 'Auditorium B', occupancy: 40, eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', occupancy: 40, eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', occupancy: 40, children: [
{ id: 'd1', title: 'Room D1', occupancy: 10 },
{ id: 'd2', title: 'Room D2', occupancy: 10 }
] },
{ id: 'e', title: 'Auditorium E', occupancy: 40 },
{ id: 'f', title: 'Auditorium F', occupancy: 40, eventColor: 'red' },
{ id: 'g', title: 'Auditorium G', occupancy: 40 },
{ id: 'h', title: 'Auditorium H', occupancy: 40 },
{ id: 'i', title: 'Auditorium I', occupancy: 40 },
{ id: 'j', title: 'Auditorium J', occupancy: 40 },
{ id: 'k', title: 'Auditorium K', occupancy: 40 },
{ id: 'l', title: 'Auditorium L', occupancy: 40 },
{ id: 'm', title: 'Auditorium M', occupancy: 40 },
{ id: 'n', title: 'Auditorium N', occupancy: 40 },
{ id: 'o', title: 'Auditorium O', occupancy: 40 },
{ id: 'p', title: 'Auditorium P', occupancy: 40 },
{ id: 'q', title: 'Auditorium Q', occupancy: 40 },
{ id: 'r', title: 'Auditorium R', occupancy: 40 },
{ id: 's', title: 'Auditorium S', occupancy: 40 },
{ id: 't', title: 'Auditorium T', occupancy: 40 },
{ id: 'u', title: 'Auditorium U', occupancy: 40 },
{ id: 'v', title: 'Auditorium V', occupancy: 40 },
{ id: 'w', title: 'Auditorium W', occupancy: 40 },
{ id: 'x', title: 'Auditorium X', occupancy: 40 },
{ id: 'y', title: 'Auditorium Y', occupancy: 40 },
{ id: 'z', title: 'Auditorium Z', occupancy: 40 }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,132 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'promptResource today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
customButtons: {
promptResource: {
text: '+ room',
click: function() {
var title = prompt('Room name');
if (title) {
$('#calendar').fullCalendar(
'addResource',
{ title: title },
true // scroll to the new resource?
);
}
}
}
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resourceRender: function(resource, cellEls) {
cellEls.on('click', function() {
if (confirm('Are you sure you want to delete ' + resource.title + '?')) {
$('#calendar').fullCalendar('removeResource', resource);
}
});
},
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</script>
<style>
body {
margin: 0;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
p {
text-align: center;
}
#calendar {
max-width: 900px;
margin: 50px auto;
}
.fc-resource-area td {
cursor: pointer;
}
</style>
</head>
<body>
<p>
HINT: click on a resource to delete it.
</p>
<div id='calendar'></div>
</body>
</html>

View File

@@ -0,0 +1,193 @@
<!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' />
<script src='../lib/moment.min.js'></script>
<script src='../lib/jquery.min.js'></script>
<script src='../lib/jquery-ui.min.js'></script>
<script src='../lib/fullcalendar.min.js'></script>
<script src='../scheduler.min.js'></script>
<script>
$(function() { // document ready
/* initialize the external events
-----------------------------------------------------------------*/
$('#external-events .fc-event').each(function() {
// store data so the calendar knows to render an event upon drop
$(this).data('event', {
title: $.trim($(this).text()), // use the element's text as the event title
stick: true // maintain when user navigates (see docs on the renderEvent method)
});
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 0 // original position after the drag
});
});
/* initialize the calendar
-----------------------------------------------------------------*/
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true, // enable draggable events
droppable: true, // this allows things to be dropped onto the calendar
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
],
drop: function(date, jsEvent, ui, resourceId) {
console.log('drop', date.format(), resourceId);
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
},
eventReceive: function(event) { // called when a proper external event is dropped
console.log('eventReceive', event);
},
eventDrop: function(event) { // called when an event (already on the calendar) is moved
console.log('eventDrop', event);
}
});
});
</script>
<style>
body {
margin-top: 40px;
text-align: center;
font-size: 14px;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
}
#wrap {
width: 1100px;
margin: 0 auto;
}
#external-events {
float: left;
width: 150px;
padding: 0 10px;
border: 1px solid #ccc;
background: #eee;
text-align: left;
}
#external-events h4 {
font-size: 16px;
margin-top: 0;
padding-top: 1em;
}
#external-events .fc-event {
margin: 10px 0;
cursor: pointer;
}
#external-events p {
margin: 1.5em 0;
font-size: 11px;
color: #666;
}
#external-events p input {
margin: 0;
vertical-align: middle;
}
#calendar {
float: right;
width: 900px;
}
</style>
</head>
<body>
<div id='wrap'>
<div id='external-events'>
<h4>Draggable Events</h4>
<div class='fc-event'>My Event 1</div>
<div class='fc-event'>My Event 2</div>
<div class='fc-event'>My Event 3</div>
<div class='fc-event'>My Event 4</div>
<div class='fc-event'>My Event 5</div>
<p>
<input type='checkbox' id='drop-remove' />
<label for='drop-remove'>remove after drop</label>
</p>
</div>
<div id='calendar'></div>
<div style='clear:both'></div>
</div>
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!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' />
<script src='../lib/moment.min.js'></script>
<script src='../lib/jquery.min.js'></script>
<script src='../lib/fullcalendar.min.js'></script>
<script src='../lib/gcal.min.js'></script>
<script src='../scheduler.min.js'></script>
<script>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineMonth,timelineYear'
},
defaultView: 'timelineMonth',
/*
NOTE: unfortunately, Scheduler doesn't know how to associated events from
Google Calendar with resources, so if you specify a resource list,
nothing will show up :( Working on some solutions.
*/
// THIS KEY WON'T WORK IN PRODUCTION!!!
// To make your own Google API key, follow the directions here:
// http://fullcalendar.io/docs/google_calendar/
googleCalendarApiKey: 'AIzaSyDcnW6WejpTOCffshGDDb4neIrXVUA1EAE',
// US Holidays
events: 'usa__en@holiday.calendar.google.com',
eventClick: function(event) {
// opens events in a popup window
window.open(event.url, 'gcalevent', 'width=700,height=600');
return false;
}
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceGroupField: 'building',
resources: [
{ id: 'a', building: '460 Bryant', title: 'Auditorium A' },
{ id: 'b', building: '460 Bryant', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', building: '460 Bryant', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', building: '460 Bryant', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1', occupancy: 10 },
{ id: 'd2', title: 'Room D2', occupancy: 10 }
] },
{ id: 'e', building: '460 Bryant', title: 'Auditorium E' },
{ id: 'f', building: '460 Bryant', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', building: '564 Pacific', title: 'Auditorium G' },
{ id: 'h', building: '564 Pacific', title: 'Auditorium H' },
{ id: 'i', building: '564 Pacific', title: 'Auditorium I' },
{ id: 'j', building: '564 Pacific', title: 'Auditorium J' },
{ id: 'k', building: '564 Pacific', title: 'Auditorium K' },
{ id: 'l', building: '564 Pacific', title: 'Auditorium L' },
{ id: 'm', building: '564 Pacific', title: 'Auditorium M' },
{ id: 'n', building: '564 Pacific', title: 'Auditorium N' },
{ id: 'o', building: '564 Pacific', title: 'Auditorium O' },
{ id: 'p', building: '564 Pacific', title: 'Auditorium P' },
{ id: 'q', building: '564 Pacific', title: 'Auditorium Q' },
{ id: 'r', building: '564 Pacific', title: 'Auditorium R' },
{ id: 's', building: '564 Pacific', title: 'Auditorium S' },
{ id: 't', building: '564 Pacific', title: 'Auditorium T' },
{ id: 'u', building: '564 Pacific', title: 'Auditorium U' },
{ id: 'v', building: '564 Pacific', title: 'Auditorium V' },
{ id: 'w', building: '564 Pacific', title: 'Auditorium W' },
{ id: 'x', building: '564 Pacific', title: 'Auditorium X' },
{ id: 'y', building: '564 Pacific', title: 'Auditorium Y' },
{ id: 'z', building: '564 Pacific', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,117 @@
function initThemeChooser(settings) {
var isInitialized = false;
var $currentStylesheet = $();
var $loading = $('#loading');
var $systemSelect = $('#theme-system-selector select')
.on('change', function() {
setThemeSystem(this.value);
});
setThemeSystem($systemSelect.val());
function setThemeSystem(themeSystem) {
var $allSelectWraps = $('.selector[data-theme-system]').hide();
var $selectWrap = $allSelectWraps.filter('[data-theme-system="' + themeSystem +'"]').show();
var $select = $selectWrap.find('select')
.off('change') // avoid duplicate handlers :(
.on('change', function() {
setTheme(themeSystem, this.value);
});
setTheme(themeSystem, $select.val());
}
function setTheme(themeSystem, themeName) {
var stylesheetUrl = generateStylesheetUrl(themeSystem, themeName);
var $stylesheet;
function done() {
if (!isInitialized) {
isInitialized = true;
settings.init(themeSystem);
}
else {
settings.change(themeSystem);
}
showCredits(themeSystem, themeName);
}
if (stylesheetUrl) {
$stylesheet = $('<link rel="stylesheet" type="text/css" href="' + stylesheetUrl + '"/>').appendTo('head');
$loading.show();
whenStylesheetLoaded($stylesheet[0], function() {
$currentStylesheet.remove();
$currentStylesheet = $stylesheet;
$loading.hide();
done();
});
} else {
$currentStylesheet.remove();
$currentStylesheet = $();
done();
}
}
function generateStylesheetUrl(themeSystem, themeName) {
if (themeSystem === 'jquery-ui') {
return 'https://code.jquery.com/ui/1.12.1/themes/' + themeName + '/jquery-ui.css';
}
else if (themeSystem === 'bootstrap3') {
if (themeName) {
return 'https://bootswatch.com/3/' + themeName + '/bootstrap.min.css';
}
else { // the default bootstrap theme
return 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css';
}
}
else if (themeSystem === 'bootstrap4') {
if (themeName) {
return 'https://bootswatch.com/4/' + themeName + '/bootstrap.min.css';
}
else { // the default bootstrap4 theme
return 'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css';
}
}
}
function showCredits(themeSystem, themeName) {
var creditId;
if (themeSystem === 'jquery-ui') {
creditId = 'jquery-ui';
}
else if (themeSystem === 'bootstrap3') {
if (themeName) {
creditId = 'bootstrap-custom';
}
else {
creditId = 'bootstrap-standard';
}
}
$('.credits').hide()
.filter('[data-credit-id="' + creditId + '"]').show();
}
function whenStylesheetLoaded(linkNode, callback) {
var isReady = false;
function ready() {
if (!isReady) { // avoid double-call
isReady = true;
callback();
}
}
linkNode.onload = ready; // does not work cross-browser
setTimeout(ready, 2000); // max wait. also handles browsers that don't support onload
}
}

View File

@@ -0,0 +1,99 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resources: { // you can also specify a plain string like 'json/resources.json'
url: 'json/resources.json',
error: function() {
$('#script-warning').show();
}
},
events: { // you can also specify a plain string like 'json/events.json'
url: 'json/events.json',
error: function() {
$('#script-warning').show();
}
}
});
});
</script>
<style>
body {
margin: 0;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
#script-warning {
display: none;
background: #eee;
border-bottom: 1px solid #ddd;
padding: 0 10px;
line-height: 40px;
text-align: center;
font-weight: bold;
font-size: 12px;
color: red;
}
#loading {
display: none;
position: absolute;
top: 10px;
right: 10px;
}
#calendar {
max-width: 900px;
margin: 50px auto;
}
</style>
</head>
<body>
<div id='script-warning'>
This page should be running from a webserver, to allow fetching from the <code>json/</code> directory.
</div>
<div id='loading'>loading...</div>
<div id='calendar'></div>
</body>
</html>

View File

@@ -0,0 +1,7 @@
[
{ "id": "1", "resourceId": "b", "start": "2018-04-07T02:00:00", "end": "2018-04-07T07:00:00", "title": "event 1" },
{ "id": "2", "resourceId": "c", "start": "2018-04-07T05:00:00", "end": "2018-04-07T22:00:00", "title": "event 2" },
{ "id": "3", "resourceId": "d", "start": "2018-04-06", "end": "2018-04-08", "title": "event 3" },
{ "id": "4", "resourceId": "e", "start": "2018-04-07T03:00:00", "end": "2018-04-07T08:00:00", "title": "event 4" },
{ "id": "5", "resourceId": "f", "start": "2018-04-07T00:30:00", "end": "2018-04-07T02:30:00", "title": "event 5" }
]

View File

@@ -0,0 +1,31 @@
[
{ "id": "a", "title": "Auditorium A" },
{ "id": "b", "title": "Auditorium B", "eventColor": "green" },
{ "id": "c", "title": "Auditorium C", "eventColor": "orange" },
{ "id": "d", "title": "Auditorium D", "children": [
{ "id": "d1", "title": "Room D1" },
{ "id": "d2", "title": "Room D2" }
] },
{ "id": "e", "title": "Auditorium E" },
{ "id": "f", "title": "Auditorium F", "eventColor": "red" },
{ "id": "g", "title": "Auditorium G" },
{ "id": "h", "title": "Auditorium H" },
{ "id": "i", "title": "Auditorium I" },
{ "id": "j", "title": "Auditorium J" },
{ "id": "k", "title": "Auditorium K" },
{ "id": "l", "title": "Auditorium L" },
{ "id": "m", "title": "Auditorium M" },
{ "id": "n", "title": "Auditorium N" },
{ "id": "o", "title": "Auditorium O" },
{ "id": "p", "title": "Auditorium P" },
{ "id": "q", "title": "Auditorium Q" },
{ "id": "r", "title": "Auditorium R" },
{ "id": "s", "title": "Auditorium S" },
{ "id": "t", "title": "Auditorium T" },
{ "id": "u", "title": "Auditorium U" },
{ "id": "v", "title": "Auditorium V" },
{ "id": "w", "title": "Auditorium W" },
{ "id": "x", "title": "Auditorium X" },
{ "id": "y", "title": "Auditorium Y" },
{ "id": "z", "title": "Auditorium Z" }
]

View File

@@ -0,0 +1,108 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
// the point if this demo is to demonstrate dayClick...
dayClick: function(date, jsEvent, view, resourceObj) {
console.log('dayClick', date.format(), resourceObj);
},
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</script>
<style>
body {
margin: 0;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
p {
text-align: center;
}
#calendar {
max-width: 900px;
margin: 50px auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>

View File

@@ -0,0 +1,108 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
eventOverlap: false, // will cause the event to take up entire resource height
resourceAreaWidth: '25%',
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</script>
<style>
body {
margin: 0;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
p {
text-align: center;
}
#calendar {
max-width: 900px;
margin: 50px auto;
}
</style>
</head>
<body>
<p>
Things render a bit differently with <code>eventOverlap:false</code>
</p>
<div id='calendar'></div>
</body>
</html>

View File

@@ -0,0 +1,112 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceAreaWidth: '30%',
resourceColumns: [
{
labelText: 'Room',
field: 'title'
},
{
labelText: 'Occupancy',
field: 'occupancy'
}
],
resourceOrder: '-occupancy,title', // when occupancy tied, order by title
resources: [
{ id: 'a', title: 'Auditorium A', occupancy: 40 },
{ id: 'b', title: 'Auditorium B', occupancy: 40, eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', occupancy: 40, eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', occupancy: 40 },
{ id: 'e', title: 'Auditorium E', occupancy: 40 },
{ id: 'f', title: 'Auditorium F', occupancy: 40, eventColor: 'red' },
{ id: 'g', title: 'Auditorium G', occupancy: 40 },
{ id: 'h', title: 'Auditorium H', occupancy: 40 },
{ id: 'i', title: 'Auditorium I', occupancy: 50 },
{ id: 'j', title: 'Auditorium J', occupancy: 50 },
{ id: 'k', title: 'Auditorium K', occupancy: 40 },
{ id: 'l', title: 'Auditorium L', occupancy: 40 },
{ id: 'm', title: 'Auditorium M', occupancy: 40 },
{ id: 'n', title: 'Auditorium N', occupancy: 80 },
{ id: 'o', title: 'Auditorium O', occupancy: 80 },
{ id: 'p', title: 'Auditorium P', occupancy: 40 },
{ id: 'q', title: 'Auditorium Q', occupancy: 40 },
{ id: 'r', title: 'Auditorium R', occupancy: 40 },
{ id: 's', title: 'Auditorium S', occupancy: 40 },
{ id: 't', title: 'Auditorium T', occupancy: 40 },
{ id: 'u', title: 'Auditorium U', occupancy: 40 },
{ id: 'v', title: 'Auditorium V', occupancy: 40 },
{ id: 'w', title: 'Auditorium W', occupancy: 40 },
{ id: 'x', title: 'Auditorium X', occupancy: 40 },
{ id: 'y', title: 'Auditorium Y', occupancy: 40 },
{ id: 'z', title: 'Auditorium Z', occupancy: 40 }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</script>
<style>
body {
margin: 0;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
p {
text-align: center;
}
#calendar {
max-width: 900px;
margin: 50px auto;
}
</style>
</head>
<body>
<p>Ordered by occupancy (descending)</p>
<div id='calendar'></div>
</body>
</html>

View File

@@ -0,0 +1,104 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resourceText: function(resource) {
return 'Auditorium ' + ('' + resource.id).toUpperCase();
},
resourceRender: function(resource, leftCells, rightCells) {
if (resource.id == 'h') {
leftCells.css('background-color', 'rgb(255, 243, 206)');
rightCells.css('background-color', 'rgba(255, 243, 206, .5)');
}
},
resources: [
{ id: 'a' },
{ id: 'b', eventColor: 'green' },
{ id: 'c', eventColor: 'orange' },
{ id: 'd' },
{ id: 'e' },
{ id: 'f', eventColor: 'red' },
{ id: 'g' },
{ id: 'h' },
{ id: 'i' },
{ id: 'j' },
{ id: 'k' },
{ id: 'l' },
{ id: 'm' },
{ id: 'n' },
{ id: 'o' },
{ id: 'p' },
{ id: 'q' },
{ id: 'r' },
{ id: 's' },
{ id: 't' },
{ id: 'u' },
{ id: 'v' },
{ id: 'w' },
{ id: 'x' },
{ id: 'y' },
{ id: 'z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,104 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true,
aspectRatio: 1.8,
scrollTime: '00:00',
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineTenDay,timelineMonth,timelineYear'
},
defaultView: 'timelineDay',
views: {
timelineDay: {
buttonText: ':15 slots',
slotDuration: '00:15'
},
timelineTenDay: {
type: 'timeline',
duration: { days: 10 }
}
},
navLinks: true,
resourceAreaWidth: '25%',
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,128 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
selectable: true,
selectHelper: true,
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
],
select: function(start, end, jsEvent, view, resource) {
console.log(
'select callback',
start.format(),
end.format(),
resource ? resource.id : '(no resource)'
);
},
dayClick: function(date, jsEvent, view, resource) {
console.log(
'dayClick',
date.format(),
resource ? resource.id : '(no resource)'
);
}
});
$('#select-G').on('click', function() {
$('#calendar').fullCalendar('select', '2018-04-07T02:00:00', '2018-04-07T07:00:00', 'g');
});
$('#select-unspecified').on('click', function() {
$('#calendar').fullCalendar('select', '2018-04-07T02:00:00', '2018-04-07T07:00:00');
});
});
</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>
<p style='text-align:center'>
<button id='select-G'>select G</button>
<button id='select-unspecified'>select w/o a resource</button>
</p>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
now: '2018-04-07',
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month,listWeek'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
});
</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>
</body>
</html>

View File

@@ -0,0 +1,227 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link href='https://use.fontawesome.com/releases/v5.0.6/css/all.css' rel='stylesheet'>
<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' />
<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='js/theme-chooser.js'></script>
<script>
$(document).ready(function() {
initThemeChooser({
init: function(themeSystem) {
$('#calendar').fullCalendar({
themeSystem: themeSystem,
now: '2018-04-07',
editable: true, // enable draggable events
aspectRatio: 1.8,
scrollTime: '00:00', // undo default 6am scrollTime
header: {
left: 'today prev,next',
center: 'title',
right: 'timelineDay,timelineThreeDays,agendaWeek,month,listWeek'
},
defaultView: 'timelineDay',
views: {
timelineThreeDays: {
type: 'timeline',
duration: { days: 3 }
}
},
resourceLabelText: 'Rooms',
resources: [
{ id: 'a', title: 'Auditorium A' },
{ id: 'b', title: 'Auditorium B', eventColor: 'green' },
{ id: 'c', title: 'Auditorium C', eventColor: 'orange' },
{ id: 'd', title: 'Auditorium D', children: [
{ id: 'd1', title: 'Room D1' },
{ id: 'd2', title: 'Room D2' }
] },
{ id: 'e', title: 'Auditorium E' },
{ id: 'f', title: 'Auditorium F', eventColor: 'red' },
{ id: 'g', title: 'Auditorium G' },
{ id: 'h', title: 'Auditorium H' },
{ id: 'i', title: 'Auditorium I' },
{ id: 'j', title: 'Auditorium J' },
{ id: 'k', title: 'Auditorium K' },
{ id: 'l', title: 'Auditorium L' },
{ id: 'm', title: 'Auditorium M' },
{ id: 'n', title: 'Auditorium N' },
{ id: 'o', title: 'Auditorium O' },
{ id: 'p', title: 'Auditorium P' },
{ id: 'q', title: 'Auditorium Q' },
{ id: 'r', title: 'Auditorium R' },
{ id: 's', title: 'Auditorium S' },
{ id: 't', title: 'Auditorium T' },
{ id: 'u', title: 'Auditorium U' },
{ id: 'v', title: 'Auditorium V' },
{ id: 'w', title: 'Auditorium W' },
{ id: 'x', title: 'Auditorium X' },
{ id: 'y', title: 'Auditorium Y' },
{ id: 'z', title: 'Auditorium Z' }
],
events: [
{ id: '1', resourceId: 'b', start: '2018-04-07T02:00:00', end: '2018-04-07T07:00:00', title: 'event 1' },
{ id: '2', resourceId: 'c', start: '2018-04-07T05:00:00', end: '2018-04-07T22:00:00', title: 'event 2' },
{ id: '3', resourceId: 'd', start: '2018-04-06', end: '2018-04-08', title: 'event 3' },
{ id: '4', resourceId: 'e', start: '2018-04-07T03:00:00', end: '2018-04-07T08:00:00', title: 'event 4' },
{ id: '5', resourceId: 'f', start: '2018-04-07T00:30:00', end: '2018-04-07T02:30:00', title: 'event 5' }
]
});
},
change: function(themeSystem) {
$('#calendar').fullCalendar('option', 'themeSystem', themeSystem);
}
});
});
</script>
<style>
body {
margin: 0;
padding: 0;
font-size: 14px;
}
#top,
#calendar.fc-unthemed {
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
}
#top {
background: #eee;
border-bottom: 1px solid #ddd;
padding: 0 10px;
line-height: 40px;
font-size: 12px;
color: #000;
}
#top .selector {
display: inline-block;
margin-right: 10px;
}
#top select {
font: inherit; /* mock what Boostrap does, don't compete */
}
.left { float: left }
.right { float: right }
.clear { clear: both }
#calendar {
max-width: 900px;
margin: 40px auto;
padding: 0 10px;
}
</style>
</head>
<body>
<div id='top'>
<div class='left'>
<div id='theme-system-selector' class='selector'>
Theme System:
<select>
<option value='bootstrap4' selected>Bootstrap 4</option>
<option value='bootstrap3'>Bootstrap 3</option>
<option value='jquery-ui'>jQuery UI</option>
<option value='standard'>unthemed</option>
</select>
</div>
<div data-theme-system="bootstrap3" class='selector' style='display:none'>
Theme Name:
<select>
<option value='' selected>Default</option>
<option value='cosmo'>Cosmo</option>
<option value='cyborg'>Cyborg</option>
<option value='darkly'>Darkly</option>
<option value='flatly'>Flatly</option>
<option value='journal'>Journal</option>
<option value='lumen'>Lumen</option>
<option value='paper'>Paper</option>
<option value='readable'>Readable</option>
<option value='sandstone'>Sandstone</option>
<option value='simplex'>Simplex</option>
<option value='slate'>Slate</option>
<option value='solar'>Solar</option>
<option value='spacelab'>Spacelab</option>
<option value='superhero'>Superhero</option>
<option value='united'>United</option>
<option value='yeti'>Yeti</option>
</select>
</div>
<div data-theme-system="jquery-ui" class='selector' style='display:none'>
Theme Name:
<select>
<option value='black-tie'>Black Tie</option>
<option value='blitzer'>Blitzer</option>
<option value='cupertino' selected>Cupertino</option>
<option value='dark-hive'>Dark Hive</option>
<option value='dot-luv'>Dot Luv</option>
<option value='eggplant'>Eggplant</option>
<option value='excite-bike'>Excite Bike</option>
<option value='flick'>Flick</option>
<option value='hot-sneaks'>Hot Sneaks</option>
<option value='humanity'>Humanity</option>
<option value='le-frog'>Le Frog</option>
<option value='mint-choc'>Mint Choc</option>
<option value='overcast'>Overcast</option>
<option value='pepper-grinder'>Pepper Grinder</option>
<option value='redmond'>Redmond</option>
<option value='smoothness'>Smoothness</option>
<option value='south-street'>South Street</option>
<option value='start'>Start</option>
<option value='sunny'>Sunny</option>
<option value='swanky-purse'>Swanky Purse</option>
<option value='trontastic'>Trontastic</option>
<option value='ui-darkness'>UI Darkness</option>
<option value='ui-lightness'>UI Lightness</option>
<option value='vader'>Vader</option>
</select>
</div>
<span id='loading' style='display:none'>loading theme...</span>
</div>
<div class='right'>
<span class='credits' data-credit-id='bootstrap-standard' style='display:none'>
<a href='https://getbootstrap.com/docs/3.3/' target='_blank'>Theme by Bootstrap</a>
</span>
<span class='credits' data-credit-id='bootstrap-custom' style='display:none'>
<a href='https://bootswatch.com/' target='_blank'>Theme by Bootswatch</a>
</span>
<span class='credits' data-credit-id='jquery-ui' style='display:none'>
<a href='http://jqueryui.com/themeroller/' target='_blank'>Theme by jQuery UI</a>
</span>
</div>
<div class='clear'></div>
</div>
<div id='calendar'></div>
</body>
</html>

View File

@@ -0,0 +1,99 @@
<!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' />
<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>
$(function() { // document ready
$('#calendar').fullCalendar({
defaultView: 'agendaDay',
defaultDate: '2018-04-07',
editable: true,
selectable: true,
eventLimit: true, // allow "more" link when too many events
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay,agendaTwoDay,agendaWeek,month'
},
views: {
agendaTwoDay: {
type: 'agenda',
duration: { days: 2 },
// views that are more than a day will NOT do this behavior by default
// so, we need to explicitly enable it
groupByResource: true
//// uncomment this line to group by day FIRST with resources underneath
//groupByDateAndResource: true
}
},
//// uncomment this line to hide the all-day slot
//allDaySlot: false,
resources: [
{ id: 'a', title: 'Room A' },
{ id: 'b', title: 'Room B', eventColor: 'green' },
{ id: 'c', title: 'Room C', eventColor: 'orange' },
{ id: 'd', title: 'Room D', eventColor: 'red' }
],
events: [
{ id: '1', resourceId: 'a', start: '2018-04-06', end: '2018-04-08', title: 'event 1' },
{ id: '2', resourceId: 'a', start: '2018-04-07T09:00:00', end: '2018-04-07T14:00:00', title: 'event 2' },
{ id: '3', resourceId: 'b', start: '2018-04-07T12:00:00', end: '2018-04-08T06:00:00', title: 'event 3' },
{ id: '4', resourceId: 'c', start: '2018-04-07T07:30:00', end: '2018-04-07T09:30:00', title: 'event 4' },
{ id: '5', resourceId: 'd', start: '2018-04-07T10:00:00', end: '2018-04-07T15:00:00', title: 'event 5' }
],
select: function(start, end, jsEvent, view, resource) {
console.log(
'select',
start.format(),
end.format(),
resource ? resource.id : '(no resource)'
);
},
dayClick: function(date, jsEvent, view, resource) {
console.log(
'dayClick',
date.format(),
resource ? resource.id : '(no resource)'
);
}
});
});
</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>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
/*!
* FullCalendar v3.9.0
* Docs & License: https://fullcalendar.io/
* (c) 2018 Adam Shaw
*//*!
* FullCalendar v3.9.0 Print Stylesheet
* Docs & License: https://fullcalendar.io/
* (c) 2018 Adam Shaw
*/.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-helper-container,.fc-helper-skeleton,.fc-highlight-container,.fc-highlight-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-agenda-view .fc-axis,.fc-popover{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}

View File

@@ -0,0 +1,6 @@
/*!
* FullCalendar v3.9.0
* Docs & License: https://fullcalendar.io/
* (c) 2018 Adam Shaw
*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fullcalendar"),require("jquery")):"function"==typeof define&&define.amd?define(["fullcalendar","jquery"],t):"object"==typeof exports?t(require("fullcalendar"),require("jquery")):t(e.FullCalendar,e.jQuery)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=266)}({1:function(t,r){t.exports=e},2:function(e,t){var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};t.__extends=function(e,t){function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}},266:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),n=r(267);o.EventSourceParser.registerClass(n.default),o.GcalEventSource=n.default},267:function(e,t,r){function o(e){var t;return/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(e)?e:(t=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(e))||(t=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(e))?decodeURIComponent(t[1]):void 0}function n(e,t){return e.replace(/(\?.*?)?(#|$)/,function(e,r,o){return(r?r+"&":"?")+t+o})}Object.defineProperty(t,"__esModule",{value:!0});var a=r(2),l=r(3),i=r(1),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.parse=function(e,t){var r;return"object"==typeof e?r=e:"string"==typeof e&&(r={url:e}),!!r&&i.EventSource.parse.call(this,r,t)},t.prototype.fetch=function(e,t,r){var o=this,n=this.buildUrl(),a=this.buildRequestParams(e,t,r),u=this.ajaxSettings||{},c=u.success;return a?(this.calendar.pushLoading(),i.Promise.construct(function(e,t){l.ajax(l.extend({},i.JsonFeedEventSource.AJAX_DEFAULTS,u,{url:n,data:a,success:function(r,n,u){var s,p;o.calendar.popLoading(),r.error?(o.reportError("Google Calendar API: "+r.error.message,r.error.errors),t()):r.items&&(s=o.gcalItemsToRawEventDefs(r.items,a.timeZone),p=i.applyAll(c,o,[r,n,u]),l.isArray(p)&&(s=p),e(o.parseEventDefs(s)))},error:function(e,r,n){o.reportError("Google Calendar network failure: "+r,[e,n]),o.calendar.popLoading(),t()}}))})):i.Promise.reject()},t.prototype.gcalItemsToRawEventDefs=function(e,t){var r=this;return e.map(function(e){return r.gcalItemToRawEventDef(e,t)})},t.prototype.gcalItemToRawEventDef=function(e,t){var r=e.htmlLink||null;return r&&t&&(r=n(r,"ctz="+t)),{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:r,location:e.location,description:e.description}},t.prototype.buildUrl=function(){return t.API_BASE+"/"+encodeURIComponent(this.googleCalendarId)+"/events?callback=?"},t.prototype.buildRequestParams=function(e,t,r){var o,n=this.googleCalendarApiKey||this.calendar.opt("googleCalendarApiKey");return n?(e.hasZone()||(e=e.clone().utc().add(-1,"day")),t.hasZone()||(t=t.clone().utc().add(1,"day")),o=l.extend(this.ajaxSettings.data||{},{key:n,timeMin:e.format(),timeMax:t.format(),singleEvents:!0,maxResults:9999}),r&&"local"!==r&&(o.timeZone=r.replace(" ","_")),o):(this.reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),null)},t.prototype.reportError=function(e,t){var r=this.calendar,o=r.opt("googleCalendarError"),n=t||[{message:e}];this.googleCalendarError&&this.googleCalendarError.apply(r,n),o&&o.apply(r,n),i.warn.apply(null,[e].concat(t||[]))},t.prototype.getPrimitive=function(){return this.googleCalendarId},t.prototype.applyManualStandardProps=function(e){var t=i.EventSource.prototype.applyManualStandardProps.apply(this,arguments),r=e.googleCalendarId;return null==r&&e.url&&(r=o(e.url)),null!=r&&(this.googleCalendarId=r,t)},t.prototype.applyMiscProps=function(e){this.ajaxSettings||(this.ajaxSettings={}),l.extend(this.ajaxSettings,e)},t.API_BASE="https://www.googleapis.com/calendar/v3/calendars",t}(i.EventSource);t.default=u,u.defineStandardProps({url:!1,googleCalendarId:!1,googleCalendarApiKey:!0,googleCalendarError:!0})},3:function(e,r){e.exports=t}})});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,463 @@
/*!
* FullCalendar Scheduler v1.9.4
* Docs & License: https://fullcalendar.io/scheduler/
* (c) 2018 Adam Shaw
*/
/* TODO: break this file up */
/* Scroller
--------------------------------------------------------------------------------------------------*/
.fc-scroller-clip {
overflow: hidden;
/* for clipping scrollbars */
position: relative;
/* so things like scrollfollowers can attach to this */ }
/* supresses rendering of native scrollbars */
/* on .fc-scroller */
.fc-no-scrollbars {
background: rgba(255, 255, 255, 0);
/* hack for dynamic DOM nodes (in Chrome OSX at least) */ }
.fc-no-scrollbars::-webkit-scrollbar {
width: 0;
height: 0; }
.fc-scroller-canvas {
position: relative;
/* origin for bg */
box-sizing: border-box;
/* so that padding (for gutter) will be part of height */
min-height: 100%; }
.fc-scroller-canvas > .fc-bg {
z-index: 1;
/* make default? */ }
.fc-scroller-canvas > .fc-content {
z-index: 2;
/* make default? */
position: relative;
/* origin for inner content */
border-style: solid;
border-width: 0; }
/* for themed, hard to get the border-color, so just forget it (REVISIT) */
.ui-widget .fc-scroller-canvas > .fc-content {
border-color: transparent; }
.fc-scroller-canvas.fc-gutter-left > .fc-content {
border-left-width: 1px;
margin-left: -1px; }
.fc-scroller-canvas.fc-gutter-right > .fc-content {
border-right-width: 1px;
margin-right: -1px; }
.fc-scroller-canvas.fc-gutter-top > .fc-content {
border-top-width: 1px;
margin-top: -1px; }
/* content is responsible for bottom border */
/* View Structure
--------------------------------------------------------------------------------------------------*/
.fc-rtl .fc-timeline {
direction: rtl; }
.fc-timeline .fc-divider {
width: 3px;
border-style: double;
/* overcome neighboring borders */ }
.fc-timeline .fc-head > tr > .fc-divider {
border-bottom: 0; }
.fc-timeline .fc-body > tr > .fc-divider {
border-top: 0; }
.fc-timeline .fc-body .fc-divider.ui-widget-header {
background-image: none; }
.fc-scrolled .fc-head .fc-scroller {
z-index: 2;
/* so drop shadow will go above body panes */ }
.fc-timeline.fc-scrolled .fc-head .fc-scroller {
box-shadow: 0 3px 4px rgba(0, 0, 0, 0.075); }
.fc-timeline .fc-body .fc-scroller {
z-index: 1; }
/*
on most tables that expand to the edges, kill the outer border,
because the container elements take care of it.
example tables:
.fc-scroller-canvas .fc-content table
.fc-scroller-canvas .fc-bg .fc-slats table
*/
.fc-timeline .fc-scroller-canvas > div > table,
.fc-timeline .fc-scroller-canvas > div > div > table {
border-style: hidden; }
/*
for resource rows (in both the spreadsheet and timeline areas),
undo previous rule in order to always show last border.
*/
.fc-timeline .fc-scroller-canvas > .fc-content > .fc-rows > table {
border-bottom-style: none; }
/* Table Cell Common
--------------------------------------------------------------------------------------------------*/
.fc-timeline th,
.fc-timeline td {
white-space: nowrap; }
.fc-timeline .fc-cell-content {
overflow: hidden; }
.fc-timeline .fc-cell-text {
padding-left: 4px;
padding-right: 4px; }
.fc-timeline .fc-col-resizer {
cursor: col-resize; }
/*
Cells at the start of a week
TODO: figure out better styling
.fc-ltr .fc-timeline .fc-em-cell div {
border-left: 3px solid #eee;
height: 100%;
}
.fc-rtl .fc-timeline .fc-em-cell {
border-right-width: 3px;
}
*/
/* head */
.fc-timeline th {
vertical-align: middle; }
.fc-timeline .fc-head .fc-cell-content {
padding-top: 3px;
padding-bottom: 3px; }
/* body */
.fc-timeline .fc-body .ui-widget-content {
background-image: none; }
/* Resource Area
--------------------------------------------------------------------------------------------------*/
.fc-resource-area {
width: 30%; }
.fc-resource-area col {
width: 40%;
min-width: 70px;
/* will be read by JS */ }
.fc-resource-area col.fc-main-col {
width: 60%;
/* make the first column in a nested setup bigger */ }
.fc-flat .fc-expander-space {
/* fc-flat is opposite of fc-nested */
display: none; }
.fc-ltr .fc-resource-area tr > * {
text-align: left; }
.fc-rtl .fc-resource-area tr > * {
text-align: right; }
.fc-resource-area .fc-cell-content {
padding-left: 4px;
padding-right: 4px; }
/* head */
.fc-resource-area .fc-super th {
text-align: center; }
.fc-resource-area th > div {
position: relative; }
.fc-resource-area th .fc-cell-content {
position: relative;
z-index: 1; }
.fc-resource-area th .fc-col-resizer {
position: absolute;
z-index: 2;
top: 0;
bottom: 0;
width: 5px; }
.fc-ltr .fc-resource-area th .fc-col-resizer {
right: -3px; }
.fc-rtl .fc-resource-area th .fc-col-resizer {
left: -3px; }
/* body */
tr.fc-collapsed > td,
tr.fc-transitioning > td {
/* during the transition */
overflow: hidden;
/* prevents absolutely-positioned events from bleeding out */ }
tr.fc-transitioning > td > div {
transition: margin-top 0.2s; }
tr.fc-collapsed > td > div {
margin-top: -10px; }
.fc-body .fc-resource-area .fc-cell-content {
/* might BE the cell */
position: relative;
/* optimization for ScrollFollower */
padding-top: 8px;
padding-bottom: 8px; }
.fc-no-overlap .fc-body .fc-resource-area .fc-cell-content {
/* might BE the cell */
padding-top: 5px;
padding-bottom: 5px; }
.fc-resource-area .fc-icon {
/* the expander and spacers before the expander */
width: 1em;
/* ensure constant width, esp for empty icons */
font-size: .9em;
vertical-align: middle;
margin-top: -1%; }
.fc-resource-area .fc-expander {
cursor: pointer;
color: #666;
/* for the icon within */ }
/* Time Area
--------------------------------------------------------------------------------------------------*/
.fc-time-area col {
min-width: 2.2em;
/* detected by JS */ }
/* head */
.fc-ltr .fc-time-area .fc-chrono th {
text-align: left; }
.fc-rtl .fc-time-area .fc-chrono th {
text-align: right; }
/* body slats (vertical lines) */
.fc-time-area .fc-slats {
/* fc-bg is responsible for a lot of this now! */
position: absolute;
z-index: 1;
top: 0;
left: 0;
right: 0;
bottom: 0; }
.fc-time-area .fc-slats table {
height: 100%; }
.fc-time-area .fc-slats .fc-minor {
border-style: dotted; }
.fc-time-area .fc-slats td {
border-width: 0 1px;
/* need to do this. sometimes -1 margin wouldn't hide the dotted */ }
.fc-ltr .fc-time-area .fc-slats td {
border-right-width: 0; }
.fc-rtl .fc-time-area .fc-slats td {
border-left-width: 0; }
/* body content containers
can be within rows or directly within the pane's content
*/
.fc-time-area .fc-bgevent-container,
.fc-time-area .fc-highlight-container {
position: absolute;
z-index: 2;
/* only for directly within pane. not for row. overridden later */
top: 0;
bottom: 0;
width: 0; }
.fc-ltr .fc-time-area .fc-helper-container,
.fc-ltr .fc-time-area .fc-bgevent-container,
.fc-ltr .fc-time-area .fc-highlight-container {
left: 0; }
.fc-rtl .fc-time-area .fc-helper-container,
.fc-rtl .fc-time-area .fc-bgevent-container,
.fc-rtl .fc-time-area .fc-highlight-container {
right: 0; }
.fc-time-area .fc-bgevent,
.fc-time-area .fc-highlight {
position: absolute;
top: 0;
bottom: 0; }
/* body resource rows */
.fc-time-area .fc-rows {
position: relative;
z-index: 3; }
.fc-time-area .fc-rows .ui-widget-content {
background: none; }
.fc-time-area .fc-rows td > div {
position: relative; }
.fc-time-area .fc-rows .fc-bgevent-container,
.fc-time-area .fc-rows .fc-highlight-container {
z-index: 1; }
.fc-time-area .fc-event-container {
position: relative;
z-index: 2;
/* above bgevent and highlight */
width: 0;
/* for event positioning. will end up on correct side based on dir */ }
.fc-time-area .fc-helper-container {
/* also an fc-event-container */
position: absolute;
z-index: 3;
top: 0; }
.fc-time-area .fc-event-container {
padding-bottom: 8px;
top: -1px; }
.fc-time-area tr:first-child .fc-event-container {
top: 0; }
.fc-no-overlap .fc-time-area .fc-event-container {
padding-bottom: 0;
top: 0; }
/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-timeline .fc-now-indicator {
/* both the arrow and the line */
z-index: 3;
/* one above scroller's fc-content */
top: 0; }
.fc-time-area .fc-now-indicator-arrow {
margin: 0 -6px;
/* 5, then one more to counteract scroller's negative margins */
/* triangle pointing down... */
border-width: 6px 5px 0 5px;
border-left-color: transparent;
border-right-color: transparent; }
.fc-time-area .fc-now-indicator-line {
margin: 0 -1px;
/* counteract scroller's negative margins */
bottom: 0;
border-left-width: 1px; }
/* Time Grid Events
--------------------------------------------------------------------------------------------------*/
.fc-timeline-event {
position: absolute;
border-radius: 0;
padding: 2px 0;
margin-bottom: 1px; }
.fc-no-overlap .fc-timeline-event {
padding: 5px 0;
margin-bottom: 0; }
/* don't overlap grid lines at the event's end */
.fc-ltr .fc-timeline-event {
margin-right: 1px; }
.fc-rtl .fc-timeline-event {
margin-left: 1px; }
.fc-timeline-event .fc-content {
padding: 0 1px;
white-space: nowrap;
overflow: hidden; }
.fc-timeline-event .fc-time {
font-weight: bold;
padding: 0 1px; }
.fc-rtl .fc-timeline-event .fc-time {
display: inline-block;
/* will force it on the other side */ }
.fc-timeline-event .fc-title {
position: relative;
/* optimization for ScrollFollower */
padding: 0 1px; }
.fc-timeline-event.fc-selected .fc-bg {
display: none;
/* hide semi-white background, to appear darker */ }
/* follower logic */
.fc-ltr .fc-timeline-event .fc-title {
padding-left: 10px;
margin-left: -8px; }
.fc-rtl .fc-timeline-event .fc-title {
padding-right: 10px;
margin-right: -8px; }
.fc-ltr .fc-timeline-event.fc-not-start .fc-title {
margin-left: -2px; }
.fc-rtl .fc-timeline-event.fc-not-start .fc-title {
margin-right: -2px; }
.fc-timeline-event.fc-not-start .fc-title,
.fc-body .fc-time-area .fc-following {
position: relative; }
.fc-timeline-event.fc-not-start .fc-title:before,
.fc-body .fc-time-area .fc-following:before {
/* generic arrow */
content: "";
position: absolute;
top: 50%;
margin-top: -5px;
border: 5px solid #000;
border-top-color: transparent;
border-bottom-color: transparent;
opacity: .5; }
.fc-ltr .fc-timeline-event.fc-not-start .fc-title:before,
.fc-ltr .fc-body .fc-time-area .fc-following:before {
/* LTR. left pointing arrow */
border-left: 0;
left: 2px; }
.fc-rtl .fc-timeline-event.fc-not-start .fc-title:before,
.fc-rtl .fc-body .fc-time-area .fc-following:before {
/* RTL. right pointing arrow */
border-right: 0;
right: 2px; }
/* License Message
--------------------------------------------------------------------------------------------------*/
.fc-license-message {
position: absolute;
z-index: 99999;
bottom: 1px;
left: 1px;
background: #eee;
border-color: #ddd;
border-style: solid;
border-width: 1px 1px 0 0;
padding: 2px 4px;
font-size: 12px;
border-top-right-radius: 3px; }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long