Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit71873b6

Browse files
committed
clean pylist.py and add a very hacky sync between list items and it's rendered versions
1 parent7c71ba6 commit71873b6

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed

‎pyscriptjs/examples/pylist.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
fromdatetimeimportdatetimeasdt
2-
fromxml.dom.pulldomimportEND_ELEMENT
3-
fromjsimportconsole,HTMLElement,document
4-
5-
6-
classPyList(PyListTemplate):
7-
pass
8-
92

103
classPyItem(PyItemTemplate):
114
defon_click(self,evt=None):
@@ -14,8 +7,10 @@ def on_click(self, evt=None):
147

158
self.select('input').element.checked=self.data['done']
169

10+
classPyList(PyListTemplate):
11+
item_class=PyItem
1712

1813
defadd_task(*ags,**kws):
1914
task= {"content":new_task_content.value,"done":False,"created_at":dt.now() }
20-
myList.add(PyItem(task,labels=['content'],state_key="done"))
15+
myList.add(task,labels=['content'],state_key="done")
2116
new_task_content.clear()

‎pyscriptjs/src/components/pyrepl.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ export class PyRepl extends BaseEvalElement {
199199
}
200200

201201
postEvaluate():void{
202+
203+
this.outputElement.hidden=false;
204+
this.outputElement.style.display='block';
205+
202206
if(this.hasAttribute('auto-generate')){
203207
letnextExecId=parseInt(this.getAttribute('exec-id'))+1;
204208
constnewPyRepl=document.createElement("py-repl");

‎pyscriptjs/src/interpreter.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ let pyodideReadyPromise;
66
letpyodide;
77

88
letadditional_definitions=`
9-
from js import document, setInterval, console
9+
from js import document, setInterval, console, setTimeout
1010
import micropip
11+
import time
1112
import asyncio
1213
import io, base64, sys
1314
@@ -195,7 +196,7 @@ class PyItemTemplate(Element):
195196
def _post_append(self):
196197
pass
197198
198-
def strike(self, value):
199+
def strike(self, value, extra=None):
199200
if value:
200201
self.add_class("line-through")
201202
else:
@@ -222,14 +223,32 @@ class PyListTemplate:
222223
return [c.data for c in self._children]
223224
224225
def render_children(self):
225-
return [c.element.innerHTML.replace("\\n", "") for c in self._children]
226+
out = []
227+
binds = {}
228+
for i, c in enumerate(self._children):
229+
txt = c.element.innerHTML
230+
rnd = str(time.time()).replace(".", "")[-5:]
231+
new_id = f"{c.element.id}-{i}-{rnd}"
232+
binds[new_id] = c.element.id
233+
txt = txt.replace(">", f" id='{new_id}'>")
234+
print(txt)
235+
236+
def foo(evt):
237+
console.log(evt)
238+
evtEl = evt.srcElement
239+
srcEl = Element(binds[evtEl.id])
240+
srcEl.element.onclick()
241+
evtEl.classList = srcEl.element.classList
242+
243+
for new_id, old_id in binds.items():
244+
Element(new_id).element.onclick = foo
226245
227246
def connect(self):
228-
self.md = main_div = document.createElement('div');
247+
self.md = main_div = document.createElement('div')
229248
main_div.id = self._id + "-list-tasks-container"
230249
231250
if self.theme:
232-
self.theme.theme_it(main_div)
251+
self.theme.theme_it(main_div)
233252
234253
self.parent.appendChild(main_div)
235254

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp