Cleaned up some of the duplicate and old test files. Got the flex grid to work and the font is okay for now. Can't seem to get darkmode to work across multiple pages from the header. Editing and adding a verse functions were updated.

This commit is contained in:
Norm Rasmussen
2024-10-09 17:03:32 -04:00
parent 1ec9c3ca12
commit 641c17df36
10 changed files with 94 additions and 101 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,28 +0,0 @@
import theme
from nicegui import ui
from main import checked_data
import data
from utils import Utils
print(theme.tnt)
@ui.page('/dashboard')
def dashboard():
with theme.frame('Dashboard'):
pass
with ui.grid().style('grid-template-columns: repeat(2, minmax(1px, 1fr));'):
peoples = Utils.get_unique_people()
for ppl in peoples:
pl = ''.join(ppl)
card_info = Utils.get_persons_incomplete(pl)
for item in card_info:
vcard = ui.label(item[1]).classes('hidden')
pcard = ui.label(item[2]).classes('hidden')
club = ui.label(item[3]).classes('hidden')
clubcolor = ui.label(f'{theme.club.text}')
with ui.card().classes('grid justify-items-center').style(f'border: 2px solid {clubcolor.text}'):
ui.label(pl).classes('absolute top-0 left-0 font-thin text-sm')
ui.label(vcard.text).classes('text-center')
ui.label(pcard.text).classes('font-bold')

View File

@ -1,26 +1,36 @@
import theme
from nicegui import ui
import data
from utils import Utils
import random
color = {'tnt': theme.tnt, 'cubbies': theme.cubbies, 'sparks': theme.sparks}
color = {"tnt": theme.tnt, "cubbies": theme.cubbies, "sparks": theme.sparks}
@ui.page('/dashboard')
@ui.page("/dashboard", dark=False)
def dashboard():
with theme.frame('Dashboard'):
random_order = []
with theme.frame("Dashboard"):
pass
with ui.grid().style('grid-template-columns: repeat(2, minmax(1px, 1fr));'):
# with ui.grid().style('grid-template-columns: repeat(2, minmax(1px, 1fr));'):
# with ui.grid().classes('grid-flow-row-dense grid-flow-col-dense grid-cols-auto grid-rows-5').style('height: 90vh; width: 100%;'):
with ui.grid().classes("flex flex-row gap-x-2 flex-wrap").style(
"height: 80vh; width: 100%;"
):
peoples = Utils.get_unique_people()
for ppl in peoples:
pl = ''.join(ppl)
pl = "".join(ppl)
card_info = Utils.get_persons_incomplete(pl)
for item in card_info:
vcard = ui.label(item[1]).classes('hidden')
pcard = ui.label(item[2]).classes('hidden')
club = ui.label(item[3]).classes('hidden')
with ui.card().classes('grid justify-items-center').style(f'border: 2px solid {color[club.text.lower()]}'):
ui.label(pl).classes('absolute top-0 left-0 font-thin text-sm')
ui.label(vcard.text).classes('text-center')
ui.label(pcard.text).classes('font-bold')
random_order = random_order + card_info
random.shuffle(random_order)
for item in random_order:
pl = ui.label(item[0]).classes("hidden")
vcard = ui.label(item[1]).classes("hidden")
pcard = ui.label(item[2]).classes("hidden")
club = ui.label(item[3]).classes("hidden")
with ui.card().classes("grid justify-items-center").style(
f"border: 2px solid {color[club.text.lower()]}"
):
ui.label(pl.text).classes("absolute top-4 left-3 font-thin text-sm")
ui.label(vcard.text).classes("text-center font-mono")
ui.label(pcard.text).classes("font-light text-lg font-sans text-wrap break-words")#.style('font-family: "Liberation Mono"')

66
main.py
View File

@ -1,19 +1,18 @@
import data
import dashboard
from nicegui import app, ui
from nicegui import ui
import re
import requests
import theme
from utils import Utils
# DB columns tasks(person, verse, verse_passage, status, awana_completed, awana_bonus)
# DB columns tasks(person, verse, verse_passage, status, awana_completed, awana_bonus, spark )
db = data.CON
cur = db.cursor()
APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e"
HEADERS = {"Authorization": APIKEY}
@ui.page("/")
@ui.page("/", dark=False)
def index_page() -> None:
with theme.frame("Homepage"):
firstload = Utils.get_unique_people()
@ -36,14 +35,15 @@ def index_page() -> None:
pass
with ui.dialog() as addchild, ui.card().classes("items-center"):
result = ui.input(label="Clubber's Name")
result1 = ui.input(label="Clubber's Name")
result2 = ui.input(label="Awana Club")
ui.button().props("push glossy icon=add_circle color=secondary").on(
"click", lambda: add_child(result)
"click", lambda: add_person(result1, result2)
)
with ui.grid(columns=1).classes(
"self-center justify-items-center content-center p-2 m-2 rounded-xl"
):
) as pplrow:
users = Utils.get_unique_people()
for ppl in users:
pers = str(ppl)[2:-3].title()
@ -69,7 +69,6 @@ def index_page() -> None:
pass
showperson.set_visibility(False)
# FEAT: Allow editing of the verse. Awana will sometimes only give the student part of a verse (i.e 1 John 4:14 is actually 14b).
@ui.refreshable
def show_person(person):
@ -92,7 +91,7 @@ def index_page() -> None:
setcolor = "rgba(255, 0, 0, .5)"
else:
setcolor = "rgba(0, 0, 255, .5)"
with showperson.classes(f"border-8").style(
with showperson.classes("border-8").style(
f"border: {setcolor} 1px solid;"
):
with ui.grid(columns=5).classes(
@ -103,10 +102,10 @@ def index_page() -> None:
label_verse = ui.label(text=item[0]).classes("hidden")
label_passage = ui.label(text=item[1]).classes("hidden")
label_status = ui.label(text=item[2]).classes("hidden")
verssage = ui.label(text=f"{label_verse.text} - {label_passage.text}").classes("hidden")
ui.label(label_verse.text).classes("font-bold text-center")
with ui.row():
ui.label(label_passage.text).classes("text-wrap")
# ui.chip("Edit Verse", selectable=True, icon="edit", color="white", on_selection_change=lambda label_verse=label_verse: edit_verse(label_verse.text, person, label_passage.text))
if label_status.text == "1":
ui.chip(
"Complete",
@ -134,8 +133,8 @@ def index_page() -> None:
selectable=True,
icon="edit",
color="cubbies",
on_selection_change=lambda label_passage=label_passage: edit_verse(
label_verse.text, person, label_passage.text
on_selection_change=lambda verssage=verssage: edit_verse(
verssage, person
),
).classes("text-white")
ui.chip(
@ -153,17 +152,30 @@ def index_page() -> None:
showperson.clear()
addverse.close()
def edit_verse(verse, person, passage):
def remove_verse():
pass
def edit_verse(verssage, person):
editverse.clear()
editverse.open()
verse = verssage.text.split('-')[0].strip()
passage = verssage.text.split('-')[1]
with editverse:
with ui.card().classes("flex-wrap items-center"):
ui.label("Here's the verse for easier copy & paste:")
ui.label(passage)
editing = ui.textarea(label="Edit below")
ui.label(passage).classes('text-center')
ui.label(verse)
editing = ui.textarea(label="Edit below").classes('center')
with ui.row().classes("justify-content-center"):
ui.button().props("push glossy icon=add_circle color=secondary").on(
"click", lambda: edit_submit_verse(person, editing, verse)
)
ui.button().props("push glossy icon=cancel color=sparks").on('click', lambda: editverse.close())
def edit_submit_verse(person, passage, verse):
Utils.edit_verse(person, verse, passage)
editverse.close()
show_person(person)
def add_verse(person):
if person.value is None:
@ -176,19 +188,11 @@ def index_page() -> None:
with ui.row().classes("justify-content-center"):
ui.button().props(
"push glossy icon=add_circle color=secondary"
).on("click", lambda: submit_verse(result, person))
).on("click", lambda: (submit_verse(result, person), addverse.close()))
ui.button().props("push glossy icon=cancel color=negative").on(
"click", lambda: addverse.close()
)
def edit_submit_verse(person, passage, verse):
print(passage)
print(passage.value)
Utils.edit_verse(person, verse, passage)
editverse.close()
show_person(person)
def submit_verse(result, person):
# Check if Verse is already in db
@ -243,24 +247,18 @@ def index_page() -> None:
else:
ui.notify("Uh oh. Something went wrong.")
ins = cur.execute(
f"replace into tasks values('{person.value.lower()}', '{result.value}', '{zpassage}', 0, 0, 'none');"
)
db.commit()
Utils.add_verse(person, result, zpassage)
show_person(person)
def add_child(person):
def add_person(person, club):
check_person = Utils.get_specific_person(person)
print(check_person)
if check_person == []:
Utils.add_person(person)
# persontoggle.set_visibility(False)
show_person(person)
Utils.add_person(person, club)
addchild.close()
else:
ui.notify(
f"The name {person.value} already exists. Please add someone else"
)
show_person(person)
ui.run(storage_secret="b601785a-855c-41d1-adeb-68f0330d8186")

Binary file not shown.

13
test.py
View File

@ -1,13 +0,0 @@
from nicegui import ui
with ui.grid():
data = ui.button("Text")
#, on_click=lambda: show_element(data))
def show_element(data):
with ui.row():
ui.input(label="Add Text")
data.on_click(lambda: show_element(data))
ui.run()

View File

@ -5,6 +5,7 @@ from nicegui import ui
tnt='rgba(30, 206, 0, 0.25)'
cubbies='rgba(25, 39, 255, 0.25)'
sparks='rgba(255, 0, 0, 0.25)'
dark_mode = ui.dark_mode(True)
@contextmanager
def frame(navigation_title: str):
@ -18,7 +19,9 @@ def frame(navigation_title: str):
ui.space()
ui.space()
with ui.row():
# ui.switch('Dark Mode').bind_value(dark_mode)
ui.link('Admin', '/').classes(replace='text-white')
ui.link('Dashboard', '/dashboard').classes(replace='text-white')
with ui.column().classes('absolute-center items-center'):
yield

View File

@ -1,42 +1,65 @@
import data
import requests
db = data.CON
cur = db.cursor()
class Utils():
class Utils:
def __init__():
pass
def get_unique_people():
data = cur.execute('select distinct person from tasks;')
data = cur.execute("select distinct person from tasks;")
ppl = data.fetchall()
return ppl
def get_specific_person(person):
res = cur.execute(f"select verse,verse_passage,status from tasks where person='{person.value}'")
res = cur.execute(
f"select verse,verse_passage,status from tasks where person='{person.value}'"
)
dbinfo = res.fetchall()
return dbinfo
def toggle_completion(verse, person, status):
ins = cur.execute(f"update tasks set status = '{status}' where person = '{person.value}' and verse = '{verse}'")
cur.execute(
f"update tasks set status = '{status}' where person = '{person.value}' and verse = '{verse}'"
)
db.commit()
def get_persons_incomplete(person):
inc = cur.execute(f"select person, verse, verse_passage, club from tasks where status = '0' and person = '{person}'")
inc = cur.execute(
f"select person, verse, verse_passage, club from tasks where status = '0' and person = '{person}'"
)
incret = inc.fetchall()
return incret
def edit_verse(person, verse, passage):
print(f"update tasks set verse_passage = '{passage.value}' where person = '{person.value}' and verse = '{verse}'")
vedit = cur.execute(f"update tasks set verse_passage = '{passage.value}' where person = '{person.value} and verse = '{verse}';")
def add_verse(person, verse, passage):
club = cur.execute(
f"select distinct club from tasks where person = '{person.value}'"
)
clubstring = club.fetchone()
clubstring = "".join(clubstring)
cur.execute(
f"replace into tasks (person, verse, verse_passage, status, club) values('{person.value}', '{verse.value}', '{passage}', '0', '{clubstring}');"
)
db.commit()
def add_person(person):
print(person)
aperson = cur.execute(f"insert into tasks(person) values ('{person.value}')")
def edit_verse(person, verse, passage):
passage = passage.value.replace("'", '"')
cur.execute(
f"update tasks set verse_passage = '{passage}' where person = '{person.value}' and verse = '{verse}'"
)
db.commit()
def add_person(person, club):
cur.execute(
f"insert into tasks(person, club) values ('{person.value}', '{club.value}')"
)
db.commit()
def delete_verse(verse, person):
dverse = cur.execute(f"delete from tasks where person = '{person.value}' and verse = '{verse}'")
cur.execute(
f"delete from tasks where person = '{person.value}' and verse = '{verse}'"
)
db.commit()