From 16c0cdca89fa8a1db687f2dbc58946287febecdb Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 26 Apr 2022 16:12:33 +0200 Subject: [PATCH] Move antigravity to module --- pyscriptjs/examples/antigravity.html | 71 +++------------------------- pyscriptjs/examples/antigravity.py | 33 +++++++++++++ pyscriptjs/examples/repl.html | 8 +++- pyscriptjs/examples/repl2.html | 1 + 4 files changed, 47 insertions(+), 66 deletions(-) create mode 100644 pyscriptjs/examples/antigravity.py diff --git a/pyscriptjs/examples/antigravity.html b/pyscriptjs/examples/antigravity.html index 7c2bfa4..529634f 100644 --- a/pyscriptjs/examples/antigravity.html +++ b/pyscriptjs/examples/antigravity.html @@ -5,68 +5,11 @@ - - - - - - - Based on xkcd: antigravity https://xkcd.com/353/. - -
-
-
-
-
- - -import random - -from js import document, setInterval -from pyodide import create_proxy -from pyodide.http import open_url - -class Antigravity(): - - def __init__(self, node): - self.node = node - self.xoffset, self.yoffset = 0, 0 - setInterval(create_proxy(self.move), 10) - - def move(self): - char = document.getElementById('python') - console.log(char) - char.setAttribute('transform', f'translate({self.xoffset}, {-self.yoffset})') - self.xoffset += random.normalvariate(0, 1)/20 - if self.yoffset < 50: - self.yoffset += 0.1 - else: - self.yoffset += random.normalvariate(0, 1)/20 - - def _repr_svg_(self): - return open_url('./antigravity.svg').read() - -node = document.getElementById('antigravity') -node.replaceChildren() - -Antigravity(node) - - - + + + + Based on xkcd: antigravity https://xkcd.com/353/. + + + diff --git a/pyscriptjs/examples/antigravity.py b/pyscriptjs/examples/antigravity.py new file mode 100644 index 0000000..db7d3d4 --- /dev/null +++ b/pyscriptjs/examples/antigravity.py @@ -0,0 +1,33 @@ +import random +import sys + +from js import document, DOMParser, setInterval +from pyodide import create_proxy +from pyodide.http import open_url + +class Antigravity(): + + url = './antigravity.svg' + + def __init__(self, target=None, interval=10, append=True): + target = target or sys.stdout._out + self.target = document.getElementById(target) if isinstance(target, str) else target + doc = DOMParser.new().parseFromString(open_url(self.url).read(), "image/svg+xml") + self.node = doc.documentElement + if append: + self.target.append(self.node) + else: + self.target.replaceChildren(self.node) + self.xoffset, self.yoffset = 0, 0 + setInterval(create_proxy(self.move), interval) + + def move(self): + char = self.node.getElementsByTagName('g')[1] + char.setAttribute('transform', f'translate({self.xoffset}, {-self.yoffset})') + self.xoffset += random.normalvariate(0, 1)/20 + if self.yoffset < 50: + self.yoffset += 0.1 + else: + self.yoffset += random.normalvariate(0, 1)/20 + +Antigravity(append=True); diff --git a/pyscriptjs/examples/repl.html b/pyscriptjs/examples/repl.html index 806a73c..4e50a8b 100644 --- a/pyscriptjs/examples/repl.html +++ b/pyscriptjs/examples/repl.html @@ -4,14 +4,18 @@ - Svelte app + REPL - + +- paths: + - /antigravity.py + +
diff --git a/pyscriptjs/examples/repl2.html b/pyscriptjs/examples/repl2.html index 39c595e..1f9becc 100644 --- a/pyscriptjs/examples/repl2.html +++ b/pyscriptjs/examples/repl2.html @@ -17,6 +17,7 @@ - numpy - paths: - /utils.py + - /antigravity.py