Skip to content

Commit 7ae804c

Browse files
committed
Added in-flight time feedback on dragged events
1 parent bdfea8f commit 7ae804c

File tree

2 files changed

+51
-9
lines changed

2 files changed

+51
-9
lines changed

js/rc_calendar.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
render_event : 'view_week_render_event',
1212
postcalrender : function(){},
1313

14-
get_time_offset : function( evt, ui ){return ui.offset.top + $(evt.target).parent().scrollTop() - evt.target.offsetTop;},
14+
get_time_offset : function( draggable, droppable, parent ){
15+
return draggable.offset.top + parent.scrollTop() - droppable.offsetTop;
16+
},
1517

1618
// persistent event storage accessor functions
1719
// (override with application functions in rc_calendar constructor call)
@@ -150,7 +152,7 @@ function Calendar( element, options )
150152
drop: function( event, ui ) {
151153
var dragged = $(ui.draggable[0]);
152154
var target = $(event.target);
153-
var time_offset = t.options.get_time_offset( event, ui );
155+
var time_offset = t.options.get_time_offset( ui, event.target, $(event.target).parent() );
154156
var start_time = nearest_time( time_offset );
155157
var date = new moment( parseInt(target.attr('data-date'),10) );
156158
var resource_id = target.parent().attr('id');
@@ -259,18 +261,27 @@ function Calendar( element, options )
259261
appendTo : 'body',
260262
helper : 'clone',
261263
zIndex : 9999,
262-
/* drag : function( event, ui ){
263-
264+
drag : function( event, ui ){
264265
// [TODO]
265266
// Update Time in helper during drag
266267
// Add "next week, previous week" drag zones?
267268
//
269+
var target = findDroppable( ui );
270+
271+
if( target ){
272+
var tgtdiv = $('#'+target);
273+
// make compatible with 'drop' parameters
274+
tgtdiv.offsetTop = tgtdiv.offset().top;
275+
tgtdiv.offsetLeft = tgtdiv.offset().left;
276+
var time_offset = t.options.get_time_offset( ui, tgtdiv, tgtdiv.parent() );
277+
var start_time = nearest_time( time_offset );
278+
ui.helper.find(".rc_event_head").text(start_time);
279+
280+
console.log( start_time );
281+
}
268282

269-
var time_offset = t.options.get_time_offset( event, ui );
270-
var start_time = nearest_time( time_offset );
271-
ui.helper.find(".rc_event_head").text(start_time);
272-
}
273-
*/
283+
}
284+
274285
}).resizable({
275286
handles: 's',
276287

js/rc_utilities.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,37 @@ function confirm(message, callback, param) {
265265
}
266266

267267

268+
//
269+
// findDroppable
270+
// =============
271+
// Called during dragging, this function returns the id of a div beneath the draggable
272+
// object, if that div is a droppable target.
273+
//
274+
275+
function findDroppable( ui )
276+
{
277+
retval = false;
278+
279+
// should cache this selection...
280+
$('.ui-droppable').each(function(){
281+
282+
var parent = $($(this).parent());
283+
var viewableTop = parent.position().top + parent.scrollTop();
284+
var viewableBottom = viewableTop + parent.height();
285+
var pos = ui.position;
286+
287+
if( pos.top > viewableTop &&
288+
pos.top < viewableBottom &&
289+
pos.left > $(this).position().left &&
290+
pos.left < $(this).position().left + $(this).width() ){
291+
return retval = $(this).attr('id');
292+
}
293+
})
294+
295+
return retval;
296+
}
297+
298+
268299
//
269300
// insert_shuffle_meeting
270301
// ======================

0 commit comments

Comments
 (0)