Fixed current day class issue. Added ability to add resource classnames. Updated to reflect latest core updates. Fixed some IE7 issues around indexOf

This commit is contained in:
srkenny@gmail.com
2013-08-13 14:58:51 +01:00
parent 4c06ad6e66
commit 5d9928b47f
16 changed files with 1345 additions and 1056 deletions
Vendored
BIN
View File
Binary file not shown.
+3 -1
View File
@@ -8,4 +8,6 @@ dist
node_modules
# for bower
components
components
.DS_Store
+8
View File
@@ -376,6 +376,14 @@ function EventManager(options, _sources) {
}else{
event.className = [];
}
if (event.resources) {
if (typeof event.resources == 'string') {
event.resources = event.resources.split(/\s+/);
}
}else{
event.resources = [];
}
// TODO: if there is no start date, return false to indicate an invalid event
}
+2 -2
View File
@@ -171,7 +171,7 @@ function DayEventRenderer() {
function buildSegments(events) {
var resources = t.getResources;
if (resources.length === 0){
if (typeof resources === 'undefined'){
return buildSegmentsTEMP(events); // TEMP!
} else {
var segments = [];
@@ -193,7 +193,7 @@ function DayEventRenderer() {
function eventsForResource(resource, events) {
var resourceEvents = [];
for (var i = 0; i < events.length; i++) {
if (events[i].resource && events[i].resource.indexOf(resource.id) >= 0) {
if (events[i].resources && $.inArray(resource.id, events[i].resources) >= 0) {
resourceEvents.push(events[i])
}
}
+37 -24
View File
@@ -1,28 +1,41 @@
fcViews.resourceDay = ResourceDayView;
function ResourceDayView(element, calendar) {
var t = this;
// exports
t.render = render;
// imports
ResourceView.call(t, element, calendar, 'resourceDay');
var opt = t.opt;
var renderResource = t.renderResource;
//var skipHiddenDays = t.skipHiddenDays;
var formatDate = calendar.formatDate;
var getResources = t.getResources;
function render(date, delta) {
if (delta) {
addDays(date, delta);
}
//skipHiddenDays(date, delta < 0 ? -1 : 1);
var start = cloneDate(date, true);
var end = addDays(cloneDate(start), 1);
t.title = formatDate(date, opt('titleFormat'));
t.start = t.visStart = start;
t.end = t.visEnd = end;
renderResource(getResources.length);
}
function ResourceDayView(element, calendar) {
var t = this;
// exports
t.render = render;
// imports
ResourceView.call(t, element, calendar, 'resourceDay');
var opt = t.opt;
var renderResource = t.renderResource;
var skipHiddenDays = t.skipHiddenDays;
var formatDate = calendar.formatDate;
var getResources = t.getResources;
function render(date, delta) {
if (delta) {
addDays(date, delta);
}
skipHiddenDays(date, delta < 0 ? -1 : 1);
var start = cloneDate(date, true);
var end = addDays(cloneDate(start), 1);
t.title = formatDate(date, opt('titleFormat'));
t.start = t.visStart = start;
t.end = t.visEnd = end;
renderResource(getResources.length);
}
}
+140 -126
View File
@@ -24,6 +24,7 @@ function ResourceEventRenderer() {
var getMaxMinute = t.getMaxMinute;
var getMinMinute = t.getMinMinute;
var timePosition = t.timePosition;
var getIsCellAllDay = t.getIsCellAllDay;
var colContentLeft = t.colContentLeft;
var colContentRight = t.colContentRight;
var cellToDate = t.cellToDate;
@@ -44,7 +45,9 @@ function ResourceEventRenderer() {
var calendar = t.calendar;
var formatDate = calendar.formatDate;
var formatDates = calendar.formatDates;
var resources = t.getResources; // imported from ResourceView.js
var resources = t.getResources;
// overrides
t.draggableDayEvent = draggableDayEvent;
@@ -74,6 +77,7 @@ function ResourceEventRenderer() {
renderSlotSegs(compileSlotSegs(slotEvents), modifiedEventId);
}
function clearEvents() {
getDaySegmentContainer().empty();
getSlotSegmentContainer().empty();
@@ -92,16 +96,13 @@ function ResourceEventRenderer() {
segs = [];
for (i=0; i<colCnt; i++) {
d = cloneDate(t.visStart); //cellToDate(0, i);
//d = cellToDate(0, i);
d = cloneDate(t.visStart);
addMinutes(d, minMinute);
// get events for this resource
var resourceEvents = eventsForResource(resources[i], events); //$.map(eventsForResource(resources[i], events), slotEventEnd);
var resourceEvents = eventsForResource(resources[i], events);
col = stackAgendaSegs(
sliceSegs(
resourceEvents, //events,
resourceEvents,
visEventEnds,
d,
addMinutes(cloneDate(d), maxMinute-minMinute)
@@ -122,15 +123,6 @@ function ResourceEventRenderer() {
return segs;
}
function eventsForResource(resource, events) {
var resourceEvents = [];
for (var i = 0; i < events.length; i++) {
if (events[i].resource && events[i].resource.indexOf(resource.id) >= 0) {
resourceEvents.push(events[i])
}
}
return resourceEvents;
}
function sliceSegs(events, visEventEnds, start, end) {
var segs = [],
@@ -169,57 +161,16 @@ function ResourceEventRenderer() {
}
return segs.sort(segmentCompare);
}
// event rendering calculation utilities
function compileDaySegs(events) {
var levels = stackSegs(sliceSegs(events, $.map(events, exclEndDay), t.visStart, t.visEnd)),
i, levelCnt = levels.length,
level,
j, seg,
segs = [];
for (i = 0; i < levelCnt; i++) {
level = levels[i];
for (j = 0; j < level.length; j++) {
seg = level[j];
seg.row = 0;
seg.level = i; // not needed anymore
segs.push(seg);
}
}
return segs;
}
function stackSegs(segs) {
var levels = [],
i, len = segs.length,
seg,
j, collide, k;
for (i = 0; i < len; i++) {
seg = segs[i];
j = 0; // the level index where seg should belong
while (true) {
collide = false;
if (levels[j]) {
for (k = 0; k < levels[j].length; k++) {
if (segsCollide(levels[j][k], seg)) {
collide = true;
break;
}
}
}
if (collide) {
j++;
} else {
break;
}
}
if (levels[j]) {
levels[j].push(seg);
} else {
levels[j] = [seg];
}
}
return levels;
}
function eventsForResource(resource, events) {
var resourceEvents = [];
for (var i = 0; i < events.length; i++) {
if (events[i].resources && $.inArray(resource.id, events[i].resources) >= 0) {
resourceEvents.push(events[i])
}
}
return resourceEvents;
}
function slotEventEnd(event) {
if (event.end) {
@@ -387,14 +338,20 @@ function ResourceEventRenderer() {
}
html +=
" class='" + classes.join(' ') + "'" +
" style='position:absolute;z-index:8;top:" + seg.top + "px;left:" + seg.left + "px;" + skinCss + "'" +
" style=" +
"'" +
"position:absolute;" +
"top:" + seg.top + "px;" +
"left:" + seg.left + "px;" +
skinCss +
"'" +
">" +
"<div class='fc-event-inner'>" +
"<div class='fc-event-time'>" +
htmlEscape(formatDates(event.start, event.end, opt('timeFormat'))) +
"</div>" +
"<div class='fc-event-title'>" +
htmlEscape(event.title) +
htmlEscape(event.title || '') +
"</div>" +
"</div>" +
"<div class='fc-event-bg'></div>";
@@ -441,7 +398,6 @@ function ResourceEventRenderer() {
var snapMinutes = getSnapMinutes();
var minMinute = getMinMinute();
eventElement.draggable({
zIndex: 9,
opacity: opt('dragOpacity', 'month'), // use whatever the month view was using
revertDuration: opt('dragRevertDuration'),
start: function(ev, ui) {
@@ -527,80 +483,147 @@ function ResourceEventRenderer() {
// when event starts out IN TIMESLOTS
function draggableSlotEvent(event, eventElement, timeElement) {
var origPosition;
var allDay = false;
var dayDelta;
var minuteDelta;
var prevMinuteDelta;
var hoverListener = getHoverListener();
var coordinateGrid = t.getCoordinateGrid();
var colCnt = getColCnt();
var colWidth = getColWidth();
var snapHeight = getSnapHeight();
var snapMinutes = getSnapMinutes();
// states
var origPosition; // original position of the element, not the mouse
var origCell;
var isInBounds, prevIsInBounds;
var isAllDay, prevIsAllDay;
var colDelta, prevColDelta;
var dayDelta; // derived from colDelta
var minuteDelta, prevMinuteDelta;
eventElement.draggable({
zIndex: 9,
scroll: false,
grid: [colWidth, snapHeight],
grid: [ colWidth, snapHeight ],
axis: colCnt==1 ? 'y' : false,
opacity: opt('dragOpacity'),
revertDuration: opt('dragRevertDuration'),
start: function(ev, ui) {
trigger('eventDragStart', eventElement, event, ev, ui);
hideEvents(event, eventElement);
coordinateGrid.build();
// initialize states
origPosition = eventElement.position();
origCell = coordinateGrid.cell(ev.pageX, ev.pageY);
isInBounds = prevIsInBounds = true;
isAllDay = prevIsAllDay = getIsCellAllDay(origCell);
colDelta = prevColDelta = 0;
dayDelta = 0;
minuteDelta = prevMinuteDelta = 0;
hoverListener.start(function(cell, origCell) {
eventElement.draggable('option', 'revert', !cell);
clearOverlays();
if (cell) {
var origDate = cellToDate(0, origCell.col);
var date = cellToDate(0, cell.col);
dayDelta = dayDiff(date, origDate);
if (opt('allDaySlot') && !cell.row) {
// over full days
if (!allDay) {
// convert to temporary all-day event
allDay = true;
timeElement.hide();
eventElement.draggable('option', 'grid', null);
}
renderDayOverlay(
addDays(cloneDate(event.start), dayDelta),
addDays(exclEndDay(event), dayDelta)
);
}else{
// on slots
resetElement();
}
}
}, ev, 'drag');
},
drag: function(ev, ui) {
minuteDelta = Math.round((ui.position.top - origPosition.top) / snapHeight) * snapMinutes;
if (minuteDelta != prevMinuteDelta) {
if (!allDay) {
updateTimeText(minuteDelta);
// NOTE: this `cell` value is only useful for determining in-bounds and all-day.
// Bad for anything else due to the discrepancy between the mouse position and the
// element position while snapping. (problem revealed in PR #55)
//
// PS- the problem exists for draggableDayEvent() when dragging an all-day event to a slot event.
// We should overhaul the dragging system and stop relying on jQuery UI.
var cell = coordinateGrid.cell(ev.pageX, ev.pageY);
// update states
isInBounds = !!cell;
if (isInBounds) {
isAllDay = getIsCellAllDay(cell);
// calculate column delta
colDelta = Math.round((ui.position.left - origPosition.left) / colWidth);
if (colDelta != prevColDelta) {
// calculate the day delta based off of the original clicked column and the column delta
var origDate = cellToDate(0, origCell.col);
var col = origCell.col + colDelta;
col = Math.max(0, col);
col = Math.min(colCnt-1, col);
var date = cellToDate(0, col);
dayDelta = dayDiff(date, origDate);
}
// calculate minute delta (only if over slots)
if (!isAllDay) {
minuteDelta = Math.round((ui.position.top - origPosition.top) / snapHeight) * snapMinutes;
}
}
// any state changes?
if (
isInBounds != prevIsInBounds ||
isAllDay != prevIsAllDay ||
colDelta != prevColDelta ||
minuteDelta != prevMinuteDelta
) {
updateUI();
// update previous states for next time
prevIsInBounds = isInBounds;
prevIsAllDay = isAllDay;
prevColDelta = colDelta;
prevMinuteDelta = minuteDelta;
}
// if out-of-bounds, revert when done, and vice versa.
eventElement.draggable('option', 'revert', !isInBounds);
},
stop: function(ev, ui) {
var cell = hoverListener.stop();
clearOverlays();
trigger('eventDragStop', eventElement, event, ev, ui);
if (cell && (dayDelta || minuteDelta || allDay)) {
// changed!
eventDrop(this, event, dayDelta, allDay ? 0 : minuteDelta, allDay, ev, ui);
}else{
// either no change or out-of-bounds (draggable has already reverted)
resetElement();
if (isInBounds && (isAllDay || dayDelta || minuteDelta)) { // changed!
eventDrop(this, event, dayDelta, isAllDay ? 0 : minuteDelta, isAllDay, ev, ui);
}
else { // either no change or out-of-bounds (draggable has already reverted)
// reset states for next time, and for updateUI()
isInBounds = true;
isAllDay = false;
colDelta = 0;
dayDelta = 0;
minuteDelta = 0;
updateUI();
eventElement.css('filter', ''); // clear IE opacity side-effects
eventElement.css(origPosition); // sometimes fast drags make event revert to wrong position
updateTimeText(0);
// sometimes fast drags make event revert to wrong position, so reset.
// also, if we dragged the element out of the area because of snapping,
// but the *mouse* is still in bounds, we need to reset the position.
eventElement.css(origPosition);
showEvents(event, eventElement);
}
}
});
function updateUI() {
clearOverlays();
if (isInBounds) {
if (isAllDay) {
timeElement.hide();
eventElement.draggable('option', 'grid', null); // disable grid snapping
renderDayOverlay(
addDays(cloneDate(event.start), dayDelta),
addDays(exclEndDay(event), dayDelta)
);
}
else {
updateTimeText(minuteDelta);
timeElement.css('display', ''); // show() was causing display=inline
eventElement.draggable('option', 'grid', [colWidth, snapHeight]); // re-enable grid snapping
}
}
}
function updateTimeText(minuteDelta) {
var newStart = addMinutes(cloneDate(event.start), minuteDelta);
var newEnd;
@@ -609,14 +632,7 @@ function ResourceEventRenderer() {
}
timeElement.text(formatDates(newStart, newEnd, opt('timeFormat')));
}
function resetElement() {
// convert back to original slot-event
if (allDay) {
timeElement.css('display', ''); // show() was causing display=inline
eventElement.draggable('option', 'grid', [colWidth, snapHeight]);
allDay = false;
}
}
}
@@ -637,7 +653,6 @@ function ResourceEventRenderer() {
start: function(ev, ui) {
snapDelta = prevSnapDelta = 0;
hideEvents(event, eventElement);
eventElement.css('z-index', 9);
trigger('eventResizeStart', this, event, ev, ui);
},
resize: function(ev, ui) {
@@ -660,7 +675,6 @@ function ResourceEventRenderer() {
if (snapDelta) {
eventResize(this, event, 0, snapMinutes*snapDelta, ev, ui);
}else{
eventElement.css('z-index', 8);
showEvents(event, eventElement);
// BUG: if event was really short, need to put title back in span
}
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -20,7 +20,7 @@
},
editable: true,
events: {
url: "many_events_json.txt",
url: "many_events_json.php",
data: function() {
var custom_data = { q: 'custom data value' }; // should see this in Networking
console.log('setting custom_data as part of the eventSource fetch');
+2 -2
View File
@@ -17,7 +17,7 @@
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
left: 'prev next today',
center: 'title',
right: 'month,agendaWeek,basicWeek,agendaDay,basicDay'
},
@@ -27,7 +27,7 @@
month: 6, // july
//weekNumbers: true,
isRTL: true,
isRTL: false,
//selectable: true,
//firstDay: 2,
//weekends: false,
+81
View File
@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html>
<head>
<style>
a {
display: block;
}
</style>
</head>
<body>
<div id="tests"></div>
<script>
var tests = [
'data_as_a_function.html',
'day_render.html',
'dbclick.html',
'droppable.html',
'event_data_transform.html',
'fullheight.html',
'gcal.html',
'hiddenDays.html',
'iframe.html',
'issue_206_parseDate_dst.html',
'issue_220_buttons_ie6.html',
'issue_221_quick_remove_source.html',
'issue_230_height_json_events.html',
'issue_244_aspectRatio_0.html',
'issue_251_empty_end_date.html',
'issue_333_blinking.html',
'issue_417_refetchEvents.html',
'issue_429_gotoDate.html',
'issue_477_event_width.html',
'issue_517_js_error_ie.html',
'issue_554.html',
'issue_586_refetchEvents.html',
'issue_616.html',
'issue_679.html',
'issue_688_parseInt.html',
'issue_740_event_resizing.html',
'issue_750.html',
'issue_757_removeEvents.html',
'liquidwidth.html',
'locale.html',
'long_event_titles.html',
'many_agenda_events.html',
'many_events.html',
'method_destroy.html',
'methods.html',
'no_event_titles.html',
'options.html',
'past_future_classNames.html',
'plain.html',
'resourceDayView.html',
'selectable.html',
'short_agenda.html',
'skip-redraw-test.html',
'snap.html',
'sources.html',
'sources_new.html',
'stacking.html',
'tabs.html',
'theming.html',
'triggers.html',
'triggers_view.html',
'week_numbers.html'
];
var html = '';
var div = document.getElementById('tests');
for(var i = 0; i < tests.length; i++){
var a = document.createElement('a');
a.href = tests[i];
a.innerHTML = tests[i];
div.appendChild(a);
}
</script>
</body>
</html>
+1 -1
View File
@@ -16,7 +16,7 @@
//date: 22,
//defaultView: 'agendaWeek', // error also occured with month view
editable: true,
events: "../demos/json-events.php"
events: "../demos/json-events.json"
});
$('#calendar').fullCalendar('option', 'height', $(window).height()-80);
+6
View File
@@ -56,6 +56,12 @@
</style>
</head>
<body>
<p>
- click on day button
- click refetchEvents
- click on month button
event shouldn't disappear!!!
</p>
<button onclick="$('#calendar').fullCalendar('refetchEvents')">refetchEvents</button>
<div id='calendar'></div>
</body>
+1
View File
@@ -48,6 +48,7 @@
</style>
</head>
<body>
<p>// need to change to GMT+2 to recreate this bug!!!!</p>
<div id='calendar'></div>
</body>
</html>
+208 -186
View File
@@ -1,209 +1,231 @@
<!DOCTYPE html>
<html>
<head>
<link href='../build/out/fullcalendar.css' rel='stylesheet' />
<link href='../build/out/fullcalendar.print.css' rel='stylesheet' media='print' />
<link href='../build/out/fullcalendar.css' rel='stylesheet' />
<link href='../build/out/fullcalendar.print.css' rel='stylesheet' media='print' />
<style>
<style>
button {
font-size: 11px;
}
button {
font-size: 11px;
}
</style>
</style>
</head>
<body style='font-size:12px'>
<p>
<p>
<!-- <button onclick="cal.fullCalendar('prev')">prev</button>
<button onclick="cal.fullCalendar('next')">next</button>
<button onclick="cal.fullCalendar('today')">today</button>
<button onclick="cal.fullCalendar('gotoDate', 1999, 9, 31)">Oct 31 1999</button>
<button onclick="cal.fullCalendar('gotoDate', new Date(1999, 9, 30))">Oct 30 1999 (Date)</button>
<button onclick="cal.fullCalendar('incrementDate', 1, 1, 1)">+1 +1 +1</button>
<button onclick="cal.fullCalendar('incrementDate', -1, -1, -1)">-1 -1 -1</button>
<button onclick="cal.fullCalendar('prev')">prev</button>
<button onclick="cal.fullCalendar('next')">next</button>
<button onclick="cal.fullCalendar('today')">today</button>
<button onclick="cal.fullCalendar('gotoDate', 1999, 9, 31)">Oct 31 1999</button>
<button onclick="cal.fullCalendar('gotoDate', new Date(1999, 9, 30))">Oct 30 1999 (Date)</button>
<button onclick="cal.fullCalendar('incrementDate', 1, 1, 1)">+1 +1 +1</button>
<button onclick="cal.fullCalendar('incrementDate', -1, -1, -1)">-1 -1 -1</button>
<button onclick="updateEventStart()">update event start</button>
<button onclick="updateRepeatingEvent()">update repeating event</button>
<button onclick="renderEvent(false)">render new event</button>
<button onclick="renderEvent(true)">render new sticky event</button>
<br />
<button onclick="updateEventStart()">update event start</button>
<button onclick="updateRepeatingEvent()">update repeating event</button>
<button onclick="renderEvent(false)">render new event</button>
<button onclick="renderEvent(true)">render new sticky event</button>
<br />
<button onclick="cal.fullCalendar('removeEvents')">remove all</button>
<button onclick="cal.fullCalendar('removeEvents', 999)">remove repeating events</button>
<button onclick="cal.fullCalendar('removeEvents', function(e){return !e.allDay})">remove timed events</button>
<button onclick="console.log(cal.fullCalendar('clientEvents'))">log events</button>
<button onclick="console.log(cal.fullCalendar('clientEvents', '999'))">log repeating events</button>
<button onclick="console.log(cal.fullCalendar('clientEvents', function(e){return e.allDay}))">log all-day events</button>
<br />
<button onclick="cal.fullCalendar('removeEvents')">remove all</button>
<button onclick="cal.fullCalendar('removeEvents', 999)">remove repeating events</button>
<button onclick="cal.fullCalendar('removeEvents', function(e){return !e.allDay})">remove timed events</button>
<button onclick="console.log(cal.fullCalendar('clientEvents'))">log events</button>
<button onclick="console.log(cal.fullCalendar('clientEvents', '999'))">log repeating events</button>
<button onclick="console.log(cal.fullCalendar('clientEvents', function(e){return e.allDay}))">log all-day events</button>
<br />
<button onclick="cal.fullCalendar('addEventSource', staticEvents)">+ static events</button>
<button onclick="cal.fullCalendar('removeEventSource', staticEvents)">- static events</button>
<button onclick="cal.fullCalendar('addEventSource', gcalFeed)">+ gcal</button>
<button onclick="cal.fullCalendar('removeEventSource', gcalFeed)">- gcal</button>
<button onclick="cal.fullCalendar('addEventSource', jsonFeed)">+ json</button>
<button onclick="cal.fullCalendar('removeEventSource', jsonFeed)">- json</button>
<button onclick="cal.fullCalendar('addEventSource', staticEvents)">+ static events</button>
<button onclick="cal.fullCalendar('removeEventSource', staticEvents)">- static events</button>
<button onclick="cal.fullCalendar('addEventSource', gcalFeed)">+ gcal</button>
<button onclick="cal.fullCalendar('removeEventSource', gcalFeed)">- gcal</button>
<button onclick="cal.fullCalendar('addEventSource', jsonFeed)">+ json</button>
<button onclick="cal.fullCalendar('removeEventSource', jsonFeed)">- json</button>
<button onclick="cal.fullCalendar('rerenderEvents')">rerender events</button>
<button onclick="cal.fullCalendar('refetchEvents')">refetch events</button>
<br />
<button onclick="cal.fullCalendar('rerenderEvents')">rerender events</button>
<button onclick="cal.fullCalendar('refetchEvents')">refetch events</button>
<br />
<button onclick="cal.fullCalendar('changeView', 'month')">change to month</button>
<button onclick="cal.fullCalendar('changeView', 'basicWeek')">change to basicWeek</button>
<button onclick="cal.fullCalendar('changeView', 'basicDay')">change to basicDay</button>
<button onclick="getView()">getView</button>
<button onclick="getDate()">getDate</button>
<button onclick="optionGetter()">option getter</button>
<button onclick="cal.width(1100)">change width (passive)</button>
<button onclick="cal.fullCalendar('render')">render</button>
<button onclick="cal.fullCalendar('option', 'height', 1000)">change height</button> -->
</p>
<!-- <div id='loading' style='position:absolute;display:none'>loading...</div>-->
<button onclick="cal.fullCalendar('changeView', 'month')">change to month</button>
<button onclick="cal.fullCalendar('changeView', 'basicWeek')">change to basicWeek</button>
<button onclick="cal.fullCalendar('changeView', 'basicDay')">change to basicDay</button>
<button onclick="getView()">getView</button>
<button onclick="getDate()">getDate</button>
<button onclick="optionGetter()">option getter</button>
<button onclick="cal.width(1100)">change width (passive)</button>
<button onclick="cal.fullCalendar('render')">render</button>
<button onclick="cal.fullCalendar('option', 'height', 1000)">change height</button>
</p>
<!-- <div id='loading' style='position:absolute;display:none'>loading...</div>-->
<div id='calendar' style='width:70%;margin:20px auto 0;font-family:arial'></div>
<script src='../build/out/jquery.js'></script>
<script src='../build/out/jquery-ui.js'></script>
<!--<script src='../src/intro.js'></script> -->
<script src='../src/defaults.js'></script>
<script src='../src/main.js'></script>
<script src='../src/Calendar.js'></script>
<script src='../src/Header.js'></script>
<script src='../src/EventManager.js'></script>
<script src='../src/ResourceManager.js'></script>
<script src='../src/date_util.js'></script>
<script src='../src/util.js'></script>
<script src='../src/basic/MonthView.js'></script>
<script src='../src/basic/BasicWeekView.js'></script>
<script src='../src/basic/BasicDayView.js'></script>
<script src='../src/basic/BasicView.js'></script>
<script src='../src/basic/BasicEventRenderer.js'></script>
<script src='../src/agenda/AgendaWeekView.js'></script>
<script src='../src/agenda/AgendaDayView.js'></script>
<script src='../src/agenda/AgendaView.js'></script>
<!-- <script src='../src/agenda/AgendaEventRenderer.js'></script>-->
<script src='../src/resource/ResourceDayView.js'></script>
<script src='../src/resource/ResourceView.js'></script>
<script src='../src/resource/ResourceEventRenderer.js'></script>
<script src='../src/common/View.js'></script>
<script src='../src/common/DayEventRenderer.js'></script>
<script src='../src/common/SelectionManager.js'></script>
<script src='../src/common/OverlayManager.js'></script>
<script src='../src/common/CoordinateGrid.js'></script>
<script src='../src/common/HoverListener.js'></script>
<script src='../src/common/HorizontalPositionCache.js'></script>
<!--<script src='../src/outro.js'></script>-->
<!-- <script src='../build/out/fullcalendar.js'></script> -->
<script src='../build/out/gcal.js'></script>
<script>
<script src='../build/out/jquery.js'></script>
<script src='../build/out/jquery-ui.js'></script>
<!--<script src='../src/intro.js'></script> -->
<script src='../src/defaults.js'></script>
<script src='../src/main.js'></script>
<script src='../src/Calendar.js'></script>
<script src='../src/Header.js'></script>
<script src='../src/EventManager.js'></script>
<script src='../src/ResourceManager.js'></script>
<script src='../src/date_util.js'></script>
<script src='../src/util.js'></script>
<script src='../src/basic/MonthView.js'></script>
<script src='../src/basic/BasicWeekView.js'></script>
<script src='../src/basic/BasicDayView.js'></script>
<script src='../src/basic/BasicView.js'></script>
<script src='../src/basic/BasicEventRenderer.js'></script>
<script src='../src/agenda/AgendaWeekView.js'></script>
<script src='../src/agenda/AgendaDayView.js'></script>
<script src='../src/agenda/AgendaView.js'></script>
<script src='../src/agenda/AgendaEventRenderer.js'></script>
<script src='../src/resource/ResourceDayView.js'></script>
<script src='../src/resource/ResourceView.js'></script>
<script src='../src/resource/ResourceEventRenderer.js'></script>
<script src='../src/common/View.js'></script>
<script src='../src/common/DayEventRenderer.js'></script>
<script src='../src/common/SelectionManager.js'></script>
<script src='../src/common/OverlayManager.js'></script>
<script src='../src/common/CoordinateGrid.js'></script>
<script src='../src/common/HoverListener.js'></script>
<script src='../src/common/HorizontalPositionCache.js'></script>
<!--<script src='../src/outro.js'></script>-->
<!-- <script src='../build/out/fullcalendar.js'></script> -->
<script src='../build/out/gcal.js'></script>
<script>
var cal, staticEvents;
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var cal, staticEvents;
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$(document).ready(function() {
cal = $('#calendar').fullCalendar({
// editable: true,
// weekends: false,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,basicWeek,agendaDay,basicDay'
},
// loading: function(bool) {
// if (bool) {
// $('#loading').show();
// }else{
// $('#loading').hide();
// }
// },
defaultView: 'resourceDay',
resources: [{"id":"resource1","name":"Resource 1"},{"id":"resource2", "name":"Resource 2"},{"id":"resource3", "name":"Resource 3"}],
events: [
{
title: 'R1-R2: Lunch 12.15-14.45',
start: new Date(y, m, d, 12, 15),
end: new Date(y, m, d, 14, 45),
allDay: false,
resource: ['resource1','resource2']
},
{
title: 'R1: All day',
start: new Date(y, m, d, 10, 30),
end: new Date(y, m, d, 11, 00),
allDay: true,
resource: 'resource1'
},
{
title: 'R2: Meeting 11.00',
start: new Date(y, m, d, 11, 00),
allDay: true,
resource: 'resource2'
},
{
title: 'R1/R2: Lunch 12-14',
start: new Date(y, m, d, 12, 0),
end: new Date(y, m, d, 14, 0),
allDay: false,
resource: ['resource1','resource2']
}
]
});
});
// function updateEventStart() {
// var event = cal.fullCalendar('clientEvents', 777)[0];
// event.start = new Date(y, m, d, 13, 30);
// event.end = new Date(y, m, d, 14, 50);
// //event.start = new Date(y, m, 25, 10, 30); // move big days
// //event.end = new Date(y, m, 26);
// //event.allDay = true;
// cal.fullCalendar('updateEvent', event);
// }
// function updateRepeatingEvent() {
// var event = cal.fullCalendar('clientEvents', 999)[0];
// event.start = new Date(y, m, 4, 13, 30);
// event.end = new Date(y, m, 5, 2, 0);
// event.allDay = true;
// event.title = "repeat yo";
// //event.editable = false;
// event.url = "http://google.com/";
// event.color = 'red';
// event.textColor = 'green';
// cal.fullCalendar('updateEvent', event);
// //console.log(cal.fullCalendar('clientEvents', 2));
// }
// function renderEvent(stick) {
// cal.fullCalendar('renderEvent', {
// start: new Date(y, m, 17),
// title: 'heyman'
// }, stick);
// }
// function getView() {
// var view = cal.fullCalendar('getView');
// console.log(view.start + ' --- ' + view.end + ' "' + view.title + '"');
// }
// function getDate() {
// console.log(cal.fullCalendar('getDate'));
// }
// function optionGetter() {
// console.log(cal.fullCalendar('option', 'editable'));
// }
// var gcalFeed = $.fullCalendar.gcalFeed("http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic");
// var jsonFeed = "../demos/json-events.php";
$(document).ready(function() {
cal = $('#calendar').fullCalendar({
// editable: true,
// weekends: false,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,basicWeek,agendaDay,basicDay,resourceDay'
},
// loading: function(bool) {
// if (bool) {
// $('#loading').show();
// }else{
// $('#loading').hide();
// }
// },
defaultView: 'resourceDay',
resources: [{'id':'resource1','name':'Resource 1', 'className': 'css-class-as-string'},{'id':'resource2', 'name':'Resource 2', 'className': ['green', 'another-css-class-name']},{'id':'resource3', 'name':'Resource 3'}],
events: [
{
title: 'R1-R2: Lunch 12.15-14.45',
start: new Date(y, m, d, 12, 15),
end: new Date(y, m, d, 14, 45),
allDay: false,
resources: ['resource1','resource2']
},
{
title: 'R1: All day',
start: new Date(y, m, d, 10, 30),
end: new Date(y, m, d, 11, 00),
allDay: true,
resources: 'resource1'
},
{
title: 'R2: Meeting 11.00',
start: new Date(y, m, d, 11, 00),
allDay: true,
resources: 'resource2'
},
{
title: 'R1/R2: Lunch 12-14',
start: new Date(y, m, d, 12, 0),
end: new Date(y, m, d, 14, 0),
allDay: false,
resources: ['resource1','resource2']
},
{
id: 777,
title: 'Lunch',
start: new Date(y, m, d, 12, 0),
end: new Date(y, m, d, 14, 0),
allDay: false,
resources: ['resource1']
},
{
id: 999,
title: 'Repeating Event',
start: new Date(y, m, d-3, 16, 0),
allDay: false,
resources: 'resource2'
},
{
id: 999,
title: 'Repeating Event',
start: new Date(y, m, d+4, 16, 0),
allDay: false,
resources: 'resource2'
}
]
});
});
function updateEventStart() {
var event = cal.fullCalendar('clientEvents', 777)[0];
event.start = new Date(y, m, d, 13, 30);
event.end = new Date(y, m, d, 14, 50);
//event.start = new Date(y, m, 25, 10, 30); // move big days
//event.end = new Date(y, m, 26);
//event.allDay = true;
cal.fullCalendar('updateEvent', event);
}
function updateRepeatingEvent() {
var event = cal.fullCalendar('clientEvents', 999)[0];
event.start = new Date(y, m, 4, 13, 30);
event.end = new Date(y, m, 5, 2, 0);
event.allDay = true;
event.title = "repeat yo";
//event.editable = false;
event.url = "http://google.com/";
event.color = 'red';
event.textColor = 'green';
cal.fullCalendar('updateEvent', event);
//console.log(cal.fullCalendar('clientEvents', 2));
}
function renderEvent(stick) {
cal.fullCalendar('renderEvent', {
start: new Date(y, m, 17),
title: 'heyman'
}, stick);
}
function getView() {
var view = cal.fullCalendar('getView');
console.log(view.start + ' --- ' + view.end + ' "' + view.title + '"');
}
function getDate() {
console.log(cal.fullCalendar('getDate'));
}
function optionGetter() {
console.log(cal.fullCalendar('option', 'editable'));
}
var gcalFeed = $.fullCalendar.gcalFeed("http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic");
var jsonFeed = "../demos/json-events.php";
</script>
</script>
</body>
</html>