Files
Facilitor/APPL/CAD/DragAndDrop.js
Jos Groot Lipman 3e3f5ee969 Merge 2020.1 Gold C changes
svn path=/Website/trunk/; revision=46631
2020-04-23 12:55:10 +00:00

100 lines
2.9 KiB
JavaScript

/*Credit JavaScript Kit www.javascriptkit.com
includer kan event functie drag_onMouseOut(dragElement) definieren
en drag_onDragEnd(dragElement)
*/
var evt;
var dragapproved=false;
var dragElement,dragStartX,dragStartY;
var temp1,temp2,correctieY;
// show of hide van dragElement scrollde ons navi-frame nogal eens.
// Het lukte niet om dat te voorkomen dus gewoon positie onthouden
// en vaak terugzetten.
var naviTop;
function dragmove(evt){
if (!dragapproved)
return;
if (!evt.which==1 && !evt.button==1)
{
$(dragElement).hide();
$("#navigationCell").scrollTop(naviTop);
return;
}
if (!evt) evt=event;
$(dragElement).show()
.css('position', 'absolute')
.css('left', evt.clientX + temp1 - dragStartX + "px")
.css('top', evt.clientY + temp2 - dragStartY + correctieY + "px");
$("#navigationCell").scrollTop(naviTop);
return false;
}
// Let op: we gebruiken eigenlijk default.asp/mydragstart
function dragstart(evt){
if (!evt) evt=event;
var srcEl = evt.srcElement || evt.target;
if (srcEl.className=="draggable")
{
/* global */ naviTop = $("#navigationCell").scrollTop();
clearSelect();
dragapproved=true;
dragElement=srcEl;
var table_id = $(dragElement).closest("table").attr("id");
var tX = $("#"+table_id).offset().left;
var tY = $("#"+table_id).offset().top;
correctieY = -10; // extra correctie van 10px om te voorkomen dat bij snel verslepen het label verdwijnt.
temp1 = parseInt($(dragElement).offset().left - tX);
temp2 = parseInt($(dragElement).offset().top - tY);
dragStartX=evt.clientX;
dragStartY=evt.clientY;
}
}
function dragend(evt){
if (dragapproved)
{
dragapproved=false;
$(dragElement).show()
.css('left', temp1 + "px")
.css('top', temp2 + "px");
$("#navigationCell").scrollTop(naviTop);
if (typeof drag_onDragEnd == 'function')
drag_onDragEnd.call(this, dragElement,evt||event);
}
}
function mouseout(evt){
if (dragapproved)
{
clearSelect();
$(dragElement).hide();
$("#navigationCell").scrollTop(naviTop);
if (typeof drag_onMouseOut == 'function')
drag_onMouseOut.call(this, dragElement,evt||event);
}
}
function draginit()
{
$(document).on("mouseout", mouseout)
.on("mousedown", dragstart)
.on("mousemove", dragmove)
.on("mouseup", dragend);
}
function clearSelect()
{
if (document.selection) // IE
{
document.selection.clear(); // Is anders irritant
}
else
{
if (document.getSelection) // Safari
document.getSelection().removeAllRanges(); // Is anders irritant
}
}