roundabout,
created on Tuesday, 7 January 2025, 13:23:30 (1736256210),
received on Tuesday, 7 January 2025, 13:23:33 (1736256213)
Author identity: vlad <vlad.muntoiu@gmail.com>
60235e765827c05c4f66a8285bffe270126dbca5
static/picture-annotation.py
@@ -302,7 +302,8 @@ async def focus_shape(shape):
async def select_shape(event): await focus_shape(event.target)if drag_distance == 0: await focus_shape(event.target)async def next_shape(event):
@@ -366,18 +367,19 @@ async def previous_shape(event):
def unselect_shape(event): global selected_shape if selected_shape is not None:selected_shape.classList.remove("selected")selected_shape = Noneif drag_distance == 0: if selected_shape is not None: selected_shape.classList.remove("selected") selected_shape = Noneobject_list_content.innerHTML = ""object_list.style.display = "none"delete_button.style.display = "none"next_button.style.display = "none"previous_button.style.display = "none"document.removeEventListener("keydown", delete_shape_key_proxy)document.removeEventListener("keydown", next_shape_key_proxy)document.removeEventListener("keydown", previous_shape_key_proxy)object_list_content.innerHTML = "" object_list.style.display = "none" delete_button.style.display = "none" next_button.style.display = "none" previous_button.style.display = "none" document.removeEventListener("keydown", delete_shape_key_proxy) document.removeEventListener("keydown", next_shape_key_proxy) document.removeEventListener("keydown", previous_shape_key_proxy)def delete_shape(event):
@@ -432,6 +434,7 @@ def switch_shape(event):
shape.addEventListener("click", select_shape_proxy) image.addEventListener("click", unselect_shape_proxy) helper_message.innerText = "Click on a shape to select" zone.style.cursor = "inherit"# Cancel the current shape creation if shape_type == "shape-bbox": cancel_bbox(None)
@@ -440,6 +443,9 @@ def switch_shape(event):
elif shape_type == "shape-polyline": cancel_polygon(None) else: zone.style.cursor = "pointer" if shape_type == "shape-point": zone.style.cursor = "crosshair"# Remove event listeners for selection for shape in document.getElementsByClassName("shape"): print("Removing event listener from shape:", shape)
@@ -767,6 +773,7 @@ def on_wheel(event):
is_dragging = False drag_distance = 0start_x = 0 start_y = 0
@@ -779,22 +786,30 @@ def on_mouse_down(event):
is_dragging = True start_x = event.clientX start_y = event.clientY zoom_container.style.cursor = "grabbing"def on_mouse_move(event): global translate_x, translate_yglobal translate_x, translate_y, drag_distanceif object_list.matches(":hover"): return if is_dragging:if is_dragging and min(event.movementX, event.movementY) != 0: drag_distance += abs(event.movementX) + abs(event.movementY)translate_x += event.movementX translate_y += event.movementY update_transform() def on_mouse_up(event): global is_draggingglobal is_dragging, drag_distance if drag_distance: # Don't click if the image was panned event.preventDefault() event.stopPropagation()if object_list.matches(":hover"): return is_dragging = False drag_distance = 0 zoom_container.style.cursor = "grab"last_touch_positions = None last_touch_distance = None
@@ -884,7 +899,7 @@ def zoom_out(event):
zoom_container.addEventListener("wheel", on_wheel) zoom_container.addEventListener("mousedown", on_mouse_down) document.addEventListener("mousemove", on_mouse_move) document.addEventListener("mouseup", on_mouse_up)document.addEventListener("click", on_mouse_up)zone.addEventListener("touchstart", on_touch_start) zone.addEventListener("touchmove", on_touch_move) zone.addEventListener("touchend", on_touch_end)
static/style.css
@@ -871,3 +871,11 @@ body.fixed-content-area > main {
width: 7ch; text-align: right; } #annotation-zoom-container { cursor: grab; } #object-types { cursor: auto; }