mirror of
https://github.com/pyscript/pyscript.git
synced 2022-05-01 19:47:48 +03:00
Merge pull request #10 from anaconda/pys-5/load-from-source
[Pys-5] load from source
This commit is contained in:
@@ -7,50 +7,14 @@
|
||||
<title>Todo App</title>
|
||||
|
||||
<link rel="icon" type="image/png" href="favicon.png" />
|
||||
<link rel="stylesheet" href="../build/bundle.css" />
|
||||
<link rel="stylesheet" href="/build/pyscript.css" />
|
||||
|
||||
<script defer src="../build/pyscript.js"></script>
|
||||
<script defer src="/build/pyscript.js"></script>
|
||||
</head>
|
||||
|
||||
<py-script>
|
||||
from datetime import datetime as dt
|
||||
|
||||
tasks = []
|
||||
|
||||
# define the task template that will be use to render new templates to the page
|
||||
task_template = Element("task-template").select('.task', from_content=True)
|
||||
task_list = Element("list-tasks-container")
|
||||
new_task_content = Element("new-task-content")
|
||||
|
||||
def add_task(*ags, **kws):
|
||||
# create task
|
||||
task_id = f"task-{len(tasks)}"
|
||||
task = {"id": task_id, "content": new_task_content.element.value, "done": False, "created_at": dt.now()}
|
||||
tasks.append(task)
|
||||
|
||||
# add the task element to the page as new node in the list by cloning from a template
|
||||
taskHtml = task_template.clone(task_id, to=task_list)
|
||||
taskHtmlContent = taskHtml.select('p')
|
||||
taskHtmlContent.element.innerText = task['content']
|
||||
taskHtmlCheck = taskHtml.select('input')
|
||||
task_list.element.appendChild(taskHtml.element)
|
||||
|
||||
def check_task(evt=None):
|
||||
task['done'] = not task['done']
|
||||
if task['done']:
|
||||
taskHtmlContent.element.classList.add("line-through")
|
||||
else:
|
||||
taskHtmlContent.element.classList.remove("line-through")
|
||||
|
||||
new_task_content.clear()
|
||||
taskHtmlCheck.element.onclick = check_task
|
||||
|
||||
def add_task_event(e):
|
||||
console.log("im in")
|
||||
if (e.key == "Enter"):
|
||||
add_task()
|
||||
|
||||
</py-script>
|
||||
<body class="container">
|
||||
<!-- <py-repl id="my-repl" auto-generate="true"> </py-repl> -->
|
||||
<py-script src="/todo.py"> </py-script>
|
||||
|
||||
<main class="max-w-xs mx-auto mt-4">
|
||||
<section>
|
||||
@@ -80,4 +44,5 @@ def add_task_event(e):
|
||||
|
||||
</section>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
38
pyscriptjs/examples/todo.py
Normal file
38
pyscriptjs/examples/todo.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from datetime import datetime as dt
|
||||
from pyscript import Element
|
||||
from js import console
|
||||
|
||||
tasks = []
|
||||
|
||||
# define the task template that will be use to render new templates to the page
|
||||
task_template = Element("task-template").select('.task', from_content=True)
|
||||
task_list = Element("list-tasks-container")
|
||||
new_task_content = Element("new-task-content")
|
||||
|
||||
def add_task(*ags, **kws):
|
||||
# create task
|
||||
task_id = f"task-{len(tasks)}"
|
||||
task = {"id": task_id, "content": new_task_content.element.value, "done": False, "created_at": dt.now()}
|
||||
tasks.append(task)
|
||||
|
||||
# add the task element to the page as new node in the list by cloning from a template
|
||||
taskHtml = task_template.clone(task_id, to=task_list)
|
||||
taskHtmlContent = taskHtml.select('p')
|
||||
taskHtmlContent.element.innerText = task['content']
|
||||
taskHtmlCheck = taskHtml.select('input')
|
||||
task_list.element.appendChild(taskHtml.element)
|
||||
|
||||
def check_task(evt=None):
|
||||
task['done'] = not task['done']
|
||||
if task['done']:
|
||||
taskHtmlContent.element.classList.add("line-through")
|
||||
else:
|
||||
taskHtmlContent.element.classList.remove("line-through")
|
||||
|
||||
new_task_content.clear()
|
||||
taskHtmlCheck.element.onclick = check_task
|
||||
|
||||
def add_task_event(e):
|
||||
console.log("im in")
|
||||
if (e.key == "Enter"):
|
||||
add_task()
|
||||
Reference in New Issue
Block a user