1
0
mirror of https://github.com/pyscript/pyscript.git synced 2022-05-01 19:47:48 +03:00

clean pylist.py and add a very hacky sync between list items and it's rendered versions

This commit is contained in:
Fabio Pliger
2022-04-20 20:03:23 -05:00
parent 7c71ba6fde
commit 71873b6b50
3 changed files with 31 additions and 13 deletions

View File

@@ -199,6 +199,10 @@ export class PyRepl extends BaseEvalElement {
}
postEvaluate(): void {
this.outputElement.hidden = false;
this.outputElement.style.display = 'block';
if (this.hasAttribute('auto-generate')) {
let nextExecId = parseInt(this.getAttribute('exec-id')) + 1;
const newPyRepl = document.createElement("py-repl");

View File

@@ -6,8 +6,9 @@ let pyodideReadyPromise;
let pyodide;
let additional_definitions = `
from js import document, setInterval, console
from js import document, setInterval, console, setTimeout
import micropip
import time
import asyncio
import io, base64, sys
@@ -195,7 +196,7 @@ class PyItemTemplate(Element):
def _post_append(self):
pass
def strike(self, value):
def strike(self, value, extra=None):
if value:
self.add_class("line-through")
else:
@@ -222,14 +223,32 @@ class PyListTemplate:
return [c.data for c in self._children]
def render_children(self):
return [c.element.innerHTML.replace("\\n", "") for c in self._children]
out = []
binds = {}
for i, c in enumerate(self._children):
txt = c.element.innerHTML
rnd = str(time.time()).replace(".", "")[-5:]
new_id = f"{c.element.id}-{i}-{rnd}"
binds[new_id] = c.element.id
txt = txt.replace(">", f" id='{new_id}'>")
print(txt)
def foo(evt):
console.log(evt)
evtEl = evt.srcElement
srcEl = Element(binds[evtEl.id])
srcEl.element.onclick()
evtEl.classList = srcEl.element.classList
for new_id, old_id in binds.items():
Element(new_id).element.onclick = foo
def connect(self):
self.md = main_div = document.createElement('div');
self.md = main_div = document.createElement('div')
main_div.id = self._id + "-list-tasks-container"
if self.theme:
self.theme.theme_it(main_div)
self.theme.theme_it(main_div)
self.parent.appendChild(main_div)