roundabout,
created on Tuesday, 3 September 2024, 09:41:11 (1725356471),
received on Wednesday, 4 September 2024, 09:03:53 (1725440633)
Author identity: vlad <vlad.muntoiu@gmail.com>
4f679887ad3defd8f49f646ae11c082af5e14564
static/picture-annotation.py
@@ -10,12 +10,14 @@ zone = document.getElementById("annotation-zone")
confirm_button = document.getElementById("annotation-confirm") cancel_button = document.getElementById("annotation-cancel") backspace_button = document.getElementById("annotation-backspace") delete_button = document.getElementById("annotation-delete")object_list = document.getElementById("object-types") confirm_button.style.display = "none" cancel_button.style.display = "none" backspace_button.style.display = "none" delete_button.style.display = "none"shape_type = "" bbox_pos = None new_shape = None
@@ -60,6 +62,8 @@ async def select_shape(event):
objects = await get_all_objects() delete_button.style.display = "block" object_list.innerHTML = "" new_radio = document.createElement("input")
@@ -100,10 +104,25 @@ def unselect_shape(event):
selected_shape = None object_list.innerHTML = "" delete_button.style.display = "none" def delete_shape(event): global selected_shape if selected_shape is None: return # Shape is SVG shape inside SVG so we need to remove the parent SVG selected_shape.parentNode.remove() selected_shape = None object_list.innerHTML = "" delete_button.style.display = "none"select_shape_proxy = create_proxy(select_shape) unselect_shape_proxy = create_proxy(unselect_shape) delete_shape_proxy = create_proxy(delete_shape) delete_button.addEventListener("click", delete_shape_proxy)# These are functions usable in JS
static/style.css
@@ -3,6 +3,13 @@
:root { --gap-navbar: 1rem; --width-navbar-button: 0; --text-soft: #000000C0; --text-softer: #0000009A; --text-faint: #00000066; } p { color: var(--text-soft);} iconify-icon {
@@ -63,3 +70,7 @@ iconify-icon {
.shape-container { pointer-events: none; } #annotation-helper-message { min-height: 2lh; }
templates/picture-annotation.html
@@ -51,6 +51,9 @@
<button class="button-flat" title="remove last point" id="annotation-backspace"> <iconify-icon icon="mdi:backspace"></iconify-icon> </button> <button class="button-flat" title="delete shape" id="annotation-delete"> <iconify-icon icon="mdi:delete"></iconify-icon> </button></x-buttonbox> <x-vbox id="object-types" style="--gap-box: 0.25rem; --padding-box: 1rem;"> </x-vbox>