From 16c0cdca89fa8a1db687f2dbc58946287febecdb Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 26 Apr 2022 16:12:33 +0200 Subject: [PATCH 1/4] 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 From 8951f7603a4e3efda69f5bcc6457b9b85ec42e22 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 26 Apr 2022 16:31:02 +0200 Subject: [PATCH 2/4] Require explicit fly call --- pyscriptjs/examples/antigravity.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pyscriptjs/examples/antigravity.py b/pyscriptjs/examples/antigravity.py index db7d3d4..ac4404e 100644 --- a/pyscriptjs/examples/antigravity.py +++ b/pyscriptjs/examples/antigravity.py @@ -9,7 +9,7 @@ class Antigravity(): url = './antigravity.svg' - def __init__(self, target=None, interval=10, append=True): + def __init__(self, target=None, interval=10, append=True, fly=False): 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") @@ -19,7 +19,12 @@ class Antigravity(): else: self.target.replaceChildren(self.node) self.xoffset, self.yoffset = 0, 0 - setInterval(create_proxy(self.move), interval) + self.interval = interval + if fly: + self.fly() + + def fly(self): + setInterval(create_proxy(self.move), self.interval) def move(self): char = self.node.getElementsByTagName('g')[1] @@ -30,4 +35,5 @@ class Antigravity(): else: self.yoffset += random.normalvariate(0, 1)/20 -Antigravity(append=True); +_auto = Antigravity(append=True) +fly = _auto.fly From 3a8ed08930fd5916d3cedf860b66e66b3d8b3684 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 26 Apr 2022 16:32:50 +0200 Subject: [PATCH 3/4] Call fly in antigravity.html --- pyscriptjs/examples/antigravity.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pyscriptjs/examples/antigravity.html b/pyscriptjs/examples/antigravity.html index 529634f..0069024 100644 --- a/pyscriptjs/examples/antigravity.html +++ b/pyscriptjs/examples/antigravity.html @@ -7,9 +7,10 @@ - - Based on xkcd: antigravity https://xkcd.com/353/. - - + Based on xkcd: antigravity https://xkcd.com/353/. + +import antigravity +antigravity.fly() + From 477c927a615f92e4600d2e5a8bc86f4371e9e955 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Tue, 26 Apr 2022 16:34:10 +0200 Subject: [PATCH 4/4] Load antigravity.py --- pyscriptjs/examples/antigravity.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyscriptjs/examples/antigravity.html b/pyscriptjs/examples/antigravity.html index 0069024..4efb7b2 100644 --- a/pyscriptjs/examples/antigravity.html +++ b/pyscriptjs/examples/antigravity.html @@ -6,6 +6,10 @@ + +- paths: + - /antigravity.py + Based on xkcd: antigravity https://xkcd.com/353/.