mirror of
https://github.com/GB28181/GB28181-Simulation-Tool.git
synced 2026-02-07 23:16:24 +08:00
133 lines
4.3 KiB
JavaScript
133 lines
4.3 KiB
JavaScript
// JavaScript Document
|
|
/// <reference path="jquery.js"/>
|
|
/*
|
|
* dragndrop
|
|
* version: 1.0.0 (05/13/2009)
|
|
* @ jQuery v1.2.*
|
|
*
|
|
* Licensed under the GPL:
|
|
* http://gplv3.fsf.org
|
|
*
|
|
* Copyright 2008, 2009 Jericho [ thisnamemeansnothing[at]gmail.com ]
|
|
* usage:
|
|
*
|
|
*/
|
|
(function($) {
|
|
$.extend($.fn, {
|
|
getCss: function(key) {
|
|
var v = parseInt(this.css(key));
|
|
if (isNaN(v))
|
|
return false;
|
|
return v;
|
|
}
|
|
});
|
|
$.fn.Drags = function(opts) {
|
|
var ps = $.extend({
|
|
zIndex: 20,
|
|
opacity: .7,
|
|
handler: null,
|
|
onMove: function() { },
|
|
onDrop: function() { },
|
|
range: ''
|
|
}, opts);
|
|
var dragndrop = {
|
|
drag: function(e) {
|
|
var dragData = e.data.dragData;
|
|
var dx = dragData.left + e.pageX - dragData.offLeft;
|
|
var dy = dragData.top + e.pageY - dragData.offTop;
|
|
var r = dragData.newRange;
|
|
if( typeof r == 'object' )
|
|
dragData.target.css({
|
|
left: dx < r[3] ? r[3] : ( dx > r[1] ? r[1] : dx ),
|
|
top: dy < r[0] ? r[0] : ( dy > r[2] ? r[2] : dy )
|
|
//left: dx,
|
|
//top: dy
|
|
});
|
|
else if( r == '' )
|
|
dragData.target.css({
|
|
left: dx,
|
|
top: dy
|
|
});
|
|
dragData.target.css({
|
|
'opacity': ps.opacity,
|
|
'cursor' : 'move'
|
|
});
|
|
dragData.onMove(e);
|
|
},
|
|
drop: function(e) {
|
|
var dragData = e.data.dragData;
|
|
dragData.target.css(dragData.oldCss); //.css({ 'opacity': '' });
|
|
dragData.handler.css('cursor', dragData.oldCss.cursor);
|
|
dragData.onDrop(e);
|
|
$(document).unbind('mousemove', dragndrop.drag)
|
|
.unbind('mouseup', dragndrop.drop);
|
|
}
|
|
}
|
|
|
|
return this.each(function() {
|
|
var me = this;
|
|
var handler = null;
|
|
if (typeof ps.handler == 'undefined' || ps.handler == null)
|
|
handler = $(me);
|
|
else
|
|
handler = (typeof ps.handler == 'string' ? $(ps.handler, this) : ps.handler);
|
|
handler.bind('mousedown', { e: me }, function(s) {
|
|
var target = $(s.data.e);
|
|
var oldCss = {};
|
|
if (target.css('position') != 'absolute') {
|
|
try {
|
|
target.position(oldCss);
|
|
} catch (ex) { }
|
|
target.css('position', 'absolute');
|
|
}
|
|
oldCss.cursor = target.css('cursor') || 'default';
|
|
oldCss.opacity = target.getCss('opacity') || 1;
|
|
var newRange = [];
|
|
if( ps.range == 'window' ){
|
|
newRange = [ // top, right, bottom, left
|
|
$(window).scrollTop(),
|
|
$(window).scrollLeft()+$(window).width() - target.outerWidth(),
|
|
$(window).scrollTop()+$(window).height() - target.outerHeight(),
|
|
$(window).scrollLeft()
|
|
];
|
|
}
|
|
else if( ps.range == 'document' ){
|
|
newRange = [
|
|
0,
|
|
$(document).width() - target.outerWidth(),
|
|
$(document).height() - target.outerHeight(),
|
|
0
|
|
];
|
|
} else if( typeof ps.range == 'object' ) {
|
|
newRange = [
|
|
ps.range[0],
|
|
ps.range[1] - target.outerWidth(),
|
|
ps.range[2] - target.outerWidth(),
|
|
ps.range[3]
|
|
];
|
|
} else newRange = ps.range;
|
|
var dragData = {
|
|
left: oldCss.left || target.getCss('left') || 0,
|
|
top: oldCss.top || target.getCss('top') || 0,
|
|
width: target.width() || target.getCss('width'),
|
|
height: target.height() || target.getCss('height'),
|
|
offLeft: s.pageX,
|
|
offTop: s.pageY,
|
|
oldCss: oldCss,
|
|
onMove: ps.onMove,
|
|
onDrop: ps.onDrop,
|
|
handler: handler,
|
|
target: target,
|
|
newRange: newRange
|
|
}
|
|
|
|
target.css({
|
|
//'opacity': ps.opacity,
|
|
'cursor' : 'move'
|
|
});
|
|
$(document).bind('mousemove', { dragData: dragData }, dragndrop.drag)
|
|
.bind('mouseup', { dragData: dragData }, dragndrop.drop);
|
|
});
|
|
});
|
|
}
|
|
})(jQuery);
|