Skip to content

Commit

Permalink
Added dragging on touch screens
Browse files Browse the repository at this point in the history
  • Loading branch information
jwbonner committed Dec 27, 2021
1 parent e69ee49 commit edcbbc4
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 15 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Fixed a bug which prevented scrolling on the line graph in some circumstances.
Added support for dragging fields on touch screens.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "advantage-scope",
"productName": "Advantage Scope",
"version": "1.9.3",
"version": "1.9.4",
"description": "Logging tool from FRC Team 6328.",
"main": "main.js",
"scripts": {
Expand Down
30 changes: 20 additions & 10 deletions www/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,35 +244,45 @@ var dragItem = document.getElementById("dragItem")
var dragActive = false
var dragOffsetX = 0
var dragOffsetY = 0
var dragLastX = 0
var dragLastY = 0
var dragData = null

window.startDrag = (x, y, offsetX, offsetY, data) => {
dragActive = true
dragOffsetX = offsetX
dragOffsetY = offsetY
dragLastX = x
dragLastY = y
dragData = data

dragItem.hidden = false
dragItem.style.left = (x - dragOffsetX).toString() + "px"
dragItem.style.top = (y - dragOffsetY).toString() + "px"
dragItem.style.left = (x - offsetX).toString() + "px"
dragItem.style.top = (y - offsetY).toString() + "px"
}

window.addEventListener("mousemove", (event) => {
var dragMove = (x, y) => {
if (dragActive) {
dragItem.style.left = (event.clientX - dragOffsetX).toString() + "px"
dragItem.style.top = (event.clientY - dragOffsetY).toString() + "px"
dragItem.style.left = (x - dragOffsetX).toString() + "px"
dragItem.style.top = (y - dragOffsetY).toString() + "px"
dragLastX = x
dragLastY = y
window.dispatchEvent(new CustomEvent("drag-update", {
detail: { x: event.clientX, y: event.clientY, data: dragData }
detail: { x: x, y: y, data: dragData }
}))
}
})
}
window.addEventListener("mousemove", event => { dragMove(event.clientX, event.clientY) })
window.addEventListener("touchmove", event => { dragMove(event.touches[0].clientX, event.touches[0].clientY) })

window.addEventListener("mouseup", (event) => {
var dragEnd = () => {
if (dragActive) {
dragActive = false
dragItem.hidden = true
window.dispatchEvent(new CustomEvent("drag-stop", {
detail: { x: event.clientX, y: event.clientY, data: dragData }
detail: { x: dragLastX, y: dragLastY, data: dragData }
}))
}
})
}
window.addEventListener("mouseup", () => { dragEnd() })
window.addEventListener("touchend", () => { dragEnd() })
12 changes: 10 additions & 2 deletions www/modules/sideBar.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,20 @@ export class SideBar {
label.style.fontStyle = field.field == null ? "normal" : "italic"
label.style.cursor = field.field == null ? "auto" : "grab"
if (field.field != null) {
label.addEventListener("mousedown", (event) => {
var dragEvent = (x, y, offsetX, offsetY) => {
document.getElementById("dragItem").innerText = title
startDrag(event.clientX, event.clientY, event.offsetX, event.offsetY, {
startDrag(x, y, offsetX, offsetY, {
id: field.field,
children: Object.values(field.children).map(x => x.field)
})
}

label.addEventListener("mousedown", event => {
dragEvent(event.clientX, event.clientY, event.offsetX, event.offsetY)
})
label.addEventListener("touchstart", event => {
var touch = event.targetTouches[0]
dragEvent(touch.clientX, touch.clientY, touch.clientX - label.getBoundingClientRect().x, touch.clientY - label.getBoundingClientRect().y)
})
}

Expand Down

0 comments on commit edcbbc4

Please sign in to comment.