Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function DragTagOperator(){
- var position = {};
- var dispatcher = null;
- var args = {'root':'header'};
- var events = {
- 'drag-register':(data) => {this.register(data)}
- ,'drag-unregister':(data) => {this.unregister(data)}
- };
- this.decorate = function(opts){
- for (var key in opts){
- if(args.hasOwnProperty(key)){
- args[key] = opts[key];
- }
- }
- return this;
- }
- this.create = function(){
- dispatcher = new V13wEv3ntD1spatch3r({'events':Object.keys(events),'issues':Object.values(events)}).onRegister();
- return this;
- }
- this.register = function(data){
- if(!args.hasOwnProperty(data.tag)){
- var element = $(data.tag);
- element.on('mousedown',click);
- position[element.attr('id')] = [element.css('left'),element.css('top'),0,0];
- }
- return this;
- }
- this.unregister = function(data){
- if(args.hasOwnProperty(data.tag)){
- var element = $(data.tag);
- header.off('mousedown');
- delete position[data.tag];
- }
- return this;
- }
- function click(evt) {
- var element = $(evt.target).parent()
- pos = position[element.attr('id')]
- evt = evt || window.event;
- pos[2] = evt.clientX;
- pos[3] = evt.clientY;
- var header = $(args.root)
- header.on('mousemove',function(evt){move(evt,element,pos);})
- header.on('mouseup',close)
- }
- function move(evt,element,pos){
- evt = evt || window.event;
- pos[0] = pos[2] - evt.clientX;
- pos[1] = pos[3] - evt.clientY;
- pos[2] = evt.clientX;
- pos[3] = evt.clientY;
- var vx = element.css('top').replace('px','')-pos[1]
- var vy = element.css('left').replace('px','')-pos[0]
- element.css({'top':vx+"px",'left':vy+"px"});
- }
- function close(evt) {
- var header = $(args.root);
- header.off('mousemove');
- header.off('mouseup');
- }
- }
Add Comment
Please, Sign In to add comment