import json
from js import document
from pyscript import fetch, when, workers

@when("getmap", "#py_bridge_runscript")
async def get_map(evt):
    worker = await workers['runner']
    # collect the required files/information
    lang = evt.target.getAttribute("data-lang") or "en"
    map = evt.target.getAttribute("data-map") or ""
    recording_str = await worker.get_map(lang, map)
    evt.target.setAttribute("data-recording", recording_str)
    # raise event
    event = document.createEvent("HTMLEvents")
    event.initEvent("getmap_ready", True, True)
    event.eventName = "getmap_ready"
    evt.target.dispatchEvent(event)

@when("execute", "#py_bridge_runscript")
async def run(evt):
    worker = await workers['runner']
    # collect the required files/information
    lang = evt.target.getAttribute("data-lang") or "en"
    map = evt.target.getAttribute("data-map") or ""
    success_def = evt.target.getAttribute("data-success") or "{}"
    script = evt.target.getAttribute("data-script") or "forward"
    recording_str = await worker.run(lang, map, success_def, script)
    evt.target.setAttribute("data-recording", recording_str)
    # raise event
    event = document.createEvent("HTMLEvents")
    event.initEvent("execute_ready", True, True)
    event.eventName = "execute_ready"
    evt.target.dispatchEvent(event)

evt = document.createEvent("HTMLEvents")
evt.initEvent("start", True, True)
evt.eventName = "start"
document.getElementById("py_bridge_runscript").dispatchEvent(evt)