All Downloads are FREE. Search and download functionalities are using the official Maven repository.

js.inject.dragAndDrop.js Maven / Gradle / Ivy

function TesterraCreateDragEvent(eventName, options)
{
  var event = document.createEvent("DragEvent");
  var screenX = window.screenX + options.clientX;
  var screenY = window.screenY + options.clientY;
  var clientX = options.clientX;
  var clientY = options.clientY;
  var dataTransfer = {
    data: options.dragData == null ? {
    }
     : options.dragData,
    setData: function (eventName, val) {
      if (typeof val === "string") {
        this.data[eventName] = val;
      }
    },
    getData: function (eventName) {
      return this.data[eventName];
    },
    clearData: function () {
      return this.data = {
      };
    },
    setDragImage: function (dragElement, x, y) {
    }
  };
  var eventInitialized = false;
  if (event != null && event.initDragEvent) {
    try {
      event.initDragEvent(eventName, true, true, window, 0, screenX, screenY, clientX, clientY, false, false, false, false, 0, null, dataTransfer);
      event.initialized = true;
    } catch (err) {
      /*
      no-op
      */
    }
  };
  if (!eventInitialized) {
    event = document.createEvent("CustomEvent");
    event.initCustomEvent(eventName, true, true, null);
    event.view = window;
    event.detail = 0;
    event.screenX = screenX;
    event.screenY = screenY;
    event.clientX = clientX;
    event.clientY = clientY;
    event.ctrlKey = false;
    event.altKey = false;
    event.shiftKey = false;
    event.metaKey = false;
    event.button = 0;
    event.relatedTarget = null;
    event.dataTransfer = dataTransfer;
  };
  return event;
};
/* Creates a mouse event */

function TesterraCreateMouseEvent(eventName, options)
{
  var event = document.createEvent("MouseEvent");
  var screenX = window.screenX + options.clientX;
  var screenY = window.screenY + options.clientY;
  var clientX = options.clientX;
  var clientY = options.clientY;
  if (event != null && event.initMouseEvent) {
    event.initMouseEvent(eventName, true, true, window, 0, screenX, screenY, clientX, clientY, false, false, false, false, 0, null);
  } else {
    event = document.createEvent("CustomEvent");
    event.initCustomEvent(eventName, true, true, null);
    event.view = window;
    event.detail = 0;
    event.screenX = screenX;
    event.screenY = screenY;
    event.clientX = clientX;
    event.clientY = clientY;
    event.ctrlKey = false;
    event.altKey = false;
    event.shiftKey = false;
    event.metaKey = false;
    event.button = 0;
    event.relatedTarget = null;
  };
  return event;
};
/* Runs the events */

function TesterraDispatchEvent(webElement, eventName, event)
{
  if (webElement.dispatchEvent) {
    webElement.dispatchEvent(event);
  } else if (webElement.fireEvent) {
    webElement.fireEvent("on" + eventName, event);
  }
};
/* Simulates an individual event */

function TesterraSimulateEventCall(element, eventName, dragStartEvent, options) {
  var event = null;
  if (eventName.indexOf("mouse") > - 1) {
    event = TesterraCreateMouseEvent(eventName, options);
  } else {
    event = TesterraCreateDragEvent(eventName, options);
  };
  if (dragStartEvent != null) {
    event.dataTransfer = dragStartEvent.dataTransfer;
  }
  TesterraDispatchEvent(element, eventName, event);
  return event;
};

function TesterraDND(drag, drop, dragFromX, dragFromY, dragToX, dragToY) {
  /*
    Execute dnd
    */

  var mouseDownEvent = TesterraSimulateEventCall(drag, "mousedown", null, {
    clientX: dragFromX,
    clientY: dragFromY
  });
  var dragStartEvent = TesterraSimulateEventCall(drag, "dragstart", null, {
    clientX: dragFromX,
    clientY: dragFromY
  });
  var dragEnterEvent = TesterraSimulateEventCall(drop, "dragenter", dragStartEvent, {
    clientX: dragToX,
    clientY: dragToY
  });
  var dragOverEvent = TesterraSimulateEventCall(drop, "dragover", dragStartEvent, {
    clientX: dragToX,
    clientY: dragToY
  });
  var dropEvent = TesterraSimulateEventCall(drop, "drop", dragStartEvent, {
    clientX: dragToX,
    clientY: dragToY
  });
  var dragEndEvent = TesterraSimulateEventCall(drag, "dragend", dragStartEvent, {
    clientX: dragToX,
    clientY: dragToY
  });
};

function TesterraDNDFrame(dragJsLocator, dropJsLocator, fromX, fromY, toX, toY) {

    var drag = eval(dragJsLocator);
    var drop = eval(dropJsLocator);

    TesterraDND(drag, drop, fromX, fromY, toX, toY);
};

function TesterraSwipe(element, fromX, fromY, toX, toY) {

  var mouseDownEvent = TesterraSimulateEventCall(element, "mousedown", null, {
    clientX: fromX,
    clientY: fromY
  });
  var mouseMoveEvent = TesterraSimulateEventCall(element, "mousemove", null, {
    clientX: toX,
    clientY: toY
  });
  var mouseUpEvent = TesterraSimulateEventCall(element, "mouseup", null, {
    clientX: toX,
    clientY: toY
  });

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy