new option: dropAccept
This commit is contained in:
parent
c0c144569f
commit
1f02eb5f91
4 changed files with 54 additions and 24 deletions
|
@ -1161,11 +1161,7 @@ function Agenda(element, options, methods) {
|
||||||
/* External dragging
|
/* External dragging
|
||||||
-----------------------------------------------------*/
|
-----------------------------------------------------*/
|
||||||
|
|
||||||
view.isExternalDraggable = function(_element) {
|
view.dragStart = function(_dragElement, ev, ui) {
|
||||||
return _element.parentNode != daySegmentContainer[0] && _element.parentNode != slotSegmentContainer[0];
|
|
||||||
};
|
|
||||||
|
|
||||||
view.dragStart = function(ev) {
|
|
||||||
hoverListener.start(function(cell) {
|
hoverListener.start(function(cell) {
|
||||||
clearOverlay();
|
clearOverlay();
|
||||||
if (cell) {
|
if (cell) {
|
||||||
|
@ -1180,11 +1176,11 @@ function Agenda(element, options, methods) {
|
||||||
}, ev);
|
}, ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
view.dragStop = function(ev, ui) {
|
view.dragStop = function(_dragElement, ev, ui) {
|
||||||
var cell = hoverListener.stop();
|
var cell = hoverListener.stop();
|
||||||
clearOverlay();
|
clearOverlay();
|
||||||
if (cell) {
|
if (cell) {
|
||||||
view.trigger('drop', ev.target, cellDate(cell), cellIsAllDay(cell), ev, ui);
|
view.trigger('drop', _dragElement, cellDate(cell), cellIsAllDay(cell), ev, ui);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
10
src/grid.js
10
src/grid.js
|
@ -562,11 +562,7 @@ function Grid(element, options, methods) {
|
||||||
/* External dragging
|
/* External dragging
|
||||||
------------------------------------------------------*/
|
------------------------------------------------------*/
|
||||||
|
|
||||||
view.isExternalDraggable = function(_element) {
|
view.dragStart = function(_dragElement, ev, ui) {
|
||||||
return _element.parentNode != segmentContainer[0];
|
|
||||||
};
|
|
||||||
|
|
||||||
view.dragStart = function(ev, ui) {
|
|
||||||
hoverListener.start(function(cell) {
|
hoverListener.start(function(cell) {
|
||||||
clearOverlay();
|
clearOverlay();
|
||||||
if (cell) {
|
if (cell) {
|
||||||
|
@ -575,12 +571,12 @@ function Grid(element, options, methods) {
|
||||||
}, ev);
|
}, ev);
|
||||||
};
|
};
|
||||||
|
|
||||||
view.dragStop = function(ev, ui) {
|
view.dragStop = function(_dragElement, ev, ui) {
|
||||||
var cell = hoverListener.stop();
|
var cell = hoverListener.stop();
|
||||||
clearOverlay();
|
clearOverlay();
|
||||||
if (cell) {
|
if (cell) {
|
||||||
var d = cellDate(cell);
|
var d = cellDate(cell);
|
||||||
view.trigger('drop', ev.target, d, true, ev, ui);
|
view.trigger('drop', _dragElement, d, true, ev, ui);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
21
src/main.js
21
src/main.js
|
@ -821,21 +821,34 @@ $.fn.fullCalendar = function(options) {
|
||||||
$(window).resize(windowResize);
|
$(window).resize(windowResize);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* External event dropping
|
||||||
|
--------------------------------------------------------*/
|
||||||
|
|
||||||
if (options.droppable) {
|
if (options.droppable) {
|
||||||
|
var _dragElement;
|
||||||
$(document)
|
$(document)
|
||||||
.bind('dragstart', function(ev, ui) {
|
.bind('dragstart', function(ev, ui) {
|
||||||
if (view.isExternalDraggable(ev.target)) {
|
var _e = ev.target;
|
||||||
view.dragStart(ev, ui);
|
var e = $(_e);
|
||||||
|
if (!e.parents('.fc').length) { // not already inside a calendar
|
||||||
|
var accept = options.dropAccept;
|
||||||
|
if (!accept || ($.isFunction(accept) ? accept.call(_e, e) : e.is(accept))) {
|
||||||
|
_dragElement = _e;
|
||||||
|
view.dragStart(_dragElement, ev, ui);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.bind('dragstop', function(ev, ui) {
|
.bind('dragstop', function(ev, ui) {
|
||||||
if (view.isExternalDraggable(ev.target)) {
|
if (_dragElement) {
|
||||||
view.dragStop(ev, ui);
|
view.dragStop(_dragElement, ev, ui);
|
||||||
|
_dragElement = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// let's begin...
|
// let's begin...
|
||||||
changeView(options.defaultView);
|
changeView(options.defaultView);
|
||||||
|
|
||||||
|
|
|
@ -13,21 +13,18 @@
|
||||||
var y = date.getFullYear();
|
var y = date.getFullYear();
|
||||||
|
|
||||||
$('#calendar').fullCalendar({
|
$('#calendar').fullCalendar({
|
||||||
|
editable: true,
|
||||||
droppable: true,
|
droppable: true,
|
||||||
drop: function(date, allDay) {
|
drop: function(date, allDay) {
|
||||||
console.log('drop', date, allDay);
|
console.log('drop', date, allDay);
|
||||||
},
|
},
|
||||||
|
|
||||||
//defaultView: 'agendaWeek',
|
//defaultView: 'agendaWeek',
|
||||||
//isRTL: true,
|
//isRTL: true,
|
||||||
|
|
||||||
header: {
|
header: {
|
||||||
left: 'prev,next today',
|
left: 'prev,next today',
|
||||||
center: 'title',
|
center: 'title',
|
||||||
right: 'month,agendaWeek,basicWeek,agendaDay,basicDay'
|
right: 'month,agendaWeek,basicWeek,agendaDay,basicDay'
|
||||||
},
|
},
|
||||||
editable: true,
|
|
||||||
events: [
|
events: [
|
||||||
{
|
{
|
||||||
title: 'All Day Event',
|
title: 'All Day Event',
|
||||||
|
@ -78,7 +75,28 @@
|
||||||
|
|
||||||
$('.external-event').draggable({
|
$('.external-event').draggable({
|
||||||
revert: true,
|
revert: true,
|
||||||
revertDuration: 0
|
revertDuration: 0,
|
||||||
|
zIndex: 999
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#calendar2').fullCalendar({
|
||||||
|
droppable: true,
|
||||||
|
dropAccept: '.for-calendar2',
|
||||||
|
/*
|
||||||
|
dropAccept: function(e) {
|
||||||
|
console.log(e);
|
||||||
|
console.log(this);
|
||||||
|
return e.text() == 'Draggable 1';
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
drop: function(date, allDay) {
|
||||||
|
console.log('drop 2nd calendar', date, allDay);
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
left: 'prev,next today',
|
||||||
|
center: 'title',
|
||||||
|
right: 'month,agendaWeek,basicWeek,agendaDay,basicDay'
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -119,6 +137,11 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#calendar2 {
|
||||||
|
width: 900px;
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -126,7 +149,9 @@
|
||||||
<div id='external-events'>
|
<div id='external-events'>
|
||||||
<div class='external-event'>Draggable 1</div>
|
<div class='external-event'>Draggable 1</div>
|
||||||
<div class='external-event'>Draggable 2</div>
|
<div class='external-event'>Draggable 2</div>
|
||||||
<div class='external-event'>Draggable 3</div>
|
<div class='external-event for-calendar2'>Draggable 3</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div style='clear:both'></div>
|
||||||
|
<div id='calendar2'></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Add table
Reference in a new issue