vizzuhq / ipyvizzu

Build animated charts in Jupyter Notebook and similar environments with a simple Python syntax.
https://ipyvizzu.vizzuhq.com
Apache License 2.0
948 stars 87 forks source link

support event handlers using pyodide #212

Open simzer opened 1 year ago

simzer commented 1 year ago

Example: This is the example of event usage in the tutorial

click_handler_method = "alert(JSON.stringify(event.data));"
click_handler = click_chart.on("click", click_handler_method)

Which will generate something like this in JS:

click_handler_method = event => { alert(JSON.stringify(event.data)); }
click_handler = chart.on("click", click_handler_method)

The same could be supported with Python syntax:

click_handler_method = "js.alert(json.dumps(event.data))"
click_handler = click_chart.on("click", click_handler_method)

Which would generate something like this in JS:

<script src="https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js"></script>
let pyodide = await loadPyodide();
let click_handler_method = (event) => { 
  let handler = pyodide.runPython(`
    def handler(x):
        js.alert(json.dumps(event.data))
    handler
  `);
  handler(event);
};
click_handler = click_chart.on("click", click_handler_method)
simzer commented 1 year ago

or micropython https://micropython.org/