Advertisement
sourav8256

Untitled

Aug 3rd, 2023
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Simple BPM Canvas</title>
  5. <style>
  6. body {
  7. font-family: Arial, sans-serif;
  8. margin: 0;
  9. }
  10.  
  11. .left-panel {
  12. width: 100px;
  13. background-color: #f0f0f0;
  14. padding: 10px;
  15. float: left;
  16. }
  17.  
  18. .toolbar {
  19. margin-bottom: 10px;
  20. }
  21.  
  22. .toolbar div {
  23. width: 80px;
  24. height: 30px;
  25. border: 1px solid #ccc;
  26. background-color: #fff;
  27. margin-bottom: 10px;
  28. text-align: center;
  29. line-height: 30px;
  30. cursor: pointer;
  31. }
  32.  
  33. .canvas {
  34. width: 800px;
  35. height: 400px;
  36. margin: 20px auto;
  37. border: 1px solid #ccc;
  38. background-color: #f9f9f9;
  39. position: relative;
  40. }
  41.  
  42. .bpm-element {
  43. position: absolute;
  44. background-color: #b3e0ff;
  45. border: 1px solid #007fff;
  46. padding: 5px;
  47. cursor: pointer;
  48. }
  49. </style>
  50. </head>
  51. <body>
  52. <div class="left-panel">
  53. <div class="toolbar">
  54. <div class="start-event" draggable="true" ondragstart="onDragStart(event)">Start</div>
  55. <div class="task" draggable="true" ondragstart="onDragStart(event)">Task 1</div>
  56. <div class="end-event" draggable="true" ondragstart="onDragStart(event)">End</div>
  57. </div>
  58. </div>
  59. <div class="canvas" id="canvas" ondrop="onDrop(event)" ondragover="onDragOver(event)"></div>
  60. <script>
  61. function onDragStart(event) {
  62. event.dataTransfer.setData("text/plain", event.target.innerText);
  63. }
  64.  
  65. function onDrop(event) {
  66. event.preventDefault();
  67. var data = event.dataTransfer.getData("text/plain");
  68. var bpmElement = document.createElement('div');
  69. bpmElement.classList.add('bpm-element');
  70. bpmElement.innerText = data;
  71. bpmElement.style.left = (event.clientX - event.target.offsetLeft) + 'px';
  72. bpmElement.style.top = (event.clientY - event.target.offsetTop) + 'px';
  73. event.target.appendChild(bpmElement);
  74.  
  75. // Make the newly added element draggable on the canvas
  76. bpmElement.addEventListener('mousedown', onElementDragStart);
  77. }
  78.  
  79. function onDragOver(event) {
  80. event.preventDefault();
  81. }
  82.  
  83. // Make the elements on the canvas draggable
  84. function onElementDragStart(event) {
  85. var target = event.target;
  86. var offsetX = event.clientX - target.getBoundingClientRect().left;
  87. var offsetY = event.clientY - target.getBoundingClientRect().top;
  88.  
  89. function onElementDrag(event) {
  90. target.style.left = (event.clientX - offsetX) + 'px';
  91. target.style.top = (event.clientY - offsetY) + 'px';
  92. }
  93.  
  94. function onElementDragEnd() {
  95. window.removeEventListener('mousemove', onElementDrag);
  96. window.removeEventListener('mouseup', onElementDragEnd);
  97. }
  98.  
  99. window.addEventListener('mousemove', onElementDrag);
  100. window.addEventListener('mouseup', onElementDragEnd);
  101. }
  102. </script>
  103. </body>
  104. </html>
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement