nicegui table updates
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env -S uv run --script
|
||||
# /// script
|
||||
# dependencies = [
|
||||
# "nicegui==3.16.0",
|
||||
# ]
|
||||
# ///
|
||||
|
||||
from datetime import UTC
|
||||
from datetime import datetime
|
||||
|
||||
from nicegui import events
|
||||
from nicegui import ui
|
||||
|
||||
OPTIONS = {
|
||||
"python": "Python",
|
||||
"typescript": "TypeScript",
|
||||
"rust": "Rust",
|
||||
}
|
||||
|
||||
|
||||
with ui.card().classes("w-140 max-w-full"):
|
||||
ui.label("Select event mechanics").classes("text-xl font-semibold")
|
||||
event_log = ui.log(max_lines=12).classes("w-full h-64")
|
||||
|
||||
def record(event_name: str, payload: object) -> None:
|
||||
timestamp = datetime.now(UTC).astimezone().strftime("%H:%M:%S")
|
||||
event_log.push(f"{timestamp} {event_name}: {payload!r}")
|
||||
|
||||
def handle_change(event: events.ValueChangeEventArguments) -> None:
|
||||
record("on_change event.value", event.value)
|
||||
|
||||
def handle_model_update(event: events.GenericEventArguments) -> None:
|
||||
record("js_handler -> handler event.args", event.args)
|
||||
|
||||
language = (
|
||||
ui.select(
|
||||
options=OPTIONS,
|
||||
value="python",
|
||||
label="Language",
|
||||
on_change=handle_change,
|
||||
with_input=True,
|
||||
clearable=True,
|
||||
)
|
||||
.props("outlined options-dense")
|
||||
.classes("w-full text-h6")
|
||||
)
|
||||
|
||||
language.on("popup-show", lambda: record("popup-show", None), args=[])
|
||||
language.on("popup-hide", lambda: record("popup-hide", None), args=[])
|
||||
|
||||
# This only fires when the value is changed from the browser side (not from the button)
|
||||
language.on(
|
||||
"update:model-value",
|
||||
handler=handle_model_update,
|
||||
js_handler="(...args) => emit(...args)",
|
||||
)
|
||||
|
||||
with ui.row().classes("w-full justify-end"):
|
||||
ui.button("Set Rust", on_click=lambda: language.set_value("rust"))
|
||||
ui.button("Clear log", on_click=event_log.clear).props("flat")
|
||||
|
||||
|
||||
if __name__ in {"__main__", "__mp_main__"}:
|
||||
ui.run(port=8888, reload=True)
|
||||
Reference in New Issue
Block a user