MCPcopy Create free account
hub / github.com/pgadmin-org/pgadmin4 / handleDraggable

Method handleDraggable

web/pgadmin/static/js/tree/tree.js:535–587  ·  view source on GitHub ↗
(e, item)

Source from the content-addressed store, hash-verified

533 }
534
535 handleDraggable(e, item) {
536 let data = item.getMetadata('data');
537 let dropDetailsFunc = this.getDraggable(data._type);
538
539 if (dropDetailsFunc != null) {
540 let dropDetails = dropDetailsFunc(data, item, this.getTreeNodeHierarchy(item));
541
542 if (typeof dropDetails == 'string') {
543 dropDetails = {
544 text: dropDetails,
545 cur: {
546 from: dropDetails.length,
547 to: dropDetails.length,
548 },
549 };
550 } else if (!dropDetails.cur) {
551 dropDetails = {
552 ...dropDetails,
553 cur: {
554 from: dropDetails.text.length,
555 to: dropDetails.text.length,
556 },
557 };
558 }
559
560 e.dataTransfer.setData('text', JSON.stringify(dropDetails));
561 /* Required by Firefox */
562 if (e.dataTransfer.dropEffect) {
563 e.dataTransfer.dropEffect = 'move';
564 }
565
566 /* setDragImage is not supported in IE. We leave it to
567 * its default look and feel
568 */
569 const dropText = _.escape(dropDetails.text);
570 if(!dropText) {
571 e.preventDefault();
572 }
573 if (e.dataTransfer.setDragImage) {
574 const dragItem = document.createElement('div');
575 dragItem.classList.add('drag-tree-node');
576 dragItem.innerHTML = `<span>${dropText}</span>`;
577
578 document.querySelector('body .drag-tree-node')?.remove();
579 document.body.appendChild(dragItem);
580
581 e.dataTransfer.setDragImage(dragItem, 0, 0);
582 }
583 }
584 else {
585 e.preventDefault();
586 }
587 }
588
589 onNodeCopy(copyCallback) {
590 this.copyHandler = copyCallback;

Callers 1

manageTreeEventsFunction · 0.80

Calls 7

getDraggableMethod · 0.95
getTreeNodeHierarchyMethod · 0.95
escapeMethod · 0.80
getMetadataMethod · 0.45
setDataMethod · 0.45
addMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected