mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 09:36:05 -08:00
CR/LF correction
This commit is contained in:
277
front/lib/fullcalendar-scheduler/CHANGELOG.txt
Normal file
277
front/lib/fullcalendar-scheduler/CHANGELOG.txt
Normal 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
|
||||
34
front/lib/fullcalendar-scheduler/CONTRIBUTING.txt
Normal file
34
front/lib/fullcalendar-scheduler/CONTRIBUTING.txt
Normal 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/
|
||||
18
front/lib/fullcalendar-scheduler/LICENSE.txt
Normal file
18
front/lib/fullcalendar-scheduler/LICENSE.txt
Normal 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
|
||||
106
front/lib/fullcalendar-scheduler/demos/background-events.html
Normal file
106
front/lib/fullcalendar-scheduler/demos/background-events.html
Normal 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>
|
||||
113
front/lib/fullcalendar-scheduler/demos/column-grouping.html
Normal file
113
front/lib/fullcalendar-scheduler/demos/column-grouping.html
Normal 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>
|
||||
108
front/lib/fullcalendar-scheduler/demos/columns.html
Normal file
108
front/lib/fullcalendar-scheduler/demos/columns.html
Normal 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>
|
||||
132
front/lib/fullcalendar-scheduler/demos/dynamic-add-remove.html
Normal file
132
front/lib/fullcalendar-scheduler/demos/dynamic-add-remove.html
Normal 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>
|
||||
193
front/lib/fullcalendar-scheduler/demos/external-dragging.html
Normal file
193
front/lib/fullcalendar-scheduler/demos/external-dragging.html
Normal 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>
|
||||
74
front/lib/fullcalendar-scheduler/demos/gcal.html
Normal file
74
front/lib/fullcalendar-scheduler/demos/gcal.html
Normal 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>
|
||||
98
front/lib/fullcalendar-scheduler/demos/grouping.html
Normal file
98
front/lib/fullcalendar-scheduler/demos/grouping.html
Normal 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>
|
||||
117
front/lib/fullcalendar-scheduler/demos/js/theme-chooser.js
Normal file
117
front/lib/fullcalendar-scheduler/demos/js/theme-chooser.js
Normal 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
|
||||
}
|
||||
}
|
||||
99
front/lib/fullcalendar-scheduler/demos/json.html
Normal file
99
front/lib/fullcalendar-scheduler/demos/json.html
Normal 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>
|
||||
7
front/lib/fullcalendar-scheduler/demos/json/events.json
Normal file
7
front/lib/fullcalendar-scheduler/demos/json/events.json
Normal 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" }
|
||||
]
|
||||
31
front/lib/fullcalendar-scheduler/demos/json/resources.json
Normal file
31
front/lib/fullcalendar-scheduler/demos/json/resources.json
Normal 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" }
|
||||
]
|
||||
108
front/lib/fullcalendar-scheduler/demos/misc-callbacks.html
Normal file
108
front/lib/fullcalendar-scheduler/demos/misc-callbacks.html
Normal 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>
|
||||
108
front/lib/fullcalendar-scheduler/demos/no-overlap.html
Normal file
108
front/lib/fullcalendar-scheduler/demos/no-overlap.html
Normal 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>
|
||||
112
front/lib/fullcalendar-scheduler/demos/ordering.html
Normal file
112
front/lib/fullcalendar-scheduler/demos/ordering.html
Normal 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>
|
||||
104
front/lib/fullcalendar-scheduler/demos/rendering-hooks.html
Normal file
104
front/lib/fullcalendar-scheduler/demos/rendering-hooks.html
Normal 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>
|
||||
104
front/lib/fullcalendar-scheduler/demos/scale.html
Normal file
104
front/lib/fullcalendar-scheduler/demos/scale.html
Normal 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>
|
||||
128
front/lib/fullcalendar-scheduler/demos/selectable.html
Normal file
128
front/lib/fullcalendar-scheduler/demos/selectable.html
Normal 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>
|
||||
98
front/lib/fullcalendar-scheduler/demos/simple.html
Normal file
98
front/lib/fullcalendar-scheduler/demos/simple.html
Normal 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>
|
||||
227
front/lib/fullcalendar-scheduler/demos/themes.html
Normal file
227
front/lib/fullcalendar-scheduler/demos/themes.html
Normal 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>
|
||||
@@ -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>
|
||||
5
front/lib/fullcalendar-scheduler/lib/fullcalendar.min.css
vendored
Normal file
5
front/lib/fullcalendar-scheduler/lib/fullcalendar.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
12
front/lib/fullcalendar-scheduler/lib/fullcalendar.min.js
vendored
Normal file
12
front/lib/fullcalendar-scheduler/lib/fullcalendar.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
front/lib/fullcalendar-scheduler/lib/fullcalendar.print.min.css
vendored
Normal file
9
front/lib/fullcalendar-scheduler/lib/fullcalendar.print.min.css
vendored
Normal 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}
|
||||
6
front/lib/fullcalendar-scheduler/lib/gcal.min.js
vendored
Normal file
6
front/lib/fullcalendar-scheduler/lib/gcal.min.js
vendored
Normal 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}})});
|
||||
13
front/lib/fullcalendar-scheduler/lib/jquery-ui.min.js
vendored
Normal file
13
front/lib/fullcalendar-scheduler/lib/jquery-ui.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
front/lib/fullcalendar-scheduler/lib/jquery.min.js
vendored
Normal file
2
front/lib/fullcalendar-scheduler/lib/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
front/lib/fullcalendar-scheduler/lib/moment.min.js
vendored
Normal file
1
front/lib/fullcalendar-scheduler/lib/moment.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
463
front/lib/fullcalendar-scheduler/scheduler.css
Normal file
463
front/lib/fullcalendar-scheduler/scheduler.css
Normal 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; }
|
||||
6338
front/lib/fullcalendar-scheduler/scheduler.js
Normal file
6338
front/lib/fullcalendar-scheduler/scheduler.js
Normal file
File diff suppressed because it is too large
Load Diff
5
front/lib/fullcalendar-scheduler/scheduler.min.css
vendored
Normal file
5
front/lib/fullcalendar-scheduler/scheduler.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
9
front/lib/fullcalendar-scheduler/scheduler.min.js
vendored
Normal file
9
front/lib/fullcalendar-scheduler/scheduler.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user