Changeset 37464 for gs3-extensions/tabletop-dl/trunk/my-interact.js
- Timestamp:
- 2023-03-12T16:09:33+13:00 (13 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/tabletop-dl/trunk/my-interact.js
r37463 r37464 1 // target elements with the "draggable" class2 interact('.resize-drag')3 .draggable({4 // enable inertial throwing5 inertia: true,6 // keep the element within the area of it's parent7 modifiers: [8 interact.modifiers.restrictRect({9 restriction: 'parent',10 endOnly: true11 })12 ],13 // enable autoScroll14 autoScroll: true,15 16 listeners: {17 // call this function on every dragmove event18 move: dragMoveListener,19 20 // call this function on every dragend event21 end (event) {22 var textEl = event.target.querySelector('p')23 24 textEl && (textEl.textContent =25 'moved a distance of ' +26 (Math.sqrt(Math.pow(event.pageX - event.x0, 2) +27 Math.pow(event.pageY - event.y0, 2) | 0))28 .toFixed(2) + 'px')29 }30 }31 })32 1 33 2 function dragMoveListener (event) { … … 46 15 47 16 17 $(document).ready(function() { 48 18 49 interact('.resize-drag')50 .resizable({51 // resize from all edges and corners52 edges: { left: true, right: true, bottom: true, top: true },53 19 54 listeners: { 55 move (event) { 56 var target = event.target 57 var x = (parseFloat(target.getAttribute('data-x')) || 0) 58 var y = (parseFloat(target.getAttribute('data-y')) || 0) 20 //var resize_drag_elems = document.getElementsByClassName('resize-drag') 59 21 60 // update the element's style 61 target.style.width = event.rect.width + 'px' 62 target.style.height = event.rect.height + 'px' 63 64 // translate when resizing from top or left edges 65 x += event.deltaRect.left 66 y += event.deltaRect.top 67 68 target.style.transform = 'translate(' + x + 'px,' + y + 'px)' 69 70 target.setAttribute('data-x', x) 71 target.setAttribute('data-y', y) 72 target.textContent = Math.round(event.rect.width) + '\u00D7' + Math.round(event.rect.height) 73 } 74 }, 75 modifiers: [ 76 // keep the edges inside the parent 77 interact.modifiers.restrictEdges({ 78 outer: 'parent' 79 }), 80 81 // minimum size 82 interact.modifiers.restrictSize({ 83 min: { width: 100, height: 50 } 84 }) 85 ], 86 87 inertia: true 88 }); 22 //var resize_drag_elem = resize_drag_elems[0]; 23 24 //console.log(resize_drag_elem); 25 26 interact('.resize-drag') 27 .draggable({ 28 // enable inertial throwing 29 inertia: true, 30 // keep the element within the area of it's parent 31 modifiers: [ 32 interact.modifiers.restrictRect({ 33 restriction: 'parent', 34 endOnly: true 35 }) 36 ], 37 // enable autoScroll 38 autoScroll: true, 39 40 listeners: { 41 // call this function on every dragmove event 42 move: dragMoveListener, 43 44 // call this function on every dragend event 45 end (event) { 46 var textEl = event.target.querySelector('p') 47 48 textEl && (textEl.textContent = 49 'moved a distance of ' + 50 (Math.sqrt(Math.pow(event.pageX - event.x0, 2) + 51 Math.pow(event.pageY - event.y0, 2) | 0)) 52 .toFixed(2) + 'px') 53 } 54 } 55 }) 56 .resizable({ 57 // resize from all edges and corners 58 edges: { left: true, right: true, bottom: true, top: true }, 59 60 listeners: { 61 move (event) { 62 var target = event.target 63 var x = (parseFloat(target.getAttribute('data-x')) || 0) 64 var y = (parseFloat(target.getAttribute('data-y')) || 0) 65 66 // update the element's style 67 target.style.width = event.rect.width + 'px' 68 target.style.height = event.rect.height + 'px' 69 70 // translate when resizing from top or left edges 71 x += event.deltaRect.left 72 y += event.deltaRect.top 73 74 target.style.transform = 'translate(' + x + 'px,' + y + 'px)' 75 76 target.setAttribute('data-x', x) 77 target.setAttribute('data-y', y) 78 target.textContent = Math.round(event.rect.width) + '\u00D7' + Math.round(event.rect.height) 79 } 80 }, 81 modifiers: [ 82 // keep the edges inside the parent 83 interact.modifiers.restrictEdges({ 84 outer: 'parent' 85 }), 86 87 // minimum size 88 interact.modifiers.restrictSize({ 89 min: { width: 100, height: 50 } 90 }) 91 ], 92 93 inertia: true 94 }); 89 95 90 96 /* … … 101 107 */ 102 108 103 // this function is used later in the resizing and gesture demos 104 window.dragMoveListener = dragMoveListener 109 110 // this function is used later in the resizing and gesture demos 111 window.dragMoveListener = dragMoveListener 105 112 106 113 … … 108 115 109 116 110 $(document).ready(function() { 117 111 118 112 119 113 var angleScale = { 114 angle: 0, 115 scale: 1 116 } 117 var gestureArea = document.getElementById('gesture-area') 118 var scaleElement = document.getElementById('scale-element') 119 var resetTimeout 120 121 interact(gestureArea) 122 .gesturable({ 123 listeners: { 124 start (event) { 125 angleScale.angle -= event.angle 126 127 clearTimeout(resetTimeout) 128 scaleElement.classList.remove('reset') 129 }, 130 move (event) { 131 // document.body.appendChild(new Text(event.scale)) 132 var currentAngle = event.angle + angleScale.angle 133 var currentScale = event.scale * angleScale.scale 134 135 scaleElement.style.transform = 136 'rotate(' + currentAngle + 'deg)' + 'scale(' + currentScale + ')' 137 138 // uses the dragMoveListener from the draggable demo above 139 dragMoveListener(event) 140 }, 141 end (event) { 142 angleScale.angle = angleScale.angle + event.angle 143 angleScale.scale = angleScale.scale * event.scale 144 145 //resetTimeout = setTimeout(reset, 1000) 146 //scaleElement.classList.add('reset') 147 } 120 var angleScale = { 121 angle: 0, 122 scale: 1 148 123 } 149 }) 150 .draggable({ 151 inertia: true, 152 modifiers: [ 153 interact.modifiers.restrictRect({ 154 restriction: 'parent', 155 endOnly: true 156 }) 157 ], 158 listeners: { move: dragMoveListener } 159 }) 160 124 var gestureArea = document.getElementById('gesture-area') 125 var scaleElement = document.getElementById('scale-element') 126 //var resetTimeout 127 128 interact(gestureArea) 129 .gesturable({ 130 listeners: { 131 start (event) { 132 angleScale.angle -= event.angle 133 134 //clearTimeout(resetTimeout) 135 //scaleElement.classList.remove('reset') 136 }, 137 move (event) { 138 // document.body.appendChild(new Text(event.scale)) 139 var currentAngle = event.angle + angleScale.angle 140 var currentScale = event.scale * angleScale.scale 141 142 scaleElement.style.transform = 143 'rotate(' + currentAngle + 'deg)' + 'scale(' + currentScale + ')' 144 145 // uses the dragMoveListener from the draggable demo above 146 dragMoveListener(event) 147 }, 148 end (event) { 149 angleScale.angle = angleScale.angle + event.angle 150 angleScale.scale = angleScale.scale * event.scale 151 152 //resetTimeout = setTimeout(reset, 1000) 153 //scaleElement.classList.add('reset') 154 } 155 } 156 }) 157 .draggable({ 158 inertia: true, 159 modifiers: [ 160 interact.modifiers.restrictRect({ 161 restriction: 'parent', 162 endOnly: true 163 }) 164 ], 165 listeners: { move: dragMoveListener } 166 }) 167 161 168 162 169 /*
Note:
See TracChangeset
for help on using the changeset viewer.