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 import theme
from nicegui import ui from nicegui import ui
import data
from utils import Utils 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(): def dashboard():
with theme.frame('Dashboard'): random_order = []
with theme.frame("Dashboard"):
pass 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() peoples = Utils.get_unique_people()
for ppl in peoples: for ppl in peoples:
pl = ''.join(ppl) pl = "".join(ppl)
card_info = Utils.get_persons_incomplete(pl) card_info = Utils.get_persons_incomplete(pl)
for item in card_info: random_order = random_order + card_info
vcard = ui.label(item[1]).classes('hidden') random.shuffle(random_order)
pcard = ui.label(item[2]).classes('hidden') for item in random_order:
club = ui.label(item[3]).classes('hidden') pl = ui.label(item[0]).classes("hidden")
with ui.card().classes('grid justify-items-center').style(f'border: 2px solid {color[club.text.lower()]}'): vcard = ui.label(item[1]).classes("hidden")
ui.label(pl).classes('absolute top-0 left-0 font-thin text-sm') pcard = ui.label(item[2]).classes("hidden")
ui.label(vcard.text).classes('text-center') club = ui.label(item[3]).classes("hidden")
ui.label(pcard.text).classes('font-bold') 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 data
import dashboard import dashboard
from nicegui import app, ui from nicegui import ui
import re import re
import requests import requests
import theme import theme
from utils import Utils 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 db = data.CON
cur = db.cursor() cur = db.cursor()
APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e" APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e"
HEADERS = {"Authorization": APIKEY} HEADERS = {"Authorization": APIKEY}
@ui.page("/", dark=False)
@ui.page("/")
def index_page() -> None: def index_page() -> None:
with theme.frame("Homepage"): with theme.frame("Homepage"):
firstload = Utils.get_unique_people() firstload = Utils.get_unique_people()
@ -36,14 +35,15 @@ def index_page() -> None:
pass pass
with ui.dialog() as addchild, ui.card().classes("items-center"): 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( 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( with ui.grid(columns=1).classes(
"self-center justify-items-center content-center p-2 m-2 rounded-xl" "self-center justify-items-center content-center p-2 m-2 rounded-xl"
): ) as pplrow:
users = Utils.get_unique_people() users = Utils.get_unique_people()
for ppl in users: for ppl in users:
pers = str(ppl)[2:-3].title() pers = str(ppl)[2:-3].title()
@ -69,7 +69,6 @@ def index_page() -> None:
pass pass
showperson.set_visibility(False) 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 @ui.refreshable
def show_person(person): def show_person(person):
@ -92,7 +91,7 @@ def index_page() -> None:
setcolor = "rgba(255, 0, 0, .5)" setcolor = "rgba(255, 0, 0, .5)"
else: else:
setcolor = "rgba(0, 0, 255, .5)" setcolor = "rgba(0, 0, 255, .5)"
with showperson.classes(f"border-8").style( with showperson.classes("border-8").style(
f"border: {setcolor} 1px solid;" f"border: {setcolor} 1px solid;"
): ):
with ui.grid(columns=5).classes( with ui.grid(columns=5).classes(
@ -103,10 +102,10 @@ def index_page() -> None:
label_verse = ui.label(text=item[0]).classes("hidden") label_verse = ui.label(text=item[0]).classes("hidden")
label_passage = ui.label(text=item[1]).classes("hidden") label_passage = ui.label(text=item[1]).classes("hidden")
label_status = ui.label(text=item[2]).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") ui.label(label_verse.text).classes("font-bold text-center")
with ui.row(): with ui.row():
ui.label(label_passage.text).classes("text-wrap") 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": if label_status.text == "1":
ui.chip( ui.chip(
"Complete", "Complete",
@ -134,8 +133,8 @@ def index_page() -> None:
selectable=True, selectable=True,
icon="edit", icon="edit",
color="cubbies", color="cubbies",
on_selection_change=lambda label_passage=label_passage: edit_verse( on_selection_change=lambda verssage=verssage: edit_verse(
label_verse.text, person, label_passage.text verssage, person
), ),
).classes("text-white") ).classes("text-white")
ui.chip( ui.chip(
@ -153,17 +152,30 @@ def index_page() -> None:
showperson.clear() showperson.clear()
addverse.close() addverse.close()
def edit_verse(verse, person, passage): def remove_verse():
pass
def edit_verse(verssage, person):
editverse.clear()
editverse.open() editverse.open()
verse = verssage.text.split('-')[0].strip()
passage = verssage.text.split('-')[1]
with editverse: with editverse:
with ui.card().classes("flex-wrap items-center"): with ui.card().classes("flex-wrap items-center"):
ui.label("Here's the verse for easier copy & paste:") ui.label("Here's the verse for easier copy & paste:")
ui.label(passage) ui.label(passage).classes('text-center')
editing = ui.textarea(label="Edit below") ui.label(verse)
editing = ui.textarea(label="Edit below").classes('center')
with ui.row().classes("justify-content-center"): with ui.row().classes("justify-content-center"):
ui.button().props("push glossy icon=add_circle color=secondary").on( ui.button().props("push glossy icon=add_circle color=secondary").on(
"click", lambda: edit_submit_verse(person, editing, verse) "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): def add_verse(person):
if person.value is None: if person.value is None:
@ -176,19 +188,11 @@ def index_page() -> None:
with ui.row().classes("justify-content-center"): with ui.row().classes("justify-content-center"):
ui.button().props( ui.button().props(
"push glossy icon=add_circle color=secondary" "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( ui.button().props("push glossy icon=cancel color=negative").on(
"click", lambda: addverse.close() "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): def submit_verse(result, person):
# Check if Verse is already in db # Check if Verse is already in db
@ -243,24 +247,18 @@ def index_page() -> None:
else: else:
ui.notify("Uh oh. Something went wrong.") ui.notify("Uh oh. Something went wrong.")
ins = cur.execute( Utils.add_verse(person, result, zpassage)
f"replace into tasks values('{person.value.lower()}', '{result.value}', '{zpassage}', 0, 0, 'none');"
)
db.commit()
show_person(person) show_person(person)
def add_child(person): def add_person(person, club):
check_person = Utils.get_specific_person(person) check_person = Utils.get_specific_person(person)
print(check_person)
if check_person == []: if check_person == []:
Utils.add_person(person) Utils.add_person(person, club)
# persontoggle.set_visibility(False)
show_person(person)
addchild.close() addchild.close()
else: else:
ui.notify( ui.notify(
f"The name {person.value} already exists. Please add someone else" f"The name {person.value} already exists. Please add someone else"
) )
show_person(person)
ui.run(storage_secret="b601785a-855c-41d1-adeb-68f0330d8186") 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)' tnt='rgba(30, 206, 0, 0.25)'
cubbies='rgba(25, 39, 255, 0.25)' cubbies='rgba(25, 39, 255, 0.25)'
sparks='rgba(255, 0, 0, 0.25)' sparks='rgba(255, 0, 0, 0.25)'
dark_mode = ui.dark_mode(True)
@contextmanager @contextmanager
def frame(navigation_title: str): def frame(navigation_title: str):
@ -18,7 +19,9 @@ def frame(navigation_title: str):
ui.space() ui.space()
ui.space() ui.space()
with ui.row(): with ui.row():
# ui.switch('Dark Mode').bind_value(dark_mode)
ui.link('Admin', '/').classes(replace='text-white') ui.link('Admin', '/').classes(replace='text-white')
ui.link('Dashboard', '/dashboard').classes(replace='text-white') ui.link('Dashboard', '/dashboard').classes(replace='text-white')
with ui.column().classes('absolute-center items-center'): with ui.column().classes('absolute-center items-center'):
yield yield

View File

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