Advertisement
Guest User

Untitled

a guest
Mar 11th, 2014
815
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. 'use strict';
  2.  
  3. var dndApp = angular.module('dndApp',[]);
  4.  
  5. dndApp.directive('dndDraggable', function() {
  6. return {
  7. // A = attribute, E = Element, C = Class and M = HTML Comment
  8. restrict:'A',
  9. link: function(scope, element, attrs,controller) {
  10. var helper = attrs.helper;
  11. if(helper==undefined){
  12. helper='original';
  13. }
  14. element.draggable({
  15. revert:false,
  16. helper:'clone',
  17. drag:function (event, ui) {
  18. $(this).addClass("drag-active");
  19. $(this).closest(element).addClass("drag-active");
  20. },
  21. stop:function (event, ui) {
  22. $(this).removeClass("drag-active").closest(element).removeClass("drag-active");
  23. var droppedEl = angular.element(ui.droppable);
  24. //console.log(droppedEl);
  25. }
  26. });
  27. }
  28. }
  29. });
  30.  
  31. dndApp.directive('dndDroppableIframe', function($compile) {
  32. return {
  33. restrict: 'A',
  34. link: function(scope,element,attrs){
  35. if (element.prop('tagName') !== 'IFRAME') { return; }
  36.  
  37. element.ready(function () {
  38. var $parent = element.closest('.iframe-holder');
  39. var $fakeDiv = $parent.find('.droppable-fake').attr('dnd-droppable', '');
  40. var parentTop = $parent.offset().top;
  41. var parentLeft = $parent.offset().left;
  42. var css = $.extend({}, element[0].getBoundingClientRect());
  43.  
  44. css.position = 'absolute';
  45. css.right = null;
  46. css.bottom = null;
  47. css.top = css.top - parentTop;
  48. css.left = css.left - parentLeft;
  49.  
  50. $fakeDiv.css(css)
  51.  
  52.  
  53. $compile($fakeDiv)(scope);
  54. });
  55. }
  56. }
  57. });
  58.  
  59. dndApp.directive('dndDroppable', function($compile) {
  60. return {
  61. restrict: 'A',
  62. link: function(scope,element,attrs,controller){
  63. var greedy = attrs.greedy;
  64. var ifr = element.closest('.iframe-holder').find('iframe');
  65. var ifrBody = ifr.contents().find('body');
  66. var dropDiv = ifrBody.find("#droppable-div")
  67.  
  68. if(greedy==undefined){greedy=true;}
  69. //console.log("inside-droppable");
  70. //console.log(element);
  71. element.droppable({
  72. activeClass:"drop-active",
  73. greedy:greedy,
  74. hoverClass:"drop-hover",
  75. drop:function (event, ui) {
  76. var rawHtml = angular.element(ui.draggable).data('raw');
  77. var draggedEl = angular.element(ui.draggable); //.parent();
  78. var droppedEl = angular.element(dropDiv);
  79. console.log(droppedEl);
  80. if(rawHtml == undefined){
  81. rawHtml = $(draggedEl)[0].outerHTML;
  82. }
  83. //console.log("dropped El is next");
  84. //console.log(droppedEl);
  85. $compile(rawHtml)(scope).appendTo(droppedEl);
  86. if(angular.element(ui.draggable).data('helper')==undefined){
  87. $(draggedEl).remove();
  88. }
  89. }
  90. });
  91. }
  92. }
  93. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement