Guest User

Untitled

a guest
Apr 25th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. function DragTagOperator(){
  2. var position = {};
  3. var dispatcher = null;
  4. var args = {'root':'header'};
  5. var events = {
  6. 'drag-register':(data) => {this.register(data)}
  7. ,'drag-unregister':(data) => {this.unregister(data)}
  8. };
  9. this.decorate = function(opts){
  10. for (var key in opts){
  11. if(args.hasOwnProperty(key)){
  12. args[key] = opts[key];
  13. }
  14. }
  15. return this;
  16. }
  17. this.create = function(){
  18. dispatcher = new V13wEv3ntD1spatch3r({'events':Object.keys(events),'issues':Object.values(events)}).onRegister();
  19. return this;
  20. }
  21. this.register = function(data){
  22. if(!args.hasOwnProperty(data.tag)){
  23. var element = $(data.tag);
  24. element.on('mousedown',click);
  25. position[element.attr('id')] = [element.css('left'),element.css('top'),0,0];
  26. }
  27. return this;
  28. }
  29. this.unregister = function(data){
  30. if(args.hasOwnProperty(data.tag)){
  31. var element = $(data.tag);
  32. header.off('mousedown');
  33. delete position[data.tag];
  34. }
  35. return this;
  36. }
  37.  
  38. function click(evt) {
  39. var element = $(evt.target).parent()
  40. pos = position[element.attr('id')]
  41. evt = evt || window.event;
  42. pos[2] = evt.clientX;
  43. pos[3] = evt.clientY;
  44. var header = $(args.root)
  45. header.on('mousemove',function(evt){move(evt,element,pos);})
  46. header.on('mouseup',close)
  47. }
  48. function move(evt,element,pos){
  49. evt = evt || window.event;
  50. pos[0] = pos[2] - evt.clientX;
  51. pos[1] = pos[3] - evt.clientY;
  52. pos[2] = evt.clientX;
  53. pos[3] = evt.clientY;
  54. var vx = element.css('top').replace('px','')-pos[1]
  55. var vy = element.css('left').replace('px','')-pos[0]
  56. element.css({'top':vx+"px",'left':vy+"px"});
  57. }
  58. function close(evt) {
  59. var header = $(args.root);
  60. header.off('mousemove');
  61. header.off('mouseup');
  62. }
  63. }
Add Comment
Please, Sign In to add comment